@bota-dev/react-native-sdk 0.0.7 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +30 -2
  2. package/lib/commonjs/ble/constants.js +28 -2
  3. package/lib/commonjs/ble/constants.js.map +1 -1
  4. package/lib/commonjs/ble/parsers.js +128 -0
  5. package/lib/commonjs/ble/parsers.js.map +1 -1
  6. package/lib/commonjs/managers/DeviceManager.js +179 -0
  7. package/lib/commonjs/managers/DeviceManager.js.map +1 -1
  8. package/lib/commonjs/protocol/ProtocolHandler.js +6 -0
  9. package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -1
  10. package/lib/commonjs/utils/crypto.js +169 -0
  11. package/lib/commonjs/utils/crypto.js.map +1 -0
  12. package/lib/commonjs/utils/index.js +12 -0
  13. package/lib/commonjs/utils/index.js.map +1 -1
  14. package/lib/module/ble/constants.js +26 -0
  15. package/lib/module/ble/constants.js.map +1 -1
  16. package/lib/module/ble/parsers.js +124 -1
  17. package/lib/module/ble/parsers.js.map +1 -1
  18. package/lib/module/managers/DeviceManager.js +181 -2
  19. package/lib/module/managers/DeviceManager.js.map +1 -1
  20. package/lib/module/protocol/ProtocolHandler.js +6 -0
  21. package/lib/module/protocol/ProtocolHandler.js.map +1 -1
  22. package/lib/module/utils/crypto.js +160 -0
  23. package/lib/module/utils/crypto.js.map +1 -0
  24. package/lib/module/utils/index.js +1 -0
  25. package/lib/module/utils/index.js.map +1 -1
  26. package/lib/typescript/src/ble/constants.d.ts +18 -0
  27. package/lib/typescript/src/ble/constants.d.ts.map +1 -1
  28. package/lib/typescript/src/ble/parsers.d.ts +34 -1
  29. package/lib/typescript/src/ble/parsers.d.ts.map +1 -1
  30. package/lib/typescript/src/managers/DeviceManager.d.ts +73 -1
  31. package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -1
  32. package/lib/typescript/src/models/Device.d.ts +65 -0
  33. package/lib/typescript/src/models/Device.d.ts.map +1 -1
  34. package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -1
  35. package/lib/typescript/src/utils/crypto.d.ts +83 -0
  36. package/lib/typescript/src/utils/crypto.d.ts.map +1 -0
  37. package/lib/typescript/src/utils/index.d.ts +1 -0
  38. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  39. package/package.json +6 -2
  40. package/src/ble/constants.ts +26 -0
  41. package/src/ble/parsers.ts +131 -0
  42. package/src/managers/DeviceManager.ts +244 -0
  43. package/src/models/Device.ts +76 -0
  44. package/src/protocol/ProtocolHandler.ts +6 -0
  45. package/src/utils/crypto.ts +221 -0
  46. package/src/utils/index.ts +1 -0
package/README.md CHANGED
@@ -68,10 +68,18 @@ const connectedDevice = await BotaClient.devices.connect(discoveredDevice);
68
68
  // Provision with token from your backend
69
69
  await BotaClient.devices.provision(connectedDevice, deviceToken, 'production');
70
70
 
71
- // List recordings
71
+ // Check device capabilities
72
+ const status = await BotaClient.devices.getStatus(connectedDevice);
73
+ if (status.capabilities & CAP_WIFI_UPLOAD) {
74
+ // Device supports WiFi Upload - optionally configure WiFi
75
+ // grant is a stateless JWT from your backend (POST /devices/{id}/wifi-config/grant)
76
+ await BotaClient.devices.configureWiFi(connectedDevice, ssid, password, grant);
77
+ }
78
+
79
+ // List recordings (Bluetooth Sync)
72
80
  const recordings = await BotaClient.recordings.listRecordings(connectedDevice);
73
81
 
74
- // Sync a recording
82
+ // Sync a recording via Bluetooth
75
83
  for await (const progress of BotaClient.recordings.syncRecording(
76
84
  connectedDevice,
77
85
  recording,
@@ -79,6 +87,8 @@ for await (const progress of BotaClient.recordings.syncRecording(
79
87
  )) {
80
88
  console.log(`${progress.stage}: ${progress.progress * 100}%`);
81
89
  }
90
+
91
+ // Note: WiFi/Cellular devices can upload directly without app involvement
82
92
  ```
83
93
 
84
94
  ## API Reference
@@ -272,6 +282,24 @@ The SDK does not communicate directly with the Bota API. Your mobile app should:
272
282
  3. Call your backend to create recordings and get upload URLs
273
283
  4. The SDK uploads directly to S3 using the pre-signed URLs
274
284
 
285
+ ### Upload Methods
286
+
287
+ **Bluetooth Sync** (current implementation):
288
+
289
+ - App transfers audio from device via BLE
290
+ - App uploads to S3 using pre-signed URLs from your backend
291
+ - App notifies backend when upload completes
292
+
293
+ **WiFi Upload / Cellular Upload** (available now):
294
+
295
+ - Device uploads directly to Bota backend using device token (dtok_*)
296
+ - No app involvement in audio transfer
297
+ - App can optionally configure WiFi credentials for WiFi-capable devices:
298
+ - Request a stateless WiFi config grant from your backend (POST /devices/{id}/wifi-config/grant)
299
+ - SDK encrypts credentials with grant session key and transmits via BLE
300
+ - Device stores credentials encrypted in Flash (backend never stores WiFi passwords)
301
+ - Backend sends webhooks to notify your app when processing completes
302
+
275
303
  See the [Bota API documentation](https://docs.bota.dev) for backend integration details.
276
304
 
277
305
  ## License
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.RECORDING_RESULT_GRANT_EXPIRED = exports.RECORDING_RESULT_ERROR = exports.RECORDING_RESULT_ALREADY_RECORDING = exports.RECORDING_CMD_LOCAL_STOP = exports.RECORDING_CMD_LOCAL_START = exports.RECORDING_CMD_GRANT_STOP = exports.RECORDING_CMD_GRANT_START = exports.PROVISIONING_SUCCESS = exports.PROVISIONING_STORAGE_ERROR = exports.PROVISIONING_INVALID_TOKEN = exports.PROVISIONING_CHUNK_ERROR = exports.PAIRING_STATE_UNPAIRED = exports.PAIRING_STATE_PAIRING = exports.PAIRING_STATE_PAIRED = exports.PAIRING_STATE_ERROR = exports.PACKET_TYPE_ERROR = exports.PACKET_TYPE_EOF = exports.PACKET_TYPE_DATA = exports.OPERATION_TIMEOUT = exports.MFG_DATA_PAIRING_STATE = exports.MFG_DATA_FW_MINOR = exports.MFG_DATA_FW_MAJOR = exports.MFG_DATA_DEVICE_TYPE = exports.MFG_DATA_BATTERY = exports.MAX_MTU = exports.FLAG_WIFI_CONNECTED = exports.FLAG_USB_CONNECTED = exports.FLAG_UPDATE_AVAILABLE = exports.FLAG_SYNC_REQUIRED = exports.FLAG_STORAGE_WARNING = exports.FLAG_STORAGE_FULL = exports.FLAG_RECORDING_ACTIVE = exports.FLAG_LOW_BATTERY = exports.FLAG_CRITICAL_BATTERY = exports.FLAG_CHARGING = exports.FLAG_CELLULAR_ROAMING = exports.FLAG_CELLULAR_AVAILABLE = exports.DEVICE_TYPE_PIN_4G = exports.DEVICE_TYPE_PIN = exports.DEVICE_TYPE_NOTE = exports.DEVICE_STATE_UPLOADING = exports.DEVICE_STATE_SYNCING = exports.DEVICE_STATE_STORAGE_FULL = exports.DEVICE_STATE_RECORDING = exports.DEVICE_STATE_LOW_BATTERY = exports.DEVICE_STATE_IDLE = exports.DEVICE_STATE_ERROR = exports.DEVICE_STATE_CHARGING = exports.DEVICE_NAME_PREFIX_PIN_4G = exports.DEVICE_NAME_PREFIX_PIN = exports.DEVICE_NAME_PREFIX_NOTE = exports.DEVICE_NAME_PREFIX = exports.DEVICE_CMD_ENTER_DFU = exports.DEFAULT_MTU = exports.CONNECTION_TIMEOUT = exports.CODEC_PCM_8K = exports.CODEC_PCM_16K = exports.CODEC_OPUS_8K = exports.CODEC_OPUS_16K = exports.CHAR_WIFI_CONFIG = exports.CHAR_TRANSFER_STATUS = exports.CHAR_TRANSFER_CONTROL = exports.CHAR_TIME_SYNC = exports.CHAR_STORAGE_INFO = exports.CHAR_SERIAL_NUMBER = exports.CHAR_RECORDING_TRANSFER = exports.CHAR_RECORDING_STATUS = exports.CHAR_RECORDING_LIST = exports.CHAR_RECORDING_CONTROL = exports.CHAR_PROVISIONING_RESULT = exports.CHAR_PAIRING_STATE = exports.CHAR_MODEL_NUMBER = exports.CHAR_MANUFACTURER_NAME = exports.CHAR_HARDWARE_REVISION = exports.CHAR_FIRMWARE_REVISION = exports.CHAR_DEVICE_TOKEN = exports.CHAR_DEVICE_STATUS = exports.CHAR_DEVICE_COMMAND = exports.CHAR_BATTERY_LEVEL = exports.CHAR_AUDIO_DATA = exports.CHAR_AUDIO_CONTROL = exports.CHAR_AUDIO_CODEC = exports.CHAR_API_ENDPOINT = exports.BLE_ERROR_UPLOAD_FAILED = exports.BLE_ERROR_UNKNOWN = exports.BLE_ERROR_TRANSFER_FAILED = exports.BLE_ERROR_TOKEN_INVALID = exports.BLE_ERROR_TOKEN_EXPIRED = exports.BLE_ERROR_SUCCESS = exports.BLE_ERROR_STORAGE_FULL = exports.BLE_ERROR_RECORDING_NOT_FOUND = exports.BLE_ERROR_NETWORK_ERROR = exports.BLE_ERROR_INVALID_STATE = exports.BLE_ERROR_INVALID_PARAMETER = exports.BLE_ERROR_INVALID_COMMAND = exports.API_ENDPOINT_SANDBOX = exports.API_ENDPOINT_PRODUCTION = exports.ACK_TYPE_NACK = exports.ACK_TYPE_ACK = exports.ACK_TYPE_ABORT = void 0;
7
- exports.TRANSFER_WINDOW_SIZE = exports.TRANSFER_PACKET_TIMEOUT = exports.TRANSFER_CMD_START = exports.TRANSFER_CMD_LIST = exports.TRANSFER_CMD_CONFIRM_SYNC = exports.SERVICE_NORDIC_DFU = exports.SERVICE_DEVICE_INFO = exports.SERVICE_BOTA_STORAGE = exports.SERVICE_BOTA_PROVISIONING = exports.SERVICE_BOTA_CONTROL = exports.SERVICE_BOTA_AUDIO = exports.SERVICE_BATTERY = exports.SCAN_TIMEOUT = exports.RECORDING_RESULT_SUCCESS = exports.RECORDING_RESULT_NOT_RECORDING = exports.RECORDING_RESULT_INVALID_GRANT = void 0;
6
+ exports.PROVISIONING_SUCCESS = exports.PROVISIONING_STORAGE_ERROR = exports.PROVISIONING_INVALID_TOKEN = exports.PROVISIONING_CHUNK_ERROR = exports.PAIRING_STATE_UNPAIRED = exports.PAIRING_STATE_PAIRING = exports.PAIRING_STATE_PAIRED = exports.PAIRING_STATE_ERROR = exports.PACKET_TYPE_ERROR = exports.PACKET_TYPE_EOF = exports.PACKET_TYPE_DATA = exports.OPERATION_TIMEOUT = exports.MFG_DATA_PAIRING_STATE = exports.MFG_DATA_FW_MINOR = exports.MFG_DATA_FW_MAJOR = exports.MFG_DATA_DEVICE_TYPE = exports.MFG_DATA_BATTERY = exports.MAX_MTU = exports.FLAG_WIFI_CONNECTED = exports.FLAG_USB_CONNECTED = exports.FLAG_UPDATE_AVAILABLE = exports.FLAG_SYNC_REQUIRED = exports.FLAG_STORAGE_WARNING = exports.FLAG_STORAGE_FULL = exports.FLAG_RECORDING_ACTIVE = exports.FLAG_LOW_BATTERY = exports.FLAG_CRITICAL_BATTERY = exports.FLAG_CHARGING = exports.FLAG_CELLULAR_ROAMING = exports.FLAG_CELLULAR_AVAILABLE = exports.DEVICE_TYPE_PIN_4G = exports.DEVICE_TYPE_PIN = exports.DEVICE_TYPE_NOTE = exports.DEVICE_STATE_UPLOADING = exports.DEVICE_STATE_SYNCING = exports.DEVICE_STATE_STORAGE_FULL = exports.DEVICE_STATE_RECORDING = exports.DEVICE_STATE_LOW_BATTERY = exports.DEVICE_STATE_IDLE = exports.DEVICE_STATE_ERROR = exports.DEVICE_STATE_CHARGING = exports.DEVICE_NAME_PREFIX_PIN_4G = exports.DEVICE_NAME_PREFIX_PIN = exports.DEVICE_NAME_PREFIX_NOTE = exports.DEVICE_NAME_PREFIX = exports.DEVICE_CMD_ENTER_DFU = exports.DEFAULT_MTU = exports.CONNECTION_TIMEOUT = exports.CODEC_PCM_8K = exports.CODEC_PCM_16K = exports.CODEC_OPUS_8K = exports.CODEC_OPUS_16K = exports.CHAR_WIFI_STATUS = exports.CHAR_WIFI_GRANT = exports.CHAR_WIFI_CREDENTIAL = exports.CHAR_WIFI_CONFIG = exports.CHAR_TRANSFER_STATUS = exports.CHAR_TRANSFER_CONTROL = exports.CHAR_TIME_SYNC = exports.CHAR_STORAGE_INFO = exports.CHAR_SERIAL_NUMBER = exports.CHAR_RECORDING_TRANSFER = exports.CHAR_RECORDING_STATUS = exports.CHAR_RECORDING_LIST = exports.CHAR_RECORDING_CONTROL = exports.CHAR_PROVISIONING_RESULT = exports.CHAR_PAIRING_STATE = exports.CHAR_MODEL_NUMBER = exports.CHAR_MANUFACTURER_NAME = exports.CHAR_HARDWARE_REVISION = exports.CHAR_FIRMWARE_REVISION = exports.CHAR_DEVICE_TOKEN = exports.CHAR_DEVICE_STATUS = exports.CHAR_DEVICE_COMMAND = exports.CHAR_BATTERY_LEVEL = exports.CHAR_AUDIO_DATA = exports.CHAR_AUDIO_CONTROL = exports.CHAR_AUDIO_CODEC = exports.CHAR_API_ENDPOINT = exports.CAP_WIFI_UPLOAD = exports.CAP_REMOTE_RECORD = exports.CAP_LTE_UPLOAD = exports.CAP_BLE_SYNC = exports.BLE_ERROR_UPLOAD_FAILED = exports.BLE_ERROR_UNKNOWN = exports.BLE_ERROR_TRANSFER_FAILED = exports.BLE_ERROR_TOKEN_INVALID = exports.BLE_ERROR_TOKEN_EXPIRED = exports.BLE_ERROR_SUCCESS = exports.BLE_ERROR_STORAGE_FULL = exports.BLE_ERROR_RECORDING_NOT_FOUND = exports.BLE_ERROR_NETWORK_ERROR = exports.BLE_ERROR_INVALID_STATE = exports.BLE_ERROR_INVALID_PARAMETER = exports.BLE_ERROR_INVALID_COMMAND = exports.API_ENDPOINT_SANDBOX = exports.API_ENDPOINT_PRODUCTION = exports.ACK_TYPE_NACK = exports.ACK_TYPE_ACK = exports.ACK_TYPE_ABORT = void 0;
7
+ exports.WIFI_STATUS_IDLE = exports.WIFI_STATUS_FAILED = exports.WIFI_STATUS_DISCONNECTED = exports.WIFI_STATUS_CONNECTING = exports.WIFI_STATUS_CONNECTED = exports.WIFI_CONFIG_SUCCESS = exports.WIFI_CONFIG_STORAGE_ERROR = exports.WIFI_CONFIG_INVALID_GRANT = exports.WIFI_CONFIG_GRANT_EXPIRED = exports.WIFI_CONFIG_DECRYPTION_ERROR = exports.TRANSFER_WINDOW_SIZE = exports.TRANSFER_PACKET_TIMEOUT = exports.TRANSFER_CMD_START = exports.TRANSFER_CMD_LIST = exports.TRANSFER_CMD_CONFIRM_SYNC = exports.SERVICE_NORDIC_DFU = exports.SERVICE_DEVICE_INFO = exports.SERVICE_BOTA_WIFI_CONFIG = exports.SERVICE_BOTA_STORAGE = exports.SERVICE_BOTA_PROVISIONING = exports.SERVICE_BOTA_CONTROL = exports.SERVICE_BOTA_AUDIO = exports.SERVICE_BATTERY = exports.SCAN_TIMEOUT = exports.RECORDING_RESULT_SUCCESS = exports.RECORDING_RESULT_NOT_RECORDING = exports.RECORDING_RESULT_INVALID_GRANT = exports.RECORDING_RESULT_GRANT_EXPIRED = exports.RECORDING_RESULT_ERROR = exports.RECORDING_RESULT_ALREADY_RECORDING = exports.RECORDING_CMD_LOCAL_STOP = exports.RECORDING_CMD_LOCAL_START = exports.RECORDING_CMD_GRANT_STOP = exports.RECORDING_CMD_GRANT_START = void 0;
8
8
  /**
9
9
  * BLE Service and Characteristic UUIDs for Bota devices
10
10
  * Based on Device-App Protocol specification
@@ -20,6 +20,7 @@ const SERVICE_BOTA_AUDIO = exports.SERVICE_BOTA_AUDIO = 'B07A0001-0000-1000-8000
20
20
  const SERVICE_BOTA_CONTROL = exports.SERVICE_BOTA_CONTROL = 'B07A0002-0000-1000-8000-00805F9B34FB';
21
21
  const SERVICE_BOTA_PROVISIONING = exports.SERVICE_BOTA_PROVISIONING = 'B07A0003-0000-1000-8000-00805F9B34FB';
22
22
  const SERVICE_BOTA_STORAGE = exports.SERVICE_BOTA_STORAGE = 'B07A0004-0000-1000-8000-00805F9B34FB';
23
+ const SERVICE_BOTA_WIFI_CONFIG = exports.SERVICE_BOTA_WIFI_CONFIG = 'B07A0006-0000-1000-8000-00805F9B34FB';
23
24
 
24
25
  // Device Information Service Characteristics (0x180A)
25
26
  const CHAR_MANUFACTURER_NAME = exports.CHAR_MANUFACTURER_NAME = '2A29';
@@ -57,6 +58,11 @@ const CHAR_RECORDING_TRANSFER = exports.CHAR_RECORDING_TRANSFER = 'B07A0004-0003
57
58
  const CHAR_TRANSFER_CONTROL = exports.CHAR_TRANSFER_CONTROL = 'B07A0004-0004-1000-8000-00805F9B34FB';
58
59
  const CHAR_TRANSFER_STATUS = exports.CHAR_TRANSFER_STATUS = 'B07A0004-0005-1000-8000-00805F9B34FB';
59
60
 
61
+ // Bota WiFi Config Service Characteristics (B07A0006)
62
+ const CHAR_WIFI_GRANT = exports.CHAR_WIFI_GRANT = 'B07A0006-0001-1000-8000-00805F9B34FB';
63
+ const CHAR_WIFI_CREDENTIAL = exports.CHAR_WIFI_CREDENTIAL = 'B07A0006-0002-1000-8000-00805F9B34FB';
64
+ const CHAR_WIFI_STATUS = exports.CHAR_WIFI_STATUS = 'B07A0006-0003-1000-8000-00805F9B34FB';
65
+
60
66
  // Device name prefixes for scanning
61
67
  const DEVICE_NAME_PREFIX = exports.DEVICE_NAME_PREFIX = 'Bota-';
62
68
  const DEVICE_NAME_PREFIX_PIN = exports.DEVICE_NAME_PREFIX_PIN = 'Bota-Pin-';
@@ -75,18 +81,38 @@ const DEVICE_TYPE_PIN = exports.DEVICE_TYPE_PIN = 0x01;
75
81
  const DEVICE_TYPE_PIN_4G = exports.DEVICE_TYPE_PIN_4G = 0x02;
76
82
  const DEVICE_TYPE_NOTE = exports.DEVICE_TYPE_NOTE = 0x03;
77
83
 
84
+ // Device capability flags (bitmask)
85
+ const CAP_BLE_SYNC = exports.CAP_BLE_SYNC = 0x01;
86
+ const CAP_WIFI_UPLOAD = exports.CAP_WIFI_UPLOAD = 0x02;
87
+ const CAP_LTE_UPLOAD = exports.CAP_LTE_UPLOAD = 0x04;
88
+ const CAP_REMOTE_RECORD = exports.CAP_REMOTE_RECORD = 0x08;
89
+
78
90
  // Pairing state values
79
91
  const PAIRING_STATE_UNPAIRED = exports.PAIRING_STATE_UNPAIRED = 0x00;
80
92
  const PAIRING_STATE_PAIRING = exports.PAIRING_STATE_PAIRING = 0x01;
81
93
  const PAIRING_STATE_PAIRED = exports.PAIRING_STATE_PAIRED = 0x02;
82
94
  const PAIRING_STATE_ERROR = exports.PAIRING_STATE_ERROR = 0x03;
83
95
 
96
+ // WiFi status values
97
+ const WIFI_STATUS_IDLE = exports.WIFI_STATUS_IDLE = 0x00;
98
+ const WIFI_STATUS_CONNECTING = exports.WIFI_STATUS_CONNECTING = 0x01;
99
+ const WIFI_STATUS_CONNECTED = exports.WIFI_STATUS_CONNECTED = 0x02;
100
+ const WIFI_STATUS_FAILED = exports.WIFI_STATUS_FAILED = 0x03;
101
+ const WIFI_STATUS_DISCONNECTED = exports.WIFI_STATUS_DISCONNECTED = 0x04;
102
+
84
103
  // Provisioning result codes
85
104
  const PROVISIONING_SUCCESS = exports.PROVISIONING_SUCCESS = 0x00;
86
105
  const PROVISIONING_INVALID_TOKEN = exports.PROVISIONING_INVALID_TOKEN = 0x01;
87
106
  const PROVISIONING_STORAGE_ERROR = exports.PROVISIONING_STORAGE_ERROR = 0x02;
88
107
  const PROVISIONING_CHUNK_ERROR = exports.PROVISIONING_CHUNK_ERROR = 0x03;
89
108
 
109
+ // WiFi configuration result codes
110
+ const WIFI_CONFIG_SUCCESS = exports.WIFI_CONFIG_SUCCESS = 0x00;
111
+ const WIFI_CONFIG_INVALID_GRANT = exports.WIFI_CONFIG_INVALID_GRANT = 0x01;
112
+ const WIFI_CONFIG_GRANT_EXPIRED = exports.WIFI_CONFIG_GRANT_EXPIRED = 0x02;
113
+ const WIFI_CONFIG_DECRYPTION_ERROR = exports.WIFI_CONFIG_DECRYPTION_ERROR = 0x03;
114
+ const WIFI_CONFIG_STORAGE_ERROR = exports.WIFI_CONFIG_STORAGE_ERROR = 0x04;
115
+
90
116
  // API endpoint values
91
117
  const API_ENDPOINT_PRODUCTION = exports.API_ENDPOINT_PRODUCTION = 0x00;
92
118
  const API_ENDPOINT_SANDBOX = exports.API_ENDPOINT_SANDBOX = 0x01;
@@ -1 +1 @@
1
- {"version":3,"names":["SERVICE_DEVICE_INFO","exports","SERVICE_BATTERY","SERVICE_NORDIC_DFU","SERVICE_BOTA_AUDIO","SERVICE_BOTA_CONTROL","SERVICE_BOTA_PROVISIONING","SERVICE_BOTA_STORAGE","CHAR_MANUFACTURER_NAME","CHAR_MODEL_NUMBER","CHAR_SERIAL_NUMBER","CHAR_HARDWARE_REVISION","CHAR_FIRMWARE_REVISION","CHAR_BATTERY_LEVEL","CHAR_AUDIO_DATA","CHAR_AUDIO_CODEC","CHAR_AUDIO_CONTROL","CHAR_DEVICE_STATUS","CHAR_RECORDING_CONTROL","CHAR_RECORDING_STATUS","CHAR_TIME_SYNC","CHAR_DEVICE_COMMAND","CHAR_PAIRING_STATE","CHAR_DEVICE_TOKEN","CHAR_API_ENDPOINT","CHAR_WIFI_CONFIG","CHAR_PROVISIONING_RESULT","CHAR_STORAGE_INFO","CHAR_RECORDING_LIST","CHAR_RECORDING_TRANSFER","CHAR_TRANSFER_CONTROL","CHAR_TRANSFER_STATUS","DEVICE_NAME_PREFIX","DEVICE_NAME_PREFIX_PIN","DEVICE_NAME_PREFIX_PIN_4G","DEVICE_NAME_PREFIX_NOTE","MFG_DATA_DEVICE_TYPE","MFG_DATA_FW_MAJOR","MFG_DATA_FW_MINOR","MFG_DATA_PAIRING_STATE","MFG_DATA_BATTERY","DEVICE_TYPE_PIN","DEVICE_TYPE_PIN_4G","DEVICE_TYPE_NOTE","PAIRING_STATE_UNPAIRED","PAIRING_STATE_PAIRING","PAIRING_STATE_PAIRED","PAIRING_STATE_ERROR","PROVISIONING_SUCCESS","PROVISIONING_INVALID_TOKEN","PROVISIONING_STORAGE_ERROR","PROVISIONING_CHUNK_ERROR","API_ENDPOINT_PRODUCTION","API_ENDPOINT_SANDBOX","TRANSFER_CMD_LIST","TRANSFER_CMD_START","TRANSFER_CMD_CONFIRM_SYNC","PACKET_TYPE_DATA","PACKET_TYPE_EOF","PACKET_TYPE_ERROR","ACK_TYPE_ACK","ACK_TYPE_NACK","ACK_TYPE_ABORT","DEVICE_CMD_ENTER_DFU","RECORDING_CMD_LOCAL_START","RECORDING_CMD_LOCAL_STOP","RECORDING_CMD_GRANT_START","RECORDING_CMD_GRANT_STOP","RECORDING_RESULT_SUCCESS","RECORDING_RESULT_ERROR","RECORDING_RESULT_ALREADY_RECORDING","RECORDING_RESULT_NOT_RECORDING","RECORDING_RESULT_INVALID_GRANT","RECORDING_RESULT_GRANT_EXPIRED","DEVICE_STATE_IDLE","DEVICE_STATE_RECORDING","DEVICE_STATE_SYNCING","DEVICE_STATE_UPLOADING","DEVICE_STATE_CHARGING","DEVICE_STATE_LOW_BATTERY","DEVICE_STATE_STORAGE_FULL","DEVICE_STATE_ERROR","FLAG_CHARGING","FLAG_USB_CONNECTED","FLAG_LOW_BATTERY","FLAG_CRITICAL_BATTERY","FLAG_STORAGE_WARNING","FLAG_STORAGE_FULL","FLAG_CELLULAR_AVAILABLE","FLAG_CELLULAR_ROAMING","FLAG_WIFI_CONNECTED","FLAG_RECORDING_ACTIVE","FLAG_SYNC_REQUIRED","FLAG_UPDATE_AVAILABLE","CODEC_PCM_16K","CODEC_PCM_8K","CODEC_OPUS_16K","CODEC_OPUS_8K","BLE_ERROR_SUCCESS","BLE_ERROR_INVALID_COMMAND","BLE_ERROR_INVALID_STATE","BLE_ERROR_INVALID_PARAMETER","BLE_ERROR_STORAGE_FULL","BLE_ERROR_RECORDING_NOT_FOUND","BLE_ERROR_TRANSFER_FAILED","BLE_ERROR_TOKEN_INVALID","BLE_ERROR_TOKEN_EXPIRED","BLE_ERROR_NETWORK_ERROR","BLE_ERROR_UPLOAD_FAILED","BLE_ERROR_UNKNOWN","SCAN_TIMEOUT","CONNECTION_TIMEOUT","OPERATION_TIMEOUT","TRANSFER_PACKET_TIMEOUT","TRANSFER_WINDOW_SIZE","DEFAULT_MTU","MAX_MTU"],"sourceRoot":"../../../src","sources":["ble/constants.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SERVICE_DEVICE_INFO","exports","SERVICE_BATTERY","SERVICE_NORDIC_DFU","SERVICE_BOTA_AUDIO","SERVICE_BOTA_CONTROL","SERVICE_BOTA_PROVISIONING","SERVICE_BOTA_STORAGE","SERVICE_BOTA_WIFI_CONFIG","CHAR_MANUFACTURER_NAME","CHAR_MODEL_NUMBER","CHAR_SERIAL_NUMBER","CHAR_HARDWARE_REVISION","CHAR_FIRMWARE_REVISION","CHAR_BATTERY_LEVEL","CHAR_AUDIO_DATA","CHAR_AUDIO_CODEC","CHAR_AUDIO_CONTROL","CHAR_DEVICE_STATUS","CHAR_RECORDING_CONTROL","CHAR_RECORDING_STATUS","CHAR_TIME_SYNC","CHAR_DEVICE_COMMAND","CHAR_PAIRING_STATE","CHAR_DEVICE_TOKEN","CHAR_API_ENDPOINT","CHAR_WIFI_CONFIG","CHAR_PROVISIONING_RESULT","CHAR_STORAGE_INFO","CHAR_RECORDING_LIST","CHAR_RECORDING_TRANSFER","CHAR_TRANSFER_CONTROL","CHAR_TRANSFER_STATUS","CHAR_WIFI_GRANT","CHAR_WIFI_CREDENTIAL","CHAR_WIFI_STATUS","DEVICE_NAME_PREFIX","DEVICE_NAME_PREFIX_PIN","DEVICE_NAME_PREFIX_PIN_4G","DEVICE_NAME_PREFIX_NOTE","MFG_DATA_DEVICE_TYPE","MFG_DATA_FW_MAJOR","MFG_DATA_FW_MINOR","MFG_DATA_PAIRING_STATE","MFG_DATA_BATTERY","DEVICE_TYPE_PIN","DEVICE_TYPE_PIN_4G","DEVICE_TYPE_NOTE","CAP_BLE_SYNC","CAP_WIFI_UPLOAD","CAP_LTE_UPLOAD","CAP_REMOTE_RECORD","PAIRING_STATE_UNPAIRED","PAIRING_STATE_PAIRING","PAIRING_STATE_PAIRED","PAIRING_STATE_ERROR","WIFI_STATUS_IDLE","WIFI_STATUS_CONNECTING","WIFI_STATUS_CONNECTED","WIFI_STATUS_FAILED","WIFI_STATUS_DISCONNECTED","PROVISIONING_SUCCESS","PROVISIONING_INVALID_TOKEN","PROVISIONING_STORAGE_ERROR","PROVISIONING_CHUNK_ERROR","WIFI_CONFIG_SUCCESS","WIFI_CONFIG_INVALID_GRANT","WIFI_CONFIG_GRANT_EXPIRED","WIFI_CONFIG_DECRYPTION_ERROR","WIFI_CONFIG_STORAGE_ERROR","API_ENDPOINT_PRODUCTION","API_ENDPOINT_SANDBOX","TRANSFER_CMD_LIST","TRANSFER_CMD_START","TRANSFER_CMD_CONFIRM_SYNC","PACKET_TYPE_DATA","PACKET_TYPE_EOF","PACKET_TYPE_ERROR","ACK_TYPE_ACK","ACK_TYPE_NACK","ACK_TYPE_ABORT","DEVICE_CMD_ENTER_DFU","RECORDING_CMD_LOCAL_START","RECORDING_CMD_LOCAL_STOP","RECORDING_CMD_GRANT_START","RECORDING_CMD_GRANT_STOP","RECORDING_RESULT_SUCCESS","RECORDING_RESULT_ERROR","RECORDING_RESULT_ALREADY_RECORDING","RECORDING_RESULT_NOT_RECORDING","RECORDING_RESULT_INVALID_GRANT","RECORDING_RESULT_GRANT_EXPIRED","DEVICE_STATE_IDLE","DEVICE_STATE_RECORDING","DEVICE_STATE_SYNCING","DEVICE_STATE_UPLOADING","DEVICE_STATE_CHARGING","DEVICE_STATE_LOW_BATTERY","DEVICE_STATE_STORAGE_FULL","DEVICE_STATE_ERROR","FLAG_CHARGING","FLAG_USB_CONNECTED","FLAG_LOW_BATTERY","FLAG_CRITICAL_BATTERY","FLAG_STORAGE_WARNING","FLAG_STORAGE_FULL","FLAG_CELLULAR_AVAILABLE","FLAG_CELLULAR_ROAMING","FLAG_WIFI_CONNECTED","FLAG_RECORDING_ACTIVE","FLAG_SYNC_REQUIRED","FLAG_UPDATE_AVAILABLE","CODEC_PCM_16K","CODEC_PCM_8K","CODEC_OPUS_16K","CODEC_OPUS_8K","BLE_ERROR_SUCCESS","BLE_ERROR_INVALID_COMMAND","BLE_ERROR_INVALID_STATE","BLE_ERROR_INVALID_PARAMETER","BLE_ERROR_STORAGE_FULL","BLE_ERROR_RECORDING_NOT_FOUND","BLE_ERROR_TRANSFER_FAILED","BLE_ERROR_TOKEN_INVALID","BLE_ERROR_TOKEN_EXPIRED","BLE_ERROR_NETWORK_ERROR","BLE_ERROR_UPLOAD_FAILED","BLE_ERROR_UNKNOWN","SCAN_TIMEOUT","CONNECTION_TIMEOUT","OPERATION_TIMEOUT","TRANSFER_PACKET_TIMEOUT","TRANSFER_WINDOW_SIZE","DEFAULT_MTU","MAX_MTU"],"sourceRoot":"../../../src","sources":["ble/constants.ts"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.createAckPacket = createAckPacket;
7
7
  exports.createTimeSyncData = createTimeSyncData;
8
8
  exports.createTransferCommand = createTransferCommand;
9
+ exports.createWiFiGrantPacket = createWiFiGrantPacket;
9
10
  exports.parseAudioCodec = parseAudioCodec;
11
+ exports.parseDeviceCapabilities = parseDeviceCapabilities;
10
12
  exports.parseDeviceFlags = parseDeviceFlags;
11
13
  exports.parseDeviceState = parseDeviceState;
12
14
  exports.parseDeviceStatus = parseDeviceStatus;
@@ -16,6 +18,9 @@ exports.parsePairingState = parsePairingState;
16
18
  exports.parseRecordingList = parseRecordingList;
17
19
  exports.parseStorageInfo = parseStorageInfo;
18
20
  exports.parseTransferPacket = parseTransferPacket;
21
+ exports.parseWiFiConfigResult = parseWiFiConfigResult;
22
+ exports.parseWiFiStatus = parseWiFiStatus;
23
+ exports.parseWiFiStatusInfo = parseWiFiStatusInfo;
19
24
  var _buffer = require("buffer");
20
25
  var _constants = require("./constants");
21
26
  /**
@@ -342,4 +347,127 @@ function createTransferCommand(command, recordingUuid) {
342
347
  }
343
348
  return _buffer.Buffer.from([cmdByte]);
344
349
  }
350
+
351
+ // ============================================================================
352
+ // WiFi Upload Configuration Parsers
353
+ // ============================================================================
354
+
355
+ /**
356
+ * Parse device capabilities from byte value
357
+ */
358
+ function parseDeviceCapabilities(byte) {
359
+ return {
360
+ bleSync: (byte & _constants.CAP_BLE_SYNC) !== 0,
361
+ wifiUpload: (byte & _constants.CAP_WIFI_UPLOAD) !== 0,
362
+ lteUpload: (byte & _constants.CAP_LTE_UPLOAD) !== 0,
363
+ remoteRecord: (byte & _constants.CAP_REMOTE_RECORD) !== 0
364
+ };
365
+ }
366
+
367
+ /**
368
+ * Parse WiFi status from byte value
369
+ */
370
+ function parseWiFiStatus(byte) {
371
+ switch (byte) {
372
+ case _constants.WIFI_STATUS_IDLE:
373
+ return 'idle';
374
+ case _constants.WIFI_STATUS_CONNECTING:
375
+ return 'connecting';
376
+ case _constants.WIFI_STATUS_CONNECTED:
377
+ return 'connected';
378
+ case _constants.WIFI_STATUS_FAILED:
379
+ return 'failed';
380
+ case _constants.WIFI_STATUS_DISCONNECTED:
381
+ return 'disconnected';
382
+ default:
383
+ return 'idle';
384
+ }
385
+ }
386
+
387
+ /**
388
+ * Parse WiFi status information from characteristic value
389
+ *
390
+ * Format:
391
+ * Byte 0: Status (0x00=idle, 0x01=connecting, 0x02=connected, 0x03=failed, 0x04=disconnected)
392
+ * Byte 1: Signal strength (0-100)
393
+ * Byte 2: SSID length
394
+ * Bytes 3-34: SSID (max 32 bytes)
395
+ * Bytes 35+: Error message (if status=failed)
396
+ */
397
+ function parseWiFiStatusInfo(data) {
398
+ if (data.length < 3) {
399
+ throw new Error(`Invalid WiFi status data length: ${data.length}`);
400
+ }
401
+ const status = parseWiFiStatus(data.readUInt8(0));
402
+ const signalStrength = data.readUInt8(1);
403
+ const ssidLength = data.readUInt8(2);
404
+ let ssid;
405
+ let lastError;
406
+ if (ssidLength > 0 && data.length >= 3 + ssidLength) {
407
+ ssid = data.slice(3, 3 + ssidLength).toString('utf-8');
408
+ }
409
+ if (status === 'failed' && data.length > 3 + ssidLength) {
410
+ lastError = data.slice(3 + ssidLength).toString('utf-8');
411
+ }
412
+ return {
413
+ status,
414
+ signalStrength: signalStrength > 0 ? signalStrength : undefined,
415
+ ssid,
416
+ lastError
417
+ };
418
+ }
419
+
420
+ /**
421
+ * Parse WiFi configuration result from characteristic value
422
+ *
423
+ * Format:
424
+ * Byte 0: Result code (0x00=success, 0x01=invalid_grant, 0x02=grant_expired, 0x03=decryption_error, 0x04=storage_error)
425
+ */
426
+ function parseWiFiConfigResult(data) {
427
+ if (data.length < 1) {
428
+ throw new Error(`Invalid WiFi config result length: ${data.length}`);
429
+ }
430
+ const code = data.readUInt8(0);
431
+ switch (code) {
432
+ case _constants.WIFI_CONFIG_SUCCESS:
433
+ return {
434
+ success: true
435
+ };
436
+ case _constants.WIFI_CONFIG_INVALID_GRANT:
437
+ return {
438
+ success: false,
439
+ error: 'invalid_grant'
440
+ };
441
+ case _constants.WIFI_CONFIG_GRANT_EXPIRED:
442
+ return {
443
+ success: false,
444
+ error: 'grant_expired'
445
+ };
446
+ case _constants.WIFI_CONFIG_DECRYPTION_ERROR:
447
+ return {
448
+ success: false,
449
+ error: 'decryption_error'
450
+ };
451
+ case _constants.WIFI_CONFIG_STORAGE_ERROR:
452
+ return {
453
+ success: false,
454
+ error: 'storage_error'
455
+ };
456
+ default:
457
+ return {
458
+ success: false,
459
+ error: 'unknown'
460
+ };
461
+ }
462
+ }
463
+
464
+ /**
465
+ * Create WiFi grant submission packet
466
+ *
467
+ * Format:
468
+ * Bytes 0-N: Grant blob (JWT token as UTF-8 string)
469
+ */
470
+ function createWiFiGrantPacket(grantBlob) {
471
+ return _buffer.Buffer.from(grantBlob, 'utf-8');
472
+ }
345
473
  //# sourceMappingURL=parsers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_buffer","require","_constants","parseDeviceType","byte","DEVICE_TYPE_PIN","DEVICE_TYPE_PIN_4G","DEVICE_TYPE_NOTE","parsePairingState","PAIRING_STATE_UNPAIRED","PAIRING_STATE_PAIRING","PAIRING_STATE_PAIRED","PAIRING_STATE_ERROR","parseFirmwareVersion","major","minor","parseDeviceState","DEVICE_STATE_IDLE","DEVICE_STATE_RECORDING","DEVICE_STATE_SYNCING","DEVICE_STATE_UPLOADING","DEVICE_STATE_CHARGING","DEVICE_STATE_LOW_BATTERY","DEVICE_STATE_STORAGE_FULL","DEVICE_STATE_ERROR","parseDeviceFlags","value","charging","FLAG_CHARGING","usbConnected","FLAG_USB_CONNECTED","lowBattery","FLAG_LOW_BATTERY","criticalBattery","FLAG_CRITICAL_BATTERY","storageWarning","FLAG_STORAGE_WARNING","storageFull","FLAG_STORAGE_FULL","cellularAvailable","FLAG_CELLULAR_AVAILABLE","cellularRoaming","FLAG_CELLULAR_ROAMING","wifiConnected","FLAG_WIFI_CONNECTED","recordingActive","FLAG_RECORDING_ACTIVE","syncRequired","FLAG_SYNC_REQUIRED","updateAvailable","FLAG_UPDATE_AVAILABLE","parseDeviceStatus","data","length","Error","timestamp","readUInt32LE","batteryLevel","readUInt8","state","storageUsedPercent","signalStrength","pendingRecordings","readUInt16LE","lastSyncTimestamp","flagsValue","flags","lastSyncAt","Date","parseStorageInfo","totalKb","usedKb","totalRecordings","pendingSyncCount","parseAudioCodec","CODEC_PCM_16K","CODEC_PCM_8K","CODEC_OPUS_16K","CODEC_OPUS_8K","parseRecordingList","recordings","entrySize","offset","uuid","formatUuid","slice","durationSeconds","sizeKb","push","startedAt","durationMs","fileSizeBytes","codec","hex","toString","parseTransferPacket","type","sequenceNumber","PACKET_TYPE_DATA","PACKET_TYPE_EOF","checksum","PACKET_TYPE_ERROR","errorCode","createTimeSyncData","date","buffer","Buffer","alloc","unixSeconds","Math","floor","getTime","milliseconds","getMilliseconds","timezoneOffset","getTimezoneOffset","writeUInt32LE","writeUInt16LE","writeInt16LE","createAckPacket","ackType","writeUInt8","createTransferCommand","command","recordingUuid","cmdByte","uuidBuffer","from","replace","copy"],"sourceRoot":"../../../src","sources":["ble/parsers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_buffer","require","_constants","parseDeviceType","byte","DEVICE_TYPE_PIN","DEVICE_TYPE_PIN_4G","DEVICE_TYPE_NOTE","parsePairingState","PAIRING_STATE_UNPAIRED","PAIRING_STATE_PAIRING","PAIRING_STATE_PAIRED","PAIRING_STATE_ERROR","parseFirmwareVersion","major","minor","parseDeviceState","DEVICE_STATE_IDLE","DEVICE_STATE_RECORDING","DEVICE_STATE_SYNCING","DEVICE_STATE_UPLOADING","DEVICE_STATE_CHARGING","DEVICE_STATE_LOW_BATTERY","DEVICE_STATE_STORAGE_FULL","DEVICE_STATE_ERROR","parseDeviceFlags","value","charging","FLAG_CHARGING","usbConnected","FLAG_USB_CONNECTED","lowBattery","FLAG_LOW_BATTERY","criticalBattery","FLAG_CRITICAL_BATTERY","storageWarning","FLAG_STORAGE_WARNING","storageFull","FLAG_STORAGE_FULL","cellularAvailable","FLAG_CELLULAR_AVAILABLE","cellularRoaming","FLAG_CELLULAR_ROAMING","wifiConnected","FLAG_WIFI_CONNECTED","recordingActive","FLAG_RECORDING_ACTIVE","syncRequired","FLAG_SYNC_REQUIRED","updateAvailable","FLAG_UPDATE_AVAILABLE","parseDeviceStatus","data","length","Error","timestamp","readUInt32LE","batteryLevel","readUInt8","state","storageUsedPercent","signalStrength","pendingRecordings","readUInt16LE","lastSyncTimestamp","flagsValue","flags","lastSyncAt","Date","parseStorageInfo","totalKb","usedKb","totalRecordings","pendingSyncCount","parseAudioCodec","CODEC_PCM_16K","CODEC_PCM_8K","CODEC_OPUS_16K","CODEC_OPUS_8K","parseRecordingList","recordings","entrySize","offset","uuid","formatUuid","slice","durationSeconds","sizeKb","push","startedAt","durationMs","fileSizeBytes","codec","hex","toString","parseTransferPacket","type","sequenceNumber","PACKET_TYPE_DATA","PACKET_TYPE_EOF","checksum","PACKET_TYPE_ERROR","errorCode","createTimeSyncData","date","buffer","Buffer","alloc","unixSeconds","Math","floor","getTime","milliseconds","getMilliseconds","timezoneOffset","getTimezoneOffset","writeUInt32LE","writeUInt16LE","writeInt16LE","createAckPacket","ackType","writeUInt8","createTransferCommand","command","recordingUuid","cmdByte","uuidBuffer","from","replace","copy","parseDeviceCapabilities","bleSync","CAP_BLE_SYNC","wifiUpload","CAP_WIFI_UPLOAD","lteUpload","CAP_LTE_UPLOAD","remoteRecord","CAP_REMOTE_RECORD","parseWiFiStatus","WIFI_STATUS_IDLE","WIFI_STATUS_CONNECTING","WIFI_STATUS_CONNECTED","WIFI_STATUS_FAILED","WIFI_STATUS_DISCONNECTED","parseWiFiStatusInfo","status","ssidLength","ssid","lastError","undefined","parseWiFiConfigResult","code","WIFI_CONFIG_SUCCESS","success","WIFI_CONFIG_INVALID_GRANT","error","WIFI_CONFIG_GRANT_EXPIRED","WIFI_CONFIG_DECRYPTION_ERROR","WIFI_CONFIG_STORAGE_ERROR","createWiFiGrantPacket","grantBlob"],"sourceRoot":"../../../src","sources":["ble/parsers.ts"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,7 @@ var _constants = require("../ble/constants");
11
11
  var _parsers = require("../ble/parsers");
12
12
  var _errors = require("../utils/errors");
13
13
  var _logger = require("../utils/logger");
14
+ var _crypto = require("../utils/crypto");
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
16
  /**
16
17
  * Device Manager - Handles device discovery, connection, and provisioning
@@ -633,6 +634,184 @@ class DeviceManager extends _eventemitter.default {
633
634
  };
634
635
  }
635
636
 
637
+ // ============================================================================
638
+ // WiFi Upload Configuration
639
+ // ============================================================================
640
+
641
+ /**
642
+ * Configure WiFi credentials on device via BLE.
643
+ * Requires a WiFi configuration grant from backend.
644
+ *
645
+ * @param deviceId - Connected device ID
646
+ * @param credentials - WiFi network credentials
647
+ * @param grant - WiFi config grant from backend
648
+ * @returns Configuration result
649
+ *
650
+ * @example
651
+ * ```typescript
652
+ * // 1. Get grant from backend
653
+ * const grant = await api.createWiFiConfigGrant(deviceId);
654
+ *
655
+ * // 2. Configure device via BLE
656
+ * const result = await deviceManager.configureWiFi(
657
+ * deviceId,
658
+ * { ssid: 'MyNetwork', password: 'password123', securityType: 'WPA2' },
659
+ * grant
660
+ * );
661
+ *
662
+ * if (result.success) {
663
+ * console.log('WiFi configured successfully');
664
+ * }
665
+ * ```
666
+ */
667
+ async configureWiFi(deviceId, credentials, grant) {
668
+ log.info('Configuring WiFi on device', {
669
+ deviceId,
670
+ ssid: credentials.ssid
671
+ });
672
+ try {
673
+ // Step 1: Submit WiFi config grant to device
674
+ const grantPacket = (0, _parsers.createWiFiGrantPacket)(grant.grantBlob);
675
+ await this.bleManager.writeCharacteristic(deviceId, _constants.SERVICE_BOTA_WIFI_CONFIG, _constants.CHAR_WIFI_GRANT, grantPacket);
676
+ log.debug('WiFi grant submitted');
677
+
678
+ // Step 2: Derive K_session from grant
679
+ const sessionKey = (0, _crypto.deriveSessionKey)(grant.grantBlob);
680
+
681
+ // Step 3: Encrypt WiFi credentials with K_session
682
+ const encrypted = (0, _crypto.encryptWiFiCredentials)(credentials.ssid, credentials.password, sessionKey);
683
+
684
+ // Step 4: Format credential packet for BLE transmission
685
+ const credentialPacket = (0, _crypto.formatWiFiCredentialPacket)(encrypted);
686
+ log.debug('Sending encrypted WiFi credentials', {
687
+ packetSize: credentialPacket.length
688
+ });
689
+
690
+ // Step 5: Write encrypted credentials to device
691
+ await this.bleManager.writeCharacteristic(deviceId, _constants.SERVICE_BOTA_WIFI_CONFIG, _constants.CHAR_WIFI_CREDENTIAL, credentialPacket);
692
+
693
+ // Step 6: Wait for configuration result
694
+ const result = await this.waitForWiFiConfigResult(deviceId);
695
+ if (result.success) {
696
+ log.info('WiFi configuration successful', {
697
+ deviceId
698
+ });
699
+ } else {
700
+ log.warn('WiFi configuration failed', {
701
+ deviceId,
702
+ error: result.error
703
+ });
704
+ }
705
+ return result;
706
+ } catch (error) {
707
+ log.error('WiFi configuration error', error instanceof Error ? error : undefined);
708
+ throw new _errors.DeviceError(`Failed to configure WiFi: ${error instanceof Error ? error.message : 'Unknown error'}`, 'WIFI_CONFIG_ERROR', deviceId, error instanceof Error ? error : undefined);
709
+ }
710
+ }
711
+
712
+ /**
713
+ * Get WiFi connection status from device.
714
+ *
715
+ * @param deviceId - Connected device ID
716
+ * @returns WiFi status information
717
+ *
718
+ * @example
719
+ * ```typescript
720
+ * const status = await deviceManager.getWiFiStatus(deviceId);
721
+ * console.log('WiFi status:', status.status);
722
+ * if (status.status === 'connected') {
723
+ * console.log('Connected to:', status.ssid);
724
+ * console.log('Signal strength:', status.signalStrength);
725
+ * }
726
+ * ```
727
+ */
728
+ async getWiFiStatus(deviceId) {
729
+ log.debug('Reading WiFi status', {
730
+ deviceId
731
+ });
732
+ try {
733
+ const data = await this.bleManager.readCharacteristic(deviceId, _constants.SERVICE_BOTA_WIFI_CONFIG, _constants.CHAR_WIFI_STATUS);
734
+ const status = (0, _parsers.parseWiFiStatusInfo)(data);
735
+ log.debug('WiFi status', {
736
+ deviceId,
737
+ status: status.status,
738
+ ssid: status.ssid
739
+ });
740
+ return status;
741
+ } catch (error) {
742
+ log.error('Failed to read WiFi status', error instanceof Error ? error : undefined);
743
+ throw new _errors.DeviceError(`Failed to read WiFi status: ${error instanceof Error ? error.message : 'Unknown error'}`, 'WIFI_STATUS_ERROR', deviceId, error instanceof Error ? error : undefined);
744
+ }
745
+ }
746
+
747
+ /**
748
+ * Subscribe to WiFi status updates from device.
749
+ *
750
+ * @param deviceId - Connected device ID
751
+ * @param callback - Callback function for status updates
752
+ * @returns Subscription object (call .remove() to unsubscribe)
753
+ *
754
+ * @example
755
+ * ```typescript
756
+ * const subscription = deviceManager.subscribeToWiFiStatus(deviceId, (status) => {
757
+ * console.log('WiFi status update:', status.status);
758
+ * if (status.status === 'connected') {
759
+ * console.log('Connected to:', status.ssid);
760
+ * } else if (status.status === 'failed') {
761
+ * console.error('Connection failed:', status.lastError);
762
+ * }
763
+ * });
764
+ *
765
+ * // Later: unsubscribe
766
+ * subscription.remove();
767
+ * ```
768
+ */
769
+ subscribeToWiFiStatus(deviceId, callback) {
770
+ log.debug('Subscribing to WiFi status', {
771
+ deviceId
772
+ });
773
+ return this.bleManager.subscribeToCharacteristic(deviceId, _constants.SERVICE_BOTA_WIFI_CONFIG, _constants.CHAR_WIFI_STATUS, data => {
774
+ try {
775
+ const status = (0, _parsers.parseWiFiStatusInfo)(data);
776
+ callback(status);
777
+ } catch (error) {
778
+ log.error('Failed to parse WiFi status', error instanceof Error ? error : undefined);
779
+ }
780
+ }, error => {
781
+ log.error('WiFi status subscription error', error);
782
+ });
783
+ }
784
+
785
+ /**
786
+ * Wait for WiFi configuration result from device.
787
+ */
788
+ waitForWiFiConfigResult(deviceId) {
789
+ return new Promise((resolve, reject) => {
790
+ const timeout = setTimeout(() => {
791
+ subscription.remove();
792
+ reject(new _errors.DeviceError('WiFi configuration timeout', 'WIFI_CONFIG_TIMEOUT', deviceId));
793
+ }, _constants.OPERATION_TIMEOUT);
794
+ const subscription = this.bleManager.subscribeToCharacteristic(deviceId, _constants.SERVICE_BOTA_WIFI_CONFIG, _constants.CHAR_WIFI_STATUS, data => {
795
+ try {
796
+ // Configuration result comes via status updates
797
+ const result = (0, _parsers.parseWiFiConfigResult)(data);
798
+ clearTimeout(timeout);
799
+ subscription.remove();
800
+ resolve(result);
801
+ } catch (error) {
802
+ // Ignore parse errors, wait for valid result
803
+ log.debug('Ignoring invalid WiFi config result', {
804
+ error: error instanceof Error ? error.message : String(error)
805
+ });
806
+ }
807
+ }, error => {
808
+ clearTimeout(timeout);
809
+ subscription.remove();
810
+ reject(new _errors.DeviceError(`WiFi config result error: ${error.message}`, 'WIFI_CONFIG_RESULT_ERROR', deviceId, error));
811
+ });
812
+ });
813
+ }
814
+
636
815
  /**
637
816
  * Clean up resources
638
817
  */