/// <inheritdoc /> public void Start() { _device = _connection.System.GetObject <Device1> (BlueZPath.Service, BlueZPath.Device(_adapterName, _deviceAddress)); int retries = 3; for (int i = 0; i < retries; i++) { try { _logger.Info("Connecting..."); _device.Connect(); _logger.Info("Connected"); System.Threading.Thread.Sleep(3000); break; } catch (Exception ex) { _logger.Warn("Failed", ex); //we can't really do much other than try again if (i == retries - 1) { throw new Exception("Failed to connect to BLE Anemometer", ex); } else { System.Threading.Thread.Sleep(3000); } } } string name = _device.Name; for (int i = 0; i < retries; i++) { try { var readCharPath = BlueZPath.GattCharacteristic(_adapterName, _deviceAddress, _serviceId, _readCharId); _readChar = _connection.System.GetObject <GattCharacteristic1> (BlueZPath.Service, readCharPath); _properties = _connection.System.GetObject <Properties> (BlueZPath.Service, readCharPath); _readChar.StartNotify(); InitializePropertyListener(); _logger.Info("Now listening for wind data"); break; } catch (Exception ex) { _logger.Warn("Failed to configure listener", ex); if (i == retries - 1) { throw new Exception("Are you sure BlueZ is running in experimental mode?", ex); } else { System.Threading.Thread.Sleep(3000); } } } }
public GattCharacteristic(GattCharacteristic1 native, IGattService service, CharacteristicProperties properties) : base(service, Guid.Parse(native.UUID), properties) { this.native = native; }