initializeCharacteristics method

Future<VtjCommandResult<void>> initializeCharacteristics(
  1. BluetoothDevice device
)

Implementation

Future<VtjCommandResult<void>> initializeCharacteristics(
  BluetoothDevice device,
) async {
  try {
    final services = await device.discoverServices();

    for (final service in services) {
      if (service.uuid.toString().toLowerCase() != serviceUuid.toLowerCase()) {
        continue;
      }

      for (final characteristic in service.characteristics) {
        final charUuid = characteristic.uuid.toString().toLowerCase();

        if (charUuid == rpcCallCharUuid.toLowerCase()) {
          _writeCharacteristic = characteristic;
        } else if (charUuid == rpcReplyCharUuid.toLowerCase()) {
          _replyCharacteristic = characteristic;
        }
      }
    }

    if (_writeCharacteristic == null || _replyCharacteristic == null) {
      return const VtjCommandResult.failure(
        'Required characteristics not found',
        null,
      );
    }

    await _replyCharacteristic!.setNotifyValue(true);

    return const VtjCommandResult.success(null);
  } catch (e) {
    return VtjCommandResult.failure(
      'Failed to initialize characteristics: $e',
      null,
    );
  }
}