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
micrOS/source/uapi.js DELETED
@@ -1,76 +0,0 @@
1
- // Get the current hostname and create the REST API URL
2
- const currentHostname = window.location.hostname;
3
- const port = window.location.port ? `:${window.location.port}` : "";
4
-
5
-
6
- function restAPICore(cmd) {
7
- // Core micrOS rest API handler
8
- cmd = cmd.trim().replace(/\s+/g, '/');
9
- let query = `http://${currentHostname}${port}/rest/${cmd}`;
10
- const startTime = performance.now();
11
- let endTime;
12
- // Call rest api with command parameter and return the promise
13
- return fetch(query).then(response => {
14
- if (!response.ok) {
15
- throw new Error('restAPICore code NOK: ' + response.status);
16
- }
17
- endTime = performance.now();
18
- return response.json();
19
- }).then(response => {
20
- // return cmd result
21
- const delta = (endTime - startTime).toFixed(0);
22
- return { response, delta, query }; // RETURN DATA
23
- }).catch(error => {
24
- console.error('Error in restAPICore:', error);
25
- throw error;
26
- });
27
- }
28
-
29
- function restAPI(cmd='', console=true) {
30
- // micrOS rest API handler with built-in restCmdInput
31
- // UPDATES: restConsole(...)
32
- if (cmd == '') {
33
- cmd = document.getElementById('restCmdInput').value;
34
- }
35
- return restAPICore(cmd)
36
- .then(({ response, delta, query }) => {
37
- if (console) {
38
- restConsole(query, response, delta);
39
- }
40
- return response
41
- }).catch(error => {
42
- console.error('Error in restAPI:', error);
43
- });
44
- }
45
-
46
- function restConsole(apiUrl, data, delta) {
47
- // UPDATES: restConsoleUrl, restConsoleResponse, restConsoleTime
48
- document.getElementById('restConsoleUrl').innerHTML = `<strong>Generated URL:</strong><br> <a href="${apiUrl}" target="_blank" style="color: white;">${apiUrl}</a>`;
49
- document.getElementById('restConsoleResponse').innerHTML = JSON.stringify(data, null, 4).replace(/\\n/g, "<br/>" + "&nbsp;".repeat(15));
50
- document.getElementById('restConsoleTime').innerHTML = `⏱ Response time: ${delta} ms`;
51
- }
52
-
53
- function restInfo() {
54
- // UPDATES: 'restInfo' and restConsole(...)
55
- restAPICore(cmd='').then(({ response, delta, query }) => {
56
- // Update API Console
57
- restConsole(query, response, delta)
58
- // Update 'SysApiInfo' tag
59
- let infoHeader = Object.entries(response['result'])
60
- .filter(([key]) => key !== 'usr_endpoints') // Exclude usr_endpoints
61
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`);
62
- if (infoHeader[2].endsWith("true")) { // check auth: true
63
- infoHeader[2] = "🔑";
64
- } else {infoHeader.splice(2, 1);}
65
- infoHeader = infoHeader.join(' ❖ ').replace(/"/g, '');
66
- let infoSubpages = (response['result']['usr_endpoints'] ? "<br><br>📎 " + Object.entries(response['result']['usr_endpoints'])
67
- .map(([key, value]) => `<a href="${value}" target="_blank" style="color: white;">${value} </a>`)
68
- .join(' | ') : '');
69
- document.getElementById('restInfo').innerHTML = infoHeader + infoSubpages;
70
- }).catch(error => {
71
- console.error('Error in restAPI:', error);
72
- });
73
- }
74
-
75
- // Init basic info from board
76
- // restInfo();
@@ -1,137 +0,0 @@
1
- // API HELPER FUNCTION - get module exposed widgets
2
-
3
- function moduleHelp(module) {
4
- // Get and Parse module widget help message
5
- let endpoint = `${module}/help/True`;
6
- console.log(`[API] Endpoint: ${endpoint}`)
7
- return restAPI(endpoint).then(commands => {
8
- //console.log(`Raw ${module} help: ${commands.result}`)
9
- // Replace all occurrences of \" with " in each string and parse each string into a JSON object
10
- const parsedWidgets = commands.result.map(item => {
11
- const cleanedItem = item.replace(/\\"/g, '"'); // Workaround...
12
- return JSON.parse(cleanedItem);
13
- });
14
- console.log(`Parsed ${module} help:`);
15
- console.log(parsedWidgets)
16
- return parsedWidgets
17
- }).catch(error => {
18
- console.error(error)
19
- return [];
20
- });
21
- }
22
-
23
- // PAGE GENERATION
24
-
25
- function containerAppendChild(elements, container) {
26
- // Append list of elements into the container aka draw elements :D
27
- if (!elements || !container) {
28
- console.error("Inputs array or container element is missing.");
29
- return;}
30
- elements.forEach(function(element) {
31
- container.appendChild(element);});
32
- }
33
-
34
- function generateElement(type, data, options={}) {
35
- // type: slider, button, box, h1, h2, p, li, etc.
36
- // data: rest command
37
- const container = document.getElementById('dynamicContent');
38
- if (type.toLowerCase() === 'slider') {
39
- // Create slider widget
40
- sliderWidget(container, data, options)
41
- } else if (type.toLowerCase() === 'button') {
42
- // Create button widget
43
- buttonWidget(container, data, options)
44
- } else if (type.toLowerCase() === 'textbox') {
45
- // Create textbox widget
46
- textBoxWidget(container, data, options)
47
- } else if (type.toLowerCase() === 'color') {
48
- // Create color palette widget
49
- colorPaletteWidget(container, data, options)
50
- } else {
51
- // Create other elements
52
- const paragraph = document.createElement('p');
53
- const element = document.createElement(type);
54
- element.textContent = data;
55
- containerAppendChild([paragraph, element], container);
56
- }
57
- }
58
-
59
- function autoTitleLen(widgets, func) {
60
- try {
61
- // Create function list for comparation
62
- const funcNames = widgets.map(command => command.lm_call.split(' ')[0]);
63
- // Count the occurrences of the func name
64
- const count = funcNames.filter(word => word === func).length;
65
- // Return 2 if count is greater than 1, otherwise return 1
66
- return count > 1 ? 2 : 1;
67
- } catch (error) {
68
- console.error(error);
69
- return 1;
70
- }
71
- }
72
-
73
- function craftModuleWidgets(module, widgets) {
74
- // Create ALL exposed module function widgets
75
- if (widgets.length === 0) {
76
- console.log(`${module} no exposed widgets`);
77
- return;
78
- }
79
- console.log(`Craft widgets bind to ${module}`);
80
- generateElement(type='h2', data=`🧬 ${module}`);
81
- // Check widget data struct for the given module
82
- widgets.forEach(item => {
83
- let type = item.type;
84
- let type_options = {};
85
- let lm_call = item.lm_call.replace(/\s/g, '/');
86
-
87
- if (type === 'slider') {
88
- type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
89
- type_options['range'] = item.range;
90
-
91
- } else if (type === 'button' || type === 'toggle') {
92
- type = 'button';
93
- type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
94
- type_options['range'] = item.range;
95
-
96
- } else if (type === 'textbox') {
97
- type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
98
- type_options['refresh'] = item.refresh;
99
-
100
- } else if (type === 'color') {
101
- type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
102
- type_options['range'] = item.range;
103
-
104
- } else {
105
- console.log(`Unsupported micrOS widget html_type: ${type}`)
106
- return;
107
- }
108
- try {
109
- generateElement(type=type, data=`${module}/${lm_call}`, options=type_options);
110
- } catch (error) {
111
- console.error(error);
112
- }
113
- })
114
- }
115
-
116
-
117
- function DynamicWidgetLoad() {
118
- // INIT DASHBOARD (load active modules -> build page)
119
- restAPI('modules').then(data => {
120
- //console.log(data);
121
- const app_list = data['result'];
122
- // Handle the app_list data here
123
- for (const module of app_list) {
124
- // NEW module widget query
125
- moduleHelp(module).then(widgets => {
126
- craftModuleWidgets(module, widgets)
127
- }).catch(error => {
128
- // You can work with parsedWidgets here
129
- console.error(error);
130
- });
131
- }
132
- }).catch(error => {
133
- console.error(error);
134
- });
135
- }
136
-
137
- // craftModuleWidgets
micrOS/source/ustyle.css DELETED
@@ -1,28 +0,0 @@
1
- @keyframes backgroundAnimation {
2
- 0% {background-position: 0% 50%;}
3
- 50% {background-position: 100% 50%;}
4
- 100% {background-position: 0% 50%;}
5
- }
6
- body {
7
- height: 100vh; /* Set the height to 100% of the viewport height */
8
- width: 100vh; /* Set the width to 200% of the viewport height */
9
- padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
10
- margin: 40px;
11
- background: linear-gradient(110deg, #4b3c66, #21184f, #712336);
12
- background-size: 200% 200%;
13
- animation: backgroundAnimation 15s infinite;
14
- color: #d9d9d9;
15
- font-family: 'Verdana', Sans-serif;
16
- }
17
- button {
18
- background-color: #e7e7e7; /* Gray */
19
- border: none;
20
- color: black;
21
- font-size: 14px;
22
- border-radius: 4px;
23
- transition-duration: 0.4s;
24
- }
25
- button:hover {
26
- background-color: #555555; /* Black */
27
- color: white;
28
- }
micrOS/source/uwidgets.js DELETED
@@ -1,179 +0,0 @@
1
- // WIDGETS ELEMENTS
2
-
3
- const widget_indent = '40px';
4
- const windowWidth = window.innerWidth;
5
-
6
- function sliderWidget(container, command, options={}) {
7
- const title_len = options.title_len || 1;
8
- const paragraph = document.createElement('p');
9
-
10
- paragraph.style.textIndent = widget_indent;
11
- paragraph.textContent = command.split('/').slice(1, title_len+1).join('-').replace(/=/g, '').replace(':range:', '');
12
- // Create a slider
13
- const element = document.createElement('input');
14
- element.style.marginLeft = widget_indent;
15
- element.type = 'range';
16
- element.min = options.range[0] || 0;
17
- element.max = options.range[1] || 100;
18
- element.step = options.range[2] || 5;
19
- element.value = Math.round((element.max-element.min)/2);
20
- element.style.width = Math.min(windowWidth * 0.6, 300) + 'px';
21
-
22
- // Create a span to display the slider value
23
- var valueDisplay = document.createElement('span');
24
- valueDisplay.textContent = element.value;
25
- element.addEventListener('input', function () {
26
- valueDisplay.textContent = this.value;
27
- });
28
- // Add an event listener for API CALL
29
- element.addEventListener('change', function () {
30
- var call_cmd;
31
- if (options.hasOwnProperty('range')) {
32
- // NEW
33
- call_cmd = command.replace(':range:', this.value);
34
- } else {
35
- // LEGACY
36
- if (command.endsWith("=")) {
37
- call_cmd = `${command}${this.value}`
38
- } else {
39
- call_cmd = `${command}/${this.value}`;
40
- }
41
- }
42
- console.log(`[API] Slider exec: ${call_cmd}`);
43
- restAPI(call_cmd);
44
- });
45
- containerAppendChild([paragraph, element, valueDisplay], container);
46
- }
47
-
48
- function buttonWidget(container, command, options={}) {
49
- const title_len = options.title_len || 1;
50
- const paragraph = document.createElement('p');
51
- paragraph.style.textIndent = widget_indent;
52
- // Create a button
53
- const element = document.createElement('button');
54
- element.style.marginLeft = widget_indent;
55
- element.textContent = command.split('/').slice(1, title_len+1).join('-');
56
- element.style.height = '30px';
57
- // Add an event listener for API CALL
58
- element.addEventListener('click', function () {
59
- var call_cmd;
60
- if (options.hasOwnProperty('range')) {
61
- // NEW
62
- call_cmd = command.replace(':range:', 'None');
63
- } else {
64
- // LEGACY
65
- call_cmd = command;
66
- }
67
- console.log(`[API] Button clicked: ${call_cmd}`);
68
- restAPI(call_cmd);
69
- });
70
- containerAppendChild([paragraph, element], container);
71
- }
72
-
73
- function textBoxWidget(container, command, options={}) {
74
- const title_len = options.title_len || 1;
75
- const refresh = options.refresh || 5000;
76
- const paragraph = document.createElement('p');
77
-
78
- paragraph.style.textIndent = widget_indent;
79
- paragraph.textContent = command.split('/').slice(1, title_len+1).join('-');
80
- // Create a small box (div)
81
- const uniqueId = `textbox-${command}`;
82
- const element = document.createElement('div');
83
- element.id = uniqueId;
84
- element.style.marginLeft = widget_indent;
85
- element.style.width = '30%';
86
- element.style.height = '60px';
87
- element.style.paddingTop = '10px';
88
- element.style.paddingLeft = '10px';
89
- element.style.border = '2px solid #e7e7e7';
90
- element.style.borderRadius = '4px';
91
-
92
- const updateTextbox = () => {
93
- const call_cmd = command.replace(':range:', 'None');
94
- restAPI(call_cmd).then(resp => {
95
- console.log(`[API] textBox[${uniqueId}] call: ${call_cmd}`);
96
- document.getElementById(uniqueId).textContent = JSON.stringify(resp.result, null, 4);
97
- }).catch(error => {
98
- console.error('[API] Textbox error:', error);
99
- document.getElementById(uniqueId).textContent = 'Error loading data';
100
- });
101
- };
102
-
103
- // Call updateTextbox initially
104
- updateTextbox();
105
- if (refresh > 0) {
106
- // Call updateTextbox every 5 seconds (default: 5000)
107
- const intervalId = setInterval(updateTextbox, refresh);
108
- // Clear the interval when the container is removed from the DOM
109
- container.addEventListener('DOMNodeRemovedFromDocument', () => {
110
- clearInterval(intervalId);
111
- });
112
- }
113
- containerAppendChild([paragraph, element], container);
114
- }
115
-
116
- function colorPaletteWidget(container, command, options) {
117
- function hexToRgb(hex, max=255) {
118
- // Remove the hash at the start if it's there
119
- hex = hex.replace(/^#/, '');
120
- // Parse the r, g, b values
121
- let bigint = parseInt(hex, 16);
122
- let r = (bigint >> 16) & 255;
123
- let g = (bigint >> 8) & 255;
124
- let b = bigint & 255;
125
- if (max > 255) {
126
- // upscale 0-255 range
127
- const ratio = max / 255;
128
- r = Math.round(r * ratio);
129
- g = Math.round(g * ratio);
130
- b = Math.round(b * ratio);
131
- }
132
- return { r, g, b };
133
- }
134
- function getRandomColorFromList() {
135
- const colors = ['#542040', '#2b2155', '#4c1e44', '#56213f', '#853366', '#493984', '#6f3487'];
136
- // Generate a random index within the range of the colors array
137
- const randomIndex = Math.floor(Math.random() * colors.length);
138
- // Return the color at the random index
139
- return colors[randomIndex];
140
- }
141
-
142
- const title_len = options.title_len || 1;
143
- const max_val = options.range[1] || 255
144
- // Create elements
145
- const paragraph = document.createElement('p');
146
- const colorPicker = document.createElement('input');
147
- const selectedColor = document.createElement('span');
148
-
149
- // Set up the color picker
150
- paragraph.style.textIndent = widget_indent;
151
- paragraph.textContent = command.split('/').slice(1, title_len+1).join('-');
152
- colorPicker.type = 'color';
153
- colorPicker.value = getRandomColorFromList(); // initial color
154
- colorPicker.classList.add('custom-color-picker');
155
- colorPicker.style.width = '60px';
156
- colorPicker.style.height = '40px';
157
- colorPicker.style.marginLeft = '40px';
158
-
159
- // Add an event listener to update the displayed color value
160
- colorPicker.addEventListener('change', function () {
161
- //selectedColor.textContent = colorPicker.value; //TODO: debug
162
- const rgbColor = hexToRgb(colorPicker.value, max_val);
163
- var call_cmd;
164
- if (options.hasOwnProperty('range')) {
165
- call_cmd = command.replace('r=:range:', `r=${rgbColor.r}`);
166
- call_cmd = call_cmd.replace('g=:range:', `g=${rgbColor.g}`);
167
- call_cmd = call_cmd.replace('b=:range:', `b=${rgbColor.b}`);
168
- } else {
169
- console.error("colorPaletteWidget missing input range")
170
- return
171
- }
172
- console.log(`[API] colorPalette exec: ${call_cmd}`);
173
- restAPI(call_cmd);
174
- });
175
-
176
- containerAppendChild([paragraph, colorPicker, selectedColor], container);
177
- }
178
-
179
- // sliderWidget