@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.
- package/README.md +30 -2
- package/lib/commonjs/ble/constants.js +28 -2
- package/lib/commonjs/ble/constants.js.map +1 -1
- package/lib/commonjs/ble/parsers.js +128 -0
- package/lib/commonjs/ble/parsers.js.map +1 -1
- package/lib/commonjs/managers/DeviceManager.js +179 -0
- package/lib/commonjs/managers/DeviceManager.js.map +1 -1
- package/lib/commonjs/protocol/ProtocolHandler.js +6 -0
- package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -1
- package/lib/commonjs/utils/crypto.js +169 -0
- package/lib/commonjs/utils/crypto.js.map +1 -0
- package/lib/commonjs/utils/index.js +12 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/ble/constants.js +26 -0
- package/lib/module/ble/constants.js.map +1 -1
- package/lib/module/ble/parsers.js +124 -1
- package/lib/module/ble/parsers.js.map +1 -1
- package/lib/module/managers/DeviceManager.js +181 -2
- package/lib/module/managers/DeviceManager.js.map +1 -1
- package/lib/module/protocol/ProtocolHandler.js +6 -0
- package/lib/module/protocol/ProtocolHandler.js.map +1 -1
- package/lib/module/utils/crypto.js +160 -0
- package/lib/module/utils/crypto.js.map +1 -0
- package/lib/module/utils/index.js +1 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/src/ble/constants.d.ts +18 -0
- package/lib/typescript/src/ble/constants.d.ts.map +1 -1
- package/lib/typescript/src/ble/parsers.d.ts +34 -1
- package/lib/typescript/src/ble/parsers.d.ts.map +1 -1
- package/lib/typescript/src/managers/DeviceManager.d.ts +73 -1
- package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -1
- package/lib/typescript/src/models/Device.d.ts +65 -0
- package/lib/typescript/src/models/Device.d.ts.map +1 -1
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -1
- package/lib/typescript/src/utils/crypto.d.ts +83 -0
- package/lib/typescript/src/utils/crypto.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +1 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/package.json +6 -2
- package/src/ble/constants.ts +26 -0
- package/src/ble/parsers.ts +131 -0
- package/src/managers/DeviceManager.ts +244 -0
- package/src/models/Device.ts +76 -0
- package/src/protocol/ProtocolHandler.ts +6 -0
- package/src/utils/crypto.ts +221 -0
- 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
|
-
//
|
|
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.
|
|
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
|
*/
|