micrOSDevToolKit 2.1.5__py3-none-any.whl → 2.26.1__py3-none-any.whl

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 (400) hide show
  1. env/driver_cp210x/.DS_Store +0 -0
  2. env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  3. env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +17 -1
  4. micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  5. micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  6. micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  7. micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  8. micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  9. micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  10. micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  11. micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  12. micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  13. micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  14. micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +191 -151
  15. micrOS/source/Auth.py +37 -0
  16. micrOS/source/Common.py +376 -102
  17. micrOS/source/Config.py +55 -25
  18. micrOS/source/Debug.py +54 -193
  19. micrOS/source/Espnow.py +404 -0
  20. micrOS/source/Files.py +207 -0
  21. micrOS/source/Hooks.py +88 -16
  22. micrOS/source/InterConnect.py +130 -46
  23. micrOS/source/Interrupts.py +8 -8
  24. micrOS/source/Logger.py +131 -0
  25. micrOS/source/Network.py +41 -21
  26. micrOS/source/Notify.py +74 -198
  27. micrOS/source/Pacman.py +326 -0
  28. micrOS/source/Scheduler.py +18 -55
  29. micrOS/source/Server.py +84 -217
  30. micrOS/source/Shell.py +103 -93
  31. micrOS/source/Tasks.py +239 -173
  32. micrOS/source/Time.py +21 -22
  33. micrOS/source/Types.py +89 -54
  34. micrOS/source/Web.py +485 -0
  35. micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  36. micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  37. micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  38. micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  39. micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  40. micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  41. micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  42. micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  43. micrOS/source/helpers.py +132 -0
  44. micrOS/source/micrOS.py +25 -21
  45. micrOS/source/micrOSloader.py +14 -23
  46. micrOS/source/microIO.py +94 -57
  47. toolkit/simulator_lib/LP_darwin.py → micrOS/source/modules/IO_esp32.py +22 -11
  48. micrOS/source/{IO_esp32c3.py → modules/IO_esp32c3.py} +6 -1
  49. micrOS/source/modules/IO_esp32c6.py +38 -0
  50. micrOS/source/{IO_esp32s2.py → modules/IO_esp32s2.py} +6 -1
  51. micrOS/source/{IO_esp32s3.py → modules/IO_esp32s3.py} +43 -2
  52. micrOS/source/modules/IO_m5stamp.py +86 -0
  53. micrOS/source/{IO_qtpy.py → modules/IO_qtpy.py} +28 -18
  54. micrOS/source/{IO_tinypico.py → modules/IO_tinypico.py} +48 -3
  55. micrOS/source/modules/LM_L298N.py +161 -0
  56. {toolkit/workspace/precompiled → micrOS/source/modules}/LM_L9110_DCmotor.py +4 -4
  57. micrOS/source/{LM_OV2640.py → modules/LM_OV2640.py} +53 -42
  58. micrOS/source/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
  59. micrOS/source/{LM_aht10.py → modules/LM_aht10.py} +12 -4
  60. micrOS/source/{LM_bme280.py → modules/LM_bme280.py} +13 -25
  61. micrOS/source/{LM_buzzer.py → modules/LM_buzzer.py} +42 -40
  62. micrOS/source/{LM_cct.py → modules/LM_cct.py} +22 -27
  63. micrOS/source/modules/LM_cluster.py +255 -0
  64. micrOS/source/{LM_co2.py → modules/LM_co2.py} +13 -6
  65. micrOS/source/{LM_dht11.py → modules/LM_dht11.py} +13 -29
  66. micrOS/source/{LM_dht22.py → modules/LM_dht22.py} +13 -28
  67. micrOS/source/{LM_dimmer.py → modules/LM_dimmer.py} +19 -16
  68. micrOS/source/modules/LM_distance.py +135 -0
  69. micrOS/source/{LM_ds18.py → modules/LM_ds18.py} +12 -4
  70. micrOS/source/{LM_esp32.py → modules/LM_esp32.py} +16 -4
  71. micrOS/source/modules/LM_espnow.py +53 -0
  72. micrOS/source/modules/LM_fileserver.py +265 -0
  73. micrOS/source/{LM_gameOfLife.py → modules/LM_gameOfLife.py} +5 -5
  74. micrOS/source/{LM_genIO.py → modules/LM_genIO.py} +49 -35
  75. micrOS/source/modules/LM_haptic.py +111 -0
  76. micrOS/source/modules/LM_i2c.py +61 -0
  77. micrOS/source/{LM_i2s_mic.py → modules/LM_i2s_mic.py} +20 -23
  78. micrOS/source/{LM_ld2410.py → modules/LM_ld2410.py} +3 -3
  79. micrOS/source/{LM_light_sensor.py → modules/LM_light_sensor.py} +22 -26
  80. micrOS/source/modules/LM_mh_z19c.py +198 -0
  81. micrOS/source/modules/LM_neoeffects.py +284 -0
  82. micrOS/source/{LM_neopixel.py → modules/LM_neopixel.py} +26 -31
  83. micrOS/source/{LM_oled.py → modules/LM_oled.py} +28 -20
  84. micrOS/source/{LM_oled_sh1106.py → modules/LM_oled_sh1106.py} +28 -24
  85. micrOS/source/{LM_oled_ui.py → modules/LM_oled_ui.py} +132 -174
  86. micrOS/source/modules/LM_pacman.py +320 -0
  87. micrOS/source/{LM_presence.py → modules/LM_presence.py} +24 -36
  88. micrOS/source/modules/LM_qmi8658.py +204 -0
  89. micrOS/source/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
  90. micrOS/source/modules/LM_rest.py +81 -0
  91. micrOS/source/{LM_rgb.py → modules/LM_rgb.py} +25 -34
  92. micrOS/source/{LM_rgbcct.py → modules/LM_rgbcct.py} +5 -5
  93. micrOS/source/{LM_roboarm.py → modules/LM_roboarm.py} +37 -45
  94. micrOS/source/modules/LM_robustness.py +137 -0
  95. micrOS/source/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
  96. micrOS/source/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
  97. micrOS/source/{LM_servo.py → modules/LM_servo.py} +4 -4
  98. micrOS/source/modules/LM_sound_event.py +751 -0
  99. micrOS/source/{LM_stepper.py → modules/LM_stepper.py} +8 -8
  100. micrOS/source/{LM_switch.py → modules/LM_switch.py} +21 -18
  101. micrOS/source/{LM_system.py → modules/LM_system.py} +96 -59
  102. micrOS/source/modules/LM_tcs3472.py +187 -0
  103. micrOS/source/modules/LM_telegram.py +388 -0
  104. micrOS/source/modules/LM_trackball.py +287 -0
  105. micrOS/source/modules/LM_veml7700.py +159 -0
  106. micrOS/source/modules/LM_web.py +38 -0
  107. micrOS/source/urequests.py +204 -91
  108. {toolkit/workspace/precompiled → micrOS/source/web}/dashboard.html +9 -4
  109. micrOS/source/web/editor.js +440 -0
  110. micrOS/source/web/filesui.html +178 -0
  111. micrOS/source/web/filesui.js +338 -0
  112. micrOS/source/{index.html → web/index.html} +44 -2
  113. micrOS/source/web/uapi.js +103 -0
  114. micrOS/source/web/udashboard.js +129 -0
  115. micrOS/source/web/ustyle.css +55 -0
  116. micrOS/source/web/uwidgets.js +172 -0
  117. micrOS/source/web/uwidgets_pro.js +99 -0
  118. micrOS/utests/__init__.py +0 -0
  119. micrOS/utests/test_scheduler.py +435 -0
  120. {micrOSDevToolKit-2.1.5.data → microsdevtoolkit-2.26.1.data}/scripts/devToolKit.py +47 -4
  121. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/METADATA +392 -279
  122. microsdevtoolkit-2.26.1.dist-info/RECORD +396 -0
  123. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/WHEEL +1 -1
  124. toolkit/DevEnvCompile.py +63 -33
  125. toolkit/DevEnvOTA.py +72 -22
  126. toolkit/DevEnvUSB.py +147 -77
  127. toolkit/Gateway.py +9 -9
  128. toolkit/LM_to_compile.dat +12 -4
  129. toolkit/MicrOSDevEnv.py +129 -51
  130. toolkit/WebRepl.py +73 -0
  131. toolkit/dashboard_apps/BackupRestore.py +171 -0
  132. toolkit/dashboard_apps/CCTDemo.py +12 -17
  133. toolkit/dashboard_apps/CCTTest.py +20 -24
  134. toolkit/dashboard_apps/CamStream.py +2 -6
  135. toolkit/dashboard_apps/CatGame.py +14 -16
  136. toolkit/dashboard_apps/Dimmer.py +11 -21
  137. toolkit/dashboard_apps/GetVersion.py +11 -19
  138. toolkit/dashboard_apps/MicrophoneTest.py +2 -7
  139. toolkit/dashboard_apps/NeoEffectsDemo.py +22 -35
  140. toolkit/dashboard_apps/NeopixelTest.py +20 -25
  141. toolkit/dashboard_apps/PresenceTest.py +2 -8
  142. toolkit/dashboard_apps/QMI8685_GYRO.py +68 -0
  143. toolkit/dashboard_apps/RGBTest.py +20 -24
  144. toolkit/dashboard_apps/RoboArm.py +24 -32
  145. toolkit/dashboard_apps/SED_test.py +10 -14
  146. toolkit/dashboard_apps/SensorsTest.py +61 -0
  147. toolkit/dashboard_apps/SystemTest.py +219 -117
  148. toolkit/dashboard_apps/Template_app.py +12 -19
  149. toolkit/dashboard_apps/_app_base.py +34 -0
  150. toolkit/dashboard_apps/_gyro_visualizer.py +78 -0
  151. toolkit/dashboard_apps/uLightDemo.py +15 -24
  152. toolkit/index.html +6 -5
  153. toolkit/lib/LocalMachine.py +6 -1
  154. toolkit/lib/MicrosFiles.py +46 -0
  155. toolkit/lib/Repository.py +64 -0
  156. toolkit/lib/TerminalColors.py +4 -0
  157. toolkit/lib/macroScript.py +371 -0
  158. toolkit/lib/micrOSClient.py +124 -51
  159. toolkit/lib/micrOSClientHistory.py +156 -0
  160. toolkit/lib/pip_package_installer.py +31 -4
  161. toolkit/micrOSdashboard.py +16 -21
  162. toolkit/micrOSlint.py +28 -10
  163. toolkit/simulator_lib/.DS_Store +0 -0
  164. micrOS/source/IO_esp32.py → toolkit/simulator_lib/IO_darwin.py +3 -0
  165. toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  166. toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  167. toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  168. toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  169. toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  170. toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  171. toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  172. toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  173. toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  174. toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  175. toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  176. toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  177. toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  178. toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  179. toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  180. toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  181. toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  182. toolkit/simulator_lib/aioespnow.py +28 -0
  183. toolkit/simulator_lib/camera.py +84 -0
  184. toolkit/simulator_lib/dht.py +1 -1
  185. toolkit/simulator_lib/framebuf.py +49 -1
  186. toolkit/simulator_lib/machine.py +32 -2
  187. toolkit/simulator_lib/micropython.py +3 -3
  188. toolkit/simulator_lib/mip.py +165 -0
  189. toolkit/simulator_lib/neopixel.py +3 -2
  190. toolkit/simulator_lib/network.py +2 -1
  191. toolkit/simulator_lib/node_config.json +2 -3
  192. toolkit/simulator_lib/ntptime.py +1 -1
  193. toolkit/simulator_lib/{sim_console.py → sim_common.py} +2 -3
  194. toolkit/simulator_lib/simgc.py +6 -2
  195. toolkit/simulator_lib/simulator.py +138 -46
  196. toolkit/simulator_lib/uasyncio.py +34 -3
  197. toolkit/simulator_lib/uos.py +147 -0
  198. toolkit/simulator_lib/urandom.py +4 -0
  199. toolkit/simulator_lib/usocket.py +5 -1
  200. toolkit/simulator_lib/view01.jpg +0 -0
  201. toolkit/simulator_lib/view02.jpg +0 -0
  202. toolkit/socketClient.py +43 -23
  203. toolkit/user_data/webhooks/generic.py +1 -1
  204. toolkit/user_data/webhooks/macro.py +44 -0
  205. toolkit/user_data/webhooks/template.macro +20 -0
  206. toolkit/user_data/webhooks/template.py +1 -1
  207. toolkit/workspace/precompiled/Auth.mpy +0 -0
  208. toolkit/workspace/precompiled/Common.mpy +0 -0
  209. toolkit/workspace/precompiled/Config.mpy +0 -0
  210. toolkit/workspace/precompiled/Debug.mpy +0 -0
  211. toolkit/workspace/precompiled/Espnow.mpy +0 -0
  212. toolkit/workspace/precompiled/Files.mpy +0 -0
  213. toolkit/workspace/precompiled/Hooks.mpy +0 -0
  214. toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  215. toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  216. toolkit/workspace/precompiled/Logger.mpy +0 -0
  217. toolkit/workspace/precompiled/Network.mpy +0 -0
  218. toolkit/workspace/precompiled/Notify.mpy +0 -0
  219. toolkit/workspace/precompiled/Pacman.mpy +0 -0
  220. toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  221. toolkit/workspace/precompiled/Server.mpy +0 -0
  222. toolkit/workspace/precompiled/Shell.mpy +0 -0
  223. toolkit/workspace/precompiled/Tasks.mpy +0 -0
  224. toolkit/workspace/precompiled/Time.mpy +0 -0
  225. toolkit/workspace/precompiled/Types.mpy +0 -0
  226. toolkit/workspace/precompiled/Web.mpy +0 -0
  227. toolkit/workspace/precompiled/_mpy.version +1 -1
  228. toolkit/workspace/precompiled/config/_git.keep +0 -0
  229. toolkit/workspace/precompiled/helpers.mpy +0 -0
  230. toolkit/workspace/precompiled/micrOS.mpy +0 -0
  231. toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  232. toolkit/workspace/precompiled/microIO.mpy +0 -0
  233. toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  234. toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  235. toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  236. toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  237. toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  238. toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  239. toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  240. toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  241. toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  242. toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
  243. {micrOS/source → toolkit/workspace/precompiled/modules}/LM_L9110_DCmotor.py +4 -4
  244. toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  245. toolkit/workspace/precompiled/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
  246. toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  247. toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  248. toolkit/workspace/precompiled/{LM_buzzer.mpy → modules/LM_buzzer.mpy} +0 -0
  249. toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  250. toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  251. toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
  252. toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  253. toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  254. toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  255. toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
  256. toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  257. toolkit/workspace/precompiled/{LM_esp32.py → modules/LM_esp32.py} +16 -4
  258. toolkit/workspace/precompiled/modules/LM_espnow.py +53 -0
  259. toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  260. toolkit/workspace/precompiled/{LM_gameOfLife.mpy → modules/LM_gameOfLife.mpy} +0 -0
  261. toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  262. toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
  263. toolkit/workspace/precompiled/modules/LM_i2c.py +61 -0
  264. toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  265. toolkit/workspace/precompiled/{LM_ld2410.mpy → modules/LM_ld2410.mpy} +0 -0
  266. toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  267. toolkit/workspace/precompiled/modules/LM_mh_z19c.py +198 -0
  268. toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  269. toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  270. toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  271. toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  272. toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  273. toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  274. toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  275. toolkit/workspace/precompiled/modules/LM_qmi8658.py +204 -0
  276. toolkit/workspace/precompiled/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
  277. toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  278. toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  279. toolkit/workspace/precompiled/{LM_rgbcct.mpy → modules/LM_rgbcct.mpy} +0 -0
  280. toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
  281. toolkit/workspace/precompiled/modules/LM_robustness.py +137 -0
  282. toolkit/workspace/precompiled/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
  283. toolkit/workspace/precompiled/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
  284. toolkit/workspace/precompiled/{LM_servo.mpy → modules/LM_servo.mpy} +0 -0
  285. toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
  286. toolkit/workspace/precompiled/{LM_stepper.mpy → modules/LM_stepper.mpy} +0 -0
  287. toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  288. toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  289. toolkit/workspace/precompiled/modules/LM_tcs3472.py +187 -0
  290. toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  291. toolkit/workspace/precompiled/{LM_tinyrgb.mpy → modules/LM_tinyrgb.mpy} +0 -0
  292. toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
  293. toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  294. toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  295. toolkit/workspace/precompiled/urequests.mpy +0 -0
  296. {micrOS/source → toolkit/workspace/precompiled/web}/dashboard.html +9 -4
  297. toolkit/workspace/precompiled/web/editor.js +440 -0
  298. toolkit/workspace/precompiled/web/filesui.html +178 -0
  299. toolkit/workspace/precompiled/web/filesui.js +338 -0
  300. toolkit/workspace/precompiled/{index.html → web/index.html} +44 -2
  301. toolkit/workspace/precompiled/web/uapi.js +103 -0
  302. toolkit/workspace/precompiled/web/udashboard.js +129 -0
  303. toolkit/workspace/precompiled/web/ustyle.css +55 -0
  304. toolkit/workspace/precompiled/web/uwidgets.js +172 -0
  305. toolkit/workspace/precompiled/web/uwidgets_pro.js +99 -0
  306. env/driver_cp210x/CH34XSER_MAC/CH34X_DRV_INSTALL_INSTRUCTIONS.pdf +0 -0
  307. env/driver_cp210x/CH34XSER_MAC/CH34xVCPDriver.pkg +0 -0
  308. micrOS/micropython/esp32-20231005-v1.21.0.bin +0 -0
  309. micrOS/micropython/esp32c3-GENERIC-20240105-v1.22.1.bin +0 -0
  310. micrOS/micropython/esp32c3-GENERIC-20240222-v1.22.2.bin +0 -0
  311. micrOS/micropython/esp32s2-GENERIC-20240105-v1.22.1.bin +0 -0
  312. micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
  313. micrOS/micropython/esp32s3-GENERIC-20240105-v1.22.1.bin +0 -0
  314. micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
  315. micrOS/micropython/rpi-pico-w-20231005-v1.21.0.uf2 +0 -0
  316. micrOS/micropython/tinypico-20231005-v1.21.0.bin +0 -0
  317. micrOS/micropython/tinypico-usbc-UM-20240105-v1.22.1.bin +0 -0
  318. micrOS/source/LM_L298N_DCmotor.py +0 -86
  319. micrOS/source/LM_catgame.py +0 -74
  320. micrOS/source/LM_dashboard_be.py +0 -37
  321. micrOS/source/LM_demo.py +0 -85
  322. micrOS/source/LM_distance.py +0 -88
  323. micrOS/source/LM_i2c.py +0 -44
  324. micrOS/source/LM_intercon.py +0 -57
  325. micrOS/source/LM_keychain.py +0 -318
  326. micrOS/source/LM_lmpacman.py +0 -126
  327. micrOS/source/LM_neoeffects.py +0 -327
  328. micrOS/source/LM_pet_feeder.py +0 -76
  329. micrOS/source/LM_ph_sensor.py +0 -51
  330. micrOS/source/LM_rest.py +0 -40
  331. micrOS/source/LM_robustness.py +0 -73
  332. micrOS/source/LM_telegram.py +0 -96
  333. micrOS/source/reset.py +0 -11
  334. micrOS/source/uapi.js +0 -76
  335. micrOS/source/udashboard.js +0 -137
  336. micrOS/source/ustyle.css +0 -28
  337. micrOS/source/uwidgets.js +0 -179
  338. micrOSDevToolKit-2.1.5.dist-info/RECORD +0 -337
  339. toolkit/dashboard_apps/AirQualityBME280.py +0 -36
  340. toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -36
  341. toolkit/lib/file_extensions.py +0 -16
  342. toolkit/simulator_lib/__pycache__/LP_darwin.cpython-312.pyc +0 -0
  343. toolkit/simulator_lib/__pycache__/LP_darwin.cpython-38.pyc +0 -0
  344. toolkit/simulator_lib/__pycache__/LP_darwin.cpython-39.pyc +0 -0
  345. toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
  346. toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
  347. toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
  348. toolkit/workspace/precompiled/IO_esp32.mpy +0 -0
  349. toolkit/workspace/precompiled/IO_esp32c3.mpy +0 -0
  350. toolkit/workspace/precompiled/IO_esp32s2.mpy +0 -0
  351. toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
  352. toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
  353. toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
  354. toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
  355. toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
  356. toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
  357. toolkit/workspace/precompiled/LM_aht10.mpy +0 -0
  358. toolkit/workspace/precompiled/LM_bme280.mpy +0 -0
  359. toolkit/workspace/precompiled/LM_catgame.py +0 -74
  360. toolkit/workspace/precompiled/LM_cct.mpy +0 -0
  361. toolkit/workspace/precompiled/LM_co2.mpy +0 -0
  362. toolkit/workspace/precompiled/LM_dashboard_be.py +0 -37
  363. toolkit/workspace/precompiled/LM_demo.py +0 -85
  364. toolkit/workspace/precompiled/LM_dht11.mpy +0 -0
  365. toolkit/workspace/precompiled/LM_dht22.mpy +0 -0
  366. toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
  367. toolkit/workspace/precompiled/LM_distance.py +0 -88
  368. toolkit/workspace/precompiled/LM_ds18.mpy +0 -0
  369. toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
  370. toolkit/workspace/precompiled/LM_i2c.py +0 -44
  371. toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
  372. toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
  373. toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
  374. toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
  375. toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
  376. toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
  377. toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
  378. toolkit/workspace/precompiled/LM_oled.mpy +0 -0
  379. toolkit/workspace/precompiled/LM_oled_sh1106.mpy +0 -0
  380. toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
  381. toolkit/workspace/precompiled/LM_pet_feeder.py +0 -76
  382. toolkit/workspace/precompiled/LM_ph_sensor.py +0 -51
  383. toolkit/workspace/precompiled/LM_presence.mpy +0 -0
  384. toolkit/workspace/precompiled/LM_rest.mpy +0 -0
  385. toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
  386. toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
  387. toolkit/workspace/precompiled/LM_robustness.py +0 -73
  388. toolkit/workspace/precompiled/LM_switch.mpy +0 -0
  389. toolkit/workspace/precompiled/LM_system.mpy +0 -0
  390. toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
  391. toolkit/workspace/precompiled/reset.mpy +0 -0
  392. toolkit/workspace/precompiled/uapi.js +0 -76
  393. toolkit/workspace/precompiled/udashboard.js +0 -137
  394. toolkit/workspace/precompiled/ustyle.css +0 -28
  395. toolkit/workspace/precompiled/uwidgets.js +0 -179
  396. /toolkit/user_data/node_config_archive/.include → /micrOS/source/config/_git.keep +0 -0
  397. /micrOS/source/{IO_rp2.py → modules/IO_rp2.py} +0 -0
  398. /micrOS/source/{LM_tinyrgb.py → modules/LM_tinyrgb.py} +0 -0
  399. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info/licenses}/LICENSE +0 -0
  400. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/top_level.txt +0 -0
@@ -5,18 +5,15 @@ import sys
5
5
  import time
6
6
  import random
7
7
  MYPATH = os.path.dirname(os.path.abspath(__file__))
8
- sys.path.append(os.path.dirname(MYPATH))
9
- import socketClient
10
- import time
11
8
  sys.path.append(os.path.join(MYPATH, '../lib/'))
12
9
  from TerminalColors import Colors
13
10
 
14
- # FILL OUT
15
- DEVICE = 'node01'
16
-
11
+ try:
12
+ from ._app_base import AppBase
13
+ except:
14
+ from _app_base import AppBase
17
15
 
18
- def base_cmd():
19
- return ['--dev', DEVICE]
16
+ CLIENT = None
20
17
 
21
18
 
22
19
  def test_random_colors(test_len=8, smooth=False):
@@ -30,12 +27,12 @@ def test_random_colors(test_len=8, smooth=False):
30
27
 
31
28
  # Generate command
32
29
  cmd_list_str = " <a> ".join(["{} {} {} {} >json".format(main_function, k[0], k[1], smooth) for k in cct_list])
33
- args = base_cmd() + [cmd_list_str]
30
+ args = [cmd_list_str]
34
31
  print("{} Generated command {} - multi message single connection single connection: {} cold warm {}\n{}".format(Colors.HEADER, Colors.NC, main_function, smooth, args))
35
32
 
36
33
  start_t = time.time()
37
34
  # SEND MESSSAGE OVER micrOS client
38
- status, answer = socketClient.run(args)
35
+ status, answer = CLIENT.run(args)
39
36
  delta_t = round((time.time() - start_t)/test_len, 1)
40
37
 
41
38
  #Evaluate last message
@@ -51,14 +48,14 @@ def test_random_colors(test_len=8, smooth=False):
51
48
 
52
49
  def test_toogle():
53
50
  main_function = 'cct toggle'
54
- args_on = base_cmd() + [f'{main_function} True >json']
55
- args_toggle = base_cmd() + [f'{main_function} >json']
51
+ args_on = [f'{main_function} True >json']
52
+ args_toggle = [f'{main_function} >json']
56
53
 
57
54
  # SEND MESSSAGE OVER micrOS client
58
- status, answer = socketClient.run(args_on)
55
+ status, answer = CLIENT.run(args_on)
59
56
  if status and '"S": 1' in answer:
60
57
  # SEND MESSSAGE OVER micrOS client
61
- status, answer = socketClient.run(args_toggle)
58
+ status, answer = CLIENT.run(args_toggle)
62
59
  if status and '"S": 0' in answer:
63
60
  return True, '{} works {}OK{}'.format(main_function, Colors.OK, Colors.NC)
64
61
  return False, '{} not works {}NOK{}: {}'.format(main_function, Colors.ERR, Colors.NC, answer)
@@ -66,24 +63,23 @@ def test_toogle():
66
63
 
67
64
  def test_brightness():
68
65
  main_function = 'cct brightness'
69
- args_10 = base_cmd() + [f'{main_function} 10 >json']
70
- args_50 = base_cmd() + [f'{main_function} 50 >json']
71
- args_actual_br = base_cmd() + [f'{main_function} >json']
66
+ args_10 = [f'{main_function} 10 >json']
67
+ args_50 = [f'{main_function} 50 >json']
68
+ args_actual_br = [f'{main_function} >json']
72
69
 
73
- status, answer = socketClient.run(args_10)
70
+ status, answer = CLIENT.run(args_10)
74
71
  if status:
75
- status, answer = socketClient.run(args_50)
72
+ status, answer = CLIENT.run(args_50)
76
73
  if status:
77
- status, answer = socketClient.run(args_actual_br)
74
+ status, answer = CLIENT.run(args_actual_br)
78
75
  if status and "50.0 %" in answer:
79
76
  return True, "{} function {}OK{} (50.0 % == {})".format(main_function, Colors.OK, Colors.NC, answer)
80
77
  return False, "{} function {}NOK{} (50.0 % == {})".format(main_function, Colors.ERR, Colors.NC, answer)
81
78
 
82
79
 
83
- def app(devfid=None):
84
- global DEVICE
85
- if devfid is not None:
86
- DEVICE = devfid
80
+ def app(devfid=None, pwd=None):
81
+ global CLIENT
82
+ CLIENT = AppBase(device=devfid, password=pwd)
87
83
 
88
84
  test_pool = { 'Color change test': test_random_colors(test_len=8, smooth=False),
89
85
  'Color smooth test': test_random_colors(test_len=4, smooth=True),
@@ -2,14 +2,10 @@ import sys, os
2
2
  import subprocess
3
3
  MYPATH = os.path.dirname(os.path.abspath(__file__))
4
4
 
5
- DEVICE = "node01"
6
5
 
7
- def app(devfid=None):
6
+ def app(devfid=None, pwd=None):
8
7
  """
9
8
  Wrapper function to start subprocess plotting... (threading limitation)
10
9
  """
11
- global DEVICE
12
- if devfid is not None:
13
- DEVICE = devfid
14
- result = subprocess.run([f'{sys.executable}', os.path.join(MYPATH, '_capture.py'), DEVICE])
10
+ result = subprocess.run([f'{sys.executable}', os.path.join(MYPATH, '_capture.py'), devfid])
15
11
  print(result)
@@ -1,28 +1,26 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
3
  import os
4
- import sys
5
4
  import atexit
6
5
  from random import randint
7
6
  MYPATH = os.path.dirname(os.path.abspath(__file__))
8
- sys.path.append(os.path.dirname(MYPATH))
9
- import socketClient
10
7
 
11
- DEVICE = 'ImpiGamePro'
8
+ try:
9
+ from ._app_base import AppBase
10
+ except:
11
+ from _app_base import AppBase
12
+
13
+ CLIENT = None
12
14
  CMD_PIPE_SEP = '<a>'
13
15
  SERVO_CENTER_VAL = 77
14
16
 
15
17
 
16
- def base_cmd():
17
- return ['--dev', DEVICE]
18
-
19
-
20
18
  def play_game(iteration=30, devfid=None):
21
19
  global CMD_PIPE_SEP
22
20
  for _ in range(iteration):
23
21
  piped_commands = []
24
22
 
25
- args = base_cmd() + ['servo sduty {} '.format(SERVO_CENTER_VAL)]
23
+ args = ['servo sduty {} '.format(SERVO_CENTER_VAL)]
26
24
  print("CMD: {}".format(args))
27
25
  args.append(CMD_PIPE_SEP)
28
26
  piped_commands += args
@@ -39,19 +37,19 @@ def play_game(iteration=30, devfid=None):
39
37
  piped_commands += args
40
38
 
41
39
  print("CMD PIPE: {}".format(piped_commands))
42
- socketClient.run(piped_commands)
40
+ CLIENT.run(piped_commands)
43
41
 
44
42
 
45
43
  def deinit_servo():
46
44
  print("DEINIT SERVO, SET TO {} and DEINIT".format(SERVO_CENTER_VAL))
47
- args = base_cmd() + ['servo sduty {}'.format(SERVO_CENTER_VAL)]
48
- socketClient.run(args)
45
+ args = ['servo sduty {}'.format(SERVO_CENTER_VAL)]
46
+ CLIENT.run(args)
47
+
49
48
 
49
+ def app(devfid=None, pwd=None):
50
+ global CLIENT
51
+ CLIENT = AppBase(device=devfid, password=pwd)
50
52
 
51
- def app(devfid=None):
52
- global DEVICE
53
- if devfid is not None:
54
- DEVICE = devfid
55
53
  atexit.register(deinit_servo)
56
54
  play_game()
57
55
  deinit_servo()
@@ -1,43 +1,33 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
3
  import os
4
- import sys
5
4
  MYPATH = os.path.dirname(os.path.abspath(__file__))
6
- sys.path.append(os.path.dirname(MYPATH))
7
- import socketClient
8
5
 
6
+ try:
7
+ from ._app_base import AppBase
8
+ except:
9
+ from _app_base import AppBase
9
10
 
10
- # FILL OUT
11
- DEVICE = 'CamLed'
11
+ CLIENT = None
12
12
 
13
13
 
14
- def base_cmd():
15
- return ['--dev', DEVICE]
14
+ def app(devfid=None, pwd=None, itr=80):
15
+ global CLIENT
16
+ CLIENT = AppBase(device=devfid, password=pwd)
16
17
 
17
-
18
- def app(devfid=None, itr=80):
19
- global DEVICE
20
- if devfid is not None:
21
- DEVICE = devfid
22
18
  # EDIT YOUR COMMAND
23
19
  cmd_list = []
24
20
  for k in range(0, itr, 2):
25
21
  cmd_list += ['dimmer set_value {} smooth=False >json'.format(k)]
26
- execute(cmd_list)
22
+ CLIENT.run(cmd_list)
27
23
 
28
24
  cmd_list = []
29
25
  for k in range(itr, 0, -2):
30
26
  cmd_list += ['dimmer set_value {} smooth=False >json'.format(k)]
31
- execute(cmd_list)
27
+ CLIENT.run(cmd_list)
32
28
 
33
29
  cmd_list = ['dimmer set_value 300', 'dimmer toggle False', 'dimmer toggle True']
34
- execute(cmd_list)
35
-
36
-
37
- def execute(cmd_list):
38
- cmd_args = base_cmd() + cmd_list
39
- print("DIMMER TEST: {}".format(cmd_args))
40
- socketClient.run(cmd_args)
30
+ CLIENT.run(cmd_list)
41
31
 
42
32
 
43
33
  if __name__ == "__main__":
@@ -4,31 +4,23 @@ import os
4
4
  import sys
5
5
  import time
6
6
  MYPATH = os.path.dirname(os.path.abspath(__file__))
7
- sys.path.append(os.path.dirname(MYPATH))
8
- import socketClient
9
7
 
10
- # FILL OUT
11
- DEVICE = 'node01'
12
- PASSWD = None
13
-
14
-
15
- def base_cmd():
16
- if PASSWD is None:
17
- return ['--dev', DEVICE]
18
- return ['--dev', DEVICE, '--password', PASSWD]
8
+ try:
9
+ from ._app_base import AppBase
10
+ except:
11
+ from _app_base import AppBase
19
12
 
13
+ CLIENT = None
20
14
 
21
15
 
22
16
  def app(devfid=None, pwd=None):
23
- global DEVICE, PASSWD
24
- if devfid is not None:
25
- DEVICE = devfid
26
- if pwd is not None:
27
- PASSWD = pwd
17
+ global CLIENT
18
+ CLIENT = AppBase(device=devfid, password=pwd)
19
+
28
20
  # EDIT YOUR COMMAND
29
- args = base_cmd() + ['version']
30
- status, answer = socketClient.run(args)
31
- print("[micrOS] {}: {}".format(DEVICE, answer).upper())
21
+ args = ['version']
22
+ status, answer = CLIENT.run(args)
23
+ print("[micrOS] {}: {}".format(CLIENT.get_device(), answer).upper())
32
24
 
33
25
 
34
26
  if __name__ == "__main__":
@@ -2,15 +2,10 @@ import sys, os
2
2
  import subprocess
3
3
  MYPATH = os.path.dirname(os.path.abspath(__file__))
4
4
 
5
- DEVICE = "node01"
6
5
 
7
-
8
- def app(devfid=None):
6
+ def app(devfid=None, pwd=None):
9
7
  """
10
8
  Wrapper function to start subprocess plotting... (threading limitation)
11
9
  """
12
- global DEVICE
13
- if devfid is not None:
14
- DEVICE = devfid
15
- result = subprocess.run([f'{sys.executable}', os.path.join(MYPATH, '_micPlotting.py'), DEVICE])
10
+ result = subprocess.run([f'{sys.executable}', os.path.join(MYPATH, '_micPlotting.py'), devfid])
16
11
  print(result)
@@ -1,72 +1,59 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
3
  import os
4
- import sys
5
4
  import time
6
5
  MYPATH = os.path.dirname(os.path.abspath(__file__))
7
- sys.path.append(os.path.dirname(MYPATH))
8
- import socketClient
9
- sys.path.append(os.path.join(MYPATH, '../lib/'))
10
- from TerminalColors import Colors
11
6
 
12
- # FILL OUT
13
- DEVICE = 'node01'
7
+ try:
8
+ from ._app_base import AppBase
9
+ except:
10
+ from _app_base import AppBase
14
11
 
12
+ CLIENT = None
15
13
 
16
- def base_cmd():
17
- return ['--dev', DEVICE]
18
14
 
19
-
20
- def app(devfid=None):
15
+ def app(devfid=None, pwd=None):
21
16
  """
22
17
  devfid: selected device input
23
18
  send command(s) over socket connection [socketClient.run(args)]
24
19
  list load module commands and send in single connection
25
20
  """
26
- global DEVICE
27
- if devfid is not None:
28
- DEVICE = devfid
21
+ global CLIENT
22
+ CLIENT = AppBase(device=devfid, password=pwd)
29
23
 
30
- args = base_cmd() + ['task kill neoeffects.*', 'neopixel toggle False', 'neopixel toggle True']
31
- status, answer = socketClient.run(args)
24
+ args = ['task kill neoeffects.*', 'neopixel toggle False', 'neopixel toggle True']
25
+ status, answer = CLIENT.run(args)
32
26
  time.sleep(2)
33
27
 
34
- status, answer = socketClient.run(base_cmd() + ['neoeffects rainbow &&'])
28
+ status, answer = CLIENT.run(['neoeffects rainbow'])
35
29
  time.sleep(2)
36
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.rainbow'])
37
30
 
38
- status, answer = socketClient.run(base_cmd() + ['neoeffects color 122 18 0'])
31
+ status, answer = CLIENT.run(['neoeffects color 122 18 0'])
39
32
 
40
- status, answer = socketClient.run(base_cmd() + ['neoeffects cycle &&'])
33
+ status, answer = CLIENT.run(['neoeffects cycle'])
41
34
  time.sleep(2)
42
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.cycle'])
43
35
 
44
- status, answer = socketClient.run(base_cmd() + ['neoeffects meteor &&'])
36
+ status, answer = CLIENT.run(['neoeffects meteor'])
45
37
  time.sleep(2)
46
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.meteor'])
47
38
 
48
- status, answer = socketClient.run(base_cmd() + ['neoeffects fire &&'])
39
+ status, answer = CLIENT.run(['neoeffects fire'])
49
40
  time.sleep(2)
50
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.fire'])
51
41
 
52
- time.sleep(1)
53
42
 
54
- status, answer = socketClient.run(base_cmd() + ['neoeffects random &&500'])
43
+ status, answer = CLIENT.run(['neoeffects random &&500'])
55
44
 
56
- status, answer = socketClient.run(base_cmd() + ['neoeffects cycle &&'])
45
+ status, answer = CLIENT.run(['neoeffects cycle'])
57
46
  time.sleep(3)
58
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.cycle'])
59
47
 
60
- status, answer = socketClient.run(base_cmd() + ['neoeffects meteor &&'])
48
+ status, answer = CLIENT.run(['neoeffects meteor'])
61
49
  time.sleep(3)
62
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.meteor'])
63
50
 
64
- status, answer = socketClient.run(base_cmd() + ['neoeffects fire &&'])
51
+ status, answer = CLIENT.run(['neoeffects fire'])
65
52
  time.sleep(3)
66
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.fire'])
67
53
 
68
- status, answer = socketClient.run(base_cmd() + ['task kill neoeffects.random'])
69
- status, answer = socketClient.run(base_cmd() + ['neopixel color 122 18 0'])
54
+ status, answer = CLIENT.run(['task kill neoeffects.player'])
55
+ status, answer = CLIENT.run(['task kill neoeffects.random'])
56
+ status, answer = CLIENT.run(['neopixel color 122 18 0'])
70
57
 
71
58
 
72
59
  if __name__ == "__main__":
@@ -5,19 +5,15 @@ import sys
5
5
  import time
6
6
  import random
7
7
  MYPATH = os.path.dirname(os.path.abspath(__file__))
8
- sys.path.append(os.path.dirname(MYPATH))
9
- import socketClient
10
- import time
11
8
  sys.path.append(os.path.join(MYPATH, '../lib/'))
12
9
  from TerminalColors import Colors
13
10
 
14
- # FILL OUT
15
- DEVICE = 'node01'
16
-
17
-
18
- def base_cmd():
19
- return ['--dev', DEVICE]
11
+ try:
12
+ from ._app_base import AppBase
13
+ except:
14
+ from _app_base import AppBase
20
15
 
16
+ CLIENT = None
21
17
 
22
18
  def test_random_colors(test_len=8, smooth=False):
23
19
  main_function = 'neopixel color'
@@ -31,12 +27,12 @@ def test_random_colors(test_len=8, smooth=False):
31
27
 
32
28
  # Generate command
33
29
  cmd_list_str = " <a> ".join(["{} {} {} {} {} >json".format(main_function, k[0], k[1], k[2], smooth) for k in color_list])
34
- args = base_cmd() + [cmd_list_str]
30
+ args = [cmd_list_str]
35
31
  print("{} Generated command {} - multi message single connection single connection: {} r g b {}\n{}".format(Colors.HEADER, Colors.NC, main_function, smooth, args))
36
32
 
37
33
  start_t = time.time()
38
34
  # SEND MESSSAGE OVER micrOS client
39
- status, answer = socketClient.run(args)
35
+ status, answer = CLIENT.run(args)
40
36
  delta_t = round((time.time() - start_t)/test_len, 1)
41
37
 
42
38
  #Evaluate last message
@@ -53,14 +49,14 @@ def test_random_colors(test_len=8, smooth=False):
53
49
 
54
50
  def test_toogle():
55
51
  main_function = 'neopixel toggle'
56
- args_on = base_cmd() + [f'{main_function} True >json']
57
- args_toggle = base_cmd() + [f'{main_function} >json']
52
+ args_on = [f'{main_function} True >json']
53
+ args_toggle = [f'{main_function} >json']
58
54
 
59
55
  # SEND MESSSAGE OVER micrOS client
60
- status, answer = socketClient.run(args_on)
56
+ status, answer = CLIENT.run(args_on)
61
57
  if status and '"S": 1' in answer:
62
58
  # SEND MESSSAGE OVER micrOS client
63
- status, answer = socketClient.run(args_toggle)
59
+ status, answer = CLIENT.run(args_toggle)
64
60
  if status and '"S": 0' in answer:
65
61
  return True, '{} works {}OK{}'.format(main_function, Colors.OK, Colors.NC)
66
62
  return False, '{} not works {}NOK{}: {}'.format(main_function, Colors.ERR, Colors.NC, answer)
@@ -68,24 +64,23 @@ def test_toogle():
68
64
 
69
65
  def test_brightness():
70
66
  main_function = 'neopixel brightness'
71
- args_10 = base_cmd() + [f'{main_function} 10 >json']
72
- args_50 = base_cmd() + [f'{main_function} 50 >json']
73
- args_actual_br = base_cmd() + [f'{main_function} >json']
67
+ args_10 = [f'{main_function} 10 >json']
68
+ args_50 = [f'{main_function} 50 >json']
69
+ args_actual_br = [f'{main_function} >json']
74
70
 
75
- status, answer = socketClient.run(args_10)
71
+ status, answer = CLIENT.run(args_10)
76
72
  if status:
77
- status, answer = socketClient.run(args_50)
73
+ status, answer = CLIENT.run(args_50)
78
74
  if status:
79
- status, answer = socketClient.run(args_actual_br)
75
+ status, answer = CLIENT.run(args_actual_br)
80
76
  if status and "50.0 %" in answer:
81
77
  return True, "{} function {}OK{} (50.0 % == {})".format(main_function, Colors.OK, Colors.NC, answer)
82
78
  return False, "{} function {}NOK{} (50.0 % == {})".format(main_function, Colors.ERR, Colors.NC, answer)
83
79
 
84
80
 
85
- def app(devfid=None):
86
- global DEVICE
87
- if devfid is not None:
88
- DEVICE = devfid
81
+ def app(devfid=None, pwd=None):
82
+ global CLIENT
83
+ CLIENT = AppBase(device=devfid, password=pwd)
89
84
 
90
85
  test_pool = { 'Color change test': test_random_colors(test_len=8, smooth=False),
91
86
  'Color smooth test': test_random_colors(test_len=4, smooth=True),
@@ -2,15 +2,9 @@ import sys, os
2
2
  import subprocess
3
3
  MYPATH = os.path.dirname(os.path.abspath(__file__))
4
4
 
5
- DEVICE = "node01"
6
-
7
-
8
- def app(devfid=None):
5
+ def app(devfid=None, pwd=None):
9
6
  """
10
7
  Wrapper function to start subprocess plotting... (threading limitation)
11
8
  """
12
- global DEVICE
13
- if devfid is not None:
14
- DEVICE = devfid
15
- result = subprocess.run([f'{sys.executable}', os.path.join(MYPATH, '_presencePlotting.py'), DEVICE])
9
+ result = subprocess.run([f'{sys.executable}', os.path.join(MYPATH, '_presencePlotting.py'), devfid])
16
10
  print(result)
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import os
4
+ import sys
5
+ import json
6
+ import time
7
+ import multiprocessing as mp
8
+
9
+ MYPATH = os.path.dirname(os.path.abspath(__file__))
10
+ sys.path.append(os.path.join(MYPATH, '../lib/'))
11
+
12
+ try:
13
+ from ._app_base import AppBase
14
+ except ImportError:
15
+ from _app_base import AppBase
16
+
17
+ def print_table(data):
18
+ os.system('cls' if os.name == 'nt' else 'clear')
19
+ print(f"{'Sensor':<10} {'X':>10} {'Y':>10} {'Z':>10}")
20
+ for sensor in ['accel', 'gyro']:
21
+ x, y, z = data[sensor]
22
+ print(f"{sensor:<10} {x:10.2f} {y:10.2f} {z:10.2f}")
23
+ if 'temp' in data:
24
+ print(f"{'temp':<10} {data['temp']:>10.2f}")
25
+
26
+
27
+ def app(devfid=None, pwd=None):
28
+ CLIENT = AppBase(device=devfid, password=pwd)
29
+ measure_cmd = 'qmi8658 measure >json'
30
+
31
+ mp.set_start_method('spawn', force=True)
32
+ queue = mp.Queue()
33
+
34
+ # Start GUI process
35
+ from ._gyro_visualizer import visualizer_main
36
+ p = mp.Process(target=visualizer_main, args=(queue,))
37
+ p.start()
38
+
39
+ try:
40
+ for _ in range(10000):
41
+ output = CLIENT.execute([measure_cmd])
42
+ status, result = output[0], output[1]
43
+
44
+ if status:
45
+ try:
46
+ parsed = json.loads(result)
47
+ print_table(parsed)
48
+ queue.put(parsed)
49
+ except Exception as e:
50
+ print(f"[Visualizer queue issue] {e}")
51
+ break
52
+ else:
53
+ print(f"[WARN] {result}")
54
+
55
+ time.sleep(0.05)
56
+
57
+ except KeyboardInterrupt:
58
+ print("Interrupted by user.")
59
+
60
+ finally:
61
+ if p.is_alive():
62
+ p.terminate()
63
+ p.join()
64
+
65
+
66
+
67
+ if __name__ == "__main__":
68
+ app()
@@ -5,18 +5,15 @@ import sys
5
5
  import time
6
6
  import random
7
7
  MYPATH = os.path.dirname(os.path.abspath(__file__))
8
- sys.path.append(os.path.dirname(MYPATH))
9
- import socketClient
10
- import time
11
8
  sys.path.append(os.path.join(MYPATH, '../lib/'))
12
9
  from TerminalColors import Colors
13
10
 
14
- # FILL OUT
15
- DEVICE = 'node01'
16
-
11
+ try:
12
+ from ._app_base import AppBase
13
+ except:
14
+ from _app_base import AppBase
17
15
 
18
- def base_cmd():
19
- return ['--dev', DEVICE]
16
+ CLIENT = None
20
17
 
21
18
 
22
19
  def test_random_colors(test_len=8, smooth=False):
@@ -31,12 +28,12 @@ def test_random_colors(test_len=8, smooth=False):
31
28
 
32
29
  # Generate command
33
30
  cmd_list_str = " <a> ".join(["{} {} {} {} {} >json".format(main_function, k[0], k[1], k[2], smooth) for k in color_list])
34
- args = base_cmd() + [cmd_list_str]
31
+ args = [cmd_list_str]
35
32
  print("{} Generated command {} - multi message single connection single connection: {} r g b {}\n{}".format(Colors.HEADER, Colors.NC, main_function, smooth, args))
36
33
 
37
34
  start_t = time.time()
38
35
  # SEND MESSSAGE OVER micrOS client
39
- status, answer = socketClient.run(args)
36
+ status, answer = CLIENT.run(args)
40
37
  delta_t = round((time.time() - start_t)/test_len, 1)
41
38
 
42
39
  #Evaluate last message
@@ -53,14 +50,14 @@ def test_random_colors(test_len=8, smooth=False):
53
50
 
54
51
  def test_toogle():
55
52
  main_function = 'rgb toggle'
56
- args_on = base_cmd() + [f'{main_function} True >json']
57
- args_toggle = base_cmd() + [f'{main_function} >json']
53
+ args_on = [f'{main_function} True >json']
54
+ args_toggle = [f'{main_function} >json']
58
55
 
59
56
  # SEND MESSSAGE OVER micrOS client
60
- status, answer = socketClient.run(args_on)
57
+ status, answer = CLIENT.run(args_on)
61
58
  if status and '"S": 1' in answer:
62
59
  # SEND MESSSAGE OVER micrOS client
63
- status, answer = socketClient.run(args_toggle)
60
+ status, answer = CLIENT.run(args_toggle)
64
61
  if status and '"S": 0' in answer:
65
62
  return True, '{} works {}OK{}'.format(main_function, Colors.OK, Colors.NC)
66
63
  return False, '{} not works {}NOK{}: {}'.format(main_function, Colors.ERR, Colors.NC, answer)
@@ -68,24 +65,23 @@ def test_toogle():
68
65
 
69
66
  def test_brightness():
70
67
  main_function = 'rgb brightness'
71
- args_10 = base_cmd() + [f'{main_function} 10 >json']
72
- args_50 = base_cmd() + [f'{main_function} 50 >json']
73
- args_actual_br = base_cmd() + [f'{main_function} >json']
68
+ args_10 = [f'{main_function} 10 >json']
69
+ args_50 = [f'{main_function} 50 >json']
70
+ args_actual_br = [f'{main_function} >json']
74
71
 
75
- status, answer = socketClient.run(args_10)
72
+ status, answer = CLIENT.run(args_10)
76
73
  if status:
77
- status, answer = socketClient.run(args_50)
74
+ status, answer = CLIENT.run(args_50)
78
75
  if status:
79
- status, answer = socketClient.run(args_actual_br)
76
+ status, answer = CLIENT.run(args_actual_br)
80
77
  if status and "50.0 %" in answer:
81
78
  return True, "{} function {}OK{} (50.0 % == {})".format(main_function, Colors.OK, Colors.NC, answer)
82
79
  return False, "{} function {}NOK{} (50.0 % == {})".format(main_function, Colors.ERR, Colors.NC, answer)
83
80
 
84
81
 
85
- def app(devfid=None):
86
- global DEVICE
87
- if devfid is not None:
88
- DEVICE = devfid
82
+ def app(devfid=None, pwd=None):
83
+ global CLIENT
84
+ CLIENT = AppBase(device=devfid, password=pwd)
89
85
 
90
86
  test_pool = { 'Color change test': test_random_colors(test_len=8, smooth=False),
91
87
  'Color smooth test': test_random_colors(test_len=4, smooth=True),