@hangtime/grip-connect 0.8.6 → 0.8.7
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/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 +7 -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 +11 -0
- package/dist/cjs/models/device/climbro.model.d.ts.map +1 -0
- package/dist/cjs/models/device/climbro.model.js +19 -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 +7 -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 +11 -0
- package/dist/models/device/climbro.model.d.ts.map +1 -0
- package/dist/models/device/climbro.model.js +15 -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/deno.json +0 -8
- package/tsconfig.cjs.json +0 -15
- package/tsconfig.json +0 -13
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Motherboard = void 0;
|
|
4
|
+
const device_model_js_1 = require("../device.model.js");
|
|
5
|
+
/**
|
|
6
|
+
* Represents a Griptonite Motherboard device.
|
|
7
|
+
* {@link https://griptonite.io}
|
|
8
|
+
*/
|
|
9
|
+
class Motherboard extends device_model_js_1.Device {
|
|
10
|
+
constructor() {
|
|
11
|
+
super({
|
|
12
|
+
filters: [{ name: "Motherboard" }],
|
|
13
|
+
services: [
|
|
14
|
+
{
|
|
15
|
+
name: "Device Information",
|
|
16
|
+
id: "device",
|
|
17
|
+
uuid: "0000180a-0000-1000-8000-00805f9b34fb",
|
|
18
|
+
characteristics: [
|
|
19
|
+
// {
|
|
20
|
+
// name: 'Serial Number String (Blocked)',
|
|
21
|
+
// id: 'serial'
|
|
22
|
+
// uuid: '00002a25-0000-1000-8000-00805f9b34fb'
|
|
23
|
+
// },
|
|
24
|
+
{
|
|
25
|
+
name: "Firmware Revision String",
|
|
26
|
+
id: "firmware",
|
|
27
|
+
uuid: "00002a26-0000-1000-8000-00805f9b34fb",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "Hardware Revision String",
|
|
31
|
+
id: "hardware",
|
|
32
|
+
uuid: "00002a27-0000-1000-8000-00805f9b34fb",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "Manufacturer Name String",
|
|
36
|
+
id: "manufacturer",
|
|
37
|
+
uuid: "00002a29-0000-1000-8000-00805f9b34fb",
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "Battery Service",
|
|
43
|
+
id: "battery",
|
|
44
|
+
uuid: "0000180f-0000-1000-8000-00805f9b34fb",
|
|
45
|
+
characteristics: [
|
|
46
|
+
{
|
|
47
|
+
name: "Battery Level",
|
|
48
|
+
id: "level",
|
|
49
|
+
uuid: "00002a19-0000-1000-8000-00805f9b34fb",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "LED Service",
|
|
55
|
+
id: "led",
|
|
56
|
+
uuid: "10ababcd-15e1-28ff-de13-725bea03b127",
|
|
57
|
+
characteristics: [
|
|
58
|
+
{
|
|
59
|
+
name: "Red LED",
|
|
60
|
+
id: "red",
|
|
61
|
+
uuid: "10ab1524-15e1-28ff-de13-725bea03b127",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "Green LED",
|
|
65
|
+
id: "green",
|
|
66
|
+
uuid: "10ab1525-15e1-28ff-de13-725bea03b127",
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "UART Nordic Service",
|
|
72
|
+
id: "uart",
|
|
73
|
+
uuid: "6e400001-b5a3-f393-e0a9-e50e24dcca9e",
|
|
74
|
+
characteristics: [
|
|
75
|
+
{
|
|
76
|
+
name: "TX",
|
|
77
|
+
id: "tx",
|
|
78
|
+
uuid: "6e400002-b5a3-f393-e0a9-e50e24dcca9e",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: "RX",
|
|
82
|
+
id: "rx",
|
|
83
|
+
uuid: "6e400003-b5a3-f393-e0a9-e50e24dcca9e",
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
commands: {
|
|
89
|
+
GET_SERIAL: "#",
|
|
90
|
+
START_WEIGHT_MEAS: "S30",
|
|
91
|
+
STOP_WEIGHT_MEAS: "", // All commands will stop the data stream.
|
|
92
|
+
GET_CALIBRATION: "C",
|
|
93
|
+
SLEEP: 0,
|
|
94
|
+
GET_TEXT: "T",
|
|
95
|
+
DEBUG_STREAM: "D",
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* Buffer to store received data from the device.
|
|
100
|
+
* @type {number[]}
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
103
|
+
this.receiveBuffer = [];
|
|
104
|
+
/**
|
|
105
|
+
* Calibration data for each sensor of the device.
|
|
106
|
+
* @type {number[][][]}
|
|
107
|
+
* @private
|
|
108
|
+
*/
|
|
109
|
+
this.calibrationData = [[], [], [], []];
|
|
110
|
+
/**
|
|
111
|
+
* Applies calibration to a sample value.
|
|
112
|
+
* @param {number} sample - The sample value to calibrate.
|
|
113
|
+
* @param {number[][]} calibration - The calibration data.
|
|
114
|
+
* @returns {number} The calibrated sample value.
|
|
115
|
+
*/
|
|
116
|
+
this.applyCalibration = (sample, calibration) => {
|
|
117
|
+
// Extract the calibrated value for the zero point
|
|
118
|
+
const zeroCalibration = calibration[0][2];
|
|
119
|
+
// Initialize sign as positive
|
|
120
|
+
let sign = 1;
|
|
121
|
+
// Initialize the final calibrated value
|
|
122
|
+
let final = 0;
|
|
123
|
+
// If the sample value is less than the zero calibration point
|
|
124
|
+
if (sample < zeroCalibration) {
|
|
125
|
+
// Change the sign to negative
|
|
126
|
+
sign = -1;
|
|
127
|
+
// Reflect the sample around the zero calibration point
|
|
128
|
+
sample = /* 2 * zeroCalibration */ -sample;
|
|
129
|
+
}
|
|
130
|
+
// Iterate through the calibration data
|
|
131
|
+
for (let i = 1; i < calibration.length; i++) {
|
|
132
|
+
// Extract the lower and upper bounds of the current calibration range
|
|
133
|
+
const calibrationStart = calibration[i - 1][2];
|
|
134
|
+
const calibrationEnd = calibration[i][2];
|
|
135
|
+
// If the sample value is within the current calibration range
|
|
136
|
+
if (sample < calibrationEnd) {
|
|
137
|
+
// Interpolate to get the calibrated value within the range
|
|
138
|
+
final =
|
|
139
|
+
calibration[i - 1][1] +
|
|
140
|
+
((sample - calibrationStart) / (calibrationEnd - calibrationStart)) *
|
|
141
|
+
(calibration[i][1] - calibration[i - 1][1]);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Return the calibrated value with the appropriate sign (positive/negative)
|
|
146
|
+
return sign * final;
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Retrieves battery or voltage information from the device.
|
|
150
|
+
* @returns {Promise<string | undefined>} A Promise that resolves with the battery or voltage information,
|
|
151
|
+
*/
|
|
152
|
+
this.battery = async () => {
|
|
153
|
+
return await this.read("battery", "level", 250);
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Writes a command to get calibration data from the device.
|
|
157
|
+
* @returns {Promise<void>} A Promise that resolves when the command is successfully sent.
|
|
158
|
+
*/
|
|
159
|
+
this.calibration = async () => {
|
|
160
|
+
await this.write("uart", "tx", this.commands.GET_CALIBRATION, 2500, (data) => {
|
|
161
|
+
console.log(data);
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Retrieves firmware version from the device.
|
|
166
|
+
* @returns {Promise<string>} A Promise that resolves with the firmware version,
|
|
167
|
+
*/
|
|
168
|
+
this.firmware = async () => {
|
|
169
|
+
return await this.read("device", "firmware", 250);
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Handles data received from the Motherboard device. Processes hex-encoded streaming packets
|
|
173
|
+
* to extract samples, calibrate masses, and update running averages of mass data.
|
|
174
|
+
* If the received data is not a valid hex packet, it returns the unprocessed data.
|
|
175
|
+
*
|
|
176
|
+
* @param {DataView} value - The notification event.
|
|
177
|
+
*/
|
|
178
|
+
this.handleNotifications = (value) => {
|
|
179
|
+
if (value) {
|
|
180
|
+
// Update timestamp
|
|
181
|
+
this.updateTimestamp();
|
|
182
|
+
if (value.buffer) {
|
|
183
|
+
for (let i = 0; i < value.byteLength; i++) {
|
|
184
|
+
this.receiveBuffer.push(value.getUint8(i));
|
|
185
|
+
}
|
|
186
|
+
let idx;
|
|
187
|
+
while ((idx = this.receiveBuffer.indexOf(10)) >= 0) {
|
|
188
|
+
const line = this.receiveBuffer.splice(0, idx + 1).slice(0, -1); // Combine and remove LF
|
|
189
|
+
if (line.length > 0 && line[line.length - 1] === 13)
|
|
190
|
+
line.pop(); // Remove CR
|
|
191
|
+
const decoder = new TextDecoder("utf-8");
|
|
192
|
+
const receivedData = decoder.decode(new Uint8Array(line));
|
|
193
|
+
const receivedTime = Date.now();
|
|
194
|
+
// Check if the line is entirely hex characters
|
|
195
|
+
const isAllHex = /^[0-9A-Fa-f]+$/g.test(receivedData);
|
|
196
|
+
// Handle streaming packet
|
|
197
|
+
if (isAllHex && receivedData.length === Motherboard.packetLength) {
|
|
198
|
+
// Base-16 decode the string: convert hex pairs to byte values
|
|
199
|
+
const bytes = Array.from({ length: receivedData.length / 2 }, (_, i) => Number(`0x${receivedData.substring(i * 2, i * 2 + 2)}`));
|
|
200
|
+
// Translate header into packet, number of samples from the packet length
|
|
201
|
+
const packet = {
|
|
202
|
+
received: receivedTime,
|
|
203
|
+
sampleNum: new DataView(new Uint8Array(bytes).buffer).getUint16(0, true),
|
|
204
|
+
battRaw: new DataView(new Uint8Array(bytes).buffer).getUint16(2, true),
|
|
205
|
+
samples: [],
|
|
206
|
+
masses: [],
|
|
207
|
+
};
|
|
208
|
+
const dataView = new DataView(new Uint8Array(bytes).buffer);
|
|
209
|
+
for (let i = 0; i < Motherboard.samplesNumber; i++) {
|
|
210
|
+
const sampleStart = 4 + 3 * i;
|
|
211
|
+
// Use DataView to read the 24-bit unsigned integer
|
|
212
|
+
const rawValue = dataView.getUint8(sampleStart) |
|
|
213
|
+
(dataView.getUint8(sampleStart + 1) << 8) |
|
|
214
|
+
(dataView.getUint8(sampleStart + 2) << 16);
|
|
215
|
+
// Ensure unsigned 32-bit integer
|
|
216
|
+
packet.samples[i] = rawValue >>> 0;
|
|
217
|
+
if (packet.samples[i] >= 0x7fffff) {
|
|
218
|
+
packet.samples[i] -= 0x1000000;
|
|
219
|
+
}
|
|
220
|
+
packet.masses[i] = this.applyCalibration(packet.samples[i], this.calibrationData[i]);
|
|
221
|
+
}
|
|
222
|
+
// invert center and right values
|
|
223
|
+
packet.masses[1] *= -1;
|
|
224
|
+
packet.masses[2] *= -1;
|
|
225
|
+
// Add data to downloadable Array
|
|
226
|
+
this.downloadPackets.push({
|
|
227
|
+
received: packet.received,
|
|
228
|
+
sampleNum: packet.battRaw,
|
|
229
|
+
battRaw: packet.received,
|
|
230
|
+
samples: [...packet.samples],
|
|
231
|
+
masses: [...packet.masses],
|
|
232
|
+
});
|
|
233
|
+
let left = packet.masses[0];
|
|
234
|
+
let center = packet.masses[1];
|
|
235
|
+
let right = packet.masses[2];
|
|
236
|
+
// Tare correction
|
|
237
|
+
left -= this.applyTare(left);
|
|
238
|
+
center -= this.applyTare(center);
|
|
239
|
+
right -= this.applyTare(right);
|
|
240
|
+
this.massMax = Math.max(Number(this.massMax), Math.max(-1000, left + center + right)).toFixed(1);
|
|
241
|
+
// Update running sum and count
|
|
242
|
+
const currentMassTotal = Math.max(-1000, left + center + right);
|
|
243
|
+
this.massTotalSum += currentMassTotal;
|
|
244
|
+
this.dataPointCount++;
|
|
245
|
+
// Calculate the average dynamically
|
|
246
|
+
this.massAverage = (this.massTotalSum / this.dataPointCount).toFixed(1);
|
|
247
|
+
// Check if device is being used
|
|
248
|
+
this.activityCheck(center);
|
|
249
|
+
// Notify with weight data
|
|
250
|
+
this.notifyCallback({
|
|
251
|
+
massTotal: Math.max(-1000, left + center + right).toFixed(1),
|
|
252
|
+
massMax: this.massMax,
|
|
253
|
+
massAverage: this.massAverage,
|
|
254
|
+
massLeft: Math.max(-1000, packet.masses[0]).toFixed(1),
|
|
255
|
+
massCenter: Math.max(-1000, packet.masses[1]).toFixed(1),
|
|
256
|
+
massRight: Math.max(-1000, packet.masses[2]).toFixed(1),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
else if (this.writeLast === this.commands.GET_CALIBRATION) {
|
|
260
|
+
// check data integrity
|
|
261
|
+
if ((receivedData.match(/,/g) || []).length === 3) {
|
|
262
|
+
const parts = receivedData.split(",");
|
|
263
|
+
const numericParts = parts.map((x) => parseFloat(x));
|
|
264
|
+
this.calibrationData[numericParts[0]].push(numericParts.slice(1));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// unhandled data
|
|
269
|
+
this.writeCallback(receivedData);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Retrieves hardware version from the device.
|
|
277
|
+
* @returns {Promise<string>} A Promise that resolves with the hardware version,
|
|
278
|
+
*/
|
|
279
|
+
this.hardware = async () => {
|
|
280
|
+
return await this.read("device", "hardware", 250);
|
|
281
|
+
};
|
|
282
|
+
/**
|
|
283
|
+
* Sets the LED color based on a single color option. Defaults to turning the LEDs off if no configuration is provided.
|
|
284
|
+
* @param {"green" | "red" | "orange"} [config] - Optional color or array of climb placements for the LEDs. Ignored if placements are provided.
|
|
285
|
+
* @returns {Promise<number[] | undefined>} A promise that resolves with the payload array for the Kilter Board if LED settings were applied, or `undefined` if no action was taken or for the Motherboard.
|
|
286
|
+
*/
|
|
287
|
+
this.led = async (config) => {
|
|
288
|
+
if (this.isConnected()) {
|
|
289
|
+
const colorMapping = {
|
|
290
|
+
green: [[0x00], [0x01]],
|
|
291
|
+
red: [[0x01], [0x00]],
|
|
292
|
+
orange: [[0x01], [0x01]],
|
|
293
|
+
off: [[0x00], [0x00]],
|
|
294
|
+
};
|
|
295
|
+
// Default to "off" color if config is not set or not found in colorMapping
|
|
296
|
+
const color = typeof config === "string" && colorMapping[config] ? config : "off";
|
|
297
|
+
const [redValue, greenValue] = colorMapping[color];
|
|
298
|
+
await this.write("led", "red", new Uint8Array(redValue));
|
|
299
|
+
await this.write("led", "green", new Uint8Array(greenValue), 1250);
|
|
300
|
+
}
|
|
301
|
+
return undefined;
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Retrieves manufacturer information from the device.
|
|
305
|
+
* @returns {Promise<string>} A Promise that resolves with the manufacturer information,
|
|
306
|
+
*/
|
|
307
|
+
this.manufacturer = async () => {
|
|
308
|
+
return await this.read("device", "manufacturer", 250);
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Retrieves serial number from the device.
|
|
312
|
+
* @returns {Promise<string>} A Promise that resolves with the serial number,
|
|
313
|
+
*/
|
|
314
|
+
this.serial = async () => {
|
|
315
|
+
let response = undefined;
|
|
316
|
+
await this.write("uart", "tx", this.commands.GET_SERIAL, 250, (data) => {
|
|
317
|
+
response = data;
|
|
318
|
+
});
|
|
319
|
+
return response;
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* Stops the data stream on the specified device.
|
|
323
|
+
* @returns {Promise<void>} A promise that resolves when the stream is stopped.
|
|
324
|
+
*/
|
|
325
|
+
this.stop = async () => {
|
|
326
|
+
await this.write("uart", "tx", this.commands.STOP_WEIGHT_MEAS, 0);
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* Starts streaming data from the specified device.
|
|
330
|
+
* @param {number} [duration=0] - The duration of the stream in milliseconds. If set to 0, stream will continue indefinitely.
|
|
331
|
+
* @returns {Promise<void>} A promise that resolves when the streaming operation is completed.
|
|
332
|
+
*/
|
|
333
|
+
this.stream = async (duration = 0) => {
|
|
334
|
+
// Reset download packets
|
|
335
|
+
this.downloadPackets.length = 0;
|
|
336
|
+
// Read calibration data if not already available
|
|
337
|
+
if (!this.calibrationData[0].length) {
|
|
338
|
+
await this.calibration();
|
|
339
|
+
}
|
|
340
|
+
// Start streaming data
|
|
341
|
+
await this.write("uart", "tx", this.commands.START_WEIGHT_MEAS, duration);
|
|
342
|
+
// Stop streaming if duration is set
|
|
343
|
+
if (duration !== 0) {
|
|
344
|
+
await this.stop();
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
/**
|
|
348
|
+
* Retrieves the entire 320 bytes of non-volatile memory from the device.
|
|
349
|
+
*
|
|
350
|
+
* The memory consists of 10 segments, each 32 bytes long. If any segment was previously written,
|
|
351
|
+
* the corresponding data will appear in the response. Unused portions of the memory are
|
|
352
|
+
* padded with whitespace.
|
|
353
|
+
*
|
|
354
|
+
* @returns {Promise<string>} A Promise that resolves with the 320-byte memory content as a string,
|
|
355
|
+
*/
|
|
356
|
+
this.text = async () => {
|
|
357
|
+
let response = undefined;
|
|
358
|
+
await this.write("uart", "tx", this.commands.GET_TEXT, 250, (data) => {
|
|
359
|
+
response = data;
|
|
360
|
+
});
|
|
361
|
+
return response;
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
exports.Motherboard = Motherboard;
|
|
366
|
+
/**
|
|
367
|
+
* Length of the packet received from the device.
|
|
368
|
+
* @type {number}
|
|
369
|
+
* @static
|
|
370
|
+
* @readonly
|
|
371
|
+
* @constant
|
|
372
|
+
*/
|
|
373
|
+
Motherboard.packetLength = 32;
|
|
374
|
+
/**
|
|
375
|
+
* Number of samples contained in the data packet.
|
|
376
|
+
* @type {number}
|
|
377
|
+
* @static
|
|
378
|
+
* @readonly
|
|
379
|
+
* @constant
|
|
380
|
+
*/
|
|
381
|
+
Motherboard.samplesNumber = 3;
|
|
382
|
+
//# sourceMappingURL=motherboard.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motherboard.model.js","sourceRoot":"","sources":["../../../../src/models/device/motherboard.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Device } from "../device.model.js";
|
|
2
|
+
import type { ImySmartBoard } from "../../interfaces/device/mysmartboard.interface.js";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a Smartboard Climbing mySmartBoard device.
|
|
5
|
+
* TODO: Add services, do you own a mySmartBoard? Help us!
|
|
6
|
+
* {@link https://www.smartboard-climbing.com}
|
|
7
|
+
*/
|
|
8
|
+
export declare class mySmartBoard extends Device implements ImySmartBoard {
|
|
9
|
+
constructor();
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=mysmartboard.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysmartboard.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/mysmartboard.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAA;AAEtF;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,MAAO,YAAW,aAAa;;CAOhE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mySmartBoard = void 0;
|
|
4
|
+
const device_model_js_1 = require("../device.model.js");
|
|
5
|
+
/**
|
|
6
|
+
* Represents a Smartboard Climbing mySmartBoard device.
|
|
7
|
+
* TODO: Add services, do you own a mySmartBoard? Help us!
|
|
8
|
+
* {@link https://www.smartboard-climbing.com}
|
|
9
|
+
*/
|
|
10
|
+
class mySmartBoard extends device_model_js_1.Device {
|
|
11
|
+
constructor() {
|
|
12
|
+
super({
|
|
13
|
+
filters: [{ name: "mySmartBoard" }],
|
|
14
|
+
services: [],
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.mySmartBoard = mySmartBoard;
|
|
19
|
+
//# sourceMappingURL=mysmartboard.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysmartboard.model.js","sourceRoot":"","sources":["../../../../src/models/device/mysmartboard.model.ts"],"names":[],"mappings":";;;AAAA,wDAA2C;AAG3C;;;;GAIG;AACH,MAAa,YAAa,SAAQ,wBAAM;IACtC;QACE,KAAK,CAAC;YACJ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;YACnC,QAAQ,EAAE,EAAE;SACb,CAAC,CAAA;IACJ,CAAC;CACF;AAPD,oCAOC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Device } from "../device.model.js";
|
|
2
|
+
import type { IProgressor } from "../../interfaces/device/progressor.interface.js";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a Tindeq Progressor device.
|
|
5
|
+
* {@link https://tindeq.com}
|
|
6
|
+
*/
|
|
7
|
+
export declare class Progressor extends Device implements IProgressor {
|
|
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 firmware version from the device.
|
|
16
|
+
* @returns {Promise<string>} A Promise that resolves with the firmware version,
|
|
17
|
+
*/
|
|
18
|
+
firmware: () => Promise<string | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Handles data received from the device, processes weight measurements,
|
|
21
|
+
* and updates mass data including maximum and average values.
|
|
22
|
+
* It also handles command responses for retrieving device information.
|
|
23
|
+
*
|
|
24
|
+
* @param {DataView} value - The notification event.
|
|
25
|
+
*/
|
|
26
|
+
handleNotifications: (value: DataView) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Stops the data stream on the specified device.
|
|
29
|
+
* @returns {Promise<void>} A promise that resolves when the stream is stopped.
|
|
30
|
+
*/
|
|
31
|
+
stop: () => Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Starts streaming data from the specified device.
|
|
34
|
+
* @param {number} [duration=0] - The duration of the stream in milliseconds. If set to 0, stream will continue indefinitely.
|
|
35
|
+
* @returns {Promise<void>} A promise that resolves when the streaming operation is completed.
|
|
36
|
+
*/
|
|
37
|
+
stream: (duration?: number) => Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=progressor.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressor.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/progressor.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAA;AAqClF;;;GAGG;AACH,qBAAa,UAAW,SAAQ,MAAO,YAAW,WAAW;;IAoD3D;;;OAGG;IACH,OAAO,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM9C;IAED;;;OAGG;IACH,QAAQ,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM/C;IAED;;;;;;OAMG;IACM,mBAAmB,GAAI,OAAO,QAAQ,KAAG,IAAI,CA0ErD;IAED;;;OAGG;IACH,IAAI,QAAa,OAAO,CAAC,IAAI,CAAC,CAE7B;IAED;;;;OAIG;IACH,MAAM,GAAU,iBAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CAS3C;CACF"}
|