@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/shared/logger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAQH,0CAEC;AAKD,wCAEC;AAmBD,oCAiBC;AAnDD,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB;;;GAGG;AACH,SAAgB,eAAe,CAAC,OAAgB;IAC9C,YAAY,GAAG,OAAO,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,YAAY,CAAC;AACtB,CAAC;AAcD;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC;IAE1B,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5B,IAAI,YAAY,EAAE,CAAC;gBACjB,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -5,14 +5,7 @@
5
5
  * Voltra device management, telemetry processing, and workout control.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.identifyMessageType = exports.encodeTelemetryFrame = exports.decodeTelemetryFrame = exports.decodeNotification = exports.PhaseNames = exports.MovementPhase = exports.BLE = exports.Workout = exports.Init = exports.Auth = exports.Timing = exports.TelemetryOffsets = exports.MessageTypes = exports.EccentricCommands = exports.ChainsCommands = exports.WeightCommands = exports.isEccentricPhase = exports.isConcentricPhase = exports.isActivePhase = exports.createFrame = exports.filterVoltraDevices = exports.isVoltraDevice = exports.VOLTRA_DEVICE_PREFIX = exports.VoltraConnectionStateModel = exports.isValidVoltraTransition = exports.DEFAULT_SETTINGS = exports.VoltraDevice = void 0;
9
- // =============================================================================
10
- // Models
11
- // =============================================================================
12
- // Device model
13
- var device_1 = require("./models/device");
14
- Object.defineProperty(exports, "VoltraDevice", { enumerable: true, get: function () { return device_1.VoltraDevice; } });
15
- Object.defineProperty(exports, "DEFAULT_SETTINGS", { enumerable: true, get: function () { return device_1.DEFAULT_SETTINGS; } });
8
+ exports.identifyMessageType = exports.encodeTelemetryFrame = exports.decodeTelemetryFrame = exports.decodeNotification = exports.VALID_TRAINING_MODES = exports.TrainingModeNames = exports.TrainingMode = exports.ParameterNames = exports.ParameterId = exports.PhaseNames = exports.MovementPhase = exports.BLE = exports.Workout = exports.Init = exports.Auth = exports.Timing = exports.TelemetryOffsets = exports.MessageTypes = exports.getAvailableModes = exports.getAvailableEccentric = exports.getAvailableChains = exports.getAvailableWeights = exports.getModeCommand = exports.getEccentricCommand = exports.getChainsCommand = exports.getWeightCommand = exports.isEccentricPhase = exports.isConcentricPhase = exports.isActivePhase = exports.createFrame = exports.filterVoltraDevices = exports.isVoltraDevice = exports.VOLTRA_DEVICE_PREFIX = exports.VoltraConnectionStateModel = exports.isValidVoltraTransition = void 0;
16
9
  // Connection model
17
10
  var connection_1 = require("./models/connection");
18
11
  Object.defineProperty(exports, "isValidVoltraTransition", { enumerable: true, get: function () { return connection_1.isValidVoltraTransition; } });
@@ -31,11 +24,16 @@ Object.defineProperty(exports, "isEccentricPhase", { enumerable: true, get: func
31
24
  // =============================================================================
32
25
  // Protocol
33
26
  // =============================================================================
34
- // Command builders
27
+ // Command lookup functions
35
28
  var commands_1 = require("./protocol/commands");
36
- Object.defineProperty(exports, "WeightCommands", { enumerable: true, get: function () { return commands_1.WeightCommands; } });
37
- Object.defineProperty(exports, "ChainsCommands", { enumerable: true, get: function () { return commands_1.ChainsCommands; } });
38
- Object.defineProperty(exports, "EccentricCommands", { enumerable: true, get: function () { return commands_1.EccentricCommands; } });
29
+ Object.defineProperty(exports, "getWeightCommand", { enumerable: true, get: function () { return commands_1.getWeightCommand; } });
30
+ Object.defineProperty(exports, "getChainsCommand", { enumerable: true, get: function () { return commands_1.getChainsCommand; } });
31
+ Object.defineProperty(exports, "getEccentricCommand", { enumerable: true, get: function () { return commands_1.getEccentricCommand; } });
32
+ Object.defineProperty(exports, "getModeCommand", { enumerable: true, get: function () { return commands_1.getModeCommand; } });
33
+ Object.defineProperty(exports, "getAvailableWeights", { enumerable: true, get: function () { return commands_1.getAvailableWeights; } });
34
+ Object.defineProperty(exports, "getAvailableChains", { enumerable: true, get: function () { return commands_1.getAvailableChains; } });
35
+ Object.defineProperty(exports, "getAvailableEccentric", { enumerable: true, get: function () { return commands_1.getAvailableEccentric; } });
36
+ Object.defineProperty(exports, "getAvailableModes", { enumerable: true, get: function () { return commands_1.getAvailableModes; } });
39
37
  // Protocol constants
40
38
  var constants_1 = require("./protocol/constants");
41
39
  Object.defineProperty(exports, "MessageTypes", { enumerable: true, get: function () { return constants_1.MessageTypes; } });
@@ -47,6 +45,11 @@ Object.defineProperty(exports, "Workout", { enumerable: true, get: function () {
47
45
  Object.defineProperty(exports, "BLE", { enumerable: true, get: function () { return constants_1.BLE; } });
48
46
  Object.defineProperty(exports, "MovementPhase", { enumerable: true, get: function () { return constants_1.MovementPhase; } });
49
47
  Object.defineProperty(exports, "PhaseNames", { enumerable: true, get: function () { return constants_1.PhaseNames; } });
48
+ Object.defineProperty(exports, "ParameterId", { enumerable: true, get: function () { return constants_1.ParameterId; } });
49
+ Object.defineProperty(exports, "ParameterNames", { enumerable: true, get: function () { return constants_1.ParameterNames; } });
50
+ Object.defineProperty(exports, "TrainingMode", { enumerable: true, get: function () { return constants_1.TrainingMode; } });
51
+ Object.defineProperty(exports, "TrainingModeNames", { enumerable: true, get: function () { return constants_1.TrainingModeNames; } });
52
+ Object.defineProperty(exports, "VALID_TRAINING_MODES", { enumerable: true, get: function () { return constants_1.VALID_TRAINING_MODES; } });
50
53
  // Telemetry decoder (low-level)
51
54
  var telemetry_decoder_1 = require("./protocol/telemetry-decoder");
52
55
  Object.defineProperty(exports, "decodeNotification", { enumerable: true, get: function () { return telemetry_decoder_1.decodeNotification; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/voltra/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,eAAe;AACf,0CAMyB;AALvB,sGAAA,YAAY,OAAA;AACZ,0GAAA,gBAAgB,OAAA;AAMlB,mBAAmB;AACnB,kDAI6B;AAF3B,qHAAA,uBAAuB,OAAA;AACvB,wHAAA,0BAA0B,OAAA;AAG5B,gBAAgB;AAChB,wDAAmG;AAA1F,qHAAA,oBAAoB,OAAA;AAAE,+GAAA,cAAc,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAElE,mBAAmB;AACnB,gDAM4B;AAJ1B,wGAAA,WAAW,OAAA;AACX,0GAAA,aAAa,OAAA;AACb,8GAAA,iBAAiB,OAAA;AACjB,6GAAA,gBAAgB,OAAA;AAGlB,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,mBAAmB;AACnB,gDAK6B;AAJ3B,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,6GAAA,iBAAiB,OAAA;AAInB,qBAAqB;AACrB,kDAU8B;AAT5B,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,mGAAA,MAAM,OAAA;AACN,iGAAA,IAAI,OAAA;AACJ,iGAAA,IAAI,OAAA;AACJ,oGAAA,OAAO,OAAA;AACP,gGAAA,GAAG,OAAA;AACH,0GAAA,aAAa,OAAA;AACb,uGAAA,UAAU,OAAA;AAGZ,gCAAgC;AAChC,kEAOsC;AANpC,uHAAA,kBAAkB,OAAA;AAClB,yHAAA,oBAAoB,OAAA;AACpB,yHAAA,oBAAoB,OAAA;AACpB,wHAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/voltra/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAaH,mBAAmB;AACnB,kDAI6B;AAF3B,qHAAA,uBAAuB,OAAA;AACvB,wHAAA,0BAA0B,OAAA;AAG5B,gBAAgB;AAChB,wDAAmG;AAA1F,qHAAA,oBAAoB,OAAA;AAAE,+GAAA,cAAc,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAElE,mBAAmB;AACnB,gDAM4B;AAJ1B,wGAAA,WAAW,OAAA;AACX,0GAAA,aAAa,OAAA;AACb,8GAAA,iBAAiB,OAAA;AACjB,6GAAA,gBAAgB,OAAA;AAGlB,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,2BAA2B;AAC3B,gDAS6B;AAR3B,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,+GAAA,mBAAmB,OAAA;AACnB,0GAAA,cAAc,OAAA;AACd,+GAAA,mBAAmB,OAAA;AACnB,8GAAA,kBAAkB,OAAA;AAClB,iHAAA,qBAAqB,OAAA;AACrB,6GAAA,iBAAiB,OAAA;AAGnB,qBAAqB;AACrB,kDAe8B;AAd5B,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,mGAAA,MAAM,OAAA;AACN,iGAAA,IAAI,OAAA;AACJ,iGAAA,IAAI,OAAA;AACJ,oGAAA,OAAO,OAAA;AACP,gGAAA,GAAG,OAAA;AACH,0GAAA,aAAa,OAAA;AACb,uGAAA,UAAU,OAAA;AACV,wGAAA,WAAW,OAAA;AACX,2GAAA,cAAc,OAAA;AACd,yGAAA,YAAY,OAAA;AACZ,8GAAA,iBAAiB,OAAA;AACjB,iHAAA,oBAAoB,OAAA;AAGtB,gCAAgC;AAChC,kEAOsC;AANpC,uHAAA,kBAAkB,OAAA;AAClB,yHAAA,oBAAoB,OAAA;AACpB,yHAAA,oBAAoB,OAAA;AACpB,wHAAA,mBAAmB,OAAA"}
@@ -6,13 +6,17 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.VoltraDevice = exports.DEFAULT_SETTINGS = void 0;
9
+ const constants_1 = require("../protocol/constants");
9
10
  /**
10
11
  * Default settings for a new device.
11
12
  */
12
13
  exports.DEFAULT_SETTINGS = {
13
14
  weight: 0,
14
15
  chains: 0,
16
+ inverseChains: 0,
15
17
  eccentric: 0,
18
+ mode: constants_1.TrainingMode.Idle,
19
+ battery: null,
16
20
  };
17
21
  /**
18
22
  * Voltra device model.
@@ -52,6 +56,15 @@ class VoltraDevice {
52
56
  get eccentric() {
53
57
  return this._settings.eccentric;
54
58
  }
59
+ get inverseChains() {
60
+ return this._settings.inverseChains;
61
+ }
62
+ get mode() {
63
+ return this._settings.mode;
64
+ }
65
+ get battery() {
66
+ return this._settings.battery;
67
+ }
55
68
  get connectionState() {
56
69
  return this._connectionState;
57
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../src/voltra/models/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../src/voltra/models/device.ts"],"names":[],"mappings":"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"}
@@ -1,230 +1,147 @@
1
1
  "use strict";
2
2
  /**
3
- * Voltra Protocol Command Builders
3
+ * Voltra Protocol Commands
4
4
  *
5
- * Builds commands for setting weight, chains, and eccentric resistance.
5
+ * Simple key-value mapping from operations to commands.
6
+ * Commands are loaded from the consolidated protocol.json.
7
+ * All commands are pre-computed lookup values.
6
8
  */
7
9
  var __importDefault = (this && this.__importDefault) || function (mod) {
8
10
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
11
  };
10
12
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.EccentricCommands = exports.ChainsCommands = exports.WeightCommands = void 0;
13
+ exports.getWeightCommand = getWeightCommand;
14
+ exports.getChainsCommand = getChainsCommand;
15
+ exports.getEccentricCommand = getEccentricCommand;
16
+ exports.getAvailableWeights = getAvailableWeights;
17
+ exports.getAvailableChains = getAvailableChains;
18
+ exports.getAvailableEccentric = getAvailableEccentric;
19
+ exports.getInverseChainsCommand = getInverseChainsCommand;
20
+ exports.getAvailableInverseChains = getAvailableInverseChains;
21
+ exports.getModeCommand = getModeCommand;
22
+ exports.getAvailableModes = getAvailableModes;
12
23
  const utils_1 = require("../../shared/utils");
13
- const weights_json_1 = __importDefault(require("./data/weights.json"));
14
- const chains_json_1 = __importDefault(require("./data/chains.json"));
15
- const eccentric_json_1 = __importDefault(require("./data/eccentric.json"));
16
- // Type the JSON imports
17
- const weights = weights_json_1.default;
18
- const chains = chains_json_1.default;
19
- const eccentric = eccentric_json_1.default;
24
+ const constants_1 = require("./constants");
25
+ const protocol_data_generated_1 = __importDefault(require("./data/protocol-data.generated"));
26
+ // Type the imported data
27
+ const protocol = protocol_data_generated_1.default;
20
28
  // =============================================================================
21
- // Weight Commands (863e register)
29
+ // Command Maps (initialized from protocol.json)
30
+ // =============================================================================
31
+ /** Weight commands map (5-200 lbs) */
32
+ const weightCommands = {};
33
+ /** Chains commands map (0-100 lbs) */
34
+ const chainsCommands = {};
35
+ /** Eccentric commands map (-195 to +195) */
36
+ const eccentricCommands = {};
37
+ /** Inverse chains commands map (0-100 lbs) */
38
+ const inverseChainsCommands = {};
39
+ // Initialize from consolidated protocol.json
40
+ for (const [lbs, hex] of Object.entries(protocol.commands.weights)) {
41
+ weightCommands[Number(lbs)] = (0, utils_1.hexToBytes)(hex);
42
+ }
43
+ for (const [lbs, hex] of Object.entries(protocol.commands.chains)) {
44
+ chainsCommands[Number(lbs)] = (0, utils_1.hexToBytes)(hex);
45
+ }
46
+ for (const [value, hex] of Object.entries(protocol.commands.eccentric)) {
47
+ eccentricCommands[Number(value)] = (0, utils_1.hexToBytes)(hex);
48
+ }
49
+ for (const [lbs, hex] of Object.entries(protocol.commands.inverseChains)) {
50
+ inverseChainsCommands[Number(lbs)] = (0, utils_1.hexToBytes)(hex);
51
+ }
52
+ // =============================================================================
53
+ // Lookup Functions
22
54
  // =============================================================================
23
55
  /**
24
- * Weight command builder for 5-200 lbs in 5 lb increments.
56
+ * Get weight command for specified pounds.
57
+ * @param lbs Weight in pounds (5-200)
58
+ * @returns Command bytes, or null if not available
25
59
  */
26
- exports.WeightCommands = {
27
- MIN: 5,
28
- MAX: 200,
29
- INCREMENT: 5,
30
- /** Get available weight values */
31
- getAvailable() {
32
- return Object.keys(weights.values)
33
- .map(Number)
34
- .sort((a, b) => a - b);
35
- },
36
- /** Check if a weight value is valid */
37
- isValid(pounds) {
38
- return pounds >= this.MIN && pounds <= this.MAX && pounds % this.INCREMENT === 0;
39
- },
40
- /**
41
- * Get the command to set a specific weight.
42
- * @param pounds Weight in pounds (5-200 in increments of 5)
43
- * @returns 21-byte command, or null if weight not available
44
- */
45
- get(pounds) {
46
- const key = String(pounds);
47
- const values = weights.values;
48
- const format = weights.format;
49
- if (!(key in values)) {
50
- return null;
51
- }
52
- const data = values[key];
53
- return this._build(pounds, data.seq, data.checksum, format);
54
- },
55
- _build(pounds, seq, checksum, format) {
56
- const cmd = new Uint8Array(21);
57
- let offset = 0;
58
- // Prefix
59
- const prefix = (0, utils_1.hexToBytes)(format.prefix);
60
- cmd.set(prefix, offset);
61
- offset += prefix.length;
62
- // Sequence
63
- const seqBytes = (0, utils_1.hexToBytes)(seq);
64
- cmd.set(seqBytes, offset);
65
- offset += seqBytes.length;
66
- // Mode
67
- const mode = (0, utils_1.hexToBytes)(format.mode);
68
- cmd.set(mode, offset);
69
- offset += mode.length;
70
- // Register
71
- const register = (0, utils_1.hexToBytes)(format.register);
72
- cmd.set(register, offset);
73
- offset += register.length;
74
- // Value (little-endian uint16)
75
- cmd[offset] = pounds & 0xff;
76
- cmd[offset + 1] = (pounds >> 8) & 0xff;
77
- offset += 2;
78
- // Checksum
79
- const checksumBytes = (0, utils_1.hexToBytes)(checksum);
80
- cmd.set(checksumBytes, offset);
81
- offset += checksumBytes.length;
82
- // Padding
83
- const padding = (0, utils_1.hexToBytes)(format.padding);
84
- cmd.set(padding, offset);
85
- return cmd;
86
- },
87
- };
60
+ function getWeightCommand(lbs) {
61
+ return weightCommands[lbs] || null;
62
+ }
88
63
  /**
89
- * Chains (reverse resistance) command builder for 0-100 lbs.
90
- * Requires dual commands: send step1, wait 500ms, send step2.
64
+ * Get chains command for specified pounds.
65
+ * @param lbs Chains weight in pounds (0-100)
66
+ * @returns Command bytes, or null if not available
91
67
  */
92
- exports.ChainsCommands = {
93
- MIN: 0,
94
- MAX: 100,
95
- /** Get available chains values */
96
- getAvailable() {
97
- return Object.keys(chains.values)
98
- .map(Number)
99
- .sort((a, b) => a - b);
100
- },
101
- /** Check if a chains value is valid */
102
- isValid(pounds) {
103
- return pounds >= this.MIN && pounds <= this.MAX;
104
- },
105
- /**
106
- * Get dual commands to set chains weight.
107
- * @param pounds Chains weight (0-100)
108
- * @returns Tuple of (step1, step2) commands, or null if not available
109
- */
110
- get(pounds) {
111
- const key = String(pounds);
112
- const values = chains.values;
113
- const format = chains.format;
114
- if (!(key in values)) {
115
- return null;
116
- }
117
- const data = values[key];
118
- return {
119
- step1: this._build(pounds, 1, data.step1_seq, data.step1_checksum, format),
120
- step2: this._build(pounds, 2, data.step2_seq, data.step2_checksum, format),
121
- };
122
- },
123
- _build(pounds, step, seq, checksum, format) {
124
- const fmt = format[`step${step}`];
125
- const cmd = new Uint8Array(21);
126
- let offset = 0;
127
- // Prefix
128
- const prefix = (0, utils_1.hexToBytes)(fmt.prefix);
129
- cmd.set(prefix, offset);
130
- offset += prefix.length;
131
- // Sequence
132
- const seqBytes = (0, utils_1.hexToBytes)(seq);
133
- cmd.set(seqBytes, offset);
134
- offset += seqBytes.length;
135
- // Mode
136
- const mode = (0, utils_1.hexToBytes)(fmt.mode);
137
- cmd.set(mode, offset);
138
- offset += mode.length;
139
- // Register
140
- const register = (0, utils_1.hexToBytes)(fmt.register);
141
- cmd.set(register, offset);
142
- offset += register.length;
143
- // Value (little-endian uint16)
144
- cmd[offset] = pounds & 0xff;
145
- cmd[offset + 1] = (pounds >> 8) & 0xff;
146
- offset += 2;
147
- // Checksum
148
- const checksumBytes = (0, utils_1.hexToBytes)(checksum);
149
- cmd.set(checksumBytes, offset);
150
- offset += checksumBytes.length;
151
- // Padding
152
- const padding = (0, utils_1.hexToBytes)(fmt.padding);
153
- cmd.set(padding, offset);
154
- return cmd;
155
- },
156
- };
68
+ function getChainsCommand(lbs) {
69
+ return chainsCommands[lbs] || null;
70
+ }
71
+ /**
72
+ * Get eccentric command for specified value.
73
+ * @param value Eccentric adjustment (-195 to +195)
74
+ * @returns Command bytes, or null if not available
75
+ */
76
+ function getEccentricCommand(value) {
77
+ return eccentricCommands[value] || null;
78
+ }
79
+ /**
80
+ * Get available weight values.
81
+ */
82
+ function getAvailableWeights() {
83
+ return Object.keys(weightCommands)
84
+ .map(Number)
85
+ .sort((a, b) => a - b);
86
+ }
87
+ /**
88
+ * Get available chains values.
89
+ */
90
+ function getAvailableChains() {
91
+ return Object.keys(chainsCommands)
92
+ .map(Number)
93
+ .sort((a, b) => a - b);
94
+ }
95
+ /**
96
+ * Get available eccentric values.
97
+ */
98
+ function getAvailableEccentric() {
99
+ return Object.keys(eccentricCommands)
100
+ .map(Number)
101
+ .sort((a, b) => a - b);
102
+ }
103
+ /**
104
+ * Get inverse chains command for specified pounds.
105
+ * @param lbs Inverse chains weight in pounds (0-100)
106
+ * @returns Command bytes, or null if not available
107
+ */
108
+ function getInverseChainsCommand(lbs) {
109
+ return inverseChainsCommands[lbs] || null;
110
+ }
111
+ /**
112
+ * Get available inverse chains values.
113
+ */
114
+ function getAvailableInverseChains() {
115
+ return Object.keys(inverseChainsCommands)
116
+ .map(Number)
117
+ .sort((a, b) => a - b);
118
+ }
157
119
  // =============================================================================
158
- // Eccentric Commands (883e register)
120
+ // Mode Setting Commands
159
121
  // =============================================================================
122
+ /** Mode commands map (TrainingMode -> Uint8Array) */
123
+ const modeCommands = new Map([
124
+ [constants_1.TrainingMode.Idle, (0, utils_1.hexToBytes)(protocol.commands.modes.idle)],
125
+ [constants_1.TrainingMode.WeightTraining, (0, utils_1.hexToBytes)(protocol.commands.modes.weightTraining)],
126
+ [constants_1.TrainingMode.ResistanceBand, (0, utils_1.hexToBytes)(protocol.commands.modes.resistanceBand)],
127
+ [constants_1.TrainingMode.Rowing, (0, utils_1.hexToBytes)(protocol.commands.modes.rowing)],
128
+ [constants_1.TrainingMode.Damper, (0, utils_1.hexToBytes)(protocol.commands.modes.damper)],
129
+ [constants_1.TrainingMode.CustomCurves, (0, utils_1.hexToBytes)(protocol.commands.modes.customCurves)],
130
+ [constants_1.TrainingMode.Isokinetic, (0, utils_1.hexToBytes)(protocol.commands.modes.isokinetic)],
131
+ [constants_1.TrainingMode.Isometric, (0, utils_1.hexToBytes)(protocol.commands.modes.isometric)],
132
+ ]);
160
133
  /**
161
- * Eccentric load adjustment command builder for -195 to +195.
162
- * Requires dual commands: send step1, wait 500ms, send step2.
134
+ * Get mode command for specified training mode.
135
+ * @param mode Training mode to set
136
+ * @returns Command bytes, or null if invalid mode
163
137
  */
164
- exports.EccentricCommands = {
165
- MIN: -195,
166
- MAX: 195,
167
- /** Get available eccentric values */
168
- getAvailable() {
169
- return Object.keys(eccentric.step1.checksums)
170
- .map(Number)
171
- .sort((a, b) => a - b);
172
- },
173
- /** Check if an eccentric value is valid */
174
- isValid(value) {
175
- return value >= this.MIN && value <= this.MAX;
176
- },
177
- /**
178
- * Get dual commands to set eccentric load.
179
- * @param value Eccentric adjustment (-195 to +195)
180
- * @returns Tuple of (step1, step2) commands, or null if not available
181
- */
182
- get(value) {
183
- const key = String(value);
184
- if (!(key in eccentric.step1.checksums)) {
185
- return null;
186
- }
187
- return {
188
- step1: this._build(value, 1),
189
- step2: this._build(value, 2),
190
- };
191
- },
192
- _build(value, step) {
193
- const stepKey = `step${step}`;
194
- const fmt = eccentric.format[stepKey];
195
- const seq = eccentric[stepKey].sequences[String(value)];
196
- const checksum = eccentric[stepKey].checksums[String(value)];
197
- const cmd = new Uint8Array(21);
198
- let offset = 0;
199
- // Prefix
200
- const prefix = (0, utils_1.hexToBytes)(fmt.prefix);
201
- cmd.set(prefix, offset);
202
- offset += prefix.length;
203
- // Sequence
204
- const seqBytes = (0, utils_1.hexToBytes)(seq);
205
- cmd.set(seqBytes, offset);
206
- offset += seqBytes.length;
207
- // Mode
208
- const mode = (0, utils_1.hexToBytes)(fmt.mode);
209
- cmd.set(mode, offset);
210
- offset += mode.length;
211
- // Register
212
- const register = (0, utils_1.hexToBytes)(fmt.register);
213
- cmd.set(register, offset);
214
- offset += register.length;
215
- // Value (little-endian int16, signed)
216
- const signedValue = value < 0 ? 0x10000 + value : value;
217
- cmd[offset] = signedValue & 0xff;
218
- cmd[offset + 1] = (signedValue >> 8) & 0xff;
219
- offset += 2;
220
- // Checksum
221
- const checksumBytes = (0, utils_1.hexToBytes)(checksum);
222
- cmd.set(checksumBytes, offset);
223
- offset += checksumBytes.length;
224
- // Padding
225
- const padding = (0, utils_1.hexToBytes)(fmt.padding);
226
- cmd.set(padding, offset);
227
- return cmd;
228
- },
229
- };
138
+ function getModeCommand(mode) {
139
+ return modeCommands.get(mode) || null;
140
+ }
141
+ /**
142
+ * Get available training modes.
143
+ */
144
+ function getAvailableModes() {
145
+ return [...constants_1.VALID_TRAINING_MODES];
146
+ }
230
147
  //# sourceMappingURL=commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/voltra/protocol/commands.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,8CAAgD;AAChD,uEAA8C;AAC9C,qEAA4C;AAC5C,2EAAkD;AAsClD,wBAAwB;AACxB,MAAM,OAAO,GAAG,sBAA0B,CAAC;AAC3C,MAAM,MAAM,GAAG,qBAAwB,CAAC;AACxC,MAAM,SAAS,GAAG,wBAA8B,CAAC;AAEjD,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAEhF;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,CAAC;IAEZ,kCAAkC;IAClC,YAAY;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aAC/B,GAAG,CAAC,MAAM,CAAC;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,MAAc;QACpB,OAAO,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAc;QAChB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CACJ,MAAc,EACd,GAAW,EACX,QAAgB,EAChB,MAA2E;QAE3E,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,SAAS;QACT,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QAExB,WAAW;QACX,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAE1B,OAAO;QACP,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAEtB,WAAW;QACX,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAE1B,+BAA+B;QAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;QAC5B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC;QAEZ,WAAW;QACX,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,QAAQ,CAAC,CAAC;QAC3C,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;QAE/B,UAAU;QACV,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC;AAcF;;;GAGG;AACU,QAAA,cAAc,GAAG;IAC5B,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,GAAG;IAER,kCAAkC;IAClC,YAAY;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;aAC9B,GAAG,CAAC,MAAM,CAAC;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,MAAc;QACpB,OAAO,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAc;QAChB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEzB,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;YAC1E,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;SAC3E,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,MAAc,EACd,IAAW,EACX,GAAW,EACX,QAAgB,EAChB,MAA4B;QAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,SAAS;QACT,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QAExB,WAAW;QACX,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAE1B,OAAO;QACP,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAEtB,WAAW;QACX,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAE1B,+BAA+B;QAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;QAC5B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC;QAEZ,WAAW;QACX,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,QAAQ,CAAC,CAAC;QAC3C,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;QAE/B,UAAU;QACV,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC;AAEF,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF;;;GAGG;AACU,QAAA,iBAAiB,GAAG;IAC/B,GAAG,EAAE,CAAC,GAAG;IACT,GAAG,EAAE,GAAG;IAER,qCAAqC;IACrC,YAAY;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;aAC1C,GAAG,CAAC,MAAM,CAAC;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,2CAA2C;IAC3C,OAAO,CAAC,KAAa;QACnB,OAAO,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAa;QACf,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,IAAW;QAC/B,MAAM,OAAO,GAAG,OAAO,IAAI,EAAuB,CAAC;QACnD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,SAAS;QACT,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QAExB,WAAW;QACX,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAE1B,OAAO;QACP,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAEtB,WAAW;QACX,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAE1B,sCAAsC;QACtC,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;QACjC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC5C,MAAM,IAAI,CAAC,CAAC;QAEZ,WAAW;QACX,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,QAAQ,CAAC,CAAC;QAC3C,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;QAE/B,UAAU;QACV,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/voltra/protocol/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * BLE Configuration
4
+ *
5
+ * Service UUIDs, characteristic UUIDs, and device naming for Voltra devices.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.BLE = void 0;
12
+ const protocol_data_generated_1 = __importDefault(require("../data/protocol-data.generated"));
13
+ const protocol = protocol_data_generated_1.default;
14
+ exports.BLE = {
15
+ /** Main service UUID for Voltra devices */
16
+ SERVICE_UUID: protocol.ble.serviceUuid,
17
+ /** Characteristic for receiving notifications */
18
+ NOTIFY_CHAR_UUID: protocol.ble.notifyCharUuid,
19
+ /** Characteristic for writing commands */
20
+ WRITE_CHAR_UUID: protocol.ble.writeCharUuid,
21
+ /** Device name prefix for scanning (e.g., "VTR-") */
22
+ DEVICE_NAME_PREFIX: protocol.ble.deviceNamePrefix,
23
+ };
24
+ //# sourceMappingURL=ble-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ble-config.js","sourceRoot":"","sources":["../../../../../src/voltra/protocol/constants/ble-config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,8FAA2D;AAG3D,MAAM,QAAQ,GAAG,iCAA4B,CAAC;AAEjC,QAAA,GAAG,GAAG;IACjB,2CAA2C;IAC3C,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW;IACtC,iDAAiD;IACjD,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,cAAc;IAC7C,0CAA0C;IAC1C,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa;IAC3C,qDAAqD;IACrD,kBAAkB,EAAE,QAAQ,CAAC,GAAG,CAAC,gBAAgB;CACzC,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * Connection Commands
4
+ *
5
+ * Authentication, initialization, and workout control commands.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.Workout = exports.Init = exports.Auth = void 0;
12
+ const utils_1 = require("../../../shared/utils");
13
+ const protocol_data_generated_1 = __importDefault(require("../data/protocol-data.generated"));
14
+ const protocol = protocol_data_generated_1.default;
15
+ // =============================================================================
16
+ // Authentication
17
+ // =============================================================================
18
+ /**
19
+ * Device authentication identifiers.
20
+ */
21
+ exports.Auth = {
22
+ /** Primary device identity */
23
+ DEVICE_ID: (0, utils_1.hexToBytes)(protocol.commands.auth.iphone),
24
+ /** Alternative device identity */
25
+ DEVICE_ID_IPAD: (0, utils_1.hexToBytes)(protocol.commands.auth.ipad),
26
+ };
27
+ // =============================================================================
28
+ // Initialization
29
+ // =============================================================================
30
+ /**
31
+ * Device initialization sequence.
32
+ */
33
+ exports.Init = {
34
+ SEQUENCE: protocol.commands.init.map(utils_1.hexToBytes),
35
+ };
36
+ // =============================================================================
37
+ // Workout Commands
38
+ // =============================================================================
39
+ /**
40
+ * Workout control commands.
41
+ *
42
+ * To start: set weight -> PREPARE -> SETUP -> GO
43
+ * To stop: STOP
44
+ */
45
+ exports.Workout = {
46
+ /** Prepare device for workout */
47
+ PREPARE: (0, utils_1.hexToBytes)(protocol.commands.workout.prepare),
48
+ /** Configure workout mode */
49
+ SETUP: (0, utils_1.hexToBytes)(protocol.commands.workout.setup),
50
+ /** Start resistance/tracking */
51
+ GO: (0, utils_1.hexToBytes)(protocol.commands.workout.go),
52
+ /** Stop resistance/tracking */
53
+ STOP: (0, utils_1.hexToBytes)(protocol.commands.workout.stop),
54
+ };
55
+ //# sourceMappingURL=connection-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-commands.js","sourceRoot":"","sources":["../../../../../src/voltra/protocol/constants/connection-commands.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,iDAAmD;AACnD,8FAA2D;AAG3D,MAAM,QAAQ,GAAG,iCAA4B,CAAC;AAE9C,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACU,QAAA,IAAI,GAAG;IAClB,8BAA8B;IAC9B,SAAS,EAAE,IAAA,kBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IACpD,kCAAkC;IAClC,cAAc,EAAE,IAAA,kBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;CAC/C,CAAC;AAEX,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACU,QAAA,IAAI,GAAG;IAClB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAU,CAAC;CACxC,CAAC;AAEX,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;GAKG;AACU,QAAA,OAAO,GAAG;IACrB,iCAAiC;IACjC,OAAO,EAAE,IAAA,kBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;IACtD,6BAA6B;IAC7B,KAAK,EAAE,IAAA,kBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,gCAAgC;IAChC,EAAE,EAAE,IAAA,kBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,+BAA+B;IAC/B,IAAI,EAAE,IAAA,kBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;CACxC,CAAC"}