@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":["BleManager","getBleManager","resetBleManager"],"sourceRoot":"../../../src","sources":["ble/index.ts"],"mappings":"AAAA;AACA;AACA;;AAEA,cAAc,aAAa;AAC3B,cAAc,WAAW;AACzB,SAASA,UAAU,EAAEC,aAAa,EAAEC,eAAe,QAAQ,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BLE data parsers for Bota device protocol
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { Buffer } from 'buffer';
|
|
6
|
+
import { DEVICE_TYPE_PIN, DEVICE_TYPE_PIN_4G, DEVICE_TYPE_NOTE, PAIRING_STATE_UNPAIRED, PAIRING_STATE_PAIRING, PAIRING_STATE_PAIRED, PAIRING_STATE_ERROR, 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, PACKET_TYPE_DATA, PACKET_TYPE_EOF, PACKET_TYPE_ERROR } from './constants';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Parse device type from manufacturer data byte
|
|
10
|
+
*/
|
|
11
|
+
export function parseDeviceType(byte) {
|
|
12
|
+
switch (byte) {
|
|
13
|
+
case DEVICE_TYPE_PIN:
|
|
14
|
+
return 'bota_pin';
|
|
15
|
+
case DEVICE_TYPE_PIN_4G:
|
|
16
|
+
return 'bota_pin_4g';
|
|
17
|
+
case DEVICE_TYPE_NOTE:
|
|
18
|
+
return 'bota_note';
|
|
19
|
+
default:
|
|
20
|
+
return 'bota_pin';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Parse pairing state from manufacturer data byte
|
|
26
|
+
*/
|
|
27
|
+
export function parsePairingState(byte) {
|
|
28
|
+
switch (byte) {
|
|
29
|
+
case PAIRING_STATE_UNPAIRED:
|
|
30
|
+
return 'unpaired';
|
|
31
|
+
case PAIRING_STATE_PAIRING:
|
|
32
|
+
return 'pairing';
|
|
33
|
+
case PAIRING_STATE_PAIRED:
|
|
34
|
+
return 'paired';
|
|
35
|
+
case PAIRING_STATE_ERROR:
|
|
36
|
+
return 'error';
|
|
37
|
+
default:
|
|
38
|
+
return 'unpaired';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Parse firmware version from major/minor bytes
|
|
44
|
+
*/
|
|
45
|
+
export function parseFirmwareVersion(major, minor) {
|
|
46
|
+
return `${major}.${minor}.0`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Parse device state from status byte
|
|
51
|
+
*/
|
|
52
|
+
export function parseDeviceState(byte) {
|
|
53
|
+
switch (byte) {
|
|
54
|
+
case DEVICE_STATE_IDLE:
|
|
55
|
+
return 'idle';
|
|
56
|
+
case DEVICE_STATE_RECORDING:
|
|
57
|
+
return 'recording';
|
|
58
|
+
case DEVICE_STATE_SYNCING:
|
|
59
|
+
return 'syncing';
|
|
60
|
+
case DEVICE_STATE_UPLOADING:
|
|
61
|
+
return 'uploading';
|
|
62
|
+
case DEVICE_STATE_CHARGING:
|
|
63
|
+
return 'charging';
|
|
64
|
+
case DEVICE_STATE_LOW_BATTERY:
|
|
65
|
+
return 'lowBattery';
|
|
66
|
+
case DEVICE_STATE_STORAGE_FULL:
|
|
67
|
+
return 'storageFull';
|
|
68
|
+
case DEVICE_STATE_ERROR:
|
|
69
|
+
return 'error';
|
|
70
|
+
default:
|
|
71
|
+
return 'idle';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Parse device flags from 16-bit value
|
|
77
|
+
*/
|
|
78
|
+
export function parseDeviceFlags(value) {
|
|
79
|
+
return {
|
|
80
|
+
charging: (value & FLAG_CHARGING) !== 0,
|
|
81
|
+
usbConnected: (value & FLAG_USB_CONNECTED) !== 0,
|
|
82
|
+
lowBattery: (value & FLAG_LOW_BATTERY) !== 0,
|
|
83
|
+
criticalBattery: (value & FLAG_CRITICAL_BATTERY) !== 0,
|
|
84
|
+
storageWarning: (value & FLAG_STORAGE_WARNING) !== 0,
|
|
85
|
+
storageFull: (value & FLAG_STORAGE_FULL) !== 0,
|
|
86
|
+
cellularAvailable: (value & FLAG_CELLULAR_AVAILABLE) !== 0,
|
|
87
|
+
cellularRoaming: (value & FLAG_CELLULAR_ROAMING) !== 0,
|
|
88
|
+
wifiConnected: (value & FLAG_WIFI_CONNECTED) !== 0,
|
|
89
|
+
recordingActive: (value & FLAG_RECORDING_ACTIVE) !== 0,
|
|
90
|
+
syncRequired: (value & FLAG_SYNC_REQUIRED) !== 0,
|
|
91
|
+
updateAvailable: (value & FLAG_UPDATE_AVAILABLE) !== 0
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Parse device status from 16-byte characteristic value
|
|
97
|
+
*
|
|
98
|
+
* Format:
|
|
99
|
+
* Bytes 0-3: Timestamp (Unix seconds)
|
|
100
|
+
* Byte 4: Battery % (0-100)
|
|
101
|
+
* Byte 5: State
|
|
102
|
+
* Byte 6: Storage % (0-100)
|
|
103
|
+
* Byte 7: Signal (0-5)
|
|
104
|
+
* Bytes 8-9: Pending recordings count
|
|
105
|
+
* Bytes 10-13: Last sync time (Unix seconds)
|
|
106
|
+
* Bytes 14-15: Flags
|
|
107
|
+
*/
|
|
108
|
+
export function parseDeviceStatus(data) {
|
|
109
|
+
if (data.length < 16) {
|
|
110
|
+
throw new Error(`Invalid status data length: ${data.length}`);
|
|
111
|
+
}
|
|
112
|
+
const timestamp = data.readUInt32LE(0);
|
|
113
|
+
const batteryLevel = data.readUInt8(4);
|
|
114
|
+
const state = parseDeviceState(data.readUInt8(5));
|
|
115
|
+
const storageUsedPercent = data.readUInt8(6);
|
|
116
|
+
const signalStrength = data.readUInt8(7);
|
|
117
|
+
const pendingRecordings = data.readUInt16LE(8);
|
|
118
|
+
const lastSyncTimestamp = data.readUInt32LE(10);
|
|
119
|
+
const flagsValue = data.readUInt16LE(14);
|
|
120
|
+
const flags = parseDeviceFlags(flagsValue);
|
|
121
|
+
return {
|
|
122
|
+
batteryLevel,
|
|
123
|
+
storageUsedPercent,
|
|
124
|
+
state,
|
|
125
|
+
pendingRecordings,
|
|
126
|
+
lastSyncAt: lastSyncTimestamp > 0 ? new Date(lastSyncTimestamp * 1000) : null,
|
|
127
|
+
signalStrength,
|
|
128
|
+
flags,
|
|
129
|
+
timestamp
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Parse storage info from 16-byte characteristic value
|
|
135
|
+
*
|
|
136
|
+
* Format:
|
|
137
|
+
* Bytes 0-3: Total storage (KB)
|
|
138
|
+
* Bytes 4-7: Used storage (KB)
|
|
139
|
+
* Bytes 8-9: Total recording count
|
|
140
|
+
* Bytes 10-11: Pending sync count
|
|
141
|
+
* Bytes 12-15: Reserved
|
|
142
|
+
*/
|
|
143
|
+
export function parseStorageInfo(data) {
|
|
144
|
+
if (data.length < 12) {
|
|
145
|
+
throw new Error(`Invalid storage info length: ${data.length}`);
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
totalKb: data.readUInt32LE(0),
|
|
149
|
+
usedKb: data.readUInt32LE(4),
|
|
150
|
+
totalRecordings: data.readUInt16LE(8),
|
|
151
|
+
pendingSyncCount: data.readUInt16LE(10)
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Parse audio codec from byte value
|
|
157
|
+
*/
|
|
158
|
+
export function parseAudioCodec(byte) {
|
|
159
|
+
switch (byte) {
|
|
160
|
+
case CODEC_PCM_16K:
|
|
161
|
+
return 'pcm_16k';
|
|
162
|
+
case CODEC_PCM_8K:
|
|
163
|
+
return 'pcm_8k';
|
|
164
|
+
case CODEC_OPUS_16K:
|
|
165
|
+
return 'opus_16k';
|
|
166
|
+
case CODEC_OPUS_8K:
|
|
167
|
+
return 'opus_8k';
|
|
168
|
+
default:
|
|
169
|
+
return 'opus_16k';
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Parse recording list from notification data
|
|
175
|
+
* Each recording entry is typically 24 bytes:
|
|
176
|
+
* - UUID: 16 bytes
|
|
177
|
+
* - Timestamp: 4 bytes (Unix seconds)
|
|
178
|
+
* - Duration: 2 bytes (seconds)
|
|
179
|
+
* - Size: 2 bytes (KB, or needs scaling)
|
|
180
|
+
*/
|
|
181
|
+
export function parseRecordingList(data) {
|
|
182
|
+
const recordings = [];
|
|
183
|
+
const entrySize = 24;
|
|
184
|
+
|
|
185
|
+
// First byte might be count
|
|
186
|
+
let offset = 0;
|
|
187
|
+
if (data.length > 0 && data.length % entrySize !== 0) {
|
|
188
|
+
// Skip count byte
|
|
189
|
+
offset = 1;
|
|
190
|
+
}
|
|
191
|
+
while (offset + entrySize <= data.length) {
|
|
192
|
+
const uuid = formatUuid(data.slice(offset, offset + 16));
|
|
193
|
+
const timestamp = data.readUInt32LE(offset + 16);
|
|
194
|
+
const durationSeconds = data.readUInt16LE(offset + 20);
|
|
195
|
+
const sizeKb = data.readUInt16LE(offset + 22);
|
|
196
|
+
recordings.push({
|
|
197
|
+
uuid,
|
|
198
|
+
startedAt: new Date(timestamp * 1000),
|
|
199
|
+
durationMs: durationSeconds * 1000,
|
|
200
|
+
fileSizeBytes: sizeKb * 1024,
|
|
201
|
+
codec: 'opus_16k' // Default, actual codec read separately
|
|
202
|
+
});
|
|
203
|
+
offset += entrySize;
|
|
204
|
+
}
|
|
205
|
+
return recordings;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Format 16-byte UUID buffer to string
|
|
210
|
+
*/
|
|
211
|
+
function formatUuid(data) {
|
|
212
|
+
const hex = data.toString('hex');
|
|
213
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Parse transfer packet from device
|
|
218
|
+
*
|
|
219
|
+
* Format:
|
|
220
|
+
* Byte 0: Packet type (0x01=data, 0x02=EOF, 0xFF=error)
|
|
221
|
+
* Bytes 1-2: Sequence number
|
|
222
|
+
* Bytes 3-4: Chunk size (data) or CRC32 start (EOF)
|
|
223
|
+
* Bytes 5+: Audio data (data) or CRC32 remainder (EOF)
|
|
224
|
+
*/
|
|
225
|
+
export function parseTransferPacket(data) {
|
|
226
|
+
if (data.length < 3) {
|
|
227
|
+
throw new Error(`Invalid transfer packet length: ${data.length}`);
|
|
228
|
+
}
|
|
229
|
+
const type = data.readUInt8(0);
|
|
230
|
+
const sequenceNumber = data.readUInt16LE(1);
|
|
231
|
+
switch (type) {
|
|
232
|
+
case PACKET_TYPE_DATA:
|
|
233
|
+
return {
|
|
234
|
+
type: 'data',
|
|
235
|
+
sequenceNumber,
|
|
236
|
+
data: data.slice(5) // Skip header
|
|
237
|
+
};
|
|
238
|
+
case PACKET_TYPE_EOF:
|
|
239
|
+
return {
|
|
240
|
+
type: 'eof',
|
|
241
|
+
sequenceNumber,
|
|
242
|
+
checksum: data.readUInt32LE(3)
|
|
243
|
+
};
|
|
244
|
+
case PACKET_TYPE_ERROR:
|
|
245
|
+
return {
|
|
246
|
+
type: 'error',
|
|
247
|
+
sequenceNumber,
|
|
248
|
+
errorCode: data.length > 3 ? data.readUInt8(3) : 0xff
|
|
249
|
+
};
|
|
250
|
+
default:
|
|
251
|
+
throw new Error(`Unknown packet type: ${type}`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Create time sync data buffer
|
|
257
|
+
*
|
|
258
|
+
* Format:
|
|
259
|
+
* Bytes 0-3: Unix timestamp (seconds)
|
|
260
|
+
* Bytes 4-5: Milliseconds (0-999)
|
|
261
|
+
* Bytes 6-7: Timezone offset (signed, minutes from UTC)
|
|
262
|
+
*/
|
|
263
|
+
export function createTimeSyncData(date = new Date()) {
|
|
264
|
+
const buffer = Buffer.alloc(8);
|
|
265
|
+
const unixSeconds = Math.floor(date.getTime() / 1000);
|
|
266
|
+
const milliseconds = date.getMilliseconds();
|
|
267
|
+
const timezoneOffset = -date.getTimezoneOffset(); // getTimezoneOffset returns opposite sign
|
|
268
|
+
|
|
269
|
+
buffer.writeUInt32LE(unixSeconds, 0);
|
|
270
|
+
buffer.writeUInt16LE(milliseconds, 4);
|
|
271
|
+
buffer.writeInt16LE(timezoneOffset, 6);
|
|
272
|
+
return buffer;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Create ACK packet for transfer
|
|
277
|
+
*
|
|
278
|
+
* Format:
|
|
279
|
+
* Byte 0: ACK type (0x10=ACK, 0x11=NACK, 0x12=Abort)
|
|
280
|
+
* Bytes 1-2: Sequence number
|
|
281
|
+
*/
|
|
282
|
+
export function createAckPacket(ackType, sequenceNumber) {
|
|
283
|
+
const buffer = Buffer.alloc(3);
|
|
284
|
+
switch (ackType) {
|
|
285
|
+
case 'ack':
|
|
286
|
+
buffer.writeUInt8(0x10, 0);
|
|
287
|
+
break;
|
|
288
|
+
case 'nack':
|
|
289
|
+
buffer.writeUInt8(0x11, 0);
|
|
290
|
+
break;
|
|
291
|
+
case 'abort':
|
|
292
|
+
buffer.writeUInt8(0x12, 0);
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
buffer.writeUInt16LE(sequenceNumber, 1);
|
|
296
|
+
return buffer;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Create transfer control command
|
|
301
|
+
*
|
|
302
|
+
* Format:
|
|
303
|
+
* Byte 0: Command (0x01=list, 0x02=start, 0x07=confirm)
|
|
304
|
+
* Bytes 1+: Recording UUID (for start/confirm)
|
|
305
|
+
*/
|
|
306
|
+
export function createTransferCommand(command, recordingUuid) {
|
|
307
|
+
let cmdByte;
|
|
308
|
+
switch (command) {
|
|
309
|
+
case 'list':
|
|
310
|
+
cmdByte = 0x01;
|
|
311
|
+
break;
|
|
312
|
+
case 'start':
|
|
313
|
+
cmdByte = 0x02;
|
|
314
|
+
break;
|
|
315
|
+
case 'confirm':
|
|
316
|
+
cmdByte = 0x07;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
if (recordingUuid) {
|
|
320
|
+
const uuidBuffer = Buffer.from(recordingUuid.replace(/-/g, ''), 'hex');
|
|
321
|
+
const buffer = Buffer.alloc(1 + uuidBuffer.length);
|
|
322
|
+
buffer.writeUInt8(cmdByte, 0);
|
|
323
|
+
uuidBuffer.copy(buffer, 1);
|
|
324
|
+
return buffer;
|
|
325
|
+
}
|
|
326
|
+
return Buffer.from([cmdByte]);
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=parsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Buffer","DEVICE_TYPE_PIN","DEVICE_TYPE_PIN_4G","DEVICE_TYPE_NOTE","PAIRING_STATE_UNPAIRED","PAIRING_STATE_PAIRING","PAIRING_STATE_PAIRED","PAIRING_STATE_ERROR","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","PACKET_TYPE_DATA","PACKET_TYPE_EOF","PACKET_TYPE_ERROR","parseDeviceType","byte","parsePairingState","parseFirmwareVersion","major","minor","parseDeviceState","parseDeviceFlags","value","charging","usbConnected","lowBattery","criticalBattery","storageWarning","storageFull","cellularAvailable","cellularRoaming","wifiConnected","recordingActive","syncRequired","updateAvailable","parseDeviceStatus","data","length","Error","timestamp","readUInt32LE","batteryLevel","readUInt8","state","storageUsedPercent","signalStrength","pendingRecordings","readUInt16LE","lastSyncTimestamp","flagsValue","flags","lastSyncAt","Date","parseStorageInfo","totalKb","usedKb","totalRecordings","pendingSyncCount","parseAudioCodec","parseRecordingList","recordings","entrySize","offset","uuid","formatUuid","slice","durationSeconds","sizeKb","push","startedAt","durationMs","fileSizeBytes","codec","hex","toString","parseTransferPacket","type","sequenceNumber","checksum","errorCode","createTimeSyncData","date","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":"AAAA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,QAAQ;AAW/B,SACEC,eAAe,EACfC,kBAAkB,EAClBC,gBAAgB,EAChBC,sBAAsB,EACtBC,qBAAqB,EACrBC,oBAAoB,EACpBC,mBAAmB,EACnBC,iBAAiB,EACjBC,sBAAsB,EACtBC,oBAAoB,EACpBC,sBAAsB,EACtBC,qBAAqB,EACrBC,wBAAwB,EACxBC,yBAAyB,EACzBC,kBAAkB,EAClBC,aAAa,EACbC,kBAAkB,EAClBC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAoB,EACpBC,iBAAiB,EACjBC,uBAAuB,EACvBC,qBAAqB,EACrBC,mBAAmB,EACnBC,qBAAqB,EACrBC,kBAAkB,EAClBC,qBAAqB,EACrBC,aAAa,EACbC,YAAY,EACZC,cAAc,EACdC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,iBAAiB,QACZ,aAAa;;AAEpB;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,IAAY,EAAc;EACxD,QAAQA,IAAI;IACV,KAAKnC,eAAe;MAClB,OAAO,UAAU;IACnB,KAAKC,kBAAkB;MACrB,OAAO,aAAa;IACtB,KAAKC,gBAAgB;MACnB,OAAO,WAAW;IACpB;MACE,OAAO,UAAU;EACrB;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASkC,iBAAiBA,CAACD,IAAY,EAAgB;EAC5D,QAAQA,IAAI;IACV,KAAKhC,sBAAsB;MACzB,OAAO,UAAU;IACnB,KAAKC,qBAAqB;MACxB,OAAO,SAAS;IAClB,KAAKC,oBAAoB;MACvB,OAAO,QAAQ;IACjB,KAAKC,mBAAmB;MACtB,OAAO,OAAO;IAChB;MACE,OAAO,UAAU;EACrB;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAAS+B,oBAAoBA,CAACC,KAAa,EAAEC,KAAa,EAAU;EACzE,OAAO,GAAGD,KAAK,IAAIC,KAAK,IAAI;AAC9B;;AAEA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACL,IAAY,EAAe;EAC1D,QAAQA,IAAI;IACV,KAAK5B,iBAAiB;MACpB,OAAO,MAAM;IACf,KAAKC,sBAAsB;MACzB,OAAO,WAAW;IACpB,KAAKC,oBAAoB;MACvB,OAAO,SAAS;IAClB,KAAKC,sBAAsB;MACzB,OAAO,WAAW;IACpB,KAAKC,qBAAqB;MACxB,OAAO,UAAU;IACnB,KAAKC,wBAAwB;MAC3B,OAAO,YAAY;IACrB,KAAKC,yBAAyB;MAC5B,OAAO,aAAa;IACtB,KAAKC,kBAAkB;MACrB,OAAO,OAAO;IAChB;MACE,OAAO,MAAM;EACjB;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAAS2B,gBAAgBA,CAACC,KAAa,EAAe;EAC3D,OAAO;IACLC,QAAQ,EAAE,CAACD,KAAK,GAAG3B,aAAa,MAAM,CAAC;IACvC6B,YAAY,EAAE,CAACF,KAAK,GAAG1B,kBAAkB,MAAM,CAAC;IAChD6B,UAAU,EAAE,CAACH,KAAK,GAAGzB,gBAAgB,MAAM,CAAC;IAC5C6B,eAAe,EAAE,CAACJ,KAAK,GAAGxB,qBAAqB,MAAM,CAAC;IACtD6B,cAAc,EAAE,CAACL,KAAK,GAAGvB,oBAAoB,MAAM,CAAC;IACpD6B,WAAW,EAAE,CAACN,KAAK,GAAGtB,iBAAiB,MAAM,CAAC;IAC9C6B,iBAAiB,EAAE,CAACP,KAAK,GAAGrB,uBAAuB,MAAM,CAAC;IAC1D6B,eAAe,EAAE,CAACR,KAAK,GAAGpB,qBAAqB,MAAM,CAAC;IACtD6B,aAAa,EAAE,CAACT,KAAK,GAAGnB,mBAAmB,MAAM,CAAC;IAClD6B,eAAe,EAAE,CAACV,KAAK,GAAGlB,qBAAqB,MAAM,CAAC;IACtD6B,YAAY,EAAE,CAACX,KAAK,GAAGjB,kBAAkB,MAAM,CAAC;IAChD6B,eAAe,EAAE,CAACZ,KAAK,GAAGhB,qBAAqB,MAAM;EACvD,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS6B,iBAAiBA,CAACC,IAAY,EAAgB;EAC5D,IAAIA,IAAI,CAACC,MAAM,GAAG,EAAE,EAAE;IACpB,MAAM,IAAIC,KAAK,CAAC,+BAA+BF,IAAI,CAACC,MAAM,EAAE,CAAC;EAC/D;EAEA,MAAME,SAAS,GAAGH,IAAI,CAACI,YAAY,CAAC,CAAC,CAAC;EACtC,MAAMC,YAAY,GAAGL,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC;EACtC,MAAMC,KAAK,GAAGvB,gBAAgB,CAACgB,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC,CAAC;EACjD,MAAME,kBAAkB,GAAGR,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC;EAC5C,MAAMG,cAAc,GAAGT,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC;EACxC,MAAMI,iBAAiB,GAAGV,IAAI,CAACW,YAAY,CAAC,CAAC,CAAC;EAC9C,MAAMC,iBAAiB,GAAGZ,IAAI,CAACI,YAAY,CAAC,EAAE,CAAC;EAC/C,MAAMS,UAAU,GAAGb,IAAI,CAACW,YAAY,CAAC,EAAE,CAAC;EACxC,MAAMG,KAAK,GAAG7B,gBAAgB,CAAC4B,UAAU,CAAC;EAE1C,OAAO;IACLR,YAAY;IACZG,kBAAkB;IAClBD,KAAK;IACLG,iBAAiB;IACjBK,UAAU,EAAEH,iBAAiB,GAAG,CAAC,GAAG,IAAII,IAAI,CAACJ,iBAAiB,GAAG,IAAI,CAAC,GAAG,IAAI;IAC7EH,cAAc;IACdK,KAAK;IACLX;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASc,gBAAgBA,CAACjB,IAAY,EAAe;EAC1D,IAAIA,IAAI,CAACC,MAAM,GAAG,EAAE,EAAE;IACpB,MAAM,IAAIC,KAAK,CAAC,gCAAgCF,IAAI,CAACC,MAAM,EAAE,CAAC;EAChE;EAEA,OAAO;IACLiB,OAAO,EAAElB,IAAI,CAACI,YAAY,CAAC,CAAC,CAAC;IAC7Be,MAAM,EAAEnB,IAAI,CAACI,YAAY,CAAC,CAAC,CAAC;IAC5BgB,eAAe,EAAEpB,IAAI,CAACW,YAAY,CAAC,CAAC,CAAC;IACrCU,gBAAgB,EAAErB,IAAI,CAACW,YAAY,CAAC,EAAE;EACxC,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASW,eAAeA,CAAC3C,IAAY,EAAc;EACxD,QAAQA,IAAI;IACV,KAAKR,aAAa;MAChB,OAAO,SAAS;IAClB,KAAKC,YAAY;MACf,OAAO,QAAQ;IACjB,KAAKC,cAAc;MACjB,OAAO,UAAU;IACnB,KAAKC,aAAa;MAChB,OAAO,SAAS;IAClB;MACE,OAAO,UAAU;EACrB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASiD,kBAAkBA,CAACvB,IAAY,EAAqB;EAClE,MAAMwB,UAA6B,GAAG,EAAE;EACxC,MAAMC,SAAS,GAAG,EAAE;;EAEpB;EACA,IAAIC,MAAM,GAAG,CAAC;EACd,IAAI1B,IAAI,CAACC,MAAM,GAAG,CAAC,IAAID,IAAI,CAACC,MAAM,GAAGwB,SAAS,KAAK,CAAC,EAAE;IACpD;IACAC,MAAM,GAAG,CAAC;EACZ;EAEA,OAAOA,MAAM,GAAGD,SAAS,IAAIzB,IAAI,CAACC,MAAM,EAAE;IACxC,MAAM0B,IAAI,GAAGC,UAAU,CAAC5B,IAAI,CAAC6B,KAAK,CAACH,MAAM,EAAEA,MAAM,GAAG,EAAE,CAAC,CAAC;IACxD,MAAMvB,SAAS,GAAGH,IAAI,CAACI,YAAY,CAACsB,MAAM,GAAG,EAAE,CAAC;IAChD,MAAMI,eAAe,GAAG9B,IAAI,CAACW,YAAY,CAACe,MAAM,GAAG,EAAE,CAAC;IACtD,MAAMK,MAAM,GAAG/B,IAAI,CAACW,YAAY,CAACe,MAAM,GAAG,EAAE,CAAC;IAE7CF,UAAU,CAACQ,IAAI,CAAC;MACdL,IAAI;MACJM,SAAS,EAAE,IAAIjB,IAAI,CAACb,SAAS,GAAG,IAAI,CAAC;MACrC+B,UAAU,EAAEJ,eAAe,GAAG,IAAI;MAClCK,aAAa,EAAEJ,MAAM,GAAG,IAAI;MAC5BK,KAAK,EAAE,UAAU,CAAE;IACrB,CAAC,CAAC;IAEFV,MAAM,IAAID,SAAS;EACrB;EAEA,OAAOD,UAAU;AACnB;;AAEA;AACA;AACA;AACA,SAASI,UAAUA,CAAC5B,IAAY,EAAU;EACxC,MAAMqC,GAAG,GAAGrC,IAAI,CAACsC,QAAQ,CAAC,KAAK,CAAC;EAChC,OAAO,GAAGD,GAAG,CAACR,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAIQ,GAAG,CAACR,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAIQ,GAAG,CAACR,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIQ,GAAG,CAACR,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIQ,GAAG,CAACR,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AAChH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASU,mBAAmBA,CAACvC,IAAY,EAAkB;EAChE,IAAIA,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE;IACnB,MAAM,IAAIC,KAAK,CAAC,mCAAmCF,IAAI,CAACC,MAAM,EAAE,CAAC;EACnE;EAEA,MAAMuC,IAAI,GAAGxC,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC;EAC9B,MAAMmC,cAAc,GAAGzC,IAAI,CAACW,YAAY,CAAC,CAAC,CAAC;EAE3C,QAAQ6B,IAAI;IACV,KAAKjE,gBAAgB;MACnB,OAAO;QACLiE,IAAI,EAAE,MAAM;QACZC,cAAc;QACdzC,IAAI,EAAEA,IAAI,CAAC6B,KAAK,CAAC,CAAC,CAAC,CAAE;MACvB,CAAC;IAEH,KAAKrD,eAAe;MAClB,OAAO;QACLgE,IAAI,EAAE,KAAK;QACXC,cAAc;QACdC,QAAQ,EAAE1C,IAAI,CAACI,YAAY,CAAC,CAAC;MAC/B,CAAC;IAEH,KAAK3B,iBAAiB;MACpB,OAAO;QACL+D,IAAI,EAAE,OAAO;QACbC,cAAc;QACdE,SAAS,EAAE3C,IAAI,CAACC,MAAM,GAAG,CAAC,GAAGD,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC,GAAG;MACnD,CAAC;IAEH;MACE,MAAM,IAAIJ,KAAK,CAAC,wBAAwBsC,IAAI,EAAE,CAAC;EACnD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,kBAAkBA,CAACC,IAAU,GAAG,IAAI7B,IAAI,CAAC,CAAC,EAAU;EAClE,MAAM8B,MAAM,GAAGvG,MAAM,CAACwG,KAAK,CAAC,CAAC,CAAC;EAC9B,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACL,IAAI,CAACM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;EACrD,MAAMC,YAAY,GAAGP,IAAI,CAACQ,eAAe,CAAC,CAAC;EAC3C,MAAMC,cAAc,GAAG,CAACT,IAAI,CAACU,iBAAiB,CAAC,CAAC,CAAC,CAAC;;EAElDT,MAAM,CAACU,aAAa,CAACR,WAAW,EAAE,CAAC,CAAC;EACpCF,MAAM,CAACW,aAAa,CAACL,YAAY,EAAE,CAAC,CAAC;EACrCN,MAAM,CAACY,YAAY,CAACJ,cAAc,EAAE,CAAC,CAAC;EAEtC,OAAOR,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASa,eAAeA,CAC7BC,OAAiC,EACjCnB,cAAsB,EACd;EACR,MAAMK,MAAM,GAAGvG,MAAM,CAACwG,KAAK,CAAC,CAAC,CAAC;EAE9B,QAAQa,OAAO;IACb,KAAK,KAAK;MACRd,MAAM,CAACe,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;MAC1B;IACF,KAAK,MAAM;MACTf,MAAM,CAACe,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;MAC1B;IACF,KAAK,OAAO;MACVf,MAAM,CAACe,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;MAC1B;EACJ;EAEAf,MAAM,CAACW,aAAa,CAAChB,cAAc,EAAE,CAAC,CAAC;EACvC,OAAOK,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASgB,qBAAqBA,CACnCC,OAAqC,EACrCC,aAAsB,EACd;EACR,IAAIC,OAAe;EACnB,QAAQF,OAAO;IACb,KAAK,MAAM;MACTE,OAAO,GAAG,IAAI;MACd;IACF,KAAK,OAAO;MACVA,OAAO,GAAG,IAAI;MACd;IACF,KAAK,SAAS;MACZA,OAAO,GAAG,IAAI;MACd;EACJ;EAEA,IAAID,aAAa,EAAE;IACjB,MAAME,UAAU,GAAG3H,MAAM,CAAC4H,IAAI,CAACH,aAAa,CAACI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC;IACtE,MAAMtB,MAAM,GAAGvG,MAAM,CAACwG,KAAK,CAAC,CAAC,GAAGmB,UAAU,CAACjE,MAAM,CAAC;IAClD6C,MAAM,CAACe,UAAU,CAACI,OAAO,EAAE,CAAC,CAAC;IAC7BC,UAAU,CAACG,IAAI,CAACvB,MAAM,EAAE,CAAC,CAAC;IAC1B,OAAOA,MAAM;EACf;EAEA,OAAOvG,MAAM,CAAC4H,IAAI,CAAC,CAACF,OAAO,CAAC,CAAC;AAC/B","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bota React Native SDK
|
|
3
|
+
*
|
|
4
|
+
* SDK for communicating with Bota wearable devices via BLE.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// Main client
|
|
10
|
+
export { BotaClient } from './BotaClient';
|
|
11
|
+
// Managers
|
|
12
|
+
export { DeviceManager, RecordingManager, OTAManager } from './managers';
|
|
13
|
+
|
|
14
|
+
// Models - Device
|
|
15
|
+
|
|
16
|
+
// Models - Recording
|
|
17
|
+
|
|
18
|
+
// Models - Status & Events
|
|
19
|
+
|
|
20
|
+
// Errors
|
|
21
|
+
export { BotaError, BluetoothError, DeviceError, ProvisioningError, TransferError, UploadError, SdkError, isBotaError } from './utils/errors';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BotaClient","DeviceManager","RecordingManager","OTAManager","BotaError","BluetoothError","DeviceError","ProvisioningError","TransferError","UploadError","SdkError","isBotaError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,UAAU,QAAQ,cAAc;AAGzC;AACA,SAASC,aAAa,EAAEC,gBAAgB,EAAEC,UAAU,QAAQ,YAAY;;AAGxE;;AAgBA;;AAYA;;AASA;AACA,SACEC,SAAS,EACTC,cAAc,EACdC,WAAW,EACXC,iBAAiB,EACjBC,aAAa,EACbC,WAAW,EACXC,QAAQ,EACRC,WAAW,QACN,gBAAgB","ignoreList":[]}
|