@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.
Files changed (177) hide show
  1. package/README.md +279 -0
  2. package/lib/commonjs/BotaClient.js +223 -0
  3. package/lib/commonjs/BotaClient.js.map +1 -0
  4. package/lib/commonjs/ble/BleManager.js +494 -0
  5. package/lib/commonjs/ble/BleManager.js.map +1 -0
  6. package/lib/commonjs/ble/constants.js +166 -0
  7. package/lib/commonjs/ble/constants.js.map +1 -0
  8. package/lib/commonjs/ble/index.js +54 -0
  9. package/lib/commonjs/ble/index.js.map +1 -0
  10. package/lib/commonjs/ble/parsers.js +345 -0
  11. package/lib/commonjs/ble/parsers.js.map +1 -0
  12. package/lib/commonjs/index.js +81 -0
  13. package/lib/commonjs/index.js.map +1 -0
  14. package/lib/commonjs/managers/DeviceManager.js +437 -0
  15. package/lib/commonjs/managers/DeviceManager.js.map +1 -0
  16. package/lib/commonjs/managers/OTAManager.js +227 -0
  17. package/lib/commonjs/managers/OTAManager.js.map +1 -0
  18. package/lib/commonjs/managers/RecordingManager.js +384 -0
  19. package/lib/commonjs/managers/RecordingManager.js.map +1 -0
  20. package/lib/commonjs/managers/index.js +27 -0
  21. package/lib/commonjs/managers/index.js.map +1 -0
  22. package/lib/commonjs/models/Device.js +2 -0
  23. package/lib/commonjs/models/Device.js.map +1 -0
  24. package/lib/commonjs/models/Recording.js +2 -0
  25. package/lib/commonjs/models/Recording.js.map +1 -0
  26. package/lib/commonjs/models/Status.js +6 -0
  27. package/lib/commonjs/models/Status.js.map +1 -0
  28. package/lib/commonjs/models/index.js +39 -0
  29. package/lib/commonjs/models/index.js.map +1 -0
  30. package/lib/commonjs/protocol/ProtocolHandler.js +343 -0
  31. package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -0
  32. package/lib/commonjs/protocol/index.js +13 -0
  33. package/lib/commonjs/protocol/index.js.map +1 -0
  34. package/lib/commonjs/storage/StorageManager.js +333 -0
  35. package/lib/commonjs/storage/StorageManager.js.map +1 -0
  36. package/lib/commonjs/storage/index.js +19 -0
  37. package/lib/commonjs/storage/index.js.map +1 -0
  38. package/lib/commonjs/upload/S3Uploader.js +133 -0
  39. package/lib/commonjs/upload/S3Uploader.js.map +1 -0
  40. package/lib/commonjs/upload/UploadQueue.js +280 -0
  41. package/lib/commonjs/upload/UploadQueue.js.map +1 -0
  42. package/lib/commonjs/upload/index.js +20 -0
  43. package/lib/commonjs/upload/index.js.map +1 -0
  44. package/lib/commonjs/utils/errors.js +187 -0
  45. package/lib/commonjs/utils/errors.js.map +1 -0
  46. package/lib/commonjs/utils/index.js +40 -0
  47. package/lib/commonjs/utils/index.js.map +1 -0
  48. package/lib/commonjs/utils/logger.js +135 -0
  49. package/lib/commonjs/utils/logger.js.map +1 -0
  50. package/lib/commonjs/utils/retry.js +160 -0
  51. package/lib/commonjs/utils/retry.js.map +1 -0
  52. package/lib/module/BotaClient.js +216 -0
  53. package/lib/module/BotaClient.js.map +1 -0
  54. package/lib/module/ble/BleManager.js +484 -0
  55. package/lib/module/ble/BleManager.js.map +1 -0
  56. package/lib/module/ble/constants.js +159 -0
  57. package/lib/module/ble/constants.js.map +1 -0
  58. package/lib/module/ble/index.js +8 -0
  59. package/lib/module/ble/index.js.map +1 -0
  60. package/lib/module/ble/parsers.js +328 -0
  61. package/lib/module/ble/parsers.js.map +1 -0
  62. package/lib/module/index.js +22 -0
  63. package/lib/module/index.js.map +1 -0
  64. package/lib/module/managers/DeviceManager.js +429 -0
  65. package/lib/module/managers/DeviceManager.js.map +1 -0
  66. package/lib/module/managers/OTAManager.js +219 -0
  67. package/lib/module/managers/OTAManager.js.map +1 -0
  68. package/lib/module/managers/RecordingManager.js +376 -0
  69. package/lib/module/managers/RecordingManager.js.map +1 -0
  70. package/lib/module/managers/index.js +8 -0
  71. package/lib/module/managers/index.js.map +1 -0
  72. package/lib/module/models/Device.js +2 -0
  73. package/lib/module/models/Device.js.map +1 -0
  74. package/lib/module/models/Recording.js +2 -0
  75. package/lib/module/models/Recording.js.map +1 -0
  76. package/lib/module/models/Status.js +2 -0
  77. package/lib/module/models/Status.js.map +1 -0
  78. package/lib/module/models/index.js +8 -0
  79. package/lib/module/models/index.js.map +1 -0
  80. package/lib/module/protocol/ProtocolHandler.js +336 -0
  81. package/lib/module/protocol/ProtocolHandler.js.map +1 -0
  82. package/lib/module/protocol/index.js +6 -0
  83. package/lib/module/protocol/index.js.map +1 -0
  84. package/lib/module/storage/StorageManager.js +324 -0
  85. package/lib/module/storage/StorageManager.js.map +1 -0
  86. package/lib/module/storage/index.js +6 -0
  87. package/lib/module/storage/index.js.map +1 -0
  88. package/lib/module/upload/S3Uploader.js +126 -0
  89. package/lib/module/upload/S3Uploader.js.map +1 -0
  90. package/lib/module/upload/UploadQueue.js +272 -0
  91. package/lib/module/upload/UploadQueue.js.map +1 -0
  92. package/lib/module/upload/index.js +7 -0
  93. package/lib/module/upload/index.js.map +1 -0
  94. package/lib/module/utils/errors.js +173 -0
  95. package/lib/module/utils/errors.js.map +1 -0
  96. package/lib/module/utils/index.js +8 -0
  97. package/lib/module/utils/index.js.map +1 -0
  98. package/lib/module/utils/logger.js +129 -0
  99. package/lib/module/utils/logger.js.map +1 -0
  100. package/lib/module/utils/retry.js +149 -0
  101. package/lib/module/utils/retry.js.map +1 -0
  102. package/lib/typescript/src/BotaClient.d.ts +77 -0
  103. package/lib/typescript/src/BotaClient.d.ts.map +1 -0
  104. package/lib/typescript/src/ble/BleManager.d.ts +111 -0
  105. package/lib/typescript/src/ble/BleManager.d.ts.map +1 -0
  106. package/lib/typescript/src/ble/constants.d.ts +111 -0
  107. package/lib/typescript/src/ble/constants.d.ts.map +1 -0
  108. package/lib/typescript/src/ble/index.d.ts +7 -0
  109. package/lib/typescript/src/ble/index.d.ts.map +1 -0
  110. package/lib/typescript/src/ble/parsers.d.ts +100 -0
  111. package/lib/typescript/src/ble/parsers.d.ts.map +1 -0
  112. package/lib/typescript/src/index.d.ts +16 -0
  113. package/lib/typescript/src/index.d.ts.map +1 -0
  114. package/lib/typescript/src/managers/DeviceManager.d.ts +84 -0
  115. package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -0
  116. package/lib/typescript/src/managers/OTAManager.d.ts +78 -0
  117. package/lib/typescript/src/managers/OTAManager.d.ts.map +1 -0
  118. package/lib/typescript/src/managers/RecordingManager.d.ts +90 -0
  119. package/lib/typescript/src/managers/RecordingManager.d.ts.map +1 -0
  120. package/lib/typescript/src/managers/index.d.ts +7 -0
  121. package/lib/typescript/src/managers/index.d.ts.map +1 -0
  122. package/lib/typescript/src/models/Device.d.ts +139 -0
  123. package/lib/typescript/src/models/Device.d.ts.map +1 -0
  124. package/lib/typescript/src/models/Recording.d.ts +110 -0
  125. package/lib/typescript/src/models/Recording.d.ts.map +1 -0
  126. package/lib/typescript/src/models/Status.d.ts +104 -0
  127. package/lib/typescript/src/models/Status.d.ts.map +1 -0
  128. package/lib/typescript/src/models/index.d.ts +7 -0
  129. package/lib/typescript/src/models/index.d.ts.map +1 -0
  130. package/lib/typescript/src/protocol/ProtocolHandler.d.ts +69 -0
  131. package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -0
  132. package/lib/typescript/src/protocol/index.d.ts +5 -0
  133. package/lib/typescript/src/protocol/index.d.ts.map +1 -0
  134. package/lib/typescript/src/storage/StorageManager.d.ts +116 -0
  135. package/lib/typescript/src/storage/StorageManager.d.ts.map +1 -0
  136. package/lib/typescript/src/storage/index.d.ts +5 -0
  137. package/lib/typescript/src/storage/index.d.ts.map +1 -0
  138. package/lib/typescript/src/upload/S3Uploader.d.ts +38 -0
  139. package/lib/typescript/src/upload/S3Uploader.d.ts.map +1 -0
  140. package/lib/typescript/src/upload/UploadQueue.d.ts +95 -0
  141. package/lib/typescript/src/upload/UploadQueue.d.ts.map +1 -0
  142. package/lib/typescript/src/upload/index.d.ts +6 -0
  143. package/lib/typescript/src/upload/index.d.ts.map +1 -0
  144. package/lib/typescript/src/utils/errors.d.ts +82 -0
  145. package/lib/typescript/src/utils/errors.d.ts.map +1 -0
  146. package/lib/typescript/src/utils/index.d.ts +7 -0
  147. package/lib/typescript/src/utils/index.d.ts.map +1 -0
  148. package/lib/typescript/src/utils/logger.d.ts +68 -0
  149. package/lib/typescript/src/utils/logger.d.ts.map +1 -0
  150. package/lib/typescript/src/utils/retry.d.ts +53 -0
  151. package/lib/typescript/src/utils/retry.d.ts.map +1 -0
  152. package/package.json +95 -0
  153. package/src/BotaClient.ts +238 -0
  154. package/src/ble/BleManager.ts +573 -0
  155. package/src/ble/constants.ts +158 -0
  156. package/src/ble/index.ts +7 -0
  157. package/src/ble/parsers.ts +395 -0
  158. package/src/index.ts +64 -0
  159. package/src/managers/DeviceManager.ts +545 -0
  160. package/src/managers/OTAManager.ts +263 -0
  161. package/src/managers/RecordingManager.ts +434 -0
  162. package/src/managers/index.ts +12 -0
  163. package/src/models/Device.ts +164 -0
  164. package/src/models/Recording.ts +123 -0
  165. package/src/models/Status.ts +126 -0
  166. package/src/models/index.ts +7 -0
  167. package/src/protocol/ProtocolHandler.ts +459 -0
  168. package/src/protocol/index.ts +5 -0
  169. package/src/storage/StorageManager.ts +343 -0
  170. package/src/storage/index.ts +5 -0
  171. package/src/upload/S3Uploader.ts +164 -0
  172. package/src/upload/UploadQueue.ts +310 -0
  173. package/src/upload/index.ts +6 -0
  174. package/src/utils/errors.ts +310 -0
  175. package/src/utils/index.ts +7 -0
  176. package/src/utils/logger.ts +137 -0
  177. 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":[]}