sportident.js 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (664) hide show
  1. package/README.md +1 -27
  2. package/SiCard/BaseSiCard.d.ts +35 -0
  3. package/SiCard/BaseSiCard.d.ts.map +1 -0
  4. package/SiCard/BaseSiCard.js +99 -0
  5. package/SiCard/BaseSiCard.js.map +1 -0
  6. package/SiCard/BaseSiCard.test.d.ts +2 -0
  7. package/SiCard/BaseSiCard.test.d.ts.map +1 -0
  8. package/SiCard/BaseSiCard.test.js +190 -0
  9. package/SiCard/BaseSiCard.test.js.map +1 -0
  10. package/SiCard/IRaceResultData.d.ts +17 -0
  11. package/SiCard/IRaceResultData.d.ts.map +1 -0
  12. package/SiCard/IRaceResultData.js +3 -0
  13. package/SiCard/IRaceResultData.js.map +1 -0
  14. package/SiCard/ISiCard.d.ts +24 -0
  15. package/SiCard/ISiCard.d.ts.map +1 -0
  16. package/SiCard/ISiCard.js +3 -0
  17. package/SiCard/ISiCard.js.map +1 -0
  18. package/SiCard/ISiCardExamples.d.ts +9 -0
  19. package/SiCard/ISiCardExamples.d.ts.map +1 -0
  20. package/SiCard/ISiCardExamples.js +3 -0
  21. package/SiCard/ISiCardExamples.js.map +1 -0
  22. package/{src/SiCard/index.ts → SiCard/index.d.ts} +1 -0
  23. package/SiCard/index.d.ts.map +1 -0
  24. package/SiCard/index.js +21 -0
  25. package/SiCard/index.js.map +1 -0
  26. package/SiCard/raceResultTools.d.ts +25 -0
  27. package/SiCard/raceResultTools.d.ts.map +1 -0
  28. package/SiCard/raceResultTools.js +155 -0
  29. package/SiCard/raceResultTools.js.map +1 -0
  30. package/SiCard/raceResultTools.test.d.ts +2 -0
  31. package/SiCard/raceResultTools.test.d.ts.map +1 -0
  32. package/SiCard/raceResultTools.test.js +255 -0
  33. package/SiCard/raceResultTools.test.js.map +1 -0
  34. package/SiCard/types/FCard.d.ts +7 -0
  35. package/SiCard/types/FCard.d.ts.map +1 -0
  36. package/SiCard/types/FCard.js +49 -0
  37. package/SiCard/types/FCard.js.map +1 -0
  38. package/SiCard/types/FCard.test.d.ts +2 -0
  39. package/SiCard/types/FCard.test.d.ts.map +1 -0
  40. package/SiCard/types/FCard.test.js +18 -0
  41. package/SiCard/types/FCard.test.js.map +1 -0
  42. package/SiCard/types/ModernSiCard.d.ts +48 -0
  43. package/SiCard/types/ModernSiCard.d.ts.map +1 -0
  44. package/SiCard/types/ModernSiCard.js +238 -0
  45. package/SiCard/types/ModernSiCard.js.map +1 -0
  46. package/SiCard/types/ModernSiCard.test.d.ts +2 -0
  47. package/SiCard/types/ModernSiCard.test.d.ts.map +1 -0
  48. package/SiCard/types/ModernSiCard.test.js +214 -0
  49. package/SiCard/types/ModernSiCard.test.js.map +1 -0
  50. package/SiCard/types/PCard.d.ts +7 -0
  51. package/SiCard/types/PCard.d.ts.map +1 -0
  52. package/SiCard/types/PCard.js +49 -0
  53. package/SiCard/types/PCard.js.map +1 -0
  54. package/SiCard/types/PCard.test.d.ts +2 -0
  55. package/SiCard/types/PCard.test.d.ts.map +1 -0
  56. package/SiCard/types/PCard.test.js +18 -0
  57. package/SiCard/types/PCard.test.js.map +1 -0
  58. package/SiCard/types/SIAC.d.ts +6 -0
  59. package/SiCard/types/SIAC.d.ts.map +1 -0
  60. package/SiCard/types/SIAC.js +22 -0
  61. package/SiCard/types/SIAC.js.map +1 -0
  62. package/SiCard/types/SIAC.test.d.ts +2 -0
  63. package/SiCard/types/SIAC.test.d.ts.map +1 -0
  64. package/SiCard/types/SIAC.test.js +113 -0
  65. package/SiCard/types/SIAC.test.js.map +1 -0
  66. package/SiCard/types/SiCard10.d.ts +6 -0
  67. package/SiCard/types/SiCard10.d.ts.map +1 -0
  68. package/SiCard/types/SiCard10.js +20 -0
  69. package/SiCard/types/SiCard10.js.map +1 -0
  70. package/SiCard/types/SiCard10.test.d.ts +2 -0
  71. package/SiCard/types/SiCard10.test.d.ts.map +1 -0
  72. package/SiCard/types/SiCard10.test.js +114 -0
  73. package/SiCard/types/SiCard10.test.js.map +1 -0
  74. package/SiCard/types/SiCard11.d.ts +6 -0
  75. package/SiCard/types/SiCard11.d.ts.map +1 -0
  76. package/SiCard/types/SiCard11.js +22 -0
  77. package/SiCard/types/SiCard11.js.map +1 -0
  78. package/SiCard/types/SiCard11.test.d.ts +2 -0
  79. package/SiCard/types/SiCard11.test.d.ts.map +1 -0
  80. package/SiCard/types/SiCard11.test.js +113 -0
  81. package/SiCard/types/SiCard11.test.js.map +1 -0
  82. package/SiCard/types/SiCard5.d.ts +31 -0
  83. package/SiCard/types/SiCard5.d.ts.map +1 -0
  84. package/SiCard/types/SiCard5.js +128 -0
  85. package/SiCard/types/SiCard5.js.map +1 -0
  86. package/SiCard/types/SiCard5.test.d.ts +2 -0
  87. package/SiCard/types/SiCard5.test.d.ts.map +1 -0
  88. package/SiCard/types/SiCard5.test.js +170 -0
  89. package/SiCard/types/SiCard5.test.js.map +1 -0
  90. package/SiCard/types/SiCard6.d.ts +49 -0
  91. package/SiCard/types/SiCard6.d.ts.map +1 -0
  92. package/SiCard/types/SiCard6.js +203 -0
  93. package/SiCard/types/SiCard6.js.map +1 -0
  94. package/SiCard/types/SiCard6.test.d.ts +2 -0
  95. package/SiCard/types/SiCard6.test.d.ts.map +1 -0
  96. package/SiCard/types/SiCard6.test.js +202 -0
  97. package/SiCard/types/SiCard6.test.js.map +1 -0
  98. package/SiCard/types/SiCard8.d.ts +20 -0
  99. package/SiCard/types/SiCard8.d.ts.map +1 -0
  100. package/SiCard/types/SiCard8.js +140 -0
  101. package/SiCard/types/SiCard8.js.map +1 -0
  102. package/SiCard/types/SiCard8.test.d.ts +2 -0
  103. package/SiCard/types/SiCard8.test.d.ts.map +1 -0
  104. package/SiCard/types/SiCard8.test.js +159 -0
  105. package/SiCard/types/SiCard8.test.js.map +1 -0
  106. package/SiCard/types/SiCard9.d.ts +20 -0
  107. package/SiCard/types/SiCard9.d.ts.map +1 -0
  108. package/SiCard/types/SiCard9.js +139 -0
  109. package/SiCard/types/SiCard9.js.map +1 -0
  110. package/SiCard/types/SiCard9.test.d.ts +2 -0
  111. package/SiCard/types/SiCard9.test.d.ts.map +1 -0
  112. package/SiCard/types/SiCard9.test.js +155 -0
  113. package/SiCard/types/SiCard9.test.js.map +1 -0
  114. package/SiCard/types/TCard.d.ts +7 -0
  115. package/SiCard/types/TCard.d.ts.map +1 -0
  116. package/SiCard/types/TCard.js +49 -0
  117. package/SiCard/types/TCard.js.map +1 -0
  118. package/SiCard/types/TCard.test.d.ts +2 -0
  119. package/SiCard/types/TCard.test.d.ts.map +1 -0
  120. package/SiCard/types/TCard.test.js +18 -0
  121. package/SiCard/types/TCard.test.js.map +1 -0
  122. package/{src/SiCard/types/index.ts → SiCard/types/index.d.ts} +1 -0
  123. package/SiCard/types/index.d.ts.map +1 -0
  124. package/SiCard/types/index.js +34 -0
  125. package/SiCard/types/index.js.map +1 -0
  126. package/SiCard/types/index.test.d.ts +2 -0
  127. package/SiCard/types/index.test.d.ts.map +1 -0
  128. package/SiCard/types/index.test.js +65 -0
  129. package/SiCard/types/index.test.js.map +1 -0
  130. package/SiCard/types/modernSiCardExamples.d.ts +254 -0
  131. package/SiCard/types/modernSiCardExamples.d.ts.map +1 -0
  132. package/SiCard/types/modernSiCardExamples.js +389 -0
  133. package/SiCard/types/modernSiCardExamples.js.map +1 -0
  134. package/SiCard/types/siCard5Examples.d.ts +50 -0
  135. package/SiCard/types/siCard5Examples.d.ts.map +1 -0
  136. package/SiCard/types/siCard5Examples.js +109 -0
  137. package/SiCard/types/siCard5Examples.js.map +1 -0
  138. package/SiCard/types/siCard6Examples.d.ts +190 -0
  139. package/SiCard/types/siCard6Examples.d.ts.map +1 -0
  140. package/SiCard/types/siCard6Examples.js +289 -0
  141. package/SiCard/types/siCard6Examples.js.map +1 -0
  142. package/SiCard/types/siCard8Examples.d.ts +98 -0
  143. package/SiCard/types/siCard8Examples.d.ts.map +1 -0
  144. package/SiCard/types/siCard8Examples.js +182 -0
  145. package/SiCard/types/siCard8Examples.js.map +1 -0
  146. package/SiCard/types/siCard9Examples.d.ts +98 -0
  147. package/SiCard/types/siCard9Examples.d.ts.map +1 -0
  148. package/SiCard/types/siCard9Examples.js +173 -0
  149. package/SiCard/types/siCard9Examples.js.map +1 -0
  150. package/SiDevice/INavigatorWebSerial.d.ts +62 -0
  151. package/SiDevice/INavigatorWebSerial.d.ts.map +1 -0
  152. package/SiDevice/INavigatorWebSerial.js +3 -0
  153. package/SiDevice/INavigatorWebSerial.js.map +1 -0
  154. package/SiDevice/INavigatorWebUsb.d.ts +55 -0
  155. package/SiDevice/INavigatorWebUsb.d.ts.map +1 -0
  156. package/SiDevice/INavigatorWebUsb.js +3 -0
  157. package/SiDevice/INavigatorWebUsb.js.map +1 -0
  158. package/SiDevice/ISiDevice.d.ts +42 -0
  159. package/SiDevice/ISiDevice.d.ts.map +1 -0
  160. package/SiDevice/ISiDevice.js +65 -0
  161. package/SiDevice/ISiDevice.js.map +1 -0
  162. package/SiDevice/ISiDeviceDriver.d.ts +29 -0
  163. package/SiDevice/ISiDeviceDriver.d.ts.map +1 -0
  164. package/SiDevice/ISiDeviceDriver.js +52 -0
  165. package/SiDevice/ISiDeviceDriver.js.map +1 -0
  166. package/SiDevice/SiDevice.d.ts +21 -0
  167. package/SiDevice/SiDevice.d.ts.map +1 -0
  168. package/SiDevice/SiDevice.js +156 -0
  169. package/SiDevice/SiDevice.js.map +1 -0
  170. package/SiDevice/SiDevice.test.d.ts +2 -0
  171. package/SiDevice/SiDevice.test.d.ts.map +1 -0
  172. package/SiDevice/SiDevice.test.js +366 -0
  173. package/SiDevice/SiDevice.test.js.map +1 -0
  174. package/SiDevice/WebSerialSiDeviceDriver.d.ts +31 -0
  175. package/SiDevice/WebSerialSiDeviceDriver.d.ts.map +1 -0
  176. package/SiDevice/WebSerialSiDeviceDriver.js +175 -0
  177. package/SiDevice/WebSerialSiDeviceDriver.js.map +1 -0
  178. package/SiDevice/WebUsbSiDeviceDriver.d.ts +39 -0
  179. package/SiDevice/WebUsbSiDeviceDriver.d.ts.map +1 -0
  180. package/SiDevice/WebUsbSiDeviceDriver.js +359 -0
  181. package/SiDevice/WebUsbSiDeviceDriver.js.map +1 -0
  182. package/{src/SiDevice/index.ts → SiDevice/index.d.ts} +1 -0
  183. package/SiDevice/index.d.ts.map +1 -0
  184. package/SiDevice/index.js +6 -0
  185. package/SiDevice/index.js.map +1 -0
  186. package/{src/SiDevice/testUtils/index.ts → SiDevice/testUtils/index.d.ts} +1 -0
  187. package/SiDevice/testUtils/index.d.ts.map +1 -0
  188. package/SiDevice/testUtils/index.js +8 -0
  189. package/SiDevice/testUtils/index.js.map +1 -0
  190. package/SiDevice/testUtils/testISiDeviceDriver.d.ts +8 -0
  191. package/SiDevice/testUtils/testISiDeviceDriver.d.ts.map +1 -0
  192. package/SiDevice/testUtils/testISiDeviceDriver.js +94 -0
  193. package/SiDevice/testUtils/testISiDeviceDriver.js.map +1 -0
  194. package/SiDevice/testUtils/testISiDeviceDriverWithAutodetection.d.ts +8 -0
  195. package/SiDevice/testUtils/testISiDeviceDriverWithAutodetection.d.ts.map +1 -0
  196. package/SiDevice/testUtils/testISiDeviceDriverWithAutodetection.js +95 -0
  197. package/SiDevice/testUtils/testISiDeviceDriverWithAutodetection.js.map +1 -0
  198. package/SiStation/BaseSiStation.d.ts +61 -0
  199. package/SiStation/BaseSiStation.d.ts.map +1 -0
  200. package/SiStation/BaseSiStation.js +217 -0
  201. package/SiStation/BaseSiStation.js.map +1 -0
  202. package/SiStation/BaseSiStation.test.d.ts +2 -0
  203. package/SiStation/BaseSiStation.test.d.ts.map +1 -0
  204. package/SiStation/BaseSiStation.test.js +242 -0
  205. package/SiStation/BaseSiStation.test.js.map +1 -0
  206. package/SiStation/CoupledSiStation.d.ts +14 -0
  207. package/SiStation/CoupledSiStation.d.ts.map +1 -0
  208. package/SiStation/CoupledSiStation.js +156 -0
  209. package/SiStation/CoupledSiStation.js.map +1 -0
  210. package/SiStation/CoupledSiStation.test.d.ts +2 -0
  211. package/SiStation/CoupledSiStation.test.d.ts.map +1 -0
  212. package/SiStation/CoupledSiStation.test.js +72 -0
  213. package/SiStation/CoupledSiStation.test.js.map +1 -0
  214. package/SiStation/ISiMainStation.d.ts +25 -0
  215. package/SiStation/ISiMainStation.d.ts.map +1 -0
  216. package/SiStation/ISiMainStation.js +62 -0
  217. package/SiStation/ISiMainStation.js.map +1 -0
  218. package/SiStation/ISiSendTask.d.ts +8 -0
  219. package/SiStation/ISiSendTask.d.ts.map +1 -0
  220. package/SiStation/ISiSendTask.js +14 -0
  221. package/SiStation/ISiSendTask.js.map +1 -0
  222. package/SiStation/ISiStation.d.ts +62 -0
  223. package/SiStation/ISiStation.d.ts.map +1 -0
  224. package/SiStation/ISiStation.js +76 -0
  225. package/SiStation/ISiStation.js.map +1 -0
  226. package/SiStation/ISiTargetMultiplexer.d.ts +47 -0
  227. package/SiStation/ISiTargetMultiplexer.d.ts.map +1 -0
  228. package/SiStation/ISiTargetMultiplexer.js +71 -0
  229. package/SiStation/ISiTargetMultiplexer.js.map +1 -0
  230. package/SiStation/SiMainStation.d.ts +24 -0
  231. package/SiStation/SiMainStation.d.ts.map +1 -0
  232. package/SiStation/SiMainStation.js +142 -0
  233. package/SiStation/SiMainStation.js.map +1 -0
  234. package/SiStation/SiMainStation.test.d.ts +2 -0
  235. package/SiStation/SiMainStation.test.d.ts.map +1 -0
  236. package/SiStation/SiMainStation.test.js +235 -0
  237. package/SiStation/SiMainStation.test.js.map +1 -0
  238. package/SiStation/SiSendTask.d.ts +17 -0
  239. package/SiStation/SiSendTask.d.ts.map +1 -0
  240. package/SiStation/SiSendTask.js +81 -0
  241. package/SiStation/SiSendTask.js.map +1 -0
  242. package/SiStation/SiTargetMultiplexer.d.ts +34 -0
  243. package/SiStation/SiTargetMultiplexer.d.ts.map +1 -0
  244. package/SiStation/SiTargetMultiplexer.js +254 -0
  245. package/SiStation/SiTargetMultiplexer.js.map +1 -0
  246. package/SiStation/SiTargetMultiplexer.targeting.test.d.ts +2 -0
  247. package/SiStation/SiTargetMultiplexer.targeting.test.d.ts.map +1 -0
  248. package/SiStation/SiTargetMultiplexer.targeting.test.js +138 -0
  249. package/SiStation/SiTargetMultiplexer.targeting.test.js.map +1 -0
  250. package/SiStation/SiTargetMultiplexer.test.d.ts +2 -0
  251. package/SiStation/SiTargetMultiplexer.test.d.ts.map +1 -0
  252. package/SiStation/SiTargetMultiplexer.test.js +588 -0
  253. package/SiStation/SiTargetMultiplexer.test.js.map +1 -0
  254. package/{src/SiStation/index.ts → SiStation/index.d.ts} +1 -0
  255. package/SiStation/index.d.ts.map +1 -0
  256. package/SiStation/index.js +14 -0
  257. package/SiStation/index.js.map +1 -0
  258. package/SiStation/siStationExamples.d.ts +76 -0
  259. package/SiStation/siStationExamples.d.ts.map +1 -0
  260. package/SiStation/siStationExamples.js +132 -0
  261. package/SiStation/siStationExamples.js.map +1 -0
  262. package/constants.d.ts +76 -0
  263. package/constants.d.ts.map +1 -0
  264. package/constants.js +88 -0
  265. package/constants.js.map +1 -0
  266. package/constants.test.d.ts +2 -0
  267. package/constants.test.d.ts.map +1 -0
  268. package/constants.test.js +52 -0
  269. package/constants.test.js.map +1 -0
  270. package/fakes/FakeSiCard/BaseFakeSiCard.d.ts +8 -0
  271. package/fakes/FakeSiCard/BaseFakeSiCard.d.ts.map +1 -0
  272. package/fakes/FakeSiCard/BaseFakeSiCard.js +10 -0
  273. package/fakes/FakeSiCard/BaseFakeSiCard.js.map +1 -0
  274. package/fakes/FakeSiCard/BaseFakeSiCard.test.d.ts +2 -0
  275. package/fakes/FakeSiCard/BaseFakeSiCard.test.d.ts.map +1 -0
  276. package/fakes/FakeSiCard/BaseFakeSiCard.test.js +45 -0
  277. package/fakes/FakeSiCard/BaseFakeSiCard.test.js.map +1 -0
  278. package/fakes/FakeSiCard/IFakeSiCard.d.ts +6 -0
  279. package/fakes/FakeSiCard/IFakeSiCard.d.ts.map +1 -0
  280. package/fakes/FakeSiCard/IFakeSiCard.js +3 -0
  281. package/fakes/FakeSiCard/IFakeSiCard.js.map +1 -0
  282. package/{src/fakes/FakeSiCard/index.ts → fakes/FakeSiCard/index.d.ts} +1 -0
  283. package/fakes/FakeSiCard/index.d.ts.map +1 -0
  284. package/fakes/FakeSiCard/index.js +21 -0
  285. package/fakes/FakeSiCard/index.js.map +1 -0
  286. package/fakes/FakeSiCard/types/FakeModernSiCard.d.ts +15 -0
  287. package/fakes/FakeSiCard/types/FakeModernSiCard.d.ts.map +1 -0
  288. package/fakes/FakeSiCard/types/FakeModernSiCard.js +73 -0
  289. package/fakes/FakeSiCard/types/FakeModernSiCard.js.map +1 -0
  290. package/fakes/FakeSiCard/types/FakeModernSiCard.test.d.ts +2 -0
  291. package/fakes/FakeSiCard/types/FakeModernSiCard.test.d.ts.map +1 -0
  292. package/fakes/FakeSiCard/types/FakeModernSiCard.test.js +88 -0
  293. package/fakes/FakeSiCard/types/FakeModernSiCard.test.js.map +1 -0
  294. package/fakes/FakeSiCard/types/FakeSIAC.d.ts +13 -0
  295. package/fakes/FakeSiCard/types/FakeSIAC.d.ts.map +1 -0
  296. package/fakes/FakeSiCard/types/FakeSIAC.js +17 -0
  297. package/fakes/FakeSiCard/types/FakeSIAC.js.map +1 -0
  298. package/fakes/FakeSiCard/types/FakeSiCard10.d.ts +13 -0
  299. package/fakes/FakeSiCard/types/FakeSiCard10.d.ts.map +1 -0
  300. package/fakes/FakeSiCard/types/FakeSiCard10.js +17 -0
  301. package/fakes/FakeSiCard/types/FakeSiCard10.js.map +1 -0
  302. package/fakes/FakeSiCard/types/FakeSiCard11.d.ts +13 -0
  303. package/fakes/FakeSiCard/types/FakeSiCard11.d.ts.map +1 -0
  304. package/fakes/FakeSiCard/types/FakeSiCard11.js +17 -0
  305. package/fakes/FakeSiCard/types/FakeSiCard11.js.map +1 -0
  306. package/fakes/FakeSiCard/types/FakeSiCard5.d.ts +15 -0
  307. package/fakes/FakeSiCard/types/FakeSiCard5.d.ts.map +1 -0
  308. package/fakes/FakeSiCard/types/FakeSiCard5.js +70 -0
  309. package/fakes/FakeSiCard/types/FakeSiCard5.js.map +1 -0
  310. package/fakes/FakeSiCard/types/FakeSiCard5.test.d.ts +2 -0
  311. package/fakes/FakeSiCard/types/FakeSiCard5.test.d.ts.map +1 -0
  312. package/fakes/FakeSiCard/types/FakeSiCard5.test.js +71 -0
  313. package/fakes/FakeSiCard/types/FakeSiCard5.test.js.map +1 -0
  314. package/fakes/FakeSiCard/types/FakeSiCard6.d.ts +15 -0
  315. package/fakes/FakeSiCard/types/FakeSiCard6.d.ts.map +1 -0
  316. package/fakes/FakeSiCard/types/FakeSiCard6.js +73 -0
  317. package/fakes/FakeSiCard/types/FakeSiCard6.js.map +1 -0
  318. package/fakes/FakeSiCard/types/FakeSiCard6.test.d.ts +2 -0
  319. package/fakes/FakeSiCard/types/FakeSiCard6.test.d.ts.map +1 -0
  320. package/fakes/FakeSiCard/types/FakeSiCard6.test.js +88 -0
  321. package/fakes/FakeSiCard/types/FakeSiCard6.test.js.map +1 -0
  322. package/fakes/FakeSiCard/types/FakeSiCard8.d.ts +12 -0
  323. package/fakes/FakeSiCard/types/FakeSiCard8.d.ts.map +1 -0
  324. package/fakes/FakeSiCard/types/FakeSiCard8.js +16 -0
  325. package/fakes/FakeSiCard/types/FakeSiCard8.js.map +1 -0
  326. package/fakes/FakeSiCard/types/FakeSiCard9.d.ts +12 -0
  327. package/fakes/FakeSiCard/types/FakeSiCard9.d.ts.map +1 -0
  328. package/fakes/FakeSiCard/types/FakeSiCard9.js +16 -0
  329. package/fakes/FakeSiCard/types/FakeSiCard9.js.map +1 -0
  330. package/{src/fakes/FakeSiCard/types/index.ts → fakes/FakeSiCard/types/index.d.ts} +1 -0
  331. package/fakes/FakeSiCard/types/index.d.ts.map +1 -0
  332. package/fakes/FakeSiCard/types/index.js +18 -0
  333. package/fakes/FakeSiCard/types/index.js.map +1 -0
  334. package/fakes/FakeSiDeviceDriver.d.ts +42 -0
  335. package/fakes/FakeSiDeviceDriver.d.ts.map +1 -0
  336. package/fakes/FakeSiDeviceDriver.js +163 -0
  337. package/fakes/FakeSiDeviceDriver.js.map +1 -0
  338. package/fakes/FakeSiMainStation.d.ts +22 -0
  339. package/fakes/FakeSiMainStation.d.ts.map +1 -0
  340. package/fakes/FakeSiMainStation.js +150 -0
  341. package/fakes/FakeSiMainStation.js.map +1 -0
  342. package/fakes/FakeSiMainStation.test.d.ts +2 -0
  343. package/fakes/FakeSiMainStation.test.d.ts.map +1 -0
  344. package/fakes/FakeSiMainStation.test.js +150 -0
  345. package/fakes/FakeSiMainStation.test.js.map +1 -0
  346. package/fakes/IFakeSiMainStation.d.ts +14 -0
  347. package/fakes/IFakeSiMainStation.d.ts.map +1 -0
  348. package/fakes/IFakeSiMainStation.js +46 -0
  349. package/fakes/IFakeSiMainStation.js.map +1 -0
  350. package/{src/fakes/index.ts → fakes/index.d.ts} +1 -0
  351. package/fakes/index.d.ts.map +1 -0
  352. package/fakes/index.js +21 -0
  353. package/fakes/index.js.map +1 -0
  354. package/index.d.ts +72 -0
  355. package/index.d.ts.map +1 -0
  356. package/index.js +49 -0
  357. package/index.js.map +1 -0
  358. package/package.json +2 -4
  359. package/siProtocol.d.ts +58 -0
  360. package/siProtocol.d.ts.map +1 -0
  361. package/siProtocol.js +413 -0
  362. package/siProtocol.js.map +1 -0
  363. package/siProtocol.test.d.ts +2 -0
  364. package/siProtocol.test.d.ts.map +1 -0
  365. package/siProtocol.test.js +524 -0
  366. package/siProtocol.test.js.map +1 -0
  367. package/storage/SiArray.d.ts +14 -0
  368. package/storage/SiArray.d.ts.map +1 -0
  369. package/storage/SiArray.js +58 -0
  370. package/storage/SiArray.js.map +1 -0
  371. package/storage/SiArray.test.d.ts +2 -0
  372. package/storage/SiArray.test.d.ts.map +1 -0
  373. package/storage/SiArray.test.js +100 -0
  374. package/storage/SiArray.test.js.map +1 -0
  375. package/storage/SiBool.d.ts +13 -0
  376. package/storage/SiBool.d.ts.map +1 -0
  377. package/storage/SiBool.js +47 -0
  378. package/storage/SiBool.js.map +1 -0
  379. package/storage/SiBool.test.d.ts +2 -0
  380. package/storage/SiBool.test.d.ts.map +1 -0
  381. package/storage/SiBool.test.js +80 -0
  382. package/storage/SiBool.test.js.map +1 -0
  383. package/storage/SiDataType.d.ts +19 -0
  384. package/storage/SiDataType.d.ts.map +1 -0
  385. package/storage/SiDataType.js +50 -0
  386. package/storage/SiDataType.js.map +1 -0
  387. package/storage/SiDataType.test.d.ts +2 -0
  388. package/storage/SiDataType.test.d.ts.map +1 -0
  389. package/storage/SiDataType.test.js +80 -0
  390. package/storage/SiDataType.test.js.map +1 -0
  391. package/storage/SiDict.d.ts +23 -0
  392. package/storage/SiDict.d.ts.map +1 -0
  393. package/storage/SiDict.js +56 -0
  394. package/storage/SiDict.js.map +1 -0
  395. package/storage/SiDict.test.d.ts +2 -0
  396. package/storage/SiDict.test.d.ts.map +1 -0
  397. package/storage/SiDict.test.js +107 -0
  398. package/storage/SiDict.test.js.map +1 -0
  399. package/storage/SiEnum.d.ts +21 -0
  400. package/storage/SiEnum.d.ts.map +1 -0
  401. package/storage/SiEnum.js +76 -0
  402. package/storage/SiEnum.js.map +1 -0
  403. package/storage/SiEnum.test.d.ts +2 -0
  404. package/storage/SiEnum.test.d.ts.map +1 -0
  405. package/storage/SiEnum.test.js +75 -0
  406. package/storage/SiEnum.test.js.map +1 -0
  407. package/storage/SiFieldValue.d.ts +10 -0
  408. package/storage/SiFieldValue.d.ts.map +1 -0
  409. package/storage/SiFieldValue.js +25 -0
  410. package/storage/SiFieldValue.js.map +1 -0
  411. package/storage/SiFieldValue.test.d.ts +2 -0
  412. package/storage/SiFieldValue.test.d.ts.map +1 -0
  413. package/storage/SiFieldValue.test.js +59 -0
  414. package/storage/SiFieldValue.test.js.map +1 -0
  415. package/storage/SiInt.d.ts +20 -0
  416. package/storage/SiInt.d.ts.map +1 -0
  417. package/storage/SiInt.js +73 -0
  418. package/storage/SiInt.js.map +1 -0
  419. package/storage/SiInt.test.d.ts +2 -0
  420. package/storage/SiInt.test.d.ts.map +1 -0
  421. package/storage/SiInt.test.js +79 -0
  422. package/storage/SiInt.test.js.map +1 -0
  423. package/storage/SiModified.d.ts +18 -0
  424. package/storage/SiModified.d.ts.map +1 -0
  425. package/storage/SiModified.js +56 -0
  426. package/storage/SiModified.js.map +1 -0
  427. package/storage/SiModified.test.d.ts +2 -0
  428. package/storage/SiModified.test.d.ts.map +1 -0
  429. package/storage/SiModified.test.js +122 -0
  430. package/storage/SiModified.test.js.map +1 -0
  431. package/storage/SiStorage.d.ts +14 -0
  432. package/storage/SiStorage.d.ts.map +1 -0
  433. package/storage/SiStorage.js +43 -0
  434. package/storage/SiStorage.js.map +1 -0
  435. package/storage/SiStorage.test.d.ts +2 -0
  436. package/storage/SiStorage.test.d.ts.map +1 -0
  437. package/storage/SiStorage.test.js +86 -0
  438. package/storage/SiStorage.test.js.map +1 -0
  439. package/{src/storage/index.ts → storage/index.d.ts} +2 -1
  440. package/storage/index.d.ts.map +1 -0
  441. package/storage/index.js +29 -0
  442. package/storage/index.js.map +1 -0
  443. package/storage/index.test.d.ts +2 -0
  444. package/storage/index.test.d.ts.map +1 -0
  445. package/storage/index.test.js +222 -0
  446. package/storage/index.test.js.map +1 -0
  447. package/storage/interfaces.d.ts +38 -0
  448. package/storage/interfaces.d.ts.map +1 -0
  449. package/storage/interfaces.js +44 -0
  450. package/storage/interfaces.js.map +1 -0
  451. package/storage/siStringEncoding.d.ts +2 -0
  452. package/storage/siStringEncoding.d.ts.map +1 -0
  453. package/storage/siStringEncoding.js +1365 -0
  454. package/storage/siStringEncoding.js.map +1 -0
  455. package/testUtils.d.ts +25 -0
  456. package/testUtils.d.ts.map +1 -0
  457. package/testUtils.js +79 -0
  458. package/testUtils.js.map +1 -0
  459. package/testUtils.test.d.ts +2 -0
  460. package/testUtils.test.d.ts.map +1 -0
  461. package/testUtils.test.js +307 -0
  462. package/testUtils.test.js.map +1 -0
  463. package/utils/NumberRange.d.ts +15 -0
  464. package/utils/NumberRange.d.ts.map +1 -0
  465. package/utils/NumberRange.js +48 -0
  466. package/utils/NumberRange.js.map +1 -0
  467. package/utils/NumberRange.test.d.ts +2 -0
  468. package/utils/NumberRange.test.d.ts.map +1 -0
  469. package/utils/NumberRange.test.js +68 -0
  470. package/utils/NumberRange.test.js.map +1 -0
  471. package/utils/NumberRangeRegistry.d.ts +9 -0
  472. package/utils/NumberRangeRegistry.d.ts.map +1 -0
  473. package/utils/NumberRangeRegistry.js +82 -0
  474. package/utils/NumberRangeRegistry.js.map +1 -0
  475. package/utils/NumberRangeRegistry.test.d.ts +2 -0
  476. package/utils/NumberRangeRegistry.test.d.ts.map +1 -0
  477. package/utils/NumberRangeRegistry.test.js +51 -0
  478. package/utils/NumberRangeRegistry.test.js.map +1 -0
  479. package/utils/bytes.d.ts +9 -0
  480. package/utils/bytes.d.ts.map +1 -0
  481. package/utils/bytes.js +74 -0
  482. package/utils/bytes.js.map +1 -0
  483. package/utils/bytes.test.d.ts +2 -0
  484. package/utils/bytes.test.d.ts.map +1 -0
  485. package/utils/bytes.test.js +159 -0
  486. package/utils/bytes.test.js.map +1 -0
  487. package/utils/errors.d.ts +10 -0
  488. package/utils/errors.d.ts.map +1 -0
  489. package/utils/errors.js +27 -0
  490. package/utils/errors.js.map +1 -0
  491. package/utils/errors.test.d.ts +2 -0
  492. package/utils/errors.test.d.ts.map +1 -0
  493. package/utils/errors.test.js +63 -0
  494. package/utils/errors.test.js.map +1 -0
  495. package/utils/events.d.ts +30 -0
  496. package/utils/events.d.ts.map +1 -0
  497. package/utils/events.js +81 -0
  498. package/utils/events.js.map +1 -0
  499. package/utils/events.test.d.ts +2 -0
  500. package/utils/events.test.d.ts.map +1 -0
  501. package/utils/events.test.js +130 -0
  502. package/utils/events.test.js.map +1 -0
  503. package/utils/general.d.ts +19 -0
  504. package/utils/general.d.ts.map +1 -0
  505. package/utils/general.js +63 -0
  506. package/utils/general.js.map +1 -0
  507. package/utils/general.test.d.ts +2 -0
  508. package/utils/general.test.d.ts.map +1 -0
  509. package/utils/general.test.js +182 -0
  510. package/utils/general.test.js.map +1 -0
  511. package/{src/utils/index.ts → utils/index.d.ts} +1 -0
  512. package/utils/index.d.ts.map +1 -0
  513. package/utils/index.js +25 -0
  514. package/utils/index.js.map +1 -0
  515. package/utils/mixins.d.ts +2 -0
  516. package/utils/mixins.d.ts.map +1 -0
  517. package/utils/mixins.js +15 -0
  518. package/utils/mixins.js.map +1 -0
  519. package/utils/mixins.test.d.ts +2 -0
  520. package/utils/mixins.test.d.ts.map +1 -0
  521. package/utils/mixins.test.js +74 -0
  522. package/utils/mixins.test.js.map +1 -0
  523. package/utils/typed.d.ts +2 -0
  524. package/utils/typed.d.ts.map +1 -0
  525. package/utils/typed.js +7 -0
  526. package/utils/typed.js.map +1 -0
  527. package/.dependency-cruiser.js +0 -233
  528. package/.editorconfig +0 -12
  529. package/.eslintignore +0 -6
  530. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -35
  531. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  532. package/.github/workflows/npm.yml +0 -17
  533. package/babel.config.js +0 -21
  534. package/build-docs.sh +0 -25
  535. package/docs/index.md +0 -9
  536. package/docs/typedoc/index.md +0 -11
  537. package/eslint.base.js +0 -232
  538. package/install.sh +0 -6
  539. package/jest.config.ts +0 -49
  540. package/nx.json +0 -39
  541. package/src/SiCard/BaseSiCard.test.ts +0 -187
  542. package/src/SiCard/BaseSiCard.ts +0 -101
  543. package/src/SiCard/IRaceResultData.ts +0 -16
  544. package/src/SiCard/ISiCard.ts +0 -23
  545. package/src/SiCard/ISiCardExamples.ts +0 -4
  546. package/src/SiCard/raceResultTools.test.ts +0 -260
  547. package/src/SiCard/raceResultTools.ts +0 -150
  548. package/src/SiCard/types/FCard.test.ts +0 -19
  549. package/src/SiCard/types/FCard.ts +0 -14
  550. package/src/SiCard/types/ModernSiCard.test.ts +0 -186
  551. package/src/SiCard/types/ModernSiCard.ts +0 -241
  552. package/src/SiCard/types/PCard.test.ts +0 -19
  553. package/src/SiCard/types/PCard.ts +0 -14
  554. package/src/SiCard/types/SIAC.test.ts +0 -84
  555. package/src/SiCard/types/SIAC.ts +0 -19
  556. package/src/SiCard/types/SiCard10.test.ts +0 -85
  557. package/src/SiCard/types/SiCard10.ts +0 -17
  558. package/src/SiCard/types/SiCard11.test.ts +0 -84
  559. package/src/SiCard/types/SiCard11.ts +0 -19
  560. package/src/SiCard/types/SiCard5.test.ts +0 -149
  561. package/src/SiCard/types/SiCard5.ts +0 -129
  562. package/src/SiCard/types/SiCard6.test.ts +0 -179
  563. package/src/SiCard/types/SiCard6.ts +0 -222
  564. package/src/SiCard/types/SiCard8.test.ts +0 -137
  565. package/src/SiCard/types/SiCard8.ts +0 -129
  566. package/src/SiCard/types/SiCard9.test.ts +0 -132
  567. package/src/SiCard/types/SiCard9.ts +0 -128
  568. package/src/SiCard/types/TCard.test.ts +0 -19
  569. package/src/SiCard/types/TCard.ts +0 -14
  570. package/src/SiCard/types/index.test.ts +0 -26
  571. package/src/SiCard/types/modernSiCardExamples.ts +0 -364
  572. package/src/SiCard/types/siCard5Examples.ts +0 -73
  573. package/src/SiCard/types/siCard6Examples.ts +0 -262
  574. package/src/SiCard/types/siCard8Examples.ts +0 -152
  575. package/src/SiCard/types/siCard9Examples.ts +0 -143
  576. package/src/SiDevice/INavigatorWebSerial.ts +0 -78
  577. package/src/SiDevice/INavigatorWebUsb.ts +0 -62
  578. package/src/SiDevice/ISiDevice.ts +0 -48
  579. package/src/SiDevice/ISiDeviceDriver.ts +0 -35
  580. package/src/SiDevice/README.md +0 -13
  581. package/src/SiDevice/SiDevice.test.ts +0 -354
  582. package/src/SiDevice/SiDevice.ts +0 -132
  583. package/src/SiDevice/WebSerialSiDeviceDriver.ts +0 -146
  584. package/src/SiDevice/WebUsbSiDeviceDriver.ts +0 -343
  585. package/src/SiDevice/testUtils/testISiDeviceDriver.ts +0 -63
  586. package/src/SiDevice/testUtils/testISiDeviceDriverWithAutodetection.ts +0 -72
  587. package/src/SiStation/BaseSiStation.test.ts +0 -221
  588. package/src/SiStation/BaseSiStation.ts +0 -253
  589. package/src/SiStation/CoupledSiStation.test.ts +0 -41
  590. package/src/SiStation/CoupledSiStation.ts +0 -130
  591. package/src/SiStation/ISiMainStation.ts +0 -29
  592. package/src/SiStation/ISiSendTask.ts +0 -9
  593. package/src/SiStation/ISiStation.ts +0 -88
  594. package/src/SiStation/ISiTargetMultiplexer.ts +0 -51
  595. package/src/SiStation/SiMainStation.test.ts +0 -222
  596. package/src/SiStation/SiMainStation.ts +0 -133
  597. package/src/SiStation/SiSendTask.ts +0 -50
  598. package/src/SiStation/SiTargetMultiplexer.targeting.test.ts +0 -112
  599. package/src/SiStation/SiTargetMultiplexer.test.ts +0 -605
  600. package/src/SiStation/SiTargetMultiplexer.ts +0 -241
  601. package/src/SiStation/siStationExamples.ts +0 -103
  602. package/src/constants.test.ts +0 -17
  603. package/src/constants.ts +0 -92
  604. package/src/fakes/FakeSiCard/BaseFakeSiCard.test.ts +0 -11
  605. package/src/fakes/FakeSiCard/BaseFakeSiCard.ts +0 -10
  606. package/src/fakes/FakeSiCard/IFakeSiCard.ts +0 -6
  607. package/src/fakes/FakeSiCard/types/FakeModernSiCard.test.ts +0 -62
  608. package/src/fakes/FakeSiCard/types/FakeModernSiCard.ts +0 -43
  609. package/src/fakes/FakeSiCard/types/FakeSIAC.ts +0 -17
  610. package/src/fakes/FakeSiCard/types/FakeSiCard10.ts +0 -17
  611. package/src/fakes/FakeSiCard/types/FakeSiCard11.ts +0 -17
  612. package/src/fakes/FakeSiCard/types/FakeSiCard5.test.ts +0 -42
  613. package/src/fakes/FakeSiCard/types/FakeSiCard5.ts +0 -40
  614. package/src/fakes/FakeSiCard/types/FakeSiCard6.test.ts +0 -62
  615. package/src/fakes/FakeSiCard/types/FakeSiCard6.ts +0 -44
  616. package/src/fakes/FakeSiCard/types/FakeSiCard8.ts +0 -16
  617. package/src/fakes/FakeSiCard/types/FakeSiCard9.ts +0 -16
  618. package/src/fakes/FakeSiDeviceDriver.ts +0 -148
  619. package/src/fakes/FakeSiMainStation.test.ts +0 -141
  620. package/src/fakes/FakeSiMainStation.ts +0 -118
  621. package/src/fakes/IFakeSiMainStation.ts +0 -15
  622. package/src/index.ts +0 -24
  623. package/src/siProtocol.test.ts +0 -509
  624. package/src/siProtocol.ts +0 -417
  625. package/src/storage/SiArray.test.ts +0 -103
  626. package/src/storage/SiArray.ts +0 -56
  627. package/src/storage/SiBool.test.ts +0 -81
  628. package/src/storage/SiBool.ts +0 -47
  629. package/src/storage/SiDataType.test.ts +0 -81
  630. package/src/storage/SiDataType.ts +0 -60
  631. package/src/storage/SiDict.test.ts +0 -115
  632. package/src/storage/SiDict.ts +0 -60
  633. package/src/storage/SiEnum.test.ts +0 -77
  634. package/src/storage/SiEnum.ts +0 -48
  635. package/src/storage/SiFieldValue.test.ts +0 -58
  636. package/src/storage/SiFieldValue.ts +0 -23
  637. package/src/storage/SiInt.test.ts +0 -80
  638. package/src/storage/SiInt.ts +0 -84
  639. package/src/storage/SiModified.test.ts +0 -135
  640. package/src/storage/SiModified.ts +0 -59
  641. package/src/storage/SiStorage.test.ts +0 -51
  642. package/src/storage/SiStorage.ts +0 -44
  643. package/src/storage/index.test.ts +0 -222
  644. package/src/storage/interfaces.ts +0 -41
  645. package/src/storage/siStringEncoding.ts +0 -1361
  646. package/src/testUtils.test.ts +0 -266
  647. package/src/testUtils.ts +0 -75
  648. package/src/utils/NumberRange.test.ts +0 -66
  649. package/src/utils/NumberRange.ts +0 -46
  650. package/src/utils/NumberRangeRegistry.test.ts +0 -49
  651. package/src/utils/NumberRangeRegistry.ts +0 -43
  652. package/src/utils/bytes.test.ts +0 -126
  653. package/src/utils/bytes.ts +0 -69
  654. package/src/utils/errors.test.ts +0 -29
  655. package/src/utils/errors.ts +0 -20
  656. package/src/utils/events.test.ts +0 -112
  657. package/src/utils/events.ts +0 -68
  658. package/src/utils/general.test.ts +0 -139
  659. package/src/utils/general.ts +0 -69
  660. package/src/utils/mixins.test.ts +0 -40
  661. package/src/utils/mixins.ts +0 -13
  662. package/src/utils/typed.ts +0 -3
  663. package/tsconfig.base.json +0 -22
  664. package/tsconfig.json +0 -15
@@ -1,343 +0,0 @@
1
- import * as utils from '../utils';
2
- import { DeviceClosedError, SiDeviceState } from '../SiDevice/ISiDevice';
3
- import type { ISiDevice, ISiDeviceDriverData } from '../SiDevice/ISiDevice';
4
- import { SiDeviceAddEvent, SiDeviceRemoveEvent } from '../SiDevice/ISiDeviceDriver';
5
- import type { ISiDeviceDriver, ISiDeviceDriverWithAutodetection, ISiDeviceDriverWithDetection, SiDeviceDriverWithAutodetectionEvents } from '../SiDevice/ISiDeviceDriver';
6
- import { SiDevice } from '../SiDevice/SiDevice';
7
- import type * as nav from './INavigatorWebUsb';
8
-
9
- const siConfiguration = 1;
10
- const siAlternate = 0;
11
- const siPacketSize = 64;
12
- const siUsbClassCode = 255;
13
- const siDeviceFilters = [{ vendorId: 0x10c4, productId: 0x800a }];
14
- const matchesSiDeviceFilters = (vendorId: number, productId: number) => siDeviceFilters.some((filter) => vendorId === filter.vendorId && productId === filter.productId);
15
-
16
- const getIdent = (device: nav.WebUsbDevice) => `${device.serialNumber}`;
17
-
18
- function findEndpoint(iface: USBInterface, direction: USBDirection): USBEndpoint {
19
- const alternate = iface.alternates[0];
20
- for (const endpoint of alternate.endpoints) {
21
- if (endpoint.direction == direction) {
22
- return endpoint;
23
- }
24
- }
25
- throw new TypeError(`Interface ${iface.interfaceNumber} does not have an ` + `${direction} endpoint.`);
26
- }
27
- function findInterface(device: nav.WebUsbDevice): USBInterface {
28
- const configuration = device.configurations[0];
29
- for (const iface of configuration.interfaces) {
30
- const alternate = iface.alternates[0];
31
- if (alternate.interfaceClass === siUsbClassCode) {
32
- return iface;
33
- }
34
- }
35
- throw new TypeError(`Unable to find interface with class ${siUsbClassCode}.`);
36
- }
37
- export interface WebUsbSiDeviceDriverData extends ISiDeviceDriverData<WebUsbSiDeviceDriver> {
38
- driver: WebUsbSiDeviceDriver;
39
- device: nav.WebUsbDevice;
40
- }
41
-
42
- interface WebUsbAutodetectionCallbacks {
43
- onConnect: utils.EventCallback<nav.WebUsbConnectEvent>;
44
- onDisconnect: utils.EventCallback<nav.WebUsbDisconnectEvent>;
45
- }
46
-
47
- export type IWebUsbSiDevice = ISiDevice<WebUsbSiDeviceDriverData>;
48
- export type WebUsbSiDevice = SiDevice<WebUsbSiDeviceDriverData>;
49
-
50
- class WebUsbSiDeviceDriver
51
- implements ISiDeviceDriver<WebUsbSiDeviceDriverData>, ISiDeviceDriverWithDetection<WebUsbSiDeviceDriverData, []>, ISiDeviceDriverWithAutodetection<WebUsbSiDeviceDriverData>
52
- {
53
- public name = 'WebUSB';
54
-
55
- private siDeviceByIdent: { [ident: string]: WebUsbSiDevice } = {};
56
-
57
- private autodetectedSiDevices: { [ident: string]: WebUsbSiDevice } = {};
58
-
59
- private autodetectionCallbacks?: WebUsbAutodetectionCallbacks;
60
-
61
- constructor(private navigatorUsb: nav.WebUsb) {}
62
-
63
- detect(): Promise<WebUsbSiDevice> {
64
- return this.navigatorUsb
65
- .requestDevice({
66
- filters: siDeviceFilters
67
- })
68
- .catch((e) => {
69
- return Promise.reject(new Error('Failed to get access to USB device! ' + e.toString()));
70
- })
71
- .then((navigatorWebUsbDevice: nav.WebUsbDevice) => this.autodetectSiDevice(navigatorWebUsbDevice))
72
- .catch((e) => {
73
- return Promise.reject(new Error('Failed to initialize Si Device! ' + e.toString()));
74
- });
75
- }
76
-
77
- getSiDevice(navigatorWebUsbDevice: nav.WebUsbDevice): WebUsbSiDevice {
78
- const ident = getIdent(navigatorWebUsbDevice);
79
- if (this.siDeviceByIdent[ident] !== undefined) {
80
- return this.siDeviceByIdent[ident];
81
- }
82
- const newSiDeviceData: WebUsbSiDeviceDriverData = {
83
- driver: this,
84
- device: navigatorWebUsbDevice
85
- };
86
- const newSiDevice = new SiDevice(ident, newSiDeviceData);
87
- this.siDeviceByIdent[ident] = newSiDevice;
88
- return newSiDevice;
89
- }
90
-
91
- forgetSiDevice(siDevice: IWebUsbSiDevice) {
92
- const navigatorWebUsbDevice = siDevice.data.device;
93
- const ident = getIdent(navigatorWebUsbDevice);
94
- delete this.siDeviceByIdent[ident];
95
- if (this.autodetectedSiDevices[ident] !== undefined) {
96
- this.dispatchEvent('remove', new SiDeviceRemoveEvent(siDevice));
97
- }
98
- delete this.autodetectedSiDevices[ident];
99
- }
100
-
101
- startAutoDetection(): Promise<IWebUsbSiDevice[]> {
102
- this.registerAutodetectionCallbacks();
103
- return this.getAutodetectedDevices();
104
- }
105
-
106
- getAutodetectedDevices(): Promise<WebUsbSiDevice[]> {
107
- return this.navigatorUsb.getDevices().then((navigatorWebUsbDevices: nav.WebUsbDevice[]) => this.autodetectSiDevices(navigatorWebUsbDevices));
108
- }
109
-
110
- autodetectSiDevices(navigatorWebUsbDevices: nav.WebUsbDevice[]): Promise<WebUsbSiDevice[]> {
111
- // TODO: Make this easier when Promise.allSettled polyfill is available
112
- return new Promise((resolve) => {
113
- let numSettled = 0;
114
- const devices: WebUsbSiDevice[] = [];
115
- const onSettled = () => {
116
- numSettled += 1;
117
- if (numSettled === navigatorWebUsbDevices.length) {
118
- resolve(devices);
119
- }
120
- };
121
- navigatorWebUsbDevices.forEach((navigatorWebUsbDevice: nav.WebUsbDevice) =>
122
- this.autodetectSiDevice(navigatorWebUsbDevice)
123
- .then((siDevice: WebUsbSiDevice) => {
124
- devices.push(siDevice);
125
- onSettled();
126
- })
127
- .catch(() => onSettled())
128
- );
129
- });
130
- }
131
-
132
- autodetectSiDevice(navigatorWebUsbDevice: nav.WebUsbDevice): Promise<WebUsbSiDevice> {
133
- if (!matchesSiDeviceFilters(navigatorWebUsbDevice.vendorId, navigatorWebUsbDevice.productId)) {
134
- return Promise.reject(new Error('Not a SI device'));
135
- }
136
- const ident = getIdent(navigatorWebUsbDevice);
137
- if (this.autodetectedSiDevices[ident] !== undefined) {
138
- return Promise.reject(new Error('Duplicate SI device'));
139
- }
140
- const siDevice = this.getSiDevice(navigatorWebUsbDevice);
141
- this.autodetectedSiDevices[ident] = siDevice;
142
- return siDevice.open();
143
- }
144
-
145
- registerAutodetectionCallbacks(): void {
146
- if (this.autodetectionCallbacks !== undefined) {
147
- return;
148
- }
149
- const onConnectCallback = (event: nav.WebUsbConnectEvent) => {
150
- const navigatorWebUsbDevice = event.device;
151
- this.autodetectSiDevice(navigatorWebUsbDevice)
152
- .then((openedDevice: WebUsbSiDevice) => {
153
- this.dispatchEvent('add', new SiDeviceAddEvent(openedDevice));
154
- })
155
- };
156
- this.navigatorUsb.addEventListener('connect', onConnectCallback);
157
- const onDisconnectCallback = (event: nav.WebUsbDisconnectEvent) => {
158
- const navigatorWebUsbDevice = event.device;
159
- const ident = getIdent(navigatorWebUsbDevice);
160
- const siDevice = this.siDeviceByIdent[ident];
161
- if (siDevice === undefined) {
162
- return;
163
- }
164
- this.forgetSiDevice(siDevice);
165
- };
166
- this.navigatorUsb.addEventListener('disconnect', onDisconnectCallback);
167
- this.autodetectionCallbacks = {
168
- onConnect: onConnectCallback,
169
- onDisconnect: onDisconnectCallback
170
- };
171
- }
172
-
173
- stopAutoDetection(): Promise<void> {
174
- this.deregisterAutodetectionCallbacks();
175
- return this.closeAutoOpened();
176
- }
177
-
178
- deregisterAutodetectionCallbacks(): void {
179
- if (this.autodetectionCallbacks === undefined) {
180
- return;
181
- }
182
- this.navigatorUsb.removeEventListener('connect', this.autodetectionCallbacks.onConnect);
183
- this.navigatorUsb.removeEventListener('disconnect', this.autodetectionCallbacks.onDisconnect);
184
- this.autodetectionCallbacks = undefined;
185
- }
186
-
187
- closeAutoOpened(): Promise<void> {
188
- return Promise.all(Object.values(this.autodetectedSiDevices).map((autoOpenedDevice) => autoOpenedDevice.close())).then(() => {
189
- this.autodetectedSiDevices = {};
190
- });
191
- }
192
-
193
- open(device: IWebUsbSiDevice): Promise<void> {
194
- console.debug('Opening...');
195
- const navigatorDevice = device.data.device;
196
- return navigatorDevice
197
- .open()
198
- .then(() => {
199
- try {
200
- console.debug('Resetting...');
201
- return navigatorDevice.reset();
202
- } catch (e) {
203
- console.error('Failed resetting web usb device:', e);
204
- }
205
- })
206
- .catch((_e) => {
207
- return Promise.reject(new Error('Failed to reset usb device'));
208
- })
209
- .then(() => {
210
- try {
211
- console.debug('Selecting Configuration...');
212
- return navigatorDevice.selectConfiguration(siConfiguration);
213
- } catch (e) {
214
- console.error('Failed selecting configuration of web usb device:', e);
215
- }
216
- })
217
- .catch((_e) => {
218
- return Promise.reject(new Error('Failed to select configuration of usb device'));
219
- })
220
- .then(() => {
221
- try {
222
- console.debug('Claiming Interface...');
223
- return navigatorDevice.claimInterface(findInterface(navigatorDevice).interfaceNumber);
224
- } catch (e) {
225
- console.error('Failed claiming web usb device interface:', e);
226
- }
227
- })
228
- .catch((_e) => {
229
- return Promise.reject(new Error('Failed to claim usb device interface'));
230
- })
231
- .then(() => {
232
- try {
233
- console.debug('Selection Alternate Interface...');
234
- return navigatorDevice.selectAlternateInterface(findInterface(navigatorDevice).interfaceNumber, siAlternate);
235
- } catch (e) {
236
- console.error('Failed selecting alternate interface web usb device:', e);
237
- }
238
- })
239
- .catch((_e) => {
240
- return Promise.reject(new Error('Failed to select alternate interface of usb device'));
241
- })
242
- .then(() => {
243
- try {
244
- console.debug('Enabling Serial...');
245
- return navigatorDevice.controlTransferOut({
246
- requestType: 'vendor',
247
- recipient: 'interface',
248
- request: 0x00,
249
- value: 0x01,
250
- index: findInterface(navigatorDevice).interfaceNumber
251
- });
252
- } catch (e) {
253
- console.error('Failed enabling serial on web usb device:', e);
254
- }
255
- })
256
- .catch((_e) => {
257
- return Promise.reject(new Error('Failed to enable serial on usb device'));
258
- })
259
- .then(() => {
260
- try {
261
- console.debug('Setting Baudrate...');
262
- return navigatorDevice.controlTransferOut(
263
- {
264
- requestType: 'vendor',
265
- recipient: 'interface',
266
- request: 0x1e,
267
- value: 0x00,
268
- index: findInterface(navigatorDevice).interfaceNumber
269
- },
270
- new Uint8Array([0x00, 0x96, 0x00, 0x00]).buffer
271
- );
272
- } catch (e) {
273
- console.error('Failed setting baudrate on web usb device:', e);
274
- }
275
- })
276
- .catch((_e) => {
277
- return Promise.reject(new Error('Failed to set baudrate on usb device'));
278
- });
279
- }
280
-
281
- async close(device: IWebUsbSiDevice): Promise<void> {
282
- console.debug('Disabling Serial...');
283
- const navigatorDevice = device.data.device;
284
- navigatorDevice
285
- .controlTransferOut({
286
- requestType: 'vendor',
287
- recipient: 'interface',
288
- request: 0x00,
289
- value: 0x00,
290
- index: findInterface(navigatorDevice).interfaceNumber
291
- })
292
- .catch((_e) => {
293
- return Promise.reject(new Error('Failed to shutdown usb device'));
294
- })
295
- .then(() => {
296
- console.debug('Releasing Interface...');
297
- return navigatorDevice.releaseInterface(findInterface(navigatorDevice).interfaceNumber);
298
- })
299
- .catch((_e) => {
300
- return Promise.reject(new Error('Failed to release claimed usb device interface'));
301
- })
302
- .then(() => {
303
- console.debug('Closing Device...');
304
- return navigatorDevice.close();
305
- })
306
- .catch((_e) => {
307
- return Promise.reject(new Error('Failed to close usb device'));
308
- })
309
- .then(() => {
310
- return this.forgetSiDevice(device);
311
- })
312
- .catch((_e) => {
313
- return Promise.reject(new Error('Failed to forget usb device'));
314
- })
315
- }
316
-
317
- receive(device: IWebUsbSiDevice): Promise<number[]> {
318
- const navigatorDevice = device.data.device;
319
- if (navigatorDevice.opened !== true) {
320
- console.warn('Device has been closed. Stopping receive loop.');
321
- device.setState(SiDeviceState.Closed);
322
- throw new DeviceClosedError();
323
- }
324
- return navigatorDevice.transferIn(findEndpoint(findInterface(navigatorDevice), 'in').endpointNumber, siPacketSize).then((response) => {
325
- if (!response.data) {
326
- return [];
327
- }
328
- const uint8Data = new Uint8Array(response.data.buffer);
329
- return [...uint8Data];
330
- });
331
- }
332
-
333
- async send(device: IWebUsbSiDevice, uint8Data: number[]): Promise<void> {
334
- const navigatorDevice = device.data.device;
335
- const buffer = new Uint8Array(uint8Data);
336
- navigatorDevice.transferOut(findEndpoint(findInterface(navigatorDevice), 'out').endpointNumber, buffer).then(() => true);
337
- }
338
- }
339
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
340
- interface WebUsbSiDeviceDriver extends utils.EventTarget<SiDeviceDriverWithAutodetectionEvents<WebUsbSiDeviceDriverData>> {}
341
- utils.applyMixins(WebUsbSiDeviceDriver, [utils.EventTarget]);
342
-
343
- export const getWebUsbSiDeviceDriver = (navigatorWebUsb: USB): WebUsbSiDeviceDriver => new WebUsbSiDeviceDriver(<nav.WebUsb>(<unknown>navigatorWebUsb));
@@ -1,63 +0,0 @@
1
- import { expect, test } from '@jest/globals';
2
- import * as testUtils from '../../testUtils';
3
- import type { ISiDevice, ISiDeviceDriverData } from '../ISiDevice';
4
- import type { ISiDeviceDriver } from '../ISiDeviceDriver';
5
-
6
- export interface TestISiDeviceDriverOptions {
7
- numTicks: number;
8
- waitFor: number;
9
- }
10
-
11
- export const testISiDeviceDriver = <T extends ISiDeviceDriverData<ISiDeviceDriver<T>>>(
12
- siDeviceDriverData: T,
13
- options: TestISiDeviceDriverOptions = {
14
- numTicks: 10,
15
- waitFor: 1
16
- }
17
- ): (() => void) => {
18
- const testFunction = () => {
19
- const advanceTime = () => testUtils.advanceTimersByTime(options.waitFor);
20
- const waitForDriver = () => testUtils.nTimesAsync(options.numTicks, advanceTime);
21
- test('driver has a name', () => {
22
- expect(siDeviceDriverData.driver.name).not.toBe('');
23
- });
24
- test('driver can open-receive-send-close', () => {
25
- const asyncCall = async () => {
26
- const siDevice = {
27
- data: siDeviceDriverData
28
- } as ISiDevice<T>;
29
-
30
- let openSuccessful = false;
31
- siDeviceDriverData.driver.open(siDevice).then(() => {
32
- openSuccessful = true;
33
- });
34
- await waitForDriver();
35
- expect(openSuccessful).toBe(true);
36
-
37
- let successfullyReceived: number[] | undefined = undefined;
38
- siDeviceDriverData.driver.receive(siDevice).then((received: number[]) => {
39
- successfullyReceived = received;
40
- });
41
- await waitForDriver();
42
- expect(successfullyReceived).toEqual([0x01, 0x02, 0x03]);
43
-
44
- let sendSuccessful = false;
45
- siDeviceDriverData.driver.send(siDevice, [0x03, 0x02, 0x01]).then(() => {
46
- sendSuccessful = true;
47
- });
48
- await waitForDriver();
49
- expect(sendSuccessful).toBe(true);
50
-
51
- let closeSuccessful = false;
52
- siDeviceDriverData.driver.close(siDevice).then(() => {
53
- closeSuccessful = true;
54
- });
55
- await waitForDriver();
56
- expect(closeSuccessful).toBe(true);
57
- };
58
-
59
- asyncCall();
60
- });
61
- };
62
- return testFunction;
63
- };
@@ -1,72 +0,0 @@
1
- import { expect, test } from '@jest/globals';
2
- import * as testUtils from '../../testUtils';
3
- import { type ISiDeviceDriverData, SiDeviceState } from '../ISiDevice';
4
- import type { ISiDeviceDriver, ISiDeviceDriverWithAutodetection } from '../ISiDeviceDriver';
5
-
6
- export interface TestISiDeviceDriverWithAutodetectionOptions {
7
- numTicks: number;
8
- waitFor: number;
9
- }
10
-
11
- export const testISiDeviceDriverWithAutodetection = <T extends ISiDeviceDriverData<ISiDeviceDriver<T> & ISiDeviceDriverWithAutodetection<T>>>(
12
- siDeviceDriverData: T,
13
- nonSiDeviceDriverData: T,
14
- simulateConnect: (data: T) => void,
15
- simulateDisconnect: (data: T) => void,
16
- options: TestISiDeviceDriverWithAutodetectionOptions = {
17
- numTicks: 50,
18
- waitFor: 1
19
- }
20
- ): (() => void) => {
21
- const testFunction = () => {
22
- const advanceTime = () => testUtils.advanceTimersByTime(options.waitFor);
23
- const waitForDriver = () => testUtils.nTimesAsync(options.numTicks, advanceTime);
24
- test('driver can startAutoDetection-connect-disconnect-stopAutodetection', async () => {
25
- const driver = siDeviceDriverData.driver;
26
-
27
- let numAddCalled = 0;
28
- let numRemoveCalled = 0;
29
- driver.addEventListener('add', () => numAddCalled++);
30
- driver.addEventListener('remove', () => numRemoveCalled++);
31
-
32
- simulateConnect(siDeviceDriverData);
33
- await waitForDriver();
34
- expect([numAddCalled, numRemoveCalled]).toEqual([0, 0]);
35
-
36
- simulateDisconnect(siDeviceDriverData);
37
- await waitForDriver();
38
- expect([numAddCalled, numRemoveCalled]).toEqual([0, 0]);
39
-
40
- const initialDevices = await driver.startAutoDetection();
41
- expect(initialDevices.length).toBe(1);
42
- expect(initialDevices[0].state).toBe(SiDeviceState.Opened);
43
-
44
- simulateConnect(siDeviceDriverData);
45
- await waitForDriver();
46
- expect([numAddCalled, numRemoveCalled]).toEqual([1, 0]);
47
-
48
- simulateDisconnect(siDeviceDriverData);
49
- await waitForDriver();
50
- expect([numAddCalled, numRemoveCalled]).toEqual([1, 1]);
51
-
52
- simulateConnect(nonSiDeviceDriverData);
53
- await waitForDriver();
54
- expect([numAddCalled, numRemoveCalled]).toEqual([1, 1]);
55
-
56
- simulateDisconnect(nonSiDeviceDriverData);
57
- await waitForDriver();
58
- expect([numAddCalled, numRemoveCalled]).toEqual([1, 1]);
59
-
60
- simulateConnect(siDeviceDriverData);
61
- await waitForDriver();
62
- expect([numAddCalled, numRemoveCalled]).toEqual([2, 1]);
63
-
64
- simulateDisconnect(siDeviceDriverData);
65
- await waitForDriver();
66
- expect([numAddCalled, numRemoveCalled]).toEqual([2, 2]);
67
-
68
- await driver.stopAutoDetection();
69
- });
70
- };
71
- return testFunction;
72
- };
@@ -1,221 +0,0 @@
1
- import { describe, expect, test } from '@jest/globals';
2
- import _ from 'lodash';
3
- import type * as siProtocol from '../siProtocol';
4
- import * as testUtils from '../testUtils';
5
- import { proto } from '../constants';
6
- import { SiDataType } from '../storage';
7
- import { type ISiTargetMultiplexer, SiTargetMultiplexerTarget } from './ISiTargetMultiplexer';
8
- import { BaseSiStation } from './BaseSiStation';
9
- import { getSiStationExamples } from './siStationExamples';
10
-
11
- testUtils.useFakeTimers();
12
-
13
- describe('SiStation', () => {
14
- class MySiStation extends BaseSiStation<SiTargetMultiplexerTarget.Direct> {}
15
-
16
- test('SiStation info', async () => {
17
- const mySiStation = new MySiStation({} as unknown as ISiTargetMultiplexer, SiTargetMultiplexerTarget.Direct);
18
- interface MessageRecord {
19
- target: SiTargetMultiplexerTarget;
20
- command: number | undefined;
21
- parameters: number[] | undefined;
22
- numResponses: number | undefined;
23
- }
24
- const messagesSent: MessageRecord[] = [];
25
- mySiStation.siTargetMultiplexer = {
26
- sendMessage: (target, message, numResponses) => {
27
- const command = message.mode === undefined ? message.command : undefined;
28
- const parameters = message.mode === undefined ? message.parameters : undefined;
29
- messagesSent.push({
30
- target: target,
31
- command: command,
32
- parameters: parameters,
33
- numResponses: numResponses
34
- });
35
- if (command === proto.cmd.GET_SYS_VAL) {
36
- return Promise.resolve([[0x00, 0x00, 0x00, ..._.range(128)]]);
37
- }
38
- if (command === proto.cmd.SET_SYS_VAL) {
39
- return Promise.resolve([[0x00, 0x00, 0x72]]);
40
- }
41
- throw new Error();
42
- }
43
- } as ISiTargetMultiplexer;
44
- const timeState = { infoHasBeenRead: false, changesHaveBeenWritten: false };
45
- mySiStation.readInfo().then(() => {
46
- timeState.infoHasBeenRead = true;
47
- });
48
- expect(mySiStation.storage.data.toJS()).toEqual(_.range(128).map(() => undefined));
49
- expect(mySiStation.getField('code') instanceof SiDataType).toBe(true);
50
- expect(mySiStation.getInfo('code')).toBe(undefined);
51
-
52
- await testUtils.advanceTimersByTime(0);
53
- expect(messagesSent).toEqual([
54
- {
55
- target: SiTargetMultiplexerTarget.Direct,
56
- command: proto.cmd.GET_SYS_VAL,
57
- numResponses: 1,
58
- parameters: [0, 128]
59
- }
60
- ]);
61
- expect(timeState).toEqual({ infoHasBeenRead: true, changesHaveBeenWritten: false });
62
- expect(mySiStation.storage.data.toJS()).toEqual(_.range(128));
63
- expect(mySiStation.getInfo('code')).not.toBe(undefined);
64
- expect(mySiStation.setInfo('code', 0)).toBe(undefined);
65
- expect(mySiStation.getInfo('code')!.value).toBe(0);
66
- mySiStation.writeChanges().then(() => {
67
- timeState.changesHaveBeenWritten = true;
68
- });
69
-
70
- await testUtils.nTimesAsync(2, () => testUtils.advanceTimersByTime(0));
71
- expect(messagesSent).toEqual([
72
- {
73
- target: SiTargetMultiplexerTarget.Direct,
74
- command: proto.cmd.GET_SYS_VAL,
75
- numResponses: 1,
76
- parameters: [0, 128]
77
- },
78
- {
79
- target: SiTargetMultiplexerTarget.Direct,
80
- command: proto.cmd.GET_SYS_VAL,
81
- numResponses: 1,
82
- parameters: [0, 128]
83
- },
84
- {
85
- target: SiTargetMultiplexerTarget.Direct,
86
- command: proto.cmd.SET_SYS_VAL,
87
- numResponses: 1,
88
- parameters: [0x72, 0x00, 0x33]
89
- }
90
- ]);
91
- expect(timeState).toEqual({ infoHasBeenRead: true, changesHaveBeenWritten: true });
92
- mySiStation.atomically(() => {
93
- mySiStation.setInfo('code', 10);
94
- });
95
-
96
- await testUtils.nTimesAsync(2, () => testUtils.advanceTimersByTime(0));
97
- expect(messagesSent).toEqual([
98
- {
99
- target: SiTargetMultiplexerTarget.Direct,
100
- command: proto.cmd.GET_SYS_VAL,
101
- numResponses: 1,
102
- parameters: [0, 128]
103
- },
104
- {
105
- target: SiTargetMultiplexerTarget.Direct,
106
- command: proto.cmd.GET_SYS_VAL,
107
- numResponses: 1,
108
- parameters: [0, 128]
109
- },
110
- {
111
- target: SiTargetMultiplexerTarget.Direct,
112
- command: proto.cmd.SET_SYS_VAL,
113
- numResponses: 1,
114
- parameters: [0x72, 0x00, 0x33]
115
- },
116
- {
117
- target: SiTargetMultiplexerTarget.Direct,
118
- command: proto.cmd.GET_SYS_VAL,
119
- numResponses: 1,
120
- parameters: [0, 128]
121
- },
122
- {
123
- target: SiTargetMultiplexerTarget.Direct,
124
- command: proto.cmd.SET_SYS_VAL,
125
- numResponses: 1,
126
- parameters: [0x72, 0x0a, 0x33]
127
- }
128
- ]);
129
- expect(mySiStation.getInfo('code')!.value).toBe(10);
130
- });
131
- const examples = getSiStationExamples();
132
- Object.keys(examples).forEach((exampleName) => {
133
- const { storageData, stationData } = examples[exampleName];
134
- test(`works with ${exampleName} example`, (done) => {
135
- const mySiStation = new MySiStation(
136
- {
137
- sendMessage: (_target: SiTargetMultiplexerTarget, message: siProtocol.SiMessage, numResponses: number) => {
138
- if (message.mode !== undefined) {
139
- return Promise.resolve([]);
140
- }
141
- const { command, parameters } = message;
142
- if (command === proto.cmd.GET_SYS_VAL) {
143
- const getRange = (offset: number, length: number) => [...[0x00, 0x00, offset], ...storageData.slice(offset, offset + length)];
144
- if (numResponses !== 1) {
145
- throw new Error(`Invalid numResponses ${numResponses} (expected 1)`);
146
- }
147
- return Promise.resolve([getRange(parameters![0]!, parameters![1]!)]);
148
- }
149
- return Promise.resolve([]);
150
- }
151
- } as unknown as ISiTargetMultiplexer,
152
- SiTargetMultiplexerTarget.Direct
153
- );
154
- mySiStation.readInfo().then(() => {
155
- Object.keys(stationData).forEach((stationDataKey) => {
156
- // @ts-ignore
157
- expect(mySiStation.getInfo(stationDataKey)!.value).toEqual(stationData[stationDataKey]);
158
- });
159
- done();
160
- });
161
- });
162
- });
163
-
164
- test('get/set time', async () => {
165
- const mySiStation = new MySiStation(
166
- {
167
- sendMessage: () => Promise.resolve([[0x00, 0x00, 0x01, 0x0c, 0x1f, 0x00, 0xa8, 0xbf, 0x40]])
168
- } as unknown as ISiTargetMultiplexer,
169
- SiTargetMultiplexerTarget.Direct
170
- );
171
- const timeState: { [key: string]: Date | undefined } = {
172
- retrievedTime: undefined,
173
- setTime: undefined
174
- };
175
- mySiStation.getTime().then((time) => {
176
- timeState.retrievedTime = time;
177
- });
178
- await testUtils.nTimesAsync(1, () => testUtils.advanceTimersByTime(0));
179
- expect(timeState.retrievedTime instanceof Date).toBe(true);
180
-
181
- mySiStation.setTime(new Date()).then((time) => {
182
- timeState.setTime = time;
183
- });
184
- await testUtils.nTimesAsync(1, () => testUtils.advanceTimersByTime(0));
185
- expect(timeState.setTime instanceof Date).toBe(true);
186
- });
187
- test('signal', async () => {
188
- const mySiStation = new MySiStation(
189
- {
190
- sendMessage: () => Promise.resolve([[0x00, 0x00, 0x02]])
191
- } as unknown as ISiTargetMultiplexer,
192
- SiTargetMultiplexerTarget.Direct
193
- );
194
- const timeState = { signalTwiceSucceeded: false, signalOnceFailed: false };
195
- mySiStation.signal(2).then(() => {
196
- timeState.signalTwiceSucceeded = true;
197
- });
198
- await testUtils.nTimesAsync(1, () => testUtils.advanceTimersByTime(0));
199
- expect(timeState).toEqual({ signalTwiceSucceeded: true, signalOnceFailed: false });
200
-
201
- mySiStation.signal(1).catch(() => {
202
- timeState.signalOnceFailed = true;
203
- });
204
- await testUtils.nTimesAsync(1, () => testUtils.advanceTimersByTime(0));
205
- expect(timeState).toEqual({ signalTwiceSucceeded: true, signalOnceFailed: true });
206
- });
207
- test('powerOff', async () => {
208
- const mySiStation = new MySiStation(
209
- {
210
- sendMessage: () => Promise.resolve()
211
- } as unknown as ISiTargetMultiplexer,
212
- SiTargetMultiplexerTarget.Direct
213
- );
214
- const timeState = { powerOffSucceeded: false };
215
- mySiStation.powerOff().then(() => {
216
- timeState.powerOffSucceeded = true;
217
- });
218
- await testUtils.nTimesAsync(1, () => testUtils.advanceTimersByTime(0));
219
- expect(timeState).toEqual({ powerOffSucceeded: true });
220
- });
221
- });