incyclist-devices 2.2.9 → 2.3.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 (142) 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.js +1 -1
  8. package/lib/ble/adapter-factory.d.ts +20 -24
  9. package/lib/ble/adapter-factory.js +13 -36
  10. package/lib/ble/base/adapter.d.ts +16 -5
  11. package/lib/ble/base/adapter.js +169 -52
  12. package/lib/ble/base/comms.d.ts +2 -74
  13. package/lib/ble/base/comms.js +3 -596
  14. package/lib/ble/base/interface.d.ts +96 -0
  15. package/lib/ble/base/interface.js +544 -0
  16. package/lib/ble/base/peripheral.d.ts +34 -0
  17. package/lib/ble/base/peripheral.js +286 -0
  18. package/lib/ble/base/sensor.d.ts +31 -0
  19. package/lib/ble/base/sensor.js +130 -0
  20. package/lib/ble/base/types.d.ts +7 -0
  21. package/lib/ble/base/types.js +7 -0
  22. package/lib/ble/bindings/mock.js +6 -0
  23. package/lib/ble/bindings/types.d.ts +3 -4
  24. package/lib/ble/ble-interface.d.ts +7 -4
  25. package/lib/ble/ble-interface.js +16 -2
  26. package/lib/ble/ble-peripheral.d.ts +1 -0
  27. package/lib/ble/ble-peripheral.js +7 -11
  28. package/lib/ble/consts.d.ts +0 -6
  29. package/lib/ble/consts.js +1 -7
  30. package/lib/ble/cp/adapter.d.ts +3 -3
  31. package/lib/ble/cp/adapter.js +12 -13
  32. package/lib/ble/cp/comm.d.ts +1 -1
  33. package/lib/ble/cp/comm.js +2 -2
  34. package/lib/ble/cp/index.d.ts +1 -1
  35. package/lib/ble/cp/index.js +2 -2
  36. package/lib/ble/cp/sensor.d.ts +27 -0
  37. package/lib/ble/cp/sensor.js +107 -0
  38. package/lib/ble/elite/comms.d.ts +1 -1
  39. package/lib/ble/elite/comms.js +2 -2
  40. package/lib/ble/factories/adapter-factory.d.ts +32 -0
  41. package/lib/ble/factories/adapter-factory.js +104 -0
  42. package/lib/ble/factories/index.d.ts +2 -0
  43. package/lib/ble/factories/index.js +18 -0
  44. package/lib/ble/factories/interface-factory.d.ts +7 -0
  45. package/lib/ble/factories/interface-factory.js +18 -0
  46. package/lib/ble/fm/adapter.d.ts +9 -4
  47. package/lib/ble/fm/adapter.js +104 -108
  48. package/lib/ble/fm/comms.d.ts +1 -1
  49. package/lib/ble/fm/comms.js +3 -3
  50. package/lib/ble/fm/consts.d.ts +93 -0
  51. package/lib/ble/fm/consts.js +55 -1
  52. package/lib/ble/fm/index.d.ts +1 -1
  53. package/lib/ble/fm/index.js +2 -2
  54. package/lib/ble/fm/sensor.d.ts +44 -0
  55. package/lib/ble/fm/sensor.js +384 -0
  56. package/lib/ble/hr/adapter.d.ts +3 -3
  57. package/lib/ble/hr/adapter.js +5 -8
  58. package/lib/ble/hr/comm.d.ts +1 -1
  59. package/lib/ble/hr/comm.js +2 -2
  60. package/lib/ble/hr/index.d.ts +1 -1
  61. package/lib/ble/hr/index.js +2 -2
  62. package/lib/ble/hr/sensor.d.ts +17 -0
  63. package/lib/ble/hr/sensor.js +52 -0
  64. package/lib/ble/index.d.ts +4 -3
  65. package/lib/ble/index.js +29 -13
  66. package/lib/ble/tacx/adapter.d.ts +4 -2
  67. package/lib/ble/tacx/adapter.js +26 -66
  68. package/lib/ble/tacx/comms.d.ts +1 -1
  69. package/lib/ble/tacx/comms.js +2 -2
  70. package/lib/ble/tacx/consts.d.ts +23 -0
  71. package/lib/ble/tacx/consts.js +27 -0
  72. package/lib/ble/tacx/index.d.ts +1 -1
  73. package/lib/ble/tacx/index.js +2 -2
  74. package/lib/ble/tacx/sensor.d.ts +63 -0
  75. package/lib/ble/tacx/sensor.js +596 -0
  76. package/lib/ble/types.d.ts +81 -52
  77. package/lib/ble/utils.d.ts +7 -2
  78. package/lib/ble/utils.js +84 -9
  79. package/lib/ble/wahoo/adapter.d.ts +2 -2
  80. package/lib/ble/wahoo/adapter.js +4 -72
  81. package/lib/ble/wahoo/comms.d.ts +1 -1
  82. package/lib/ble/wahoo/comms.js +2 -2
  83. package/lib/ble/wahoo/consts.d.ts +16 -0
  84. package/lib/ble/wahoo/consts.js +7 -0
  85. package/lib/ble/wahoo/index.d.ts +1 -1
  86. package/lib/ble/wahoo/index.js +2 -2
  87. package/lib/ble/wahoo/sensor.d.ts +48 -0
  88. package/lib/ble/wahoo/sensor.js +356 -0
  89. package/lib/direct-connect/base/comms.d.ts +3 -0
  90. package/lib/direct-connect/base/comms.js +7 -0
  91. package/lib/direct-connect/base/interface.d.ts +75 -0
  92. package/lib/direct-connect/base/interface.js +306 -0
  93. package/lib/direct-connect/base/peripheral.d.ts +50 -0
  94. package/lib/direct-connect/base/peripheral.js +413 -0
  95. package/lib/direct-connect/base/sensor.d.ts +3 -0
  96. package/lib/direct-connect/base/sensor.js +7 -0
  97. package/lib/direct-connect/bindings/index.d.ts +1 -0
  98. package/lib/direct-connect/bindings/index.js +17 -0
  99. package/lib/direct-connect/bindings/types.d.ts +36 -0
  100. package/lib/direct-connect/bindings/types.js +2 -0
  101. package/lib/direct-connect/consts.d.ts +17 -0
  102. package/lib/direct-connect/consts.js +20 -0
  103. package/lib/direct-connect/index.d.ts +3 -0
  104. package/lib/direct-connect/index.js +22 -0
  105. package/lib/direct-connect/messages/CharacteristicNotification.d.ts +12 -0
  106. package/lib/direct-connect/messages/CharacteristicNotification.js +23 -0
  107. package/lib/direct-connect/messages/DiscoverCharacteristics.d.ts +22 -0
  108. package/lib/direct-connect/messages/DiscoverCharacteristics.js +43 -0
  109. package/lib/direct-connect/messages/DiscoverServices.d.ts +15 -0
  110. package/lib/direct-connect/messages/DiscoverServices.js +33 -0
  111. package/lib/direct-connect/messages/EnableCharacteristicNotifications.d.ts +18 -0
  112. package/lib/direct-connect/messages/EnableCharacteristicNotifications.js +35 -0
  113. package/lib/direct-connect/messages/ReadCharacteristic.d.ts +18 -0
  114. package/lib/direct-connect/messages/ReadCharacteristic.js +34 -0
  115. package/lib/direct-connect/messages/WriteCharacteristic.d.ts +18 -0
  116. package/lib/direct-connect/messages/WriteCharacteristic.js +36 -0
  117. package/lib/direct-connect/messages/error.d.ts +5 -0
  118. package/lib/direct-connect/messages/error.js +18 -0
  119. package/lib/direct-connect/messages/factory.d.ts +6 -0
  120. package/lib/direct-connect/messages/factory.js +44 -0
  121. package/lib/direct-connect/messages/index.d.ts +9 -0
  122. package/lib/direct-connect/messages/index.js +25 -0
  123. package/lib/direct-connect/messages/message.d.ts +20 -0
  124. package/lib/direct-connect/messages/message.js +90 -0
  125. package/lib/direct-connect/types.d.ts +24 -0
  126. package/lib/direct-connect/types.js +9 -0
  127. package/lib/direct-connect/utils.d.ts +5 -0
  128. package/lib/direct-connect/utils.js +73 -0
  129. package/lib/factories/adapters.js +16 -4
  130. package/lib/factories/interfaces.d.ts +2 -1
  131. package/lib/factories/interfaces.js +10 -7
  132. package/lib/index.d.ts +5 -4
  133. package/lib/index.js +6 -2
  134. package/lib/serial/bindings/tcp.d.ts +5 -4
  135. package/lib/serial/bindings/tcp.js +16 -23
  136. package/lib/types/device.d.ts +2 -1
  137. package/lib/types/device.js +1 -0
  138. package/lib/utils/operation.d.ts +17 -0
  139. package/lib/utils/operation.js +20 -0
  140. package/lib/utils/task.d.ts +44 -0
  141. package/lib/utils/task.js +127 -0
  142. package/package.json +3 -1
@@ -0,0 +1,15 @@
1
+ import { EmptyBody, TDCBody, TDCMessageHeader, TDCRequest, TDCResponse } from "../types";
2
+ import { Message } from "./message";
3
+ export type TDCDiscoverServicesRequest = TDCRequest<EmptyBody>;
4
+ export type TDCDiscoverServicesResponse = TDCResponse<TDCDiscoverServicesResponseBody>;
5
+ export interface TDCDiscoverServicesResponseBody extends TDCBody {
6
+ serviceDefinitions: Array<{
7
+ serviceUUID: string;
8
+ }>;
9
+ }
10
+ export declare class DiscoverServiceMessage extends Message<EmptyBody, TDCDiscoverServicesResponseBody> {
11
+ constructor();
12
+ buildResponseBody(body: TDCDiscoverServicesResponseBody): Buffer;
13
+ parseResponseBody(body: Buffer): TDCDiscoverServicesResponseBody;
14
+ verifyHeader(header: TDCMessageHeader): boolean;
15
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiscoverServiceMessage = void 0;
4
+ const consts_1 = require("../consts");
5
+ const error_1 = require("./error");
6
+ const message_1 = require("./message");
7
+ class DiscoverServiceMessage extends message_1.Message {
8
+ constructor() {
9
+ super(consts_1.DC_MESSAGE_DISCOVER_SERVICES);
10
+ }
11
+ buildResponseBody(body) {
12
+ const serviceBuffers = body.serviceDefinitions.map((service) => {
13
+ return Buffer.from(service.serviceUUID, "hex");
14
+ });
15
+ return Buffer.concat(serviceBuffers);
16
+ }
17
+ parseResponseBody(body) {
18
+ const serviceDefinitions = [];
19
+ const length = body.length;
20
+ for (let i = 0; i < length; i += 16) {
21
+ const serviceUUID = body.subarray(i, i + 16).toString("hex");
22
+ serviceDefinitions.push({ serviceUUID });
23
+ }
24
+ return { serviceDefinitions };
25
+ }
26
+ verifyHeader(header) {
27
+ if (header.msgId !== consts_1.DC_MESSAGE_DISCOVER_SERVICES) {
28
+ throw new error_1.IllegalMessageError(consts_1.DC_ERROR_INVALID_MESSAGE_TYPE);
29
+ }
30
+ return super.verifyHeader(header);
31
+ }
32
+ }
33
+ exports.DiscoverServiceMessage = DiscoverServiceMessage;
@@ -0,0 +1,18 @@
1
+ import { TDCBody, TDCRequest, TDCResponse } from "../types";
2
+ import { Message } from "./message";
3
+ export type TDCEnableCharacteristicNotificationsRequest = TDCRequest<TDCEnableCharacteristicNotificationsRequestBody>;
4
+ export type TDCEnableCharacteristicNotificationsResponse = TDCResponse<TDCEnableCharacteristicNotificationsResponseBody>;
5
+ export interface TDCEnableCharacteristicNotificationsRequestBody extends TDCBody {
6
+ characteristicUUID: string;
7
+ enable: boolean;
8
+ }
9
+ export interface TDCEnableCharacteristicNotificationsResponseBody extends TDCBody {
10
+ characteristicUUID: string;
11
+ }
12
+ export declare class EnableCharacteristicNotificationsMessage extends Message<TDCEnableCharacteristicNotificationsRequestBody, TDCEnableCharacteristicNotificationsResponseBody> {
13
+ constructor();
14
+ buildRequestBody(body: TDCEnableCharacteristicNotificationsRequestBody): Buffer;
15
+ buildResponseBody(body: TDCEnableCharacteristicNotificationsResponseBody): Buffer;
16
+ parseRequestBody(body: Buffer): TDCEnableCharacteristicNotificationsRequestBody;
17
+ parseResponseBody(body: Buffer): TDCEnableCharacteristicNotificationsResponseBody;
18
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnableCharacteristicNotificationsMessage = void 0;
4
+ const consts_1 = require("../consts");
5
+ const message_1 = require("./message");
6
+ class EnableCharacteristicNotificationsMessage extends message_1.Message {
7
+ constructor() {
8
+ super(consts_1.DC_MESSAGE_ENABLE_CHARACTERISTIC_NOTIFICATIONS);
9
+ }
10
+ buildRequestBody(body) {
11
+ const enabledVal = body.enable ? 1 : 0;
12
+ return Buffer.concat([
13
+ Buffer.from(body.characteristicUUID, "hex"),
14
+ Buffer.from([enabledVal])
15
+ ]);
16
+ }
17
+ buildResponseBody(body) {
18
+ return Buffer.from(body.characteristicUUID, "hex");
19
+ }
20
+ parseRequestBody(body) {
21
+ const characteristicUUID = Buffer.from(body.subarray(0, 16)).toString("hex");
22
+ const enabledVal = body.readUInt8(16);
23
+ const enable = enabledVal !== 0;
24
+ return {
25
+ characteristicUUID, enable
26
+ };
27
+ }
28
+ parseResponseBody(body) {
29
+ const characteristicUUID = Buffer.from(body.subarray(0, 16)).toString("hex");
30
+ return {
31
+ characteristicUUID,
32
+ };
33
+ }
34
+ }
35
+ exports.EnableCharacteristicNotificationsMessage = EnableCharacteristicNotificationsMessage;
@@ -0,0 +1,18 @@
1
+ import { TDCBody, TDCRequest, TDCResponse } from "../types";
2
+ import { Message } from "./message";
3
+ export type TDCReadCharacteristicRequest = TDCRequest<TDCReadCharacteristicRequestBody>;
4
+ export type TDCReadCharacteristicResponse = TDCResponse<TDCReadCharacteristicResponseBody>;
5
+ export interface TDCReadCharacteristicRequestBody extends TDCBody {
6
+ characteristicUUID: string;
7
+ }
8
+ export interface TDCReadCharacteristicResponseBody extends TDCBody {
9
+ characteristicUUID: string;
10
+ characteristicData: Uint8Array;
11
+ }
12
+ export declare class ReadCharacteristicMessage extends Message<TDCReadCharacteristicRequestBody, TDCReadCharacteristicResponseBody> {
13
+ constructor();
14
+ buildRequestBody(body: TDCReadCharacteristicRequestBody): Buffer;
15
+ buildResponseBody(body: TDCReadCharacteristicResponseBody): Buffer;
16
+ parseRequestBody(body: Buffer): TDCReadCharacteristicRequestBody;
17
+ parseResponseBody(body: Buffer): TDCReadCharacteristicResponseBody;
18
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadCharacteristicMessage = void 0;
4
+ const consts_1 = require("../consts");
5
+ const message_1 = require("./message");
6
+ class ReadCharacteristicMessage extends message_1.Message {
7
+ constructor() {
8
+ super(consts_1.DC_MESSAGE_READ_CHARACTERISTIC);
9
+ }
10
+ buildRequestBody(body) {
11
+ return Buffer.from(body.characteristicUUID, "hex");
12
+ }
13
+ buildResponseBody(body) {
14
+ return Buffer.concat([
15
+ Buffer.from(body.characteristicUUID, "hex"),
16
+ Buffer.from(body.characteristicData),
17
+ ]);
18
+ }
19
+ parseRequestBody(body) {
20
+ const characteristicUUID = Buffer.from(body.subarray(0, 16)).toString("hex");
21
+ return {
22
+ characteristicUUID,
23
+ };
24
+ }
25
+ parseResponseBody(body) {
26
+ const characteristicUUID = Buffer.from(body.subarray(0, 16)).toString("hex");
27
+ const characteristicData = body.subarray(16, body.length);
28
+ return {
29
+ characteristicUUID,
30
+ characteristicData,
31
+ };
32
+ }
33
+ }
34
+ exports.ReadCharacteristicMessage = ReadCharacteristicMessage;
@@ -0,0 +1,18 @@
1
+ import { TDCBody, TDCRequest, TDCResponse } from "../types";
2
+ import { Message } from "./message";
3
+ export type TDCWriteCharacteristicRequest = TDCRequest<TDCWriteCharacteristicRequestBody>;
4
+ export type TDCWriteCharacteristicResponse = TDCResponse<TDCWriteCharacteristicResponseBody>;
5
+ export interface TDCWriteCharacteristicRequestBody extends TDCBody {
6
+ characteristicUUID: string;
7
+ characteristicData: Uint8Array;
8
+ }
9
+ export interface TDCWriteCharacteristicResponseBody extends TDCBody {
10
+ characteristicUUID: string;
11
+ }
12
+ export declare class WriteCharacteristicMessage extends Message<TDCWriteCharacteristicRequestBody, TDCWriteCharacteristicResponseBody> {
13
+ constructor();
14
+ buildRequestBody(body: TDCWriteCharacteristicRequestBody): Buffer;
15
+ buildResponseBody(body: TDCWriteCharacteristicResponseBody): Buffer;
16
+ parseRequestBody(body: Buffer): TDCWriteCharacteristicRequestBody;
17
+ parseResponseBody(body: Buffer): TDCWriteCharacteristicResponseBody;
18
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WriteCharacteristicMessage = void 0;
4
+ const consts_1 = require("../consts");
5
+ const message_1 = require("./message");
6
+ class WriteCharacteristicMessage extends message_1.Message {
7
+ constructor() {
8
+ super(consts_1.DC_MESSAGE_WRITE_CHARACTERISTIC);
9
+ }
10
+ buildRequestBody(body) {
11
+ return Buffer.concat([
12
+ Buffer.from(body.characteristicUUID, "hex"),
13
+ Buffer.from(body.characteristicData),
14
+ ]);
15
+ }
16
+ buildResponseBody(body) {
17
+ return Buffer.concat([
18
+ Buffer.from(body.characteristicUUID, "hex"),
19
+ ]);
20
+ }
21
+ parseRequestBody(body) {
22
+ const characteristicUUID = Buffer.from(body.subarray(0, 16)).toString("hex");
23
+ const characteristicData = body.subarray(16, body.length);
24
+ return {
25
+ characteristicUUID,
26
+ characteristicData,
27
+ };
28
+ }
29
+ parseResponseBody(body) {
30
+ const characteristicUUID = Buffer.from(body.subarray(0, 16)).toString("hex");
31
+ return {
32
+ characteristicUUID,
33
+ };
34
+ }
35
+ }
36
+ exports.WriteCharacteristicMessage = WriteCharacteristicMessage;
@@ -0,0 +1,5 @@
1
+ export declare class IllegalMessageError extends Error {
2
+ code: number;
3
+ constructor(code: number);
4
+ }
5
+ export declare const getResponseCode: (error: IllegalMessageError) => number;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getResponseCode = exports.IllegalMessageError = void 0;
4
+ const consts_1 = require("../consts");
5
+ class IllegalMessageError extends Error {
6
+ constructor(code) {
7
+ super('Illegal request: ' + code);
8
+ this.code = code;
9
+ this.name = 'IllegalRequestError';
10
+ }
11
+ }
12
+ exports.IllegalMessageError = IllegalMessageError;
13
+ const getResponseCode = (error) => {
14
+ if (error.code === consts_1.DC_ERROR_UNKNOWN_MESSAGE_TYPE)
15
+ return consts_1.DC_RC_UNKNOWN_MESSAGE_TYPE;
16
+ return consts_1.DC_RC_UNEXPECTED_ERROR;
17
+ };
18
+ exports.getResponseCode = getResponseCode;
@@ -0,0 +1,6 @@
1
+ import { Message } from "./message";
2
+ export declare class DCMessageFactory {
3
+ static createMessage(buffer: Buffer): Message<any, any>;
4
+ static create(msgId: number): Message<any, any>;
5
+ static buildErrorResponse(request: Buffer, code: number): Buffer;
6
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DCMessageFactory = void 0;
4
+ const consts_1 = require("../consts");
5
+ const CharacteristicNotification_1 = require("./CharacteristicNotification");
6
+ const DiscoverCharacteristics_1 = require("./DiscoverCharacteristics");
7
+ const DiscoverServices_1 = require("./DiscoverServices");
8
+ const EnableCharacteristicNotifications_1 = require("./EnableCharacteristicNotifications");
9
+ const error_1 = require("./error");
10
+ const ReadCharacteristic_1 = require("./ReadCharacteristic");
11
+ const WriteCharacteristic_1 = require("./WriteCharacteristic");
12
+ class DCMessageFactory {
13
+ static createMessage(buffer) {
14
+ if (buffer.length < 6) {
15
+ throw new error_1.IllegalMessageError(consts_1.DC_ERROR_INVALID_MESSAGE_LENGTH);
16
+ }
17
+ const msgId = buffer.readUInt8(1);
18
+ return this.create(msgId);
19
+ }
20
+ static create(msgId) {
21
+ switch (msgId) {
22
+ case consts_1.DC_MESSAGE_DISCOVER_SERVICES:
23
+ return new DiscoverServices_1.DiscoverServiceMessage();
24
+ case consts_1.DC_MESSAGE_DISCOVER_CHARACTERISTICS:
25
+ return new DiscoverCharacteristics_1.DiscoverCharacteristicsMessage();
26
+ case consts_1.DC_MESSAGE_READ_CHARACTERISTIC:
27
+ return new ReadCharacteristic_1.ReadCharacteristicMessage();
28
+ case consts_1.DC_MESSAGE_WRITE_CHARACTERISTIC:
29
+ return new WriteCharacteristic_1.WriteCharacteristicMessage();
30
+ case consts_1.DC_MESSAGE_ENABLE_CHARACTERISTIC_NOTIFICATIONS:
31
+ return new EnableCharacteristicNotifications_1.EnableCharacteristicNotificationsMessage();
32
+ case consts_1.DC_MESSAGE_CHARACTERISTIC_NOTIFICATION:
33
+ return new CharacteristicNotification_1.CharacteristicNotificationMessage();
34
+ default:
35
+ throw new error_1.IllegalMessageError(consts_1.DC_ERROR_UNKNOWN_MESSAGE_TYPE);
36
+ }
37
+ }
38
+ static buildErrorResponse(request, code) {
39
+ const response = Buffer.from(request);
40
+ response.writeUInt8(code, 3);
41
+ return response;
42
+ }
43
+ }
44
+ exports.DCMessageFactory = DCMessageFactory;
@@ -0,0 +1,9 @@
1
+ export * from './error';
2
+ export * from './message';
3
+ export * from './factory';
4
+ export * from './DiscoverServices';
5
+ export * from './DiscoverCharacteristics';
6
+ export * from './ReadCharacteristic';
7
+ export * from './WriteCharacteristic';
8
+ export * from './EnableCharacteristicNotifications';
9
+ export * from './CharacteristicNotification';
@@ -0,0 +1,25 @@
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("./error"), exports);
18
+ __exportStar(require("./message"), exports);
19
+ __exportStar(require("./factory"), exports);
20
+ __exportStar(require("./DiscoverServices"), exports);
21
+ __exportStar(require("./DiscoverCharacteristics"), exports);
22
+ __exportStar(require("./ReadCharacteristic"), exports);
23
+ __exportStar(require("./WriteCharacteristic"), exports);
24
+ __exportStar(require("./EnableCharacteristicNotifications"), exports);
25
+ __exportStar(require("./CharacteristicNotification"), exports);
@@ -0,0 +1,20 @@
1
+ import { TDCBody, TDCMessageHeader, TDCRequest, TDCResponse } from "../types";
2
+ export declare class Message<TReq extends TDCBody, TRes extends TDCBody> {
3
+ msgId?: number;
4
+ protected request: TDCRequest<TReq>;
5
+ protected response: TDCResponse<TRes>;
6
+ constructor(msgId?: number);
7
+ buildResponse(response: TDCResponse<TRes>): Buffer;
8
+ buildRequest(request: TDCRequest<TReq>): Buffer;
9
+ createRequest(seqNum: any, body: TReq): Buffer;
10
+ parseRequest(buffer: Buffer): TDCRequest<TReq>;
11
+ prepareResponse(request: TDCRequest<TReq>, respCode: number, body: TRes): TDCResponse<TRes>;
12
+ parseResponse(buffer: Buffer): TDCResponse<TRes>;
13
+ buildHeader(header: TDCMessageHeader, length: number): Buffer;
14
+ buildResponseBody(body: TRes): Buffer;
15
+ buildRequestBody(body: TReq): Buffer;
16
+ verifyHeader(header: TDCMessageHeader): boolean;
17
+ parseRequestBody(body: Buffer): TReq;
18
+ parseResponseBody(body: Buffer): TRes;
19
+ }
20
+ export declare const parseHeader: (buffer: Buffer) => TDCMessageHeader;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseHeader = exports.Message = void 0;
4
+ const consts_1 = require("../consts");
5
+ const error_1 = require("./error");
6
+ class Message {
7
+ constructor(msgId) {
8
+ this.msgId = msgId;
9
+ }
10
+ buildResponse(response) {
11
+ const { header, body } = response;
12
+ const bodyBuffer = this.buildResponseBody(body);
13
+ const headerBuffer = this.buildHeader(header, bodyBuffer.length);
14
+ return Buffer.concat([headerBuffer, bodyBuffer]);
15
+ }
16
+ buildRequest(request) {
17
+ const { header, body } = request;
18
+ const bodyBuffer = this.buildRequestBody(body);
19
+ const headerBuffer = this.buildHeader(header, bodyBuffer.length);
20
+ return Buffer.concat([headerBuffer, bodyBuffer]);
21
+ }
22
+ createRequest(seqNum, body) {
23
+ const header = {
24
+ msgId: this.msgId,
25
+ seqNum,
26
+ respCode: 0,
27
+ msgVersion: 1,
28
+ length: 0
29
+ };
30
+ return this.buildRequest({ header, body });
31
+ }
32
+ parseRequest(buffer) {
33
+ const header = (0, exports.parseHeader)(buffer);
34
+ this.verifyHeader(header);
35
+ const bodyBuffer = buffer.subarray(6);
36
+ const body = this.parseRequestBody(bodyBuffer);
37
+ return { header, body };
38
+ }
39
+ prepareResponse(request, respCode, body) {
40
+ const header = Object.assign(Object.assign({}, request.header), { respCode });
41
+ return { header, body };
42
+ }
43
+ parseResponse(buffer) {
44
+ const header = (0, exports.parseHeader)(buffer);
45
+ this.verifyHeader(header);
46
+ const bodyBuffer = buffer.subarray(6);
47
+ const body = this.parseResponseBody(bodyBuffer);
48
+ return { header, body };
49
+ }
50
+ buildHeader(header, length) {
51
+ const buffer = Buffer.alloc(6);
52
+ buffer.writeUInt8(header.msgVersion, 0);
53
+ buffer.writeUInt8(header.msgId, 1);
54
+ buffer.writeUInt8(header.seqNum, 2);
55
+ buffer.writeUInt8(header.respCode, 3);
56
+ buffer.writeUInt16BE(length !== null && length !== void 0 ? length : header.length, 4);
57
+ return buffer;
58
+ }
59
+ buildResponseBody(body) {
60
+ return Buffer.from([]);
61
+ }
62
+ buildRequestBody(body) {
63
+ return Buffer.from([]);
64
+ }
65
+ verifyHeader(header) {
66
+ if (header.msgId !== this.msgId) {
67
+ throw new error_1.IllegalMessageError(consts_1.DC_ERROR_INVALID_MESSAGE_TYPE);
68
+ }
69
+ return true;
70
+ }
71
+ parseRequestBody(body) {
72
+ return {};
73
+ }
74
+ parseResponseBody(body) {
75
+ return {};
76
+ }
77
+ }
78
+ exports.Message = Message;
79
+ const parseHeader = (buffer) => {
80
+ if (buffer.length < 6) {
81
+ throw new error_1.IllegalMessageError(consts_1.DC_ERROR_INVALID_MESSAGE_LENGTH);
82
+ }
83
+ const msgVersion = buffer.readUInt8(0);
84
+ const msgId = buffer.readUInt8(1);
85
+ const seqNum = buffer.readUInt8(2);
86
+ const respCode = buffer.readUInt8(3);
87
+ const length = buffer.readUInt16BE(4);
88
+ return { msgVersion, msgId, seqNum, respCode, length };
89
+ };
90
+ exports.parseHeader = parseHeader;
@@ -0,0 +1,24 @@
1
+ import { IncyclistScanProps } from "../types";
2
+ export interface TDCMessageHeader {
3
+ msgVersion: number;
4
+ msgId: number;
5
+ seqNum: number;
6
+ respCode: number;
7
+ length: number;
8
+ }
9
+ export interface TDCBody {
10
+ }
11
+ export declare class TDCRequest<T extends TDCBody> {
12
+ header: TDCMessageHeader;
13
+ body: T;
14
+ }
15
+ export declare class TDCResponse<T extends TDCBody> {
16
+ header: TDCMessageHeader;
17
+ body: T;
18
+ }
19
+ export interface EmptyBody extends TDCBody {
20
+ }
21
+ export interface DirectConnectScanProps extends IncyclistScanProps {
22
+ serviceUUID?: string;
23
+ serviceUUIDs?: string[];
24
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TDCResponse = exports.TDCRequest = void 0;
4
+ class TDCRequest {
5
+ }
6
+ exports.TDCRequest = TDCRequest;
7
+ class TDCResponse {
8
+ }
9
+ exports.TDCResponse = TDCResponse;
@@ -0,0 +1,5 @@
1
+ import { BleProperty } from "../ble/types";
2
+ export declare const parseUUID: (str: string) => string;
3
+ export declare const beautifyUUID: (str: string, withX?: boolean) => string;
4
+ export declare const propertyVal: (properties: BleProperty[]) => number;
5
+ export declare const propertyFromVal: (val: number) => BleProperty[];
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.propertyFromVal = exports.propertyVal = exports.beautifyUUID = exports.parseUUID = void 0;
4
+ const parseUUID = (str) => {
5
+ const uuid = str.toUpperCase();
6
+ if (str.startsWith('0x')) {
7
+ const hex = uuid.slice(2);
8
+ if (hex.length === 4) {
9
+ return `0000${hex}00001000800000805F9B34FB`;
10
+ }
11
+ if (hex.length === 8) {
12
+ return `${hex}00001000800000805F9B34FB`;
13
+ }
14
+ }
15
+ else if (uuid.length === 4) {
16
+ return `0000${uuid}00001000800000805F9B34FB`;
17
+ }
18
+ else if (uuid.length === 8) {
19
+ return `${uuid}00001000800000805F9B34FB`;
20
+ }
21
+ else if (uuid.length === 32) {
22
+ return uuid;
23
+ }
24
+ else if (uuid.length === 36) {
25
+ return uuid.replace(/-/g, '');
26
+ }
27
+ throw new Error(`Invalid UUID: ${uuid}`);
28
+ };
29
+ exports.parseUUID = parseUUID;
30
+ const beautifyUUID = (str, withX = false) => {
31
+ const uuid = (0, exports.parseUUID)(str);
32
+ const parts = [
33
+ uuid.substring(0, 8),
34
+ uuid.substring(8, 12),
35
+ uuid.substring(12, 16),
36
+ uuid.substring(16, 20),
37
+ uuid.substring(20),
38
+ ];
39
+ if (uuid.substring(8) === '00001000800000805F9B34FB') {
40
+ let short;
41
+ if (parts[0].startsWith('0000')) {
42
+ short = parts[0].substring(4);
43
+ }
44
+ else {
45
+ short = parts[0];
46
+ }
47
+ return withX ? `0x${short}` : short;
48
+ }
49
+ return parts.join('-');
50
+ };
51
+ exports.beautifyUUID = beautifyUUID;
52
+ const propertyVal = (properties) => {
53
+ let res = 0;
54
+ if (properties.includes('read'))
55
+ res |= 0x01;
56
+ if (properties.includes('write'))
57
+ res |= 0x02;
58
+ if (properties.includes('notify'))
59
+ res |= 0x04;
60
+ return res;
61
+ };
62
+ exports.propertyVal = propertyVal;
63
+ const propertyFromVal = (val) => {
64
+ const res = [];
65
+ if (val & 0x01)
66
+ res.push('read');
67
+ if (val & 0x02)
68
+ res.push('write');
69
+ if (val & 0x04)
70
+ res.push('notify');
71
+ return res;
72
+ };
73
+ exports.propertyFromVal = propertyFromVal;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const antv2_1 = require("../antv2");
6
+ const adapter_factory_1 = __importDefault(require("../antv2/factories/adapter-factory"));
4
7
  const ble_1 = require("../ble");
5
8
  const serial_1 = require("../serial");
6
9
  const Simulator_1 = require("../simulator/Simulator");
@@ -8,7 +11,8 @@ const device_1 = require("../types/device");
8
11
  class AdapterFactory {
9
12
  static reset() {
10
13
  AdapterFactory.adapters = [];
11
- ble_1.BleAdapterFactory.getInstance().instances = [];
14
+ ble_1.BleAdapterFactory.getInstance('ble').instances = [];
15
+ ble_1.BleAdapterFactory.getInstance('wifi').instances = [];
12
16
  }
13
17
  static create(settings, props) {
14
18
  const adapters = AdapterFactory.adapters;
@@ -23,6 +27,7 @@ class AdapterFactory {
23
27
  if (existing)
24
28
  return existing;
25
29
  const ifaceName = typeof settings.interface === 'string' ? settings.interface : settings.interface.getName();
30
+ console.log(`creating adapter for ${ifaceName}`);
26
31
  let adapter;
27
32
  switch (ifaceName) {
28
33
  case device_1.INTERFACE.SERIAL:
@@ -30,10 +35,17 @@ class AdapterFactory {
30
35
  adapter = serial_1.SerialAdapterFactory.getInstance().createInstance(settings, props);
31
36
  break;
32
37
  case device_1.INTERFACE.ANT:
33
- adapter = antv2_1.AntAdapterFactory.getInstance().createInstance(settings, props);
38
+ adapter = adapter_factory_1.default.getInstance().createInstance(settings, props);
34
39
  break;
35
40
  case device_1.INTERFACE.BLE:
36
- adapter = ble_1.BleAdapterFactory.getInstance().createInstance(settings, props);
41
+ adapter = ble_1.BleAdapterFactory.getInstance('ble').createInstance(settings, props);
42
+ break;
43
+ case device_1.INTERFACE.DC:
44
+ {
45
+ const factory = ble_1.BleAdapterFactory.getInstance('wifi');
46
+ console.log('creating wifi adapter for direct connect', factory);
47
+ adapter = ble_1.BleAdapterFactory.getInstance('wifi').createInstance(settings, props);
48
+ }
37
49
  break;
38
50
  case device_1.INTERFACE.SIMULATOR:
39
51
  adapter = new Simulator_1.Simulator(settings, props);
@@ -2,6 +2,7 @@ import { InterfaceProps } from "../types/interface";
2
2
  import { SerialInterface } from "../serial";
3
3
  import AntInterface from "../antv2/base/interface";
4
4
  import { BleInterface } from "../ble";
5
+ import DirectConnectInterface from "../direct-connect/base/interface";
5
6
  export default class InterfaceFactory {
6
- static create(ifaceName: string, props?: InterfaceProps): AntInterface | BleInterface | SerialInterface;
7
+ static create(ifaceName: string, props?: InterfaceProps): AntInterface | BleInterface | SerialInterface | DirectConnectInterface;
7
8
  }
@@ -7,20 +7,23 @@ const serial_1 = require("../serial");
7
7
  const interface_1 = __importDefault(require("../antv2/base/interface"));
8
8
  const device_1 = require("../types/device");
9
9
  const ble_1 = require("../ble");
10
+ const interface_2 = __importDefault(require("../direct-connect/base/interface"));
10
11
  class InterfaceFactory {
11
12
  static create(ifaceName, props) {
12
13
  switch (ifaceName) {
13
14
  case device_1.INTERFACE.SERIAL:
14
15
  case device_1.INTERFACE.TCPIP:
15
- const serialProps = (props || {});
16
- serialProps.ifaceName = ifaceName;
17
- return serial_1.SerialInterface.getInstance(serialProps);
16
+ {
17
+ const serialProps = (props || {});
18
+ serialProps.ifaceName = ifaceName;
19
+ return serial_1.SerialInterface.getInstance(serialProps);
20
+ }
18
21
  case device_1.INTERFACE.ANT:
19
- const antProps = props;
20
- return interface_1.default.getInstance(antProps);
22
+ return interface_1.default.getInstance(props);
21
23
  case device_1.INTERFACE.BLE:
22
- const bleProps = props;
23
- return ble_1.BleInterface.getInstance(bleProps);
24
+ return ble_1.BleInterface.getInstance(props);
25
+ case device_1.INTERFACE.DC:
26
+ return interface_2.default.getInstance(props);
24
27
  }
25
28
  }
26
29
  }