getBatteryLevel method

Future<int> getBatteryLevel()

Implementation

Future<int> getBatteryLevel() async {
  if (!isConnected || _connectedDevice == null) {
    throw Exception('Device not connected');
  }

  try {
    final services = await _connectedDevice!.discoverServices();
    final batteryService = services.firstWhere(
      (s) =>
          s.uuid.str128.toLowerCase() ==
          DeviceConstants.batteryServiceUuid.toLowerCase(),
      orElse: () => throw Exception('Battery service not found'),
    );

    final batteryCharacteristic = batteryService.characteristics.firstWhere(
      (c) =>
          c.uuid.str128.toLowerCase() ==
          DeviceConstants.batteryCharacteristicUuid.toLowerCase(),
      orElse: () => throw Exception('Battery characteristic not found'),
    );

    final batteryValue = await batteryCharacteristic.read();
    return batteryValue.isNotEmpty ? batteryValue[0] : -1;
  } catch (e) {
    return -1;
  }
}