macos: enable support for duplicate chars by moving from a map to a slice
This commit is contained in:
parent
4d067bc2b3
commit
3c9cf83de2
2 changed files with 14 additions and 9 deletions
|
@ -195,7 +195,9 @@ func (pd *peripheralDelegate) DidUpdateValueForCharacteristic(prph cbgo.Peripher
|
||||||
svcuuid, _ := ParseUUID(chr.Service().UUID().String())
|
svcuuid, _ := ParseUUID(chr.Service().UUID().String())
|
||||||
|
|
||||||
if svc, ok := pd.d.services[svcuuid]; ok {
|
if svc, ok := pd.d.services[svcuuid]; ok {
|
||||||
if char, ok := svc.characteristics[uuid]; ok {
|
for _, char := range svc.characteristics {
|
||||||
|
|
||||||
|
if char.characteristic == chr && uuid == char.UUID() { // compare pointers
|
||||||
if err == nil && char.callback != nil {
|
if err == nil && char.callback != nil {
|
||||||
go char.callback(chr.Value())
|
go char.callback(chr.Value())
|
||||||
}
|
}
|
||||||
|
@ -204,5 +206,8 @@ func (pd *peripheralDelegate) DidUpdateValueForCharacteristic(prph cbgo.Peripher
|
||||||
char.readChan <- err
|
char.readChan <- err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ type deviceService struct {
|
||||||
device *Device
|
device *Device
|
||||||
|
|
||||||
service cbgo.Service
|
service cbgo.Service
|
||||||
characteristics map[UUID]DeviceCharacteristic
|
characteristics []DeviceCharacteristic
|
||||||
}
|
}
|
||||||
|
|
||||||
// UUID returns the UUID for this DeviceService.
|
// UUID returns the UUID for this DeviceService.
|
||||||
|
@ -95,7 +95,7 @@ func (s *DeviceService) DiscoverCharacteristics(uuids []UUID) ([]DeviceCharacter
|
||||||
s.device.prph.DiscoverCharacteristics(cbuuids, s.service)
|
s.device.prph.DiscoverCharacteristics(cbuuids, s.service)
|
||||||
|
|
||||||
// clear cache of characteristics
|
// clear cache of characteristics
|
||||||
s.characteristics = make(map[UUID]DeviceCharacteristic)
|
s.characteristics = make([]DeviceCharacteristic, 0)
|
||||||
|
|
||||||
// wait on channel for characteristic discovery
|
// wait on channel for characteristic discovery
|
||||||
select {
|
select {
|
||||||
|
@ -150,7 +150,7 @@ func (s *DeviceService) makeCharacteristic(uuid UUID, dchar cbgo.Characteristic)
|
||||||
characteristic: dchar,
|
characteristic: dchar,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
s.characteristics[char.uuidWrapper] = char
|
s.characteristics = append(s.characteristics, char)
|
||||||
return char
|
return char
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue