brilliantsole 0.0.26 → 0.0.28

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 (215) hide show
  1. package/README.md +16 -10
  2. package/assets/3d/anchor.glb +0 -0
  3. package/assets/3d/coin.glb +0 -0
  4. package/assets/3d/glasses.glb +0 -0
  5. package/assets/3d/rightHand.glb +0 -0
  6. package/assets/audio/bounceMedium.wav +0 -0
  7. package/assets/audio/bounceStrong.wav +0 -0
  8. package/assets/audio/bounceWeak.wav +0 -0
  9. package/assets/audio/coin.wav +0 -0
  10. package/assets/audio/getUp.wav +0 -0
  11. package/assets/audio/grab.wav +0 -0
  12. package/assets/audio/kick.wav +0 -0
  13. package/assets/audio/platterFadeIn old.wav +0 -0
  14. package/assets/audio/platterFadeIn.wav +0 -0
  15. package/assets/audio/platterFadeOut.wav +0 -0
  16. package/assets/audio/punch.wav +0 -0
  17. package/assets/audio/punchSqueak.wav +0 -0
  18. package/assets/audio/purr.wav +0 -0
  19. package/assets/audio/purrFadeOut.wav +0 -0
  20. package/assets/audio/release.wav +0 -0
  21. package/assets/audio/splat.wav +0 -0
  22. package/assets/audio/stomp.wav +0 -0
  23. package/assets/images/ukaton-pressure-0.svg +9 -0
  24. package/assets/images/ukaton-pressure-1.svg +9 -0
  25. package/assets/images/ukaton-pressure-10.svg +9 -0
  26. package/assets/images/ukaton-pressure-11.svg +9 -0
  27. package/assets/images/ukaton-pressure-12.svg +9 -0
  28. package/assets/images/ukaton-pressure-13.svg +9 -0
  29. package/assets/images/ukaton-pressure-14.svg +9 -0
  30. package/assets/images/ukaton-pressure-15.svg +9 -0
  31. package/assets/images/ukaton-pressure-2.svg +9 -0
  32. package/assets/images/ukaton-pressure-3.svg +9 -0
  33. package/assets/images/ukaton-pressure-4.svg +9 -0
  34. package/assets/images/ukaton-pressure-5.svg +9 -0
  35. package/assets/images/ukaton-pressure-6.svg +9 -0
  36. package/assets/images/ukaton-pressure-7.svg +9 -0
  37. package/assets/images/ukaton-pressure-8.svg +9 -0
  38. package/assets/images/ukaton-pressure-9.svg +9 -0
  39. package/assets/images/ukaton-right-insole.svg +798 -0
  40. package/build/brilliantsole.cjs +2870 -882
  41. package/build/brilliantsole.cjs.map +1 -1
  42. package/build/brilliantsole.js +2477 -782
  43. package/build/brilliantsole.js.map +1 -1
  44. package/build/brilliantsole.ls.js +2260 -592
  45. package/build/brilliantsole.ls.js.map +1 -1
  46. package/build/brilliantsole.min.js +1 -1
  47. package/build/brilliantsole.min.js.map +1 -1
  48. package/build/brilliantsole.module.d.ts +302 -116
  49. package/build/brilliantsole.module.js +2468 -782
  50. package/build/brilliantsole.module.js.map +1 -1
  51. package/build/brilliantsole.module.min.d.ts +302 -116
  52. package/build/brilliantsole.module.min.js +1 -1
  53. package/build/brilliantsole.module.min.js.map +1 -1
  54. package/build/brilliantsole.node.module.d.ts +295 -113
  55. package/build/brilliantsole.node.module.js +2860 -882
  56. package/build/brilliantsole.node.module.js.map +1 -1
  57. package/build/dts/BS-output.d.ts +10 -0
  58. package/build/dts/BS.d.ts +21 -9
  59. package/build/dts/CameraManager.d.ts +72 -0
  60. package/build/dts/Device.d.ts +53 -16
  61. package/build/dts/DeviceInformationManager.d.ts +4 -4
  62. package/build/dts/DeviceManager.d.ts +3 -0
  63. package/build/dts/FileTransferManager.d.ts +18 -8
  64. package/build/dts/InformationManager.d.ts +8 -5
  65. package/build/dts/TfliteManager.d.ts +22 -2
  66. package/build/dts/WifiManager.d.ts +61 -0
  67. package/build/dts/connection/BaseConnectionManager.d.ts +37 -3
  68. package/build/dts/connection/ClientConnectionManager.d.ts +11 -2
  69. package/build/dts/connection/bluetooth/BluetoothConnectionManager.d.ts +1 -0
  70. package/build/dts/connection/bluetooth/NobleConnectionManager.d.ts +3 -1
  71. package/build/dts/connection/bluetooth/WebBluetoothConnectionManager.d.ts +2 -0
  72. package/build/dts/connection/bluetooth/bluetoothUUIDs.d.ts +2 -2
  73. package/build/dts/connection/udp/UDPConnectionManager.d.ts +28 -0
  74. package/build/dts/connection/webSocket/WebSocketConnectionManager.d.ts +25 -0
  75. package/build/dts/devicePair/DevicePair.d.ts +14 -10
  76. package/build/dts/devicePair/DevicePairPressureSensorDataManager.d.ts +8 -4
  77. package/build/dts/devicePair/DevicePairSensorDataManager.d.ts +2 -2
  78. package/build/dts/scanner/BaseScanner.d.ts +4 -1
  79. package/build/dts/scanner/NobleScanner.d.ts +2 -1
  80. package/build/dts/sensor/MotionSensorDataManager.d.ts +5 -2
  81. package/build/dts/sensor/SensorDataManager.d.ts +5 -4
  82. package/build/dts/server/BaseClient.d.ts +6 -3
  83. package/build/dts/server/ServerUtils.d.ts +1 -1
  84. package/build/dts/server/websocket/WebSocketUtils.d.ts +1 -1
  85. package/build/dts/utils/CenterOfPressureHelper.d.ts +2 -2
  86. package/build/dts/utils/Console.d.ts +2 -0
  87. package/build/dts/utils/MathUtils.d.ts +2 -0
  88. package/build/dts/utils/ThrottleUtils.d.ts +2 -0
  89. package/build/dts/vibration/VibrationManager.d.ts +19 -2
  90. package/build/index.d.ts +299 -113
  91. package/build/index.node.d.ts +292 -110
  92. package/examples/3d/scene.html +19 -5
  93. package/examples/3d/script.js +90 -17
  94. package/examples/3d-generic/index.html +144 -0
  95. package/examples/3d-generic/script.js +266 -0
  96. package/examples/balance/script.js +2 -1
  97. package/examples/basic/index.html +232 -18
  98. package/examples/basic/script.js +746 -106
  99. package/examples/bottango/index.html +11 -1
  100. package/examples/bottango/script.js +2 -2
  101. package/examples/center-of-pressure/index.html +114 -114
  102. package/examples/center-of-pressure/script.js +1 -1
  103. package/examples/device-pair/index.html +58 -58
  104. package/examples/device-pair/script.js +12 -8
  105. package/examples/edge-impulse/script.js +135 -44
  106. package/examples/edge-impulse-test/README.md +11 -0
  107. package/examples/edge-impulse-test/edge-impulse-standalone.js +7228 -0
  108. package/examples/edge-impulse-test/edge-impulse-standalone.wasm +0 -0
  109. package/examples/edge-impulse-test/index.html +75 -0
  110. package/examples/edge-impulse-test/run-impulse.js +135 -0
  111. package/examples/edge-impulse-test/script.js +200 -0
  112. package/examples/gloves/edge-impulse-standalone.js +7228 -0
  113. package/examples/gloves/edge-impulse-standalone.wasm +0 -0
  114. package/examples/gloves/index.html +119 -0
  115. package/examples/gloves/run-impulse.js +135 -0
  116. package/examples/gloves/scene.html +124 -0
  117. package/examples/gloves/script.js +931 -0
  118. package/examples/graph/index.html +11 -1
  119. package/examples/graph/script.js +94 -37
  120. package/examples/pressure/index.html +180 -12
  121. package/examples/pressure/script.js +144 -7
  122. package/examples/punch/index.html +135 -0
  123. package/examples/punch/punch.tflite +0 -0
  124. package/examples/punch/script.js +169 -0
  125. package/examples/recording/index.html +191 -183
  126. package/examples/server/index.html +109 -23
  127. package/examples/server/script.js +322 -111
  128. package/examples/ukaton-firmware-update/index.html +20 -0
  129. package/examples/ukaton-firmware-update/manifest.json +11 -0
  130. package/examples/ukaton-firmware-update/merged-firmware.bin +0 -0
  131. package/examples/utils/aframe/aframe-master.min.js +2 -0
  132. package/examples/utils/aframe/bs-vibration.js +150 -0
  133. package/examples/utils/aframe/force-pushable.js +80 -0
  134. package/examples/utils/aframe/grabbable-anchor.js +46 -0
  135. package/examples/utils/aframe/grabbable-listener.js +31 -0
  136. package/examples/utils/aframe/grabbable-physics-body.js +190 -0
  137. package/examples/utils/aframe/grow-shrink.js +25 -0
  138. package/examples/utils/aframe/hand-punch.js +119 -0
  139. package/examples/utils/aframe/my-obb-collider.js +293 -0
  140. package/examples/utils/aframe/occlude-hand-tracking-controls.js +47 -0
  141. package/examples/utils/aframe/occlude-mesh.js +42 -0
  142. package/examples/utils/aframe/palm-up-detector.js +47 -0
  143. package/examples/utils/aframe/shadow-material.js +20 -0
  144. package/examples/utils/aframe/soft-shadow-light.js +9 -0
  145. package/examples/webxr/script.js +3 -3
  146. package/examples/webxr-2/assets/3d/soccerBall.glb +0 -0
  147. package/examples/webxr-2/assets/audio/shellBounce.wav +0 -0
  148. package/examples/webxr-2/assets/audio/shellHit.wav +0 -0
  149. package/examples/webxr-2/assets/audio/shellKick.wav +0 -0
  150. package/examples/webxr-2/assets/audio/soccerBounce.wav +0 -0
  151. package/examples/webxr-2/assets/audio/soccerKick.mp3 +0 -0
  152. package/examples/webxr-2/assets/images/shellTexture.png +0 -0
  153. package/examples/webxr-2/components/bs-ankle.js +337 -0
  154. package/examples/webxr-2/components/coin.js +84 -0
  155. package/examples/webxr-2/components/custom-wrap.js +17 -0
  156. package/examples/webxr-2/components/goomba.js +3250 -0
  157. package/examples/webxr-2/components/init-shell-material.js +215 -0
  158. package/examples/webxr-2/components/platter.js +172 -0
  159. package/examples/webxr-2/components/shell.js +374 -0
  160. package/examples/webxr-2/components/soccer-ball.js +250 -0
  161. package/examples/webxr-2/components/squashed-goomba.js +249 -0
  162. package/examples/webxr-2/edge-impulse-standalone.js +7228 -0
  163. package/examples/webxr-2/edge-impulse-standalone.wasm +0 -0
  164. package/examples/webxr-2/index.html +996 -0
  165. package/examples/webxr-2/kick.tflite +0 -0
  166. package/examples/webxr-2/kick2.tflite +0 -0
  167. package/examples/webxr-2/run-impulse.js +135 -0
  168. package/examples/webxr-2/script.js +384 -0
  169. package/package.json +2 -1
  170. package/src/.prettierrc +4 -0
  171. package/src/BS.ts +66 -9
  172. package/src/CameraManager.ts +499 -0
  173. package/src/Device.ts +620 -92
  174. package/src/DeviceInformationManager.ts +22 -11
  175. package/src/DeviceManager.ts +94 -25
  176. package/src/FileTransferManager.ts +146 -21
  177. package/src/FirmwareManager.ts +1 -1
  178. package/src/InformationManager.ts +62 -20
  179. package/src/TfliteManager.ts +172 -26
  180. package/src/WifiManager.ts +323 -0
  181. package/src/connection/BaseConnectionManager.ts +145 -30
  182. package/src/connection/ClientConnectionManager.ts +47 -11
  183. package/src/connection/bluetooth/BluetoothConnectionManager.ts +14 -3
  184. package/src/connection/bluetooth/NobleConnectionManager.ts +155 -42
  185. package/src/connection/bluetooth/WebBluetoothConnectionManager.ts +104 -35
  186. package/src/connection/bluetooth/bluetoothUUIDs.ts +40 -13
  187. package/src/connection/udp/UDPConnectionManager.ts +356 -0
  188. package/src/connection/websocket/WebSocketConnectionManager.ts +282 -0
  189. package/src/devicePair/DevicePair.ts +145 -49
  190. package/src/devicePair/DevicePairPressureSensorDataManager.ts +72 -24
  191. package/src/devicePair/DevicePairSensorDataManager.ts +5 -5
  192. package/src/scanner/BaseScanner.ts +49 -11
  193. package/src/scanner/NobleScanner.ts +81 -17
  194. package/src/sensor/BarometerSensorDataManager.ts +1 -1
  195. package/src/sensor/MotionSensorDataManager.ts +22 -7
  196. package/src/sensor/PressureSensorDataManager.ts +47 -13
  197. package/src/sensor/SensorConfigurationManager.ts +75 -24
  198. package/src/sensor/SensorDataManager.ts +107 -26
  199. package/src/server/BaseClient.ts +192 -37
  200. package/src/server/BaseServer.ts +201 -43
  201. package/src/server/ServerUtils.ts +39 -9
  202. package/src/server/udp/UDPServer.ts +74 -23
  203. package/src/server/udp/UDPUtils.ts +9 -2
  204. package/src/server/websocket/WebSocketClient.ts +30 -9
  205. package/src/server/websocket/WebSocketServer.ts +1 -1
  206. package/src/server/websocket/WebSocketUtils.ts +4 -2
  207. package/src/utils/CenterOfPressureHelper.ts +5 -5
  208. package/src/utils/Console.ts +62 -9
  209. package/src/utils/MathUtils.ts +31 -1
  210. package/src/utils/ParseUtils.ts +25 -6
  211. package/src/utils/ThrottleUtils.ts +62 -0
  212. package/src/utils/Timer.ts +1 -1
  213. package/src/utils/checksum.ts +1 -1
  214. package/src/utils/mcumgr.js +1 -1
  215. package/src/vibration/VibrationManager.ts +166 -40
@@ -1,5 +1,29 @@
1
- export declare const ConnectionTypes: readonly ["webBluetooth", "noble", "client"];
1
+ export declare const ConnectionTypes: readonly ["webBluetooth", "noble", "client", "webSocket", "udp"];
2
2
  export type ConnectionType = (typeof ConnectionTypes)[number];
3
+ export declare const ClientConnectionTypes: readonly ["noble", "webSocket", "udp"];
4
+ export type ClientConnectionType = (typeof ClientConnectionTypes)[number];
5
+ interface BaseConnectOptions {
6
+ type: "client" | "webBluetooth" | "webSocket" | "udp";
7
+ }
8
+ export interface WebBluetoothConnectOptions extends BaseConnectOptions {
9
+ type: "webBluetooth";
10
+ }
11
+ interface BaseWifiConnectOptions extends BaseConnectOptions {
12
+ ipAddress: string;
13
+ }
14
+ export interface ClientConnectOptions extends BaseConnectOptions {
15
+ type: "client";
16
+ subType?: "noble" | "webSocket" | "udp";
17
+ }
18
+ export interface WebSocketConnectOptions extends BaseWifiConnectOptions {
19
+ type: "webSocket";
20
+ isWifiSecure?: boolean;
21
+ }
22
+ export interface UDPConnectOptions extends BaseWifiConnectOptions {
23
+ type: "udp";
24
+ receivePort?: number;
25
+ }
26
+ export type ConnectOptions = WebBluetoothConnectOptions | WebSocketConnectOptions | UDPConnectOptions | ClientConnectOptions;
3
27
  export declare const ConnectionStatuses: readonly ["notConnected", "connecting", "connected", "disconnecting"];
4
28
  export type ConnectionStatus = (typeof ConnectionStatuses)[number];
5
29
  export declare const ConnectionEventTypes: readonly ["notConnected", "connecting", "connected", "disconnecting", "connectionStatus", "isConnected"];
@@ -20,7 +44,7 @@ export interface TxMessage {
20
44
  type: TxRxMessageType;
21
45
  data?: ArrayBuffer;
22
46
  }
23
- export declare const TxRxMessageTypes: readonly ["isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime", "getSensorConfiguration", "setSensorConfiguration", "getPressurePositions", "getSensorScalars", "sensorData", "triggerVibration", "getTfliteName", "setTfliteName", "getTfliteTask", "setTfliteTask", "getTfliteSampleRate", "setTfliteSampleRate", "getTfliteSensorTypes", "setTfliteSensorTypes", "tfliteIsReady", "getTfliteCaptureDelay", "setTfliteCaptureDelay", "getTfliteThreshold", "setTfliteThreshold", "getTfliteInferencingEnabled", "setTfliteInferencingEnabled", "tfliteInference", "maxFileLength", "getFileType", "setFileType", "getFileLength", "setFileLength", "getFileChecksum", "setFileChecksum", "setFileTransferCommand", "fileTransferStatus", "getFileBlock", "setFileBlock", "fileBytesTransferred"];
47
+ export declare const TxRxMessageTypes: readonly ["isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime", "getSensorConfiguration", "setSensorConfiguration", "getPressurePositions", "getSensorScalars", "sensorData", "getVibrationLocations", "triggerVibration", "getFileTypes", "maxFileLength", "getFileType", "setFileType", "getFileLength", "setFileLength", "getFileChecksum", "setFileChecksum", "setFileTransferCommand", "fileTransferStatus", "getFileBlock", "setFileBlock", "fileBytesTransferred", "getTfliteName", "setTfliteName", "getTfliteTask", "setTfliteTask", "getTfliteSampleRate", "setTfliteSampleRate", "getTfliteSensorTypes", "setTfliteSensorTypes", "tfliteIsReady", "getTfliteCaptureDelay", "setTfliteCaptureDelay", "getTfliteThreshold", "setTfliteThreshold", "getTfliteInferencingEnabled", "setTfliteInferencingEnabled", "tfliteInference", "isWifiAvailable", "getWifiSSID", "setWifiSSID", "getWifiPassword", "setWifiPassword", "getWifiConnectionEnabled", "setWifiConnectionEnabled", "isWifiConnected", "ipAddress", "isWifiSecure", "cameraStatus", "cameraCommand", "getCameraConfiguration", "setCameraConfiguration", "cameraData"];
24
48
  export type TxRxMessageType = (typeof TxRxMessageTypes)[number];
25
49
  export declare const SMPMessageTypes: readonly ["smp"];
26
50
  export type SMPMessageType = (typeof SMPMessageTypes)[number];
@@ -28,7 +52,7 @@ export declare const BatteryLevelMessageTypes: readonly ["batteryLevel"];
28
52
  export type BatteryLevelMessageType = (typeof BatteryLevelMessageTypes)[number];
29
53
  export declare const MetaConnectionMessageTypes: readonly ["rx", "tx"];
30
54
  export type MetaConnectionMessageType = (typeof MetaConnectionMessageTypes)[number];
31
- export declare const ConnectionMessageTypes: readonly ["batteryLevel", "manufacturerName", "modelNumber", "softwareRevision", "hardwareRevision", "firmwareRevision", "pnpId", "serialNumber", "rx", "tx", "isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime", "getSensorConfiguration", "setSensorConfiguration", "getPressurePositions", "getSensorScalars", "sensorData", "triggerVibration", "getTfliteName", "setTfliteName", "getTfliteTask", "setTfliteTask", "getTfliteSampleRate", "setTfliteSampleRate", "getTfliteSensorTypes", "setTfliteSensorTypes", "tfliteIsReady", "getTfliteCaptureDelay", "setTfliteCaptureDelay", "getTfliteThreshold", "setTfliteThreshold", "getTfliteInferencingEnabled", "setTfliteInferencingEnabled", "tfliteInference", "maxFileLength", "getFileType", "setFileType", "getFileLength", "setFileLength", "getFileChecksum", "setFileChecksum", "setFileTransferCommand", "fileTransferStatus", "getFileBlock", "setFileBlock", "fileBytesTransferred", "smp"];
55
+ export declare const ConnectionMessageTypes: readonly ["batteryLevel", "manufacturerName", "modelNumber", "hardwareRevision", "firmwareRevision", "softwareRevision", "pnpId", "serialNumber", "rx", "tx", "isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime", "getSensorConfiguration", "setSensorConfiguration", "getPressurePositions", "getSensorScalars", "sensorData", "getVibrationLocations", "triggerVibration", "getFileTypes", "maxFileLength", "getFileType", "setFileType", "getFileLength", "setFileLength", "getFileChecksum", "setFileChecksum", "setFileTransferCommand", "fileTransferStatus", "getFileBlock", "setFileBlock", "fileBytesTransferred", "getTfliteName", "setTfliteName", "getTfliteTask", "setTfliteTask", "getTfliteSampleRate", "setTfliteSampleRate", "getTfliteSensorTypes", "setTfliteSensorTypes", "tfliteIsReady", "getTfliteCaptureDelay", "setTfliteCaptureDelay", "getTfliteThreshold", "setTfliteThreshold", "getTfliteInferencingEnabled", "setTfliteInferencingEnabled", "tfliteInference", "isWifiAvailable", "getWifiSSID", "setWifiSSID", "getWifiPassword", "setWifiPassword", "getWifiConnectionEnabled", "setWifiConnectionEnabled", "isWifiConnected", "ipAddress", "isWifiSecure", "cameraStatus", "cameraCommand", "getCameraConfiguration", "setCameraConfiguration", "cameraData", "smp"];
32
56
  export type ConnectionMessageType = (typeof ConnectionMessageTypes)[number];
33
57
  export type ConnectionStatusCallback = (status: ConnectionStatus) => void;
34
58
  export type MessageReceivedCallback = (messageType: ConnectionMessageType, dataView: DataView) => void;
@@ -42,21 +66,31 @@ declare abstract class BaseConnectionManager {
42
66
  protected get baseConstructor(): typeof BaseConnectionManager;
43
67
  static get isSupported(): boolean;
44
68
  get isSupported(): boolean;
69
+ get canUpdateFirmware(): boolean;
45
70
  static type: ConnectionType;
46
71
  get type(): ConnectionType;
47
72
  constructor();
48
73
  get status(): "notConnected" | "connecting" | "connected" | "disconnecting";
49
74
  protected set status(newConnectionStatus: "notConnected" | "connecting" | "connected" | "disconnecting");
50
75
  get isConnected(): boolean;
76
+ get isAvailable(): boolean;
77
+ /** @throws {Error} if connected */
78
+ protected assertIsNotConnected(): void;
79
+ /** @throws {Error} if not connected */
80
+ protected assertIsConnected(): void;
81
+ /** @throws {Error} if not connected or is disconnecting */
82
+ assertIsConnectedAndNotDisconnecting(): void;
51
83
  connect(): Promise<void>;
52
84
  get canReconnect(): boolean;
53
85
  reconnect(): Promise<void>;
54
86
  disconnect(): Promise<void>;
55
87
  sendSmpMessage(data: ArrayBuffer): Promise<void>;
56
88
  sendTxMessages(messages: TxMessage[] | undefined, sendImmediately?: boolean): Promise<void>;
89
+ protected defaultMtu: number;
57
90
  mtu?: number;
58
91
  sendTxData(data: ArrayBuffer): Promise<void>;
59
92
  parseRxMessage(dataView: DataView): void;
60
93
  clear(): void;
94
+ remove(): void;
61
95
  }
62
96
  export default BaseConnectionManager;
@@ -1,21 +1,30 @@
1
- import BaseConnectionManager, { ConnectionType } from "./BaseConnectionManager.ts";
1
+ import BaseConnectionManager, { ConnectionType, ClientConnectionType } from "./BaseConnectionManager.ts";
2
2
  import { ClientDeviceMessage } from "../server/ServerUtils.ts";
3
+ import BaseClient from "../server/BaseClient.ts";
4
+ import { DiscoveredDevice } from "../BS.ts";
3
5
  export type SendClientMessageCallback = (...messages: ClientDeviceMessage[]) => void;
6
+ export type SendClientConnectMessageCallback = (connectionType?: ClientConnectionType) => void;
4
7
  declare class ClientConnectionManager extends BaseConnectionManager {
5
8
  #private;
6
9
  static get isSupported(): boolean;
7
10
  static get type(): ConnectionType;
11
+ subType?: ClientConnectionType;
12
+ get canUpdateFirmware(): boolean;
13
+ client: BaseClient;
14
+ discoveredDevice: DiscoveredDevice;
8
15
  get bluetoothId(): string;
9
16
  set bluetoothId(newBluetoothId: string);
10
17
  get isConnected(): boolean;
11
18
  set isConnected(newIsConnected: boolean);
19
+ get isAvailable(): boolean;
12
20
  connect(): Promise<void>;
13
21
  disconnect(): Promise<void>;
14
22
  get canReconnect(): boolean;
15
23
  reconnect(): Promise<void>;
16
24
  sendClientMessage: SendClientMessageCallback;
17
- sendClientConnectMessage: Function;
25
+ sendClientConnectMessage: SendClientConnectMessageCallback;
18
26
  sendClientDisconnectMessage: Function;
27
+ sendRequiredDeviceInformationMessage: Function;
19
28
  sendSmpMessage(data: ArrayBuffer): Promise<void>;
20
29
  sendTxData(data: ArrayBuffer): Promise<void>;
21
30
  onClientMessage(dataView: DataView): void;
@@ -1,6 +1,7 @@
1
1
  import BaseConnectionManager from "../BaseConnectionManager.ts";
2
2
  import { BluetoothCharacteristicName } from "./bluetoothUUIDs.ts";
3
3
  declare abstract class BluetoothConnectionManager extends BaseConnectionManager {
4
+ get isAvailable(): boolean;
4
5
  isInRange: boolean;
5
6
  protected onCharacteristicValueChanged(characteristicName: BluetoothCharacteristicName, dataView: DataView): void;
6
7
  protected writeCharacteristic(characteristicName: BluetoothCharacteristicName, data: ArrayBuffer): Promise<void>;
@@ -20,6 +20,7 @@ interface NobleCharacteristic extends noble.Characteristic, HasConnectionManager
20
20
  declare class NobleConnectionManager extends BluetoothConnectionManager {
21
21
  #private;
22
22
  get bluetoothId(): string;
23
+ get canUpdateFirmware(): boolean;
23
24
  static get isSupported(): boolean;
24
25
  static get type(): ConnectionType;
25
26
  get isConnected(): boolean;
@@ -29,7 +30,7 @@ declare class NobleConnectionManager extends BluetoothConnectionManager {
29
30
  get canReconnect(): boolean;
30
31
  reconnect(): Promise<void>;
31
32
  get noblePeripheral(): NoblePeripheral | undefined;
32
- set noblePeripheral(newNoblePeripheral: NoblePeripheral);
33
+ set noblePeripheral(newNoblePeripheral: NoblePeripheral | undefined);
33
34
  onNoblePeripheralConnect(noblePeripheral: NoblePeripheral): Promise<void>;
34
35
  onNoblePeripheralDisconnect(noblePeripheral: NoblePeripheral): Promise<void>;
35
36
  onNoblePeripheralRssiUpdate(noblePeripheral: NoblePeripheral, rssi: number): Promise<void>;
@@ -38,5 +39,6 @@ declare class NobleConnectionManager extends BluetoothConnectionManager {
38
39
  onNobleCharacteristicData(characteristic: NobleCharacteristic, data: Buffer, isNotification: boolean): void;
39
40
  onNobleCharacteristicWrite(characteristic: NobleCharacteristic): void;
40
41
  onNobleCharacteristicNotify(characteristic: NobleCharacteristic, isSubscribed: boolean): void;
42
+ remove(): void;
41
43
  }
42
44
  export default NobleConnectionManager;
@@ -5,6 +5,7 @@ import { ConnectionType } from "../BaseConnectionManager.ts";
5
5
  declare class WebBluetoothConnectionManager extends BluetoothConnectionManager {
6
6
  #private;
7
7
  get bluetoothId(): string;
8
+ get canUpdateFirmware(): boolean;
8
9
  static get isSupported(): boolean;
9
10
  static get type(): ConnectionType;
10
11
  get device(): BluetoothDevice | undefined;
@@ -16,5 +17,6 @@ declare class WebBluetoothConnectionManager extends BluetoothConnectionManager {
16
17
  writeCharacteristic(characteristicName: BluetoothCharacteristicName, data: ArrayBuffer): Promise<void>;
17
18
  get canReconnect(): boolean;
18
19
  reconnect(): Promise<void>;
20
+ remove(): void;
19
21
  }
20
22
  export default WebBluetoothConnectionManager;
@@ -1,6 +1,6 @@
1
1
  export type BluetoothServiceName = "deviceInformation" | "battery" | "main" | "smp";
2
- import { DeviceInformationMessageType } from "../../DeviceInformationManager.ts";
3
- export type BluetoothCharacteristicName = DeviceInformationMessageType | "batteryLevel" | "rx" | "tx" | "smp";
2
+ import { DeviceInformationType } from "../../DeviceInformationManager.ts";
3
+ export type BluetoothCharacteristicName = DeviceInformationType | "batteryLevel" | "rx" | "tx" | "smp";
4
4
  export declare const serviceUUIDs: BluetoothServiceUUID[];
5
5
  export declare const optionalServiceUUIDs: BluetoothServiceUUID[];
6
6
  export declare const allServiceUUIDs: BluetoothServiceUUID[];
@@ -0,0 +1,28 @@
1
+ import BaseConnectionManager, { ConnectionType } from "../BaseConnectionManager.ts";
2
+ import * as dgram from "dgram";
3
+ export declare const UDPSendPort = 3000;
4
+ export declare const UDPPingInterval = 2000;
5
+ declare class UDPConnectionManager extends BaseConnectionManager {
6
+ #private;
7
+ get bluetoothId(): string;
8
+ defaultMtu: number;
9
+ constructor(ipAddress: string, bluetoothId?: string, receivePort?: number);
10
+ get isAvailable(): boolean;
11
+ static get isSupported(): boolean;
12
+ static get type(): ConnectionType;
13
+ get ipAddress(): string;
14
+ set ipAddress(newIpAddress: string);
15
+ get receivePort(): number | undefined;
16
+ set receivePort(newReceivePort: number | undefined);
17
+ get socket(): dgram.Socket | undefined;
18
+ set socket(newSocket: dgram.Socket | undefined);
19
+ sendSmpMessage(data: ArrayBuffer): Promise<void>;
20
+ sendTxData(data: ArrayBuffer): Promise<void>;
21
+ connect(): Promise<void>;
22
+ disconnect(): Promise<void>;
23
+ get canReconnect(): boolean;
24
+ reconnect(): Promise<void>;
25
+ clear(): void;
26
+ remove(): void;
27
+ }
28
+ export default UDPConnectionManager;
@@ -0,0 +1,25 @@
1
+ import BaseConnectionManager, { ConnectionType } from "../BaseConnectionManager.ts";
2
+ declare class WebSocketConnectionManager extends BaseConnectionManager {
3
+ #private;
4
+ get bluetoothId(): string;
5
+ defaultMtu: number;
6
+ constructor(ipAddress: string, isSecure?: boolean, bluetoothId?: string);
7
+ get isAvailable(): boolean;
8
+ static get isSupported(): boolean;
9
+ static get type(): ConnectionType;
10
+ get webSocket(): WebSocket | undefined;
11
+ set webSocket(newWebSocket: WebSocket | undefined);
12
+ get ipAddress(): string;
13
+ set ipAddress(newIpAddress: string);
14
+ get isSecure(): boolean;
15
+ set isSecure(newIsSecure: boolean);
16
+ get url(): string;
17
+ connect(): Promise<void>;
18
+ disconnect(): Promise<void>;
19
+ get canReconnect(): boolean;
20
+ reconnect(): Promise<void>;
21
+ sendSmpMessage(data: ArrayBuffer): Promise<void>;
22
+ sendTxData(data: ArrayBuffer): Promise<void>;
23
+ remove(): void;
24
+ }
25
+ export default WebSocketConnectionManager;
@@ -1,13 +1,13 @@
1
1
  import EventDispatcher, { BoundEventListeners, Event, EventListenerMap, EventMap } from "../utils/EventDispatcher.ts";
2
2
  import Device, { DeviceEventType, DeviceEventMessages } from "../Device.ts";
3
- import { InsoleSide } from "../InformationManager.ts";
3
+ import { Side } from "../InformationManager.ts";
4
4
  import { VibrationConfiguration } from "../vibration/VibrationManager.ts";
5
5
  import { SensorConfiguration } from "../sensor/SensorConfigurationManager.ts";
6
6
  import { DevicePairSensorDataEventMessages } from "./DevicePairSensorDataManager.ts";
7
7
  import { AddPrefixToInterfaceKeys, ExtendInterfaceValues } from "../utils/TypeScriptUtils.ts";
8
8
  interface BaseDevicePairDeviceEventMessage {
9
9
  device: Device;
10
- side: InsoleSide;
10
+ side: Side;
11
11
  }
12
12
  type DevicePairDeviceEventMessages = ExtendInterfaceValues<AddPrefixToInterfaceKeys<DeviceEventMessages, "device">, BaseDevicePairDeviceEventMessage>;
13
13
  export declare const DevicePairConnectionEventTypes: readonly ["isConnected"];
@@ -17,7 +17,7 @@ export interface DevicePairConnectionEventMessages {
17
17
  isConnected: boolean;
18
18
  };
19
19
  }
20
- export declare const DevicePairEventTypes: readonly ["isConnected", "pressure", "sensorData", ...("deviceOrientation" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage")[]];
20
+ export declare const DevicePairEventTypes: readonly ["isConnected", "pressure", "sensorData", ...("deviceOrientation" | "deviceConnected" | "deviceIsConnected" | "devicePressure" | "deviceGetFileTypes" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceTapDetector" | "deviceBarometer" | "deviceCameraStatus" | "deviceGetCameraConfiguration" | "deviceCameraImageProgress" | "deviceCameraImage" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "deviceSoftwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceIsWifiAvailable" | "deviceGetWifiSSID" | "deviceGetWifiPassword" | "deviceIsWifiConnected" | "deviceIpAddress" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage" | "deviceGetEnableWifiConnection")[]];
21
21
  export type DevicePairEventType = (typeof DevicePairEventTypes)[number];
22
22
  export type DevicePairEventMessages = DevicePairConnectionEventMessages & DevicePairSensorDataEventMessages & DevicePairDeviceEventMessages;
23
23
  export type DevicePairEventDispatcher = EventDispatcher<DevicePair, DevicePairEventType, DevicePairEventMessages>;
@@ -25,38 +25,42 @@ export type DevicePairEventMap = EventMap<DevicePair, DeviceEventType, DevicePai
25
25
  export type DevicePairEventListenerMap = EventListenerMap<DevicePair, DeviceEventType, DevicePairEventMessages>;
26
26
  export type DevicePairEvent = Event<DevicePair, DeviceEventType, DevicePairEventMessages>;
27
27
  export type BoundDevicePairEventListeners = BoundEventListeners<DevicePair, DeviceEventType, DevicePairEventMessages>;
28
+ export declare const DevicePairTypes: readonly ["insoles", "gloves"];
29
+ export type DevicePairType = (typeof DevicePairTypes)[number];
28
30
  declare class DevicePair {
29
31
  #private;
30
- constructor();
32
+ constructor(type: DevicePairType);
31
33
  get sides(): readonly ["left", "right"];
32
- get addEventListener(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage">(type: T, listener: (event: {
34
+ get type(): "insoles" | "gloves";
35
+ get addEventListener(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "devicePressure" | "deviceGetFileTypes" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceTapDetector" | "deviceBarometer" | "deviceCameraStatus" | "deviceGetCameraConfiguration" | "deviceCameraImageProgress" | "deviceCameraImage" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "deviceSoftwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceIsWifiAvailable" | "deviceGetWifiSSID" | "deviceGetWifiPassword" | "deviceIsWifiConnected" | "deviceIpAddress" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage" | "deviceGetEnableWifiConnection">(type: T, listener: (event: {
33
36
  type: T;
34
37
  target: DevicePair;
35
38
  message: DevicePairEventMessages[T];
36
39
  }) => void, options?: {
37
40
  once?: boolean;
38
41
  }) => void;
39
- get removeEventListener(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage">(type: T, listener: (event: {
42
+ get removeEventListener(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "devicePressure" | "deviceGetFileTypes" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceTapDetector" | "deviceBarometer" | "deviceCameraStatus" | "deviceGetCameraConfiguration" | "deviceCameraImageProgress" | "deviceCameraImage" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "deviceSoftwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceIsWifiAvailable" | "deviceGetWifiSSID" | "deviceGetWifiPassword" | "deviceIsWifiConnected" | "deviceIpAddress" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage" | "deviceGetEnableWifiConnection">(type: T, listener: (event: {
40
43
  type: T;
41
44
  target: DevicePair;
42
45
  message: DevicePairEventMessages[T];
43
46
  }) => void) => void;
44
- get waitForEvent(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage">(type: T) => Promise<{
47
+ get waitForEvent(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "devicePressure" | "deviceGetFileTypes" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceTapDetector" | "deviceBarometer" | "deviceCameraStatus" | "deviceGetCameraConfiguration" | "deviceCameraImageProgress" | "deviceCameraImage" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "deviceSoftwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceIsWifiAvailable" | "deviceGetWifiSSID" | "deviceGetWifiPassword" | "deviceIsWifiConnected" | "deviceIpAddress" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage" | "deviceGetEnableWifiConnection">(type: T) => Promise<{
45
48
  type: T;
46
49
  target: DevicePair;
47
50
  message: DevicePairEventMessages[T];
48
51
  }>;
49
- get removeEventListeners(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage">(type: T) => void;
52
+ get removeEventListeners(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "devicePressure" | "deviceGetFileTypes" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceTapDetector" | "deviceBarometer" | "deviceCameraStatus" | "deviceGetCameraConfiguration" | "deviceCameraImageProgress" | "deviceCameraImage" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "deviceSoftwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceIsWifiAvailable" | "deviceGetWifiSSID" | "deviceGetWifiPassword" | "deviceIsWifiConnected" | "deviceIpAddress" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage" | "deviceGetEnableWifiConnection">(type: T) => void;
50
53
  get removeAllEventListeners(): () => void;
51
54
  get left(): Device | undefined;
52
55
  get right(): Device | undefined;
53
56
  get isConnected(): boolean;
54
57
  get isPartiallyConnected(): boolean;
55
58
  get isHalfConnected(): boolean;
56
- assignInsole(device: Device): Device | undefined;
59
+ assignDevice(device: Device): Device | undefined;
57
60
  setSensorConfiguration(sensorConfiguration: SensorConfiguration): Promise<void>;
58
61
  resetPressureRange(): void;
59
62
  triggerVibration(vibrationConfigurations: VibrationConfiguration[], sendImmediately?: boolean): Promise<PromiseSettledResult<void | undefined>[]>;
60
- static get shared(): DevicePair;
63
+ static get insoles(): DevicePair;
64
+ static get gloves(): DevicePair;
61
65
  }
62
66
  export default DevicePair;
@@ -1,12 +1,15 @@
1
- import { PressureData } from "../sensor/PressureSensorDataManager.ts";
1
+ import { PressureData, PressureSensorValue } from "../sensor/PressureSensorDataManager.ts";
2
2
  import { CenterOfPressure } from "../utils/CenterOfPressureHelper.ts";
3
- import { InsoleSide } from "../InformationManager.ts";
3
+ import { Side } from "../InformationManager.ts";
4
4
  import { DeviceEventMap } from "../Device.ts";
5
5
  export type DevicePairRawPressureData = {
6
- [insoleSide in InsoleSide]: PressureData;
6
+ [side in Side]: PressureData;
7
7
  };
8
8
  export interface DevicePairPressureData {
9
- rawSum: number;
9
+ sensors: {
10
+ [key in Side]: PressureSensorValue[];
11
+ };
12
+ scaledSum: number;
10
13
  normalizedSum: number;
11
14
  center?: CenterOfPressure;
12
15
  normalizedCenter?: CenterOfPressure;
@@ -19,6 +22,7 @@ export interface DevicePairPressureDataEventMessages {
19
22
  }
20
23
  declare class DevicePairPressureSensorDataManager {
21
24
  #private;
25
+ constructor();
22
26
  resetPressureRange(): void;
23
27
  onDevicePressureData(event: DeviceEventMap["pressure"]): DevicePairPressureData | undefined;
24
28
  }
@@ -1,5 +1,5 @@
1
1
  import DevicePairPressureSensorDataManager, { DevicePairPressureDataEventMessages } from "./DevicePairPressureSensorDataManager.ts";
2
- import { InsoleSide } from "../InformationManager.ts";
2
+ import { Side } from "../InformationManager.ts";
3
3
  import { DeviceEventMap } from "../Device.ts";
4
4
  import EventDispatcher from "../utils/EventDispatcher.ts";
5
5
  import DevicePair from "./DevicePair.ts";
@@ -9,7 +9,7 @@ export type DevicePairSensorType = (typeof DevicePairSensorTypes)[number];
9
9
  export declare const DevicePairSensorDataEventTypes: readonly ["pressure", "sensorData"];
10
10
  export type DevicePairSensorDataEventType = (typeof DevicePairSensorDataEventTypes)[number];
11
11
  export type DevicePairSensorDataTimestamps = {
12
- [insoleSide in InsoleSide]: number;
12
+ [side in Side]: number;
13
13
  };
14
14
  interface BaseDevicePairSensorDataEventMessage {
15
15
  timestamps: DevicePairSensorDataTimestamps;
@@ -1,5 +1,6 @@
1
1
  import EventDispatcher, { BoundEventListeners, Event, EventMap } from "../utils/EventDispatcher.ts";
2
2
  import { DeviceType } from "../InformationManager.ts";
3
+ import { ConnectionType } from "../connection/BaseConnectionManager.ts";
3
4
  export declare const ScannerEventTypes: readonly ["isScanningAvailable", "isScanning", "discoveredDevice", "expiredDiscoveredDevice"];
4
5
  export type ScannerEventType = (typeof ScannerEventTypes)[number];
5
6
  export interface DiscoveredDevice {
@@ -7,6 +8,8 @@ export interface DiscoveredDevice {
7
8
  name: string;
8
9
  deviceType: DeviceType;
9
10
  rssi: number;
11
+ ipAddress?: string;
12
+ isWifiSecure?: boolean;
10
13
  }
11
14
  interface ScannerDiscoveredDeviceEventMessage {
12
15
  discoveredDevice: DiscoveredDevice;
@@ -59,7 +62,7 @@ declare abstract class BaseScanner {
59
62
  get discoveredDevices(): Readonly<DiscoveredDevicesMap>;
60
63
  get discoveredDevicesArray(): DiscoveredDevice[];
61
64
  static get DiscoveredDeviceExpirationTimeout(): number;
62
- connectToDevice(deviceId: string): Promise<void>;
65
+ connectToDevice(deviceId: string, connectionType?: ConnectionType): Promise<void>;
63
66
  get canReset(): boolean;
64
67
  reset(): void;
65
68
  }
@@ -1,4 +1,5 @@
1
1
  import BaseScanner from "./BaseScanner.ts";
2
+ import { ClientConnectionType } from "../connection/BaseConnectionManager.ts";
2
3
  /** NODE_END */
3
4
  export declare const NobleStates: readonly ["unknown", "resetting", "unsupported", "unauthorized", "poweredOff", "poweredOn"];
4
5
  export type NobleState = (typeof NobleStates)[number];
@@ -12,6 +13,6 @@ declare class NobleScanner extends BaseScanner {
12
13
  stopScan(): void;
13
14
  get canReset(): boolean;
14
15
  reset(): void;
15
- connectToDevice(deviceId: string): Promise<void>;
16
+ connectToDevice(deviceId: string, connectionType?: ClientConnectionType): Promise<void>;
16
17
  }
17
18
  export default NobleScanner;
@@ -1,6 +1,6 @@
1
- export declare const MotionSensorTypes: readonly ["acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation"];
1
+ export declare const MotionSensorTypes: readonly ["acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation", "tapDetector"];
2
2
  export type MotionSensorType = (typeof MotionSensorTypes)[number];
3
- export declare const ContinuousMotionTypes: readonly ["acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation"];
3
+ export declare const ContinuousMotionTypes: readonly ["acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation"];
4
4
  export type ContinuousMotionType = (typeof ContinuousMotionTypes)[number];
5
5
  import { Vector3, Quaternion, Euler } from "../utils/MathUtils.ts";
6
6
  import { ValueOf } from "../utils/TypeScriptUtils.ts";
@@ -56,6 +56,9 @@ export interface MotionSensorDataEventMessages {
56
56
  deviceOrientation: {
57
57
  deviceOrientation: DeviceOrientation;
58
58
  };
59
+ tapDetector: {
60
+ tapDetector: Object;
61
+ };
59
62
  }
60
63
  export type MotionSensorDataEventMessage = ValueOf<MotionSensorDataEventMessages>;
61
64
  declare class MotionSensorDataManager {
@@ -4,13 +4,14 @@ import BarometerSensorDataManager, { BarometerSensorDataEventMessages } from "./
4
4
  import EventDispatcher from "../utils/EventDispatcher.ts";
5
5
  import Device from "../Device.ts";
6
6
  import { AddKeysAsPropertyToInterface, ExtendInterfaceValues, ValueOf } from "../utils/TypeScriptUtils.ts";
7
- export declare const SensorTypes: readonly ["pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation", "barometer"];
7
+ export declare const SensorTypes: readonly ["pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation", "tapDetector", "barometer", "camera"];
8
8
  export type SensorType = (typeof SensorTypes)[number];
9
- export declare const ContinuousSensorTypes: readonly ["pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "barometer"];
9
+ export declare const ContinuousSensorTypes: readonly ["pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "barometer"];
10
10
  export type ContinuousSensorType = (typeof ContinuousSensorTypes)[number];
11
11
  export declare const SensorDataMessageTypes: readonly ["getPressurePositions", "getSensorScalars", "sensorData"];
12
12
  export type SensorDataMessageType = (typeof SensorDataMessageTypes)[number];
13
- export declare const SensorDataEventTypes: readonly ["getPressurePositions", "getSensorScalars", "sensorData", "pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation", "barometer"];
13
+ export declare const RequiredPressureMessageTypes: SensorDataMessageType[];
14
+ export declare const SensorDataEventTypes: readonly ["getPressurePositions", "getSensorScalars", "sensorData", "pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation", "tapDetector", "barometer", "camera"];
14
15
  export type SensorDataEventType = (typeof SensorDataEventTypes)[number];
15
16
  interface BaseSensorDataEventMessage {
16
17
  timestamp: number;
@@ -31,7 +32,7 @@ declare class SensorDataManager {
31
32
  static AssertValidSensorType(sensorType: SensorType): void;
32
33
  static AssertValidSensorTypeEnum(sensorTypeEnum: number): void;
33
34
  eventDispatcher: SensorDataEventDispatcher;
34
- get dispatchEvent(): <T extends "pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "orientation" | "activity" | "stepCounter" | "stepDetector" | "deviceOrientation" | "barometer" | "getPressurePositions" | "getSensorScalars" | "sensorData">(type: T, message: SensorDataEventMessages[T]) => void;
35
+ get dispatchEvent(): <T extends "pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "orientation" | "activity" | "stepCounter" | "stepDetector" | "deviceOrientation" | "tapDetector" | "barometer" | "camera" | "getPressurePositions" | "getSensorScalars" | "sensorData">(type: T, message: SensorDataEventMessages[T]) => void;
35
36
  parseMessage(messageType: SensorDataMessageType, dataView: DataView): void;
36
37
  parseScalars(dataView: DataView): void;
37
38
  private parseData;
@@ -2,6 +2,7 @@ import { ServerMessage, ClientDeviceMessage } from "./ServerUtils.ts";
2
2
  import EventDispatcher, { BoundEventListeners, Event } from "../utils/EventDispatcher.ts";
3
3
  import Device from "../Device.ts";
4
4
  import { DiscoveredDevice, DiscoveredDevicesMap, ScannerEventMessages } from "../scanner/BaseScanner.ts";
5
+ import { ClientConnectionType } from "../connection/BaseConnectionManager.ts";
5
6
  export declare const ClientConnectionStatuses: readonly ["notConnected", "connecting", "connected", "disconnecting"];
6
7
  export type ClientConnectionStatus = (typeof ClientConnectionStatuses)[number];
7
8
  export declare const ClientEventTypes: readonly ["notConnected", "connecting", "connected", "disconnecting", "connectionStatus", "isConnected", "isScanningAvailable", "isScanning", "discoveredDevice", "expiredDiscoveredDevice"];
@@ -62,6 +63,7 @@ declare abstract class BaseClient {
62
63
  protected get _connectionStatus(): "notConnected" | "connecting" | "connected" | "disconnecting";
63
64
  protected set _connectionStatus(newConnectionStatus: "notConnected" | "connecting" | "connected" | "disconnecting");
64
65
  get connectionStatus(): "notConnected" | "connecting" | "connected" | "disconnecting";
66
+ protected _sendRequiredMessages(): void;
65
67
  protected parseMessage(dataView: DataView): void;
66
68
  get isScanningAvailable(): boolean;
67
69
  protected requestIsScanningAvailable(): void;
@@ -72,14 +74,15 @@ declare abstract class BaseClient {
72
74
  get discoveredDevices(): Readonly<DiscoveredDevicesMap>;
73
75
  protected onDiscoveredDevice(discoveredDevice: DiscoveredDevice): void;
74
76
  requestDiscoveredDevices(): void;
75
- connectToDevice(bluetoothId: string): Device;
76
- protected requestConnectionToDevice(bluetoothId: string): Device;
77
- protected sendConnectToDeviceMessage(bluetoothId: string): void;
77
+ connectToDevice(bluetoothId: string, connectionType?: ClientConnectionType): Device;
78
+ protected requestConnectionToDevice(bluetoothId: string, connectionType?: ClientConnectionType): Device;
79
+ protected sendConnectToDeviceMessage(bluetoothId: string, connectionType?: ClientConnectionType): void;
78
80
  createDevice(bluetoothId: string): Device;
79
81
  protected onConnectedBluetoothDeviceIds(bluetoothIds: string[]): void;
80
82
  disconnectFromDevice(bluetoothId: string): void;
81
83
  protected requestDisconnectionFromDevice(bluetoothId: string): Device;
82
84
  protected sendDisconnectFromDeviceMessage(bluetoothId: string): void;
83
85
  protected sendDeviceMessage(bluetoothId: string, ...messages: ClientDeviceMessage[]): void;
86
+ protected sendRequiredDeviceInformationMessage(bluetoothId: string): void;
84
87
  }
85
88
  export default BaseClient;
@@ -1,6 +1,6 @@
1
1
  import { ConnectionMessageType } from "../connection/BaseConnectionManager.ts";
2
2
  import { DeviceEventType } from "../Device.ts";
3
- export declare const ServerMessageTypes: readonly ["isScanningAvailable", "isScanning", "startScan", "stopScan", "discoveredDevice", "discoveredDevices", "expiredDiscoveredDevice", "connectToDevice", "disconnectFromDevice", "connectedDevices", "deviceMessage"];
3
+ export declare const ServerMessageTypes: readonly ["isScanningAvailable", "isScanning", "startScan", "stopScan", "discoveredDevice", "discoveredDevices", "expiredDiscoveredDevice", "connectToDevice", "disconnectFromDevice", "connectedDevices", "deviceMessage", "requiredDeviceInformation"];
4
4
  export type ServerMessageType = (typeof ServerMessageTypes)[number];
5
5
  export declare const DeviceMessageTypes: readonly ["connectionStatus", "batteryLevel", "deviceInformation", "rx", "smp"];
6
6
  export type DeviceMessageType = (typeof DeviceMessageTypes)[number];
@@ -1,5 +1,5 @@
1
1
  import { Message } from "../ServerUtils.ts";
2
- export declare const webSocketPingTimeout = 30000000;
2
+ export declare const webSocketPingTimeout = 30000;
3
3
  export declare const webSocketReconnectTimeout = 3000;
4
4
  export declare const WebSocketMessageTypes: readonly ["ping", "pong", "serverMessage"];
5
5
  export type WebSocketMessageType = (typeof WebSocketMessageTypes)[number];
@@ -9,7 +9,7 @@ declare class CenterOfPressureHelper {
9
9
  #private;
10
10
  reset(): void;
11
11
  update(centerOfPressure: CenterOfPressure): void;
12
- getNormalization(centerOfPressure: CenterOfPressure): CenterOfPressure;
13
- updateAndGetNormalization(centerOfPressure: CenterOfPressure): Vector2;
12
+ getNormalization(centerOfPressure: CenterOfPressure, weightByRange: boolean): CenterOfPressure;
13
+ updateAndGetNormalization(centerOfPressure: CenterOfPressure, weightByRange: boolean): Vector2;
14
14
  }
15
15
  export default CenterOfPressureHelper;
@@ -26,6 +26,8 @@ declare class Console {
26
26
  assertTypeWithError(value: any, type: string): void;
27
27
  /** @throws {Error} if value's type doesn't match */
28
28
  assertEnumWithError(value: string, enumeration: readonly string[]): void;
29
+ /** @throws {Error} if value is not within some range */
30
+ assertRangeWithError(name: string, value: number, min: number, max: number): void;
29
31
  }
30
32
  export declare function createConsole(type: string, levelFlags?: ConsoleLevelFlags): Console;
31
33
  /** @throws {Error} if no console with type is found */
@@ -1,3 +1,4 @@
1
+ import { PressureSensorPosition } from "../sensor/PressureSensorDataManager.ts";
1
2
  export declare function getInterpolation(value: number, min: number, max: number, span: number): number;
2
3
  export declare const Uint16Max: number;
3
4
  export declare function parseTimestamp(dataView: DataView, byteOffset: number): number;
@@ -19,3 +20,4 @@ export interface Euler {
19
20
  pitch: number;
20
21
  roll: number;
21
22
  }
23
+ export declare function computeVoronoiWeights(points: PressureSensorPosition[], sampleCount?: number): number[];
@@ -0,0 +1,2 @@
1
+ export declare function throttle<T extends (...args: any[]) => void>(fn: T, interval: number, trailing?: boolean): (...args: Parameters<T>) => void;
2
+ export declare function debounce<T extends (...args: any[]) => void>(fn: T, interval: number, callImmediately?: boolean): (...args: Parameters<T>) => void;