@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 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["models/Recording.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=Status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["models/Status.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _Device = require("./Device");
7
+ Object.keys(_Device).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _Device[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _Device[key];
14
+ }
15
+ });
16
+ });
17
+ var _Recording = require("./Recording");
18
+ Object.keys(_Recording).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _Recording[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _Recording[key];
25
+ }
26
+ });
27
+ });
28
+ var _Status = require("./Status");
29
+ Object.keys(_Status).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _Status[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _Status[key];
36
+ }
37
+ });
38
+ });
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Device","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_Recording","_Status"],"sourceRoot":"../../../src","sources":["models/index.ts"],"mappings":";;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,OAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,OAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,OAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,OAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ProtocolHandler = void 0;
7
+ var _buffer = require("buffer");
8
+ var _BleManager = require("../ble/BleManager");
9
+ var _constants = require("../ble/constants");
10
+ var _parsers = require("../ble/parsers");
11
+ var _errors = require("../utils/errors");
12
+ var _logger = require("../utils/logger");
13
+ /**
14
+ * Protocol Handler - Implements Device-App Protocol for recording transfer
15
+ */
16
+
17
+ const log = _logger.logger.tag('ProtocolHandler');
18
+
19
+ /**
20
+ * Transfer state for tracking ongoing transfers
21
+ */
22
+
23
+ /**
24
+ * Transfer progress callback
25
+ */
26
+
27
+ /**
28
+ * Protocol Handler class
29
+ */
30
+ class ProtocolHandler {
31
+ activeTransfers = new Map();
32
+ constructor() {
33
+ this.bleManager = (0, _BleManager.getBleManager)();
34
+ }
35
+
36
+ /**
37
+ * Get storage info from device
38
+ */
39
+ async getStorageInfo(deviceId) {
40
+ if (!this.bleManager.isConnected(deviceId)) {
41
+ throw _errors.DeviceError.notConnected(deviceId);
42
+ }
43
+ const data = await this.bleManager.readCharacteristic(deviceId, _constants.SERVICE_BOTA_STORAGE, _constants.CHAR_STORAGE_INFO);
44
+ return (0, _parsers.parseStorageInfo)(data);
45
+ }
46
+
47
+ /**
48
+ * List recordings on device
49
+ */
50
+ async listRecordings(deviceId) {
51
+ if (!this.bleManager.isConnected(deviceId)) {
52
+ throw _errors.DeviceError.notConnected(deviceId);
53
+ }
54
+ log.debug('Listing recordings', {
55
+ deviceId
56
+ });
57
+ return new Promise((resolve, reject) => {
58
+ let recordings = [];
59
+ let subscription;
60
+ let timeoutId;
61
+ const cleanup = () => {
62
+ if (timeoutId) clearTimeout(timeoutId);
63
+ subscription?.remove();
64
+ };
65
+
66
+ // Set up timeout
67
+ timeoutId = setTimeout(() => {
68
+ cleanup();
69
+ // If we received some data, return it; otherwise error
70
+ if (recordings.length > 0) {
71
+ resolve(recordings);
72
+ } else {
73
+ reject(new _errors.TransferError('Timeout waiting for recording list', 'LIST_TIMEOUT'));
74
+ }
75
+ }, 5000);
76
+
77
+ // Subscribe to recording list notifications
78
+ subscription = this.bleManager.subscribeToCharacteristic(deviceId, _constants.SERVICE_BOTA_STORAGE, _constants.CHAR_RECORDING_LIST, data => {
79
+ try {
80
+ const parsed = (0, _parsers.parseRecordingList)(data);
81
+ recordings = recordings.concat(parsed);
82
+
83
+ // Check if this is the last packet (could check for end marker)
84
+ // For now, wait for timeout or explicit end
85
+ } catch (error) {
86
+ log.error('Failed to parse recording list', error);
87
+ }
88
+ }, error => {
89
+ cleanup();
90
+ reject(error);
91
+ });
92
+
93
+ // Send list command
94
+ const command = (0, _parsers.createTransferCommand)('list');
95
+ this.bleManager.writeCharacteristic(deviceId, _constants.SERVICE_BOTA_STORAGE, _constants.CHAR_TRANSFER_CONTROL, command).catch(error => {
96
+ cleanup();
97
+ reject(error);
98
+ });
99
+ });
100
+ }
101
+
102
+ /**
103
+ * Transfer a recording from device
104
+ * Returns the audio data as a Buffer
105
+ */
106
+ async transferRecording(deviceId, recordingUuid, onProgress) {
107
+ if (!this.bleManager.isConnected(deviceId)) {
108
+ throw _errors.DeviceError.notConnected(deviceId);
109
+ }
110
+
111
+ // Check if transfer already in progress
112
+ if (this.activeTransfers.has(recordingUuid)) {
113
+ throw new _errors.TransferError('Transfer already in progress for this recording', 'TRANSFER_IN_PROGRESS', recordingUuid);
114
+ }
115
+ log.info('Starting recording transfer', {
116
+ deviceId,
117
+ recordingUuid
118
+ });
119
+ return new Promise((resolve, reject) => {
120
+ const state = {
121
+ recordingUuid,
122
+ expectedSequence: 0,
123
+ receivedPackets: new Map(),
124
+ totalBytes: 0,
125
+ isComplete: false
126
+ };
127
+ this.activeTransfers.set(recordingUuid, state);
128
+ const cleanup = () => {
129
+ if (state.timeoutId) clearTimeout(state.timeoutId);
130
+ state.subscription?.remove();
131
+ this.activeTransfers.delete(recordingUuid);
132
+ };
133
+ const resetTimeout = () => {
134
+ if (state.timeoutId) clearTimeout(state.timeoutId);
135
+ state.timeoutId = setTimeout(() => {
136
+ cleanup();
137
+ reject(_errors.TransferError.timeout(recordingUuid));
138
+ }, _constants.TRANSFER_PACKET_TIMEOUT);
139
+ };
140
+
141
+ // Subscribe to transfer data notifications
142
+ state.subscription = this.bleManager.subscribeToCharacteristic(deviceId, _constants.SERVICE_BOTA_STORAGE, _constants.CHAR_RECORDING_TRANSFER, async data => {
143
+ try {
144
+ resetTimeout();
145
+ const packet = (0, _parsers.parseTransferPacket)(data);
146
+ await this.handleTransferPacket(deviceId, state, packet, onProgress);
147
+ if (state.isComplete) {
148
+ cleanup();
149
+
150
+ // Assemble the audio data
151
+ const audioData = this.assembleAudioData(state);
152
+
153
+ // Verify checksum if available
154
+ if (state.checksum !== undefined) {
155
+ const calculatedChecksum = this.calculateCrc32(audioData);
156
+ if (calculatedChecksum !== state.checksum) {
157
+ reject(_errors.TransferError.checksumMismatch(recordingUuid));
158
+ return;
159
+ }
160
+ }
161
+ log.info('Transfer completed', {
162
+ recordingUuid,
163
+ size: audioData.length
164
+ });
165
+ resolve(audioData);
166
+ }
167
+ } catch (error) {
168
+ cleanup();
169
+ reject(error);
170
+ }
171
+ }, error => {
172
+ cleanup();
173
+ reject(_errors.TransferError.interrupted(recordingUuid, error));
174
+ });
175
+
176
+ // Send start transfer command
177
+ const command = (0, _parsers.createTransferCommand)('start', recordingUuid);
178
+ this.bleManager.writeCharacteristic(deviceId, _constants.SERVICE_BOTA_STORAGE, _constants.CHAR_TRANSFER_CONTROL, command).then(() => {
179
+ resetTimeout();
180
+ }).catch(error => {
181
+ cleanup();
182
+ reject(error);
183
+ });
184
+ });
185
+ }
186
+
187
+ /**
188
+ * Handle a transfer packet from device
189
+ */
190
+ async handleTransferPacket(deviceId, state, packet, onProgress) {
191
+ switch (packet.type) {
192
+ case 'data':
193
+ if (packet.data) {
194
+ // Store packet data
195
+ state.receivedPackets.set(packet.sequenceNumber, _buffer.Buffer.from(packet.data));
196
+ state.totalBytes += packet.data.length;
197
+
198
+ // Send ACK
199
+ await this.sendAck(deviceId, 'ack', packet.sequenceNumber);
200
+
201
+ // Report progress
202
+ onProgress?.(state.totalBytes);
203
+ log.debug('Received data packet', {
204
+ seq: packet.sequenceNumber,
205
+ size: packet.data.length,
206
+ total: state.totalBytes
207
+ });
208
+ }
209
+ break;
210
+ case 'eof':
211
+ state.checksum = packet.checksum;
212
+ state.isComplete = true;
213
+
214
+ // Send final ACK
215
+ await this.sendAck(deviceId, 'ack', packet.sequenceNumber);
216
+ log.debug('Received EOF packet', {
217
+ seq: packet.sequenceNumber,
218
+ checksum: packet.checksum
219
+ });
220
+ break;
221
+ case 'error':
222
+ throw _errors.TransferError.deviceError(state.recordingUuid, packet.errorCode ?? 0xff);
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Send an ACK packet to device
228
+ */
229
+ async sendAck(deviceId, type, sequenceNumber) {
230
+ const ackPacket = (0, _parsers.createAckPacket)(type, sequenceNumber);
231
+ await this.bleManager.writeCharacteristic(deviceId, _constants.SERVICE_BOTA_STORAGE, _constants.CHAR_RECORDING_TRANSFER, ackPacket, false // Write without response for speed
232
+ );
233
+ }
234
+
235
+ /**
236
+ * Assemble audio data from received packets
237
+ */
238
+ assembleAudioData(state) {
239
+ // Sort packets by sequence number and concatenate
240
+ const sortedSequences = Array.from(state.receivedPackets.keys()).sort((a, b) => a - b);
241
+ const chunks = [];
242
+ for (const seq of sortedSequences) {
243
+ const data = state.receivedPackets.get(seq);
244
+ if (data) {
245
+ chunks.push(data);
246
+ }
247
+ }
248
+ return _buffer.Buffer.concat(chunks);
249
+ }
250
+
251
+ /**
252
+ * Calculate CRC32 checksum
253
+ */
254
+ calculateCrc32(data) {
255
+ let crc = 0xffffffff;
256
+ const table = this.getCrc32Table();
257
+ for (let i = 0; i < data.length; i++) {
258
+ crc = crc >>> 8 ^ table[(crc ^ data[i]) & 0xff];
259
+ }
260
+ return (crc ^ 0xffffffff) >>> 0;
261
+ }
262
+
263
+ /**
264
+ * Get CRC32 lookup table (lazy initialized)
265
+ */
266
+ crc32Table = null;
267
+ getCrc32Table() {
268
+ if (this.crc32Table) {
269
+ return this.crc32Table;
270
+ }
271
+ const table = [];
272
+ for (let i = 0; i < 256; i++) {
273
+ let crc = i;
274
+ for (let j = 0; j < 8; j++) {
275
+ crc = crc & 1 ? crc >>> 1 ^ 0xedb88320 : crc >>> 1;
276
+ }
277
+ table.push(crc >>> 0);
278
+ }
279
+ this.crc32Table = table;
280
+ return table;
281
+ }
282
+
283
+ /**
284
+ * Confirm sync to device (allows device to delete local copy)
285
+ */
286
+ async confirmSync(deviceId, recordingUuid) {
287
+ if (!this.bleManager.isConnected(deviceId)) {
288
+ throw _errors.DeviceError.notConnected(deviceId);
289
+ }
290
+ log.debug('Confirming sync', {
291
+ deviceId,
292
+ recordingUuid
293
+ });
294
+ const command = (0, _parsers.createTransferCommand)('confirm', recordingUuid);
295
+ await this.bleManager.writeCharacteristic(deviceId, _constants.SERVICE_BOTA_STORAGE, _constants.CHAR_TRANSFER_CONTROL, command);
296
+ }
297
+
298
+ /**
299
+ * Cancel an ongoing transfer
300
+ */
301
+ async cancelTransfer(deviceId, recordingUuid) {
302
+ const state = this.activeTransfers.get(recordingUuid);
303
+ if (!state) {
304
+ return;
305
+ }
306
+ log.info('Cancelling transfer', {
307
+ recordingUuid
308
+ });
309
+
310
+ // Send abort
311
+ try {
312
+ await this.sendAck(deviceId, 'abort', state.expectedSequence);
313
+ } catch {
314
+ // Ignore errors during cancellation
315
+ }
316
+
317
+ // Clean up
318
+ if (state.timeoutId) clearTimeout(state.timeoutId);
319
+ state.subscription?.remove();
320
+ this.activeTransfers.delete(recordingUuid);
321
+ }
322
+
323
+ /**
324
+ * Check if a transfer is in progress
325
+ */
326
+ isTransferInProgress(recordingUuid) {
327
+ return this.activeTransfers.has(recordingUuid);
328
+ }
329
+
330
+ /**
331
+ * Clean up resources
332
+ */
333
+ destroy() {
334
+ // Cancel all active transfers
335
+ for (const [, state] of this.activeTransfers) {
336
+ if (state.timeoutId) clearTimeout(state.timeoutId);
337
+ state.subscription?.remove();
338
+ }
339
+ this.activeTransfers.clear();
340
+ }
341
+ }
342
+ exports.ProtocolHandler = ProtocolHandler;
343
+ //# sourceMappingURL=ProtocolHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_buffer","require","_BleManager","_constants","_parsers","_errors","_logger","log","logger","tag","ProtocolHandler","activeTransfers","Map","constructor","bleManager","getBleManager","getStorageInfo","deviceId","isConnected","DeviceError","notConnected","data","readCharacteristic","SERVICE_BOTA_STORAGE","CHAR_STORAGE_INFO","parseStorageInfo","listRecordings","debug","Promise","resolve","reject","recordings","subscription","timeoutId","cleanup","clearTimeout","remove","setTimeout","length","TransferError","subscribeToCharacteristic","CHAR_RECORDING_LIST","parsed","parseRecordingList","concat","error","command","createTransferCommand","writeCharacteristic","CHAR_TRANSFER_CONTROL","catch","transferRecording","recordingUuid","onProgress","has","info","state","expectedSequence","receivedPackets","totalBytes","isComplete","set","delete","resetTimeout","timeout","TRANSFER_PACKET_TIMEOUT","CHAR_RECORDING_TRANSFER","packet","parseTransferPacket","handleTransferPacket","audioData","assembleAudioData","checksum","undefined","calculatedChecksum","calculateCrc32","checksumMismatch","size","interrupted","then","type","sequenceNumber","Buffer","from","sendAck","seq","total","deviceError","errorCode","ackPacket","createAckPacket","sortedSequences","Array","keys","sort","a","b","chunks","get","push","crc","table","getCrc32Table","i","crc32Table","j","confirmSync","cancelTransfer","isTransferInProgress","destroy","clear","exports"],"sourceRoot":"../../../src","sources":["protocol/ProtocolHandler.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ProtocolHandler", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _ProtocolHandler.ProtocolHandler;
10
+ }
11
+ });
12
+ var _ProtocolHandler = require("./ProtocolHandler");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ProtocolHandler","require"],"sourceRoot":"../../../src","sources":["protocol/index.ts"],"mappings":";;;;;;;;;;;AAIA,IAAAA,gBAAA,GAAAC,OAAA","ignoreList":[]}