@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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["models/Recording.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -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":[]}
|