incyclist-devices 2.1.0 → 2.1.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.
Files changed (159) hide show
  1. package/lib/adapters.d.ts +1 -1
  2. package/lib/antv2/adapter-factory.d.ts +4 -15
  3. package/lib/antv2/adapter.d.ts +15 -15
  4. package/lib/antv2/adapter.js +67 -21
  5. package/lib/antv2/ant-interface.d.ts +3 -11
  6. package/lib/antv2/ant-interface.js +1 -1
  7. package/lib/antv2/base/adapter.d.ts +62 -0
  8. package/lib/antv2/base/adapter.js +360 -0
  9. package/lib/antv2/base/ant-interface.d.ts +35 -0
  10. package/lib/antv2/base/ant-interface.js +285 -0
  11. package/lib/antv2/base/binding.d.ts +13 -0
  12. package/lib/antv2/base/binding.js +27 -0
  13. package/lib/antv2/cad/adapter.d.ts +10 -0
  14. package/lib/antv2/cad/adapter.js +25 -0
  15. package/lib/antv2/cad/index.d.ts +2 -0
  16. package/lib/antv2/cad/index.js +7 -0
  17. package/lib/antv2/consts.d.ts +2 -0
  18. package/lib/antv2/consts.js +5 -0
  19. package/lib/antv2/factories/adapter-factory.d.ts +14 -0
  20. package/lib/antv2/factories/adapter-factory.js +65 -0
  21. package/lib/antv2/factories/sensor-factory.d.ts +5 -0
  22. package/lib/antv2/factories/sensor-factory.js +22 -0
  23. package/lib/antv2/fe/adapter.d.ts +24 -29
  24. package/lib/antv2/fe/adapter.js +208 -225
  25. package/lib/antv2/hr/adapter.d.ts +6 -15
  26. package/lib/antv2/hr/adapter.js +7 -55
  27. package/lib/antv2/hr copy/adapter.d.ts +11 -0
  28. package/lib/antv2/hr copy/adapter.js +30 -0
  29. package/lib/antv2/hr copy/index.d.ts +2 -0
  30. package/lib/antv2/hr copy/index.js +7 -0
  31. package/lib/antv2/index.d.ts +5 -4
  32. package/lib/antv2/index.js +4 -2
  33. package/lib/antv2/pwr/adapter.d.ts +9 -33
  34. package/lib/antv2/pwr/adapter.js +19 -140
  35. package/lib/antv2/types.d.ts +23 -4
  36. package/lib/base/adpater.d.ts +39 -60
  37. package/lib/base/adpater.js +139 -161
  38. package/lib/base/consts.d.ts +4 -0
  39. package/lib/base/consts.js +9 -0
  40. package/lib/ble/adapter-factory.d.ts +10 -11
  41. package/lib/ble/base/adapter.d.ts +7 -14
  42. package/lib/ble/base/adapter.js +2 -36
  43. package/lib/ble/ble-interface.d.ts +5 -7
  44. package/lib/ble/cp/adapter.d.ts +6 -8
  45. package/lib/ble/cp/adapter.js +8 -27
  46. package/lib/ble/elite/adapter.d.ts +7 -8
  47. package/lib/ble/elite/adapter.js +5 -25
  48. package/lib/ble/fm/adapter.d.ts +6 -7
  49. package/lib/ble/fm/adapter.js +13 -34
  50. package/lib/ble/hr/adapter.d.ts +5 -8
  51. package/lib/ble/hr/adapter.js +2 -2
  52. package/lib/ble/peripheral-cache.d.ts +2 -3
  53. package/lib/ble/tacx/adapter.d.ts +2 -3
  54. package/lib/ble/tacx/adapter.js +8 -8
  55. package/lib/ble/types.d.ts +1 -2
  56. package/lib/ble/wahoo/adapter.d.ts +2 -2
  57. package/lib/ble/wahoo/adapter.js +6 -6
  58. package/lib/ble/wahoo/comms.js +16 -16
  59. package/lib/factories/adapters.d.ts +7 -0
  60. package/lib/factories/adapters.js +49 -0
  61. package/lib/factories/index.d.ts +3 -0
  62. package/lib/factories/index.js +10 -0
  63. package/lib/factories/interfaces.d.ts +7 -0
  64. package/lib/factories/interfaces.js +27 -0
  65. package/lib/index.d.ts +5 -6
  66. package/lib/index.js +4 -9
  67. package/lib/interfaces.d.ts +1 -1
  68. package/lib/modes/ant-fe-adv-st-mode.d.ts +1 -1
  69. package/lib/modes/antble-erg.d.ts +1 -1
  70. package/lib/modes/antble-smarttrainer.d.ts +2 -2
  71. package/lib/modes/base.d.ts +5 -5
  72. package/lib/modes/daum-classic-standard.d.ts +3 -2
  73. package/lib/modes/daum-erg.d.ts +3 -3
  74. package/lib/modes/daum-premium-standard.d.ts +3 -2
  75. package/lib/modes/daum-smarttrainer.d.ts +3 -2
  76. package/lib/modes/kettler-erg.d.ts +3 -3
  77. package/lib/modes/power-base.d.ts +3 -3
  78. package/lib/modes/power-base.js +2 -2
  79. package/lib/modes/power-meter.d.ts +3 -2
  80. package/lib/modes/simulator.d.ts +2 -1
  81. package/lib/modes/types.d.ts +2 -13
  82. package/lib/serial/SinglePathScanner.d.ts +17 -0
  83. package/lib/serial/SinglePathScanner.js +87 -0
  84. package/lib/serial/adapter-factory.d.ts +6 -6
  85. package/lib/serial/adapter.d.ts +6 -11
  86. package/lib/serial/base/adapter.d.ts +17 -0
  87. package/lib/serial/base/adapter.js +67 -0
  88. package/lib/serial/base/comms.d.ts +62 -0
  89. package/lib/serial/base/comms.js +280 -0
  90. package/lib/serial/base/serial-interface.d.ts +36 -0
  91. package/lib/serial/base/serial-interface.js +288 -0
  92. package/lib/serial/base/serial-scanner.d.ts +16 -0
  93. package/lib/serial/base/serial-scanner.js +87 -0
  94. package/lib/serial/base/serialport.d.ts +17 -0
  95. package/lib/serial/base/serialport.js +87 -0
  96. package/lib/serial/comms.d.ts +2 -2
  97. package/lib/serial/daum/DaumAdapter.d.ts +12 -24
  98. package/lib/serial/daum/DaumAdapter.js +40 -59
  99. package/lib/serial/daum/classic/PROTOCOL_NAME.d.ts +2 -0
  100. package/lib/serial/daum/classic/PROTOCOL_NAME.js +5 -0
  101. package/lib/serial/daum/classic/adapter.d.ts +8 -20
  102. package/lib/serial/daum/classic/adapter.js +28 -58
  103. package/lib/serial/daum/classic/comms.d.ts +4 -6
  104. package/lib/serial/daum/classic/comms.js +2 -2
  105. package/lib/serial/daum/classic/consts.d.ts +2 -0
  106. package/lib/serial/daum/classic/consts.js +5 -0
  107. package/lib/serial/daum/classic/mock.js +4 -3
  108. package/lib/serial/daum/classic/types.d.ts +8 -10
  109. package/lib/serial/daum/classic/utils.d.ts +1 -2
  110. package/lib/serial/daum/consts.d.ts +0 -19
  111. package/lib/serial/daum/consts.js +0 -22
  112. package/lib/serial/daum/premium/adapter.d.ts +8 -11
  113. package/lib/serial/daum/premium/adapter.js +27 -53
  114. package/lib/serial/daum/premium/comms.d.ts +4 -7
  115. package/lib/serial/daum/premium/comms.js +23 -22
  116. package/lib/serial/daum/premium/mock.d.ts +1 -1
  117. package/lib/serial/daum/premium/mock.js +2 -2
  118. package/lib/serial/daum/premium/types.d.ts +32 -17
  119. package/lib/serial/daum/premium/types.js +8 -8
  120. package/lib/serial/daum/premium/utils.d.ts +2 -3
  121. package/lib/serial/daum/premium/utils.js +3 -3
  122. package/lib/serial/daum/types.d.ts +4 -1
  123. package/lib/serial/daum/types.js +9 -1
  124. package/lib/serial/factories/adapter-factory.d.ts +14 -0
  125. package/lib/serial/factories/adapter-factory.js +30 -0
  126. package/lib/serial/index.d.ts +8 -5
  127. package/lib/serial/index.js +15 -15
  128. package/lib/serial/kettler/comms.d.ts +1 -1
  129. package/lib/serial/kettler/ergo-racer/adapter.d.ts +11 -18
  130. package/lib/serial/kettler/ergo-racer/adapter.js +9 -21
  131. package/lib/serial/kettler/types.d.ts +8 -0
  132. package/lib/serial/kettler/types.js +2 -0
  133. package/lib/serial/serial-interface.d.ts +2 -32
  134. package/lib/serial/serial-interface.js +3 -76
  135. package/lib/serial/serial-scanner.d.ts +16 -0
  136. package/lib/serial/serial-scanner.js +87 -0
  137. package/lib/serial/serialport.d.ts +1 -13
  138. package/lib/serial/types.d.ts +45 -0
  139. package/lib/serial/types.js +9 -0
  140. package/lib/simulator/Simulator.d.ts +10 -13
  141. package/lib/simulator/Simulator.js +11 -23
  142. package/lib/types/Command.d.ts +8 -0
  143. package/lib/types/Command.js +2 -0
  144. package/lib/types/adapter.d.ts +22 -33
  145. package/lib/types/adapter.js +0 -68
  146. package/lib/types/command.d.ts +0 -8
  147. package/lib/types/command.js +0 -2
  148. package/lib/types/data.d.ts +12 -1
  149. package/lib/types/device.d.ts +8 -23
  150. package/lib/types/device.js +9 -8
  151. package/lib/types/index.d.ts +6 -0
  152. package/lib/types/index.js +22 -0
  153. package/lib/types/route.d.ts +0 -19
  154. package/lib/types/route.js +0 -2
  155. package/lib/types/types.d.ts +8 -0
  156. package/lib/types/types.js +2 -0
  157. package/lib/utils/utils.d.ts +1 -0
  158. package/lib/utils/utils.js +22 -4
  159. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class AntDeviceBinding {
4
+ constructor(_props) { }
5
+ open() {
6
+ throw new Error('Method not implemented.');
7
+ }
8
+ close() {
9
+ throw new Error('Method not implemented.');
10
+ }
11
+ getMaxChannels() {
12
+ throw new Error('Method not implemented.');
13
+ }
14
+ getChannel() {
15
+ throw new Error('Method not implemented.');
16
+ }
17
+ freeChannel(channel) {
18
+ throw new Error('Method not implemented.');
19
+ }
20
+ getDeviceNumber() {
21
+ throw new Error('Method not implemented.');
22
+ }
23
+ write(data) {
24
+ throw new Error('Method not implemented.');
25
+ }
26
+ }
27
+ exports.default = AntDeviceBinding;
@@ -0,0 +1,10 @@
1
+ import { CadenceSensorState, Profile } from "incyclist-ant-plus";
2
+ import AntAdapter from "../base/adapter";
3
+ import { AntDeviceProperties, AntDeviceSettings, LegacyProfile } from "../types";
4
+ export default class AntHrAdapter extends AntAdapter<CadenceSensorState> {
5
+ protected static INCYCLIST_PROFILE_NAME: LegacyProfile;
6
+ protected static ANT_PROFILE_NAME: Profile;
7
+ constructor(settings: AntDeviceSettings, props?: AntDeviceProperties);
8
+ mapToAdapterData(deviceData: CadenceSensorState): void;
9
+ hasData(): boolean;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const adapter_1 = __importDefault(require("../base/adapter"));
7
+ const types_1 = require("../../types");
8
+ class AntHrAdapter extends adapter_1.default {
9
+ constructor(settings, props) {
10
+ super(settings, props);
11
+ this.capabilities = [types_1.IncyclistCapability.Cadence];
12
+ }
13
+ mapToAdapterData(deviceData) {
14
+ if (deviceData.CalculatedCadence) {
15
+ this.data.cadence = deviceData.CalculatedCadence;
16
+ this.data.timestamp = Date.now();
17
+ }
18
+ }
19
+ hasData() {
20
+ return this.deviceData.CalculatedCadence !== undefined && this.deviceData.CalculatedCadence !== null;
21
+ }
22
+ }
23
+ AntHrAdapter.INCYCLIST_PROFILE_NAME = 'Cadence Sensor';
24
+ AntHrAdapter.ANT_PROFILE_NAME = 'CAD';
25
+ exports.default = AntHrAdapter;
@@ -0,0 +1,2 @@
1
+ import AntHrAdapter from './adapter';
2
+ export default AntHrAdapter;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const adapter_1 = __importDefault(require("./adapter"));
7
+ exports.default = adapter_1.default;
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_UPDATE_FREQUENCY = 1000;
2
+ export declare const NO_DATA_TIMEOUT = 5000;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NO_DATA_TIMEOUT = exports.DEFAULT_UPDATE_FREQUENCY = void 0;
4
+ exports.DEFAULT_UPDATE_FREQUENCY = 1000;
5
+ exports.NO_DATA_TIMEOUT = 5000;
@@ -0,0 +1,14 @@
1
+ import { Profile } from "incyclist-ant-plus";
2
+ import AntAdapter from "../base/adapter";
3
+ import { AntDeviceProperties, AntDeviceSettings, LegacyProfile, BaseDeviceData } from "../types";
4
+ import { AntAdapterInfo, AdapterQuery } from "../types";
5
+ export default class AntAdapterFactory {
6
+ static _instance: AntAdapterFactory;
7
+ adapters: AntAdapterInfo[];
8
+ static getInstance(): AntAdapterFactory;
9
+ constructor();
10
+ register<TDeviceData extends BaseDeviceData>(antProfile: Profile, incyclistProfile: LegacyProfile, Adapter: typeof AntAdapter<TDeviceData>): void;
11
+ getAdapter(query?: AdapterQuery): any;
12
+ createInstance(settings: AntDeviceSettings, props?: AntDeviceProperties): any;
13
+ createFromDetected(profile: Profile, deviceID: number, props?: AntDeviceProperties): any;
14
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class AntAdapterFactory {
4
+ static getInstance() {
5
+ if (!AntAdapterFactory._instance)
6
+ AntAdapterFactory._instance = new AntAdapterFactory();
7
+ return AntAdapterFactory._instance;
8
+ }
9
+ constructor() {
10
+ this.adapters = [];
11
+ }
12
+ register(antProfile, incyclistProfile, Adapter) {
13
+ const info = Object.assign({}, { antProfile, incyclistProfile, Adapter });
14
+ const existing = this.adapters.findIndex(a => a.antProfile === antProfile);
15
+ if (existing !== -1)
16
+ this.adapters[existing] = info;
17
+ else
18
+ this.adapters.push(info);
19
+ }
20
+ getAdapter(query) {
21
+ const { antProfile, incyclistProfile } = query;
22
+ if (!antProfile && !incyclistProfile)
23
+ throw new Error('Illegal arguments: either "antProfile" or "incyclistProfile" must be set');
24
+ let found;
25
+ if (antProfile)
26
+ found = this.adapters.find(a => a.antProfile === antProfile);
27
+ if (incyclistProfile)
28
+ found = this.adapters.find(a => a.incyclistProfile === incyclistProfile);
29
+ return found;
30
+ }
31
+ createInstance(settings, props) {
32
+ let info;
33
+ const { profile, protocol } = settings;
34
+ let isLegacy = false;
35
+ if (protocol) {
36
+ try {
37
+ const incyclistProfile = profile;
38
+ info = this.getAdapter({ incyclistProfile });
39
+ isLegacy = true;
40
+ }
41
+ catch (_a) {
42
+ isLegacy = false;
43
+ }
44
+ }
45
+ if (!isLegacy) {
46
+ const antProfile = profile;
47
+ info = this.getAdapter({ antProfile });
48
+ }
49
+ if (info && info.Adapter)
50
+ return new info.Adapter(settings, props);
51
+ }
52
+ createFromDetected(profile, deviceID, props) {
53
+ const info = this.getAdapter({ antProfile: profile });
54
+ if (!info || !info.Adapter)
55
+ return;
56
+ const settings = Object.assign({}, {
57
+ profile: info.incyclistProfile,
58
+ deviceID: deviceID.toString(),
59
+ interface: 'ant',
60
+ protocol: 'Ant'
61
+ });
62
+ return new info.Adapter(settings, props);
63
+ }
64
+ }
65
+ exports.default = AntAdapterFactory;
@@ -0,0 +1,5 @@
1
+ import { ISensor, Profile } from "incyclist-ant-plus";
2
+ export default class SensorFactory {
3
+ static create(profile: Profile, deviceID?: number): ISensor;
4
+ static createAll(): ISensor[];
5
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const incyclist_ant_plus_1 = require("incyclist-ant-plus");
4
+ const incyclist_ant_plus_2 = require("incyclist-ant-plus");
5
+ const profiles = [
6
+ { profile: 'PWR', Class: incyclist_ant_plus_2.BicyclePowerSensor },
7
+ { profile: 'HR', Class: incyclist_ant_plus_2.HeartRateSensor },
8
+ { profile: 'FE', Class: incyclist_ant_plus_2.FitnessEquipmentSensor },
9
+ { profile: 'CAD', Class: incyclist_ant_plus_1.CadenceSensor },
10
+ ];
11
+ class SensorFactory {
12
+ static create(profile, deviceID) {
13
+ const info = profiles.find(i => i.profile === profile);
14
+ if (!info)
15
+ return;
16
+ return new info.Class(deviceID);
17
+ }
18
+ static createAll() {
19
+ return profiles.map(info => new info.Class());
20
+ }
21
+ }
22
+ exports.default = SensorFactory;
@@ -1,41 +1,36 @@
1
- import { FitnessEquipmentSensorState, ISensor, Profile } from "incyclist-ant-plus";
2
- import AntAdapter from "../adapter";
3
- import ICyclingMode, { CyclingMode, IncyclistBikeData, UpdateRequest } from '../../modes/types';
1
+ import { FitnessEquipmentSensorState, Profile } from "incyclist-ant-plus";
2
+ import AntAdapter from "../base/adapter";
3
+ import { UpdateRequest } from '../../modes/types';
4
+ import { IncyclistBikeData } from "../../types/data";
4
5
  import { AntDeviceProperties, AntDeviceSettings, LegacyProfile } from "../types";
5
- import { ControllableDevice } from "../../base/adpater";
6
- type FitnessEquipmentSensorData = {
7
- speed: number;
8
- slope: number;
9
- power: number;
10
- cadence: number;
11
- heartrate: number;
12
- distance: number;
13
- timestamp: number;
14
- };
15
- export declare class AntFeControl extends ControllableDevice<AntDeviceProperties> {
16
- getSupportedCyclingModes(): Array<typeof CyclingMode>;
17
- getDefaultCyclingMode(): ICyclingMode;
18
- sendInitCommands(): Promise<boolean>;
6
+ import { ControllerConfig } from "../../types/adapter";
7
+ interface AntFEStartDeviceProperties extends AntDeviceProperties {
8
+ reconnect?: boolean;
9
+ reconnectTimeout?: number;
19
10
  }
20
- export default class AntFEAdapter extends AntAdapter<AntFeControl, FitnessEquipmentSensorState, FitnessEquipmentSensorData> {
21
- static INCYCLIST_PROFILE_NAME: LegacyProfile;
22
- static ANT_PROFILE_NAME: Profile;
11
+ export default class AntFEAdapter extends AntAdapter<FitnessEquipmentSensorState> {
12
+ protected static INCYCLIST_PROFILE_NAME: LegacyProfile;
13
+ protected static ANT_PROFILE_NAME: Profile;
14
+ protected static controllers: ControllerConfig;
23
15
  protected distanceInternal?: number;
24
16
  protected startProps: AntDeviceProperties;
25
- protected isReconnecting: boolean;
17
+ protected promiseReconnect: Promise<boolean>;
26
18
  protected sensorConnected: boolean;
27
19
  constructor(settings: AntDeviceSettings, props?: AntDeviceProperties);
28
- createSensor(settings: AntDeviceSettings): ISensor;
29
- getName(): string;
30
- getUniqueName(): string;
31
20
  getDisplayName(): string;
32
- getLogData(data: any, excludeList: any): any;
21
+ getDefaultReconnectDelay(): number;
22
+ isReconnecting(): boolean;
33
23
  sendUpdate(request: UpdateRequest, forced?: boolean): Promise<void>;
34
24
  onDeviceData(deviceData: FitnessEquipmentSensorState): void;
35
- canSendUpdate(): boolean;
36
- mapToCycleModeData(deviceData: FitnessEquipmentSensorState): IncyclistBikeData;
37
- transformData(bikeData: IncyclistBikeData): FitnessEquipmentSensorData;
38
- start(props?: any): Promise<any>;
25
+ mapData(deviceData: FitnessEquipmentSensorState): IncyclistBikeData;
26
+ transformData(adapterData: IncyclistBikeData, deviceData: FitnessEquipmentSensorState): void;
27
+ start(props?: AntFEStartDeviceProperties): Promise<any>;
28
+ performStart(props: AntFEStartDeviceProperties, isReconnect: boolean): Promise<any>;
29
+ private waitForInitialData;
30
+ stopSensor(): Promise<void>;
31
+ initSensor(status: any, props: any): Promise<boolean>;
32
+ sendInititalUserMessage(status: any, props: any): Promise<void>;
33
+ sendInitialRequest(status: any, props: any): Promise<void>;
39
34
  setFEDefaultTimeout(): void;
40
35
  stop(): Promise<boolean>;
41
36
  reconnect(): Promise<boolean>;