incyclist-devices 2.2.10-beta.0 → 2.3.0-beta.10

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 (151) hide show
  1. package/lib/antv2/base/interface.js +2 -2
  2. package/lib/antv2/factories/index.d.ts +1 -0
  3. package/lib/antv2/factories/index.js +17 -0
  4. package/lib/antv2/fe/adapter.js +5 -4
  5. package/lib/antv2/index.d.ts +1 -0
  6. package/lib/antv2/index.js +12 -8
  7. package/lib/base/adpater.d.ts +4 -0
  8. package/lib/base/adpater.js +17 -3
  9. package/lib/ble/adapter-factory.d.ts +20 -24
  10. package/lib/ble/adapter-factory.js +13 -36
  11. package/lib/ble/base/adapter.d.ts +19 -5
  12. package/lib/ble/base/adapter.js +211 -62
  13. package/lib/ble/base/comms.d.ts +2 -74
  14. package/lib/ble/base/comms.js +3 -596
  15. package/lib/ble/base/interface.d.ts +102 -0
  16. package/lib/ble/base/interface.js +591 -0
  17. package/lib/ble/base/peripheral.d.ts +35 -0
  18. package/lib/ble/base/peripheral.js +311 -0
  19. package/lib/ble/base/sensor.d.ts +32 -0
  20. package/lib/ble/base/sensor.js +135 -0
  21. package/lib/ble/base/types.d.ts +7 -0
  22. package/lib/ble/base/types.js +7 -0
  23. package/lib/ble/bindings/mock.js +6 -0
  24. package/lib/ble/bindings/types.d.ts +3 -4
  25. package/lib/ble/ble-interface.d.ts +7 -4
  26. package/lib/ble/ble-interface.js +16 -2
  27. package/lib/ble/ble-peripheral.d.ts +1 -0
  28. package/lib/ble/ble-peripheral.js +7 -11
  29. package/lib/ble/consts.d.ts +0 -6
  30. package/lib/ble/consts.js +1 -7
  31. package/lib/ble/cp/adapter.d.ts +3 -3
  32. package/lib/ble/cp/adapter.js +12 -13
  33. package/lib/ble/cp/comm.d.ts +1 -1
  34. package/lib/ble/cp/comm.js +2 -2
  35. package/lib/ble/cp/index.d.ts +1 -1
  36. package/lib/ble/cp/index.js +2 -2
  37. package/lib/ble/cp/sensor.d.ts +27 -0
  38. package/lib/ble/cp/sensor.js +107 -0
  39. package/lib/ble/elite/comms.d.ts +1 -1
  40. package/lib/ble/elite/comms.js +2 -2
  41. package/lib/ble/factories/adapter-factory.d.ts +34 -0
  42. package/lib/ble/factories/adapter-factory.js +137 -0
  43. package/lib/ble/factories/index.d.ts +2 -0
  44. package/lib/ble/factories/index.js +18 -0
  45. package/lib/ble/factories/interface-factory.d.ts +7 -0
  46. package/lib/ble/factories/interface-factory.js +18 -0
  47. package/lib/ble/factories/types.d.ts +18 -0
  48. package/lib/ble/factories/types.js +2 -0
  49. package/lib/ble/fm/adapter.d.ts +12 -6
  50. package/lib/ble/fm/adapter.js +100 -108
  51. package/lib/ble/fm/comms.d.ts +1 -1
  52. package/lib/ble/fm/comms.js +3 -3
  53. package/lib/ble/fm/consts.d.ts +93 -0
  54. package/lib/ble/fm/consts.js +55 -1
  55. package/lib/ble/fm/index.d.ts +1 -1
  56. package/lib/ble/fm/index.js +2 -2
  57. package/lib/ble/fm/sensor.d.ts +44 -0
  58. package/lib/ble/fm/sensor.js +384 -0
  59. package/lib/ble/hr/adapter.d.ts +3 -3
  60. package/lib/ble/hr/adapter.js +5 -8
  61. package/lib/ble/hr/comm.d.ts +1 -1
  62. package/lib/ble/hr/comm.js +2 -2
  63. package/lib/ble/hr/index.d.ts +1 -1
  64. package/lib/ble/hr/index.js +2 -2
  65. package/lib/ble/hr/sensor.d.ts +17 -0
  66. package/lib/ble/hr/sensor.js +52 -0
  67. package/lib/ble/index.d.ts +4 -3
  68. package/lib/ble/index.js +29 -13
  69. package/lib/ble/tacx/adapter.d.ts +4 -2
  70. package/lib/ble/tacx/adapter.js +26 -66
  71. package/lib/ble/tacx/comms.d.ts +1 -1
  72. package/lib/ble/tacx/comms.js +2 -2
  73. package/lib/ble/tacx/consts.d.ts +23 -0
  74. package/lib/ble/tacx/consts.js +27 -0
  75. package/lib/ble/tacx/index.d.ts +1 -1
  76. package/lib/ble/tacx/index.js +2 -2
  77. package/lib/ble/tacx/sensor.d.ts +63 -0
  78. package/lib/ble/tacx/sensor.js +596 -0
  79. package/lib/ble/types.d.ts +87 -52
  80. package/lib/ble/utils.d.ts +7 -2
  81. package/lib/ble/utils.js +93 -9
  82. package/lib/ble/wahoo/adapter.d.ts +2 -2
  83. package/lib/ble/wahoo/adapter.js +4 -72
  84. package/lib/ble/wahoo/comms.d.ts +1 -1
  85. package/lib/ble/wahoo/comms.js +2 -2
  86. package/lib/ble/wahoo/consts.d.ts +16 -0
  87. package/lib/ble/wahoo/consts.js +7 -0
  88. package/lib/ble/wahoo/index.d.ts +1 -1
  89. package/lib/ble/wahoo/index.js +2 -2
  90. package/lib/ble/wahoo/sensor.d.ts +48 -0
  91. package/lib/ble/wahoo/sensor.js +356 -0
  92. package/lib/direct-connect/base/comms.d.ts +3 -0
  93. package/lib/direct-connect/base/comms.js +7 -0
  94. package/lib/direct-connect/base/interface.d.ts +75 -0
  95. package/lib/direct-connect/base/interface.js +311 -0
  96. package/lib/direct-connect/base/peripheral.d.ts +50 -0
  97. package/lib/direct-connect/base/peripheral.js +522 -0
  98. package/lib/direct-connect/base/sensor.d.ts +3 -0
  99. package/lib/direct-connect/base/sensor.js +7 -0
  100. package/lib/direct-connect/bindings/index.d.ts +1 -0
  101. package/lib/direct-connect/bindings/index.js +17 -0
  102. package/lib/direct-connect/bindings/types.d.ts +37 -0
  103. package/lib/direct-connect/bindings/types.js +2 -0
  104. package/lib/direct-connect/consts.d.ts +17 -0
  105. package/lib/direct-connect/consts.js +20 -0
  106. package/lib/direct-connect/index.d.ts +3 -0
  107. package/lib/direct-connect/index.js +22 -0
  108. package/lib/direct-connect/messages/CharacteristicNotification.d.ts +12 -0
  109. package/lib/direct-connect/messages/CharacteristicNotification.js +23 -0
  110. package/lib/direct-connect/messages/DiscoverCharacteristics.d.ts +22 -0
  111. package/lib/direct-connect/messages/DiscoverCharacteristics.js +43 -0
  112. package/lib/direct-connect/messages/DiscoverServices.d.ts +15 -0
  113. package/lib/direct-connect/messages/DiscoverServices.js +33 -0
  114. package/lib/direct-connect/messages/EnableCharacteristicNotifications.d.ts +18 -0
  115. package/lib/direct-connect/messages/EnableCharacteristicNotifications.js +35 -0
  116. package/lib/direct-connect/messages/ReadCharacteristic.d.ts +18 -0
  117. package/lib/direct-connect/messages/ReadCharacteristic.js +34 -0
  118. package/lib/direct-connect/messages/WriteCharacteristic.d.ts +18 -0
  119. package/lib/direct-connect/messages/WriteCharacteristic.js +36 -0
  120. package/lib/direct-connect/messages/error.d.ts +5 -0
  121. package/lib/direct-connect/messages/error.js +18 -0
  122. package/lib/direct-connect/messages/factory.d.ts +6 -0
  123. package/lib/direct-connect/messages/factory.js +44 -0
  124. package/lib/direct-connect/messages/index.d.ts +9 -0
  125. package/lib/direct-connect/messages/index.js +25 -0
  126. package/lib/direct-connect/messages/message.d.ts +21 -0
  127. package/lib/direct-connect/messages/message.js +105 -0
  128. package/lib/direct-connect/types.d.ts +24 -0
  129. package/lib/direct-connect/types.js +9 -0
  130. package/lib/direct-connect/utils.d.ts +5 -0
  131. package/lib/direct-connect/utils.js +73 -0
  132. package/lib/factories/adapters.js +14 -4
  133. package/lib/factories/interfaces.d.ts +2 -1
  134. package/lib/factories/interfaces.js +10 -7
  135. package/lib/index.d.ts +5 -4
  136. package/lib/index.js +6 -2
  137. package/lib/modes/antble-smarttrainer.d.ts +2 -16
  138. package/lib/modes/antble-smarttrainer.js +1 -98
  139. package/lib/modes/types.d.ts +1 -5
  140. package/lib/serial/bindings/tcp.d.ts +5 -4
  141. package/lib/serial/bindings/tcp.js +16 -23
  142. package/lib/types/adapter.d.ts +3 -0
  143. package/lib/types/device.d.ts +2 -1
  144. package/lib/types/device.js +1 -0
  145. package/lib/utils/calculations.d.ts +0 -1
  146. package/lib/utils/calculations.js +6 -22
  147. package/lib/utils/operation.d.ts +17 -0
  148. package/lib/utils/operation.js +20 -0
  149. package/lib/utils/task.d.ts +47 -0
  150. package/lib/utils/task.js +139 -0
  151. package/package.json +3 -1
@@ -16,7 +16,7 @@ const events_1 = __importDefault(require("events"));
16
16
  const gd_eventlog_1 = require("gd-eventlog");
17
17
  const sensor_factory_1 = __importDefault(require("../factories/sensor-factory"));
18
18
  const utils_1 = require("../../utils/utils");
19
- const incyclist_devices_1 = require("incyclist-devices");
19
+ const adapter_factory_1 = __importDefault(require("../factories/adapter-factory"));
20
20
  class AntInterface extends events_1.default {
21
21
  static getInstance(props = {}) {
22
22
  if (AntInterface._instance === undefined)
@@ -300,7 +300,7 @@ class AntInterface extends events_1.default {
300
300
  this.logger.logEvent({ message: 'stopping devices' });
301
301
  let promises = [];
302
302
  detected.forEach((settings) => {
303
- const adapter = incyclist_devices_1.AdapterFactory.create(settings);
303
+ const adapter = adapter_factory_1.default.getInstance().createInstance(settings);
304
304
  promises.push(adapter.stop().catch(err => {
305
305
  this.logger.logEvent({ message: 'could not stop device', error: err.message, deviceID: settings.deviceID, stack: err.stack });
306
306
  }));
@@ -0,0 +1 @@
1
+ export * from './adapter-factory';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./adapter-factory"), exports);
@@ -88,16 +88,17 @@ class AntFEAdapter extends adapter_1.default {
88
88
  }
89
89
  }
90
90
  mapData(deviceData) {
91
+ var _a, _b, _c, _d;
91
92
  const data = {
92
93
  isPedalling: false,
93
94
  power: 0,
94
95
  pedalRpm: 0,
95
96
  speed: 0,
96
97
  };
97
- data.speed = (deviceData.VirtualSpeed !== undefined ? deviceData.VirtualSpeed : (deviceData.RealSpeed || 0)) * 3.6;
98
- data.slope = (deviceData.Incline !== undefined ? deviceData.Incline : data.slope);
99
- data.power = (deviceData.InstantaneousPower !== undefined ? deviceData.InstantaneousPower : data.power);
100
- data.pedalRpm = (deviceData.Cadence !== undefined ? deviceData.Cadence : data.pedalRpm);
98
+ data.speed = ((_a = deviceData === null || deviceData === void 0 ? void 0 : deviceData.VirtualSpeed) !== null && _a !== void 0 ? _a : (deviceData.RealSpeed || 0)) * 3.6;
99
+ data.slope = (_b = deviceData === null || deviceData === void 0 ? void 0 : deviceData.Incline) !== null && _b !== void 0 ? _b : data.slope;
100
+ data.power = (_c = deviceData === null || deviceData === void 0 ? void 0 : deviceData.InstantaneousPower) !== null && _c !== void 0 ? _c : data.power;
101
+ data.pedalRpm = (_d = deviceData.Cadence) !== null && _d !== void 0 ? _d : data.pedalRpm;
101
102
  data.isPedalling = data.pedalRpm > 0 || data.power > 0;
102
103
  if (deviceData.HeartRate !== undefined)
103
104
  data.heartrate = deviceData.HeartRate;
@@ -8,4 +8,5 @@ import { AntInterfaceProps } from "./types";
8
8
  import AntSpdAdapter from "./spd";
9
9
  import AntScAdapter from "./sc";
10
10
  export { AntDeviceSettings, AntDeviceProperties, AntScanProps } from "./types";
11
+ export declare const initAntFactory: () => void;
11
12
  export { AntAdapterFactory, AntFEAdapter, AntHrAdapter, AntPwrAdapter, AntScAdapter, AntSpdAdapter, AntCadAdapter, AntInterface, AntInterfaceProps };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AntInterface = exports.AntCadAdapter = exports.AntSpdAdapter = exports.AntScAdapter = exports.AntPwrAdapter = exports.AntHrAdapter = exports.AntFEAdapter = exports.AntAdapterFactory = void 0;
6
+ exports.AntInterface = exports.AntCadAdapter = exports.AntSpdAdapter = exports.AntScAdapter = exports.AntPwrAdapter = exports.AntHrAdapter = exports.AntFEAdapter = exports.AntAdapterFactory = exports.initAntFactory = void 0;
7
7
  const pwr_1 = __importDefault(require("./pwr"));
8
8
  exports.AntPwrAdapter = pwr_1.default;
9
9
  const fe_1 = __importDefault(require("./fe"));
@@ -20,10 +20,14 @@ const spd_1 = __importDefault(require("./spd"));
20
20
  exports.AntSpdAdapter = spd_1.default;
21
21
  const sc_1 = __importDefault(require("./sc"));
22
22
  exports.AntScAdapter = sc_1.default;
23
- const af = adapter_factory_1.default.getInstance();
24
- af.register('PWR', 'Power Meter', pwr_1.default);
25
- af.register('HR', 'Heartrate Monitor', hr_1.default);
26
- af.register('FE', 'Smart Trainer', fe_1.default);
27
- af.register('CAD', 'Cadence Sensor', cad_1.default);
28
- af.register('SPD', 'Speed Sensor', spd_1.default);
29
- af.register('SC', 'Speed + Cadence Sensor', sc_1.default);
23
+ const initAntFactory = () => {
24
+ const af = adapter_factory_1.default.getInstance();
25
+ af.register('PWR', 'Power Meter', pwr_1.default);
26
+ af.register('HR', 'Heartrate Monitor', hr_1.default);
27
+ af.register('FE', 'Smart Trainer', fe_1.default);
28
+ af.register('CAD', 'Cadence Sensor', cad_1.default);
29
+ af.register('SPD', 'Speed Sensor', spd_1.default);
30
+ af.register('SC', 'Speed + Cadence Sensor', sc_1.default);
31
+ };
32
+ exports.initAntFactory = initAntFactory;
33
+ (0, exports.initAntFactory)();
@@ -11,6 +11,7 @@ export default class IncyclistDevice<P extends DeviceProperties> extends EventEm
11
11
  started: boolean;
12
12
  stopped: boolean;
13
13
  paused: boolean;
14
+ scanning: boolean;
14
15
  protected props: P;
15
16
  protected cyclingMode: ICyclingMode;
16
17
  protected logger: EventLogger;
@@ -37,6 +38,7 @@ export default class IncyclistDevice<P extends DeviceProperties> extends EventEm
37
38
  resume(): Promise<boolean>;
38
39
  connect(): Promise<boolean>;
39
40
  close(): Promise<boolean>;
41
+ resetData(): void;
40
42
  getControllerInfo(): ControllerConfig | undefined;
41
43
  isControllable(): boolean;
42
44
  getCapabilities(): IncyclistCapability[];
@@ -65,5 +67,7 @@ export default class IncyclistDevice<P extends DeviceProperties> extends EventEm
65
67
  getStartProps(startProps?: P): P;
66
68
  hasDataListeners(): boolean | OnDeviceDataCallback;
67
69
  onData(callback: OnDeviceDataCallback): void;
70
+ onScanStart(): void;
71
+ onScanStop(): void;
68
72
  }
69
73
  export type IncyclistDeviceAdapter = IncyclistDevice<DeviceProperties>;
@@ -26,6 +26,7 @@ class IncyclistDevice extends events_1.default {
26
26
  this.started = false;
27
27
  this.stopped = false;
28
28
  this.paused = false;
29
+ this.scanning = false;
29
30
  this.user = {};
30
31
  this.data = {};
31
32
  this.cyclingMode = this.getDefaultCyclingMode();
@@ -100,6 +101,9 @@ class IncyclistDevice extends events_1.default {
100
101
  }
101
102
  connect() { throw new Error('not implemented'); }
102
103
  close() { throw new Error('not implemented'); }
104
+ resetData() {
105
+ delete this.lastUpdate;
106
+ }
103
107
  getControllerInfo() {
104
108
  const a = this.constructor;
105
109
  const config = a.controllers;
@@ -200,7 +204,7 @@ class IncyclistDevice extends events_1.default {
200
204
  if (!request.enforced && (this.isPaused() || this.isStopped()))
201
205
  return;
202
206
  if (!this.hasCapability(types_1.IncyclistCapability.Control))
203
- return yield this.getCyclingMode().sendBikeUpdate(request);
207
+ return this.getCyclingMode().sendBikeUpdate(request);
204
208
  else
205
209
  throw new Error('method not implemented');
206
210
  });
@@ -223,11 +227,15 @@ class IncyclistDevice extends events_1.default {
223
227
  const updateFrequency = this.getMaxUpdateFrequency();
224
228
  if (updateFrequency === -1 || updateFrequency === undefined)
225
229
  return true;
226
- return (!this.lastUpdate || (Date.now() - this.lastUpdate) > updateFrequency);
230
+ const ok = (!this.lastUpdate || (Date.now() - this.lastUpdate) > updateFrequency);
231
+ return ok;
227
232
  }
228
233
  canEmitData() {
229
- if (this.paused || this.stopped)
234
+ if (this.scanning)
235
+ return this.isUpdateWithinFrequency();
236
+ if (this.paused || this.stopped) {
230
237
  return false;
238
+ }
231
239
  return this.isUpdateWithinFrequency();
232
240
  }
233
241
  emitData(data) {
@@ -261,6 +269,12 @@ class IncyclistDevice extends events_1.default {
261
269
  onData(callback) {
262
270
  this.onDataFn = callback;
263
271
  }
272
+ onScanStart() {
273
+ this.scanning = true;
274
+ }
275
+ onScanStop() {
276
+ this.scanning = false;
277
+ }
264
278
  }
265
279
  IncyclistDevice.controllers = {};
266
280
  exports.default = IncyclistDevice;
@@ -1,34 +1,30 @@
1
1
  import BleAdapter from "./base/adapter";
2
- import { BleDeviceSettings, BleProtocol } from "./types";
2
+ import { BleDeviceSettings, BleProtocol, TBleSensor } from "./types";
3
3
  import { DeviceProperties } from "../types";
4
- import { BleComms } from "./base/comms";
5
4
  import { BleDeviceData } from "./base/types";
6
- export interface BleAdapterInfo {
5
+ export interface BleAdapterInfo<T extends TBleSensor> {
7
6
  protocol: BleProtocol;
8
- Adapter: typeof BleAdapter<BleDeviceData, BleComms>;
9
- Comm: typeof BleComms;
7
+ Adapter: typeof BleAdapter<BleDeviceData, T>;
8
+ Comm: typeof TBleSensor;
10
9
  }
11
- export default class BleAdapterFactory {
12
- static _instance: BleAdapterFactory;
13
- implementations: BleAdapterInfo[];
14
- instances: Array<BleAdapter<BleDeviceData, BleComms>>;
15
- static getInstance(): BleAdapterFactory;
16
- constructor();
17
- getAdapterInfo(protocol: BleProtocol): BleAdapterInfo;
18
- getAll(): BleAdapterInfo[];
19
- createInstance(settings: BleDeviceSettings, props?: DeviceProperties): BleAdapter<BleDeviceData, BleComms>;
10
+ export default class BleAdapterFactory<T extends TBleSensor> {
11
+ transport: string;
12
+ static readonly _instances: Record<string, BleAdapterFactory<any>>;
13
+ implementations: BleAdapterInfo<any>[];
14
+ instances: Array<BleAdapter<BleDeviceData, T>>;
15
+ static getInstance(transport: string): BleAdapterFactory<any>;
16
+ constructor(transport: string);
17
+ getAdapterInfo(protocol: BleProtocol): BleAdapterInfo<T>;
18
+ getAll(): BleAdapterInfo<T>[];
19
+ createInstance(settings: BleDeviceSettings, props?: DeviceProperties): BleAdapter<BleDeviceData, T>;
20
20
  removeInstance(query: {
21
21
  settings?: BleDeviceSettings;
22
- adapter?: BleAdapter<BleDeviceData, BleComms>;
22
+ adapter?: BleAdapter<BleDeviceData, T>;
23
23
  }): void;
24
- find(settings?: BleDeviceSettings): BleAdapter<BleDeviceData, BleComms>;
25
- register(protocol: BleProtocol, Adapter: typeof BleAdapter<BleDeviceData, BleComms>, Comm: typeof BleComms): void;
26
- getAllInstances(): Array<BleAdapter<BleDeviceData, BleComms>>;
27
- getAllSupportedComms(): (typeof BleComms)[];
28
- getAllSupportedAdapters(): Array<(typeof BleAdapter<BleDeviceData, BleComms>)>;
24
+ find(settings?: BleDeviceSettings): BleAdapter<BleDeviceData, T>;
25
+ register(protocol: BleProtocol, Adapter: typeof BleAdapter<BleDeviceData, T>, Comm: typeof TBleSensor): void;
26
+ getAllInstances(): Array<BleAdapter<BleDeviceData, T>>;
27
+ getAllSupportedComms(): (typeof TBleSensor)[];
28
+ getAllSupportedAdapters(): Array<(typeof BleAdapter<BleDeviceData, T>)>;
29
29
  getAllSupportedServices(): string[];
30
- getDeviceClasses(peripheral: any, props?: {
31
- protocol?: BleProtocol;
32
- services?: string[];
33
- }): (typeof BleComms)[];
34
30
  }
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const comms_utils_1 = require("./base/comms-utils");
4
3
  const utils_1 = require("./utils");
5
4
  class BleAdapterFactory {
6
- static getInstance() {
7
- if (!BleAdapterFactory._instance)
8
- BleAdapterFactory._instance = new BleAdapterFactory();
9
- return BleAdapterFactory._instance;
5
+ static getInstance(transport) {
6
+ if (!BleAdapterFactory._instances[transport])
7
+ BleAdapterFactory._instances[transport] = new BleAdapterFactory(transport);
8
+ return BleAdapterFactory._instances[transport];
10
9
  }
11
- constructor() {
10
+ constructor(transport) {
11
+ this.transport = transport;
12
12
  this.implementations = [];
13
13
  this.instances = [];
14
14
  }
@@ -37,7 +37,8 @@ class BleAdapterFactory {
37
37
  return existing;
38
38
  }
39
39
  const info = this.getAdapterInfo(protocol);
40
- if (!info || !info.Adapter)
40
+ console.log('~~~~ INFO:', info);
41
+ if (!(info === null || info === void 0 ? void 0 : info.Adapter))
41
42
  return;
42
43
  const adapter = new info.Adapter(adapterSettings, props);
43
44
  this.instances.push(adapter);
@@ -69,42 +70,18 @@ class BleAdapterFactory {
69
70
  return this.instances;
70
71
  }
71
72
  getAllSupportedComms() {
72
- const supported = BleAdapterFactory.getInstance().getAll();
73
+ const supported = this.getAll();
73
74
  return supported.map(info => info.Comm);
74
75
  }
75
76
  getAllSupportedAdapters() {
76
- const supported = BleAdapterFactory.getInstance().getAll();
77
+ const supported = this.getAll();
77
78
  return supported.map(info => info.Adapter);
78
79
  }
79
80
  getAllSupportedServices() {
80
- const supported = BleAdapterFactory.getInstance().getAll();
81
- const res = [];
82
- if (supported && supported.length > 0) {
83
- supported.forEach(info => {
84
- if (info && info.Comm && info.Comm.services) {
85
- info.Comm.services.forEach(s => {
86
- if (!res.includes(s))
87
- res.push(s);
88
- });
89
- }
90
- });
91
- }
81
+ const supported = this.getAll();
82
+ const res = ['180d', '1818', '1826', '6e40fec1'];
92
83
  return res;
93
84
  }
94
- getDeviceClasses(peripheral, props = {}) {
95
- let DeviceClasses;
96
- const { protocol, services = peripheral.advertisement.serviceUuids } = props;
97
- const classes = this.getAllSupportedComms();
98
- DeviceClasses = (0, comms_utils_1.getDevicesFromServices)(classes, services);
99
- if (protocol && DeviceClasses && DeviceClasses.length > 0) {
100
- DeviceClasses = DeviceClasses.filter((C) => {
101
- const device = new C({ peripheral });
102
- if (device.getProtocol() !== protocol)
103
- return false;
104
- return true;
105
- });
106
- }
107
- return DeviceClasses;
108
- }
109
85
  }
86
+ BleAdapterFactory._instances = {};
110
87
  exports.default = BleAdapterFactory;
@@ -1,22 +1,25 @@
1
1
  import IncyclistDevice from "../../base/adpater";
2
- import { BleComms } from "./comms";
3
- import BleInterface from "../ble-interface";
4
- import { BleDeviceProperties, BleDeviceSettings, BleStartProperties } from "../types";
2
+ import { BleDeviceProperties, BleDeviceSettings, BleStartProperties, IBleInterface, IBlePeripheral } from "../types";
5
3
  import { IAdapter, IncyclistBikeData, IncyclistAdapterData, DeviceProperties } from "../../types";
6
4
  import { BleDeviceData } from "./types";
7
5
  import { LegacyProfile } from "../../antv2/types";
8
6
  import ICyclingMode from "../../modes/types";
9
- export default class BleAdapter<TDeviceData extends BleDeviceData, TDevice extends BleComms> extends IncyclistDevice<BleDeviceProperties> {
10
- protected ble: BleInterface;
7
+ import { InteruptableTask, TaskState } from "../../utils/task";
8
+ import { TBleSensor } from "./sensor";
9
+ export default class BleAdapter<TDeviceData extends BleDeviceData, TDevice extends TBleSensor> extends IncyclistDevice<BleDeviceProperties> {
11
10
  protected deviceData: TDeviceData;
12
11
  protected data: IncyclistAdapterData;
13
12
  protected dataMsgCount: number;
14
13
  protected lastDataTS: number;
15
14
  protected device: TDevice;
16
15
  protected onDeviceDataHandler: any;
16
+ protected startTask: InteruptableTask<TaskState, boolean>;
17
17
  constructor(settings: BleDeviceSettings, props?: DeviceProperties);
18
18
  getUniqueName(): string;
19
19
  connect(): Promise<boolean>;
20
+ getPeripheral(): IBlePeripheral;
21
+ waitForPeripheral(): Promise<void>;
22
+ updateSensor(peripheral: IBlePeripheral): void;
20
23
  close(): Promise<boolean>;
21
24
  getComms(): TDevice;
22
25
  isEqual(settings: BleDeviceSettings): boolean;
@@ -35,11 +38,22 @@ export default class BleAdapter<TDeviceData extends BleDeviceData, TDevice exten
35
38
  getSettings(): BleDeviceSettings;
36
39
  setProperties(props: BleDeviceProperties): void;
37
40
  check(): Promise<boolean>;
41
+ getDefaultStartupTimeout(): number;
38
42
  startPreChecks(props: BleStartProperties): Promise<'done' | 'connected' | 'connection-failed'>;
39
43
  start(startProps?: BleStartProperties): Promise<boolean>;
44
+ protected isStarting(): boolean;
45
+ protected hasData(): boolean;
46
+ protected waitForInitialData(startupTimeout: any): Promise<void>;
47
+ protected checkCapabilities(): void;
48
+ protected initControl(_props?: BleStartProperties): Promise<void>;
49
+ protected startAdapter(startProps?: BleStartProperties): Promise<boolean>;
50
+ startSensor(): Promise<boolean>;
51
+ protected onDisconnectDone(): Promise<void>;
40
52
  stop(): Promise<boolean>;
41
53
  pause(): Promise<boolean>;
42
54
  resume(): Promise<boolean>;
55
+ protected getBle(): IBleInterface<any>;
43
56
  update(): void;
44
57
  setCyclingMode(mode: string | ICyclingMode, settings?: any, sendInitCommands?: boolean): void;
58
+ onScanStart(): void;
45
59
  }