@hangtime/grip-connect 0.8.7 → 0.10.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 +15 -9
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/callback.interface.d.ts +37 -31
- package/dist/cjs/interfaces/callback.interface.d.ts.map +1 -1
- package/dist/cjs/interfaces/device/climbro.interface.d.ts +5 -0
- package/dist/cjs/interfaces/device/climbro.interface.d.ts.map +1 -1
- package/dist/cjs/interfaces/device/kilterboard.interface.d.ts +3 -2
- package/dist/cjs/interfaces/device/kilterboard.interface.d.ts.map +1 -1
- package/dist/cjs/interfaces/device.interface.d.ts +2 -2
- package/dist/cjs/interfaces/device.interface.d.ts.map +1 -1
- package/dist/cjs/models/device/climbro.model.d.ts +32 -1
- package/dist/cjs/models/device/climbro.model.d.ts.map +1 -1
- package/dist/cjs/models/device/climbro.model.js +129 -3
- package/dist/cjs/models/device/climbro.model.js.map +1 -1
- package/dist/cjs/models/device/entralpi.model.d.ts.map +1 -1
- package/dist/cjs/models/device/entralpi.model.js +5 -9
- package/dist/cjs/models/device/entralpi.model.js.map +1 -1
- package/dist/cjs/models/device/forceboard.model.d.ts.map +1 -1
- package/dist/cjs/models/device/forceboard.model.js +5 -9
- package/dist/cjs/models/device/forceboard.model.js.map +1 -1
- package/dist/cjs/models/device/kilterboard.model.d.ts +5 -3
- package/dist/cjs/models/device/kilterboard.model.d.ts.map +1 -1
- package/dist/cjs/models/device/kilterboard.model.js +52 -16
- package/dist/cjs/models/device/kilterboard.model.js.map +1 -1
- package/dist/cjs/models/device/motherboard.model.d.ts +7 -0
- package/dist/cjs/models/device/motherboard.model.d.ts.map +1 -1
- package/dist/cjs/models/device/motherboard.model.js +28 -15
- package/dist/cjs/models/device/motherboard.model.js.map +1 -1
- package/dist/cjs/models/device/pb-700bt.model.d.ts +63 -0
- package/dist/cjs/models/device/pb-700bt.model.d.ts.map +1 -0
- package/dist/cjs/models/device/pb-700bt.model.js +247 -0
- package/dist/cjs/models/device/pb-700bt.model.js.map +1 -0
- package/dist/cjs/models/device/progressor.model.d.ts.map +1 -1
- package/dist/cjs/models/device/progressor.model.js +4 -8
- package/dist/cjs/models/device/progressor.model.js.map +1 -1
- package/dist/cjs/models/device/smartboard-pro.model.d.ts +8 -0
- package/dist/cjs/models/device/smartboard-pro.model.d.ts.map +1 -1
- package/dist/cjs/models/device/smartboard-pro.model.js +62 -6
- package/dist/cjs/models/device/smartboard-pro.model.js.map +1 -1
- package/dist/cjs/models/device/wh-c06.model.d.ts.map +1 -1
- package/dist/cjs/models/device/wh-c06.model.js +5 -9
- package/dist/cjs/models/device/wh-c06.model.js.map +1 -1
- package/dist/cjs/models/device.model.d.ts +72 -12
- package/dist/cjs/models/device.model.d.ts.map +1 -1
- package/dist/cjs/models/device.model.js +127 -5
- package/dist/cjs/models/device.model.js.map +1 -1
- package/dist/cjs/models/index.d.ts +2 -1
- package/dist/cjs/models/index.d.ts.map +1 -1
- package/dist/cjs/models/index.js +4 -1
- package/dist/cjs/models/index.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/callback.interface.d.ts +37 -31
- package/dist/interfaces/callback.interface.d.ts.map +1 -1
- package/dist/interfaces/device/climbro.interface.d.ts +5 -0
- package/dist/interfaces/device/climbro.interface.d.ts.map +1 -1
- package/dist/interfaces/device/kilterboard.interface.d.ts +3 -2
- package/dist/interfaces/device/kilterboard.interface.d.ts.map +1 -1
- package/dist/interfaces/device.interface.d.ts +2 -2
- package/dist/interfaces/device.interface.d.ts.map +1 -1
- package/dist/models/device/climbro.model.d.ts +32 -1
- package/dist/models/device/climbro.model.d.ts.map +1 -1
- package/dist/models/device/climbro.model.js +127 -3
- package/dist/models/device/climbro.model.js.map +1 -1
- package/dist/models/device/entralpi.model.d.ts.map +1 -1
- package/dist/models/device/entralpi.model.js +5 -9
- package/dist/models/device/entralpi.model.js.map +1 -1
- package/dist/models/device/forceboard.model.d.ts.map +1 -1
- package/dist/models/device/forceboard.model.js +5 -9
- package/dist/models/device/forceboard.model.js.map +1 -1
- package/dist/models/device/kilterboard.model.d.ts +5 -3
- package/dist/models/device/kilterboard.model.d.ts.map +1 -1
- package/dist/models/device/kilterboard.model.js +52 -16
- package/dist/models/device/kilterboard.model.js.map +1 -1
- package/dist/models/device/motherboard.model.d.ts +7 -0
- package/dist/models/device/motherboard.model.d.ts.map +1 -1
- package/dist/models/device/motherboard.model.js +28 -15
- package/dist/models/device/motherboard.model.js.map +1 -1
- package/dist/models/device/pb-700bt.model.d.ts +63 -0
- package/dist/models/device/pb-700bt.model.d.ts.map +1 -0
- package/dist/models/device/pb-700bt.model.js +243 -0
- package/dist/models/device/pb-700bt.model.js.map +1 -0
- package/dist/models/device/progressor.model.d.ts.map +1 -1
- package/dist/models/device/progressor.model.js +4 -8
- package/dist/models/device/progressor.model.js.map +1 -1
- package/dist/models/device/smartboard-pro.model.d.ts +8 -0
- package/dist/models/device/smartboard-pro.model.d.ts.map +1 -1
- package/dist/models/device/smartboard-pro.model.js +62 -6
- package/dist/models/device/smartboard-pro.model.js.map +1 -1
- package/dist/models/device/wh-c06.model.d.ts.map +1 -1
- package/dist/models/device/wh-c06.model.js +5 -9
- package/dist/models/device/wh-c06.model.js.map +1 -1
- package/dist/models/device.model.d.ts +72 -12
- package/dist/models/device.model.d.ts.map +1 -1
- package/dist/models/device.model.js +149 -14
- package/dist/models/device.model.js.map +1 -1
- package/dist/models/index.d.ts +2 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -1
- package/dist/models/index.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/package.json +4 -1
- package/src/index.ts +11 -0
- package/src/interfaces/callback.interface.ts +41 -31
- package/src/interfaces/device/climbro.interface.ts +8 -2
- package/src/interfaces/device/kilterboard.interface.ts +2 -2
- package/src/interfaces/device.interface.ts +2 -2
- package/src/models/device/climbro.model.ts +146 -3
- package/src/models/device/entralpi.model.ts +5 -9
- package/src/models/device/forceboard.model.ts +5 -9
- package/src/models/device/kilterboard.model.ts +56 -19
- package/src/models/device/motherboard.model.ts +32 -15
- package/src/models/device/pb-700bt.model.ts +263 -0
- package/src/models/device/progressor.model.ts +4 -8
- package/src/models/device/smartboard-pro.model.ts +73 -6
- package/src/models/device/wh-c06.model.ts +5 -9
- package/src/models/device.model.ts +179 -16
- package/src/models/index.ts +3 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ the [Griptonite Motherboard](https://griptonite.io/shop/motherboard/),
|
|
|
8
8
|
[Tindeq Progressor](https://tindeq.com/product/progressor/),
|
|
9
9
|
[PitchSix Force Board](https://pitchsix.com/products/force-board-portable),
|
|
10
10
|
[Weiheng WH-C06](https://weihengmanufacturer.com/products/wh-c06-bluetooth-300kg-hanging-scale/),
|
|
11
|
-
[
|
|
11
|
+
[Frez Dyno](https://shop.frez.app/products/pre-order-frez-dyno), [Entralpi](https://entralpi.com/),
|
|
12
12
|
[Climbro](https://climbro.com/), or [mySmartBoard](https://www.smartboard-climbing.com/)
|
|
13
13
|
|
|
14
14
|
And LED system boards from [Aurora Climbing](https://auroraclimbing.com/) like the
|
|
@@ -18,6 +18,8 @@ And LED system boards from [Aurora Climbing](https://auroraclimbing.com/) like t
|
|
|
18
18
|
[Decoy Board](https://decoy-holds.com/pages/decoy-board), [Touchstone Board](https://touchstoneboardapp.com/) and
|
|
19
19
|
[So iLL Board](https://apps.apple.com/us/app/so-ill-board/id1358056082).
|
|
20
20
|
|
|
21
|
+
And gyroscopic hand exercisers, such as the [NSD PB-700BT](https://www.nsd.com.tw/).
|
|
22
|
+
|
|
21
23
|
The library is available in multiple flavors to support different platforms:
|
|
22
24
|
|
|
23
25
|
- **Web**: The core package for web applications using the Web Bluetooth API
|
|
@@ -26,7 +28,7 @@ The library is available in multiple flavors to support different platforms:
|
|
|
26
28
|
- **CLI**: Command-line tools for device management and data analysis
|
|
27
29
|
|
|
28
30
|
Learn more: [Documentation](https://stevie-ray.github.io/hangtime-grip-connect/) -
|
|
29
|
-
[Browser Support](https://caniuse.com/web-bluetooth)
|
|
31
|
+
[Browser Support](https://caniuse.com/web-bluetooth) - [Discord](https://discord.gg/f7QQnEBQQt)
|
|
30
32
|
|
|
31
33
|
> This project is provided "as-is" without any express or implied warranties. By using this software, you assume all
|
|
32
34
|
> risks associated with its use, including but not limited to hardware damage, data loss, or any other issues that may
|
|
@@ -36,6 +38,7 @@ Learn more: [Documentation](https://stevie-ray.github.io/hangtime-grip-connect/)
|
|
|
36
38
|
## Try it out
|
|
37
39
|
|
|
38
40
|
[Chart](https://grip-connect.vercel.app/) - [Flappy Bird](https://grip-connect-flappy-bird.vercel.app/) -
|
|
41
|
+
[Pong](https://hangtime-grip-connect-pong.vercel.app/) -
|
|
39
42
|
[Kilter Board](https://grip-connect-kilter-board.vercel.app/?route=p1083r15p1117r15p1164r12p1185r12p1233r13p1282r13p1303r13p1372r13p1392r14p1505r15)
|
|
40
43
|
|
|
41
44
|

|
|
@@ -77,7 +80,7 @@ const motherboard = new Motherboard()
|
|
|
77
80
|
|
|
78
81
|
// Optional: Custom data handler
|
|
79
82
|
motherboard.notify((data) => {
|
|
80
|
-
// {
|
|
83
|
+
// { unit, timestamp, current, peak, mean, distribution? }
|
|
81
84
|
console.log(data)
|
|
82
85
|
})
|
|
83
86
|
|
|
@@ -135,8 +138,9 @@ document.querySelector("#motherboard").addEventListener("click", async () => {
|
|
|
135
138
|
- ✅ [Kilter Board](https://stevie-ray.github.io/hangtime-grip-connect/devices/kilterboard.html)
|
|
136
139
|
- ✅ [Entralpi](https://stevie-ray.github.io/hangtime-grip-connect/devices/entralpi.html) / Lefu / Unique CW275 Scale
|
|
137
140
|
- ✅ [PitchSix - Force Board](https://stevie-ray.github.io/hangtime-grip-connect/devices/forceboard.html)
|
|
138
|
-
-
|
|
139
|
-
-
|
|
141
|
+
- ✅ [Climbro](https://stevie-ray.github.io/hangtime-grip-connect/devices/climbro.html)
|
|
142
|
+
- ✅ [NSD PB-700BT](https://stevie-ray.github.io/hangtime-grip-connect/devices/pb-700bt.html)
|
|
143
|
+
- ➡️ [Frez - Dyno](https://stevie-ray.github.io/hangtime-grip-connect/devices/dyno.html)
|
|
140
144
|
- ➡️ [Smartboard Climbing - mySmartBoard](https://stevie-ray.github.io/hangtime-grip-connect/devices/mysmartboard.html)
|
|
141
145
|
- ➡️
|
|
142
146
|
[Smartboard Climbing - SmartBoard Pro](https://stevie-ray.github.io/hangtime-grip-connect/devices/smartboard-pro.html)
|
|
@@ -165,21 +169,23 @@ npm install
|
|
|
165
169
|
A special thank you to:
|
|
166
170
|
|
|
167
171
|
- [@CassimLadha](https://github.com/CassimLadha) for sharing insights on reading the Motherboards data.
|
|
168
|
-
- [@donaldharvey](https://github.com/donaldharvey) for a valuable example
|
|
172
|
+
- [@donaldharvey](https://github.com/donaldharvey) for a valuable example of connecting to the Motherboard.
|
|
169
173
|
- [@ecstrema](https://github.com/ecstrema) for providing [examples](https://github.com/ecstrema/entralpi-games) on how
|
|
170
174
|
to play games with the Entralpi.
|
|
171
175
|
- [Tindeq](https://tindeq.com/) for providing an open [Progressor API](https://tindeq.com/progressor_api/).
|
|
172
176
|
- [PitchSix](https://pitchsix.com/) for the [Force Board Portable Public API](https://pitchsix.com/pages/downloads).
|
|
173
177
|
- [@StuartLittlefair](https://github.com/StuartLittlefair) for his
|
|
174
178
|
[PyTindeq](https://github.com/StuartLittlefair/PyTindeq) implementation.
|
|
175
|
-
- [@Phil9l](https://github.com/phil9l) for his research and providing a [blog](https://bazun.me/blog/kiterboard/)
|
|
176
|
-
to connect with the Kilter Board.
|
|
179
|
+
- [@Phil9l](https://github.com/phil9l) for his research and providing a [blog post](https://bazun.me/blog/kiterboard/)
|
|
180
|
+
on how to connect with the Kilter Board.
|
|
177
181
|
- [@1-max-1](https://github.com/1-max-1) for the docs on his Kilter Board
|
|
178
|
-
[simulator](https://github.com/1-max-1/fake_kilter_board) that I
|
|
182
|
+
[simulator](https://github.com/1-max-1/fake_kilter_board) that I converted to
|
|
179
183
|
[hangtime-arduino-kilterboard](https://github.com/Stevie-Ray/hangtime-arduino-kilterboard).
|
|
180
184
|
- [@sebws](https://github.com/sebws) for a [code sample](https://github.com/sebws/Crane) of the Weiheng WH-C06 App.
|
|
181
185
|
- [@olrut](https://github.com/olrut) for the React Native / Expo [CraneGrip](https://github.com/olrut/CraneGrip) example
|
|
182
186
|
App.
|
|
187
|
+
- [@ninopelov](https://github.com/ninopelov) and the Climbro Team for testing and providing insights into their
|
|
188
|
+
protocol.
|
|
183
189
|
|
|
184
190
|
## Disclaimer
|
|
185
191
|
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export type { IClimbro, IEntralpi, IForceBoard, IKilterBoard, IMotherboard, ImySmartBoard, IProgressor, ISmartBoardPro, IWHC06, } from "./interfaces/index.js";
|
|
2
|
-
export {
|
|
2
|
+
export type { ForceUnit, ForceStats, ForceMeasurement, NotifyCallback, WriteCallback, ActiveCallback, } from "./interfaces/callback.interface.js";
|
|
3
|
+
export { Climbro, Entralpi, ForceBoard, KilterBoard, KilterBoardPlacementRoles, Motherboard, mySmartBoard, PB700BT, Progressor, SmartBoardPro, WHC06, } from "./models/index.js";
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,MAAM,GACP,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,KAAK,GACN,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,MAAM,GACP,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,OAAO,EACP,UAAU,EACV,aAAa,EACb,KAAK,GACN,MAAM,mBAAmB,CAAA"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WHC06 = exports.SmartBoardPro = exports.Progressor = exports.mySmartBoard = exports.Motherboard = exports.KilterBoard = exports.ForceBoard = exports.Entralpi = exports.Climbro = void 0;
|
|
3
|
+
exports.WHC06 = exports.SmartBoardPro = exports.Progressor = exports.PB700BT = exports.mySmartBoard = exports.Motherboard = exports.KilterBoardPlacementRoles = exports.KilterBoard = exports.ForceBoard = exports.Entralpi = exports.Climbro = void 0;
|
|
4
4
|
var index_js_1 = require("./models/index.js");
|
|
5
5
|
Object.defineProperty(exports, "Climbro", { enumerable: true, get: function () { return index_js_1.Climbro; } });
|
|
6
6
|
Object.defineProperty(exports, "Entralpi", { enumerable: true, get: function () { return index_js_1.Entralpi; } });
|
|
7
7
|
Object.defineProperty(exports, "ForceBoard", { enumerable: true, get: function () { return index_js_1.ForceBoard; } });
|
|
8
8
|
Object.defineProperty(exports, "KilterBoard", { enumerable: true, get: function () { return index_js_1.KilterBoard; } });
|
|
9
|
+
Object.defineProperty(exports, "KilterBoardPlacementRoles", { enumerable: true, get: function () { return index_js_1.KilterBoardPlacementRoles; } });
|
|
9
10
|
Object.defineProperty(exports, "Motherboard", { enumerable: true, get: function () { return index_js_1.Motherboard; } });
|
|
10
11
|
Object.defineProperty(exports, "mySmartBoard", { enumerable: true, get: function () { return index_js_1.mySmartBoard; } });
|
|
12
|
+
Object.defineProperty(exports, "PB700BT", { enumerable: true, get: function () { return index_js_1.PB700BT; } });
|
|
11
13
|
Object.defineProperty(exports, "Progressor", { enumerable: true, get: function () { return index_js_1.Progressor; } });
|
|
12
14
|
Object.defineProperty(exports, "SmartBoardPro", { enumerable: true, get: function () { return index_js_1.SmartBoardPro; } });
|
|
13
15
|
Object.defineProperty(exports, "WHC06", { enumerable: true, get: function () { return index_js_1.WHC06; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAqBA,8CAY0B;AAXxB,mGAAA,OAAO,OAAA;AACP,oGAAA,QAAQ,OAAA;AACR,sGAAA,UAAU,OAAA;AACV,uGAAA,WAAW,OAAA;AACX,qHAAA,yBAAyB,OAAA;AACzB,uGAAA,WAAW,OAAA;AACX,wGAAA,YAAY,OAAA;AACZ,mGAAA,OAAO,OAAA;AACP,sGAAA,UAAU,OAAA;AACV,yGAAA,aAAa,OAAA;AACb,iGAAA,KAAK,OAAA"}
|
|
@@ -1,45 +1,51 @@
|
|
|
1
|
+
/** Force-equivalent display unit used for all values in this measurement */
|
|
2
|
+
export type ForceUnit = "kg" | "lbs";
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
4
|
+
* Core statistical values describing force over a time window or session.
|
|
3
5
|
*/
|
|
4
|
-
export interface
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* The mass recorded on the left side of the device (optional for Motherboard devices).
|
|
22
|
-
* Used for devices that measure force across multiple zones.
|
|
23
|
-
*/
|
|
24
|
-
massLeft?: string;
|
|
6
|
+
export interface ForceStats {
|
|
7
|
+
/** Instantaneous total force at the current sample moment */
|
|
8
|
+
current: number;
|
|
9
|
+
/** Highest instantaneous force recorded within the measured window or session */
|
|
10
|
+
peak: number;
|
|
11
|
+
/** Mean (average) force across all samples in the measured window or session */
|
|
12
|
+
mean: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Complete force measurement including timing, unit, and optional spatial distribution.
|
|
16
|
+
* Can represent either a single real-time sample or a rolling/session summary.
|
|
17
|
+
*/
|
|
18
|
+
export interface ForceMeasurement extends ForceStats {
|
|
19
|
+
/** Display unit for all force values (force-equivalent kgf or lbf) */
|
|
20
|
+
unit: ForceUnit;
|
|
21
|
+
/** Unix epoch timestamp in milliseconds indicating when the measurement was recorded */
|
|
22
|
+
timestamp: number;
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
24
|
+
* Sampling frequency of the underlying force signal in Hertz.
|
|
25
|
+
* Required for time-dependent metrics such as RFD, impulse, or filtering.
|
|
28
26
|
*/
|
|
29
|
-
|
|
27
|
+
samplingRateHz?: number;
|
|
30
28
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
29
|
+
* Optional force distribution across multiple sensor zones.
|
|
30
|
+
* Each zone follows the exact same measurement structure as the parent.
|
|
31
|
+
* Nested distributions should be avoided to keep the model one level deep.
|
|
33
32
|
*/
|
|
34
|
-
|
|
33
|
+
distribution?: {
|
|
34
|
+
/** Force statistics for the left sensor zone */
|
|
35
|
+
left?: ForceMeasurement;
|
|
36
|
+
/** Force statistics for the center sensor zone */
|
|
37
|
+
center?: ForceMeasurement;
|
|
38
|
+
/** Force statistics for the right sensor zone */
|
|
39
|
+
right?: ForceMeasurement;
|
|
40
|
+
};
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
43
|
* Defines the type for a callback function that handles mass data notifications.
|
|
38
|
-
* The callback receives a `
|
|
44
|
+
* The callback receives a `ForceMeasurement` as the parameter.
|
|
39
45
|
* @callback NotifyCallback
|
|
40
|
-
* @param {
|
|
46
|
+
* @param {ForceMeasurement} data - The force measurement data passed to the callback.
|
|
41
47
|
*/
|
|
42
|
-
export type NotifyCallback = (data:
|
|
48
|
+
export type NotifyCallback = (data: ForceMeasurement) => void;
|
|
43
49
|
/**
|
|
44
50
|
* Defines the type for a callback function that handles write operations to the device.
|
|
45
51
|
* The callback receives the data string written to the device.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/callback.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB
|
|
1
|
+
{"version":3,"file":"callback.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/callback.interface.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAA;AAEpC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAA;IAEf,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAA;IAEZ,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,sEAAsE;IACtE,IAAI,EAAE,SAAS,CAAA;IAEf,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;OAIG;IACH,YAAY,CAAC,EAAE;QACb,gDAAgD;QAChD,IAAI,CAAC,EAAE,gBAAgB,CAAA;QAEvB,kDAAkD;QAClD,MAAM,CAAC,EAAE,gBAAgB,CAAA;QAEzB,iDAAiD;QACjD,KAAK,CAAC,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAElD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA"}
|
|
@@ -3,5 +3,10 @@ import type { IDevice } from "../device.interface.js";
|
|
|
3
3
|
* Interface representing the Climbro device, extending the base Device interface.
|
|
4
4
|
*/
|
|
5
5
|
export interface IClimbro extends IDevice {
|
|
6
|
+
/**
|
|
7
|
+
* Retrieves battery level from the device.
|
|
8
|
+
* @returns {Promise<string | undefined>} A Promise that resolves with the battery level.
|
|
9
|
+
*/
|
|
10
|
+
battery(): Promise<string | undefined>;
|
|
6
11
|
}
|
|
7
12
|
//# sourceMappingURL=climbro.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"climbro.interface.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/device/climbro.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"climbro.interface.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/device/climbro.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,OAAO;IACvC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACvC"}
|
|
@@ -5,12 +5,13 @@ import type { IDevice } from "../device.interface.js";
|
|
|
5
5
|
export interface IKilterBoard extends IDevice {
|
|
6
6
|
/**
|
|
7
7
|
* Configures the LEDs based on an array of climb placements.
|
|
8
|
-
* @param {{ position: number; role_id
|
|
8
|
+
* @param {{ position: number; role_id?: number; color?: string }[]} config - Array of climb placements for the LEDs. Either role_id or color (hex string) must be provided.
|
|
9
9
|
* @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.
|
|
10
10
|
*/
|
|
11
11
|
led(config: {
|
|
12
12
|
position: number;
|
|
13
|
-
role_id
|
|
13
|
+
role_id?: number;
|
|
14
|
+
color?: string;
|
|
14
15
|
}[]): Promise<number[] | undefined>;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=kilterboard.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kilterboard.interface.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/device/kilterboard.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"kilterboard.interface.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/device/kilterboard.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;CACrG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IBase } from "./base.interface.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ForceMeasurement } from "./callback.interface.js";
|
|
3
3
|
import type { Commands } from "./command.interface.js";
|
|
4
4
|
/**
|
|
5
5
|
* Represents a characteristic of a Bluetooth service.
|
|
@@ -151,7 +151,7 @@ export interface IDevice extends IBase {
|
|
|
151
151
|
* console.log('Received notification:', data);
|
|
152
152
|
* });
|
|
153
153
|
*/
|
|
154
|
-
notify(callback: (data:
|
|
154
|
+
notify(callback: (data: ForceMeasurement) => void): void;
|
|
155
155
|
/**
|
|
156
156
|
* Reads the value of the specified characteristic from the device.
|
|
157
157
|
* @param {string} serviceId - The service ID where the characteristic belongs.
|
|
@@ -1 +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,
|
|
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,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,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,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAA;IAExD;;;;;;;;;;;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"}
|
|
@@ -2,10 +2,41 @@ import { Device } from "../device.model.js";
|
|
|
2
2
|
import type { IClimbro } from "../../interfaces/device/climbro.interface.js";
|
|
3
3
|
/**
|
|
4
4
|
* Represents a Climbro device.
|
|
5
|
-
* TODO: Add services, do you own a Climbro? Help us!
|
|
6
5
|
* {@link https://climbro.com/}
|
|
7
6
|
*/
|
|
8
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;
|
|
9
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;
|
|
10
41
|
}
|
|
11
42
|
//# sourceMappingURL=climbro.model.d.ts.map
|
|
@@ -1 +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;
|
|
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,CAyErD;CACF"}
|
|
@@ -1,19 +1,145 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.Climbro = void 0;
|
|
4
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 = {}));
|
|
5
24
|
/**
|
|
6
25
|
* Represents a Climbro device.
|
|
7
|
-
* TODO: Add services, do you own a Climbro? Help us!
|
|
8
26
|
* {@link https://climbro.com/}
|
|
9
27
|
*/
|
|
10
28
|
class Climbro extends device_model_js_1.Device {
|
|
11
29
|
constructor() {
|
|
12
30
|
super({
|
|
13
|
-
filters: [{
|
|
14
|
-
services: [
|
|
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
|
+
],
|
|
15
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.peak = Math.max(this.peak, Number(numericData));
|
|
119
|
+
// Update running sum and count
|
|
120
|
+
const currentMassTotal = Math.max(-1000, Number(numericData));
|
|
121
|
+
this.sum += currentMassTotal;
|
|
122
|
+
this.dataPointCount++;
|
|
123
|
+
// Calculate the average dynamically
|
|
124
|
+
this.mean = this.sum / this.dataPointCount;
|
|
125
|
+
// Check if device is being used
|
|
126
|
+
this.activityCheck(numericData);
|
|
127
|
+
this.notifyCallback(this.buildForceMeasurement(Math.max(-1000, numericData)));
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
16
134
|
}
|
|
17
135
|
}
|
|
18
136
|
exports.Climbro = Climbro;
|
|
137
|
+
_a = Climbro;
|
|
138
|
+
/**
|
|
139
|
+
* Battery constants
|
|
140
|
+
*/
|
|
141
|
+
Climbro.minBatteryDisc = 112;
|
|
142
|
+
Climbro.maxBatteryDisc = 230;
|
|
143
|
+
Climbro.batRangeDisc = _a.maxBatteryDisc - _a.minBatteryDisc;
|
|
144
|
+
Climbro.batLevelCoef = 100 / _a.batRangeDisc;
|
|
19
145
|
//# sourceMappingURL=climbro.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"climbro.model.js","sourceRoot":"","sources":["../../../../src/models/device/climbro.model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"climbro.model.js","sourceRoot":"","sources":["../../../../src/models/device/climbro.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,CAyCrD;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"}
|
|
@@ -176,22 +176,18 @@ class Entralpi extends device_model_js_1.Device {
|
|
|
176
176
|
samples: [convertedData],
|
|
177
177
|
masses: [numericData],
|
|
178
178
|
});
|
|
179
|
-
// Update
|
|
180
|
-
this.
|
|
179
|
+
// Update peak
|
|
180
|
+
this.peak = Math.max(this.peak, numericData);
|
|
181
181
|
// Update running sum and count
|
|
182
182
|
const currentMassTotal = Math.max(-1000, numericData);
|
|
183
|
-
this.
|
|
183
|
+
this.sum += currentMassTotal;
|
|
184
184
|
this.dataPointCount++;
|
|
185
185
|
// Calculate the average dynamically
|
|
186
|
-
this.
|
|
186
|
+
this.mean = this.sum / this.dataPointCount;
|
|
187
187
|
// Check if device is being used
|
|
188
188
|
this.activityCheck(numericData);
|
|
189
189
|
// Notify with weight data
|
|
190
|
-
this.notifyCallback(
|
|
191
|
-
massMax: this.massMax,
|
|
192
|
-
massAverage: this.massAverage,
|
|
193
|
-
massTotal: Math.max(-1000, numericData).toFixed(1),
|
|
194
|
-
});
|
|
190
|
+
this.notifyCallback(this.buildForceMeasurement(Math.max(-1000, numericData)));
|
|
195
191
|
}
|
|
196
192
|
}
|
|
197
193
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entralpi.model.js","sourceRoot":"","sources":["../../../../src/models/device/entralpi.model.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"entralpi.model.js","sourceRoot":"","sources":["../../../../src/models/device/entralpi.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forceboard.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/forceboard.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAA;AAElF;;;GAGG;AACH,qBAAa,UAAW,SAAQ,MAAO,YAAW,WAAW;;IAsK3D;;;OAGG;IACH,OAAO,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE9C;IAED;;;;;;OAMG;IACM,mBAAmB,GAAI,OAAO,QAAQ,KAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"forceboard.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/forceboard.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAA;AAElF;;;GAGG;AACH,qBAAa,UAAW,SAAQ,MAAO,YAAW,WAAW;;IAsK3D;;;OAGG;IACH,OAAO,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE9C;IAED;;;;;;OAMG;IACM,mBAAmB,GAAI,OAAO,QAAQ,KAAG,IAAI,CAmDrD;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,IAAI,QAAa,OAAO,CAAC,IAAI,CAAC,CAE7B;IAED;;;;OAIG;IACH,MAAM,GAAU,iBAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CAG3C;IAED;;;;OAIG;IACH,SAAS,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAStD;IAED;;;OAGG;IACH,oBAAoB,QAAa,OAAO,CAAC,IAAI,CAAC,CAI7C;IAED;;;;OAIG;IACH,UAAU,QAAa,OAAO,CAAC,IAAI,CAAC,CAEnC;IAED;;;OAGG;IACH,WAAW,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAElD;IAED;;;;;OAKG;IACH,KAAK,GAAU,iBAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CAG1C;CACF"}
|
|
@@ -211,22 +211,18 @@ class ForceBoard extends device_model_js_1.Device {
|
|
|
211
211
|
samples: [convertedReceivedData],
|
|
212
212
|
masses: [numericData],
|
|
213
213
|
});
|
|
214
|
-
// Update
|
|
215
|
-
this.
|
|
214
|
+
// Update peak
|
|
215
|
+
this.peak = Math.max(this.peak, numericData);
|
|
216
216
|
// Update running sum and count
|
|
217
217
|
const currentMassTotal = Math.max(-1000, numericData);
|
|
218
|
-
this.
|
|
218
|
+
this.sum += currentMassTotal;
|
|
219
219
|
this.dataPointCount++;
|
|
220
220
|
// Calculate the average dynamically
|
|
221
|
-
this.
|
|
221
|
+
this.mean = this.sum / this.dataPointCount;
|
|
222
222
|
// Check if device is being used
|
|
223
223
|
this.activityCheck(numericData);
|
|
224
224
|
// Notify with weight data
|
|
225
|
-
this.notifyCallback(
|
|
226
|
-
massMax: this.massMax,
|
|
227
|
-
massAverage: this.massAverage,
|
|
228
|
-
massTotal: Math.max(-1000, numericData).toFixed(1),
|
|
229
|
-
});
|
|
225
|
+
this.notifyCallback(this.buildForceMeasurement(Math.max(-1000, numericData)));
|
|
230
226
|
}
|
|
231
227
|
}
|
|
232
228
|
}
|