node-poweredup 10.0.0 → 10.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 +0 -1
- package/dist/browser/poweredup.js +6193 -0
- package/dist/browser/poweredup.js.map +7 -0
- package/dist/consts.d.ts +40 -0
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +42 -0
- package/dist/consts.js.map +1 -1
- package/dist/devices/absolutemotor.d.ts +8 -6
- package/dist/devices/absolutemotor.d.ts.map +1 -1
- package/dist/devices/absolutemotor.js +24 -31
- package/dist/devices/absolutemotor.js.map +1 -1
- package/dist/devices/basicmotor.d.ts +11 -10
- package/dist/devices/basicmotor.d.ts.map +1 -1
- package/dist/devices/basicmotor.js +16 -22
- package/dist/devices/basicmotor.js.map +1 -1
- package/dist/devices/colordistancesensor.d.ts +13 -12
- package/dist/devices/colordistancesensor.d.ts.map +1 -1
- package/dist/devices/colordistancesensor.js +25 -31
- package/dist/devices/colordistancesensor.js.map +1 -1
- package/dist/devices/device.d.ts +15 -6
- package/dist/devices/device.d.ts.map +1 -1
- package/dist/devices/device.js +209 -21
- package/dist/devices/device.js.map +1 -1
- package/dist/devices/duplotrainbasespeaker.d.ts +4 -4
- package/dist/devices/duplotrainbasespeaker.d.ts.map +1 -1
- package/dist/devices/duplotrainbasespeaker.js +5 -8
- package/dist/devices/duplotrainbasespeaker.js.map +1 -1
- package/dist/devices/hubled.d.ts +5 -4
- package/dist/devices/hubled.d.ts.map +1 -1
- package/dist/devices/hubled.js +24 -24
- package/dist/devices/hubled.js.map +1 -1
- package/dist/devices/light.d.ts +7 -4
- package/dist/devices/light.d.ts.map +1 -1
- package/dist/devices/light.js +11 -17
- package/dist/devices/light.js.map +1 -1
- package/dist/devices/piezobuzzer.d.ts +3 -2
- package/dist/devices/piezobuzzer.d.ts.map +1 -1
- package/dist/devices/piezobuzzer.js +2 -2
- package/dist/devices/piezobuzzer.js.map +1 -1
- package/dist/devices/tachomotor.d.ts +14 -8
- package/dist/devices/tachomotor.d.ts.map +1 -1
- package/dist/devices/tachomotor.js +50 -56
- package/dist/devices/tachomotor.js.map +1 -1
- package/dist/devices/technic3x3colorlightmatrix.d.ts +3 -2
- package/dist/devices/technic3x3colorlightmatrix.d.ts.map +1 -1
- package/dist/devices/technic3x3colorlightmatrix.js +20 -23
- package/dist/devices/technic3x3colorlightmatrix.js.map +1 -1
- package/dist/devices/techniccolorsensor.d.ts +9 -4
- package/dist/devices/techniccolorsensor.d.ts.map +1 -1
- package/dist/devices/techniccolorsensor.js +99 -8
- package/dist/devices/techniccolorsensor.js.map +1 -1
- package/dist/devices/technicdistancesensor.d.ts +1 -1
- package/dist/devices/technicdistancesensor.js +1 -1
- package/dist/devices/technicmediumhubtiltsensor.d.ts +7 -6
- package/dist/devices/technicmediumhubtiltsensor.d.ts.map +1 -1
- package/dist/devices/technicmediumhubtiltsensor.js +9 -18
- package/dist/devices/technicmediumhubtiltsensor.js.map +1 -1
- package/dist/devices/tiltsensor.d.ts +4 -1
- package/dist/devices/tiltsensor.d.ts.map +1 -1
- package/dist/devices/tiltsensor.js +84 -3
- package/dist/devices/tiltsensor.js.map +1 -1
- package/dist/hubs/basehub.d.ts +1 -0
- package/dist/hubs/basehub.d.ts.map +1 -1
- package/dist/hubs/basehub.js +17 -0
- package/dist/hubs/basehub.js.map +1 -1
- package/dist/hubs/lpf2hub.d.ts +1 -0
- package/dist/hubs/lpf2hub.d.ts.map +1 -1
- package/dist/hubs/lpf2hub.js +11 -0
- package/dist/hubs/lpf2hub.js.map +1 -1
- package/dist/portoutputcommand.d.ts +13 -0
- package/dist/portoutputcommand.d.ts.map +1 -0
- package/dist/portoutputcommand.js +30 -0
- package/dist/portoutputcommand.js.map +1 -0
- package/dist/portoutputsleep.d.ts +6 -0
- package/dist/portoutputsleep.d.ts.map +1 -0
- package/dist/portoutputsleep.js +10 -0
- package/dist/portoutputsleep.js.map +1 -0
- package/dist/utils.d.ts +1 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +13 -19
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/consts.ts +44 -0
- package/src/devices/absolutemotor.ts +24 -31
- package/src/devices/basicmotor.ts +16 -22
- package/src/devices/colordistancesensor.ts +23 -29
- package/src/devices/device.ts +198 -20
- package/src/devices/duplotrainbasespeaker.ts +5 -8
- package/src/devices/hubled.ts +22 -22
- package/src/devices/light.ts +11 -18
- package/src/devices/piezobuzzer.ts +3 -3
- package/src/devices/tachomotor.ts +47 -53
- package/src/devices/technic3x3colorlightmatrix.ts +20 -23
- package/src/devices/techniccolorsensor.ts +102 -10
- package/src/devices/technicdistancesensor.ts +1 -1
- package/src/devices/technicmediumhubtiltsensor.ts +9 -18
- package/src/devices/tiltsensor.ts +85 -5
- package/src/hubs/basehub.ts +18 -0
- package/src/hubs/lpf2hub.ts +12 -5
- package/src/portoutputcommand.ts +37 -0
- package/src/portoutputsleep.ts +11 -0
- package/src/utils.ts +14 -19
- package/tsconfig.tsbuildinfo +1 -1
- package/webpack.config.cjs +35 -0
- package/dist/node/color.d.ts +0 -6
- package/dist/node/color.js +0 -15
- package/dist/node/color.js.map +0 -1
- package/dist/node/commands.d.ts +0 -299
- package/dist/node/commands.js +0 -672
- package/dist/node/commands.js.map +0 -1
- package/dist/node/connection.d.ts +0 -187
- package/dist/node/connection.js +0 -478
- package/dist/node/connection.js.map +0 -1
- package/dist/node/consts.d.ts +0 -644
- package/dist/node/consts.js +0 -675
- package/dist/node/consts.js.map +0 -1
- package/dist/node/devices/absolutemotor.d.ts +0 -43
- package/dist/node/devices/absolutemotor.js +0 -118
- package/dist/node/devices/absolutemotor.js.map +0 -1
- package/dist/node/devices/basicmotor.d.ts +0 -40
- package/dist/node/devices/basicmotor.js +0 -61
- package/dist/node/devices/basicmotor.js.map +0 -1
- package/dist/node/devices/colordistancesensor.d.ts +0 -79
- package/dist/node/devices/colordistancesensor.js +0 -284
- package/dist/node/devices/colordistancesensor.js.map +0 -1
- package/dist/node/devices/currentsensor.d.ts +0 -16
- package/dist/node/devices/currentsensor.js +0 -55
- package/dist/node/devices/currentsensor.js.map +0 -1
- package/dist/node/devices/device.d.ts +0 -71
- package/dist/node/devices/device.js +0 -162
- package/dist/node/devices/device.js.map +0 -1
- package/dist/node/devices/duplotrainbasecolorsensor.d.ts +0 -19
- package/dist/node/devices/duplotrainbasecolorsensor.js +0 -77
- package/dist/node/devices/duplotrainbasecolorsensor.js.map +0 -1
- package/dist/node/devices/duplotrainbasemotor.d.ts +0 -9
- package/dist/node/devices/duplotrainbasemotor.js +0 -12
- package/dist/node/devices/duplotrainbasemotor.js.map +0 -1
- package/dist/node/devices/duplotrainbasespeaker.d.ts +0 -28
- package/dist/node/devices/duplotrainbasespeaker.js +0 -40
- package/dist/node/devices/duplotrainbasespeaker.js.map +0 -1
- package/dist/node/devices/duplotrainbasespeedometer.d.ts +0 -16
- package/dist/node/devices/duplotrainbasespeedometer.js +0 -34
- package/dist/node/devices/duplotrainbasespeedometer.js.map +0 -1
- package/dist/node/devices/hubled.d.ts +0 -29
- package/dist/node/devices/hubled.js +0 -60
- package/dist/node/devices/hubled.js.map +0 -1
- package/dist/node/devices/index.d.ts +0 -14
- package/dist/node/devices/index.js +0 -154
- package/dist/node/devices/index.js.map +0 -1
- package/dist/node/devices/led.d.ts +0 -140
- package/dist/node/devices/led.js +0 -295
- package/dist/node/devices/led.js.map +0 -1
- package/dist/node/devices/light.d.ts +0 -25
- package/dist/node/devices/light.js +0 -46
- package/dist/node/devices/light.js.map +0 -1
- package/dist/node/devices/marioaccelerometer.d.ts +0 -17
- package/dist/node/devices/marioaccelerometer.js +0 -50
- package/dist/node/devices/marioaccelerometer.js.map +0 -1
- package/dist/node/devices/mariobarcodesensor.d.ts +0 -17
- package/dist/node/devices/mariobarcodesensor.js +0 -58
- package/dist/node/devices/mariobarcodesensor.js.map +0 -1
- package/dist/node/devices/mariopantssensor.d.ts +0 -16
- package/dist/node/devices/mariopantssensor.js +0 -34
- package/dist/node/devices/mariopantssensor.js.map +0 -1
- package/dist/node/devices/mediumlinearmotor.d.ts +0 -9
- package/dist/node/devices/mediumlinearmotor.js +0 -12
- package/dist/node/devices/mediumlinearmotor.js.map +0 -1
- package/dist/node/devices/motionsensor.d.ts +0 -16
- package/dist/node/devices/motionsensor.js +0 -38
- package/dist/node/devices/motionsensor.js.map +0 -1
- package/dist/node/devices/motor.d.ts +0 -182
- package/dist/node/devices/motor.js +0 -367
- package/dist/node/devices/motor.js.map +0 -1
- package/dist/node/devices/movehubmediumlinearmotor.d.ts +0 -9
- package/dist/node/devices/movehubmediumlinearmotor.js +0 -12
- package/dist/node/devices/movehubmediumlinearmotor.js.map +0 -1
- package/dist/node/devices/movehubtiltsensor.d.ts +0 -16
- package/dist/node/devices/movehubtiltsensor.js +0 -36
- package/dist/node/devices/movehubtiltsensor.js.map +0 -1
- package/dist/node/devices/piezobuzzer.d.ts +0 -17
- package/dist/node/devices/piezobuzzer.js +0 -28
- package/dist/node/devices/piezobuzzer.js.map +0 -1
- package/dist/node/devices/remotecontrolbutton.d.ts +0 -19
- package/dist/node/devices/remotecontrolbutton.js +0 -40
- package/dist/node/devices/remotecontrolbutton.js.map +0 -1
- package/dist/node/devices/sensor.d.ts +0 -305
- package/dist/node/devices/sensor.js +0 -662
- package/dist/node/devices/sensor.js.map +0 -1
- package/dist/node/devices/simplemediumlinearmotor.d.ts +0 -9
- package/dist/node/devices/simplemediumlinearmotor.js +0 -12
- package/dist/node/devices/simplemediumlinearmotor.js.map +0 -1
- package/dist/node/devices/tachomotor.d.ts +0 -70
- package/dist/node/devices/tachomotor.js +0 -167
- package/dist/node/devices/tachomotor.js.map +0 -1
- package/dist/node/devices/technic3x3colorlightmatrix.d.ts +0 -22
- package/dist/node/devices/technic3x3colorlightmatrix.js +0 -54
- package/dist/node/devices/technic3x3colorlightmatrix.js.map +0 -1
- package/dist/node/devices/techniccolorsensor.d.ts +0 -27
- package/dist/node/devices/techniccolorsensor.js +0 -72
- package/dist/node/devices/techniccolorsensor.js.map +0 -1
- package/dist/node/devices/technicdistancesensor.d.ts +0 -27
- package/dist/node/devices/technicdistancesensor.js +0 -58
- package/dist/node/devices/technicdistancesensor.js.map +0 -1
- package/dist/node/devices/technicforcesensor.d.ts +0 -18
- package/dist/node/devices/technicforcesensor.js +0 -58
- package/dist/node/devices/technicforcesensor.js.map +0 -1
- package/dist/node/devices/techniclargeangularmotor.d.ts +0 -12
- package/dist/node/devices/techniclargeangularmotor.js +0 -12
- package/dist/node/devices/techniclargeangularmotor.js.map +0 -1
- package/dist/node/devices/techniclargelinearmotor.d.ts +0 -9
- package/dist/node/devices/techniclargelinearmotor.js +0 -12
- package/dist/node/devices/techniclargelinearmotor.js.map +0 -1
- package/dist/node/devices/technicmediumangularmotor.d.ts +0 -12
- package/dist/node/devices/technicmediumangularmotor.js +0 -12
- package/dist/node/devices/technicmediumangularmotor.js.map +0 -1
- package/dist/node/devices/technicmediumhubaccelerometersensor.d.ts +0 -16
- package/dist/node/devices/technicmediumhubaccelerometersensor.js +0 -38
- package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +0 -1
- package/dist/node/devices/technicmediumhubgyrosensor.d.ts +0 -16
- package/dist/node/devices/technicmediumhubgyrosensor.js +0 -38
- package/dist/node/devices/technicmediumhubgyrosensor.js.map +0 -1
- package/dist/node/devices/technicmediumhubtiltsensor.d.ts +0 -40
- package/dist/node/devices/technicmediumhubtiltsensor.js +0 -106
- package/dist/node/devices/technicmediumhubtiltsensor.js.map +0 -1
- package/dist/node/devices/technicsmallangularmotor.d.ts +0 -12
- package/dist/node/devices/technicsmallangularmotor.js +0 -12
- package/dist/node/devices/technicsmallangularmotor.js.map +0 -1
- package/dist/node/devices/technicxlargelinearmotor.d.ts +0 -9
- package/dist/node/devices/technicxlargelinearmotor.js +0 -12
- package/dist/node/devices/technicxlargelinearmotor.js.map +0 -1
- package/dist/node/devices/tiltsensor.d.ts +0 -16
- package/dist/node/devices/tiltsensor.js +0 -36
- package/dist/node/devices/tiltsensor.js.map +0 -1
- package/dist/node/devices/trainmotor.d.ts +0 -9
- package/dist/node/devices/trainmotor.js +0 -12
- package/dist/node/devices/trainmotor.js.map +0 -1
- package/dist/node/devices/voltagesensor.d.ts +0 -16
- package/dist/node/devices/voltagesensor.js +0 -59
- package/dist/node/devices/voltagesensor.js.map +0 -1
- package/dist/node/hub.d.ts +0 -291
- package/dist/node/hub.js +0 -778
- package/dist/node/hub.js.map +0 -1
- package/dist/node/hubs/basehub.d.ts +0 -162
- package/dist/node/hubs/basehub.js +0 -392
- package/dist/node/hubs/basehub.js.map +0 -1
- package/dist/node/hubs/duplotrainbase.d.ts +0 -17
- package/dist/node/hubs/duplotrainbase.js +0 -35
- package/dist/node/hubs/duplotrainbase.js.map +0 -1
- package/dist/node/hubs/hub.d.ts +0 -19
- package/dist/node/hubs/hub.js +0 -44
- package/dist/node/hubs/hub.js.map +0 -1
- package/dist/node/hubs/lpf2hub.d.ts +0 -48
- package/dist/node/hubs/lpf2hub.js +0 -314
- package/dist/node/hubs/lpf2hub.js.map +0 -1
- package/dist/node/hubs/mario.d.ts +0 -17
- package/dist/node/hubs/mario.js +0 -31
- package/dist/node/hubs/mario.js.map +0 -1
- package/dist/node/hubs/movehub.d.ts +0 -18
- package/dist/node/hubs/movehub.js +0 -46
- package/dist/node/hubs/movehub.js.map +0 -1
- package/dist/node/hubs/remotecontrol.d.ts +0 -17
- package/dist/node/hubs/remotecontrol.js +0 -37
- package/dist/node/hubs/remotecontrol.js.map +0 -1
- package/dist/node/hubs/technicmediumhub.d.ts +0 -17
- package/dist/node/hubs/technicmediumhub.js +0 -42
- package/dist/node/hubs/technicmediumhub.js.map +0 -1
- package/dist/node/hubs/technicsmallhub.d.ts +0 -18
- package/dist/node/hubs/technicsmallhub.js +0 -41
- package/dist/node/hubs/technicsmallhub.js.map +0 -1
- package/dist/node/hubs/wedo2smarthub.d.ts +0 -40
- package/dist/node/hubs/wedo2smarthub.js +0 -188
- package/dist/node/hubs/wedo2smarthub.js.map +0 -1
- package/dist/node/index-browser.d.ts +0 -1
- package/dist/node/index-browser.js +0 -96
- package/dist/node/index-browser.js.map +0 -1
- package/dist/node/index-node.d.ts +0 -49
- package/dist/node/index-node.js +0 -50
- package/dist/node/index-node.js.map +0 -1
- package/dist/node/index.d.ts +0 -31
- package/dist/node/index.js +0 -93
- package/dist/node/index.js.map +0 -1
- package/dist/node/index.mjs +0 -0
- package/dist/node/interfaces.d.ts +0 -23
- package/dist/node/interfaces.js +0 -2
- package/dist/node/interfaces.js.map +0 -1
- package/dist/node/nobleabstraction.d.ts +0 -26
- package/dist/node/nobleabstraction.js +0 -123
- package/dist/node/nobleabstraction.js.map +0 -1
- package/dist/node/poweredup-browser.d.ts +0 -50
- package/dist/node/poweredup-browser.js +0 -216
- package/dist/node/poweredup-browser.js.map +0 -1
- package/dist/node/poweredup-node.d.ts +0 -54
- package/dist/node/poweredup-node.js +0 -173
- package/dist/node/poweredup-node.js.map +0 -1
- package/dist/node/poweredup.d.ts +0 -83
- package/dist/node/poweredup.js +0 -542
- package/dist/node/poweredup.js.map +0 -1
- package/dist/node/protocol-wedo.d.ts +0 -158
- package/dist/node/protocol-wedo.js +0 -342
- package/dist/node/protocol-wedo.js.map +0 -1
- package/dist/node/protocol.d.ts +0 -340
- package/dist/node/protocol.js +0 -730
- package/dist/node/protocol.js.map +0 -1
- package/dist/node/types.d.ts +0 -408
- package/dist/node/types.js +0 -291
- package/dist/node/types.js.map +0 -1
- package/dist/node/utils.d.ts +0 -12
- package/dist/node/utils.js +0 -90
- package/dist/node/utils.js.map +0 -1
- package/dist/node/webbleabstraction.d.ts +0 -26
- package/dist/node/webbleabstraction.js +0 -104
- package/dist/node/webbleabstraction.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PoweredUp Connection
|
|
3
|
-
* BLE connection abstraction layer
|
|
4
|
-
*/
|
|
5
|
-
import { EventEmitter } from "events";
|
|
6
|
-
import * as Protocol from "./protocol";
|
|
7
|
-
import { HubState, HubType } from "./types";
|
|
8
|
-
/**
|
|
9
|
-
* BLE peripheral abstraction (to be implemented by Noble/Web Bluetooth adapters)
|
|
10
|
-
*/
|
|
11
|
-
export interface BLEPeripheral {
|
|
12
|
-
id: string;
|
|
13
|
-
uuid: string;
|
|
14
|
-
name: string;
|
|
15
|
-
rssi: number;
|
|
16
|
-
manufacturerData?: Buffer;
|
|
17
|
-
connect(): Promise<void>;
|
|
18
|
-
disconnect(): Promise<void>;
|
|
19
|
-
discoverServices(serviceUUIDs?: string[]): Promise<BLEService[]>;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* BLE service abstraction
|
|
23
|
-
*/
|
|
24
|
-
export interface BLEService {
|
|
25
|
-
uuid: string;
|
|
26
|
-
discoverCharacteristics(characteristicUUIDs?: string[]): Promise<BLECharacteristic[]>;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* BLE characteristic abstraction
|
|
30
|
-
*/
|
|
31
|
-
export interface BLECharacteristic {
|
|
32
|
-
uuid: string;
|
|
33
|
-
subscribe(callback: (data: Buffer) => void): Promise<void>;
|
|
34
|
-
unsubscribe(): Promise<void>;
|
|
35
|
-
write(data: Buffer, withoutResponse?: boolean): Promise<void>;
|
|
36
|
-
read(): Promise<Buffer>;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Connection event map
|
|
40
|
-
*/
|
|
41
|
-
export interface ConnectionEventMap {
|
|
42
|
-
message: (message: Protocol.DecodedMessage) => void;
|
|
43
|
-
rawMessage: (data: Buffer) => void;
|
|
44
|
-
disconnect: () => void;
|
|
45
|
-
error: (error: Error) => void;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Connection class for LWP3 (LEGO Wireless Protocol 3.0) hubs
|
|
49
|
-
*/
|
|
50
|
-
export declare class LWP3Connection extends EventEmitter {
|
|
51
|
-
private peripheral;
|
|
52
|
-
private characteristic;
|
|
53
|
-
private messageBuffer;
|
|
54
|
-
private _state;
|
|
55
|
-
constructor(peripheral: BLEPeripheral);
|
|
56
|
-
private handleNotificationBound;
|
|
57
|
-
/**
|
|
58
|
-
* Current connection state
|
|
59
|
-
*/
|
|
60
|
-
get state(): HubState;
|
|
61
|
-
/**
|
|
62
|
-
* Peripheral UUID
|
|
63
|
-
*/
|
|
64
|
-
get uuid(): string;
|
|
65
|
-
/**
|
|
66
|
-
* Peripheral name
|
|
67
|
-
*/
|
|
68
|
-
get name(): string;
|
|
69
|
-
/**
|
|
70
|
-
* Open connection to the hub
|
|
71
|
-
*/
|
|
72
|
-
open(): Promise<void>;
|
|
73
|
-
/**
|
|
74
|
-
* Close connection
|
|
75
|
-
*/
|
|
76
|
-
close(): Promise<void>;
|
|
77
|
-
/**
|
|
78
|
-
* Send a raw message to the hub
|
|
79
|
-
*/
|
|
80
|
-
send(message: Buffer): Promise<void>;
|
|
81
|
-
/**
|
|
82
|
-
* Handle incoming BLE notification
|
|
83
|
-
*/
|
|
84
|
-
private handleNotification;
|
|
85
|
-
/**
|
|
86
|
-
* Process accumulated message buffer
|
|
87
|
-
*/
|
|
88
|
-
private processMessageBuffer;
|
|
89
|
-
}
|
|
90
|
-
import * as WeDo2Protocol from "./protocol-wedo";
|
|
91
|
-
/**
|
|
92
|
-
* WeDo 2.0 connection event map
|
|
93
|
-
*/
|
|
94
|
-
export interface WeDo2ConnectionEventMap {
|
|
95
|
-
port: (message: WeDo2Protocol.WeDo2PortMessage) => void;
|
|
96
|
-
sensor: (message: WeDo2Protocol.WeDo2SensorMessage) => void;
|
|
97
|
-
button: (message: WeDo2Protocol.WeDo2ButtonMessage) => void;
|
|
98
|
-
battery: (message: WeDo2Protocol.WeDo2BatteryMessage) => void;
|
|
99
|
-
alert: (message: WeDo2Protocol.WeDo2AlertMessage) => void;
|
|
100
|
-
disconnect: () => void;
|
|
101
|
-
error: (error: Error) => void;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Connection class for WeDo 2.0 Smart Hub
|
|
105
|
-
*/
|
|
106
|
-
export declare class WeDo2Connection extends EventEmitter {
|
|
107
|
-
private peripheral;
|
|
108
|
-
private characteristics;
|
|
109
|
-
private _state;
|
|
110
|
-
constructor(peripheral: BLEPeripheral);
|
|
111
|
-
/**
|
|
112
|
-
* Current connection state
|
|
113
|
-
*/
|
|
114
|
-
get state(): HubState;
|
|
115
|
-
/**
|
|
116
|
-
* Peripheral UUID
|
|
117
|
-
*/
|
|
118
|
-
get uuid(): string;
|
|
119
|
-
/**
|
|
120
|
-
* Peripheral name
|
|
121
|
-
*/
|
|
122
|
-
get name(): string;
|
|
123
|
-
/**
|
|
124
|
-
* Open connection to the hub
|
|
125
|
-
*/
|
|
126
|
-
open(): Promise<void>;
|
|
127
|
-
/**
|
|
128
|
-
* Subscribe to all relevant notifications
|
|
129
|
-
*/
|
|
130
|
-
private subscribeToNotifications;
|
|
131
|
-
/**
|
|
132
|
-
* Close connection
|
|
133
|
-
*/
|
|
134
|
-
close(): Promise<void>;
|
|
135
|
-
/**
|
|
136
|
-
* Send data to a characteristic
|
|
137
|
-
*/
|
|
138
|
-
send(characteristicUUID: string, data: Buffer): Promise<void>;
|
|
139
|
-
/**
|
|
140
|
-
* Read from a characteristic
|
|
141
|
-
*/
|
|
142
|
-
read(characteristicUUID: string): Promise<Buffer>;
|
|
143
|
-
/**
|
|
144
|
-
* Send motor command
|
|
145
|
-
*/
|
|
146
|
-
sendMotorCommand(portId: number, power: number): Promise<void>;
|
|
147
|
-
/**
|
|
148
|
-
* Send LED color command
|
|
149
|
-
*/
|
|
150
|
-
sendLEDColor(color: number): Promise<void>;
|
|
151
|
-
/**
|
|
152
|
-
* Send LED RGB command
|
|
153
|
-
*/
|
|
154
|
-
sendLEDRGB(red: number, green: number, blue: number): Promise<void>;
|
|
155
|
-
/**
|
|
156
|
-
* Send sensor subscription
|
|
157
|
-
*/
|
|
158
|
-
subscribe(portId: number, deviceType: number, mode: number): Promise<void>;
|
|
159
|
-
/**
|
|
160
|
-
* Send sensor unsubscription
|
|
161
|
-
*/
|
|
162
|
-
unsubscribe(portId: number, deviceType: number, mode: number): Promise<void>;
|
|
163
|
-
/**
|
|
164
|
-
* Send disconnect command
|
|
165
|
-
*/
|
|
166
|
-
sendDisconnect(): Promise<void>;
|
|
167
|
-
/**
|
|
168
|
-
* Get battery level
|
|
169
|
-
*/
|
|
170
|
-
getBatteryLevel(): Promise<number>;
|
|
171
|
-
/**
|
|
172
|
-
* Get firmware version
|
|
173
|
-
*/
|
|
174
|
-
getFirmwareVersion(): Promise<string>;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Detect hub type from manufacturer data
|
|
178
|
-
*/
|
|
179
|
-
export declare function detectHubType(manufacturerData?: Buffer): HubType;
|
|
180
|
-
/**
|
|
181
|
-
* Check if peripheral is a WeDo 2.0 Smart Hub
|
|
182
|
-
*/
|
|
183
|
-
export declare function isWeDo2SmartHub(serviceUUIDs?: string[]): boolean;
|
|
184
|
-
/**
|
|
185
|
-
* Check if peripheral is an LWP3 hub
|
|
186
|
-
*/
|
|
187
|
-
export declare function isLWP3Hub(serviceUUIDs?: string[]): boolean;
|
package/dist/node/connection.js
DELETED
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* PoweredUp Connection
|
|
4
|
-
* BLE connection abstraction layer
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
-
var ownKeys = function(o) {
|
|
24
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
-
var ar = [];
|
|
26
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
return ownKeys(o);
|
|
30
|
-
};
|
|
31
|
-
return function (mod) {
|
|
32
|
-
if (mod && mod.__esModule) return mod;
|
|
33
|
-
var result = {};
|
|
34
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
-
__setModuleDefault(result, mod);
|
|
36
|
-
return result;
|
|
37
|
-
};
|
|
38
|
-
})();
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.WeDo2Connection = exports.LWP3Connection = void 0;
|
|
41
|
-
exports.detectHubType = detectHubType;
|
|
42
|
-
exports.isWeDo2SmartHub = isWeDo2SmartHub;
|
|
43
|
-
exports.isLWP3Hub = isLWP3Hub;
|
|
44
|
-
const events_1 = require("events");
|
|
45
|
-
const Protocol = __importStar(require("./protocol"));
|
|
46
|
-
const types_1 = require("./types");
|
|
47
|
-
const Debug = require("debug");
|
|
48
|
-
const debug = Debug("poweredup:connection");
|
|
49
|
-
// ============================================================================
|
|
50
|
-
// LWP3 Connection Class
|
|
51
|
-
// ============================================================================
|
|
52
|
-
/**
|
|
53
|
-
* Connection class for LWP3 (LEGO Wireless Protocol 3.0) hubs
|
|
54
|
-
*/
|
|
55
|
-
class LWP3Connection extends events_1.EventEmitter {
|
|
56
|
-
constructor(peripheral) {
|
|
57
|
-
super();
|
|
58
|
-
this.characteristic = null;
|
|
59
|
-
this.messageBuffer = Buffer.alloc(0);
|
|
60
|
-
this._state = types_1.HubState.NOT_CONNECTED;
|
|
61
|
-
this.peripheral = peripheral;
|
|
62
|
-
this.handleNotificationBound = this.handleNotification.bind(this);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Current connection state
|
|
66
|
-
*/
|
|
67
|
-
get state() {
|
|
68
|
-
return this._state;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Peripheral UUID
|
|
72
|
-
*/
|
|
73
|
-
get uuid() {
|
|
74
|
-
return this.peripheral.uuid;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Peripheral name
|
|
78
|
-
*/
|
|
79
|
-
get name() {
|
|
80
|
-
return this.peripheral.name;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Open connection to the hub
|
|
84
|
-
*/
|
|
85
|
-
async open() {
|
|
86
|
-
if (this._state !== types_1.HubState.NOT_CONNECTED) {
|
|
87
|
-
throw new Error("Connection already open or opening");
|
|
88
|
-
}
|
|
89
|
-
this._state = types_1.HubState.CONNECTING;
|
|
90
|
-
debug("Connecting to hub:", this.peripheral.name);
|
|
91
|
-
try {
|
|
92
|
-
await this.peripheral.connect();
|
|
93
|
-
// Discover LWP3 service
|
|
94
|
-
const services = await this.peripheral.discoverServices([Protocol.BLE_SERVICE_UUID]);
|
|
95
|
-
if (services.length === 0) {
|
|
96
|
-
throw new Error("LWP3 service not found");
|
|
97
|
-
}
|
|
98
|
-
// Discover characteristic
|
|
99
|
-
const characteristics = await services[0].discoverCharacteristics([Protocol.BLE_CHARACTERISTIC_UUID]);
|
|
100
|
-
if (characteristics.length === 0) {
|
|
101
|
-
throw new Error("LWP3 characteristic not found");
|
|
102
|
-
}
|
|
103
|
-
this.characteristic = characteristics[0];
|
|
104
|
-
// Subscribe to notifications
|
|
105
|
-
await this.characteristic.subscribe(this.handleNotificationBound);
|
|
106
|
-
this._state = types_1.HubState.CONNECTED;
|
|
107
|
-
debug("Connected to hub:", this.peripheral.name);
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
this._state = types_1.HubState.NOT_CONNECTED;
|
|
111
|
-
throw error;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Close connection
|
|
116
|
-
*/
|
|
117
|
-
async close() {
|
|
118
|
-
if (this._state === types_1.HubState.NOT_CONNECTED) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
this._state = types_1.HubState.DISCONNECTING;
|
|
122
|
-
debug("Disconnecting from hub:", this.peripheral.name);
|
|
123
|
-
try {
|
|
124
|
-
if (this.characteristic) {
|
|
125
|
-
await this.characteristic.unsubscribe();
|
|
126
|
-
}
|
|
127
|
-
await this.peripheral.disconnect();
|
|
128
|
-
}
|
|
129
|
-
finally {
|
|
130
|
-
this._state = types_1.HubState.NOT_CONNECTED;
|
|
131
|
-
this.messageBuffer = Buffer.alloc(0);
|
|
132
|
-
this.emit("disconnect");
|
|
133
|
-
debug("Disconnected from hub:", this.peripheral.name);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Send a raw message to the hub
|
|
138
|
-
*/
|
|
139
|
-
async send(message) {
|
|
140
|
-
if (this._state !== types_1.HubState.CONNECTED || !this.characteristic) {
|
|
141
|
-
throw new Error("Not connected");
|
|
142
|
-
}
|
|
143
|
-
debug("Sending message:", message.toString("hex"));
|
|
144
|
-
await this.characteristic.write(message, true);
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Handle incoming BLE notification
|
|
148
|
-
*/
|
|
149
|
-
handleNotification(data) {
|
|
150
|
-
debug("Received raw data:", data.toString("hex"));
|
|
151
|
-
this.emit("rawMessage", data);
|
|
152
|
-
// Accumulate data in buffer
|
|
153
|
-
this.messageBuffer = Buffer.concat([this.messageBuffer, data]);
|
|
154
|
-
// Process complete messages
|
|
155
|
-
this.processMessageBuffer();
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Process accumulated message buffer
|
|
159
|
-
*/
|
|
160
|
-
processMessageBuffer() {
|
|
161
|
-
while (this.messageBuffer.length > 0) {
|
|
162
|
-
const { length, headerSize } = Protocol.decodeMessageLength(this.messageBuffer);
|
|
163
|
-
if (length === 0 || this.messageBuffer.length < length) {
|
|
164
|
-
// Not enough data yet
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
// Extract complete message
|
|
168
|
-
const messageData = this.messageBuffer.subarray(0, length);
|
|
169
|
-
this.messageBuffer = this.messageBuffer.subarray(length);
|
|
170
|
-
debug("Processing message:", messageData.toString("hex"));
|
|
171
|
-
// Decode and emit
|
|
172
|
-
const decoded = Protocol.decodeMessage(messageData);
|
|
173
|
-
if (decoded) {
|
|
174
|
-
this.emit("message", decoded);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
exports.LWP3Connection = LWP3Connection;
|
|
180
|
-
// ============================================================================
|
|
181
|
-
// WeDo 2.0 Connection Class
|
|
182
|
-
// ============================================================================
|
|
183
|
-
const WeDo2Protocol = __importStar(require("./protocol-wedo"));
|
|
184
|
-
/**
|
|
185
|
-
* Connection class for WeDo 2.0 Smart Hub
|
|
186
|
-
*/
|
|
187
|
-
class WeDo2Connection extends events_1.EventEmitter {
|
|
188
|
-
constructor(peripheral) {
|
|
189
|
-
super();
|
|
190
|
-
this.characteristics = new Map();
|
|
191
|
-
this._state = types_1.HubState.NOT_CONNECTED;
|
|
192
|
-
this.peripheral = peripheral;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Current connection state
|
|
196
|
-
*/
|
|
197
|
-
get state() {
|
|
198
|
-
return this._state;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Peripheral UUID
|
|
202
|
-
*/
|
|
203
|
-
get uuid() {
|
|
204
|
-
return this.peripheral.uuid;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Peripheral name
|
|
208
|
-
*/
|
|
209
|
-
get name() {
|
|
210
|
-
return this.peripheral.name;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Open connection to the hub
|
|
214
|
-
*/
|
|
215
|
-
async open() {
|
|
216
|
-
if (this._state !== types_1.HubState.NOT_CONNECTED) {
|
|
217
|
-
throw new Error("Connection already open or opening");
|
|
218
|
-
}
|
|
219
|
-
this._state = types_1.HubState.CONNECTING;
|
|
220
|
-
debug("Connecting to WeDo 2.0 hub:", this.peripheral.name);
|
|
221
|
-
try {
|
|
222
|
-
await this.peripheral.connect();
|
|
223
|
-
// Discover all WeDo 2.0 services
|
|
224
|
-
const serviceUUIDs = [
|
|
225
|
-
WeDo2Protocol.WEDO2_SERVICE_UUID,
|
|
226
|
-
WeDo2Protocol.WEDO2_SERVICE_UUID_2,
|
|
227
|
-
WeDo2Protocol.WEDO2_BATTERY_SERVICE_UUID,
|
|
228
|
-
WeDo2Protocol.WEDO2_DEVICE_INFO_SERVICE_UUID,
|
|
229
|
-
];
|
|
230
|
-
const services = await this.peripheral.discoverServices(serviceUUIDs);
|
|
231
|
-
// Discover and store characteristics
|
|
232
|
-
for (const service of services) {
|
|
233
|
-
const chars = await service.discoverCharacteristics();
|
|
234
|
-
for (const char of chars) {
|
|
235
|
-
this.characteristics.set(char.uuid.toLowerCase(), char);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
// Subscribe to notifications
|
|
239
|
-
await this.subscribeToNotifications();
|
|
240
|
-
this._state = types_1.HubState.CONNECTED;
|
|
241
|
-
debug("Connected to WeDo 2.0 hub:", this.peripheral.name);
|
|
242
|
-
}
|
|
243
|
-
catch (error) {
|
|
244
|
-
this._state = types_1.HubState.NOT_CONNECTED;
|
|
245
|
-
throw error;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Subscribe to all relevant notifications
|
|
250
|
-
*/
|
|
251
|
-
async subscribeToNotifications() {
|
|
252
|
-
// Port type changes
|
|
253
|
-
const portTypeChar = this.characteristics.get(WeDo2Protocol.WEDO2_CHARACTERISTICS.PORT_TYPE.toLowerCase());
|
|
254
|
-
debug("PORT_TYPE char lookup:", WeDo2Protocol.WEDO2_CHARACTERISTICS.PORT_TYPE.toLowerCase(), "found:", !!portTypeChar);
|
|
255
|
-
if (portTypeChar) {
|
|
256
|
-
await portTypeChar.subscribe((data) => {
|
|
257
|
-
debug("PORT_TYPE notification:", data.toString("hex"));
|
|
258
|
-
const message = WeDo2Protocol.decodeWeDo2PortMessage(data);
|
|
259
|
-
debug("Decoded port message:", message);
|
|
260
|
-
if (message) {
|
|
261
|
-
this.emit("port", message);
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
// Sensor values
|
|
266
|
-
const sensorChar = this.characteristics.get(WeDo2Protocol.WEDO2_CHARACTERISTICS.SENSOR_VALUE.toLowerCase());
|
|
267
|
-
if (sensorChar) {
|
|
268
|
-
await sensorChar.subscribe((data) => {
|
|
269
|
-
const message = WeDo2Protocol.decodeWeDo2SensorMessage(data);
|
|
270
|
-
if (message) {
|
|
271
|
-
this.emit("sensor", message);
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
// Button
|
|
276
|
-
const buttonChar = this.characteristics.get(WeDo2Protocol.WEDO2_CHARACTERISTICS.BUTTON.toLowerCase());
|
|
277
|
-
if (buttonChar) {
|
|
278
|
-
await buttonChar.subscribe((data) => {
|
|
279
|
-
const message = WeDo2Protocol.decodeWeDo2ButtonMessage(data);
|
|
280
|
-
if (message) {
|
|
281
|
-
this.emit("button", message);
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
// Battery
|
|
286
|
-
const batteryChar = this.characteristics.get(WeDo2Protocol.WEDO2_CHARACTERISTICS.BATTERY.toLowerCase());
|
|
287
|
-
if (batteryChar) {
|
|
288
|
-
await batteryChar.subscribe((data) => {
|
|
289
|
-
const message = WeDo2Protocol.decodeWeDo2BatteryMessage(data);
|
|
290
|
-
if (message) {
|
|
291
|
-
this.emit("battery", message);
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
// Alerts
|
|
296
|
-
const lowVoltageChar = this.characteristics.get(WeDo2Protocol.WEDO2_CHARACTERISTICS.LOW_VOLTAGE_ALERT.toLowerCase());
|
|
297
|
-
if (lowVoltageChar) {
|
|
298
|
-
await lowVoltageChar.subscribe(() => {
|
|
299
|
-
this.emit("alert", { kind: "alert", alertType: "lowVoltage" });
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
const highCurrentChar = this.characteristics.get(WeDo2Protocol.WEDO2_CHARACTERISTICS.HIGH_CURRENT_ALERT.toLowerCase());
|
|
303
|
-
if (highCurrentChar) {
|
|
304
|
-
await highCurrentChar.subscribe(() => {
|
|
305
|
-
this.emit("alert", { kind: "alert", alertType: "highCurrent" });
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Close connection
|
|
311
|
-
*/
|
|
312
|
-
async close() {
|
|
313
|
-
if (this._state === types_1.HubState.NOT_CONNECTED) {
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
this._state = types_1.HubState.DISCONNECTING;
|
|
317
|
-
debug("Disconnecting from WeDo 2.0 hub:", this.peripheral.name);
|
|
318
|
-
try {
|
|
319
|
-
// Unsubscribe from all characteristics
|
|
320
|
-
for (const char of this.characteristics.values()) {
|
|
321
|
-
try {
|
|
322
|
-
await char.unsubscribe();
|
|
323
|
-
}
|
|
324
|
-
catch (_a) {
|
|
325
|
-
// Ignore unsubscribe errors
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
await this.peripheral.disconnect();
|
|
329
|
-
}
|
|
330
|
-
finally {
|
|
331
|
-
this._state = types_1.HubState.NOT_CONNECTED;
|
|
332
|
-
this.characteristics.clear();
|
|
333
|
-
this.emit("disconnect");
|
|
334
|
-
debug("Disconnected from WeDo 2.0 hub:", this.peripheral.name);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Send data to a characteristic
|
|
339
|
-
*/
|
|
340
|
-
async send(characteristicUUID, data) {
|
|
341
|
-
if (this._state !== types_1.HubState.CONNECTED) {
|
|
342
|
-
throw new Error("Not connected");
|
|
343
|
-
}
|
|
344
|
-
const char = this.characteristics.get(characteristicUUID.toLowerCase());
|
|
345
|
-
if (!char) {
|
|
346
|
-
throw new Error(`Characteristic ${characteristicUUID} not found`);
|
|
347
|
-
}
|
|
348
|
-
debug("Sending to", characteristicUUID, ":", data.toString("hex"));
|
|
349
|
-
await char.write(data, true);
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Read from a characteristic
|
|
353
|
-
*/
|
|
354
|
-
async read(characteristicUUID) {
|
|
355
|
-
if (this._state !== types_1.HubState.CONNECTED) {
|
|
356
|
-
throw new Error("Not connected");
|
|
357
|
-
}
|
|
358
|
-
const char = this.characteristics.get(characteristicUUID.toLowerCase());
|
|
359
|
-
if (!char) {
|
|
360
|
-
throw new Error(`Characteristic ${characteristicUUID} not found`);
|
|
361
|
-
}
|
|
362
|
-
return char.read();
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Send motor command
|
|
366
|
-
*/
|
|
367
|
-
async sendMotorCommand(portId, power) {
|
|
368
|
-
const data = WeDo2Protocol.createWeDo2MotorPower(portId, power);
|
|
369
|
-
await this.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, data);
|
|
370
|
-
}
|
|
371
|
-
/**
|
|
372
|
-
* Send LED color command
|
|
373
|
-
*/
|
|
374
|
-
async sendLEDColor(color) {
|
|
375
|
-
const data = WeDo2Protocol.createWeDo2LEDColor(6, color);
|
|
376
|
-
await this.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, data);
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Send LED RGB command
|
|
380
|
-
*/
|
|
381
|
-
async sendLEDRGB(red, green, blue) {
|
|
382
|
-
const data = WeDo2Protocol.createWeDo2LEDRGB(6, red, green, blue);
|
|
383
|
-
await this.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.MOTOR_VALUE_WRITE, data);
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Send sensor subscription
|
|
387
|
-
*/
|
|
388
|
-
async subscribe(portId, deviceType, mode) {
|
|
389
|
-
const data = WeDo2Protocol.createWeDo2Subscribe(portId, deviceType, mode, true);
|
|
390
|
-
await this.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.PORT_TYPE_WRITE, data);
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* Send sensor unsubscription
|
|
394
|
-
*/
|
|
395
|
-
async unsubscribe(portId, deviceType, mode) {
|
|
396
|
-
const data = WeDo2Protocol.createWeDo2Subscribe(portId, deviceType, mode, false);
|
|
397
|
-
await this.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.PORT_TYPE_WRITE, data);
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Send disconnect command
|
|
401
|
-
*/
|
|
402
|
-
async sendDisconnect() {
|
|
403
|
-
const data = WeDo2Protocol.createWeDo2Disconnect();
|
|
404
|
-
await this.send(WeDo2Protocol.WEDO2_CHARACTERISTICS.DISCONNECT, data);
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* Get battery level
|
|
408
|
-
*/
|
|
409
|
-
async getBatteryLevel() {
|
|
410
|
-
const data = await this.read(WeDo2Protocol.WEDO2_CHARACTERISTICS.BATTERY);
|
|
411
|
-
return data[0];
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Get firmware version
|
|
415
|
-
*/
|
|
416
|
-
async getFirmwareVersion() {
|
|
417
|
-
const data = await this.read(WeDo2Protocol.WEDO2_CHARACTERISTICS.FIRMWARE_REVISION);
|
|
418
|
-
return data.toString("ascii");
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
exports.WeDo2Connection = WeDo2Connection;
|
|
422
|
-
// ============================================================================
|
|
423
|
-
// Hub Type Detection
|
|
424
|
-
// ============================================================================
|
|
425
|
-
/**
|
|
426
|
-
* Detect hub type from manufacturer data
|
|
427
|
-
*/
|
|
428
|
-
function detectHubType(manufacturerData) {
|
|
429
|
-
if (!manufacturerData || manufacturerData.length < 4) {
|
|
430
|
-
return types_1.HubType.UNKNOWN;
|
|
431
|
-
}
|
|
432
|
-
// Check manufacturer ID (LEGO = 0x0397)
|
|
433
|
-
const manufacturerId = manufacturerData.readUInt16LE(0);
|
|
434
|
-
if (manufacturerId !== 0x0397) {
|
|
435
|
-
return types_1.HubType.UNKNOWN;
|
|
436
|
-
}
|
|
437
|
-
// Hub type is in byte 3
|
|
438
|
-
const hubId = manufacturerData[3];
|
|
439
|
-
switch (hubId) {
|
|
440
|
-
case 32: // 0x20
|
|
441
|
-
return types_1.HubType.DUPLO_TRAIN_BASE;
|
|
442
|
-
case 64: // 0x40
|
|
443
|
-
return types_1.HubType.MOVE_HUB;
|
|
444
|
-
case 65: // 0x41
|
|
445
|
-
return types_1.HubType.HUB;
|
|
446
|
-
case 66: // 0x42
|
|
447
|
-
return types_1.HubType.REMOTE_CONTROL;
|
|
448
|
-
case 67: // 0x43
|
|
449
|
-
return types_1.HubType.MARIO;
|
|
450
|
-
case 128: // 0x80
|
|
451
|
-
return types_1.HubType.TECHNIC_MEDIUM_HUB;
|
|
452
|
-
case 131: // 0x83
|
|
453
|
-
return types_1.HubType.TECHNIC_SMALL_HUB;
|
|
454
|
-
default:
|
|
455
|
-
return types_1.HubType.UNKNOWN;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
/**
|
|
459
|
-
* Check if peripheral is a WeDo 2.0 Smart Hub
|
|
460
|
-
*/
|
|
461
|
-
function isWeDo2SmartHub(serviceUUIDs) {
|
|
462
|
-
if (!serviceUUIDs) {
|
|
463
|
-
return false;
|
|
464
|
-
}
|
|
465
|
-
const wedo2ServiceUUID = WeDo2Protocol.WEDO2_SERVICE_UUID.replace(/-/g, "").toLowerCase();
|
|
466
|
-
return serviceUUIDs.some((uuid) => uuid.toLowerCase() === wedo2ServiceUUID || uuid.toLowerCase() === WeDo2Protocol.WEDO2_SERVICE_UUID.toLowerCase());
|
|
467
|
-
}
|
|
468
|
-
/**
|
|
469
|
-
* Check if peripheral is an LWP3 hub
|
|
470
|
-
*/
|
|
471
|
-
function isLWP3Hub(serviceUUIDs) {
|
|
472
|
-
if (!serviceUUIDs) {
|
|
473
|
-
return false;
|
|
474
|
-
}
|
|
475
|
-
const lwp3ServiceUUID = Protocol.BLE_SERVICE_UUID.replace(/-/g, "").toLowerCase();
|
|
476
|
-
return serviceUUIDs.some((uuid) => uuid.toLowerCase() === lwp3ServiceUUID || uuid.toLowerCase() === Protocol.BLE_SERVICE_UUID.toLowerCase());
|
|
477
|
-
}
|
|
478
|
-
//# sourceMappingURL=connection.js.map
|