@bota-dev/react-native-sdk 0.0.2
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 +279 -0
- package/lib/commonjs/BotaClient.js +223 -0
- package/lib/commonjs/BotaClient.js.map +1 -0
- package/lib/commonjs/ble/BleManager.js +494 -0
- package/lib/commonjs/ble/BleManager.js.map +1 -0
- package/lib/commonjs/ble/constants.js +166 -0
- package/lib/commonjs/ble/constants.js.map +1 -0
- package/lib/commonjs/ble/index.js +54 -0
- package/lib/commonjs/ble/index.js.map +1 -0
- package/lib/commonjs/ble/parsers.js +345 -0
- package/lib/commonjs/ble/parsers.js.map +1 -0
- package/lib/commonjs/index.js +81 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/managers/DeviceManager.js +437 -0
- package/lib/commonjs/managers/DeviceManager.js.map +1 -0
- package/lib/commonjs/managers/OTAManager.js +227 -0
- package/lib/commonjs/managers/OTAManager.js.map +1 -0
- package/lib/commonjs/managers/RecordingManager.js +384 -0
- package/lib/commonjs/managers/RecordingManager.js.map +1 -0
- package/lib/commonjs/managers/index.js +27 -0
- package/lib/commonjs/managers/index.js.map +1 -0
- package/lib/commonjs/models/Device.js +2 -0
- package/lib/commonjs/models/Device.js.map +1 -0
- package/lib/commonjs/models/Recording.js +2 -0
- package/lib/commonjs/models/Recording.js.map +1 -0
- package/lib/commonjs/models/Status.js +6 -0
- package/lib/commonjs/models/Status.js.map +1 -0
- package/lib/commonjs/models/index.js +39 -0
- package/lib/commonjs/models/index.js.map +1 -0
- package/lib/commonjs/protocol/ProtocolHandler.js +343 -0
- package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -0
- package/lib/commonjs/protocol/index.js +13 -0
- package/lib/commonjs/protocol/index.js.map +1 -0
- package/lib/commonjs/storage/StorageManager.js +333 -0
- package/lib/commonjs/storage/StorageManager.js.map +1 -0
- package/lib/commonjs/storage/index.js +19 -0
- package/lib/commonjs/storage/index.js.map +1 -0
- package/lib/commonjs/upload/S3Uploader.js +133 -0
- package/lib/commonjs/upload/S3Uploader.js.map +1 -0
- package/lib/commonjs/upload/UploadQueue.js +280 -0
- package/lib/commonjs/upload/UploadQueue.js.map +1 -0
- package/lib/commonjs/upload/index.js +20 -0
- package/lib/commonjs/upload/index.js.map +1 -0
- package/lib/commonjs/utils/errors.js +187 -0
- package/lib/commonjs/utils/errors.js.map +1 -0
- package/lib/commonjs/utils/index.js +40 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/utils/logger.js +135 -0
- package/lib/commonjs/utils/logger.js.map +1 -0
- package/lib/commonjs/utils/retry.js +160 -0
- package/lib/commonjs/utils/retry.js.map +1 -0
- package/lib/module/BotaClient.js +216 -0
- package/lib/module/BotaClient.js.map +1 -0
- package/lib/module/ble/BleManager.js +484 -0
- package/lib/module/ble/BleManager.js.map +1 -0
- package/lib/module/ble/constants.js +159 -0
- package/lib/module/ble/constants.js.map +1 -0
- package/lib/module/ble/index.js +8 -0
- package/lib/module/ble/index.js.map +1 -0
- package/lib/module/ble/parsers.js +328 -0
- package/lib/module/ble/parsers.js.map +1 -0
- package/lib/module/index.js +22 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/managers/DeviceManager.js +429 -0
- package/lib/module/managers/DeviceManager.js.map +1 -0
- package/lib/module/managers/OTAManager.js +219 -0
- package/lib/module/managers/OTAManager.js.map +1 -0
- package/lib/module/managers/RecordingManager.js +376 -0
- package/lib/module/managers/RecordingManager.js.map +1 -0
- package/lib/module/managers/index.js +8 -0
- package/lib/module/managers/index.js.map +1 -0
- package/lib/module/models/Device.js +2 -0
- package/lib/module/models/Device.js.map +1 -0
- package/lib/module/models/Recording.js +2 -0
- package/lib/module/models/Recording.js.map +1 -0
- package/lib/module/models/Status.js +2 -0
- package/lib/module/models/Status.js.map +1 -0
- package/lib/module/models/index.js +8 -0
- package/lib/module/models/index.js.map +1 -0
- package/lib/module/protocol/ProtocolHandler.js +336 -0
- package/lib/module/protocol/ProtocolHandler.js.map +1 -0
- package/lib/module/protocol/index.js +6 -0
- package/lib/module/protocol/index.js.map +1 -0
- package/lib/module/storage/StorageManager.js +324 -0
- package/lib/module/storage/StorageManager.js.map +1 -0
- package/lib/module/storage/index.js +6 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/upload/S3Uploader.js +126 -0
- package/lib/module/upload/S3Uploader.js.map +1 -0
- package/lib/module/upload/UploadQueue.js +272 -0
- package/lib/module/upload/UploadQueue.js.map +1 -0
- package/lib/module/upload/index.js +7 -0
- package/lib/module/upload/index.js.map +1 -0
- package/lib/module/utils/errors.js +173 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/index.js +8 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/logger.js +129 -0
- package/lib/module/utils/logger.js.map +1 -0
- package/lib/module/utils/retry.js +149 -0
- package/lib/module/utils/retry.js.map +1 -0
- package/lib/typescript/src/BotaClient.d.ts +77 -0
- package/lib/typescript/src/BotaClient.d.ts.map +1 -0
- package/lib/typescript/src/ble/BleManager.d.ts +111 -0
- package/lib/typescript/src/ble/BleManager.d.ts.map +1 -0
- package/lib/typescript/src/ble/constants.d.ts +111 -0
- package/lib/typescript/src/ble/constants.d.ts.map +1 -0
- package/lib/typescript/src/ble/index.d.ts +7 -0
- package/lib/typescript/src/ble/index.d.ts.map +1 -0
- package/lib/typescript/src/ble/parsers.d.ts +100 -0
- package/lib/typescript/src/ble/parsers.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +16 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts +84 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/OTAManager.d.ts +78 -0
- package/lib/typescript/src/managers/OTAManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts +90 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/index.d.ts +7 -0
- package/lib/typescript/src/managers/index.d.ts.map +1 -0
- package/lib/typescript/src/models/Device.d.ts +139 -0
- package/lib/typescript/src/models/Device.d.ts.map +1 -0
- package/lib/typescript/src/models/Recording.d.ts +110 -0
- package/lib/typescript/src/models/Recording.d.ts.map +1 -0
- package/lib/typescript/src/models/Status.d.ts +104 -0
- package/lib/typescript/src/models/Status.d.ts.map +1 -0
- package/lib/typescript/src/models/index.d.ts +7 -0
- package/lib/typescript/src/models/index.d.ts.map +1 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts +69 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -0
- package/lib/typescript/src/protocol/index.d.ts +5 -0
- package/lib/typescript/src/protocol/index.d.ts.map +1 -0
- package/lib/typescript/src/storage/StorageManager.d.ts +116 -0
- package/lib/typescript/src/storage/StorageManager.d.ts.map +1 -0
- package/lib/typescript/src/storage/index.d.ts +5 -0
- package/lib/typescript/src/storage/index.d.ts.map +1 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts +38 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts.map +1 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts +95 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts.map +1 -0
- package/lib/typescript/src/upload/index.d.ts +6 -0
- package/lib/typescript/src/upload/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/errors.d.ts +82 -0
- package/lib/typescript/src/utils/errors.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +7 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/logger.d.ts +68 -0
- package/lib/typescript/src/utils/logger.d.ts.map +1 -0
- package/lib/typescript/src/utils/retry.d.ts +53 -0
- package/lib/typescript/src/utils/retry.d.ts.map +1 -0
- package/package.json +95 -0
- package/src/BotaClient.ts +238 -0
- package/src/ble/BleManager.ts +573 -0
- package/src/ble/constants.ts +158 -0
- package/src/ble/index.ts +7 -0
- package/src/ble/parsers.ts +395 -0
- package/src/index.ts +64 -0
- package/src/managers/DeviceManager.ts +545 -0
- package/src/managers/OTAManager.ts +263 -0
- package/src/managers/RecordingManager.ts +434 -0
- package/src/managers/index.ts +12 -0
- package/src/models/Device.ts +164 -0
- package/src/models/Recording.ts +123 -0
- package/src/models/Status.ts +126 -0
- package/src/models/index.ts +7 -0
- package/src/protocol/ProtocolHandler.ts +459 -0
- package/src/protocol/index.ts +5 -0
- package/src/storage/StorageManager.ts +343 -0
- package/src/storage/index.ts +5 -0
- package/src/upload/S3Uploader.ts +164 -0
- package/src/upload/UploadQueue.ts +310 -0
- package/src/upload/index.ts +6 -0
- package/src/utils/errors.ts +310 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/logger.ts +137 -0
- package/src/utils/retry.ts +177 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
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.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 = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* BLE Service and Characteristic UUIDs for Bota devices
|
|
10
|
+
* Based on Device-App Protocol specification
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// Standard Bluetooth SIG Services
|
|
14
|
+
const SERVICE_DEVICE_INFO = exports.SERVICE_DEVICE_INFO = '180A';
|
|
15
|
+
const SERVICE_BATTERY = exports.SERVICE_BATTERY = '180F';
|
|
16
|
+
const SERVICE_NORDIC_DFU = exports.SERVICE_NORDIC_DFU = 'FE59';
|
|
17
|
+
|
|
18
|
+
// Bota Custom Services
|
|
19
|
+
const SERVICE_BOTA_AUDIO = exports.SERVICE_BOTA_AUDIO = 'B07A0001-0000-1000-8000-00805F9B34FB';
|
|
20
|
+
const SERVICE_BOTA_CONTROL = exports.SERVICE_BOTA_CONTROL = 'B07A0002-0000-1000-8000-00805F9B34FB';
|
|
21
|
+
const SERVICE_BOTA_PROVISIONING = exports.SERVICE_BOTA_PROVISIONING = 'B07A0003-0000-1000-8000-00805F9B34FB';
|
|
22
|
+
const SERVICE_BOTA_STORAGE = exports.SERVICE_BOTA_STORAGE = 'B07A0004-0000-1000-8000-00805F9B34FB';
|
|
23
|
+
|
|
24
|
+
// Device Information Service Characteristics (0x180A)
|
|
25
|
+
const CHAR_MANUFACTURER_NAME = exports.CHAR_MANUFACTURER_NAME = '2A29';
|
|
26
|
+
const CHAR_MODEL_NUMBER = exports.CHAR_MODEL_NUMBER = '2A24';
|
|
27
|
+
const CHAR_SERIAL_NUMBER = exports.CHAR_SERIAL_NUMBER = '2A25';
|
|
28
|
+
const CHAR_HARDWARE_REVISION = exports.CHAR_HARDWARE_REVISION = '2A27';
|
|
29
|
+
const CHAR_FIRMWARE_REVISION = exports.CHAR_FIRMWARE_REVISION = '2A26';
|
|
30
|
+
|
|
31
|
+
// Battery Service Characteristics (0x180F)
|
|
32
|
+
const CHAR_BATTERY_LEVEL = exports.CHAR_BATTERY_LEVEL = '2A19';
|
|
33
|
+
|
|
34
|
+
// Bota Audio Service Characteristics (B07A0001)
|
|
35
|
+
const CHAR_AUDIO_DATA = exports.CHAR_AUDIO_DATA = 'B07A0001-0001-1000-8000-00805F9B34FB';
|
|
36
|
+
const CHAR_AUDIO_CODEC = exports.CHAR_AUDIO_CODEC = 'B07A0001-0002-1000-8000-00805F9B34FB';
|
|
37
|
+
const CHAR_AUDIO_CONTROL = exports.CHAR_AUDIO_CONTROL = 'B07A0001-0003-1000-8000-00805F9B34FB';
|
|
38
|
+
|
|
39
|
+
// Bota Control Service Characteristics (B07A0002)
|
|
40
|
+
const CHAR_DEVICE_STATUS = exports.CHAR_DEVICE_STATUS = 'B07A0002-0001-1000-8000-00805F9B34FB';
|
|
41
|
+
const CHAR_RECORDING_CONTROL = exports.CHAR_RECORDING_CONTROL = 'B07A0002-0002-1000-8000-00805F9B34FB';
|
|
42
|
+
const CHAR_RECORDING_STATUS = exports.CHAR_RECORDING_STATUS = 'B07A0002-0003-1000-8000-00805F9B34FB';
|
|
43
|
+
const CHAR_TIME_SYNC = exports.CHAR_TIME_SYNC = 'B07A0002-0004-1000-8000-00805F9B34FB';
|
|
44
|
+
const CHAR_DEVICE_COMMAND = exports.CHAR_DEVICE_COMMAND = 'B07A0002-0005-1000-8000-00805F9B34FB';
|
|
45
|
+
|
|
46
|
+
// Bota Provisioning Service Characteristics (B07A0003)
|
|
47
|
+
const CHAR_PAIRING_STATE = exports.CHAR_PAIRING_STATE = 'B07A0003-0001-1000-8000-00805F9B34FB';
|
|
48
|
+
const CHAR_DEVICE_TOKEN = exports.CHAR_DEVICE_TOKEN = 'B07A0003-0002-1000-8000-00805F9B34FB';
|
|
49
|
+
const CHAR_API_ENDPOINT = exports.CHAR_API_ENDPOINT = 'B07A0003-0003-1000-8000-00805F9B34FB';
|
|
50
|
+
const CHAR_WIFI_CONFIG = exports.CHAR_WIFI_CONFIG = 'B07A0003-0004-1000-8000-00805F9B34FB';
|
|
51
|
+
const CHAR_PROVISIONING_RESULT = exports.CHAR_PROVISIONING_RESULT = 'B07A0003-0005-1000-8000-00805F9B34FB';
|
|
52
|
+
|
|
53
|
+
// Bota Storage Service Characteristics (B07A0004)
|
|
54
|
+
const CHAR_STORAGE_INFO = exports.CHAR_STORAGE_INFO = 'B07A0004-0001-1000-8000-00805F9B34FB';
|
|
55
|
+
const CHAR_RECORDING_LIST = exports.CHAR_RECORDING_LIST = 'B07A0004-0002-1000-8000-00805F9B34FB';
|
|
56
|
+
const CHAR_RECORDING_TRANSFER = exports.CHAR_RECORDING_TRANSFER = 'B07A0004-0003-1000-8000-00805F9B34FB';
|
|
57
|
+
const CHAR_TRANSFER_CONTROL = exports.CHAR_TRANSFER_CONTROL = 'B07A0004-0004-1000-8000-00805F9B34FB';
|
|
58
|
+
const CHAR_TRANSFER_STATUS = exports.CHAR_TRANSFER_STATUS = 'B07A0004-0005-1000-8000-00805F9B34FB';
|
|
59
|
+
|
|
60
|
+
// Device name prefixes for scanning
|
|
61
|
+
const DEVICE_NAME_PREFIX = exports.DEVICE_NAME_PREFIX = 'Bota-';
|
|
62
|
+
const DEVICE_NAME_PREFIX_PIN = exports.DEVICE_NAME_PREFIX_PIN = 'Bota-Pin-';
|
|
63
|
+
const DEVICE_NAME_PREFIX_PIN_4G = exports.DEVICE_NAME_PREFIX_PIN_4G = 'Bota-Pin4G-';
|
|
64
|
+
const DEVICE_NAME_PREFIX_NOTE = exports.DEVICE_NAME_PREFIX_NOTE = 'Bota-Note-';
|
|
65
|
+
|
|
66
|
+
// Manufacturer data byte positions
|
|
67
|
+
const MFG_DATA_DEVICE_TYPE = exports.MFG_DATA_DEVICE_TYPE = 0;
|
|
68
|
+
const MFG_DATA_FW_MAJOR = exports.MFG_DATA_FW_MAJOR = 1;
|
|
69
|
+
const MFG_DATA_FW_MINOR = exports.MFG_DATA_FW_MINOR = 2;
|
|
70
|
+
const MFG_DATA_PAIRING_STATE = exports.MFG_DATA_PAIRING_STATE = 3;
|
|
71
|
+
const MFG_DATA_BATTERY = exports.MFG_DATA_BATTERY = 4;
|
|
72
|
+
|
|
73
|
+
// Device type values in manufacturer data
|
|
74
|
+
const DEVICE_TYPE_PIN = exports.DEVICE_TYPE_PIN = 0x01;
|
|
75
|
+
const DEVICE_TYPE_PIN_4G = exports.DEVICE_TYPE_PIN_4G = 0x02;
|
|
76
|
+
const DEVICE_TYPE_NOTE = exports.DEVICE_TYPE_NOTE = 0x03;
|
|
77
|
+
|
|
78
|
+
// Pairing state values
|
|
79
|
+
const PAIRING_STATE_UNPAIRED = exports.PAIRING_STATE_UNPAIRED = 0x00;
|
|
80
|
+
const PAIRING_STATE_PAIRING = exports.PAIRING_STATE_PAIRING = 0x01;
|
|
81
|
+
const PAIRING_STATE_PAIRED = exports.PAIRING_STATE_PAIRED = 0x02;
|
|
82
|
+
const PAIRING_STATE_ERROR = exports.PAIRING_STATE_ERROR = 0x03;
|
|
83
|
+
|
|
84
|
+
// Provisioning result codes
|
|
85
|
+
const PROVISIONING_SUCCESS = exports.PROVISIONING_SUCCESS = 0x00;
|
|
86
|
+
const PROVISIONING_INVALID_TOKEN = exports.PROVISIONING_INVALID_TOKEN = 0x01;
|
|
87
|
+
const PROVISIONING_STORAGE_ERROR = exports.PROVISIONING_STORAGE_ERROR = 0x02;
|
|
88
|
+
const PROVISIONING_CHUNK_ERROR = exports.PROVISIONING_CHUNK_ERROR = 0x03;
|
|
89
|
+
|
|
90
|
+
// API endpoint values
|
|
91
|
+
const API_ENDPOINT_PRODUCTION = exports.API_ENDPOINT_PRODUCTION = 0x00;
|
|
92
|
+
const API_ENDPOINT_SANDBOX = exports.API_ENDPOINT_SANDBOX = 0x01;
|
|
93
|
+
|
|
94
|
+
// Transfer control commands
|
|
95
|
+
const TRANSFER_CMD_LIST = exports.TRANSFER_CMD_LIST = 0x01;
|
|
96
|
+
const TRANSFER_CMD_START = exports.TRANSFER_CMD_START = 0x02;
|
|
97
|
+
const TRANSFER_CMD_CONFIRM_SYNC = exports.TRANSFER_CMD_CONFIRM_SYNC = 0x07;
|
|
98
|
+
|
|
99
|
+
// Transfer packet types (Device → App)
|
|
100
|
+
const PACKET_TYPE_DATA = exports.PACKET_TYPE_DATA = 0x01;
|
|
101
|
+
const PACKET_TYPE_EOF = exports.PACKET_TYPE_EOF = 0x02;
|
|
102
|
+
const PACKET_TYPE_ERROR = exports.PACKET_TYPE_ERROR = 0xff;
|
|
103
|
+
|
|
104
|
+
// ACK types (App → Device)
|
|
105
|
+
const ACK_TYPE_ACK = exports.ACK_TYPE_ACK = 0x10;
|
|
106
|
+
const ACK_TYPE_NACK = exports.ACK_TYPE_NACK = 0x11;
|
|
107
|
+
const ACK_TYPE_ABORT = exports.ACK_TYPE_ABORT = 0x12;
|
|
108
|
+
|
|
109
|
+
// Device command values
|
|
110
|
+
const DEVICE_CMD_ENTER_DFU = exports.DEVICE_CMD_ENTER_DFU = 0x03;
|
|
111
|
+
|
|
112
|
+
// Device state values (from status)
|
|
113
|
+
const DEVICE_STATE_IDLE = exports.DEVICE_STATE_IDLE = 0x00;
|
|
114
|
+
const DEVICE_STATE_RECORDING = exports.DEVICE_STATE_RECORDING = 0x01;
|
|
115
|
+
const DEVICE_STATE_SYNCING = exports.DEVICE_STATE_SYNCING = 0x02;
|
|
116
|
+
const DEVICE_STATE_UPLOADING = exports.DEVICE_STATE_UPLOADING = 0x03;
|
|
117
|
+
const DEVICE_STATE_CHARGING = exports.DEVICE_STATE_CHARGING = 0x04;
|
|
118
|
+
const DEVICE_STATE_LOW_BATTERY = exports.DEVICE_STATE_LOW_BATTERY = 0x05;
|
|
119
|
+
const DEVICE_STATE_STORAGE_FULL = exports.DEVICE_STATE_STORAGE_FULL = 0x06;
|
|
120
|
+
const DEVICE_STATE_ERROR = exports.DEVICE_STATE_ERROR = 0xff;
|
|
121
|
+
|
|
122
|
+
// Device status flags (bitmask)
|
|
123
|
+
const FLAG_CHARGING = exports.FLAG_CHARGING = 1 << 0;
|
|
124
|
+
const FLAG_USB_CONNECTED = exports.FLAG_USB_CONNECTED = 1 << 1;
|
|
125
|
+
const FLAG_LOW_BATTERY = exports.FLAG_LOW_BATTERY = 1 << 2;
|
|
126
|
+
const FLAG_CRITICAL_BATTERY = exports.FLAG_CRITICAL_BATTERY = 1 << 3;
|
|
127
|
+
const FLAG_STORAGE_WARNING = exports.FLAG_STORAGE_WARNING = 1 << 4;
|
|
128
|
+
const FLAG_STORAGE_FULL = exports.FLAG_STORAGE_FULL = 1 << 5;
|
|
129
|
+
const FLAG_CELLULAR_AVAILABLE = exports.FLAG_CELLULAR_AVAILABLE = 1 << 6;
|
|
130
|
+
const FLAG_CELLULAR_ROAMING = exports.FLAG_CELLULAR_ROAMING = 1 << 7;
|
|
131
|
+
const FLAG_WIFI_CONNECTED = exports.FLAG_WIFI_CONNECTED = 1 << 8;
|
|
132
|
+
const FLAG_RECORDING_ACTIVE = exports.FLAG_RECORDING_ACTIVE = 1 << 9;
|
|
133
|
+
const FLAG_SYNC_REQUIRED = exports.FLAG_SYNC_REQUIRED = 1 << 10;
|
|
134
|
+
const FLAG_UPDATE_AVAILABLE = exports.FLAG_UPDATE_AVAILABLE = 1 << 11;
|
|
135
|
+
|
|
136
|
+
// Audio codec values
|
|
137
|
+
const CODEC_PCM_16K = exports.CODEC_PCM_16K = 0x00;
|
|
138
|
+
const CODEC_PCM_8K = exports.CODEC_PCM_8K = 0x01;
|
|
139
|
+
const CODEC_OPUS_16K = exports.CODEC_OPUS_16K = 0x10;
|
|
140
|
+
const CODEC_OPUS_8K = exports.CODEC_OPUS_8K = 0x11;
|
|
141
|
+
|
|
142
|
+
// BLE error codes
|
|
143
|
+
const BLE_ERROR_SUCCESS = exports.BLE_ERROR_SUCCESS = 0x00;
|
|
144
|
+
const BLE_ERROR_INVALID_COMMAND = exports.BLE_ERROR_INVALID_COMMAND = 0x01;
|
|
145
|
+
const BLE_ERROR_INVALID_STATE = exports.BLE_ERROR_INVALID_STATE = 0x02;
|
|
146
|
+
const BLE_ERROR_INVALID_PARAMETER = exports.BLE_ERROR_INVALID_PARAMETER = 0x03;
|
|
147
|
+
const BLE_ERROR_STORAGE_FULL = exports.BLE_ERROR_STORAGE_FULL = 0x10;
|
|
148
|
+
const BLE_ERROR_RECORDING_NOT_FOUND = exports.BLE_ERROR_RECORDING_NOT_FOUND = 0x11;
|
|
149
|
+
const BLE_ERROR_TRANSFER_FAILED = exports.BLE_ERROR_TRANSFER_FAILED = 0x12;
|
|
150
|
+
const BLE_ERROR_TOKEN_INVALID = exports.BLE_ERROR_TOKEN_INVALID = 0x20;
|
|
151
|
+
const BLE_ERROR_TOKEN_EXPIRED = exports.BLE_ERROR_TOKEN_EXPIRED = 0x21;
|
|
152
|
+
const BLE_ERROR_NETWORK_ERROR = exports.BLE_ERROR_NETWORK_ERROR = 0x30;
|
|
153
|
+
const BLE_ERROR_UPLOAD_FAILED = exports.BLE_ERROR_UPLOAD_FAILED = 0x31;
|
|
154
|
+
const BLE_ERROR_UNKNOWN = exports.BLE_ERROR_UNKNOWN = 0xff;
|
|
155
|
+
|
|
156
|
+
// Timeouts (ms)
|
|
157
|
+
const SCAN_TIMEOUT = exports.SCAN_TIMEOUT = 30000;
|
|
158
|
+
const CONNECTION_TIMEOUT = exports.CONNECTION_TIMEOUT = 30000;
|
|
159
|
+
const OPERATION_TIMEOUT = exports.OPERATION_TIMEOUT = 10000;
|
|
160
|
+
const TRANSFER_PACKET_TIMEOUT = exports.TRANSFER_PACKET_TIMEOUT = 2000;
|
|
161
|
+
|
|
162
|
+
// Transfer settings
|
|
163
|
+
const TRANSFER_WINDOW_SIZE = exports.TRANSFER_WINDOW_SIZE = 4;
|
|
164
|
+
const DEFAULT_MTU = exports.DEFAULT_MTU = 23;
|
|
165
|
+
const MAX_MTU = exports.MAX_MTU = 512;
|
|
166
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +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","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":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
BleManager: true,
|
|
8
|
+
getBleManager: true,
|
|
9
|
+
resetBleManager: true
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "BleManager", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () {
|
|
14
|
+
return _BleManager.BleManager;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, "getBleManager", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () {
|
|
20
|
+
return _BleManager.getBleManager;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, "resetBleManager", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () {
|
|
26
|
+
return _BleManager.resetBleManager;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
var _constants = require("./constants");
|
|
30
|
+
Object.keys(_constants).forEach(function (key) {
|
|
31
|
+
if (key === "default" || key === "__esModule") return;
|
|
32
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
33
|
+
if (key in exports && exports[key] === _constants[key]) return;
|
|
34
|
+
Object.defineProperty(exports, key, {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get: function () {
|
|
37
|
+
return _constants[key];
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
var _parsers = require("./parsers");
|
|
42
|
+
Object.keys(_parsers).forEach(function (key) {
|
|
43
|
+
if (key === "default" || key === "__esModule") return;
|
|
44
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
45
|
+
if (key in exports && exports[key] === _parsers[key]) return;
|
|
46
|
+
Object.defineProperty(exports, key, {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
get: function () {
|
|
49
|
+
return _parsers[key];
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
var _BleManager = require("./BleManager");
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_constants","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_parsers","_BleManager"],"sourceRoot":"../../../src","sources":["ble/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,QAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,QAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,QAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,QAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,WAAA,GAAAd,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createAckPacket = createAckPacket;
|
|
7
|
+
exports.createTimeSyncData = createTimeSyncData;
|
|
8
|
+
exports.createTransferCommand = createTransferCommand;
|
|
9
|
+
exports.parseAudioCodec = parseAudioCodec;
|
|
10
|
+
exports.parseDeviceFlags = parseDeviceFlags;
|
|
11
|
+
exports.parseDeviceState = parseDeviceState;
|
|
12
|
+
exports.parseDeviceStatus = parseDeviceStatus;
|
|
13
|
+
exports.parseDeviceType = parseDeviceType;
|
|
14
|
+
exports.parseFirmwareVersion = parseFirmwareVersion;
|
|
15
|
+
exports.parsePairingState = parsePairingState;
|
|
16
|
+
exports.parseRecordingList = parseRecordingList;
|
|
17
|
+
exports.parseStorageInfo = parseStorageInfo;
|
|
18
|
+
exports.parseTransferPacket = parseTransferPacket;
|
|
19
|
+
var _buffer = require("buffer");
|
|
20
|
+
var _constants = require("./constants");
|
|
21
|
+
/**
|
|
22
|
+
* BLE data parsers for Bota device protocol
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Parse device type from manufacturer data byte
|
|
27
|
+
*/
|
|
28
|
+
function parseDeviceType(byte) {
|
|
29
|
+
switch (byte) {
|
|
30
|
+
case _constants.DEVICE_TYPE_PIN:
|
|
31
|
+
return 'bota_pin';
|
|
32
|
+
case _constants.DEVICE_TYPE_PIN_4G:
|
|
33
|
+
return 'bota_pin_4g';
|
|
34
|
+
case _constants.DEVICE_TYPE_NOTE:
|
|
35
|
+
return 'bota_note';
|
|
36
|
+
default:
|
|
37
|
+
return 'bota_pin';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Parse pairing state from manufacturer data byte
|
|
43
|
+
*/
|
|
44
|
+
function parsePairingState(byte) {
|
|
45
|
+
switch (byte) {
|
|
46
|
+
case _constants.PAIRING_STATE_UNPAIRED:
|
|
47
|
+
return 'unpaired';
|
|
48
|
+
case _constants.PAIRING_STATE_PAIRING:
|
|
49
|
+
return 'pairing';
|
|
50
|
+
case _constants.PAIRING_STATE_PAIRED:
|
|
51
|
+
return 'paired';
|
|
52
|
+
case _constants.PAIRING_STATE_ERROR:
|
|
53
|
+
return 'error';
|
|
54
|
+
default:
|
|
55
|
+
return 'unpaired';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Parse firmware version from major/minor bytes
|
|
61
|
+
*/
|
|
62
|
+
function parseFirmwareVersion(major, minor) {
|
|
63
|
+
return `${major}.${minor}.0`;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Parse device state from status byte
|
|
68
|
+
*/
|
|
69
|
+
function parseDeviceState(byte) {
|
|
70
|
+
switch (byte) {
|
|
71
|
+
case _constants.DEVICE_STATE_IDLE:
|
|
72
|
+
return 'idle';
|
|
73
|
+
case _constants.DEVICE_STATE_RECORDING:
|
|
74
|
+
return 'recording';
|
|
75
|
+
case _constants.DEVICE_STATE_SYNCING:
|
|
76
|
+
return 'syncing';
|
|
77
|
+
case _constants.DEVICE_STATE_UPLOADING:
|
|
78
|
+
return 'uploading';
|
|
79
|
+
case _constants.DEVICE_STATE_CHARGING:
|
|
80
|
+
return 'charging';
|
|
81
|
+
case _constants.DEVICE_STATE_LOW_BATTERY:
|
|
82
|
+
return 'lowBattery';
|
|
83
|
+
case _constants.DEVICE_STATE_STORAGE_FULL:
|
|
84
|
+
return 'storageFull';
|
|
85
|
+
case _constants.DEVICE_STATE_ERROR:
|
|
86
|
+
return 'error';
|
|
87
|
+
default:
|
|
88
|
+
return 'idle';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Parse device flags from 16-bit value
|
|
94
|
+
*/
|
|
95
|
+
function parseDeviceFlags(value) {
|
|
96
|
+
return {
|
|
97
|
+
charging: (value & _constants.FLAG_CHARGING) !== 0,
|
|
98
|
+
usbConnected: (value & _constants.FLAG_USB_CONNECTED) !== 0,
|
|
99
|
+
lowBattery: (value & _constants.FLAG_LOW_BATTERY) !== 0,
|
|
100
|
+
criticalBattery: (value & _constants.FLAG_CRITICAL_BATTERY) !== 0,
|
|
101
|
+
storageWarning: (value & _constants.FLAG_STORAGE_WARNING) !== 0,
|
|
102
|
+
storageFull: (value & _constants.FLAG_STORAGE_FULL) !== 0,
|
|
103
|
+
cellularAvailable: (value & _constants.FLAG_CELLULAR_AVAILABLE) !== 0,
|
|
104
|
+
cellularRoaming: (value & _constants.FLAG_CELLULAR_ROAMING) !== 0,
|
|
105
|
+
wifiConnected: (value & _constants.FLAG_WIFI_CONNECTED) !== 0,
|
|
106
|
+
recordingActive: (value & _constants.FLAG_RECORDING_ACTIVE) !== 0,
|
|
107
|
+
syncRequired: (value & _constants.FLAG_SYNC_REQUIRED) !== 0,
|
|
108
|
+
updateAvailable: (value & _constants.FLAG_UPDATE_AVAILABLE) !== 0
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Parse device status from 16-byte characteristic value
|
|
114
|
+
*
|
|
115
|
+
* Format:
|
|
116
|
+
* Bytes 0-3: Timestamp (Unix seconds)
|
|
117
|
+
* Byte 4: Battery % (0-100)
|
|
118
|
+
* Byte 5: State
|
|
119
|
+
* Byte 6: Storage % (0-100)
|
|
120
|
+
* Byte 7: Signal (0-5)
|
|
121
|
+
* Bytes 8-9: Pending recordings count
|
|
122
|
+
* Bytes 10-13: Last sync time (Unix seconds)
|
|
123
|
+
* Bytes 14-15: Flags
|
|
124
|
+
*/
|
|
125
|
+
function parseDeviceStatus(data) {
|
|
126
|
+
if (data.length < 16) {
|
|
127
|
+
throw new Error(`Invalid status data length: ${data.length}`);
|
|
128
|
+
}
|
|
129
|
+
const timestamp = data.readUInt32LE(0);
|
|
130
|
+
const batteryLevel = data.readUInt8(4);
|
|
131
|
+
const state = parseDeviceState(data.readUInt8(5));
|
|
132
|
+
const storageUsedPercent = data.readUInt8(6);
|
|
133
|
+
const signalStrength = data.readUInt8(7);
|
|
134
|
+
const pendingRecordings = data.readUInt16LE(8);
|
|
135
|
+
const lastSyncTimestamp = data.readUInt32LE(10);
|
|
136
|
+
const flagsValue = data.readUInt16LE(14);
|
|
137
|
+
const flags = parseDeviceFlags(flagsValue);
|
|
138
|
+
return {
|
|
139
|
+
batteryLevel,
|
|
140
|
+
storageUsedPercent,
|
|
141
|
+
state,
|
|
142
|
+
pendingRecordings,
|
|
143
|
+
lastSyncAt: lastSyncTimestamp > 0 ? new Date(lastSyncTimestamp * 1000) : null,
|
|
144
|
+
signalStrength,
|
|
145
|
+
flags,
|
|
146
|
+
timestamp
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Parse storage info from 16-byte characteristic value
|
|
152
|
+
*
|
|
153
|
+
* Format:
|
|
154
|
+
* Bytes 0-3: Total storage (KB)
|
|
155
|
+
* Bytes 4-7: Used storage (KB)
|
|
156
|
+
* Bytes 8-9: Total recording count
|
|
157
|
+
* Bytes 10-11: Pending sync count
|
|
158
|
+
* Bytes 12-15: Reserved
|
|
159
|
+
*/
|
|
160
|
+
function parseStorageInfo(data) {
|
|
161
|
+
if (data.length < 12) {
|
|
162
|
+
throw new Error(`Invalid storage info length: ${data.length}`);
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
totalKb: data.readUInt32LE(0),
|
|
166
|
+
usedKb: data.readUInt32LE(4),
|
|
167
|
+
totalRecordings: data.readUInt16LE(8),
|
|
168
|
+
pendingSyncCount: data.readUInt16LE(10)
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Parse audio codec from byte value
|
|
174
|
+
*/
|
|
175
|
+
function parseAudioCodec(byte) {
|
|
176
|
+
switch (byte) {
|
|
177
|
+
case _constants.CODEC_PCM_16K:
|
|
178
|
+
return 'pcm_16k';
|
|
179
|
+
case _constants.CODEC_PCM_8K:
|
|
180
|
+
return 'pcm_8k';
|
|
181
|
+
case _constants.CODEC_OPUS_16K:
|
|
182
|
+
return 'opus_16k';
|
|
183
|
+
case _constants.CODEC_OPUS_8K:
|
|
184
|
+
return 'opus_8k';
|
|
185
|
+
default:
|
|
186
|
+
return 'opus_16k';
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Parse recording list from notification data
|
|
192
|
+
* Each recording entry is typically 24 bytes:
|
|
193
|
+
* - UUID: 16 bytes
|
|
194
|
+
* - Timestamp: 4 bytes (Unix seconds)
|
|
195
|
+
* - Duration: 2 bytes (seconds)
|
|
196
|
+
* - Size: 2 bytes (KB, or needs scaling)
|
|
197
|
+
*/
|
|
198
|
+
function parseRecordingList(data) {
|
|
199
|
+
const recordings = [];
|
|
200
|
+
const entrySize = 24;
|
|
201
|
+
|
|
202
|
+
// First byte might be count
|
|
203
|
+
let offset = 0;
|
|
204
|
+
if (data.length > 0 && data.length % entrySize !== 0) {
|
|
205
|
+
// Skip count byte
|
|
206
|
+
offset = 1;
|
|
207
|
+
}
|
|
208
|
+
while (offset + entrySize <= data.length) {
|
|
209
|
+
const uuid = formatUuid(data.slice(offset, offset + 16));
|
|
210
|
+
const timestamp = data.readUInt32LE(offset + 16);
|
|
211
|
+
const durationSeconds = data.readUInt16LE(offset + 20);
|
|
212
|
+
const sizeKb = data.readUInt16LE(offset + 22);
|
|
213
|
+
recordings.push({
|
|
214
|
+
uuid,
|
|
215
|
+
startedAt: new Date(timestamp * 1000),
|
|
216
|
+
durationMs: durationSeconds * 1000,
|
|
217
|
+
fileSizeBytes: sizeKb * 1024,
|
|
218
|
+
codec: 'opus_16k' // Default, actual codec read separately
|
|
219
|
+
});
|
|
220
|
+
offset += entrySize;
|
|
221
|
+
}
|
|
222
|
+
return recordings;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Format 16-byte UUID buffer to string
|
|
227
|
+
*/
|
|
228
|
+
function formatUuid(data) {
|
|
229
|
+
const hex = data.toString('hex');
|
|
230
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Parse transfer packet from device
|
|
235
|
+
*
|
|
236
|
+
* Format:
|
|
237
|
+
* Byte 0: Packet type (0x01=data, 0x02=EOF, 0xFF=error)
|
|
238
|
+
* Bytes 1-2: Sequence number
|
|
239
|
+
* Bytes 3-4: Chunk size (data) or CRC32 start (EOF)
|
|
240
|
+
* Bytes 5+: Audio data (data) or CRC32 remainder (EOF)
|
|
241
|
+
*/
|
|
242
|
+
function parseTransferPacket(data) {
|
|
243
|
+
if (data.length < 3) {
|
|
244
|
+
throw new Error(`Invalid transfer packet length: ${data.length}`);
|
|
245
|
+
}
|
|
246
|
+
const type = data.readUInt8(0);
|
|
247
|
+
const sequenceNumber = data.readUInt16LE(1);
|
|
248
|
+
switch (type) {
|
|
249
|
+
case _constants.PACKET_TYPE_DATA:
|
|
250
|
+
return {
|
|
251
|
+
type: 'data',
|
|
252
|
+
sequenceNumber,
|
|
253
|
+
data: data.slice(5) // Skip header
|
|
254
|
+
};
|
|
255
|
+
case _constants.PACKET_TYPE_EOF:
|
|
256
|
+
return {
|
|
257
|
+
type: 'eof',
|
|
258
|
+
sequenceNumber,
|
|
259
|
+
checksum: data.readUInt32LE(3)
|
|
260
|
+
};
|
|
261
|
+
case _constants.PACKET_TYPE_ERROR:
|
|
262
|
+
return {
|
|
263
|
+
type: 'error',
|
|
264
|
+
sequenceNumber,
|
|
265
|
+
errorCode: data.length > 3 ? data.readUInt8(3) : 0xff
|
|
266
|
+
};
|
|
267
|
+
default:
|
|
268
|
+
throw new Error(`Unknown packet type: ${type}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Create time sync data buffer
|
|
274
|
+
*
|
|
275
|
+
* Format:
|
|
276
|
+
* Bytes 0-3: Unix timestamp (seconds)
|
|
277
|
+
* Bytes 4-5: Milliseconds (0-999)
|
|
278
|
+
* Bytes 6-7: Timezone offset (signed, minutes from UTC)
|
|
279
|
+
*/
|
|
280
|
+
function createTimeSyncData(date = new Date()) {
|
|
281
|
+
const buffer = _buffer.Buffer.alloc(8);
|
|
282
|
+
const unixSeconds = Math.floor(date.getTime() / 1000);
|
|
283
|
+
const milliseconds = date.getMilliseconds();
|
|
284
|
+
const timezoneOffset = -date.getTimezoneOffset(); // getTimezoneOffset returns opposite sign
|
|
285
|
+
|
|
286
|
+
buffer.writeUInt32LE(unixSeconds, 0);
|
|
287
|
+
buffer.writeUInt16LE(milliseconds, 4);
|
|
288
|
+
buffer.writeInt16LE(timezoneOffset, 6);
|
|
289
|
+
return buffer;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Create ACK packet for transfer
|
|
294
|
+
*
|
|
295
|
+
* Format:
|
|
296
|
+
* Byte 0: ACK type (0x10=ACK, 0x11=NACK, 0x12=Abort)
|
|
297
|
+
* Bytes 1-2: Sequence number
|
|
298
|
+
*/
|
|
299
|
+
function createAckPacket(ackType, sequenceNumber) {
|
|
300
|
+
const buffer = _buffer.Buffer.alloc(3);
|
|
301
|
+
switch (ackType) {
|
|
302
|
+
case 'ack':
|
|
303
|
+
buffer.writeUInt8(0x10, 0);
|
|
304
|
+
break;
|
|
305
|
+
case 'nack':
|
|
306
|
+
buffer.writeUInt8(0x11, 0);
|
|
307
|
+
break;
|
|
308
|
+
case 'abort':
|
|
309
|
+
buffer.writeUInt8(0x12, 0);
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
buffer.writeUInt16LE(sequenceNumber, 1);
|
|
313
|
+
return buffer;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Create transfer control command
|
|
318
|
+
*
|
|
319
|
+
* Format:
|
|
320
|
+
* Byte 0: Command (0x01=list, 0x02=start, 0x07=confirm)
|
|
321
|
+
* Bytes 1+: Recording UUID (for start/confirm)
|
|
322
|
+
*/
|
|
323
|
+
function createTransferCommand(command, recordingUuid) {
|
|
324
|
+
let cmdByte;
|
|
325
|
+
switch (command) {
|
|
326
|
+
case 'list':
|
|
327
|
+
cmdByte = 0x01;
|
|
328
|
+
break;
|
|
329
|
+
case 'start':
|
|
330
|
+
cmdByte = 0x02;
|
|
331
|
+
break;
|
|
332
|
+
case 'confirm':
|
|
333
|
+
cmdByte = 0x07;
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
if (recordingUuid) {
|
|
337
|
+
const uuidBuffer = _buffer.Buffer.from(recordingUuid.replace(/-/g, ''), 'hex');
|
|
338
|
+
const buffer = _buffer.Buffer.alloc(1 + uuidBuffer.length);
|
|
339
|
+
buffer.writeUInt8(cmdByte, 0);
|
|
340
|
+
uuidBuffer.copy(buffer, 1);
|
|
341
|
+
return buffer;
|
|
342
|
+
}
|
|
343
|
+
return _buffer.Buffer.from([cmdByte]);
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=parsers.js.map
|
|
@@ -0,0 +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":[]}
|