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
@@ -0,0 +1,12 @@
1
+ import { EmptyBody, TDCBody, TDCResponse } from "../types";
2
+ import { Message } from "./message";
3
+ export type TDCCharacteristicNotification = TDCResponse<TDCCharacteristicNotificationBody>;
4
+ export interface TDCCharacteristicNotificationBody extends TDCBody {
5
+ characteristicUUID: string;
6
+ characteristicData: Uint8Array;
7
+ }
8
+ export declare class CharacteristicNotificationMessage extends Message<EmptyBody, TDCCharacteristicNotificationBody> {
9
+ constructor(seqNum?: number);
10
+ buildResponseBody(body: TDCCharacteristicNotificationBody): Buffer;
11
+ parseResponseBody(body: Buffer): TDCCharacteristicNotificationBody;
12
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CharacteristicNotificationMessage = void 0;
4
+ const consts_1 = require("../consts");
5
+ const message_1 = require("./message");
6
+ class CharacteristicNotificationMessage extends message_1.Message {
7
+ constructor(seqNum) {
8
+ super(consts_1.DC_MESSAGE_CHARACTERISTIC_NOTIFICATION);
9
+ }
10
+ buildResponseBody(body) {
11
+ return Buffer.concat([Buffer.from(body.characteristicUUID, "hex"),
12
+ Buffer.from(body.characteristicData)]);
13
+ }
14
+ parseResponseBody(body) {
15
+ const characteristicUUID = Buffer.from(body.subarray(0, 16)).toString("hex");
16
+ const characteristicData = body.subarray(16, body.length);
17
+ return {
18
+ characteristicUUID,
19
+ characteristicData,
20
+ };
21
+ }
22
+ }
23
+ exports.CharacteristicNotificationMessage = CharacteristicNotificationMessage;
@@ -0,0 +1,22 @@
1
+ import { BleProperty } from "../../ble/types";
2
+ import { TDCBody, TDCRequest, TDCResponse } from "../types";
3
+ import { Message } from "./message";
4
+ export type TDCDiscoverCharacteristicsRequest = TDCRequest<TDCDiscoverCharacteristicsRequestBody>;
5
+ export type TDCDiscoverCharacteristicsResponse = TDCResponse<TDCDiscoverCharacteristicsResponseBody>;
6
+ export interface TDCDiscoverCharacteristicsRequestBody extends TDCBody {
7
+ serviceUUID: string;
8
+ }
9
+ export interface TDCDiscoverCharacteristicsResponseBody extends TDCBody {
10
+ serviceUUID: string;
11
+ characteristicDefinitions: Array<{
12
+ characteristicUUID: string;
13
+ properties: BleProperty[];
14
+ }>;
15
+ }
16
+ export declare class DiscoverCharacteristicsMessage extends Message<TDCDiscoverCharacteristicsRequestBody, TDCDiscoverCharacteristicsResponseBody> {
17
+ constructor();
18
+ parseRequestBody(body: Buffer): TDCDiscoverCharacteristicsRequestBody;
19
+ buildRequestBody(body: TDCDiscoverCharacteristicsRequestBody): Buffer;
20
+ buildResponseBody(body: TDCDiscoverCharacteristicsResponseBody): Buffer;
21
+ parseResponseBody(body: Buffer): TDCDiscoverCharacteristicsResponseBody;
22
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiscoverCharacteristicsMessage = void 0;
4
+ const utils_1 = require("../../ble/utils");
5
+ const consts_1 = require("../consts");
6
+ const message_1 = require("./message");
7
+ class DiscoverCharacteristicsMessage extends message_1.Message {
8
+ constructor() {
9
+ super(consts_1.DC_MESSAGE_DISCOVER_CHARACTERISTICS);
10
+ }
11
+ parseRequestBody(body) {
12
+ const serviceUUID = body.subarray(0, 16).toString("hex");
13
+ return {
14
+ serviceUUID,
15
+ };
16
+ }
17
+ buildRequestBody(body) {
18
+ return Buffer.from(body.serviceUUID, "hex");
19
+ }
20
+ buildResponseBody(body) {
21
+ const serviceUUIDBuffer = Buffer.from(body.serviceUUID, "hex");
22
+ const characteristicBuffers = body.characteristicDefinitions.map((charDef) => Buffer.concat([
23
+ Buffer.from(charDef.characteristicUUID, "hex"),
24
+ Buffer.from([(0, utils_1.propertyVal)(charDef.properties)]),
25
+ ]));
26
+ return Buffer.concat([serviceUUIDBuffer, ...characteristicBuffers]);
27
+ }
28
+ parseResponseBody(body) {
29
+ const length = body.length;
30
+ const serviceUUID = body.subarray(0, 16).toString("hex");
31
+ const characteristicDefinitions = [];
32
+ for (let i = 16; i < length; i += 17) {
33
+ const characteristicUUID = Buffer.from(body.subarray(i, i + 16)).toString("hex");
34
+ const properties = (0, utils_1.propertyFromVal)(body.readUInt8(i + 16));
35
+ characteristicDefinitions.push({ characteristicUUID, properties });
36
+ }
37
+ return {
38
+ serviceUUID,
39
+ characteristicDefinitions,
40
+ };
41
+ }
42
+ }
43
+ exports.DiscoverCharacteristicsMessage = DiscoverCharacteristicsMessage;
@@ -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,21 @@
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;
21
+ export declare const RC: (code: any) => string;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RC = 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;
91
+ const RC = (code) => {
92
+ switch (code) {
93
+ case consts_1.DC_RC_REQUEST_COMPLETED_SUCCESSFULLY: return 'success';
94
+ case consts_1.DC_RC_UNKNOWN_MESSAGE_TYPE: return 'Unknown Message Type';
95
+ case consts_1.DC_RC_UNEXPECTED_ERROR: return 'Unexpected Error';
96
+ case consts_1.DC_RC_SERVICE_NOT_FOUND: return 'Service Not Found';
97
+ case consts_1.DC_RC_CHARACTERISTIC_NOT_FOUND: return 'Characteristic Not Found';
98
+ case consts_1.DC_RC_CHARACTERISTIC_OPERATION_NOT_SUPPORTED: return 'Characteristic Operation Not Supported';
99
+ case consts_1.DC_RC_CHARACTERISTIC_WRITE_FAILED_INVALID_SIZE: return 'Characteristic Write Failed';
100
+ case consts_1.DC_RC_UNKNOWN_PROTOCOL_VERSION: return 'Unknown Protocol Version';
101
+ default:
102
+ return `Unknown (${code})`;
103
+ }
104
+ };
105
+ exports.RC = RC;
@@ -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[];