@voltras/node-sdk 0.1.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -31
- package/dist/cjs/bluetooth/adapters/native.js +36 -34
- package/dist/cjs/bluetooth/adapters/native.js.map +1 -1
- package/dist/cjs/bluetooth/adapters/node.js +9 -7
- package/dist/cjs/bluetooth/adapters/node.js.map +1 -1
- package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js +6 -4
- package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js.map +1 -1
- package/dist/cjs/bluetooth/adapters/web.js +7 -5
- package/dist/cjs/bluetooth/adapters/web.js.map +1 -1
- package/dist/cjs/bluetooth/controllers/scanner-controller.js +0 -2
- package/dist/cjs/bluetooth/controllers/scanner-controller.js.map +1 -1
- package/dist/cjs/index.js +19 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react/hooks.js +2 -6
- package/dist/cjs/react/hooks.js.map +1 -1
- package/dist/cjs/sdk/notification-dispatcher.js +47 -0
- package/dist/cjs/sdk/notification-dispatcher.js.map +1 -0
- package/dist/cjs/sdk/reconnect-handler.js +61 -0
- package/dist/cjs/sdk/reconnect-handler.js.map +1 -0
- package/dist/cjs/sdk/voltra-client.js +206 -72
- package/dist/cjs/sdk/voltra-client.js.map +1 -1
- package/dist/cjs/shared/index.js +5 -1
- package/dist/cjs/shared/index.js.map +1 -1
- package/dist/cjs/shared/logger.js +54 -0
- package/dist/cjs/shared/logger.js.map +1 -0
- package/dist/cjs/voltra/index.js +15 -12
- package/dist/cjs/voltra/index.js.map +1 -1
- package/dist/cjs/voltra/models/device.js +13 -0
- package/dist/cjs/voltra/models/device.js.map +1 -1
- package/dist/cjs/voltra/protocol/commands.js +127 -210
- package/dist/cjs/voltra/protocol/commands.js.map +1 -1
- package/dist/cjs/voltra/protocol/constants/ble-config.js +24 -0
- package/dist/cjs/voltra/protocol/constants/ble-config.js.map +1 -0
- package/dist/cjs/voltra/protocol/constants/connection-commands.js +55 -0
- package/dist/cjs/voltra/protocol/constants/connection-commands.js.map +1 -0
- package/dist/cjs/voltra/protocol/constants/enums.js +117 -0
- package/dist/cjs/voltra/protocol/constants/enums.js.map +1 -0
- package/dist/cjs/voltra/protocol/constants/index.js +33 -0
- package/dist/cjs/voltra/protocol/constants/index.js.map +1 -0
- package/dist/cjs/voltra/protocol/constants/message-types.js +75 -0
- package/dist/cjs/voltra/protocol/constants/message-types.js.map +1 -0
- package/dist/cjs/voltra/protocol/constants/timing.js +21 -0
- package/dist/cjs/voltra/protocol/constants/timing.js.map +1 -0
- package/dist/cjs/voltra/protocol/data/protocol-data.generated.js +7 -0
- package/dist/cjs/voltra/protocol/data/protocol-data.generated.js.map +1 -0
- package/dist/cjs/voltra/protocol/telemetry-decoder.js +130 -6
- package/dist/cjs/voltra/protocol/telemetry-decoder.js.map +1 -1
- package/dist/cjs/voltra/protocol/types.js +9 -0
- package/dist/cjs/voltra/protocol/types.js.map +1 -0
- package/dist/esm/bluetooth/adapters/native.js +36 -34
- package/dist/esm/bluetooth/adapters/native.js.map +1 -1
- package/dist/esm/bluetooth/adapters/node.js +9 -7
- package/dist/esm/bluetooth/adapters/node.js.map +1 -1
- package/dist/esm/bluetooth/adapters/web-bluetooth-base.js +6 -4
- package/dist/esm/bluetooth/adapters/web-bluetooth-base.js.map +1 -1
- package/dist/esm/bluetooth/adapters/web.js +7 -5
- package/dist/esm/bluetooth/adapters/web.js.map +1 -1
- package/dist/esm/bluetooth/controllers/scanner-controller.js +0 -2
- package/dist/esm/bluetooth/controllers/scanner-controller.js.map +1 -1
- package/dist/esm/index.js +3 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react/hooks.js +1 -5
- package/dist/esm/react/hooks.js.map +1 -1
- package/dist/esm/sdk/notification-dispatcher.js +44 -0
- package/dist/esm/sdk/notification-dispatcher.js.map +1 -0
- package/dist/esm/sdk/reconnect-handler.js +57 -0
- package/dist/esm/sdk/reconnect-handler.js.map +1 -0
- package/dist/esm/sdk/voltra-client.js +204 -70
- package/dist/esm/sdk/voltra-client.js.map +1 -1
- package/dist/esm/shared/index.js +1 -0
- package/dist/esm/shared/index.js.map +1 -1
- package/dist/esm/shared/logger.js +49 -0
- package/dist/esm/shared/logger.js.map +1 -0
- package/dist/esm/voltra/index.js +3 -8
- package/dist/esm/voltra/index.js.map +1 -1
- package/dist/esm/voltra/models/device.js +13 -0
- package/dist/esm/voltra/models/device.js.map +1 -1
- package/dist/esm/voltra/protocol/commands.js +117 -209
- package/dist/esm/voltra/protocol/commands.js.map +1 -1
- package/dist/esm/voltra/protocol/constants/ble-config.js +18 -0
- package/dist/esm/voltra/protocol/constants/ble-config.js.map +1 -0
- package/dist/esm/voltra/protocol/constants/connection-commands.js +49 -0
- package/dist/esm/voltra/protocol/constants/connection-commands.js.map +1 -0
- package/dist/esm/voltra/protocol/constants/enums.js +114 -0
- package/dist/esm/voltra/protocol/constants/enums.js.map +1 -0
- package/dist/esm/voltra/protocol/constants/index.js +12 -0
- package/dist/esm/voltra/protocol/constants/index.js.map +1 -0
- package/dist/esm/voltra/protocol/constants/message-types.js +69 -0
- package/dist/esm/voltra/protocol/constants/message-types.js.map +1 -0
- package/dist/esm/voltra/protocol/constants/timing.js +18 -0
- package/dist/esm/voltra/protocol/constants/timing.js.map +1 -0
- package/dist/esm/voltra/protocol/data/protocol-data.generated.js +5 -0
- package/dist/esm/voltra/protocol/data/protocol-data.generated.js.map +1 -0
- package/dist/esm/voltra/protocol/telemetry-decoder.js +132 -8
- package/dist/esm/voltra/protocol/telemetry-decoder.js.map +1 -1
- package/dist/esm/voltra/protocol/types.js +8 -0
- package/dist/esm/voltra/protocol/types.js.map +1 -0
- package/dist/types/bluetooth/adapters/native.d.ts.map +1 -1
- package/dist/types/bluetooth/adapters/node.d.ts.map +1 -1
- package/dist/types/bluetooth/adapters/web-bluetooth-base.d.ts.map +1 -1
- package/dist/types/bluetooth/adapters/web.d.ts.map +1 -1
- package/dist/types/bluetooth/controllers/scanner-controller.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/react/hooks.d.ts.map +1 -1
- package/dist/types/sdk/index.d.ts +2 -1
- package/dist/types/sdk/index.d.ts.map +1 -1
- package/dist/types/sdk/notification-dispatcher.d.ts +29 -0
- package/dist/types/sdk/notification-dispatcher.d.ts.map +1 -0
- package/dist/types/sdk/reconnect-handler.d.ts +55 -0
- package/dist/types/sdk/reconnect-handler.d.ts.map +1 -0
- package/dist/types/sdk/types.d.ts +35 -0
- package/dist/types/sdk/types.d.ts.map +1 -1
- package/dist/types/sdk/voltra-client.d.ts +77 -2
- package/dist/types/sdk/voltra-client.d.ts.map +1 -1
- package/dist/types/shared/index.d.ts +1 -0
- package/dist/types/shared/index.d.ts.map +1 -1
- package/dist/types/shared/logger.d.ts +39 -0
- package/dist/types/shared/logger.d.ts.map +1 -0
- package/dist/types/voltra/index.d.ts +3 -3
- package/dist/types/voltra/index.d.ts.map +1 -1
- package/dist/types/voltra/models/device.d.ts +11 -1
- package/dist/types/voltra/models/device.d.ts.map +1 -1
- package/dist/types/voltra/protocol/commands.d.ts +47 -87
- package/dist/types/voltra/protocol/commands.d.ts.map +1 -1
- package/dist/types/voltra/protocol/constants/ble-config.d.ts +16 -0
- package/dist/types/voltra/protocol/constants/ble-config.d.ts.map +1 -0
- package/dist/types/voltra/protocol/constants/connection-commands.d.ts +37 -0
- package/dist/types/voltra/protocol/constants/connection-commands.d.ts.map +1 -0
- package/dist/types/voltra/protocol/constants/enums.d.ts +72 -0
- package/dist/types/voltra/protocol/constants/enums.d.ts.map +1 -0
- package/dist/types/voltra/protocol/constants/index.d.ts +12 -0
- package/dist/types/voltra/protocol/constants/index.d.ts.map +1 -0
- package/dist/types/voltra/protocol/constants/message-types.d.ts +57 -0
- package/dist/types/voltra/protocol/constants/message-types.d.ts.map +1 -0
- package/dist/types/voltra/protocol/constants/timing.d.ts +18 -0
- package/dist/types/voltra/protocol/constants/timing.d.ts.map +1 -0
- package/dist/types/voltra/protocol/data/protocol-data.generated.d.ts +3 -0
- package/dist/types/voltra/protocol/data/protocol-data.generated.d.ts.map +1 -0
- package/dist/types/voltra/protocol/telemetry-decoder.d.ts +15 -2
- package/dist/types/voltra/protocol/telemetry-decoder.d.ts.map +1 -1
- package/dist/types/voltra/protocol/types.d.ts +249 -0
- package/dist/types/voltra/protocol/types.d.ts.map +1 -0
- package/package.json +9 -8
- package/dist/cjs/voltra/protocol/constants.js +0 -136
- package/dist/cjs/voltra/protocol/constants.js.map +0 -1
- package/dist/cjs/voltra/protocol/data/chains.json +0 -830
- package/dist/cjs/voltra/protocol/data/eccentric.json +0 -1598
- package/dist/cjs/voltra/protocol/data/protocol.json +0 -54
- package/dist/cjs/voltra/protocol/data/weights.json +0 -62
- package/dist/esm/voltra/protocol/constants.js +0 -130
- package/dist/esm/voltra/protocol/constants.js.map +0 -1
- package/dist/esm/voltra/protocol/data/chains.json +0 -830
- package/dist/esm/voltra/protocol/data/eccentric.json +0 -1598
- package/dist/esm/voltra/protocol/data/protocol.json +0 -54
- package/dist/esm/voltra/protocol/data/weights.json +0 -62
- package/dist/types/voltra/protocol/constants.d.ts +0 -103
- package/dist/types/voltra/protocol/constants.d.ts.map +0 -1
|
@@ -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":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../src/voltra/models/device.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,qDAAqD;AAoDrD;;GAEG;AACU,QAAA,gBAAgB,GAAyB;IACpD,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC;IAChB,SAAS,EAAE,CAAC;IACZ,IAAI,EAAE,wBAAY,CAAC,IAAI;IACvB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF;;;;;GAKG;AACH,MAAa,YAAY;IAUvB,YAAY,QAAgB,EAAE,UAA0B;QACtD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,wBAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,UAAU;IACV,6EAA6E;IAE7E,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;IACtC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,gBAAgB,KAAK,WAAW,CAAC;IAC/C,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC;IAC3C,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,gBAAgB;IAChB,6EAA6E;IAE7E;;OAEG;IACH,cAAc,CAAC,QAAuC;QACpD,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,KAA4B;QAC7C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAc;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAA2B;QAC3C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,CAAC;aAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAoB;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,gBAAgB;IAChB,6EAA6E;IAE7E;;OAEG;IACH,OAAO;QACL,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;YAC/B,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;YAC5C,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,wBAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF;AA3KD,oCA2KC"}
|
|
@@ -1,230 +1,147 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Voltra Protocol
|
|
3
|
+
* Voltra Protocol Commands
|
|
4
4
|
*
|
|
5
|
-
*
|
|
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.
|
|
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
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
//
|
|
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
|
-
*
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
*
|
|
90
|
-
*
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
//
|
|
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
|
-
*
|
|
162
|
-
*
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
|
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"}
|