@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
@@ -9,6 +9,7 @@ export declare const SERVICE_BOTA_AUDIO = "B07A0001-0000-1000-8000-00805F9B34FB"
9
9
  export declare const SERVICE_BOTA_CONTROL = "B07A0002-0000-1000-8000-00805F9B34FB";
10
10
  export declare const SERVICE_BOTA_PROVISIONING = "B07A0003-0000-1000-8000-00805F9B34FB";
11
11
  export declare const SERVICE_BOTA_STORAGE = "B07A0004-0000-1000-8000-00805F9B34FB";
12
+ export declare const SERVICE_BOTA_WIFI_CONFIG = "B07A0006-0000-1000-8000-00805F9B34FB";
12
13
  export declare const CHAR_MANUFACTURER_NAME = "2A29";
13
14
  export declare const CHAR_MODEL_NUMBER = "2A24";
14
15
  export declare const CHAR_SERIAL_NUMBER = "2A25";
@@ -33,6 +34,9 @@ export declare const CHAR_RECORDING_LIST = "B07A0004-0002-1000-8000-00805F9B34FB
33
34
  export declare const CHAR_RECORDING_TRANSFER = "B07A0004-0003-1000-8000-00805F9B34FB";
34
35
  export declare const CHAR_TRANSFER_CONTROL = "B07A0004-0004-1000-8000-00805F9B34FB";
35
36
  export declare const CHAR_TRANSFER_STATUS = "B07A0004-0005-1000-8000-00805F9B34FB";
37
+ export declare const CHAR_WIFI_GRANT = "B07A0006-0001-1000-8000-00805F9B34FB";
38
+ export declare const CHAR_WIFI_CREDENTIAL = "B07A0006-0002-1000-8000-00805F9B34FB";
39
+ export declare const CHAR_WIFI_STATUS = "B07A0006-0003-1000-8000-00805F9B34FB";
36
40
  export declare const DEVICE_NAME_PREFIX = "Bota-";
37
41
  export declare const DEVICE_NAME_PREFIX_PIN = "Bota-Pin-";
38
42
  export declare const DEVICE_NAME_PREFIX_PIN_4G = "Bota-Pin4G-";
@@ -45,14 +49,28 @@ export declare const MFG_DATA_BATTERY = 4;
45
49
  export declare const DEVICE_TYPE_PIN = 1;
46
50
  export declare const DEVICE_TYPE_PIN_4G = 2;
47
51
  export declare const DEVICE_TYPE_NOTE = 3;
52
+ export declare const CAP_BLE_SYNC = 1;
53
+ export declare const CAP_WIFI_UPLOAD = 2;
54
+ export declare const CAP_LTE_UPLOAD = 4;
55
+ export declare const CAP_REMOTE_RECORD = 8;
48
56
  export declare const PAIRING_STATE_UNPAIRED = 0;
49
57
  export declare const PAIRING_STATE_PAIRING = 1;
50
58
  export declare const PAIRING_STATE_PAIRED = 2;
51
59
  export declare const PAIRING_STATE_ERROR = 3;
60
+ export declare const WIFI_STATUS_IDLE = 0;
61
+ export declare const WIFI_STATUS_CONNECTING = 1;
62
+ export declare const WIFI_STATUS_CONNECTED = 2;
63
+ export declare const WIFI_STATUS_FAILED = 3;
64
+ export declare const WIFI_STATUS_DISCONNECTED = 4;
52
65
  export declare const PROVISIONING_SUCCESS = 0;
53
66
  export declare const PROVISIONING_INVALID_TOKEN = 1;
54
67
  export declare const PROVISIONING_STORAGE_ERROR = 2;
55
68
  export declare const PROVISIONING_CHUNK_ERROR = 3;
69
+ export declare const WIFI_CONFIG_SUCCESS = 0;
70
+ export declare const WIFI_CONFIG_INVALID_GRANT = 1;
71
+ export declare const WIFI_CONFIG_GRANT_EXPIRED = 2;
72
+ export declare const WIFI_CONFIG_DECRYPTION_ERROR = 3;
73
+ export declare const WIFI_CONFIG_STORAGE_ERROR = 4;
56
74
  export declare const API_ENDPOINT_PRODUCTION = 0;
57
75
  export declare const API_ENDPOINT_SANDBOX = 1;
58
76
  export declare const TRANSFER_CMD_LIST = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/ble/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/ble/constants.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * BLE data parsers for Bota device protocol
3
3
  */
4
4
  import { Buffer } from 'buffer';
5
- import type { DeviceType, PairingState, DeviceState, DeviceStatus, DeviceFlags, StorageInfo } from '../models/Device';
5
+ import type { DeviceType, PairingState, DeviceState, DeviceStatus, DeviceFlags, StorageInfo, DeviceCapabilities, WiFiStatus, WiFiStatusInfo, WiFiConfigResult } from '../models/Device';
6
6
  import type { DeviceRecording, AudioCodec, TransferPacket } from '../models/Recording';
7
7
  /**
8
8
  * Parse device type from manufacturer data byte
@@ -97,4 +97,37 @@ export declare function createAckPacket(ackType: 'ack' | 'nack' | 'abort', seque
97
97
  * Bytes 1+: Recording UUID (for start/confirm)
98
98
  */
99
99
  export declare function createTransferCommand(command: 'list' | 'start' | 'confirm', recordingUuid?: string): Buffer;
100
+ /**
101
+ * Parse device capabilities from byte value
102
+ */
103
+ export declare function parseDeviceCapabilities(byte: number): DeviceCapabilities;
104
+ /**
105
+ * Parse WiFi status from byte value
106
+ */
107
+ export declare function parseWiFiStatus(byte: number): WiFiStatus;
108
+ /**
109
+ * Parse WiFi status information from characteristic value
110
+ *
111
+ * Format:
112
+ * Byte 0: Status (0x00=idle, 0x01=connecting, 0x02=connected, 0x03=failed, 0x04=disconnected)
113
+ * Byte 1: Signal strength (0-100)
114
+ * Byte 2: SSID length
115
+ * Bytes 3-34: SSID (max 32 bytes)
116
+ * Bytes 35+: Error message (if status=failed)
117
+ */
118
+ export declare function parseWiFiStatusInfo(data: Buffer): WiFiStatusInfo;
119
+ /**
120
+ * Parse WiFi configuration result from characteristic value
121
+ *
122
+ * Format:
123
+ * Byte 0: Result code (0x00=success, 0x01=invalid_grant, 0x02=grant_expired, 0x03=decryption_error, 0x04=storage_error)
124
+ */
125
+ export declare function parseWiFiConfigResult(data: Buffer): WiFiConfigResult;
126
+ /**
127
+ * Create WiFi grant submission packet
128
+ *
129
+ * Format:
130
+ * Bytes 0-N: Grant blob (JWT token as UTF-8 string)
131
+ */
132
+ export declare function createWiFiGrantPacket(grantBlob: string): Buffer;
100
133
  //# sourceMappingURL=parsers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/ble/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsCvF;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAWxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAa5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqB1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAe3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAyB5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAW1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAaxD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CA6BlE;AAUD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAiChE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAWlE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EACjC,cAAc,EAAE,MAAM,GACrB,MAAM,CAiBR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAuBR"}
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/ble/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAoDvF;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAWxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAa5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqB1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAe3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAyB5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAW1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAaxD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CA6BlE;AAUD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAiChE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAWlE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EACjC,cAAc,EAAE,MAAM,GACrB,MAAM,CAiBR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAuBR;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAOxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAexD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA0BhE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAqBpE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Device Manager - Handles device discovery, connection, and provisioning
3
3
  */
4
+ import { Subscription } from 'react-native-ble-plx';
4
5
  import EventEmitter from 'eventemitter3';
5
- import type { DiscoveredDevice, ConnectedDevice, DeviceStatus, ScanOptions, Environment, RecordingState, StartRecordingOptions, StopRecordingOptions } from '../models/Device';
6
+ import type { DiscoveredDevice, ConnectedDevice, DeviceStatus, ScanOptions, Environment, RecordingState, StartRecordingOptions, StopRecordingOptions, WiFiConfigGrant, WiFiCredentials, WiFiConfigResult, WiFiStatusInfo } from '../models/Device';
6
7
  import type { DeviceManagerEvents } from '../models/Status';
7
8
  /**
8
9
  * Device Manager class
@@ -118,6 +119,77 @@ export declare class DeviceManager extends EventEmitter<DeviceManagerEvents> {
118
119
  * Parse recording state from BLE data
119
120
  */
120
121
  private parseRecordingState;
122
+ /**
123
+ * Configure WiFi credentials on device via BLE.
124
+ * Requires a WiFi configuration grant from backend.
125
+ *
126
+ * @param deviceId - Connected device ID
127
+ * @param credentials - WiFi network credentials
128
+ * @param grant - WiFi config grant from backend
129
+ * @returns Configuration result
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * // 1. Get grant from backend
134
+ * const grant = await api.createWiFiConfigGrant(deviceId);
135
+ *
136
+ * // 2. Configure device via BLE
137
+ * const result = await deviceManager.configureWiFi(
138
+ * deviceId,
139
+ * { ssid: 'MyNetwork', password: 'password123', securityType: 'WPA2' },
140
+ * grant
141
+ * );
142
+ *
143
+ * if (result.success) {
144
+ * console.log('WiFi configured successfully');
145
+ * }
146
+ * ```
147
+ */
148
+ configureWiFi(deviceId: string, credentials: WiFiCredentials, grant: WiFiConfigGrant): Promise<WiFiConfigResult>;
149
+ /**
150
+ * Get WiFi connection status from device.
151
+ *
152
+ * @param deviceId - Connected device ID
153
+ * @returns WiFi status information
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const status = await deviceManager.getWiFiStatus(deviceId);
158
+ * console.log('WiFi status:', status.status);
159
+ * if (status.status === 'connected') {
160
+ * console.log('Connected to:', status.ssid);
161
+ * console.log('Signal strength:', status.signalStrength);
162
+ * }
163
+ * ```
164
+ */
165
+ getWiFiStatus(deviceId: string): Promise<WiFiStatusInfo>;
166
+ /**
167
+ * Subscribe to WiFi status updates from device.
168
+ *
169
+ * @param deviceId - Connected device ID
170
+ * @param callback - Callback function for status updates
171
+ * @returns Subscription object (call .remove() to unsubscribe)
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * const subscription = deviceManager.subscribeToWiFiStatus(deviceId, (status) => {
176
+ * console.log('WiFi status update:', status.status);
177
+ * if (status.status === 'connected') {
178
+ * console.log('Connected to:', status.ssid);
179
+ * } else if (status.status === 'failed') {
180
+ * console.error('Connection failed:', status.lastError);
181
+ * }
182
+ * });
183
+ *
184
+ * // Later: unsubscribe
185
+ * subscription.remove();
186
+ * ```
187
+ */
188
+ subscribeToWiFiStatus(deviceId: string, callback: (status: WiFiStatusInfo) => void): Subscription;
189
+ /**
190
+ * Wait for WiFi configuration result from device.
191
+ */
192
+ private waitForWiFiConfigResult;
121
193
  /**
122
194
  * Clean up resources
123
195
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../../../../src/managers/DeviceManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,YAAY,MAAM,eAAe,CAAC;AAsCzC,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EAEX,cAAc,EAEd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAS5D;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY,CAAC,mBAAmB,CAAC;IAClE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,mBAAmB,CAAwC;IACnE,OAAO,CAAC,aAAa,CAAS;;IAQ9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACG,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD;;OAEG;IACH,QAAQ,IAAI,IAAI;IAMhB;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,EAAE;IAI1C;;OAEG;IACH,mBAAmB,IAAI,eAAe,EAAE;IAIxC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoDjE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAexD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACG,SAAS,CACb,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,WAA0B,GACtC,OAAO,CAAC,IAAI,CAAC;IA4DhB;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAc/D;;OAEG;IACH,iBAAiB,CACf,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GACvC,MAAM,IAAI;IAkCb;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAejC,gBAAgB;YAShB,mBAAmB;YASnB,oBAAoB;YAapB,gBAAgB;YAchB,gBAAgB;YAehB,gBAAgB;IAuC9B,OAAO,CAAC,yBAAyB;IAwDjC;;;;;;;;OAQG;IACG,qBAAqB,CACzB,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqChD;;;;;;;;OAQG;IACG,oBAAoB,CACxB,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqChD;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAczE;;OAEG;IACH,yBAAyB,CACvB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GACxC,MAAM,IAAI;IA2Bb;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgE9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,IAAI,IAAI;CAahB"}
1
+ {"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../../../../src/managers/DeviceManager.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,19 @@ export interface DiscoveredDevice {
55
55
  /** Timestamp when discovered */
56
56
  discoveredAt: Date;
57
57
  }
58
+ /**
59
+ * Device capabilities (bitmask)
60
+ */
61
+ export interface DeviceCapabilities {
62
+ /** Supports Bluetooth Sync (BLE transfer) */
63
+ bleSync: boolean;
64
+ /** Supports WiFi Upload */
65
+ wifiUpload: boolean;
66
+ /** Supports Cellular Upload (4G/LTE) */
67
+ lteUpload: boolean;
68
+ /** Supports Remote Recording Control */
69
+ remoteRecord: boolean;
70
+ }
58
71
  /**
59
72
  * Device after successful BLE connection
60
73
  */
@@ -75,6 +88,8 @@ export interface ConnectedDevice {
75
88
  connectionState: ConnectionState;
76
89
  /** Negotiated MTU size */
77
90
  mtu: number;
91
+ /** Device capabilities */
92
+ capabilities?: DeviceCapabilities;
78
93
  }
79
94
  /**
80
95
  * Device status information
@@ -211,4 +226,54 @@ export interface RecordingState {
211
226
  /** Who initiated the recording */
212
227
  initiatedBy?: 'local' | 'remote';
213
228
  }
229
+ /**
230
+ * WiFi security type
231
+ */
232
+ export type WiFiSecurityType = 'WPA2' | 'WPA3' | 'WEP' | 'OPEN';
233
+ /**
234
+ * WiFi connection status
235
+ */
236
+ export type WiFiStatus = 'idle' | 'connecting' | 'connected' | 'failed' | 'disconnected';
237
+ /**
238
+ * WiFi configuration grant from backend
239
+ */
240
+ export interface WiFiConfigGrant {
241
+ /** Grant blob (JWT token) */
242
+ grantBlob: string;
243
+ /** Expiration timestamp */
244
+ expiresAt: Date;
245
+ }
246
+ /**
247
+ * WiFi credentials to configure
248
+ */
249
+ export interface WiFiCredentials {
250
+ /** WiFi network SSID */
251
+ ssid: string;
252
+ /** WiFi password */
253
+ password: string;
254
+ /** Security type (default: WPA2) */
255
+ securityType?: WiFiSecurityType;
256
+ }
257
+ /**
258
+ * WiFi configuration result from device
259
+ */
260
+ export interface WiFiConfigResult {
261
+ /** Whether configuration was successful */
262
+ success: boolean;
263
+ /** Error code if failed */
264
+ error?: 'invalid_grant' | 'grant_expired' | 'decryption_error' | 'storage_error' | 'unknown';
265
+ }
266
+ /**
267
+ * WiFi status information from device
268
+ */
269
+ export interface WiFiStatusInfo {
270
+ /** Current WiFi connection status */
271
+ status: WiFiStatus;
272
+ /** Connected SSID (if connected) */
273
+ ssid?: string;
274
+ /** Signal strength (0-100) */
275
+ signalStrength?: number;
276
+ /** Last connection error (if failed) */
277
+ lastError?: string;
278
+ }
214
279
  //# sourceMappingURL=Device.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../../../src/models/Device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../../../src/models/Device.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,qBAAqB,CAAC;AAoB3E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAyC;;IAMhE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAc5D;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAqElE;;;OAGG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC,MAAM,CAAC;IA8GlB;;OAEG;YACW,oBAAoB;IAgDlC;;OAEG;YACW,OAAO;IAgBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5E;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}
1
+ {"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,qBAAqB,CAAC;AAoB3E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAyC;;IAMhE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAc5D;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAqElE;;;OAGG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC,MAAM,CAAC;IAoHlB;;OAEG;YACW,oBAAoB;IAgDlC;;OAEG;YACW,OAAO;IAgBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5E;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Cryptographic utilities for WiFi Upload configuration
3
+ *
4
+ * NOTE: This module requires react-native-quick-crypto to be installed.
5
+ * Add to your app: npm install react-native-quick-crypto
6
+ */
7
+ import { Buffer } from 'buffer';
8
+ /**
9
+ * Derive K_session from WiFi config grant.
10
+ * K_session is used by device and app to encrypt/decrypt WiFi credentials in transit.
11
+ *
12
+ * Derivation: K_session = HMAC-SHA256(grant_blob, "BOTA_WIFI_SESSION_V1")
13
+ *
14
+ * @param grantBlob - Base64-encoded JWT grant from backend
15
+ * @returns 32-byte K_session as hex string
16
+ */
17
+ export declare function deriveSessionKey(grantBlob: string): string;
18
+ /**
19
+ * Encrypt WiFi credentials for BLE transmission using ChaCha20-Poly1305.
20
+ *
21
+ * Format sent to device:
22
+ * - 12 bytes: nonce (random)
23
+ * - N bytes: encrypted SSID
24
+ * - 16 bytes: auth tag for SSID
25
+ * - M bytes: encrypted password
26
+ * - 16 bytes: auth tag for password
27
+ *
28
+ * @param ssid - WiFi network SSID
29
+ * @param password - WiFi password
30
+ * @param sessionKey - K_session derived from grant (hex string)
31
+ * @returns Encrypted payload ready for BLE transmission
32
+ */
33
+ export declare function encryptWiFiCredentials(ssid: string, password: string, sessionKey: string): {
34
+ nonce: Buffer;
35
+ ssidEncrypted: Buffer;
36
+ ssidAuthTag: Buffer;
37
+ passwordEncrypted: Buffer;
38
+ passwordAuthTag: Buffer;
39
+ };
40
+ /**
41
+ * Decrypt WiFi credentials received from device (if needed for verification).
42
+ *
43
+ * @param encrypted - Encrypted SSID or password
44
+ * @param nonce - 12-byte nonce
45
+ * @param authTag - 16-byte authentication tag
46
+ * @param sessionKey - K_session derived from grant (hex string)
47
+ * @param aad - Additional authenticated data (optional, use 'password' for password field)
48
+ * @returns Decrypted plaintext
49
+ */
50
+ export declare function decryptWiFiCredential(encrypted: Buffer, nonce: Buffer, authTag: Buffer, sessionKey: string, aad?: string): string;
51
+ /**
52
+ * Format encrypted WiFi credentials for BLE transmission.
53
+ *
54
+ * Packet format:
55
+ * [nonce (12 bytes)][ssid_encrypted (N bytes)][ssid_tag (16 bytes)]
56
+ * [password_encrypted (M bytes)][password_tag (16 bytes)]
57
+ *
58
+ * @param encrypted - Result from encryptWiFiCredentials
59
+ * @returns Single buffer ready for BLE write
60
+ */
61
+ export declare function formatWiFiCredentialPacket(encrypted: {
62
+ nonce: Buffer;
63
+ ssidEncrypted: Buffer;
64
+ ssidAuthTag: Buffer;
65
+ passwordEncrypted: Buffer;
66
+ passwordAuthTag: Buffer;
67
+ }): Buffer;
68
+ /**
69
+ * Parse encrypted WiFi credential packet received from device.
70
+ *
71
+ * @param packet - Buffer received from BLE
72
+ * @param ssidLength - Expected SSID encrypted length
73
+ * @param passwordLength - Expected password encrypted length
74
+ * @returns Parsed components
75
+ */
76
+ export declare function parseWiFiCredentialPacket(packet: Buffer, ssidLength: number, passwordLength: number): {
77
+ nonce: Buffer;
78
+ ssidEncrypted: Buffer;
79
+ ssidAuthTag: Buffer;
80
+ passwordEncrypted: Buffer;
81
+ passwordAuthTag: Buffer;
82
+ };
83
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../../src/utils/crypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAoBhC;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAsCA;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAuBR;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAQT;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAyBA"}
@@ -4,4 +4,5 @@
4
4
  export * from './errors';
5
5
  export { logger } from './logger';
6
6
  export * from './retry';
7
+ export * from './crypto';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bota-dev/react-native-sdk",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Bota React Native SDK for BLE device communication",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -47,7 +47,8 @@
47
47
  "react": ">=18.0.0",
48
48
  "react-native": ">=0.72.0",
49
49
  "react-native-ble-plx": ">=3.0.0",
50
- "@react-native-async-storage/async-storage": ">=1.21.0"
50
+ "@react-native-async-storage/async-storage": ">=1.21.0",
51
+ "react-native-quick-crypto": ">=0.7.0"
51
52
  },
52
53
  "peerDependenciesMeta": {
53
54
  "react-native-ble-plx": {
@@ -55,6 +56,9 @@
55
56
  },
56
57
  "@react-native-async-storage/async-storage": {
57
58
  "optional": false
59
+ },
60
+ "react-native-quick-crypto": {
61
+ "optional": true
58
62
  }
59
63
  },
60
64
  "dependencies": {
@@ -13,6 +13,7 @@ export const SERVICE_BOTA_AUDIO = 'B07A0001-0000-1000-8000-00805F9B34FB';
13
13
  export const SERVICE_BOTA_CONTROL = 'B07A0002-0000-1000-8000-00805F9B34FB';
14
14
  export const SERVICE_BOTA_PROVISIONING = 'B07A0003-0000-1000-8000-00805F9B34FB';
15
15
  export const SERVICE_BOTA_STORAGE = 'B07A0004-0000-1000-8000-00805F9B34FB';
16
+ export const SERVICE_BOTA_WIFI_CONFIG = 'B07A0006-0000-1000-8000-00805F9B34FB';
16
17
 
17
18
  // Device Information Service Characteristics (0x180A)
18
19
  export const CHAR_MANUFACTURER_NAME = '2A29';
@@ -50,6 +51,11 @@ export const CHAR_RECORDING_TRANSFER = 'B07A0004-0003-1000-8000-00805F9B34FB';
50
51
  export const CHAR_TRANSFER_CONTROL = 'B07A0004-0004-1000-8000-00805F9B34FB';
51
52
  export const CHAR_TRANSFER_STATUS = 'B07A0004-0005-1000-8000-00805F9B34FB';
52
53
 
54
+ // Bota WiFi Config Service Characteristics (B07A0006)
55
+ export const CHAR_WIFI_GRANT = 'B07A0006-0001-1000-8000-00805F9B34FB';
56
+ export const CHAR_WIFI_CREDENTIAL = 'B07A0006-0002-1000-8000-00805F9B34FB';
57
+ export const CHAR_WIFI_STATUS = 'B07A0006-0003-1000-8000-00805F9B34FB';
58
+
53
59
  // Device name prefixes for scanning
54
60
  export const DEVICE_NAME_PREFIX = 'Bota-';
55
61
  export const DEVICE_NAME_PREFIX_PIN = 'Bota-Pin-';
@@ -68,18 +74,38 @@ export const DEVICE_TYPE_PIN = 0x01;
68
74
  export const DEVICE_TYPE_PIN_4G = 0x02;
69
75
  export const DEVICE_TYPE_NOTE = 0x03;
70
76
 
77
+ // Device capability flags (bitmask)
78
+ export const CAP_BLE_SYNC = 0x01;
79
+ export const CAP_WIFI_UPLOAD = 0x02;
80
+ export const CAP_LTE_UPLOAD = 0x04;
81
+ export const CAP_REMOTE_RECORD = 0x08;
82
+
71
83
  // Pairing state values
72
84
  export const PAIRING_STATE_UNPAIRED = 0x00;
73
85
  export const PAIRING_STATE_PAIRING = 0x01;
74
86
  export const PAIRING_STATE_PAIRED = 0x02;
75
87
  export const PAIRING_STATE_ERROR = 0x03;
76
88
 
89
+ // WiFi status values
90
+ export const WIFI_STATUS_IDLE = 0x00;
91
+ export const WIFI_STATUS_CONNECTING = 0x01;
92
+ export const WIFI_STATUS_CONNECTED = 0x02;
93
+ export const WIFI_STATUS_FAILED = 0x03;
94
+ export const WIFI_STATUS_DISCONNECTED = 0x04;
95
+
77
96
  // Provisioning result codes
78
97
  export const PROVISIONING_SUCCESS = 0x00;
79
98
  export const PROVISIONING_INVALID_TOKEN = 0x01;
80
99
  export const PROVISIONING_STORAGE_ERROR = 0x02;
81
100
  export const PROVISIONING_CHUNK_ERROR = 0x03;
82
101
 
102
+ // WiFi configuration result codes
103
+ export const WIFI_CONFIG_SUCCESS = 0x00;
104
+ export const WIFI_CONFIG_INVALID_GRANT = 0x01;
105
+ export const WIFI_CONFIG_GRANT_EXPIRED = 0x02;
106
+ export const WIFI_CONFIG_DECRYPTION_ERROR = 0x03;
107
+ export const WIFI_CONFIG_STORAGE_ERROR = 0x04;
108
+
83
109
  // API endpoint values
84
110
  export const API_ENDPOINT_PRODUCTION = 0x00;
85
111
  export const API_ENDPOINT_SANDBOX = 0x01;