@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,129 @@
1
+ /**
2
+ * Logger utility for the Bota SDK
3
+ */
4
+
5
+ const LOG_LEVELS = {
6
+ debug: 0,
7
+ info: 1,
8
+ warn: 2,
9
+ error: 3,
10
+ none: 4
11
+ };
12
+
13
+ /**
14
+ * Logger class with configurable log levels
15
+ */
16
+ class Logger {
17
+ level = 'warn';
18
+ prefix = '[BotaSDK]';
19
+
20
+ /**
21
+ * Set the log level
22
+ */
23
+ setLevel(level) {
24
+ this.level = level;
25
+ }
26
+
27
+ /**
28
+ * Get the current log level
29
+ */
30
+ getLevel() {
31
+ return this.level;
32
+ }
33
+
34
+ /**
35
+ * Check if a log level should be output
36
+ */
37
+ shouldLog(level) {
38
+ return LOG_LEVELS[level] >= LOG_LEVELS[this.level];
39
+ }
40
+
41
+ /**
42
+ * Format a log message with optional context
43
+ */
44
+ format(level, message, context) {
45
+ const timestamp = new Date().toISOString();
46
+ const contextStr = context ? ` ${JSON.stringify(context)}` : '';
47
+ return `${timestamp} ${this.prefix} [${level.toUpperCase()}] ${message}${contextStr}`;
48
+ }
49
+
50
+ /**
51
+ * Log a debug message
52
+ */
53
+ debug(message, context) {
54
+ if (this.shouldLog('debug')) {
55
+ console.debug(this.format('debug', message, context));
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Log an info message
61
+ */
62
+ info(message, context) {
63
+ if (this.shouldLog('info')) {
64
+ console.info(this.format('info', message, context));
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Log a warning message
70
+ */
71
+ warn(message, context) {
72
+ if (this.shouldLog('warn')) {
73
+ console.warn(this.format('warn', message, context));
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Log an error message
79
+ */
80
+ error(message, error, context) {
81
+ if (this.shouldLog('error')) {
82
+ const fullContext = error ? {
83
+ ...context,
84
+ error: error.message,
85
+ stack: error.stack
86
+ } : context;
87
+ console.error(this.format('error', message, fullContext));
88
+ }
89
+ }
90
+
91
+ /**
92
+ * Create a child logger with a specific tag
93
+ */
94
+ tag(tag) {
95
+ return new TaggedLogger(this, tag);
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Tagged logger for component-specific logging
101
+ */
102
+ class TaggedLogger {
103
+ constructor(parent, tag) {
104
+ this.parent = parent;
105
+ this.tag = tag;
106
+ }
107
+ debug(message, context) {
108
+ this.parent.debug(`[${this.tag}] ${message}`, context);
109
+ }
110
+ info(message, context) {
111
+ this.parent.info(`[${this.tag}] ${message}`, context);
112
+ }
113
+ warn(message, context) {
114
+ this.parent.warn(`[${this.tag}] ${message}`, context);
115
+ }
116
+ error(message, error, context) {
117
+ this.parent.error(`[${this.tag}] ${message}`, error, context);
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Singleton logger instance
123
+ */
124
+ export const logger = new Logger();
125
+
126
+ /**
127
+ * Export types for external use
128
+ */
129
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LOG_LEVELS","debug","info","warn","error","none","Logger","level","prefix","setLevel","getLevel","shouldLog","format","message","context","timestamp","Date","toISOString","contextStr","JSON","stringify","toUpperCase","console","fullContext","stack","tag","TaggedLogger","constructor","parent","logger"],"sourceRoot":"../../../src","sources":["utils/logger.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Retry utility with exponential backoff
3
+ */
4
+
5
+ import { logger } from './logger';
6
+ const log = logger.tag('Retry');
7
+
8
+ /**
9
+ * Retry configuration options
10
+ */
11
+
12
+ /**
13
+ * Default retry delays based on Bota spec:
14
+ * Attempt 1: Immediate
15
+ * Attempt 2: 30 seconds
16
+ * Attempt 3: 2 minutes
17
+ * Attempt 4: 10 minutes
18
+ * Attempt 5: 1 hour
19
+ * Attempt 6: 4 hours
20
+ */
21
+ export const DEFAULT_RETRY_DELAYS = [0,
22
+ // Immediate
23
+ 30 * 1000,
24
+ // 30 seconds
25
+ 2 * 60 * 1000,
26
+ // 2 minutes
27
+ 10 * 60 * 1000,
28
+ // 10 minutes
29
+ 60 * 60 * 1000,
30
+ // 1 hour
31
+ 4 * 60 * 60 * 1000 // 4 hours
32
+ ];
33
+
34
+ /**
35
+ * Calculate delay for a retry attempt using exponential backoff
36
+ */
37
+ export function calculateDelay(attempt, options = {}) {
38
+ const {
39
+ baseDelayMs = 1000,
40
+ maxDelayMs = 14400000,
41
+ backoffMultiplier = 2,
42
+ jitter = true
43
+ } = options;
44
+
45
+ // Use predefined delays for upload retries
46
+ if (attempt < DEFAULT_RETRY_DELAYS.length) {
47
+ const delay = DEFAULT_RETRY_DELAYS[attempt];
48
+ if (jitter && delay > 0) {
49
+ // Add up to 10% jitter
50
+ return delay + Math.random() * delay * 0.1;
51
+ }
52
+ return delay;
53
+ }
54
+
55
+ // Fall back to exponential backoff for additional retries
56
+ let delay = baseDelayMs * Math.pow(backoffMultiplier, attempt);
57
+ delay = Math.min(delay, maxDelayMs);
58
+ if (jitter) {
59
+ // Add up to 10% jitter
60
+ delay = delay + Math.random() * delay * 0.1;
61
+ }
62
+ return Math.floor(delay);
63
+ }
64
+
65
+ /**
66
+ * Sleep for a specified duration
67
+ */
68
+ export function sleep(ms) {
69
+ return new Promise(resolve => setTimeout(resolve, ms));
70
+ }
71
+
72
+ /**
73
+ * Execute a function with retry logic
74
+ */
75
+ export async function withRetry(fn, options = {}) {
76
+ const {
77
+ maxAttempts = 6,
78
+ onRetry,
79
+ isRetryable = () => true
80
+ } = options;
81
+ let lastError;
82
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
83
+ try {
84
+ return await fn();
85
+ } catch (error) {
86
+ lastError = error instanceof Error ? error : new Error(String(error));
87
+
88
+ // Check if error is retryable
89
+ if (!isRetryable(lastError)) {
90
+ log.debug('Error is not retryable, throwing immediately', {
91
+ attempt,
92
+ error: lastError.message
93
+ });
94
+ throw lastError;
95
+ }
96
+
97
+ // Check if we have more attempts
98
+ if (attempt >= maxAttempts - 1) {
99
+ log.warn('Max retry attempts reached', {
100
+ attempt: attempt + 1,
101
+ maxAttempts,
102
+ error: lastError.message
103
+ });
104
+ throw lastError;
105
+ }
106
+
107
+ // Calculate delay
108
+ const delayMs = calculateDelay(attempt, options);
109
+ log.debug('Retrying after error', {
110
+ attempt: attempt + 1,
111
+ maxAttempts,
112
+ delayMs,
113
+ error: lastError.message
114
+ });
115
+
116
+ // Notify callback
117
+ if (onRetry) {
118
+ onRetry(attempt + 1, lastError, delayMs);
119
+ }
120
+
121
+ // Wait before retrying
122
+ if (delayMs > 0) {
123
+ await sleep(delayMs);
124
+ }
125
+ }
126
+ }
127
+
128
+ // This should never be reached, but TypeScript needs it
129
+ throw lastError ?? new Error('Retry failed');
130
+ }
131
+
132
+ /**
133
+ * Create a retryable wrapper for a function
134
+ */
135
+ export function makeRetryable(fn, options = {}) {
136
+ return async (...args) => {
137
+ return withRetry(() => fn(...args), options);
138
+ };
139
+ }
140
+
141
+ /**
142
+ * Check if we should continue retrying based on total time elapsed
143
+ */
144
+ export function shouldContinueRetrying(startTime, maxDurationMs = 24 * 60 * 60 * 1000 // 24 hours
145
+ ) {
146
+ const elapsed = Date.now() - startTime.getTime();
147
+ return elapsed < maxDurationMs;
148
+ }
149
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["logger","log","tag","DEFAULT_RETRY_DELAYS","calculateDelay","attempt","options","baseDelayMs","maxDelayMs","backoffMultiplier","jitter","length","delay","Math","random","pow","min","floor","sleep","ms","Promise","resolve","setTimeout","withRetry","fn","maxAttempts","onRetry","isRetryable","lastError","error","Error","String","debug","message","warn","delayMs","makeRetryable","args","shouldContinueRetrying","startTime","maxDurationMs","elapsed","Date","now","getTime"],"sourceRoot":"../../../src","sources":["utils/retry.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Bota Client - Main entry point for the Bota React Native SDK
3
+ */
4
+ import EventEmitter from 'eventemitter3';
5
+ import { DeviceManager } from './managers/DeviceManager';
6
+ import { RecordingManager } from './managers/RecordingManager';
7
+ import { OTAManager } from './managers/OTAManager';
8
+ import type { BotaConfig, SdkState, BluetoothState, BotaClientEvents } from './models/Status';
9
+ /**
10
+ * Bota Client class - singleton SDK entry point
11
+ */
12
+ declare class BotaClientImpl extends EventEmitter<BotaClientEvents> {
13
+ private _config;
14
+ private _state;
15
+ private _bluetoothState;
16
+ private _bleManager;
17
+ private _deviceManager;
18
+ private _recordingManager;
19
+ private _otaManager;
20
+ /**
21
+ * Get current SDK state
22
+ */
23
+ get state(): SdkState;
24
+ /**
25
+ * Get current Bluetooth state
26
+ */
27
+ get bluetoothState(): BluetoothState;
28
+ /**
29
+ * Check if Bluetooth is ready
30
+ */
31
+ get isBluetoothReady(): boolean;
32
+ /**
33
+ * Check if SDK is initialized
34
+ */
35
+ get isInitialized(): boolean;
36
+ /**
37
+ * Get current configuration
38
+ */
39
+ get config(): BotaConfig | null;
40
+ /**
41
+ * Get device manager
42
+ */
43
+ get devices(): DeviceManager;
44
+ /**
45
+ * Get recording manager
46
+ */
47
+ get recordings(): RecordingManager;
48
+ /**
49
+ * Get OTA manager
50
+ */
51
+ get ota(): OTAManager;
52
+ /**
53
+ * Configure and initialize the SDK
54
+ */
55
+ configure(config?: BotaConfig): Promise<void>;
56
+ /**
57
+ * Wait for Bluetooth to be ready
58
+ */
59
+ waitForBluetooth(timeoutMs?: number): Promise<void>;
60
+ /**
61
+ * Destroy the SDK and clean up resources
62
+ */
63
+ destroy(): Promise<void>;
64
+ /**
65
+ * Set SDK state and emit event
66
+ */
67
+ private setState;
68
+ }
69
+ /**
70
+ * Singleton instance
71
+ */
72
+ export declare const BotaClient: BotaClientImpl;
73
+ /**
74
+ * Export types
75
+ */
76
+ export type { BotaConfig, SdkState, BluetoothState };
77
+ //# sourceMappingURL=BotaClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotaClient.d.ts","sourceRoot":"","sources":["../../../src/BotaClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,YAAY,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AA4BzB;;GAEG;AACH,cAAM,cAAe,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IACzD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,eAAe,CAA6B;IAEpD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,WAAW,CAA2B;IAE9C;;OAEG;IACH,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,UAAU,GAAG,IAAI,CAE9B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,aAAa,CAK3B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,gBAAgB,CAKjC;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,UAAU,CAKpB;IAED;;OAEG;IACG,SAAS,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DvD;;OAEG;IACG,gBAAgB,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB9B;;OAEG;IACH,OAAO,CAAC,QAAQ;CAMjB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,gBAAuB,CAAC;AAE/C;;GAEG;AACH,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * BLE Manager - Abstraction layer over react-native-ble-plx
3
+ */
4
+ import { Device, State, Subscription } from 'react-native-ble-plx';
5
+ import { Buffer } from 'buffer';
6
+ import EventEmitter from 'eventemitter3';
7
+ import type { DiscoveredDevice, ScanOptions } from '../models/Device';
8
+ /**
9
+ * Events emitted by BleManager
10
+ */
11
+ interface BleManagerEvents {
12
+ stateChange: (state: State) => void;
13
+ deviceDiscovered: (device: DiscoveredDevice) => void;
14
+ deviceConnected: (deviceId: string) => void;
15
+ deviceDisconnected: (deviceId: string, error?: Error) => void;
16
+ }
17
+ /**
18
+ * BLE Manager class - singleton wrapper around react-native-ble-plx
19
+ */
20
+ export declare class BleManager extends EventEmitter<BleManagerEvents> {
21
+ private manager;
22
+ private stateSubscription;
23
+ private disconnectSubscriptions;
24
+ private connectedDevices;
25
+ private discoveredDevices;
26
+ private isScanning;
27
+ private cachedState;
28
+ constructor();
29
+ /**
30
+ * Set up Bluetooth state change listener
31
+ */
32
+ private setupStateListener;
33
+ /**
34
+ * Get current Bluetooth state
35
+ */
36
+ getState(): Promise<State>;
37
+ /**
38
+ * Get cached Bluetooth state (synchronous)
39
+ */
40
+ getCachedState(): State;
41
+ /**
42
+ * Check if Bluetooth is ready for operations
43
+ */
44
+ isReady(): Promise<boolean>;
45
+ /**
46
+ * Wait for Bluetooth to be ready
47
+ */
48
+ waitForReady(timeoutMs?: number): Promise<void>;
49
+ /**
50
+ * Start scanning for Bota devices
51
+ */
52
+ startScan(options?: ScanOptions): Promise<void>;
53
+ /**
54
+ * Stop scanning for devices
55
+ */
56
+ stopScan(): void;
57
+ /**
58
+ * Get list of discovered devices
59
+ */
60
+ getDiscoveredDevices(): DiscoveredDevice[];
61
+ /**
62
+ * Parse a discovered device from BLE advertisement data
63
+ */
64
+ private parseDiscoveredDevice;
65
+ /**
66
+ * Connect to a device
67
+ */
68
+ connect(deviceId: string): Promise<Device>;
69
+ /**
70
+ * Disconnect from a device
71
+ */
72
+ disconnect(deviceId: string): Promise<void>;
73
+ /**
74
+ * Check if a device is connected
75
+ */
76
+ isConnected(deviceId: string): boolean;
77
+ /**
78
+ * Get a connected device
79
+ */
80
+ getConnectedDevice(deviceId: string): Device | undefined;
81
+ /**
82
+ * Get negotiated MTU for a device
83
+ */
84
+ getMtu(deviceId: string): Promise<number>;
85
+ /**
86
+ * Read a characteristic value
87
+ */
88
+ readCharacteristic(deviceId: string, serviceUuid: string, characteristicUuid: string): Promise<Buffer>;
89
+ /**
90
+ * Write a characteristic value
91
+ */
92
+ writeCharacteristic(deviceId: string, serviceUuid: string, characteristicUuid: string, data: Buffer, withResponse?: boolean): Promise<void>;
93
+ /**
94
+ * Subscribe to characteristic notifications
95
+ */
96
+ subscribeToCharacteristic(deviceId: string, serviceUuid: string, characteristicUuid: string, onData: (data: Buffer) => void, onError?: (error: Error) => void): Subscription;
97
+ /**
98
+ * Destroy the BLE manager and clean up resources
99
+ */
100
+ destroy(): void;
101
+ }
102
+ /**
103
+ * Get or create the BLE manager singleton
104
+ */
105
+ export declare function getBleManager(): BleManager;
106
+ /**
107
+ * Reset the BLE manager singleton (for testing)
108
+ */
109
+ export declare function resetBleManager(): void;
110
+ export {};
111
+ //# sourceMappingURL=BleManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BleManager.d.ts","sourceRoot":"","sources":["../../../../src/ble/BleManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * BLE Service and Characteristic UUIDs for Bota devices
3
+ * Based on Device-App Protocol specification
4
+ */
5
+ export declare const SERVICE_DEVICE_INFO = "180A";
6
+ export declare const SERVICE_BATTERY = "180F";
7
+ export declare const SERVICE_NORDIC_DFU = "FE59";
8
+ export declare const SERVICE_BOTA_AUDIO = "B07A0001-0000-1000-8000-00805F9B34FB";
9
+ export declare const SERVICE_BOTA_CONTROL = "B07A0002-0000-1000-8000-00805F9B34FB";
10
+ export declare const SERVICE_BOTA_PROVISIONING = "B07A0003-0000-1000-8000-00805F9B34FB";
11
+ export declare const SERVICE_BOTA_STORAGE = "B07A0004-0000-1000-8000-00805F9B34FB";
12
+ export declare const CHAR_MANUFACTURER_NAME = "2A29";
13
+ export declare const CHAR_MODEL_NUMBER = "2A24";
14
+ export declare const CHAR_SERIAL_NUMBER = "2A25";
15
+ export declare const CHAR_HARDWARE_REVISION = "2A27";
16
+ export declare const CHAR_FIRMWARE_REVISION = "2A26";
17
+ export declare const CHAR_BATTERY_LEVEL = "2A19";
18
+ export declare const CHAR_AUDIO_DATA = "B07A0001-0001-1000-8000-00805F9B34FB";
19
+ export declare const CHAR_AUDIO_CODEC = "B07A0001-0002-1000-8000-00805F9B34FB";
20
+ export declare const CHAR_AUDIO_CONTROL = "B07A0001-0003-1000-8000-00805F9B34FB";
21
+ export declare const CHAR_DEVICE_STATUS = "B07A0002-0001-1000-8000-00805F9B34FB";
22
+ export declare const CHAR_RECORDING_CONTROL = "B07A0002-0002-1000-8000-00805F9B34FB";
23
+ export declare const CHAR_RECORDING_STATUS = "B07A0002-0003-1000-8000-00805F9B34FB";
24
+ export declare const CHAR_TIME_SYNC = "B07A0002-0004-1000-8000-00805F9B34FB";
25
+ export declare const CHAR_DEVICE_COMMAND = "B07A0002-0005-1000-8000-00805F9B34FB";
26
+ export declare const CHAR_PAIRING_STATE = "B07A0003-0001-1000-8000-00805F9B34FB";
27
+ export declare const CHAR_DEVICE_TOKEN = "B07A0003-0002-1000-8000-00805F9B34FB";
28
+ export declare const CHAR_API_ENDPOINT = "B07A0003-0003-1000-8000-00805F9B34FB";
29
+ export declare const CHAR_WIFI_CONFIG = "B07A0003-0004-1000-8000-00805F9B34FB";
30
+ export declare const CHAR_PROVISIONING_RESULT = "B07A0003-0005-1000-8000-00805F9B34FB";
31
+ export declare const CHAR_STORAGE_INFO = "B07A0004-0001-1000-8000-00805F9B34FB";
32
+ export declare const CHAR_RECORDING_LIST = "B07A0004-0002-1000-8000-00805F9B34FB";
33
+ export declare const CHAR_RECORDING_TRANSFER = "B07A0004-0003-1000-8000-00805F9B34FB";
34
+ export declare const CHAR_TRANSFER_CONTROL = "B07A0004-0004-1000-8000-00805F9B34FB";
35
+ export declare const CHAR_TRANSFER_STATUS = "B07A0004-0005-1000-8000-00805F9B34FB";
36
+ export declare const DEVICE_NAME_PREFIX = "Bota-";
37
+ export declare const DEVICE_NAME_PREFIX_PIN = "Bota-Pin-";
38
+ export declare const DEVICE_NAME_PREFIX_PIN_4G = "Bota-Pin4G-";
39
+ export declare const DEVICE_NAME_PREFIX_NOTE = "Bota-Note-";
40
+ export declare const MFG_DATA_DEVICE_TYPE = 0;
41
+ export declare const MFG_DATA_FW_MAJOR = 1;
42
+ export declare const MFG_DATA_FW_MINOR = 2;
43
+ export declare const MFG_DATA_PAIRING_STATE = 3;
44
+ export declare const MFG_DATA_BATTERY = 4;
45
+ export declare const DEVICE_TYPE_PIN = 1;
46
+ export declare const DEVICE_TYPE_PIN_4G = 2;
47
+ export declare const DEVICE_TYPE_NOTE = 3;
48
+ export declare const PAIRING_STATE_UNPAIRED = 0;
49
+ export declare const PAIRING_STATE_PAIRING = 1;
50
+ export declare const PAIRING_STATE_PAIRED = 2;
51
+ export declare const PAIRING_STATE_ERROR = 3;
52
+ export declare const PROVISIONING_SUCCESS = 0;
53
+ export declare const PROVISIONING_INVALID_TOKEN = 1;
54
+ export declare const PROVISIONING_STORAGE_ERROR = 2;
55
+ export declare const PROVISIONING_CHUNK_ERROR = 3;
56
+ export declare const API_ENDPOINT_PRODUCTION = 0;
57
+ export declare const API_ENDPOINT_SANDBOX = 1;
58
+ export declare const TRANSFER_CMD_LIST = 1;
59
+ export declare const TRANSFER_CMD_START = 2;
60
+ export declare const TRANSFER_CMD_CONFIRM_SYNC = 7;
61
+ export declare const PACKET_TYPE_DATA = 1;
62
+ export declare const PACKET_TYPE_EOF = 2;
63
+ export declare const PACKET_TYPE_ERROR = 255;
64
+ export declare const ACK_TYPE_ACK = 16;
65
+ export declare const ACK_TYPE_NACK = 17;
66
+ export declare const ACK_TYPE_ABORT = 18;
67
+ export declare const DEVICE_CMD_ENTER_DFU = 3;
68
+ export declare const DEVICE_STATE_IDLE = 0;
69
+ export declare const DEVICE_STATE_RECORDING = 1;
70
+ export declare const DEVICE_STATE_SYNCING = 2;
71
+ export declare const DEVICE_STATE_UPLOADING = 3;
72
+ export declare const DEVICE_STATE_CHARGING = 4;
73
+ export declare const DEVICE_STATE_LOW_BATTERY = 5;
74
+ export declare const DEVICE_STATE_STORAGE_FULL = 6;
75
+ export declare const DEVICE_STATE_ERROR = 255;
76
+ export declare const FLAG_CHARGING: number;
77
+ export declare const FLAG_USB_CONNECTED: number;
78
+ export declare const FLAG_LOW_BATTERY: number;
79
+ export declare const FLAG_CRITICAL_BATTERY: number;
80
+ export declare const FLAG_STORAGE_WARNING: number;
81
+ export declare const FLAG_STORAGE_FULL: number;
82
+ export declare const FLAG_CELLULAR_AVAILABLE: number;
83
+ export declare const FLAG_CELLULAR_ROAMING: number;
84
+ export declare const FLAG_WIFI_CONNECTED: number;
85
+ export declare const FLAG_RECORDING_ACTIVE: number;
86
+ export declare const FLAG_SYNC_REQUIRED: number;
87
+ export declare const FLAG_UPDATE_AVAILABLE: number;
88
+ export declare const CODEC_PCM_16K = 0;
89
+ export declare const CODEC_PCM_8K = 1;
90
+ export declare const CODEC_OPUS_16K = 16;
91
+ export declare const CODEC_OPUS_8K = 17;
92
+ export declare const BLE_ERROR_SUCCESS = 0;
93
+ export declare const BLE_ERROR_INVALID_COMMAND = 1;
94
+ export declare const BLE_ERROR_INVALID_STATE = 2;
95
+ export declare const BLE_ERROR_INVALID_PARAMETER = 3;
96
+ export declare const BLE_ERROR_STORAGE_FULL = 16;
97
+ export declare const BLE_ERROR_RECORDING_NOT_FOUND = 17;
98
+ export declare const BLE_ERROR_TRANSFER_FAILED = 18;
99
+ export declare const BLE_ERROR_TOKEN_INVALID = 32;
100
+ export declare const BLE_ERROR_TOKEN_EXPIRED = 33;
101
+ export declare const BLE_ERROR_NETWORK_ERROR = 48;
102
+ export declare const BLE_ERROR_UPLOAD_FAILED = 49;
103
+ export declare const BLE_ERROR_UNKNOWN = 255;
104
+ export declare const SCAN_TIMEOUT = 30000;
105
+ export declare const CONNECTION_TIMEOUT = 30000;
106
+ export declare const OPERATION_TIMEOUT = 10000;
107
+ export declare const TRANSFER_PACKET_TIMEOUT = 2000;
108
+ export declare const TRANSFER_WINDOW_SIZE = 4;
109
+ export declare const DEFAULT_MTU = 23;
110
+ export declare const MAX_MTU = 512;
111
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/ble/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * BLE module exports
3
+ */
4
+ export * from './constants';
5
+ export * from './parsers';
6
+ export { BleManager, getBleManager, resetBleManager } from './BleManager';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ble/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}