exitProvisioning method

Future<void> exitProvisioning({
  1. String psk = 'viamsetup',
})

Implementation

Future<void> exitProvisioning({String psk = 'viamsetup'}) async {
  final bleService = await getBleService();
  final cryptoCharacteristic = bleService.characteristics.firstWhere(
    (char) => char.uuid.str == ViamBluetoothUUIDs.cryptoUUID,
    orElse: () => throw Exception('cryptoCharacteristic not found'),
  );

  final publicKeyBytes = await cryptoCharacteristic.read();
  final publicKey = _publicKey(Uint8List.fromList(publicKeyBytes));
  final encoder = _encoder(publicKey);

  final exitProvisioningCharacteristic = bleService.characteristics.firstWhere(
    (char) => char.uuid.str == ViamBluetoothUUIDs.exitProvisioningUUID,
    orElse: () => throw Exception('exitProvisioningCharacteristic not found'),
  );
  // "1" is arbitrary
  await exitProvisioningCharacteristic.write(encoder.process(utf8.encode("$psk:1")));
}