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