ultimatedarktower 1.0.0 → 2.1.0
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 +122 -28
- package/dist/src/UltimateDarkTower.d.ts +19 -3
- package/dist/src/UltimateDarkTower.js +20 -5
- package/dist/src/UltimateDarkTower.js.map +1 -1
- package/dist/src/adapters/NodeBluetoothAdapter.d.ts +55 -0
- package/dist/src/adapters/NodeBluetoothAdapter.js +322 -0
- package/dist/src/adapters/NodeBluetoothAdapter.js.map +1 -0
- package/dist/src/adapters/WebBluetoothAdapter.d.ts +27 -0
- package/dist/src/adapters/WebBluetoothAdapter.js +184 -0
- package/dist/src/adapters/WebBluetoothAdapter.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +10 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/udtBleConnection.d.ts +15 -9
- package/dist/src/udtBleConnection.js +94 -172
- package/dist/src/udtBleConnection.js.map +1 -1
- package/dist/src/udtBluetoothAdapter.d.ts +62 -0
- package/dist/src/udtBluetoothAdapter.js +57 -0
- package/dist/src/udtBluetoothAdapter.js.map +1 -0
- package/dist/src/udtBluetoothAdapterFactory.d.ts +19 -0
- package/dist/src/udtBluetoothAdapterFactory.js +61 -0
- package/dist/src/udtBluetoothAdapterFactory.js.map +1 -0
- package/dist/src/udtCommandQueue.js.map +1 -1
- package/dist/src/udtTowerCommands.js +5 -4
- package/dist/src/udtTowerCommands.js.map +1 -1
- package/package.json +13 -2
package/README.md
CHANGED
|
@@ -1,28 +1,45 @@
|
|
|
1
1
|
# UltimateDarkTower
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/ultimatedarktower)
|
|
4
|
+
[](https://www.npmjs.com/package/ultimatedarktower)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://www.typescriptlang.org/)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
|
|
9
|
+
A JavaScript/TypeScript library for controlling the Bluetooth-enabled tower from Restoration Games' Return to Dark Tower board game. Control lights, sounds, drum rotation, and track game state via Bluetooth - works in browsers (Web Bluetooth), Node.js, Electron, and React Native.
|
|
4
10
|
|
|
5
11
|
I have spent many hours reverse engineering the Tower's protocol in order to create this library, I look forward to what others will create using this! - Chris
|
|
6
12
|
|
|
7
13
|
## Table of Contents
|
|
8
14
|
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
- [UltimateDarkTower](#ultimatedarktower)
|
|
16
|
+
- [Table of Contents](#table-of-contents)
|
|
17
|
+
- [Features](#features)
|
|
18
|
+
- [Live Examples](#live-examples)
|
|
19
|
+
- [Installation](#installation)
|
|
20
|
+
- [Browser / Web Applications](#browser--web-applications)
|
|
21
|
+
- [Node.js Applications](#nodejs-applications)
|
|
22
|
+
- [Quick Start](#quick-start)
|
|
23
|
+
- [Browser (auto-detected)](#browser-auto-detected)
|
|
24
|
+
- [Node.js (auto-detected)](#nodejs-auto-detected)
|
|
25
|
+
- [Explicit Platform Selection](#explicit-platform-selection)
|
|
26
|
+
- [Custom Adapter (React Native, etc.)](#custom-adapter-react-native-etc)
|
|
27
|
+
- [Documentation](#documentation)
|
|
28
|
+
- [📖 Complete API Reference](#-complete-api-reference)
|
|
29
|
+
- [Key Topics Covered:](#key-topics-covered)
|
|
30
|
+
- [Development](#development)
|
|
31
|
+
- [Building and Testing](#building-and-testing)
|
|
32
|
+
- [Project Structure](#project-structure)
|
|
33
|
+
- [Platform Support](#platform-support)
|
|
34
|
+
- [Built-in Support (auto-detected)](#built-in-support-auto-detected)
|
|
35
|
+
- [Custom Adapter Support](#custom-adapter-support)
|
|
36
|
+
- [Browser Support](#browser-support)
|
|
37
|
+
- [Known Issues](#known-issues)
|
|
38
|
+
- [Community](#community)
|
|
23
39
|
|
|
24
40
|
## Features
|
|
25
41
|
|
|
42
|
+
- **Multi-Platform Bluetooth** - Works in browsers (Web Bluetooth), Node.js (`@stoprocent/noble`), Electron, and React Native via custom adapters
|
|
26
43
|
- **Bluetooth Connection Management** - Reliable connection with automatic monitoring and disconnect detection
|
|
27
44
|
- **Tower Control** - Complete control over lights, sounds, and drum rotation
|
|
28
45
|
- **Game State Tracking** - Track glyph positions, broken seals, and skull counts
|
|
@@ -30,6 +47,7 @@ I have spent many hours reverse engineering the Tower's protocol in order to cre
|
|
|
30
47
|
- **TypeScript Support** - Full TypeScript definitions and type safety
|
|
31
48
|
- **Comprehensive Logging** - Multi-output logging system for debugging
|
|
32
49
|
- **Battery Monitoring** - Real-time battery level tracking and low battery warnings
|
|
50
|
+
- **Extensible Adapter Pattern** - Implement `IBluetoothAdapter` for custom platforms
|
|
33
51
|
|
|
34
52
|
## Live Examples
|
|
35
53
|
|
|
@@ -43,10 +61,69 @@ _Requires Web Bluetooth support (Chrome, Edge, Samsung Internet). For iOS, use t
|
|
|
43
61
|
|
|
44
62
|
## Installation
|
|
45
63
|
|
|
64
|
+
### Browser / Web Applications
|
|
65
|
+
|
|
46
66
|
```bash
|
|
47
67
|
npm install ultimatedarktower
|
|
48
68
|
```
|
|
49
69
|
|
|
70
|
+
### Node.js Applications
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install ultimatedarktower @stoprocent/noble
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
> `@stoprocent/noble` is an optional peer dependency for BLE support in Node.js environments.
|
|
77
|
+
>
|
|
78
|
+
> **Platform requirements:** macOS works out of the box. Linux requires BlueZ (`sudo apt install bluetooth bluez libbluetooth-dev`). Windows requires Windows 10+ with BLE support.
|
|
79
|
+
|
|
80
|
+
## Quick Start
|
|
81
|
+
|
|
82
|
+
### Browser (auto-detected)
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
import UltimateDarkTower from 'ultimatedarktower';
|
|
86
|
+
|
|
87
|
+
const tower = new UltimateDarkTower();
|
|
88
|
+
await tower.connect(); // Opens browser device picker
|
|
89
|
+
await tower.calibrate();
|
|
90
|
+
await tower.playSound(1);
|
|
91
|
+
await tower.cleanup();
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Node.js (auto-detected)
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
import UltimateDarkTower from 'ultimatedarktower';
|
|
98
|
+
|
|
99
|
+
const tower = new UltimateDarkTower();
|
|
100
|
+
await tower.connect(); // Scans for device automatically
|
|
101
|
+
await tower.calibrate();
|
|
102
|
+
await tower.playSound(1);
|
|
103
|
+
await tower.cleanup();
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Explicit Platform Selection
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
import UltimateDarkTower, { BluetoothPlatform } from 'ultimatedarktower';
|
|
110
|
+
|
|
111
|
+
const tower = new UltimateDarkTower({ platform: BluetoothPlatform.NODE });
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Custom Adapter (React Native, etc.)
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import UltimateDarkTower, { IBluetoothAdapter } from 'ultimatedarktower';
|
|
118
|
+
|
|
119
|
+
class MyCustomAdapter implements IBluetoothAdapter {
|
|
120
|
+
// Implement all IBluetoothAdapter methods
|
|
121
|
+
// See Reference.md for the full interface
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const tower = new UltimateDarkTower({ adapter: new MyCustomAdapter() });
|
|
125
|
+
```
|
|
126
|
+
|
|
50
127
|
## Documentation
|
|
51
128
|
|
|
52
129
|
### 📖 [Complete API Reference](Reference.md)
|
|
@@ -55,7 +132,9 @@ Comprehensive documentation with TypeScript examples, best practices, and troubl
|
|
|
55
132
|
|
|
56
133
|
### Key Topics Covered:
|
|
57
134
|
|
|
135
|
+
- **Multi-Platform Setup** - Configuration for Web, Node.js, Electron, and React Native
|
|
58
136
|
- **Connection Management** - Connecting, disconnecting, and monitoring connection health
|
|
137
|
+
- **Bluetooth Adapters** - Custom adapter interface for extending platform support
|
|
59
138
|
- **Tower Control** - Detailed coverage of all tower commands (lights, sounds, rotation)
|
|
60
139
|
- **Glyph System** - Automatic tracking of glyph positions as towers rotate
|
|
61
140
|
- **Seal Management** - Breaking seals and tracking game state
|
|
@@ -94,6 +173,8 @@ npm run watch
|
|
|
94
173
|
src/
|
|
95
174
|
├── index.ts # Main exports
|
|
96
175
|
├── UltimateDarkTower.ts # Main class
|
|
176
|
+
├── udtBluetoothAdapter.ts # Bluetooth adapter interface & error types
|
|
177
|
+
├── udtBluetoothAdapterFactory.ts # Platform auto-detection factory
|
|
97
178
|
├── udtBleConnection.ts # Bluetooth connection management
|
|
98
179
|
├── udtTowerCommands.ts # Tower command implementations
|
|
99
180
|
├── udtCommandFactory.ts # Command creation utilities
|
|
@@ -102,34 +183,47 @@ src/
|
|
|
102
183
|
├── udtTowerState.ts # Tower state management
|
|
103
184
|
├── udtHelpers.ts # Utility helper functions
|
|
104
185
|
├── udtLogger.ts # Logging system
|
|
105
|
-
|
|
186
|
+
├── udtConstants.ts # Constants and type definitions
|
|
187
|
+
└── adapters/
|
|
188
|
+
├── WebBluetoothAdapter.ts # Browser Web Bluetooth implementation
|
|
189
|
+
└── NodeBluetoothAdapter.ts # Node.js @stoprocent/noble BLE implementation
|
|
106
190
|
|
|
107
191
|
examples/
|
|
108
192
|
├── controller/ # Tower controller web app
|
|
109
193
|
├── game/ # Tower game web app
|
|
194
|
+
├── node/ # Node.js CLI example
|
|
110
195
|
└── assets/ # Shared assets (images, fonts, etc.)
|
|
111
196
|
```
|
|
112
197
|
|
|
113
|
-
##
|
|
198
|
+
## Platform Support
|
|
114
199
|
|
|
115
|
-
|
|
200
|
+
### Built-in Support (auto-detected)
|
|
116
201
|
|
|
117
|
-
|
|
202
|
+
| Platform | Bluetooth Library | Notes |
|
|
203
|
+
| -------------------------------- | ------------------------------------ | ---------------------------------------- |
|
|
204
|
+
| Chrome / Edge / Samsung Internet | Web Bluetooth API | Desktop and Android |
|
|
205
|
+
| Node.js | `@stoprocent/noble` | Requires `npm install @stoprocent/noble` |
|
|
206
|
+
| Electron | Web Bluetooth or `@stoprocent/noble` | Auto-detects renderer vs main process |
|
|
118
207
|
|
|
119
|
-
|
|
120
|
-
- Microsoft Edge
|
|
121
|
-
- Samsung Internet
|
|
208
|
+
### Custom Adapter Support
|
|
122
209
|
|
|
123
|
-
|
|
210
|
+
| Platform | Recommended Library | Notes |
|
|
211
|
+
| -------------------------- | ---------------------- | ----------------------------- |
|
|
212
|
+
| React Native | `react-native-ble-plx` | Implement `IBluetoothAdapter` |
|
|
213
|
+
| iOS (via React Native) | `react-native-ble-plx` | Same as React Native |
|
|
214
|
+
| Android (via React Native) | `react-native-ble-plx` | Same as React Native |
|
|
215
|
+
| Cordova / Capacitor | Platform BLE plugin | Implement `IBluetoothAdapter` |
|
|
124
216
|
|
|
125
|
-
|
|
217
|
+
### Browser Support
|
|
126
218
|
|
|
127
|
-
|
|
219
|
+
**iOS:** Use the [Bluefy app](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055) as Chrome/Safari does not support Web Bluetooth on Apple platforms.
|
|
220
|
+
|
|
221
|
+
**Not Supported:** Firefox, Safari ([compatibility details](https://caniuse.com/?search=web%20bluetooth))
|
|
128
222
|
|
|
129
|
-
|
|
223
|
+
## Known Issues
|
|
130
224
|
|
|
131
|
-
- **
|
|
132
|
-
|
|
225
|
+
- **Sounds** - Sounds show as command complete which is true even though the sound itself has not completed. This is just the way the tower works. I'll have to add time lengths to each at some point, just don't use the command complete response as a way of thinking the associated sound has finished playing and you can play another sound.
|
|
226
|
+
- **Light Sequences** - Same as sound for lights that play for a duration.
|
|
133
227
|
|
|
134
228
|
> See [Reference.md](Reference.md) for performance best practices and workarounds.
|
|
135
229
|
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { type Lights, type TowerSide, type SealIdentifier, type Glyphs } from './udtConstants';
|
|
2
2
|
import { type TowerState } from './udtTowerState';
|
|
3
3
|
import { type LogOutput } from './udtLogger';
|
|
4
|
-
import { type ConnectionStatus } from './udtBleConnection';
|
|
4
|
+
import { type ConnectionStatus, type DeviceInformation } from './udtBleConnection';
|
|
5
|
+
import { type IBluetoothAdapter } from './udtBluetoothAdapter';
|
|
6
|
+
import { BluetoothPlatform } from './udtBluetoothAdapterFactory';
|
|
7
|
+
/**
|
|
8
|
+
* Configuration options for the UltimateDarkTower class.
|
|
9
|
+
* All options are optional - the library will auto-detect the platform by default.
|
|
10
|
+
*/
|
|
11
|
+
export interface UltimateDarkTowerConfig {
|
|
12
|
+
/** Platform to use for Bluetooth communication (auto-detect by default) */
|
|
13
|
+
platform?: BluetoothPlatform;
|
|
14
|
+
/** Custom Bluetooth adapter (for testing or custom platforms like React Native) */
|
|
15
|
+
adapter?: IBluetoothAdapter;
|
|
16
|
+
}
|
|
5
17
|
/**
|
|
6
18
|
* Configuration interface for controlling which tower responses should be logged
|
|
7
19
|
*/
|
|
@@ -60,7 +72,7 @@ declare class UltimateDarkTower {
|
|
|
60
72
|
onSkullDrop: (towerSkullCount: number) => void;
|
|
61
73
|
onBatteryLevelNotify: (millivolts: number) => void;
|
|
62
74
|
onTowerStateUpdate: (newState: TowerState, oldState: TowerState, source: string) => void;
|
|
63
|
-
constructor();
|
|
75
|
+
constructor(config?: UltimateDarkTowerConfig);
|
|
64
76
|
/**
|
|
65
77
|
* Initialize the logger with default console output
|
|
66
78
|
*/
|
|
@@ -96,7 +108,6 @@ declare class UltimateDarkTower {
|
|
|
96
108
|
get performingCalibration(): boolean;
|
|
97
109
|
get performingLongCommand(): boolean;
|
|
98
110
|
get towerSkullDropCount(): number;
|
|
99
|
-
get txCharacteristic(): any;
|
|
100
111
|
get currentBattery(): number;
|
|
101
112
|
get previousBattery(): number;
|
|
102
113
|
get currentBatteryPercent(): number;
|
|
@@ -370,6 +381,11 @@ declare class UltimateDarkTower {
|
|
|
370
381
|
* @returns {Object} Object with connection details
|
|
371
382
|
*/
|
|
372
383
|
getConnectionStatus(): ConnectionStatus;
|
|
384
|
+
/**
|
|
385
|
+
* Get device information read from the tower's Device Information Service (DIS)
|
|
386
|
+
* @returns {DeviceInformation} Object with manufacturer, model, serial, firmware, etc.
|
|
387
|
+
*/
|
|
388
|
+
getDeviceInformation(): DeviceInformation;
|
|
373
389
|
/**
|
|
374
390
|
* Clean up resources and disconnect properly
|
|
375
391
|
* @returns {Promise<void>} Promise that resolves when cleanup is complete
|
|
@@ -31,6 +31,7 @@ const udtBleConnection_1 = require("./udtBleConnection");
|
|
|
31
31
|
const udtTowerResponse_1 = require("./udtTowerResponse");
|
|
32
32
|
const udtCommandFactory_1 = require("./udtCommandFactory");
|
|
33
33
|
const udtTowerCommands_1 = require("./udtTowerCommands");
|
|
34
|
+
const udtBluetoothAdapterFactory_1 = require("./udtBluetoothAdapterFactory");
|
|
34
35
|
/**
|
|
35
36
|
* @title UltimateDarkTower
|
|
36
37
|
* @description
|
|
@@ -53,7 +54,7 @@ const udtTowerCommands_1 = require("./udtTowerCommands");
|
|
|
53
54
|
* - onTowerStateUpdate: Called whenever the tower state is updated
|
|
54
55
|
*/
|
|
55
56
|
class UltimateDarkTower {
|
|
56
|
-
constructor() {
|
|
57
|
+
constructor(config) {
|
|
57
58
|
// tower configuration
|
|
58
59
|
this.retrySendCommandCountRef = { value: 0 };
|
|
59
60
|
this.retrySendCommandMax = udtConstants_1.DEFAULT_RETRY_SEND_COMMAND_MAX;
|
|
@@ -88,7 +89,7 @@ class UltimateDarkTower {
|
|
|
88
89
|
// utility
|
|
89
90
|
this._logDetail = false;
|
|
90
91
|
this.initializeLogger();
|
|
91
|
-
this.initializeComponents();
|
|
92
|
+
this.initializeComponents(config);
|
|
92
93
|
this.setupTowerResponseCallback();
|
|
93
94
|
}
|
|
94
95
|
/**
|
|
@@ -101,10 +102,18 @@ class UltimateDarkTower {
|
|
|
101
102
|
/**
|
|
102
103
|
* Initialize all tower components and their dependencies
|
|
103
104
|
*/
|
|
104
|
-
initializeComponents() {
|
|
105
|
+
initializeComponents(config) {
|
|
106
|
+
// Resolve the Bluetooth adapter
|
|
107
|
+
let adapter;
|
|
108
|
+
if (config === null || config === void 0 ? void 0 : config.adapter) {
|
|
109
|
+
adapter = config.adapter;
|
|
110
|
+
}
|
|
111
|
+
else if (config === null || config === void 0 ? void 0 : config.platform) {
|
|
112
|
+
adapter = udtBluetoothAdapterFactory_1.BluetoothAdapterFactory.create(config.platform);
|
|
113
|
+
}
|
|
105
114
|
// Initialize BLE connection with tower event handlers
|
|
106
115
|
this.towerEventCallbacks = this.createTowerEventCallbacks();
|
|
107
|
-
this.bleConnection = new udtBleConnection_1.UdtBleConnection(this.logger, this.towerEventCallbacks);
|
|
116
|
+
this.bleConnection = new udtBleConnection_1.UdtBleConnection(this.logger, this.towerEventCallbacks, adapter);
|
|
108
117
|
// Initialize response processor
|
|
109
118
|
this.responseProcessor = new udtTowerResponse_1.TowerResponseProcessor(this.logDetail);
|
|
110
119
|
// Initialize command factory
|
|
@@ -205,7 +214,6 @@ class UltimateDarkTower {
|
|
|
205
214
|
get performingCalibration() { return this.bleConnection.performingCalibration; }
|
|
206
215
|
get performingLongCommand() { return this.bleConnection.performingLongCommand; }
|
|
207
216
|
get towerSkullDropCount() { return this.bleConnection.towerSkullDropCount; }
|
|
208
|
-
get txCharacteristic() { return this.bleConnection.txCharacteristic; }
|
|
209
217
|
// Getter methods for battery state
|
|
210
218
|
get currentBattery() { return this.currentBatteryValue; }
|
|
211
219
|
get previousBattery() { return this.previousBatteryValue; }
|
|
@@ -711,6 +719,13 @@ class UltimateDarkTower {
|
|
|
711
719
|
getConnectionStatus() {
|
|
712
720
|
return this.bleConnection.getConnectionStatus();
|
|
713
721
|
}
|
|
722
|
+
/**
|
|
723
|
+
* Get device information read from the tower's Device Information Service (DIS)
|
|
724
|
+
* @returns {DeviceInformation} Object with manufacturer, model, serial, firmware, etc.
|
|
725
|
+
*/
|
|
726
|
+
getDeviceInformation() {
|
|
727
|
+
return this.bleConnection.getDeviceInformation();
|
|
728
|
+
}
|
|
714
729
|
//#endregion
|
|
715
730
|
//#region cleanup
|
|
716
731
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UltimateDarkTower.js","sourceRoot":"","sources":["../../src/UltimateDarkTower.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UltimateDarkTower.js","sourceRoot":"","sources":["../../src/UltimateDarkTower.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type IBluetoothAdapter } from '../udtBluetoothAdapter';
|
|
2
|
+
import { type DeviceInformation } from '../udtBleConnection';
|
|
3
|
+
/**
|
|
4
|
+
* Node.js Bluetooth adapter implementation using @stoprocent/noble.
|
|
5
|
+
* Noble is a singleton EventEmitter - event listeners must be carefully managed to prevent leaks.
|
|
6
|
+
*
|
|
7
|
+
* Install with: npm install @stoprocent/noble
|
|
8
|
+
*
|
|
9
|
+
* Platform requirements:
|
|
10
|
+
* - macOS: Works out of the box (CoreBluetooth via XPC)
|
|
11
|
+
* - Linux: Requires BlueZ (sudo apt install bluetooth bluez libbluetooth-dev)
|
|
12
|
+
* - Windows: Requires Windows 10+ with BLE support
|
|
13
|
+
*/
|
|
14
|
+
export declare class NodeBluetoothAdapter implements IBluetoothAdapter {
|
|
15
|
+
private peripheral;
|
|
16
|
+
private txCharacteristic;
|
|
17
|
+
private rxCharacteristic;
|
|
18
|
+
private allCharacteristics;
|
|
19
|
+
private characteristicCallback?;
|
|
20
|
+
private disconnectCallback?;
|
|
21
|
+
private availabilityCallback?;
|
|
22
|
+
private boundStateChangeHandler?;
|
|
23
|
+
private boundDataHandler?;
|
|
24
|
+
private boundDisconnectHandler?;
|
|
25
|
+
private isConnectedFlag;
|
|
26
|
+
/**
|
|
27
|
+
* Waits for Noble's BLE adapter to reach 'poweredOn' state.
|
|
28
|
+
* Uses @stoprocent/noble's built-in waitForPoweredOnAsync().
|
|
29
|
+
*/
|
|
30
|
+
private ensureNobleReady;
|
|
31
|
+
connect(deviceName: string, serviceUuids: string[]): Promise<void>;
|
|
32
|
+
disconnect(): Promise<void>;
|
|
33
|
+
isConnected(): boolean;
|
|
34
|
+
isGattConnected(): boolean;
|
|
35
|
+
writeCharacteristic(data: Uint8Array): Promise<void>;
|
|
36
|
+
onCharacteristicValueChanged(callback: (data: Uint8Array) => void): void;
|
|
37
|
+
onDisconnect(callback: () => void): void;
|
|
38
|
+
onBluetoothAvailabilityChanged(callback: (available: boolean) => void): void;
|
|
39
|
+
readDeviceInformation(): Promise<DeviceInformation>;
|
|
40
|
+
cleanup(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Scans for a BLE device by name using Noble's event-driven discovery
|
|
43
|
+
*/
|
|
44
|
+
private scanForDevice;
|
|
45
|
+
/**
|
|
46
|
+
* Normalizes UUID to Noble's format (lowercase, no dashes)
|
|
47
|
+
*/
|
|
48
|
+
private normalizeUuid;
|
|
49
|
+
/**
|
|
50
|
+
* Extracts the short 4-character UUID from a standard 128-bit BLE UUID.
|
|
51
|
+
* Standard BLE UUIDs follow the pattern 0000XXXX-0000-1000-8000-00805f9b34fb
|
|
52
|
+
* where XXXX is the short UUID. Noble uses this short form for standard characteristics.
|
|
53
|
+
*/
|
|
54
|
+
private toShortUuid;
|
|
55
|
+
}
|