@hangtime/grip-connect 0.8.6 → 0.9.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 +7 -5
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +14 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/base.interface.d.ts +18 -0
- package/dist/cjs/interfaces/base.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/base.interface.js +3 -0
- package/dist/cjs/interfaces/base.interface.js.map +1 -0
- package/dist/cjs/interfaces/callback.interface.d.ts +56 -0
- package/dist/cjs/interfaces/callback.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/callback.interface.js +3 -0
- package/dist/cjs/interfaces/callback.interface.js.map +1 -0
- package/dist/cjs/interfaces/command.interface.d.ts +92 -0
- package/dist/cjs/interfaces/command.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/command.interface.js +3 -0
- package/dist/cjs/interfaces/command.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/climbro.interface.d.ts +12 -0
- package/dist/cjs/interfaces/device/climbro.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/climbro.interface.js +3 -0
- package/dist/cjs/interfaces/device/climbro.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/entralpi.interface.d.ts +53 -0
- package/dist/cjs/interfaces/device/entralpi.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/entralpi.interface.js +3 -0
- package/dist/cjs/interfaces/device/entralpi.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/forceboard.interface.d.ts +64 -0
- package/dist/cjs/interfaces/device/forceboard.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/forceboard.interface.js +3 -0
- package/dist/cjs/interfaces/device/forceboard.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/kilterboard.interface.d.ts +16 -0
- package/dist/cjs/interfaces/device/kilterboard.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/kilterboard.interface.js +3 -0
- package/dist/cjs/interfaces/device/kilterboard.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/motherboard.interface.d.ts +54 -0
- package/dist/cjs/interfaces/device/motherboard.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/motherboard.interface.js +3 -0
- package/dist/cjs/interfaces/device/motherboard.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/mysmartboard.interface.d.ts +7 -0
- package/dist/cjs/interfaces/device/mysmartboard.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/mysmartboard.interface.js +3 -0
- package/dist/cjs/interfaces/device/mysmartboard.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/progressor.interface.d.ts +28 -0
- package/dist/cjs/interfaces/device/progressor.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/progressor.interface.js +3 -0
- package/dist/cjs/interfaces/device/progressor.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/smartboard-pro.interface.d.ts +7 -0
- package/dist/cjs/interfaces/device/smartboard-pro.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/smartboard-pro.interface.js +3 -0
- package/dist/cjs/interfaces/device/smartboard-pro.interface.js.map +1 -0
- package/dist/cjs/interfaces/device/wh-c06.interface.d.ts +7 -0
- package/dist/cjs/interfaces/device/wh-c06.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device/wh-c06.interface.js +3 -0
- package/dist/cjs/interfaces/device/wh-c06.interface.js.map +1 -0
- package/dist/cjs/interfaces/device.interface.d.ts +203 -0
- package/dist/cjs/interfaces/device.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/device.interface.js +3 -0
- package/dist/cjs/interfaces/device.interface.js.map +1 -0
- package/dist/cjs/interfaces/download.interface.d.ts +16 -0
- package/dist/cjs/interfaces/download.interface.d.ts.map +1 -0
- package/dist/cjs/interfaces/download.interface.js +3 -0
- package/dist/cjs/interfaces/download.interface.js.map +1 -0
- package/dist/cjs/interfaces/index.d.ts +10 -0
- package/dist/cjs/interfaces/index.d.ts.map +1 -0
- package/dist/cjs/interfaces/index.js +3 -0
- package/dist/cjs/interfaces/index.js.map +1 -0
- package/dist/cjs/models/base.model.d.ts +13 -0
- package/dist/cjs/models/base.model.d.ts.map +1 -0
- package/dist/cjs/models/base.model.js +24 -0
- package/dist/cjs/models/base.model.js.map +1 -0
- package/dist/cjs/models/device/climbro.model.d.ts +42 -0
- package/dist/cjs/models/device/climbro.model.d.ts.map +1 -0
- package/dist/cjs/models/device/climbro.model.js +149 -0
- package/dist/cjs/models/device/climbro.model.js.map +1 -0
- package/dist/cjs/models/device/entralpi.model.d.ts +64 -0
- package/dist/cjs/models/device/entralpi.model.d.ts.map +1 -0
- package/dist/cjs/models/device/entralpi.model.js +244 -0
- package/dist/cjs/models/device/entralpi.model.js.map +1 -0
- package/dist/cjs/models/device/forceboard.model.d.ts +73 -0
- package/dist/cjs/models/device/forceboard.model.d.ts.map +1 -0
- package/dist/cjs/models/device/forceboard.model.js +316 -0
- package/dist/cjs/models/device/forceboard.model.js.map +1 -0
- package/dist/cjs/models/device/kilterboard.model.d.ts +144 -0
- package/dist/cjs/models/device/kilterboard.model.d.ts.map +1 -0
- package/dist/cjs/models/device/kilterboard.model.js +291 -0
- package/dist/cjs/models/device/kilterboard.model.js.map +1 -0
- package/dist/cjs/models/device/motherboard.model.d.ts +110 -0
- package/dist/cjs/models/device/motherboard.model.d.ts.map +1 -0
- package/dist/cjs/models/device/motherboard.model.js +382 -0
- package/dist/cjs/models/device/motherboard.model.js.map +1 -0
- package/dist/cjs/models/device/mysmartboard.model.d.ts +11 -0
- package/dist/cjs/models/device/mysmartboard.model.d.ts.map +1 -0
- package/dist/cjs/models/device/mysmartboard.model.js +19 -0
- package/dist/cjs/models/device/mysmartboard.model.js.map +1 -0
- package/dist/cjs/models/device/progressor.model.d.ts +39 -0
- package/dist/cjs/models/device/progressor.model.d.ts.map +1 -0
- package/dist/cjs/models/device/progressor.model.js +220 -0
- package/dist/cjs/models/device/progressor.model.js.map +1 -0
- package/dist/cjs/models/device/smartboard-pro.model.d.ts +11 -0
- package/dist/cjs/models/device/smartboard-pro.model.d.ts.map +1 -0
- package/dist/cjs/models/device/smartboard-pro.model.js +56 -0
- package/dist/cjs/models/device/smartboard-pro.model.js.map +1 -0
- package/dist/cjs/models/device/wh-c06.model.d.ts +57 -0
- package/dist/cjs/models/device/wh-c06.model.d.ts.map +1 -0
- package/dist/cjs/models/device/wh-c06.model.js +171 -0
- package/dist/cjs/models/device/wh-c06.model.js.map +1 -0
- package/dist/cjs/models/device.model.d.ts +408 -0
- package/dist/cjs/models/device.model.d.ts.map +1 -0
- package/dist/cjs/models/device.model.js +665 -0
- package/dist/cjs/models/device.model.js.map +1 -0
- package/dist/cjs/models/index.d.ts +10 -0
- package/dist/cjs/models/index.d.ts.map +1 -0
- package/dist/cjs/models/index.js +22 -0
- package/dist/cjs/models/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/base.interface.d.ts +18 -0
- package/dist/interfaces/base.interface.d.ts.map +1 -0
- package/dist/interfaces/base.interface.js +2 -0
- package/dist/interfaces/base.interface.js.map +1 -0
- package/dist/interfaces/callback.interface.d.ts +56 -0
- package/dist/interfaces/callback.interface.d.ts.map +1 -0
- package/dist/interfaces/callback.interface.js +2 -0
- package/dist/interfaces/callback.interface.js.map +1 -0
- package/dist/interfaces/command.interface.d.ts +92 -0
- package/dist/interfaces/command.interface.d.ts.map +1 -0
- package/dist/interfaces/command.interface.js +2 -0
- package/dist/interfaces/command.interface.js.map +1 -0
- package/dist/interfaces/device/climbro.interface.d.ts +12 -0
- package/dist/interfaces/device/climbro.interface.d.ts.map +1 -0
- package/dist/interfaces/device/climbro.interface.js +2 -0
- package/dist/interfaces/device/climbro.interface.js.map +1 -0
- package/dist/interfaces/device/entralpi.interface.d.ts +53 -0
- package/dist/interfaces/device/entralpi.interface.d.ts.map +1 -0
- package/dist/interfaces/device/entralpi.interface.js +2 -0
- package/dist/interfaces/device/entralpi.interface.js.map +1 -0
- package/dist/interfaces/device/forceboard.interface.d.ts +64 -0
- package/dist/interfaces/device/forceboard.interface.d.ts.map +1 -0
- package/dist/interfaces/device/forceboard.interface.js +2 -0
- package/dist/interfaces/device/forceboard.interface.js.map +1 -0
- package/dist/interfaces/device/kilterboard.interface.d.ts +16 -0
- package/dist/interfaces/device/kilterboard.interface.d.ts.map +1 -0
- package/dist/interfaces/device/kilterboard.interface.js +2 -0
- package/dist/interfaces/device/kilterboard.interface.js.map +1 -0
- package/dist/interfaces/device/motherboard.interface.d.ts +54 -0
- package/dist/interfaces/device/motherboard.interface.d.ts.map +1 -0
- package/dist/interfaces/device/motherboard.interface.js +2 -0
- package/dist/interfaces/device/motherboard.interface.js.map +1 -0
- package/dist/interfaces/device/mysmartboard.interface.d.ts +7 -0
- package/dist/interfaces/device/mysmartboard.interface.d.ts.map +1 -0
- package/dist/interfaces/device/mysmartboard.interface.js +2 -0
- package/dist/interfaces/device/mysmartboard.interface.js.map +1 -0
- package/dist/interfaces/device/progressor.interface.d.ts +28 -0
- package/dist/interfaces/device/progressor.interface.d.ts.map +1 -0
- package/dist/interfaces/device/progressor.interface.js +2 -0
- package/dist/interfaces/device/progressor.interface.js.map +1 -0
- package/dist/interfaces/device/smartboard-pro.interface.d.ts +7 -0
- package/dist/interfaces/device/smartboard-pro.interface.d.ts.map +1 -0
- package/dist/interfaces/device/smartboard-pro.interface.js +2 -0
- package/dist/interfaces/device/smartboard-pro.interface.js.map +1 -0
- package/dist/interfaces/device/wh-c06.interface.d.ts +7 -0
- package/dist/interfaces/device/wh-c06.interface.d.ts.map +1 -0
- package/dist/interfaces/device/wh-c06.interface.js +2 -0
- package/dist/interfaces/device/wh-c06.interface.js.map +1 -0
- package/dist/interfaces/device.interface.d.ts +203 -0
- package/dist/interfaces/device.interface.d.ts.map +1 -0
- package/dist/interfaces/device.interface.js +2 -0
- package/dist/interfaces/device.interface.js.map +1 -0
- package/dist/interfaces/download.interface.d.ts +16 -0
- package/dist/interfaces/download.interface.d.ts.map +1 -0
- package/dist/interfaces/download.interface.js +2 -0
- package/dist/interfaces/download.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +10 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +2 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/models/base.model.d.ts +13 -0
- package/dist/models/base.model.d.ts.map +1 -0
- package/dist/models/base.model.js +22 -0
- package/dist/models/base.model.js.map +1 -0
- package/dist/models/device/climbro.model.d.ts +42 -0
- package/dist/models/device/climbro.model.d.ts.map +1 -0
- package/dist/models/device/climbro.model.js +143 -0
- package/dist/models/device/climbro.model.js.map +1 -0
- package/dist/models/device/entralpi.model.d.ts +64 -0
- package/dist/models/device/entralpi.model.d.ts.map +1 -0
- package/dist/models/device/entralpi.model.js +240 -0
- package/dist/models/device/entralpi.model.js.map +1 -0
- package/dist/models/device/forceboard.model.d.ts +73 -0
- package/dist/models/device/forceboard.model.d.ts.map +1 -0
- package/dist/models/device/forceboard.model.js +312 -0
- package/dist/models/device/forceboard.model.js.map +1 -0
- package/dist/models/device/kilterboard.model.d.ts +144 -0
- package/dist/models/device/kilterboard.model.d.ts.map +1 -0
- package/dist/models/device/kilterboard.model.js +287 -0
- package/dist/models/device/kilterboard.model.js.map +1 -0
- package/dist/models/device/motherboard.model.d.ts +110 -0
- package/dist/models/device/motherboard.model.d.ts.map +1 -0
- package/dist/models/device/motherboard.model.js +378 -0
- package/dist/models/device/motherboard.model.js.map +1 -0
- package/dist/models/device/mysmartboard.model.d.ts +11 -0
- package/dist/models/device/mysmartboard.model.d.ts.map +1 -0
- package/dist/models/device/mysmartboard.model.js +15 -0
- package/dist/models/device/mysmartboard.model.js.map +1 -0
- package/dist/models/device/progressor.model.d.ts +39 -0
- package/dist/models/device/progressor.model.d.ts.map +1 -0
- package/dist/models/device/progressor.model.js +216 -0
- package/dist/models/device/progressor.model.js.map +1 -0
- package/dist/models/device/smartboard-pro.model.d.ts +11 -0
- package/dist/models/device/smartboard-pro.model.d.ts.map +1 -0
- package/dist/models/device/smartboard-pro.model.js +52 -0
- package/dist/models/device/smartboard-pro.model.js.map +1 -0
- package/dist/models/device/wh-c06.model.d.ts +57 -0
- package/dist/models/device/wh-c06.model.d.ts.map +1 -0
- package/dist/models/device/wh-c06.model.js +167 -0
- package/dist/models/device/wh-c06.model.js.map +1 -0
- package/dist/models/device.model.d.ts +408 -0
- package/dist/models/device.model.d.ts.map +1 -0
- package/dist/models/device.model.js +720 -0
- package/dist/models/device.model.js.map +1 -0
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +10 -0
- package/dist/models/index.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/package.json +5 -1
- package/src/interfaces/device/climbro.interface.ts +8 -2
- package/src/models/device/climbro.model.ts +150 -3
- package/deno.json +0 -8
- package/tsconfig.cjs.json +0 -15
- package/tsconfig.json +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smartboard-pro.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/device/smartboard-pro.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wh-c06.interface.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/device/wh-c06.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD;;GAEG;AAEH,MAAM,WAAW,MAAO,SAAQ,OAAO;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wh-c06.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/device/wh-c06.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import type { IBase } from "./base.interface.js";
|
|
2
|
+
import type { massObject } from "./callback.interface.js";
|
|
3
|
+
import type { Commands } from "./command.interface.js";
|
|
4
|
+
/**
|
|
5
|
+
* Represents a characteristic of a Bluetooth service.
|
|
6
|
+
*/
|
|
7
|
+
interface Characteristic {
|
|
8
|
+
/** Name of the characteristic */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Identifier of the characteristic */
|
|
11
|
+
id: string;
|
|
12
|
+
/** UUID of the characteristic */
|
|
13
|
+
uuid: string;
|
|
14
|
+
/** Reference to the characteristic object */
|
|
15
|
+
characteristic?: BluetoothRemoteGATTCharacteristic;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Represents a Bluetooth service.
|
|
19
|
+
*/
|
|
20
|
+
export interface Service {
|
|
21
|
+
/** Name of the service */
|
|
22
|
+
name: string;
|
|
23
|
+
/** Identifier of the service */
|
|
24
|
+
id: string;
|
|
25
|
+
/** UUID of the service */
|
|
26
|
+
uuid: string;
|
|
27
|
+
/** Array of characteristics belonging to this service */
|
|
28
|
+
characteristics: Characteristic[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Represents a Bluetooth device.
|
|
32
|
+
*/
|
|
33
|
+
export interface IDevice extends IBase {
|
|
34
|
+
/**
|
|
35
|
+
* Filters to identify the device during Bluetooth scanning.
|
|
36
|
+
* Used to match devices that meet specific criteria such as name, service UUIDs, etc.
|
|
37
|
+
* @type {BluetoothLEScanFilter[]}
|
|
38
|
+
* @public
|
|
39
|
+
* @readonly
|
|
40
|
+
*/
|
|
41
|
+
filters: BluetoothLEScanFilter[];
|
|
42
|
+
/**
|
|
43
|
+
* Array of services provided by the device.
|
|
44
|
+
* Services represent functionalities that the device supports, such as weight measurement, battery information, or custom services.
|
|
45
|
+
* @type {Service[]}
|
|
46
|
+
* @public
|
|
47
|
+
* @readonly
|
|
48
|
+
*/
|
|
49
|
+
services: Service[];
|
|
50
|
+
/**
|
|
51
|
+
* Reference to the `BluetoothDevice` object representing this device.
|
|
52
|
+
* This is the actual device object obtained from the Web Bluetooth API after a successful connection.
|
|
53
|
+
* @type {BluetoothDevice | undefined}
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
bluetooth?: BluetoothDevice;
|
|
57
|
+
/**
|
|
58
|
+
* Object representing the set of commands available for this device.
|
|
59
|
+
* These commands allow communication with the device to perform various operations such as starting measurements, retrieving data, or calibrating the device.
|
|
60
|
+
* @type {Commands}
|
|
61
|
+
* @public
|
|
62
|
+
* @readonly
|
|
63
|
+
*/
|
|
64
|
+
commands: Commands;
|
|
65
|
+
/**
|
|
66
|
+
* Sets the callback function to be called when the activity status changes,
|
|
67
|
+
* and optionally sets the configuration for threshold and duration.
|
|
68
|
+
*
|
|
69
|
+
* This function allows you to specify a callback that will be invoked whenever
|
|
70
|
+
* the activity status changes, indicating whether the device is currently active.
|
|
71
|
+
* It also allows optionally configuring the threshold and duration used to determine activity.
|
|
72
|
+
*
|
|
73
|
+
* @param {ActiveCallback} callback - The callback function to be set. This function
|
|
74
|
+
* receives a boolean value indicating the new activity status.
|
|
75
|
+
* @param {object} [options] - Optional configuration object containing the threshold and duration.
|
|
76
|
+
* @param {number} [options.threshold=2.5] - The threshold value for determining activity.
|
|
77
|
+
* @param {number} [options.duration=1000] - The duration (in milliseconds) to monitor the input for activity.
|
|
78
|
+
* @returns {void}
|
|
79
|
+
* @public
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* device.active((isActive) => {
|
|
83
|
+
* console.log(`Device is ${isActive ? 'active' : 'inactive'}`);
|
|
84
|
+
* }, { threshold: 3.0, duration: 1500 });
|
|
85
|
+
*/
|
|
86
|
+
active(callback?: (data: boolean) => void, options?: {
|
|
87
|
+
threshold?: number;
|
|
88
|
+
duration?: number;
|
|
89
|
+
}): void;
|
|
90
|
+
/**
|
|
91
|
+
* Connects to a Bluetooth device.
|
|
92
|
+
* @param {Function} [onSuccess] - Optional callback function to execute on successful connection. Default logs success.
|
|
93
|
+
* @param {Function} [onError] - Optional callback function to execute on error. Default logs the error.
|
|
94
|
+
* @public
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* device.connect(
|
|
98
|
+
* () => console.log("Connected successfully"),
|
|
99
|
+
* (error) => console.error("Connection failed:", error)
|
|
100
|
+
* );
|
|
101
|
+
*/
|
|
102
|
+
connect(onSuccess?: () => void, onError?: (error: Error) => void): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Disconnects the device if it is currently connected.
|
|
105
|
+
* - Removes all notification listeners from the device's characteristics.
|
|
106
|
+
* - Removes the 'gattserverdisconnected' event listener.
|
|
107
|
+
* - Attempts to gracefully disconnect the device's GATT server.
|
|
108
|
+
* - Resets relevant properties to their initial states.
|
|
109
|
+
* @returns {void}
|
|
110
|
+
* @public
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* device.disconnect();
|
|
114
|
+
*/
|
|
115
|
+
disconnect(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Exports the data in the specified format (CSV, JSON, XML) with a filename format:
|
|
118
|
+
* 'data-export-YYYY-MM-DD-HH-MM-SS.{format}'.
|
|
119
|
+
*
|
|
120
|
+
* @param {('csv' | 'json' | 'xml')} [format='csv'] - The format in which to download the data.
|
|
121
|
+
* Defaults to 'csv'. Accepted values are 'csv', 'json', and 'xml'.
|
|
122
|
+
*
|
|
123
|
+
* @returns {void} Initiates a download of the data in the specified format.
|
|
124
|
+
* @private
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* device.download('json');
|
|
128
|
+
*/
|
|
129
|
+
download(format?: "csv" | "json" | "xml"): void;
|
|
130
|
+
/**
|
|
131
|
+
* Checks if a Bluetooth device is connected.
|
|
132
|
+
* @returns {boolean} A boolean indicating whether the device is connected.
|
|
133
|
+
* @public
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* if (device.isConnected()) {
|
|
137
|
+
* console.log('Device is connected');
|
|
138
|
+
* } else {
|
|
139
|
+
* console.log('Device is not connected');
|
|
140
|
+
* }
|
|
141
|
+
*/
|
|
142
|
+
isConnected(): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Sets the callback function to be called when notifications are received.
|
|
145
|
+
* @param {NotifyCallback} callback - The callback function to be set.
|
|
146
|
+
* @returns {void}
|
|
147
|
+
* @public
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* device.notify((data) => {
|
|
151
|
+
* console.log('Received notification:', data);
|
|
152
|
+
* });
|
|
153
|
+
*/
|
|
154
|
+
notify(callback: (data: massObject) => void): void;
|
|
155
|
+
/**
|
|
156
|
+
* Reads the value of the specified characteristic from the device.
|
|
157
|
+
* @param {string} serviceId - The service ID where the characteristic belongs.
|
|
158
|
+
* @param {string} characteristicId - The characteristic ID to read from.
|
|
159
|
+
* @param {number} [duration=0] - The duration to wait before resolving the promise, in milliseconds.
|
|
160
|
+
* @returns {Promise<string | undefined>} A promise that resolves when the read operation is completed.
|
|
161
|
+
* @public
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* const value = await device.read('battery', 'level', 1000);
|
|
165
|
+
* console.log('Battery level:', value);
|
|
166
|
+
*/
|
|
167
|
+
read(serviceId: string, characteristicId: string, duration?: number): Promise<string | undefined>;
|
|
168
|
+
/**
|
|
169
|
+
* Initiates the tare calibration process.
|
|
170
|
+
* @param {number} duration - The duration time for tare calibration.
|
|
171
|
+
* @returns {boolean} A boolean indicating whether the tare calibration was successful.
|
|
172
|
+
* @public
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* const success = device.tare(5000);
|
|
176
|
+
* if (success) {
|
|
177
|
+
* console.log('Tare calibration started');
|
|
178
|
+
* } else {
|
|
179
|
+
* console.log('Tare calibration failed to start');
|
|
180
|
+
* }
|
|
181
|
+
*/
|
|
182
|
+
tare(duration?: number): boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Writes a message to the specified characteristic of a Bluetooth device and optionally provides a callback to handle responses.
|
|
185
|
+
* @param {string} serviceId - The service UUID of the Bluetooth device containing the target characteristic.
|
|
186
|
+
* @param {string} characteristicId - The characteristic UUID where the message will be written.
|
|
187
|
+
* @param {string | Uint8Array | undefined} message - The message to be written to the characteristic. It can be a string or a Uint8Array.
|
|
188
|
+
* @param {number} [duration=0] - Optional. The time in milliseconds to wait before resolving the promise. Defaults to 0 for immediate resolution.
|
|
189
|
+
* @param {WriteCallback} [callback=writeCallback] - Optional. A custom callback to handle the response after the write operation is successful.
|
|
190
|
+
* @returns {Promise<void>} A promise that resolves once the write operation is complete.
|
|
191
|
+
* @public
|
|
192
|
+
* @throws {Error} Throws an error if the characteristic is undefined.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* // Example usage of the write function with a custom callback
|
|
196
|
+
* await Progressor.write("progressor", "tx", ProgressorCommands.GET_BATT_VLTG, 250, (data) => {
|
|
197
|
+
* console.log(`Battery voltage: ${data}`);
|
|
198
|
+
* });
|
|
199
|
+
*/
|
|
200
|
+
write(serviceId: string, characteristicId: string, message: string | Uint8Array | undefined, duration?: number, callback?: (data: string) => void): Promise<void>;
|
|
201
|
+
}
|
|
202
|
+
export {};
|
|
203
|
+
//# sourceMappingURL=device.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/device.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;GAEG;AACH,UAAU,cAAc;IACtB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,cAAc,CAAC,EAAE,iCAAiC,CAAA;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,eAAe,EAAE,cAAc,EAAE,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,OAAQ,SAAQ,KAAK;IACpC;;;;;;OAMG;IACH,OAAO,EAAE,qBAAqB,EAAE,CAAA;IAEhC;;;;;;OAMG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAA;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAA;IAE3B;;;;;;OAMG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAElB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAErG;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhF;;;;;;;;;;;OAWG;IACH,UAAU,IAAI,IAAI,CAAA;IAElB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAA;IAE/C;;;;;;;;;;;OAWG;IACH,WAAW,IAAI,OAAO,CAAA;IAEtB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAA;IAElD;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAEjG;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAEhC;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,EACxC,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.interface.js","sourceRoot":"","sources":["../../../src/interfaces/device.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a single data packet.
|
|
3
|
+
*/
|
|
4
|
+
export interface DownloadPacket {
|
|
5
|
+
/** Timestamp of when the packet was received */
|
|
6
|
+
received: number;
|
|
7
|
+
/** Sample number */
|
|
8
|
+
sampleNum: number;
|
|
9
|
+
/** Battery raw value */
|
|
10
|
+
battRaw: number;
|
|
11
|
+
/** Array of sample values */
|
|
12
|
+
samples: number[];
|
|
13
|
+
/** Array of mass values */
|
|
14
|
+
masses: number[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=download.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/download.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.interface.js","sourceRoot":"","sources":["../../../src/interfaces/download.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type { IClimbro } from "./device/climbro.interface.js";
|
|
2
|
+
export type { IEntralpi } from "./device/entralpi.interface.js";
|
|
3
|
+
export type { IForceBoard } from "./device/forceboard.interface.js";
|
|
4
|
+
export type { IKilterBoard } from "./device/kilterboard.interface.js";
|
|
5
|
+
export type { IMotherboard } from "./device/motherboard.interface.js";
|
|
6
|
+
export type { ImySmartBoard } from "./device/mysmartboard.interface.js";
|
|
7
|
+
export type { IProgressor } from "./device/progressor.interface.js";
|
|
8
|
+
export type { ISmartBoardPro } from "./device/smartboard-pro.interface.js";
|
|
9
|
+
export type { IWHC06 } from "./device/wh-c06.interface.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAE7D,YAAY,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,YAAY,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAEnE,YAAY,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAErE,YAAY,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAErE,YAAY,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAEvE,YAAY,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAEnE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAE1E,YAAY,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IBase } from "../interfaces/base.interface.js";
|
|
2
|
+
export declare abstract class BaseModel {
|
|
3
|
+
id?: string;
|
|
4
|
+
createdAt?: Date;
|
|
5
|
+
updatedAt?: Date;
|
|
6
|
+
constructor(base: IBase);
|
|
7
|
+
/**
|
|
8
|
+
* Generates a UUID using a simple algorithm.
|
|
9
|
+
* @returns A string representing a UUID.
|
|
10
|
+
*/
|
|
11
|
+
private static generateUUID;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=base.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.model.d.ts","sourceRoot":"","sources":["../../../src/models/base.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAE5D,8BAAsB,SAAS;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,CAAA;gBAEJ,IAAI,EAAE,KAAK;IAOvB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAO5B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseModel = void 0;
|
|
4
|
+
class BaseModel {
|
|
5
|
+
constructor(base) {
|
|
6
|
+
var _a, _b, _c, _d, _e, _f;
|
|
7
|
+
this.id = (_d = (_a = base.id) !== null && _a !== void 0 ? _a : (_c = (_b = globalThis.crypto) === null || _b === void 0 ? void 0 : _b.randomUUID) === null || _c === void 0 ? void 0 : _c.call(_b)) !== null && _d !== void 0 ? _d : BaseModel.generateUUID();
|
|
8
|
+
this.createdAt = (_e = base.createdAt) !== null && _e !== void 0 ? _e : new Date();
|
|
9
|
+
this.updatedAt = (_f = base.updatedAt) !== null && _f !== void 0 ? _f : new Date();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Generates a UUID using a simple algorithm.
|
|
13
|
+
* @returns A string representing a UUID.
|
|
14
|
+
*/
|
|
15
|
+
static generateUUID() {
|
|
16
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
17
|
+
const r = Math.floor(Math.random() * 16);
|
|
18
|
+
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
19
|
+
return v.toString(16);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.BaseModel = BaseModel;
|
|
24
|
+
//# sourceMappingURL=base.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.model.js","sourceRoot":"","sources":["../../../src/models/base.model.ts"],"names":[],"mappings":";;;AAEA,MAAsB,SAAS;IAK7B,YAAY,IAAW;;QACrB,IAAI,CAAC,EAAE,GAAG,MAAA,MAAA,IAAI,CAAC,EAAE,mCAAI,MAAA,MAAA,UAAU,CAAC,MAAM,0CAAE,UAAU,kDAAI,mCAAI,SAAS,CAAC,YAAY,EAAE,CAAA;QAElF,IAAI,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,mCAAI,IAAI,IAAI,EAAE,CAAA;QAC7C,IAAI,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,mCAAI,IAAI,IAAI,EAAE,CAAA;IAC/C,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,YAAY;QACzB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACnE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YACxC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;YACzC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAvBD,8BAuBC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Device } from "../device.model.js";
|
|
2
|
+
import type { IClimbro } from "../../interfaces/device/climbro.interface.js";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a Climbro device.
|
|
5
|
+
* {@link https://climbro.com/}
|
|
6
|
+
*/
|
|
7
|
+
export declare class Climbro extends Device implements IClimbro {
|
|
8
|
+
/**
|
|
9
|
+
* Battery constants
|
|
10
|
+
*/
|
|
11
|
+
private static readonly minBatteryDisc;
|
|
12
|
+
private static readonly maxBatteryDisc;
|
|
13
|
+
private static readonly batRangeDisc;
|
|
14
|
+
private static readonly batLevelCoef;
|
|
15
|
+
/**
|
|
16
|
+
* Synchronization flag used to track the current data type being processed.
|
|
17
|
+
* Set to BAT_DAT when processing battery data, SENS_DAT when processing sensor data.
|
|
18
|
+
* @type {number}
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
private flagSynchro;
|
|
22
|
+
/**
|
|
23
|
+
* Current battery level percentage calculated from the device's battery voltage.
|
|
24
|
+
* @type {number}
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private batteryLevel;
|
|
28
|
+
constructor();
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves battery level from the device.
|
|
31
|
+
* @returns {Promise<string | undefined>} A Promise that resolves with the battery level.
|
|
32
|
+
*/
|
|
33
|
+
battery: () => Promise<string | undefined>;
|
|
34
|
+
/**
|
|
35
|
+
* Handles data received from the device, processes force measurements and battery data
|
|
36
|
+
* according to the Climbro protocol.
|
|
37
|
+
*
|
|
38
|
+
* @param {DataView} value - The notification event.
|
|
39
|
+
*/
|
|
40
|
+
handleNotifications: (value: DataView) => void;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=climbro.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"climbro.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/climbro.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAA;AAoB5E;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,MAAO,YAAW,QAAQ;IACrD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAc;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAc;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAoD;IACxF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAEtE;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAI;IAEvB;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAI;;IAsBxB;;;OAGG;IACH,OAAO,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG9C;IAED;;;;;OAKG;IACM,mBAAmB,GAAI,OAAO,QAAQ,KAAG,IAAI,CA6ErD;CACF"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Climbro = void 0;
|
|
5
|
+
const device_model_js_1 = require("../device.model.js");
|
|
6
|
+
/**
|
|
7
|
+
* Climbro protocol constants
|
|
8
|
+
*/
|
|
9
|
+
var ClimbroResponses;
|
|
10
|
+
(function (ClimbroResponses) {
|
|
11
|
+
/**
|
|
12
|
+
* 240 - Battery data marker
|
|
13
|
+
*/
|
|
14
|
+
ClimbroResponses[ClimbroResponses["BAT_DAT"] = 240] = "BAT_DAT";
|
|
15
|
+
/**
|
|
16
|
+
* 245 - Sensor data marker
|
|
17
|
+
*/
|
|
18
|
+
ClimbroResponses[ClimbroResponses["SENS_DAT"] = 245] = "SENS_DAT";
|
|
19
|
+
/**
|
|
20
|
+
* 246 - 36kg value
|
|
21
|
+
*/
|
|
22
|
+
ClimbroResponses[ClimbroResponses["DAT_36KG"] = 246] = "DAT_36KG";
|
|
23
|
+
})(ClimbroResponses || (ClimbroResponses = {}));
|
|
24
|
+
/**
|
|
25
|
+
* Represents a Climbro device.
|
|
26
|
+
* {@link https://climbro.com/}
|
|
27
|
+
*/
|
|
28
|
+
class Climbro extends device_model_js_1.Device {
|
|
29
|
+
constructor() {
|
|
30
|
+
super({
|
|
31
|
+
filters: [{ namePrefix: "Climbro" }],
|
|
32
|
+
services: [
|
|
33
|
+
{
|
|
34
|
+
name: "UART Transparent Service",
|
|
35
|
+
id: "uart",
|
|
36
|
+
uuid: "49535343-fe7d-4ae5-8fa9-9fafd205e455",
|
|
37
|
+
characteristics: [
|
|
38
|
+
{
|
|
39
|
+
name: "Read/Notify",
|
|
40
|
+
id: "rx",
|
|
41
|
+
uuid: "49535343-1e4d-4bd9-ba61-23c647249616",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Synchronization flag used to track the current data type being processed.
|
|
49
|
+
* Set to BAT_DAT when processing battery data, SENS_DAT when processing sensor data.
|
|
50
|
+
* @type {number}
|
|
51
|
+
* @private
|
|
52
|
+
*/
|
|
53
|
+
this.flagSynchro = 0;
|
|
54
|
+
/**
|
|
55
|
+
* Current battery level percentage calculated from the device's battery voltage.
|
|
56
|
+
* @type {number}
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
this.batteryLevel = 0;
|
|
60
|
+
/**
|
|
61
|
+
* Retrieves battery level from the device.
|
|
62
|
+
* @returns {Promise<string | undefined>} A Promise that resolves with the battery level.
|
|
63
|
+
*/
|
|
64
|
+
this.battery = async () => {
|
|
65
|
+
// Battery level is continuously updated via notifications
|
|
66
|
+
return this.batteryLevel.toString();
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Handles data received from the device, processes force measurements and battery data
|
|
70
|
+
* according to the Climbro protocol.
|
|
71
|
+
*
|
|
72
|
+
* @param {DataView} value - The notification event.
|
|
73
|
+
*/
|
|
74
|
+
this.handleNotifications = (value) => {
|
|
75
|
+
if (value) {
|
|
76
|
+
// Update timestamp
|
|
77
|
+
this.updateTimestamp();
|
|
78
|
+
if (value.buffer) {
|
|
79
|
+
const receivedTime = Date.now();
|
|
80
|
+
// Convert DataView to Uint8Array for easier processing
|
|
81
|
+
const buffer = new Uint8Array(value.buffer);
|
|
82
|
+
const byteCount = buffer.length;
|
|
83
|
+
for (let i = 0; i < byteCount; i++) {
|
|
84
|
+
let signalValue = buffer[i];
|
|
85
|
+
// Check for battery data marker
|
|
86
|
+
if (signalValue === ClimbroResponses.BAT_DAT) {
|
|
87
|
+
this.flagSynchro = ClimbroResponses.BAT_DAT;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// Check for sensor data marker
|
|
91
|
+
if (signalValue === ClimbroResponses.SENS_DAT) {
|
|
92
|
+
this.flagSynchro = ClimbroResponses.SENS_DAT;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
// Check if signal is the reserved word for 36kg and convert it
|
|
96
|
+
if (signalValue === ClimbroResponses.DAT_36KG) {
|
|
97
|
+
signalValue = 36;
|
|
98
|
+
}
|
|
99
|
+
// Process battery level signal
|
|
100
|
+
if (this.flagSynchro === ClimbroResponses.BAT_DAT) {
|
|
101
|
+
this.batteryLevel = _a.batLevelCoef * (signalValue - _a.minBatteryDisc);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Process force signal
|
|
105
|
+
if (this.flagSynchro === ClimbroResponses.SENS_DAT) {
|
|
106
|
+
// Process force data inline
|
|
107
|
+
const forceValue = signalValue;
|
|
108
|
+
const numericData = forceValue - this.applyTare(forceValue);
|
|
109
|
+
// Add data to downloadable array
|
|
110
|
+
this.downloadPackets.push({
|
|
111
|
+
received: receivedTime,
|
|
112
|
+
sampleNum: this.dataPointCount,
|
|
113
|
+
battRaw: this.batteryLevel,
|
|
114
|
+
samples: [forceValue],
|
|
115
|
+
masses: [numericData],
|
|
116
|
+
});
|
|
117
|
+
// Check for max weight
|
|
118
|
+
this.massMax = Math.max(Number(this.massMax), Number(numericData)).toFixed(1);
|
|
119
|
+
// Update running sum and count
|
|
120
|
+
const currentMassTotal = Math.max(-1000, Number(numericData));
|
|
121
|
+
this.massTotalSum += currentMassTotal;
|
|
122
|
+
this.dataPointCount++;
|
|
123
|
+
// Calculate the average dynamically
|
|
124
|
+
this.massAverage = (this.massTotalSum / this.dataPointCount).toFixed(1);
|
|
125
|
+
// Check if device is being used
|
|
126
|
+
this.activityCheck(numericData);
|
|
127
|
+
this.notifyCallback({
|
|
128
|
+
massMax: this.massMax,
|
|
129
|
+
massAverage: this.massAverage,
|
|
130
|
+
massTotal: Math.max(-1000, numericData).toFixed(1),
|
|
131
|
+
});
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.Climbro = Climbro;
|
|
141
|
+
_a = Climbro;
|
|
142
|
+
/**
|
|
143
|
+
* Battery constants
|
|
144
|
+
*/
|
|
145
|
+
Climbro.minBatteryDisc = 112;
|
|
146
|
+
Climbro.maxBatteryDisc = 230;
|
|
147
|
+
Climbro.batRangeDisc = _a.maxBatteryDisc - _a.minBatteryDisc;
|
|
148
|
+
Climbro.batLevelCoef = 100 / _a.batRangeDisc;
|
|
149
|
+
//# sourceMappingURL=climbro.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"climbro.model.js","sourceRoot":"","sources":["../../../../src/models/device/climbro.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Device } from "../device.model.js";
|
|
2
|
+
import type { IEntralpi } from "../../interfaces/device/entralpi.interface.js";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a Entralpi device.
|
|
5
|
+
* {@link https://entralpi.com}
|
|
6
|
+
*/
|
|
7
|
+
export declare class Entralpi extends Device implements IEntralpi {
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Retrieves battery or voltage information from the device.
|
|
11
|
+
* @returns {Promise<string | undefined>} A Promise that resolves with the battery or voltage information.
|
|
12
|
+
*/
|
|
13
|
+
battery: () => Promise<string | undefined>;
|
|
14
|
+
/**
|
|
15
|
+
* Retrieves IEEE 11073-20601 Regulatory Certification from the device.
|
|
16
|
+
* @returns {Promise<string>} A Promise that resolves with the certification.
|
|
17
|
+
*/
|
|
18
|
+
certification: () => Promise<string | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Retrieves firmware version from the device.
|
|
21
|
+
* @returns {Promise<string>} A Promise that resolves with the firmware version.
|
|
22
|
+
*/
|
|
23
|
+
firmware: () => Promise<string | undefined>;
|
|
24
|
+
/**
|
|
25
|
+
* Handles data received from the device, processes weight measurements,
|
|
26
|
+
* and updates mass data including maximum and average values.
|
|
27
|
+
* It also handles command responses for retrieving device information.
|
|
28
|
+
*
|
|
29
|
+
* @param {DataView} value - The notification event.
|
|
30
|
+
*/
|
|
31
|
+
handleNotifications: (value: DataView) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Retrieves hardware version from the device.
|
|
34
|
+
* @returns {Promise<string>} A Promise that resolves with the hardware version.
|
|
35
|
+
*/
|
|
36
|
+
hardware: () => Promise<string | undefined>;
|
|
37
|
+
/**
|
|
38
|
+
* Retrieves manufacturer information from the device.
|
|
39
|
+
* @returns {Promise<string>} A Promise that resolves with the manufacturer information.
|
|
40
|
+
*/
|
|
41
|
+
manufacturer: () => Promise<string | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Retrieves model number from the device.
|
|
44
|
+
* @returns {Promise<string>} A Promise that resolves with the model number.
|
|
45
|
+
*/
|
|
46
|
+
model: () => Promise<string | undefined>;
|
|
47
|
+
/**
|
|
48
|
+
* Retrieves PnP ID from the device, a set of values that used to create a device ID value that is unique for this device.
|
|
49
|
+
* Included in the characteristic is a Vendor ID Source field, a Vendor ID field, a Product ID field and a Product Version field
|
|
50
|
+
* @returns {Promise<string>} A Promise that resolves with the PnP ID.
|
|
51
|
+
*/
|
|
52
|
+
pnp: () => Promise<string | undefined>;
|
|
53
|
+
/**
|
|
54
|
+
* Retrieves software version from the device.
|
|
55
|
+
* @returns {Promise<string>} A Promise that resolves with the software version.
|
|
56
|
+
*/
|
|
57
|
+
software: () => Promise<string | undefined>;
|
|
58
|
+
/**
|
|
59
|
+
* Retrieves system id from the device.
|
|
60
|
+
* @returns {Promise<string>} A Promise that resolves with the system id.
|
|
61
|
+
*/
|
|
62
|
+
system: () => Promise<string | undefined>;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=entralpi.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entralpi.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/entralpi.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAE9E;;;GAGG;AACH,qBAAa,QAAS,SAAQ,MAAO,YAAW,SAAS;;IA2HvD;;;OAGG;IACH,OAAO,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE9C;IAED;;;OAGG;IACH,aAAa,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEpD;IAED;;;OAGG;IACH,QAAQ,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE/C;IAED;;;;;;OAMG;IACM,mBAAmB,GAAI,OAAO,QAAQ,KAAG,IAAI,CA6CrD;IAED;;;OAGG;IACH,QAAQ,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE/C;IAED;;;OAGG;IACH,YAAY,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEnD;IAED;;;OAGG;IACH,KAAK,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE5C;IAED;;;;OAIG;IACH,GAAG,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE1C;IAED;;;OAGG;IACH,QAAQ,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE/C;IAED;;;OAGG;IACH,MAAM,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE7C;CACF"}
|