public BleDeviceProvider(IDeviceClassProtocol <TIdentifier> deviceClassProtocol, IBleDeviceFactory <TBleDevice, TIdentifier> deviceFactory, IBleInfrastructure bleInfrastructure) { _deviceClassProtocol = deviceClassProtocol; _deviceFactory = deviceFactory; _bleInfrastructure = bleInfrastructure; _generalDeviceFilter = new GeneralDeviceFilter(deviceClassProtocol); }
public BleDeviceBase(IDevice device, T id, IDeviceClassProtocol <T> deviceClassProtocol, IBleInfrastructure bleInfrastructure) { DeviceId = id; BehaviorFactory = new DeviceBehaviorFactory(this, bleInfrastructure.Executor, bleInfrastructure.Logger); _device = device; _bleInfrastructure = bleInfrastructure; _deviceSearchFilter = new SpecificDeviceFilter <T>(id, deviceClassProtocol); _deviceCharacteristics = CreateCharacteristics(deviceClassProtocol, _bleInfrastructure.CharacteristicFactory, _bleInfrastructure.ExecutionProvider); _bleInfrastructure.ConnectionManager.AddListener(this); }
private IReadOnlyDictionary <Guid, IBleCharacteristic> CreateCharacteristics(IDeviceClassProtocol <T> bleProtocol, ICharacteristicFactory characteristicFactory, IBleExecutionProvider executionProvider) { var characteristics = new Dictionary <Guid, IBleCharacteristic>(); foreach (var service in bleProtocol.Services) { foreach (var characteristicId in service.Characteristics) { characteristics.Add(characteristicId, characteristicFactory.CreateCharacteristic(service.ServiceId, characteristicId, this, executionProvider)); } } return(characteristics); }
protected IDeviceProvider <TBleDevice, TIdentifier> GetDeviceProvider <TBleDevice, TIdentifier>(IDeviceClassProtocol <TIdentifier> deviceClassProtocol, IBleDeviceFactory <TBleDevice, TIdentifier> deviceFactory) where TIdentifier : IEquatable <TIdentifier> { return(new BleDeviceProvider <TBleDevice, TIdentifier>(deviceClassProtocol, deviceFactory, _bleIfrastructure)); }
public SpecificDeviceFilter(TIdentifier deviceId, IDeviceClassProtocol <TIdentifier> deviceClassProtocol) { _deviceId = deviceId; _deviceClassProtocol = deviceClassProtocol; }