internal BleDevice(BGLib bgLib, BleModuleConnection bleModuleConnection, ILogger logger, byte connectionHandle, byte[] address, BleAddressType addressType, List <BleService> services) { _bgLib = bgLib; _bleModuleConnection = bleModuleConnection; _logger = logger; _connectionHandle = connectionHandle; Address = address; AddressType = addressType; Services = services; services.ForEach(service => { service.Characteristics.ForEach(characteristic => { CharacteristicsByUuid.Add(characteristic.Uuid, characteristic); }); }); services.ForEach(service => { service.Characteristics.ForEach(characteristic => { CharacteristicsByHandle.Add(characteristic.Handle, characteristic); }); }); _bgLib.BLEEventATTClientAttributeValue += OnClientAttributeValue; _bgLib.BLEEventConnectionDisconnected += OnDisconnected; IsConnected = true; }
private void OnClientAttributeValue(object sender, AttributeValueEventArgs e) { if (e.connection == _connectionHandle && CharacteristicsByHandle.ContainsKey(e.atthandle)) { var characteristic = CharacteristicsByHandle[e.atthandle]; characteristic.TriggerCharacteristicValueChanged(e.value); } }