diff --git a/cmd/decoder/main.go b/cmd/decoder/main.go index f868701..fc296d6 100644 --- a/cmd/decoder/main.go +++ b/cmd/decoder/main.go @@ -112,9 +112,13 @@ func decodeBeacon(adv model.BeaconAdvertisement, appState *appcontext.AppState, if event.ID == "" { return nil } - prevEvent, ok := appState.GetBeaconEvent(id) appState.UpdateBeaconEvent(id, event) + + if event.Type == "iBeacon" { + event.BtnPressed = true + } + if ok && bytes.Equal(prevEvent.Hash(), event.Hash()) { return nil } diff --git a/cmd/server/config.json b/cmd/server/config.json index 3b6bbeb..3be8922 100644 --- a/cmd/server/config.json +++ b/cmd/server/config.json @@ -39,5 +39,12 @@ "accY": {"offset": 9, "length": 2, "order": "fixedpoint"}, "accZ": {"offset": 11, "length": 2, "order": "fixedpoint"} } + }, + { + "name": "iBeacon", + "min": 5, + "max": 27, + "pattern": ["0xFF", "0x4C", "0x00", "0x02"], + "configs": {} } ] \ No newline at end of file diff --git a/docs/Frame definition- B7,MWB01,MWC01.pdf b/docs/Frame definition- B7,MWB01,MWC01.pdf new file mode 100644 index 0000000..ea92774 Binary files /dev/null and b/docs/Frame definition- B7,MWB01,MWC01.pdf differ diff --git a/internal/pkg/model/parser.go b/internal/pkg/model/parser.go index f0b88a0..a726021 100644 --- a/internal/pkg/model/parser.go +++ b/internal/pkg/model/parser.go @@ -77,7 +77,6 @@ func (p *ParserRegistry) Unregister(name string) { func (b *BeaconParser) Parse(name string, ad []byte) (BeaconEvent, bool) { flag := false event := BeaconEvent{Type: name} - fmt.Printf("parsing: %s\n", name) if cfg, ok := b.configs["battery"]; ok { event.Battery = uint32(b.extract(ad, cfg).(uint16)) flag = true @@ -97,7 +96,12 @@ func (b *BeaconParser) Parse(name string, ad []byte) (BeaconEvent, bool) { event.AccZ = int16(val) flag = true } - fmt.Printf("success: %s, event: %+v\n", flag, event) + if cfg, ok := b.configs["temperature"]; ok { + val := b.extract(ad, cfg).(float64) + event.Temperature = uint16(val) + flag = true + } + return event, flag } diff --git a/internal/pkg/model/types.go b/internal/pkg/model/types.go index da38bef..3892d54 100644 --- a/internal/pkg/model/types.go +++ b/internal/pkg/model/types.go @@ -87,14 +87,17 @@ type Beacon struct { } type BeaconEvent struct { - Name string - ID string - Type string - Battery uint32 - Event int - AccX int16 - AccY int16 - AccZ int16 + Name string + ID string + Type string + Battery uint32 + Event int + AccX int16 + AccY int16 + AccZ int16 + Temperature uint16 + Heart int16 + BtnPressed bool } type HTTPResult struct {