diff --git a/internal/pkg/common/utils/beacons.go b/internal/pkg/common/utils/beacons.go index 81ee91a..7e51cd0 100644 --- a/internal/pkg/common/utils/beacons.go +++ b/internal/pkg/common/utils/beacons.go @@ -57,8 +57,12 @@ func LoopADStructures(b []byte, i [][2]int, id string) model.BeaconEvent { be.ID = id be.Name = id break - } else if checkMinewB7(ad) { - fmt.Println("Minew B7 vendor format") + } else if checkMinewDeviceInfo(ad) { + be = parseMinewDeviceInfo(ad) + be.ID = id + be.Name = id + break + } else if checkMinewAccData(ad) { break } } @@ -116,14 +120,40 @@ func parseEddystoneState(ad []byte) model.BeaconEvent { } } -// I dont think this is always true, but for testing is ok -func checkMinewB7(ad []byte) bool { +// Minew Battery level +func checkMinewDeviceInfo(ad []byte) bool { if len(ad) >= 4 && + len(ad) != 19 && + ad[1] == 0x16 && + ad[2] == 0xE1 && + ad[3] == 0xFF { + fmt.Println("Minew device info") + return true + } + + return false +} + +func parseMinewDeviceInfo(ad []byte) model.BeaconEvent { + fmt.Printf("ad: %x\n", ad) + return model.BeaconEvent{ + Battery: uint32(ad[6]), + Type: "Minew B7", + } +} + +func checkMinewAccData(ad []byte) bool { + if len(ad) == 19 && ad[1] == 0x16 && ad[2] == 0xE1 && ad[3] == 0xFF { + fmt.Println("Minew Acc data") return true } return false } + +// func parseMinewAccData(ad []byte) model.BeaconEvent { + +// }