writeNetworkConfig method

Future<void> writeNetworkConfig({
  1. required String ssid,
  2. String? pw,
  3. String psk = 'viamsetup',
})

Implementation

Future<void> writeNetworkConfig({
  required String ssid,
  String? pw,
  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 encodedSSID = encoder.process(utf8.encode('$psk:$ssid'));
  final ssidCharacteristic = bleService.characteristics.firstWhere(
    (char) => char.uuid.str == ViamBluetoothUUIDs.ssidUUID,
    orElse: () => throw Exception('ssidCharacteristic not found'),
  );
  await ssidCharacteristic.write(encodedSSID);

  final encodedPW = encoder.process(utf8.encode('$psk:${pw ?? ''}'));
  final pskCharacteristic = bleService.characteristics.firstWhere(
    (char) => char.uuid.str == ViamBluetoothUUIDs.pskUUID,
    orElse: () => throw Exception('pskCharacteristic not found'),
  );
  await pskCharacteristic.write(encodedPW);
}