writeNetworkConfig method
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);
}