@hangtime/grip-connect 0.9.0 → 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.
Files changed (116) hide show
  1. package/README.md +8 -4
  2. package/dist/cjs/index.d.ts +2 -1
  3. package/dist/cjs/index.d.ts.map +1 -1
  4. package/dist/cjs/index.js +3 -1
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/interfaces/callback.interface.d.ts +37 -31
  7. package/dist/cjs/interfaces/callback.interface.d.ts.map +1 -1
  8. package/dist/cjs/interfaces/device/kilterboard.interface.d.ts +3 -2
  9. package/dist/cjs/interfaces/device/kilterboard.interface.d.ts.map +1 -1
  10. package/dist/cjs/interfaces/device.interface.d.ts +2 -2
  11. package/dist/cjs/interfaces/device.interface.d.ts.map +1 -1
  12. package/dist/cjs/models/device/climbro.model.d.ts.map +1 -1
  13. package/dist/cjs/models/device/climbro.model.js +4 -8
  14. package/dist/cjs/models/device/climbro.model.js.map +1 -1
  15. package/dist/cjs/models/device/entralpi.model.d.ts.map +1 -1
  16. package/dist/cjs/models/device/entralpi.model.js +5 -9
  17. package/dist/cjs/models/device/entralpi.model.js.map +1 -1
  18. package/dist/cjs/models/device/forceboard.model.d.ts.map +1 -1
  19. package/dist/cjs/models/device/forceboard.model.js +5 -9
  20. package/dist/cjs/models/device/forceboard.model.js.map +1 -1
  21. package/dist/cjs/models/device/kilterboard.model.d.ts +5 -3
  22. package/dist/cjs/models/device/kilterboard.model.d.ts.map +1 -1
  23. package/dist/cjs/models/device/kilterboard.model.js +52 -16
  24. package/dist/cjs/models/device/kilterboard.model.js.map +1 -1
  25. package/dist/cjs/models/device/motherboard.model.d.ts +7 -0
  26. package/dist/cjs/models/device/motherboard.model.d.ts.map +1 -1
  27. package/dist/cjs/models/device/motherboard.model.js +28 -15
  28. package/dist/cjs/models/device/motherboard.model.js.map +1 -1
  29. package/dist/cjs/models/device/pb-700bt.model.d.ts +63 -0
  30. package/dist/cjs/models/device/pb-700bt.model.d.ts.map +1 -0
  31. package/dist/cjs/models/device/pb-700bt.model.js +247 -0
  32. package/dist/cjs/models/device/pb-700bt.model.js.map +1 -0
  33. package/dist/cjs/models/device/progressor.model.d.ts.map +1 -1
  34. package/dist/cjs/models/device/progressor.model.js +4 -8
  35. package/dist/cjs/models/device/progressor.model.js.map +1 -1
  36. package/dist/cjs/models/device/smartboard-pro.model.d.ts +8 -0
  37. package/dist/cjs/models/device/smartboard-pro.model.d.ts.map +1 -1
  38. package/dist/cjs/models/device/smartboard-pro.model.js +62 -6
  39. package/dist/cjs/models/device/smartboard-pro.model.js.map +1 -1
  40. package/dist/cjs/models/device/wh-c06.model.d.ts.map +1 -1
  41. package/dist/cjs/models/device/wh-c06.model.js +5 -9
  42. package/dist/cjs/models/device/wh-c06.model.js.map +1 -1
  43. package/dist/cjs/models/device.model.d.ts +72 -12
  44. package/dist/cjs/models/device.model.d.ts.map +1 -1
  45. package/dist/cjs/models/device.model.js +127 -5
  46. package/dist/cjs/models/device.model.js.map +1 -1
  47. package/dist/cjs/models/index.d.ts +2 -1
  48. package/dist/cjs/models/index.d.ts.map +1 -1
  49. package/dist/cjs/models/index.js +4 -1
  50. package/dist/cjs/models/index.js.map +1 -1
  51. package/dist/index.d.ts +2 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +1 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/interfaces/callback.interface.d.ts +37 -31
  56. package/dist/interfaces/callback.interface.d.ts.map +1 -1
  57. package/dist/interfaces/device/kilterboard.interface.d.ts +3 -2
  58. package/dist/interfaces/device/kilterboard.interface.d.ts.map +1 -1
  59. package/dist/interfaces/device.interface.d.ts +2 -2
  60. package/dist/interfaces/device.interface.d.ts.map +1 -1
  61. package/dist/models/device/climbro.model.d.ts.map +1 -1
  62. package/dist/models/device/climbro.model.js +4 -8
  63. package/dist/models/device/climbro.model.js.map +1 -1
  64. package/dist/models/device/entralpi.model.d.ts.map +1 -1
  65. package/dist/models/device/entralpi.model.js +5 -9
  66. package/dist/models/device/entralpi.model.js.map +1 -1
  67. package/dist/models/device/forceboard.model.d.ts.map +1 -1
  68. package/dist/models/device/forceboard.model.js +5 -9
  69. package/dist/models/device/forceboard.model.js.map +1 -1
  70. package/dist/models/device/kilterboard.model.d.ts +5 -3
  71. package/dist/models/device/kilterboard.model.d.ts.map +1 -1
  72. package/dist/models/device/kilterboard.model.js +52 -16
  73. package/dist/models/device/kilterboard.model.js.map +1 -1
  74. package/dist/models/device/motherboard.model.d.ts +7 -0
  75. package/dist/models/device/motherboard.model.d.ts.map +1 -1
  76. package/dist/models/device/motherboard.model.js +28 -15
  77. package/dist/models/device/motherboard.model.js.map +1 -1
  78. package/dist/models/device/pb-700bt.model.d.ts +63 -0
  79. package/dist/models/device/pb-700bt.model.d.ts.map +1 -0
  80. package/dist/models/device/pb-700bt.model.js +243 -0
  81. package/dist/models/device/pb-700bt.model.js.map +1 -0
  82. package/dist/models/device/progressor.model.d.ts.map +1 -1
  83. package/dist/models/device/progressor.model.js +4 -8
  84. package/dist/models/device/progressor.model.js.map +1 -1
  85. package/dist/models/device/smartboard-pro.model.d.ts +8 -0
  86. package/dist/models/device/smartboard-pro.model.d.ts.map +1 -1
  87. package/dist/models/device/smartboard-pro.model.js +62 -6
  88. package/dist/models/device/smartboard-pro.model.js.map +1 -1
  89. package/dist/models/device/wh-c06.model.d.ts.map +1 -1
  90. package/dist/models/device/wh-c06.model.js +5 -9
  91. package/dist/models/device/wh-c06.model.js.map +1 -1
  92. package/dist/models/device.model.d.ts +72 -12
  93. package/dist/models/device.model.d.ts.map +1 -1
  94. package/dist/models/device.model.js +149 -14
  95. package/dist/models/device.model.js.map +1 -1
  96. package/dist/models/index.d.ts +2 -1
  97. package/dist/models/index.d.ts.map +1 -1
  98. package/dist/models/index.js +2 -1
  99. package/dist/models/index.js.map +1 -1
  100. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  101. package/package.json +4 -1
  102. package/src/index.ts +11 -0
  103. package/src/interfaces/callback.interface.ts +41 -31
  104. package/src/interfaces/device/kilterboard.interface.ts +2 -2
  105. package/src/interfaces/device.interface.ts +2 -2
  106. package/src/models/device/climbro.model.ts +4 -8
  107. package/src/models/device/entralpi.model.ts +5 -9
  108. package/src/models/device/forceboard.model.ts +5 -9
  109. package/src/models/device/kilterboard.model.ts +56 -19
  110. package/src/models/device/motherboard.model.ts +32 -15
  111. package/src/models/device/pb-700bt.model.ts +263 -0
  112. package/src/models/device/progressor.model.ts +4 -8
  113. package/src/models/device/smartboard-pro.model.ts +73 -6
  114. package/src/models/device/wh-c06.model.ts +5 -9
  115. package/src/models/device.model.ts +179 -16
  116. 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
- [Forma DUE](https://forma.training/products/due-pre-sale), [Entralpi](https://entralpi.com/),
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
  ![Force-Sensing Climbing Devices](https://github.com/user-attachments/assets/c1a8ef3b-8d94-47b6-84a6-f73893e948d6)
@@ -77,7 +80,7 @@ const motherboard = new Motherboard()
77
80
 
78
81
  // Optional: Custom data handler
79
82
  motherboard.notify((data) => {
80
- // { massTotal: "0", massMax: "0", massAverage: "0", massLeft: "0", massCenter: "0", massRight: "0" }
83
+ // { unit, timestamp, current, peak, mean, distribution? }
81
84
  console.log(data)
82
85
  })
83
86
 
@@ -136,7 +139,8 @@ document.querySelector("#motherboard").addEventListener("click", async () => {
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
141
  - ✅ [Climbro](https://stevie-ray.github.io/hangtime-grip-connect/devices/climbro.html)
139
- - ➡️ [Forma - DUE](https://stevie-ray.github.io/hangtime-grip-connect/devices/due.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)
@@ -1,3 +1,4 @@
1
1
  export type { IClimbro, IEntralpi, IForceBoard, IKilterBoard, IMotherboard, ImySmartBoard, IProgressor, ISmartBoardPro, IWHC06, } from "./interfaces/index.js";
2
- export { Climbro, Entralpi, ForceBoard, KilterBoard, Motherboard, mySmartBoard, Progressor, SmartBoardPro, WHC06, } from "./models/index.js";
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
@@ -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; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAYA,8CAU0B;AATxB,mGAAA,OAAO,OAAA;AACP,oGAAA,QAAQ,OAAA;AACR,sGAAA,UAAU,OAAA;AACV,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,wGAAA,YAAY,OAAA;AACZ,sGAAA,UAAU,OAAA;AACV,yGAAA,aAAa,OAAA;AACb,iGAAA,KAAK,OAAA"}
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
- * Represents the mass data collected from a device.
4
+ * Core statistical values describing force over a time window or session.
3
5
  */
4
- export interface massObject {
5
- /**
6
- * The total mass measured from the device.
7
- * This is the overall weight or force reading.
8
- */
9
- massTotal: string;
10
- /**
11
- * The maximum mass recorded during the session.
12
- * This is the highest weight or force value detected.
13
- */
14
- massMax: string;
15
- /**
16
- * The average mass calculated from all the recorded data points.
17
- * This represents the mean value of the mass measurements.
18
- */
19
- massAverage: string;
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
- * The mass recorded at the center of the device (optional for Motherboard devices).
27
- * Used for devices that measure force distribution across a center zone.
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
- massCenter?: string;
27
+ samplingRateHz?: number;
30
28
  /**
31
- * The mass recorded on the right side of the device (optional for Motherboard devices).
32
- * Used for devices that measure force across multiple zones.
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
- massRight?: string;
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 `massObject` as the parameter.
44
+ * The callback receives a `ForceMeasurement` as the parameter.
39
45
  * @callback NotifyCallback
40
- * @param {massObject} data - The mass data passed to the callback.
46
+ * @param {ForceMeasurement} data - The force measurement data passed to the callback.
41
47
  */
42
- export type NotifyCallback = (data: massObject) => void;
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;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;AAEvD;;;;;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"}
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"}
@@ -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: number }[]} config - Array of climb placements for the LEDs.
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: number;
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;CACpF"}
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 { massObject } from "./callback.interface.js";
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: massObject) => void): void;
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,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;GAEG;AACH,UAAU,cAAc;IACtB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,cAAc,CAAC,EAAE,iCAAiC,CAAA;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,eAAe,EAAE,cAAc,EAAE,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,OAAQ,SAAQ,KAAK;IACpC;;;;;;OAMG;IACH,OAAO,EAAE,qBAAqB,EAAE,CAAA;IAEhC;;;;;;OAMG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAA;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAA;IAE3B;;;;;;OAMG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAElB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAErG;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhF;;;;;;;;;;;OAWG;IACH,UAAU,IAAI,IAAI,CAAA;IAElB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAA;IAE/C;;;;;;;;;;;OAWG;IACH,WAAW,IAAI,OAAO,CAAA;IAEtB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAA;IAElD;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAEjG;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAEhC;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,EACxC,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB"}
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"}
@@ -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;AAoB5E;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,MAAO,YAAW,QAAQ;IACrD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAc;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAc;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAoD;IACxF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAEtE;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAI;IAEvB;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAI;;IAsBxB;;;OAGG;IACH,OAAO,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG9C;IAED;;;;;OAKG;IACM,mBAAmB,GAAI,OAAO,QAAQ,KAAG,IAAI,CA6ErD;CACF"}
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"}
@@ -115,20 +115,16 @@ class Climbro extends device_model_js_1.Device {
115
115
  masses: [numericData],
116
116
  });
117
117
  // Check for max weight
118
- this.massMax = Math.max(Number(this.massMax), Number(numericData)).toFixed(1);
118
+ this.peak = Math.max(this.peak, Number(numericData));
119
119
  // Update running sum and count
120
120
  const currentMassTotal = Math.max(-1000, Number(numericData));
121
- this.massTotalSum += currentMassTotal;
121
+ this.sum += currentMassTotal;
122
122
  this.dataPointCount++;
123
123
  // Calculate the average dynamically
124
- this.massAverage = (this.massTotalSum / this.dataPointCount).toFixed(1);
124
+ this.mean = this.sum / this.dataPointCount;
125
125
  // Check if device is being used
126
126
  this.activityCheck(numericData);
127
- this.notifyCallback({
128
- massMax: this.massMax,
129
- massAverage: this.massAverage,
130
- massTotal: Math.max(-1000, numericData).toFixed(1),
131
- });
127
+ this.notifyCallback(this.buildForceMeasurement(Math.max(-1000, numericData)));
132
128
  continue;
133
129
  }
134
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"climbro.model.js","sourceRoot":"","sources":["../../../../src/models/device/climbro.model.ts"],"names":[],"mappings":"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"}
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,CA6CrD;IAED;;;OAGG;IACH,QAAQ,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE/C;IAED;;;OAGG;IACH,YAAY,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEnD;IAED;;;OAGG;IACH,KAAK,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE5C;IAED;;;;OAIG;IACH,GAAG,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE1C;IAED;;;OAGG;IACH,QAAQ,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE/C;IAED;;;OAGG;IACH,MAAM,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE7C;CACF"}
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 massMax
180
- this.massMax = Math.max(Number(this.massMax), numericData).toFixed(1);
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.massTotalSum += currentMassTotal;
183
+ this.sum += currentMassTotal;
184
184
  this.dataPointCount++;
185
185
  // Calculate the average dynamically
186
- this.massAverage = (this.massTotalSum / this.dataPointCount).toFixed(1);
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":";;;AAAA,wDAA2C;AAG3C;;;GAGG;AACH,MAAa,QAAS,SAAQ,wBAAM;IAClC;QACE,KAAK,CAAC;YACJ,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,UAAU;iBACjB;aACF;YACD,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,sCAAsC;oBAC5C,eAAe,EAAE;wBACf;4BACE,IAAI,EAAE,WAAW;4BACjB,EAAE,EAAE,QAAQ;4BACZ,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,qBAAqB;4BAC3B,EAAE,EAAE,OAAO;4BACX,IAAI,EAAE,sCAAsC;yBAC7C;wBACD,IAAI;wBACJ,4CAA4C;wBAC5C,kBAAkB;wBAClB,kDAAkD;wBAClD,KAAK;wBACL;4BACE,IAAI,EAAE,0BAA0B;4BAChC,EAAE,EAAE,UAAU;4BACd,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,0BAA0B;4BAChC,EAAE,EAAE,UAAU;4BACd,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,0BAA0B;4BAChC,EAAE,EAAE,UAAU;4BACd,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,0BAA0B;4BAChC,EAAE,EAAE,cAAc;4BAClB,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,qDAAqD;4BAC3D,EAAE,EAAE,eAAe;4BACnB,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,QAAQ;4BACd,EAAE,EAAE,KAAK;4BACT,IAAI,EAAE,sCAAsC;yBAC7C;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,iBAAiB;oBACvB,EAAE,EAAE,SAAS;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,eAAe,EAAE;wBACf;4BACE,IAAI,EAAE,eAAe;4BACrB,EAAE,EAAE,OAAO;4BACX,IAAI,EAAE,sCAAsC;yBAC7C;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,sCAAsC;oBAC5C,eAAe,EAAE;wBACf;4BACE,IAAI,EAAE,EAAE;4BACR,EAAE,EAAE,EAAE;4BACN,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,EAAE;4BACR,EAAE,EAAE,EAAE;4BACN,IAAI,EAAE,sCAAsC;yBAC7C;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,+BAA+B;oBACrC,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE,sCAAsC;oBAC5C,eAAe,EAAE;wBACf;4BACE,IAAI,EAAE,IAAI;4BACV,EAAE,EAAE,IAAI;4BACR,IAAI,EAAE,sCAAsC;yBAC7C;wBACD;4BACE,IAAI,EAAE,IAAI;4BACV,EAAE,EAAE,IAAI;4BACR,IAAI,EAAE,sCAAsC;yBAC7C;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,sCAAsC;oBAC5C,eAAe,EAAE;wBACf;4BACE,IAAI,EAAE,QAAQ;4BACd,EAAE,EAAE,IAAI;4BACR,IAAI,EAAE,sCAAsC;yBAC7C;qBACF;iBACF;aACF;SACF,CAAC,CAAA;QAGJ;;;WAGG;QACH,YAAO,GAAG,KAAK,IAAiC,EAAE;YAChD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAA;QAED;;;WAGG;QACH,kBAAa,GAAG,KAAK,IAAiC,EAAE;YACtD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;QACxD,CAAC,CAAA;QAED;;;WAGG;QACH,aAAQ,GAAG,KAAK,IAAiC,EAAE;YACjD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QACnD,CAAC,CAAA;QAED;;;;;;WAMG;QACM,wBAAmB,GAAG,CAAC,KAAe,EAAQ,EAAE;YACvD,IAAI,KAAK,EAAE,CAAC;gBACV,mBAAmB;gBACnB,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,YAAY,GAAW,IAAI,CAAC,GAAG,EAAE,CAAA;oBACvC,MAAM,YAAY,GAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBAElE,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;oBAC1C,wCAAwC;oBACxC,6EAA6E;oBAC7E,wDAAwD;oBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;oBAC1C,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC5E,iCAAiC;oBACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;wBACxB,QAAQ,EAAE,YAAY;wBACtB,SAAS,EAAE,IAAI,CAAC,cAAc;wBAC9B,OAAO,EAAE,CAAC;wBACV,OAAO,EAAE,CAAC,aAAa,CAAC;wBACxB,MAAM,EAAE,CAAC,WAAW,CAAC;qBACtB,CAAC,CAAA;oBAEF,iBAAiB;oBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBAErE,+BAA+B;oBAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;oBACrD,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAA;oBACrC,IAAI,CAAC,cAAc,EAAE,CAAA;oBAErB,oCAAoC;oBACpC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBAEvE,gCAAgC;oBAChC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;oBAE/B,0BAA0B;oBAC1B,IAAI,CAAC,cAAc,CAAC;wBAClB,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;qBACnD,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QAED;;;WAGG;QACH,aAAQ,GAAG,KAAK,IAAiC,EAAE;YACjD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QACnD,CAAC,CAAA;QAED;;;WAGG;QACH,iBAAY,GAAG,KAAK,IAAiC,EAAE;YACrD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;QACvD,CAAC,CAAA;QAED;;;WAGG;QACH,UAAK,GAAG,KAAK,IAAiC,EAAE;YAC9C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAChD,CAAC,CAAA;QAED;;;;WAIG;QACH,QAAG,GAAG,KAAK,IAAiC,EAAE;YAC5C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAC9C,CAAC,CAAA;QAED;;;WAGG;QACH,aAAQ,GAAG,KAAK,IAAiC,EAAE;YACjD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QACnD,CAAC,CAAA;QAED;;;WAGG;QACH,WAAM,GAAG,KAAK,IAAiC,EAAE;YAC/C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAA;IA/HD,CAAC;CAgIF;AAzPD,4BAyPC"}
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,CAuDrD;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"}
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 massMax
215
- this.massMax = Math.max(Number(this.massMax), numericData).toFixed(1);
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.massTotalSum += currentMassTotal;
218
+ this.sum += currentMassTotal;
219
219
  this.dataPointCount++;
220
220
  // Calculate the average dynamically
221
- this.massAverage = (this.massTotalSum / this.dataPointCount).toFixed(1);
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"forceboard.model.js","sourceRoot":"","sources":["../../../../src/models/device/forceboard.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forceboard.model.js","sourceRoot":"","sources":["../../../../src/models/device/forceboard.model.ts"],"names":[],"mappings":"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"}
@@ -94,6 +94,7 @@ export declare class KilterBoard extends Device implements IKilterBoard {
94
94
  /**
95
95
  * Encodes a color string into a numeric representation.
96
96
  * The rgb color, 3 bits for the R and G components, 2 bits for the B component, with the 3 R bits occupying the high end of the byte and the 2 B bits in the low end (hence 3 G bits in the middle).
97
+ * Format: 0bRRRGGGBB where RRR is 3 bits for red, GGG is 3 bits for green, BB is 2 bits for blue.
97
98
  * @param color - The color string in hexadecimal format (e.g., 'FFFFFF').
98
99
  * @returns The encoded /compressed color value.
99
100
  */
@@ -107,7 +108,7 @@ export declare class KilterBoard extends Device implements IKilterBoard {
107
108
  private encodePlacement;
108
109
  /**
109
110
  * Prepares byte arrays for transmission based on a list of climb placements.
110
- * @param {{ position: number; role_id: number }[]} climbPlacementList - The list of climb placements containing position and role ID.
111
+ * @param {{ position: number; role_id?: number; color?: string }[]} climbPlacementList - The list of climb placements containing position and either role ID or color.
111
112
  * @returns {number[]} The final byte array ready for transmission.
112
113
  */
113
114
  private prepBytesV3;
@@ -133,12 +134,13 @@ export declare class KilterBoard extends Device implements IKilterBoard {
133
134
  private writeMessageSeries;
134
135
  /**
135
136
  * Configures the LEDs based on an array of climb placements.
136
- * @param {{ position: number; role_id: number }[]} config - Array of climb placements for the LEDs.
137
+ * @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.
137
138
  * @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.
138
139
  */
139
140
  led: (config: {
140
141
  position: number;
141
- role_id: number;
142
+ role_id?: number;
143
+ color?: string;
142
144
  }[]) => Promise<number[] | undefined>;
143
145
  }
144
146
  //# sourceMappingURL=kilterboard.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kilterboard.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/kilterboard.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAA;AAEpF;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,oEAAoE;IACpE,SAAS,KAAK;IACd,4FAA4F;IAC5F,QAAQ,KAAA;IACR,+EAA+E;IAC/E,OAAO,KAAA;IACP,8IAA8I;IAC9I,OAAO,KAAA;IACP,oEAAoE;IACpE,SAAS,KAAA;IACT,4FAA4F;IAC5F,QAAQ,KAAA;IACR,+EAA+E;IAC/E,OAAO,KAAA;IACP,8IAA8I;IAC9I,OAAO,KAAA;CACR;AACD;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;GAqCrC,CAAA;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,MAAO,YAAW,YAAY;IAC7D;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAyC;IAE3E;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAc;IAE1D;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAa;;IA+B5D;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAiBjB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAenB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAkCnB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa,CAC2E;IAEhG;;OAEG;YACW,kBAAkB;IAMhC;;;;OAIG;IACH,GAAG,GAAU,QAAQ;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,KAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAW3F;CACF"}
1
+ {"version":3,"file":"kilterboard.model.d.ts","sourceRoot":"","sources":["../../../../src/models/device/kilterboard.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAA;AAEpF;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,oEAAoE;IACpE,SAAS,KAAK;IACd,4FAA4F;IAC5F,QAAQ,KAAA;IACR,+EAA+E;IAC/E,OAAO,KAAA;IACP,8IAA8I;IAC9I,OAAO,KAAA;IACP,oEAAoE;IACpE,SAAS,KAAA;IACT,4FAA4F;IAC5F,QAAQ,KAAA;IACR,+EAA+E;IAC/E,OAAO,KAAA;IACP,8IAA8I;IAC9I,OAAO,KAAA;CACR;AACD;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;GAqCrC,CAAA;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,MAAO,YAAW,YAAY;IAC7D;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAyC;IAE3E;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAc;IAE1D;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAa;;IA+B5D;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAiBjB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAenB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAsEnB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa,CAC2E;IAEhG;;OAEG;YACW,kBAAkB;IAMhC;;;;OAIG;IACH,GAAG,GAAU,QAAQ;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,KAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAW5G;CACF"}
@@ -110,7 +110,7 @@ class KilterBoard extends device_model_js_1.Device {
110
110
  this.splitMessages = (buffer) => this.splitEvery(KilterBoard.maxBluetoothMessageSize, buffer).map((arr) => new Uint8Array(arr));
111
111
  /**
112
112
  * Configures the LEDs based on an array of climb placements.
113
- * @param {{ position: number; role_id: number }[]} config - Array of climb placements for the LEDs.
113
+ * @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.
114
114
  * @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.
115
115
  */
116
116
  this.led = async (config) => {
@@ -174,19 +174,21 @@ class KilterBoard extends device_model_js_1.Device {
174
174
  /**
175
175
  * Encodes a color string into a numeric representation.
176
176
  * The rgb color, 3 bits for the R and G components, 2 bits for the B component, with the 3 R bits occupying the high end of the byte and the 2 B bits in the low end (hence 3 G bits in the middle).
177
+ * Format: 0bRRRGGGBB where RRR is 3 bits for red, GGG is 3 bits for green, BB is 2 bits for blue.
177
178
  * @param color - The color string in hexadecimal format (e.g., 'FFFFFF').
178
179
  * @returns The encoded /compressed color value.
179
180
  */
180
181
  encodeColor(color) {
181
- const substring = color.substring(0, 2);
182
- const substring2 = color.substring(2, 4);
183
- const parsedSubstring = parseInt(substring, 16) / 32;
184
- const parsedSubstring2 = parseInt(substring2, 16) / 32;
185
- const parsedResult = (parsedSubstring << 5) | (parsedSubstring2 << 2);
186
- const substring3 = color.substring(4, 6);
187
- const parsedSubstring3 = parseInt(substring3, 16) / 64;
188
- const finalParsedResult = parsedResult | parsedSubstring3;
189
- return finalParsedResult;
182
+ const r = parseInt(color.substring(0, 2), 16);
183
+ const g = parseInt(color.substring(2, 4), 16);
184
+ const b = parseInt(color.substring(4, 6), 16);
185
+ // Integer division: R and G divided by 32, B divided by 64
186
+ // Then pack into 0bRRRGGGBB format
187
+ const rBits = Math.floor(r / 32); // 0-7 (3 bits)
188
+ const gBits = Math.floor(g / 32); // 0-7 (3 bits)
189
+ const bBits = Math.floor(b / 64); // 0-3 (2 bits)
190
+ // Pack: RRR in bits 7-5, GGG in bits 4-2, BB in bits 1-0
191
+ return (rBits << 5) | (gBits << 2) | bBits;
190
192
  }
191
193
  /**
192
194
  * Encodes a placement (requires a 16-bit position and a 24-bit rgb color. ) into a byte array.
@@ -199,22 +201,56 @@ class KilterBoard extends device_model_js_1.Device {
199
201
  }
200
202
  /**
201
203
  * Prepares byte arrays for transmission based on a list of climb placements.
202
- * @param {{ position: number; role_id: number }[]} climbPlacementList - The list of climb placements containing position and role ID.
204
+ * @param {{ position: number; role_id?: number; color?: string }[]} climbPlacementList - The list of climb placements containing position and either role ID or color.
203
205
  * @returns {number[]} The final byte array ready for transmission.
204
206
  */
205
207
  prepBytesV3(climbPlacementList) {
206
208
  const resultArray = [];
207
209
  let tempArray = [KilterBoardPacket.V3_MIDDLE];
208
- for (const climbPlacement of climbPlacementList) {
210
+ // Filter out any invalid placements and clean up objects before processing
211
+ const validPlacements = climbPlacementList
212
+ .filter((p) => {
213
+ // Explicitly check for color
214
+ const hasColor = p.color != null && typeof p.color === "string" && p.color.trim() !== "";
215
+ // Explicitly check for role_id - must be a number, not undefined or null
216
+ const hasRoleId = typeof p.role_id === "number" && !isNaN(p.role_id);
217
+ return hasColor || hasRoleId;
218
+ })
219
+ .map((p) => {
220
+ // Create clean objects without undefined properties
221
+ if (p.color != null && typeof p.color === "string" && p.color.trim() !== "") {
222
+ return { position: p.position, color: p.color.trim() };
223
+ }
224
+ else if (typeof p.role_id === "number" && !isNaN(p.role_id)) {
225
+ return { position: p.position, role_id: p.role_id };
226
+ }
227
+ // This should never happen due to the filter above, but TypeScript needs this
228
+ throw new Error("Invalid placement after filter");
229
+ });
230
+ for (const climbPlacement of validPlacements) {
209
231
  if (tempArray.length + 3 > KilterBoard.messageBodyMaxLength) {
210
232
  resultArray.push(tempArray);
211
233
  tempArray = [KilterBoardPacket.V3_MIDDLE];
212
234
  }
213
- const role = exports.KilterBoardPlacementRoles.find((placement) => placement.id === climbPlacement.role_id);
214
- if (!role) {
215
- throw new Error(`Role with id ${climbPlacement.role_id} not found in placement_roles`);
235
+ let colorHex;
236
+ // Type guard: check if this placement has a color property
237
+ if ("color" in climbPlacement && climbPlacement.color) {
238
+ // Use direct color if provided
239
+ colorHex = climbPlacement.color.replace("#", "").toUpperCase();
240
+ }
241
+ else if ("role_id" in climbPlacement && typeof climbPlacement.role_id === "number") {
242
+ // Fall back to role_id if no color provided
243
+ const role = exports.KilterBoardPlacementRoles.find((placement) => placement.id === climbPlacement.role_id);
244
+ if (!role) {
245
+ throw new Error(`Role with id ${climbPlacement.role_id} not found in placement_roles`);
246
+ }
247
+ colorHex = role.led_color;
248
+ }
249
+ else {
250
+ // This should never happen due to the filter above, but just in case
251
+ throw new Error(`Either role_id or color must be provided for position ${climbPlacement.position}`);
216
252
  }
217
- const encodedPlacement = this.encodePlacement(climbPlacement.position, role.led_color);
253
+ const encodedPlacement = this.encodePlacement(climbPlacement.position, colorHex);
218
254
  tempArray.push(...encodedPlacement);
219
255
  }
220
256
  resultArray.push(tempArray);