onConnect method
Callback on connect. Returns the DeviceStatus
of the device.
Is to be overridden in sub-classes.
Implementation
@override
Future<DeviceStatus> onConnect() async {
if (deviceDescriptor?.deviceName == null ||
deviceDescriptor!.deviceName!.isEmpty) return DeviceStatus.error;
manager = ESenseManager(id);
// listen for connection events
manager?.connectionEvents.listen((event) {
debug('$runtimeType - $event');
switch (event.type) {
case ConnectionType.connected:
status = DeviceStatus.connected;
// this is a hack! - don't know why, but the sensorEvents stream
// needs a kick in the ass to get started...
manager?.sensorEvents.listen(null);
// when connected, listen for battery events
manager!.eSenseEvents.listen((event) {
if (event is BatteryRead) {
_voltageLevel = event.voltage ?? 4;
}
});
// set up a timer that asks for the voltage level
Timer.periodic(const Duration(minutes: 2), (_) {
if (status == DeviceStatus.connected) {
manager?.getBatteryVoltage();
}
});
break;
case ConnectionType.unknown:
status = DeviceStatus.unknown;
break;
case ConnectionType.device_found:
status = DeviceStatus.connecting;
break;
case ConnectionType.device_not_found:
case ConnectionType.disconnected:
status = DeviceStatus.disconnected;
_voltageLevel = null;
// _eventSubscription?.cancel();
break;
}
});
manager?.connect();
return DeviceStatus.connecting;
}