@voltras/node-sdk 0.1.1 → 0.2.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 (171) hide show
  1. package/README.md +122 -31
  2. package/dist/cjs/bluetooth/adapters/native.js +36 -34
  3. package/dist/cjs/bluetooth/adapters/native.js.map +1 -1
  4. package/dist/cjs/bluetooth/adapters/node.js +9 -7
  5. package/dist/cjs/bluetooth/adapters/node.js.map +1 -1
  6. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js +6 -4
  7. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js.map +1 -1
  8. package/dist/cjs/bluetooth/adapters/web.js +7 -5
  9. package/dist/cjs/bluetooth/adapters/web.js.map +1 -1
  10. package/dist/cjs/bluetooth/controllers/scanner-controller.js +0 -2
  11. package/dist/cjs/bluetooth/controllers/scanner-controller.js.map +1 -1
  12. package/dist/cjs/bluetooth/index.js.map +1 -1
  13. package/dist/cjs/errors.js.map +1 -1
  14. package/dist/cjs/index.js +19 -10
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/react/hooks.js +2 -6
  17. package/dist/cjs/react/hooks.js.map +1 -1
  18. package/dist/cjs/sdk/notification-dispatcher.js +47 -0
  19. package/dist/cjs/sdk/notification-dispatcher.js.map +1 -0
  20. package/dist/cjs/sdk/reconnect-handler.js +61 -0
  21. package/dist/cjs/sdk/reconnect-handler.js.map +1 -0
  22. package/dist/cjs/sdk/voltra-client.js +206 -72
  23. package/dist/cjs/sdk/voltra-client.js.map +1 -1
  24. package/dist/cjs/sdk/voltra-manager.js +13 -2
  25. package/dist/cjs/sdk/voltra-manager.js.map +1 -1
  26. package/dist/cjs/shared/index.js +5 -1
  27. package/dist/cjs/shared/index.js.map +1 -1
  28. package/dist/cjs/shared/logger.js +54 -0
  29. package/dist/cjs/shared/logger.js.map +1 -0
  30. package/dist/cjs/voltra/index.js +15 -12
  31. package/dist/cjs/voltra/index.js.map +1 -1
  32. package/dist/cjs/voltra/models/device.js +13 -0
  33. package/dist/cjs/voltra/models/device.js.map +1 -1
  34. package/dist/cjs/voltra/protocol/commands.js +127 -210
  35. package/dist/cjs/voltra/protocol/commands.js.map +1 -1
  36. package/dist/cjs/voltra/protocol/constants/ble-config.js +24 -0
  37. package/dist/cjs/voltra/protocol/constants/ble-config.js.map +1 -0
  38. package/dist/cjs/voltra/protocol/constants/connection-commands.js +55 -0
  39. package/dist/cjs/voltra/protocol/constants/connection-commands.js.map +1 -0
  40. package/dist/cjs/voltra/protocol/constants/enums.js +117 -0
  41. package/dist/cjs/voltra/protocol/constants/enums.js.map +1 -0
  42. package/dist/cjs/voltra/protocol/constants/index.js +32 -0
  43. package/dist/cjs/voltra/protocol/constants/index.js.map +1 -0
  44. package/dist/cjs/voltra/protocol/constants/message-types.js +70 -0
  45. package/dist/cjs/voltra/protocol/constants/message-types.js.map +1 -0
  46. package/dist/cjs/voltra/protocol/constants/timing.js +21 -0
  47. package/dist/cjs/voltra/protocol/constants/timing.js.map +1 -0
  48. package/dist/cjs/voltra/protocol/data/protocol-data.generated.js +7 -0
  49. package/dist/cjs/voltra/protocol/data/protocol-data.generated.js.map +1 -0
  50. package/dist/cjs/voltra/protocol/telemetry-decoder.js +122 -6
  51. package/dist/cjs/voltra/protocol/telemetry-decoder.js.map +1 -1
  52. package/dist/cjs/voltra/protocol/types.js +9 -0
  53. package/dist/cjs/voltra/protocol/types.js.map +1 -0
  54. package/dist/esm/bluetooth/adapters/native.js +36 -34
  55. package/dist/esm/bluetooth/adapters/native.js.map +1 -1
  56. package/dist/esm/bluetooth/adapters/node.js +9 -7
  57. package/dist/esm/bluetooth/adapters/node.js.map +1 -1
  58. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js +6 -4
  59. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js.map +1 -1
  60. package/dist/esm/bluetooth/adapters/web.js +7 -5
  61. package/dist/esm/bluetooth/adapters/web.js.map +1 -1
  62. package/dist/esm/bluetooth/controllers/scanner-controller.js +0 -2
  63. package/dist/esm/bluetooth/controllers/scanner-controller.js.map +1 -1
  64. package/dist/esm/bluetooth/index.js +1 -1
  65. package/dist/esm/bluetooth/index.js.map +1 -1
  66. package/dist/esm/errors.js.map +1 -1
  67. package/dist/esm/index.js +4 -7
  68. package/dist/esm/index.js.map +1 -1
  69. package/dist/esm/react/hooks.js +1 -5
  70. package/dist/esm/react/hooks.js.map +1 -1
  71. package/dist/esm/sdk/notification-dispatcher.js +44 -0
  72. package/dist/esm/sdk/notification-dispatcher.js.map +1 -0
  73. package/dist/esm/sdk/reconnect-handler.js +57 -0
  74. package/dist/esm/sdk/reconnect-handler.js.map +1 -0
  75. package/dist/esm/sdk/voltra-client.js +204 -70
  76. package/dist/esm/sdk/voltra-client.js.map +1 -1
  77. package/dist/esm/sdk/voltra-manager.js +13 -2
  78. package/dist/esm/sdk/voltra-manager.js.map +1 -1
  79. package/dist/esm/shared/index.js +1 -0
  80. package/dist/esm/shared/index.js.map +1 -1
  81. package/dist/esm/shared/logger.js +49 -0
  82. package/dist/esm/shared/logger.js.map +1 -0
  83. package/dist/esm/voltra/index.js +3 -8
  84. package/dist/esm/voltra/index.js.map +1 -1
  85. package/dist/esm/voltra/models/device.js +13 -0
  86. package/dist/esm/voltra/models/device.js.map +1 -1
  87. package/dist/esm/voltra/protocol/commands.js +117 -209
  88. package/dist/esm/voltra/protocol/commands.js.map +1 -1
  89. package/dist/esm/voltra/protocol/constants/ble-config.js +18 -0
  90. package/dist/esm/voltra/protocol/constants/ble-config.js.map +1 -0
  91. package/dist/esm/voltra/protocol/constants/connection-commands.js +49 -0
  92. package/dist/esm/voltra/protocol/constants/connection-commands.js.map +1 -0
  93. package/dist/esm/voltra/protocol/constants/enums.js +114 -0
  94. package/dist/esm/voltra/protocol/constants/enums.js.map +1 -0
  95. package/dist/esm/voltra/protocol/constants/index.js +12 -0
  96. package/dist/esm/voltra/protocol/constants/index.js.map +1 -0
  97. package/dist/esm/voltra/protocol/constants/message-types.js +64 -0
  98. package/dist/esm/voltra/protocol/constants/message-types.js.map +1 -0
  99. package/dist/esm/voltra/protocol/constants/timing.js +18 -0
  100. package/dist/esm/voltra/protocol/constants/timing.js.map +1 -0
  101. package/dist/esm/voltra/protocol/data/protocol-data.generated.js +5 -0
  102. package/dist/esm/voltra/protocol/data/protocol-data.generated.js.map +1 -0
  103. package/dist/esm/voltra/protocol/telemetry-decoder.js +124 -8
  104. package/dist/esm/voltra/protocol/telemetry-decoder.js.map +1 -1
  105. package/dist/esm/voltra/protocol/types.js +8 -0
  106. package/dist/esm/voltra/protocol/types.js.map +1 -0
  107. package/dist/types/bluetooth/adapters/native.d.ts.map +1 -1
  108. package/dist/types/bluetooth/adapters/node.d.ts.map +1 -1
  109. package/dist/types/bluetooth/adapters/web-bluetooth-base.d.ts.map +1 -1
  110. package/dist/types/bluetooth/adapters/web.d.ts.map +1 -1
  111. package/dist/types/bluetooth/controllers/scanner-controller.d.ts.map +1 -1
  112. package/dist/types/bluetooth/index.d.ts +1 -1
  113. package/dist/types/bluetooth/index.d.ts.map +1 -1
  114. package/dist/types/errors.d.ts.map +1 -1
  115. package/dist/types/index.d.ts +5 -4
  116. package/dist/types/index.d.ts.map +1 -1
  117. package/dist/types/react/hooks.d.ts.map +1 -1
  118. package/dist/types/sdk/index.d.ts +2 -1
  119. package/dist/types/sdk/index.d.ts.map +1 -1
  120. package/dist/types/sdk/notification-dispatcher.d.ts +29 -0
  121. package/dist/types/sdk/notification-dispatcher.d.ts.map +1 -0
  122. package/dist/types/sdk/reconnect-handler.d.ts +55 -0
  123. package/dist/types/sdk/reconnect-handler.d.ts.map +1 -0
  124. package/dist/types/sdk/types.d.ts +35 -0
  125. package/dist/types/sdk/types.d.ts.map +1 -1
  126. package/dist/types/sdk/voltra-client.d.ts +77 -2
  127. package/dist/types/sdk/voltra-client.d.ts.map +1 -1
  128. package/dist/types/sdk/voltra-manager.d.ts.map +1 -1
  129. package/dist/types/shared/index.d.ts +1 -0
  130. package/dist/types/shared/index.d.ts.map +1 -1
  131. package/dist/types/shared/logger.d.ts +39 -0
  132. package/dist/types/shared/logger.d.ts.map +1 -0
  133. package/dist/types/voltra/index.d.ts +3 -3
  134. package/dist/types/voltra/index.d.ts.map +1 -1
  135. package/dist/types/voltra/models/device.d.ts +11 -1
  136. package/dist/types/voltra/models/device.d.ts.map +1 -1
  137. package/dist/types/voltra/protocol/commands.d.ts +47 -87
  138. package/dist/types/voltra/protocol/commands.d.ts.map +1 -1
  139. package/dist/types/voltra/protocol/constants/ble-config.d.ts +16 -0
  140. package/dist/types/voltra/protocol/constants/ble-config.d.ts.map +1 -0
  141. package/dist/types/voltra/protocol/constants/connection-commands.d.ts +37 -0
  142. package/dist/types/voltra/protocol/constants/connection-commands.d.ts.map +1 -0
  143. package/dist/types/voltra/protocol/constants/enums.d.ts +72 -0
  144. package/dist/types/voltra/protocol/constants/enums.d.ts.map +1 -0
  145. package/dist/types/voltra/protocol/constants/index.d.ts +12 -0
  146. package/dist/types/voltra/protocol/constants/index.d.ts.map +1 -0
  147. package/dist/types/voltra/protocol/constants/message-types.d.ts +52 -0
  148. package/dist/types/voltra/protocol/constants/message-types.d.ts.map +1 -0
  149. package/dist/types/voltra/protocol/constants/timing.d.ts +18 -0
  150. package/dist/types/voltra/protocol/constants/timing.d.ts.map +1 -0
  151. package/dist/types/voltra/protocol/data/protocol-data.generated.d.ts +3 -0
  152. package/dist/types/voltra/protocol/data/protocol-data.generated.d.ts.map +1 -0
  153. package/dist/types/voltra/protocol/telemetry-decoder.d.ts +15 -2
  154. package/dist/types/voltra/protocol/telemetry-decoder.d.ts.map +1 -1
  155. package/dist/types/voltra/protocol/types.d.ts +247 -0
  156. package/dist/types/voltra/protocol/types.d.ts.map +1 -0
  157. package/package.json +9 -8
  158. package/dist/cjs/voltra/protocol/constants.js +0 -136
  159. package/dist/cjs/voltra/protocol/constants.js.map +0 -1
  160. package/dist/cjs/voltra/protocol/data/chains.json +0 -830
  161. package/dist/cjs/voltra/protocol/data/eccentric.json +0 -1598
  162. package/dist/cjs/voltra/protocol/data/protocol.json +0 -54
  163. package/dist/cjs/voltra/protocol/data/weights.json +0 -62
  164. package/dist/esm/voltra/protocol/constants.js +0 -130
  165. package/dist/esm/voltra/protocol/constants.js.map +0 -1
  166. package/dist/esm/voltra/protocol/data/chains.json +0 -830
  167. package/dist/esm/voltra/protocol/data/eccentric.json +0 -1598
  168. package/dist/esm/voltra/protocol/data/protocol.json +0 -54
  169. package/dist/esm/voltra/protocol/data/weights.json +0 -62
  170. package/dist/types/voltra/protocol/constants.d.ts +0 -103
  171. package/dist/types/voltra/protocol/constants.d.ts.map +0 -1
@@ -1,54 +0,0 @@
1
- {
2
- "_comment": "Voltra BLE Protocol - Authentication, Initialization, and Telemetry",
3
- "_version": "1.1.0",
4
- "ble": {
5
- "service_uuid": "E4DADA34-0867-8783-9F70-2CA29216C7E4",
6
- "notify_char_uuid": "55CA1E52-7354-25DE-6AFC-B7DF1E8816AC",
7
- "write_char_uuid": "A010891D-F50F-44F0-901F-9A2421A9E050",
8
- "device_name_prefix": "VTR-"
9
- },
10
- "auth": {
11
- "_comment": "41-byte device IDs with proprietary checksums",
12
- "iphone": "552904c90110000020004f6950686f6e6500000000000000000000000000000084ab1a5f29200172d8",
13
- "ipad": "552904c90110000020004f69506164000000000000000000000000000000000084ab1a5f292001ea4f"
14
- },
15
- "init": {
16
- "_comment": "Minimal 2-command init sequence (reduced from 22+ in Beyond+ app)",
17
- "commands": [
18
- "550f0801aad200002000ff00aa04194000",
19
- "551f044eaa100000200027811065f8c6b9179047b797d3351c04bffb925cd64100"
20
- ]
21
- },
22
- "workout": {
23
- "_comment": "Workout control commands",
24
- "prepare": "551204c7aa1014002000110100b04f01db10",
25
- "setup": "55130403aa10150020000f02006a50823e8f2f",
26
- "go": "55130403aa1016002000110100893e05008173",
27
- "stop": "55130403aa101b002000110100893e040037dd"
28
- },
29
- "telemetry": {
30
- "_comment": "Telemetry parsing configuration - message types, byte offsets, movement phases",
31
- "message_types": {
32
- "_comment": "First 4 bytes of notifications identify message type",
33
- "stream": "553a0470",
34
- "rep_summary": "554a04c6",
35
- "set_summary": "554f0439",
36
- "status_update": "553404ac"
37
- },
38
- "offsets": {
39
- "_comment": "Byte offsets for parsing telemetry stream messages",
40
- "sequence": 6,
41
- "phase": 13,
42
- "position": 24,
43
- "force": 26,
44
- "velocity": 28
45
- },
46
- "phases": {
47
- "_comment": "Movement phase values (byte at offset 13)",
48
- "idle": 0,
49
- "concentric": 1,
50
- "hold": 2,
51
- "eccentric": 3
52
- }
53
- }
54
- }
@@ -1,62 +0,0 @@
1
- {
2
- "_comment": "Weight commands (863e register) - 5 to 200 lbs in 5 lb increments",
3
- "format": {
4
- "description": "21-byte command structure",
5
- "length": 21,
6
- "structure": [
7
- { "name": "prefix", "bytes": "0-5", "value": "55130403aa10", "constant": true },
8
- { "name": "sequence", "bytes": "6-7", "value": "varies", "encoding": "uint16_le" },
9
- { "name": "mode", "bytes": "8-12", "value": "2000110100", "constant": true },
10
- { "name": "register", "bytes": "13-14", "value": "863e", "constant": true },
11
- { "name": "value", "bytes": "15-16", "value": "weight_in_lbs", "encoding": "uint16_le" },
12
- { "name": "checksum", "bytes": "17-19", "value": "varies", "encoding": "3_bytes_hex" },
13
- { "name": "padding", "bytes": "20", "value": "00", "constant": true }
14
- ],
15
- "prefix": "55130403aa10",
16
- "mode": "2000110100",
17
- "register": "863e",
18
- "padding": "00"
19
- },
20
- "values": {
21
- "5": { "seq": "1500", "checksum": "cb3f37", "_full": "55130403aa1015002000110100863e0500cb3f3700" },
22
- "10": { "seq": "1400", "checksum": "92e941", "_full": "55130403aa1014002000110100863e0a0092e94100" },
23
- "15": { "seq": "1500", "checksum": "bbc234", "_full": "55130403aa1015002000110100863e0f00bbc23400" },
24
- "20": { "seq": "1600", "checksum": "314d40", "_full": "55130403aa1016002000110100863e1400314d4000" },
25
- "25": { "seq": "1700", "checksum": "d8a836", "_full": "55130403aa1017002000110100863e1900d8a83600" },
26
- "30": { "seq": "1800", "checksum": "9cf934", "_full": "55130403aa1018002000110100863e1e009cf93400" },
27
- "35": { "seq": "1900", "checksum": "d7aa37", "_full": "55130403aa1019002000110100863e2300d7aa3700" },
28
- "40": { "seq": "1a00", "checksum": "ccb037", "_full": "55130403aa101a002000110100863e2800ccb03700" },
29
- "45": { "seq": "1b00", "checksum": "e59b40", "_full": "55130403aa101b002000110100863e2d00e59b4000" },
30
- "50": { "seq": "1c00", "checksum": "5a2d37", "_full": "55130403aa101c002000110100863e32005a2d3700" },
31
- "55": { "seq": "1700", "checksum": "fb1112", "_full": "55130403aa1017002000110100863e3700fb111200" },
32
- "60": { "seq": "1800", "checksum": "1fe937", "_full": "55130403aa1018002000110100863e3c001fe93700" },
33
- "65": { "seq": "1900", "checksum": "32fc40", "_full": "55130403aa1019002000110100863e410032fc4000" },
34
- "70": { "seq": "1a00", "checksum": "894f37", "_full": "55130403aa101a002000110100863e4600894f3700" },
35
- "75": { "seq": "1b00", "checksum": "60aa12", "_full": "55130403aa101b002000110100863e4b0060aa1200" },
36
- "80": { "seq": "1c00", "checksum": "bf7b43", "_full": "55130403aa101c002000110100863e5000bf7b4300" },
37
- "85": { "seq": "1d00", "checksum": "965037", "_full": "55130403aa101d002000110100863e550096503700" },
38
- "90": { "seq": "1e00", "checksum": "ed2d37", "_full": "55130403aa101e002000110100863e5a00ed2d3700" },
39
- "95": { "seq": "1f00", "checksum": "c40634", "_full": "55130403aa101f002000110100863e5f00c4063400" },
40
- "100": { "seq": "2000", "checksum": "4ddb12", "_full": "55130403aa1020002000110100863e64004ddb1200" },
41
- "105": { "seq": "2100", "checksum": "a43e37", "_full": "55130403aa1021002000110100863e6900a43e3700" },
42
- "110": { "seq": "3000", "checksum": "785740", "_full": "55130403aa1030002000110100863e6e0078574000" },
43
- "115": { "seq": "3100", "checksum": "00272d", "_full": "55130403aa1031002000110100863e730000272d00" },
44
- "120": { "seq": "3200", "checksum": "1b3d40", "_full": "55130403aa1032002000110100863e78001b3d4000" },
45
- "125": { "seq": "3900", "checksum": "ba013f", "_full": "55130403aa1039002000110100863e7d00ba013f00" },
46
- "130": { "seq": "3a00", "checksum": "c90037", "_full": "55130403aa103a002000110100863e8200c9003700" },
47
- "135": { "seq": "3b00", "checksum": "e02b34", "_full": "55130403aa103b002000110100863e8700e02b3400" },
48
- "140": { "seq": "3c00", "checksum": "ae6f12", "_full": "55130403aa103c002000110100863e8c00ae6f1200" },
49
- "145": { "seq": "3d00", "checksum": "d61f37", "_full": "55130403aa103d002000110100863e9100d61f3700" },
50
- "150": { "seq": "3e00", "checksum": "6dac2d", "_full": "55130403aa103e002000110100863e96006dac2d00" },
51
- "155": { "seq": "3f00", "checksum": "844937", "_full": "55130403aa103f002000110100863e9b0084493700" },
52
- "160": { "seq": "4000", "checksum": "085941", "_full": "55130403aa1040002000110100863ea00008594100" },
53
- "165": { "seq": "4100", "checksum": "217237", "_full": "55130403aa1041002000110100863ea50021723700" },
54
- "170": { "seq": "4200", "checksum": "5a0f43", "_full": "55130403aa1042002000110100863eaa005a0f4300" },
55
- "175": { "seq": "4300", "checksum": "732434", "_full": "55130403aa1043002000110100863eaf0073243400" },
56
- "180": { "seq": "4400", "checksum": "acf537", "_full": "55130403aa1044002000110100863eb400acf53700" },
57
- "185": { "seq": "4500", "checksum": "451037", "_full": "55130403aa1045002000110100863eb90045103700" },
58
- "190": { "seq": "4600", "checksum": "fea312", "_full": "55130403aa1046002000110100863ebe00fea31200" },
59
- "195": { "seq": "4700", "checksum": "d3b637", "_full": "55130403aa1047002000110100863ec300d3b63700" },
60
- "200": { "seq": "4800", "checksum": "374e41", "_full": "55130403aa1048002000110100863ec800374e4100" }
61
- }
62
- }
@@ -1,130 +0,0 @@
1
- /**
2
- * Voltra Protocol Constants
3
- *
4
- * BLE configuration, authentication, and command constants for
5
- * Beyond Power Voltra resistance training devices.
6
- */
7
- import { hexToBytes } from '../../shared/utils';
8
- import protocolData from './data/protocol.json';
9
- // =============================================================================
10
- // BLE Configuration
11
- // =============================================================================
12
- export const BLE = {
13
- /** Main service UUID for Voltra devices */
14
- SERVICE_UUID: protocolData.ble.service_uuid,
15
- /** Characteristic for receiving notifications */
16
- NOTIFY_CHAR_UUID: protocolData.ble.notify_char_uuid,
17
- /** Characteristic for writing commands */
18
- WRITE_CHAR_UUID: protocolData.ble.write_char_uuid,
19
- /** Device name prefix for scanning (e.g., "VTR-") */
20
- DEVICE_NAME_PREFIX: protocolData.ble.device_name_prefix,
21
- };
22
- // =============================================================================
23
- // Timing Configuration
24
- // =============================================================================
25
- export const Timing = {
26
- /** Delay between init commands (ms) */
27
- INIT_COMMAND_DELAY_MS: 20,
28
- /** Delay between dual commands like chains/eccentric (ms) */
29
- DUAL_COMMAND_DELAY_MS: 500,
30
- /** Timeout for authentication response (ms) */
31
- AUTH_TIMEOUT_MS: 3000,
32
- /** Minimum responses expected during auth */
33
- MIN_AUTH_RESPONSES: 2,
34
- /** Minimum responses expected after commands */
35
- MIN_COMMAND_RESPONSES: 4,
36
- };
37
- // =============================================================================
38
- // Authentication
39
- // =============================================================================
40
- /**
41
- * Device authentication identifiers.
42
- *
43
- * 41-byte device IDs that identify the connecting app.
44
- * Both iPhone and iPad IDs work - the Voltra doesn't care which.
45
- */
46
- export const Auth = {
47
- /** iPhone identity from Beyond+ app */
48
- DEVICE_ID: hexToBytes(protocolData.auth.iphone),
49
- /** iPad identity (alternative) */
50
- DEVICE_ID_IPAD: hexToBytes(protocolData.auth.ipad),
51
- };
52
- // =============================================================================
53
- // Initialization
54
- // =============================================================================
55
- /**
56
- * Minimal 2-command init sequence (reduced from 22+ in Beyond+ app).
57
- */
58
- export const Init = {
59
- SEQUENCE: protocolData.init.commands.map(hexToBytes),
60
- };
61
- // =============================================================================
62
- // Workout Commands
63
- // =============================================================================
64
- /**
65
- * Workout control commands.
66
- *
67
- * To start: set weight -> PREPARE -> SETUP -> GO
68
- * To stop: STOP
69
- */
70
- export const Workout = {
71
- /** Prepare for workout (b04f=01) */
72
- PREPARE: hexToBytes(protocolData.workout.prepare),
73
- /** Setup workout mode (823e setup) */
74
- SETUP: hexToBytes(protocolData.workout.setup),
75
- /** Start resistance (893e=05) */
76
- GO: hexToBytes(protocolData.workout.go),
77
- /** Stop resistance (893e=04) */
78
- STOP: hexToBytes(protocolData.workout.stop),
79
- };
80
- // =============================================================================
81
- // Telemetry Message Types (loaded from protocol.json)
82
- // =============================================================================
83
- /**
84
- * Message type identifiers (first 4 bytes of notifications).
85
- * Values loaded from protocol.json for single source of truth.
86
- */
87
- export const MessageTypes = {
88
- /** Real-time telemetry stream (~11 Hz) */
89
- TELEMETRY_STREAM: hexToBytes(protocolData.telemetry.message_types.stream),
90
- /** Rep completion summary */
91
- REP_SUMMARY: hexToBytes(protocolData.telemetry.message_types.rep_summary),
92
- /** Set completion summary */
93
- SET_SUMMARY: hexToBytes(protocolData.telemetry.message_types.set_summary),
94
- /** Status update */
95
- STATUS_UPDATE: hexToBytes(protocolData.telemetry.message_types.status_update),
96
- };
97
- /**
98
- * Byte offsets for parsing telemetry stream messages.
99
- * Values loaded from protocol.json for single source of truth.
100
- */
101
- export const TelemetryOffsets = {
102
- SEQUENCE: protocolData.telemetry.offsets.sequence, // 2 bytes, little-endian
103
- PHASE: protocolData.telemetry.offsets.phase, // 1 byte
104
- POSITION: protocolData.telemetry.offsets.position, // 2 bytes, little-endian unsigned
105
- FORCE: protocolData.telemetry.offsets.force, // 2 bytes, little-endian signed
106
- VELOCITY: protocolData.telemetry.offsets.velocity, // 2 bytes, little-endian unsigned
107
- };
108
- /**
109
- * Movement phase during workout.
110
- * Values match protocol.json telemetry.phases.
111
- */
112
- export var MovementPhase;
113
- (function (MovementPhase) {
114
- MovementPhase[MovementPhase["IDLE"] = 0] = "IDLE";
115
- MovementPhase[MovementPhase["CONCENTRIC"] = 1] = "CONCENTRIC";
116
- MovementPhase[MovementPhase["HOLD"] = 2] = "HOLD";
117
- MovementPhase[MovementPhase["ECCENTRIC"] = 3] = "ECCENTRIC";
118
- MovementPhase[MovementPhase["UNKNOWN"] = -1] = "UNKNOWN";
119
- })(MovementPhase || (MovementPhase = {}));
120
- /**
121
- * Human-readable phase names.
122
- */
123
- export const PhaseNames = {
124
- [MovementPhase.IDLE]: 'Idle',
125
- [MovementPhase.CONCENTRIC]: 'Pulling',
126
- [MovementPhase.HOLD]: 'Hold',
127
- [MovementPhase.ECCENTRIC]: 'Lowering',
128
- [MovementPhase.UNKNOWN]: 'Unknown',
129
- };
130
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/voltra/protocol/constants.ts"],"names":[],"mappings":"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"}