micrOSDevToolKit 2.9.1__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 (368) hide show
  1. env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  2. env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +17 -1
  3. micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  4. micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  5. micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  6. micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  7. micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  8. micrOS/micropython/{esp32s3-20241129-v1.24.1.bin → esp32s3-4MBflash-20241129-v1.24.1.bin} +0 -0
  9. micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  10. micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  11. micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  12. micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  13. micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +167 -163
  14. micrOS/source/Auth.py +37 -0
  15. micrOS/source/Common.py +361 -116
  16. micrOS/source/Config.py +32 -22
  17. micrOS/source/Debug.py +50 -94
  18. micrOS/source/Espnow.py +377 -100
  19. micrOS/source/Files.py +207 -0
  20. micrOS/source/Hooks.py +48 -20
  21. micrOS/source/InterConnect.py +126 -42
  22. micrOS/source/Interrupts.py +6 -6
  23. micrOS/source/Logger.py +63 -26
  24. micrOS/source/Network.py +41 -21
  25. micrOS/source/Notify.py +48 -22
  26. micrOS/source/Pacman.py +326 -0
  27. micrOS/source/Scheduler.py +14 -54
  28. micrOS/source/Server.py +67 -69
  29. micrOS/source/Shell.py +99 -91
  30. micrOS/source/Tasks.py +141 -95
  31. micrOS/source/Time.py +19 -18
  32. micrOS/source/Types.py +53 -9
  33. micrOS/source/Web.py +381 -76
  34. micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  35. micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  36. micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  37. micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  38. micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  39. micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  40. micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  41. micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  42. micrOS/source/config/_git.keep +0 -0
  43. micrOS/source/helpers.py +132 -0
  44. micrOS/source/micrOS.py +17 -7
  45. micrOS/source/micrOSloader.py +5 -12
  46. micrOS/source/microIO.py +44 -20
  47. micrOS/source/modules/IO_esp32c6.py +38 -0
  48. micrOS/source/{IO_esp32s3.py → modules/IO_esp32s3.py} +37 -1
  49. micrOS/source/{IO_m5stamp.py → modules/IO_m5stamp.py} +35 -1
  50. micrOS/source/{IO_qtpy.py → modules/IO_qtpy.py} +22 -17
  51. micrOS/source/{IO_tinypico.py → modules/IO_tinypico.py} +38 -0
  52. micrOS/source/modules/LM_L298N.py +161 -0
  53. {toolkit/workspace/precompiled → micrOS/source/modules}/LM_L9110_DCmotor.py +3 -3
  54. micrOS/source/{LM_OV2640.py → modules/LM_OV2640.py} +45 -27
  55. micrOS/source/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +3 -3
  56. micrOS/source/{LM_aht10.py → modules/LM_aht10.py} +2 -2
  57. micrOS/source/{LM_bme280.py → modules/LM_bme280.py} +3 -3
  58. micrOS/source/{LM_buzzer.py → modules/LM_buzzer.py} +18 -25
  59. micrOS/source/{LM_cct.py → modules/LM_cct.py} +17 -21
  60. micrOS/source/modules/LM_cluster.py +255 -0
  61. micrOS/source/{LM_co2.py → modules/LM_co2.py} +3 -3
  62. micrOS/source/{LM_dht11.py → modules/LM_dht11.py} +2 -2
  63. micrOS/source/{LM_dht22.py → modules/LM_dht22.py} +2 -2
  64. micrOS/source/{LM_dimmer.py → modules/LM_dimmer.py} +9 -9
  65. micrOS/source/{LM_distance.py → modules/LM_distance.py} +4 -6
  66. micrOS/source/{LM_ds18.py → modules/LM_ds18.py} +2 -2
  67. micrOS/source/{LM_esp32.py → modules/LM_esp32.py} +5 -0
  68. micrOS/source/modules/LM_espnow.py +53 -0
  69. micrOS/source/modules/LM_fileserver.py +265 -0
  70. micrOS/source/{LM_genIO.py → modules/LM_genIO.py} +52 -37
  71. micrOS/source/{LM_haptic.py → modules/LM_haptic.py} +2 -2
  72. {toolkit/workspace/precompiled → micrOS/source/modules}/LM_i2c.py +5 -4
  73. micrOS/source/{LM_i2s_mic.py → modules/LM_i2s_mic.py} +6 -7
  74. micrOS/source/{LM_ld2410.py → modules/LM_ld2410.py} +2 -2
  75. micrOS/source/{LM_light_sensor.py → modules/LM_light_sensor.py} +10 -21
  76. micrOS/source/modules/LM_mh_z19c.py +198 -0
  77. micrOS/source/modules/LM_neoeffects.py +284 -0
  78. micrOS/source/{LM_neopixel.py → modules/LM_neopixel.py} +19 -23
  79. micrOS/source/{LM_oled.py → modules/LM_oled.py} +2 -2
  80. micrOS/source/{LM_oled_sh1106.py → modules/LM_oled_sh1106.py} +3 -3
  81. micrOS/source/{LM_oled_ui.py → modules/LM_oled_ui.py} +72 -64
  82. micrOS/source/modules/LM_pacman.py +320 -0
  83. micrOS/source/{LM_presence.py → modules/LM_presence.py} +11 -15
  84. micrOS/source/modules/LM_qmi8658.py +204 -0
  85. micrOS/source/{LM_rencoder.py → modules/LM_rencoder.py} +2 -2
  86. micrOS/source/{LM_rest.py → modules/LM_rest.py} +4 -6
  87. micrOS/source/{LM_rgb.py → modules/LM_rgb.py} +21 -29
  88. micrOS/source/{LM_roboarm.py → modules/LM_roboarm.py} +8 -8
  89. micrOS/source/modules/LM_robustness.py +137 -0
  90. micrOS/source/{LM_servo.py → modules/LM_servo.py} +3 -3
  91. micrOS/source/{LM_stepper.py → modules/LM_stepper.py} +5 -5
  92. micrOS/source/{LM_switch.py → modules/LM_switch.py} +11 -9
  93. micrOS/source/{LM_system.py → modules/LM_system.py} +38 -32
  94. micrOS/source/modules/LM_tcs3472.py +187 -0
  95. micrOS/source/{LM_telegram.py → modules/LM_telegram.py} +164 -116
  96. micrOS/source/{LM_trackball.py → modules/LM_trackball.py} +3 -3
  97. micrOS/source/{LM_veml7700.py → modules/LM_veml7700.py} +2 -2
  98. micrOS/source/modules/LM_web.py +38 -0
  99. micrOS/source/urequests.py +39 -15
  100. {toolkit/workspace/precompiled → micrOS/source/web}/dashboard.html +4 -0
  101. micrOS/source/web/editor.js +440 -0
  102. micrOS/source/web/filesui.html +178 -0
  103. micrOS/source/web/filesui.js +338 -0
  104. {toolkit/workspace/precompiled → micrOS/source/web}/index.html +44 -2
  105. micrOS/source/{uapi.js → web/uapi.js} +48 -7
  106. micrOS/source/{ustyle.css → web/ustyle.css} +6 -3
  107. micrOS/utests/__init__.py +0 -0
  108. micrOS/utests/test_scheduler.py +435 -0
  109. {micrOSDevToolKit-2.9.1.data → microsdevtoolkit-2.26.1.data}/scripts/devToolKit.py +33 -3
  110. {micrOSDevToolKit-2.9.1.dist-info → microsdevtoolkit-2.26.1.dist-info}/METADATA +327 -268
  111. microsdevtoolkit-2.26.1.dist-info/RECORD +396 -0
  112. {micrOSDevToolKit-2.9.1.dist-info → microsdevtoolkit-2.26.1.dist-info}/WHEEL +1 -1
  113. toolkit/DevEnvCompile.py +63 -33
  114. toolkit/DevEnvOTA.py +58 -22
  115. toolkit/DevEnvUSB.py +110 -55
  116. toolkit/Gateway.py +6 -6
  117. toolkit/LM_to_compile.dat +6 -4
  118. toolkit/MicrOSDevEnv.py +127 -57
  119. toolkit/WebRepl.py +73 -0
  120. toolkit/dashboard_apps/BackupRestore.py +20 -35
  121. toolkit/dashboard_apps/CCTDemo.py +12 -17
  122. toolkit/dashboard_apps/CCTTest.py +20 -24
  123. toolkit/dashboard_apps/CamStream.py +2 -6
  124. toolkit/dashboard_apps/CatGame.py +14 -16
  125. toolkit/dashboard_apps/Dimmer.py +11 -21
  126. toolkit/dashboard_apps/GetVersion.py +11 -19
  127. toolkit/dashboard_apps/MicrophoneTest.py +1 -6
  128. toolkit/dashboard_apps/NeoEffectsDemo.py +22 -35
  129. toolkit/dashboard_apps/NeopixelTest.py +20 -25
  130. toolkit/dashboard_apps/PresenceTest.py +2 -8
  131. toolkit/dashboard_apps/QMI8685_GYRO.py +68 -0
  132. toolkit/dashboard_apps/RGBTest.py +20 -24
  133. toolkit/dashboard_apps/RoboArm.py +24 -32
  134. toolkit/dashboard_apps/SED_test.py +10 -14
  135. toolkit/dashboard_apps/SensorsTest.py +61 -0
  136. toolkit/dashboard_apps/SystemTest.py +202 -105
  137. toolkit/dashboard_apps/Template_app.py +11 -23
  138. toolkit/dashboard_apps/_app_base.py +34 -0
  139. toolkit/dashboard_apps/_gyro_visualizer.py +78 -0
  140. toolkit/dashboard_apps/uLightDemo.py +15 -24
  141. toolkit/index.html +4 -4
  142. toolkit/lib/LocalMachine.py +6 -1
  143. toolkit/lib/MicrosFiles.py +46 -0
  144. toolkit/lib/Repository.py +64 -0
  145. toolkit/lib/TerminalColors.py +4 -0
  146. toolkit/lib/macroScript.py +6 -0
  147. toolkit/lib/micrOSClient.py +123 -50
  148. toolkit/lib/micrOSClientHistory.py +156 -0
  149. toolkit/lib/pip_package_installer.py +5 -2
  150. toolkit/micrOSdashboard.py +12 -17
  151. toolkit/micrOSlint.py +20 -8
  152. toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  153. toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  154. toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  155. toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  156. toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  157. toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  158. toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  159. toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  160. toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  161. toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  162. toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  163. toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  164. toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  165. toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  166. toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  167. toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  168. toolkit/simulator_lib/aioespnow.py +28 -0
  169. toolkit/simulator_lib/dht.py +1 -1
  170. toolkit/simulator_lib/framebuf.py +49 -1
  171. toolkit/simulator_lib/machine.py +17 -2
  172. toolkit/simulator_lib/micropython.py +3 -3
  173. toolkit/simulator_lib/mip.py +165 -0
  174. toolkit/simulator_lib/neopixel.py +3 -2
  175. toolkit/simulator_lib/network.py +2 -1
  176. toolkit/simulator_lib/node_config.json +2 -3
  177. toolkit/simulator_lib/ntptime.py +1 -1
  178. toolkit/simulator_lib/{sim_console.py → sim_common.py} +2 -3
  179. toolkit/simulator_lib/simgc.py +6 -2
  180. toolkit/simulator_lib/simulator.py +137 -59
  181. toolkit/simulator_lib/uasyncio.py +33 -2
  182. toolkit/simulator_lib/uos.py +147 -0
  183. toolkit/simulator_lib/urandom.py +4 -0
  184. toolkit/socketClient.py +43 -23
  185. toolkit/user_data/webhooks/generic.py +1 -1
  186. toolkit/user_data/webhooks/macro.py +1 -1
  187. toolkit/user_data/webhooks/template.py +1 -1
  188. toolkit/workspace/precompiled/Auth.mpy +0 -0
  189. toolkit/workspace/precompiled/Common.mpy +0 -0
  190. toolkit/workspace/precompiled/Config.mpy +0 -0
  191. toolkit/workspace/precompiled/Debug.mpy +0 -0
  192. toolkit/workspace/precompiled/Espnow.mpy +0 -0
  193. toolkit/workspace/precompiled/Files.mpy +0 -0
  194. toolkit/workspace/precompiled/Hooks.mpy +0 -0
  195. toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  196. toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  197. toolkit/workspace/precompiled/Logger.mpy +0 -0
  198. toolkit/workspace/precompiled/Network.mpy +0 -0
  199. toolkit/workspace/precompiled/Notify.mpy +0 -0
  200. toolkit/workspace/precompiled/Pacman.mpy +0 -0
  201. toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  202. toolkit/workspace/precompiled/Server.mpy +0 -0
  203. toolkit/workspace/precompiled/Shell.mpy +0 -0
  204. toolkit/workspace/precompiled/Tasks.mpy +0 -0
  205. toolkit/workspace/precompiled/Time.mpy +0 -0
  206. toolkit/workspace/precompiled/Types.mpy +0 -0
  207. toolkit/workspace/precompiled/Web.mpy +0 -0
  208. toolkit/workspace/precompiled/_mpy.version +1 -1
  209. toolkit/workspace/precompiled/config/_git.keep +0 -0
  210. toolkit/workspace/precompiled/helpers.mpy +0 -0
  211. toolkit/workspace/precompiled/micrOS.mpy +0 -0
  212. toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  213. toolkit/workspace/precompiled/microIO.mpy +0 -0
  214. toolkit/workspace/precompiled/{IO_esp32.mpy → modules/IO_esp32.mpy} +0 -0
  215. toolkit/workspace/precompiled/{IO_esp32c3.mpy → modules/IO_esp32c3.mpy} +0 -0
  216. toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  217. toolkit/workspace/precompiled/{IO_esp32s2.mpy → modules/IO_esp32s2.mpy} +0 -0
  218. toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  219. toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  220. toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  221. toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  222. toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  223. toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
  224. {micrOS/source → toolkit/workspace/precompiled/modules}/LM_L9110_DCmotor.py +3 -3
  225. toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  226. toolkit/workspace/precompiled/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +3 -3
  227. toolkit/workspace/precompiled/{LM_aht10.mpy → modules/LM_aht10.mpy} +0 -0
  228. toolkit/workspace/precompiled/{LM_bme280.mpy → modules/LM_bme280.mpy} +0 -0
  229. toolkit/workspace/precompiled/{LM_buzzer.mpy → modules/LM_buzzer.mpy} +0 -0
  230. toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  231. toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  232. toolkit/workspace/precompiled/{LM_co2.mpy → modules/LM_co2.mpy} +0 -0
  233. toolkit/workspace/precompiled/{LM_dht11.mpy → modules/LM_dht11.mpy} +0 -0
  234. toolkit/workspace/precompiled/{LM_dht22.mpy → modules/LM_dht22.mpy} +0 -0
  235. toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  236. toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
  237. toolkit/workspace/precompiled/{LM_ds18.mpy → modules/LM_ds18.mpy} +0 -0
  238. toolkit/workspace/precompiled/{LM_esp32.py → modules/LM_esp32.py} +5 -0
  239. toolkit/workspace/precompiled/modules/LM_espnow.py +53 -0
  240. toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  241. toolkit/workspace/precompiled/{LM_gameOfLife.mpy → modules/LM_gameOfLife.mpy} +0 -0
  242. toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  243. toolkit/workspace/precompiled/{LM_haptic.mpy → modules/LM_haptic.mpy} +0 -0
  244. {micrOS/source → toolkit/workspace/precompiled/modules}/LM_i2c.py +5 -4
  245. toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  246. toolkit/workspace/precompiled/{LM_ld2410.mpy → modules/LM_ld2410.mpy} +0 -0
  247. toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  248. toolkit/workspace/precompiled/modules/LM_mh_z19c.py +198 -0
  249. toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  250. toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  251. toolkit/workspace/precompiled/{LM_oled.mpy → modules/LM_oled.mpy} +0 -0
  252. toolkit/workspace/precompiled/{LM_oled_sh1106.mpy → modules/LM_oled_sh1106.mpy} +0 -0
  253. toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  254. toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  255. toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  256. toolkit/workspace/precompiled/modules/LM_qmi8658.py +204 -0
  257. toolkit/workspace/precompiled/{LM_rencoder.py → modules/LM_rencoder.py} +2 -2
  258. toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  259. toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  260. toolkit/workspace/precompiled/{LM_rgbcct.mpy → modules/LM_rgbcct.mpy} +0 -0
  261. toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
  262. toolkit/workspace/precompiled/modules/LM_robustness.py +137 -0
  263. toolkit/workspace/precompiled/{LM_servo.mpy → modules/LM_servo.mpy} +0 -0
  264. toolkit/workspace/precompiled/{LM_sound_event.mpy → modules/LM_sound_event.mpy} +0 -0
  265. toolkit/workspace/precompiled/{LM_stepper.mpy → modules/LM_stepper.mpy} +0 -0
  266. toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  267. toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  268. toolkit/workspace/precompiled/modules/LM_tcs3472.py +187 -0
  269. toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  270. toolkit/workspace/precompiled/{LM_tinyrgb.mpy → modules/LM_tinyrgb.mpy} +0 -0
  271. toolkit/workspace/precompiled/{LM_trackball.mpy → modules/LM_trackball.mpy} +0 -0
  272. toolkit/workspace/precompiled/{LM_veml7700.mpy → modules/LM_veml7700.mpy} +0 -0
  273. toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  274. toolkit/workspace/precompiled/urequests.mpy +0 -0
  275. {micrOS/source → toolkit/workspace/precompiled/web}/dashboard.html +4 -0
  276. toolkit/workspace/precompiled/web/editor.js +440 -0
  277. toolkit/workspace/precompiled/web/filesui.html +178 -0
  278. toolkit/workspace/precompiled/web/filesui.js +338 -0
  279. {micrOS/source → toolkit/workspace/precompiled/web}/index.html +44 -2
  280. toolkit/workspace/precompiled/{uapi.js → web/uapi.js} +48 -7
  281. toolkit/workspace/precompiled/{ustyle.css → web/ustyle.css} +6 -3
  282. micrOS/micropython/esp32-20241129-v1.24.1.bin +0 -0
  283. micrOS/micropython/esp32c3-20240222-v1.22.2.bin +0 -0
  284. micrOS/micropython/esp32s2-20240602-v1.23.0.bin +0 -0
  285. micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
  286. micrOS/micropython/esp32s2-LOLIN_MINI-20240602-v1.23.0.bin +0 -0
  287. micrOS/micropython/esp32s3-20240105-v1.22.1.bin +0 -0
  288. micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
  289. micrOS/micropython/esp32s3_spiram_oct-20241129-v1.24.1.bin +0 -0
  290. micrOS/micropython/rpi-pico-w-20241129-v1.24.1.uf2 +0 -0
  291. micrOS/micropython/tinypico-20241129-v1.24.1.bin +0 -0
  292. micrOS/source/LM_L298N_DCmotor.py +0 -86
  293. micrOS/source/LM_catgame.py +0 -75
  294. micrOS/source/LM_dashboard_be.py +0 -37
  295. micrOS/source/LM_demo.py +0 -97
  296. micrOS/source/LM_espnow.py +0 -23
  297. micrOS/source/LM_intercon.py +0 -57
  298. micrOS/source/LM_keychain.py +0 -322
  299. micrOS/source/LM_lmpacman.py +0 -126
  300. micrOS/source/LM_neoeffects.py +0 -331
  301. micrOS/source/LM_oledui.py +0 -972
  302. micrOS/source/LM_pet_feeder.py +0 -78
  303. micrOS/source/LM_ph_sensor.py +0 -51
  304. micrOS/source/LM_robustness.py +0 -74
  305. micrOS/source/reset.py +0 -11
  306. micrOSDevToolKit-2.9.1.dist-info/RECORD +0 -365
  307. toolkit/dashboard_apps/AirQualityBME280.py +0 -36
  308. toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -36
  309. toolkit/lib/file_extensions.py +0 -16
  310. toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
  311. toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
  312. toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
  313. toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
  314. toolkit/workspace/precompiled/IO_m5stamp.mpy +0 -0
  315. toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
  316. toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
  317. toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
  318. toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
  319. toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
  320. toolkit/workspace/precompiled/LM_catgame.py +0 -75
  321. toolkit/workspace/precompiled/LM_cct.mpy +0 -0
  322. toolkit/workspace/precompiled/LM_dashboard_be.py +0 -37
  323. toolkit/workspace/precompiled/LM_demo.py +0 -97
  324. toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
  325. toolkit/workspace/precompiled/LM_distance.mpy +0 -0
  326. toolkit/workspace/precompiled/LM_espnow.py +0 -23
  327. toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
  328. toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
  329. toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
  330. toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
  331. toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
  332. toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
  333. toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
  334. toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
  335. toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
  336. toolkit/workspace/precompiled/LM_oledui.mpy +0 -0
  337. toolkit/workspace/precompiled/LM_pet_feeder.py +0 -78
  338. toolkit/workspace/precompiled/LM_ph_sensor.py +0 -51
  339. toolkit/workspace/precompiled/LM_presence.mpy +0 -0
  340. toolkit/workspace/precompiled/LM_rest.mpy +0 -0
  341. toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
  342. toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
  343. toolkit/workspace/precompiled/LM_robustness.py +0 -74
  344. toolkit/workspace/precompiled/LM_switch.mpy +0 -0
  345. toolkit/workspace/precompiled/LM_system.mpy +0 -0
  346. toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
  347. toolkit/workspace/precompiled/node_config.json +0 -1
  348. toolkit/workspace/precompiled/reset.mpy +0 -0
  349. /micrOS/source/{IO_esp32.py → modules/IO_esp32.py} +0 -0
  350. /micrOS/source/{IO_esp32c3.py → modules/IO_esp32c3.py} +0 -0
  351. /micrOS/source/{IO_esp32s2.py → modules/IO_esp32s2.py} +0 -0
  352. /micrOS/source/{IO_rp2.py → modules/IO_rp2.py} +0 -0
  353. /micrOS/source/{LM_gameOfLife.py → modules/LM_gameOfLife.py} +0 -0
  354. /micrOS/source/{LM_rgbcct.py → modules/LM_rgbcct.py} +0 -0
  355. /micrOS/source/{LM_rp2w.py → modules/LM_rp2w.py} +0 -0
  356. /micrOS/source/{LM_sdcard.py → modules/LM_sdcard.py} +0 -0
  357. /micrOS/source/{LM_sound_event.py → modules/LM_sound_event.py} +0 -0
  358. /micrOS/source/{LM_tinyrgb.py → modules/LM_tinyrgb.py} +0 -0
  359. /micrOS/source/{udashboard.js → web/udashboard.js} +0 -0
  360. /micrOS/source/{uwidgets.js → web/uwidgets.js} +0 -0
  361. /micrOS/source/{uwidgets_pro.js → web/uwidgets_pro.js} +0 -0
  362. {micrOSDevToolKit-2.9.1.dist-info → microsdevtoolkit-2.26.1.dist-info/licenses}/LICENSE +0 -0
  363. {micrOSDevToolKit-2.9.1.dist-info → microsdevtoolkit-2.26.1.dist-info}/top_level.txt +0 -0
  364. /toolkit/workspace/precompiled/{LM_rp2w.py → modules/LM_rp2w.py} +0 -0
  365. /toolkit/workspace/precompiled/{LM_sdcard.py → modules/LM_sdcard.py} +0 -0
  366. /toolkit/workspace/precompiled/{udashboard.js → web/udashboard.js} +0 -0
  367. /toolkit/workspace/precompiled/{uwidgets.js → web/uwidgets.js} +0 -0
  368. /toolkit/workspace/precompiled/{uwidgets_pro.js → web/uwidgets_pro.js} +0 -0
@@ -1,126 +0,0 @@
1
- from os import listdir, remove
2
- from sys import modules
3
- from Common import socket_stream
4
-
5
- WEB_EXT = ('html', 'js', 'css')
6
-
7
- @socket_stream
8
- def listmods(msgobj=None):
9
- """
10
- Load module package manager
11
- - list all load modules
12
- """
13
- # Dump available LMs
14
- msg_buf = []
15
- for k in (res.replace('LM_', '') for res in listdir()
16
- if res.startswith('LM_') or res.split('.')[-1] in WEB_EXT):
17
- if msgobj is None:
18
- msg_buf.append(f' {k}')
19
- else:
20
- msgobj(f' {k}')
21
- return msg_buf if len(msg_buf) > 0 else ''
22
-
23
-
24
- def delmod(mod=None):
25
- """
26
- Module package manager
27
- :param mod:
28
- Delete Load Module with full name: module.py or module.mpy
29
- OR delete any web resource: *.js, *.css, *.html
30
- """
31
- if mod is not None and (mod.endswith('py') or mod.split('.')[-1] in WEB_EXT):
32
- # LM exception list - system and lmpacman cannot be deleted
33
- if 'lmpacman.' in mod or 'system.' in mod:
34
- return f'Load module {mod} is in use, skip delete.'
35
- try:
36
- to_remove = mod if mod.split('.')[-1] in WEB_EXT else f'LM_{mod}'
37
- remove(to_remove)
38
- return f'Delete module: {mod}'
39
- except Exception as e:
40
- return f'Cannot delete: {mod}: {e}'
41
- return f'Invalid value: {mod}'
42
-
43
-
44
- def del_duplicates():
45
- """
46
- Load module package manager (Not just load modules)
47
- - delete duplicated .mpy and .py resources, keep .mpy resource!
48
- """
49
- msg_buf = []
50
- py = list((res.split('.')[0] for res in listdir() if res.endswith('.py'))) # Normally smaller list
51
- mpy = (res.split('.')[0] for res in listdir() if res.endswith('.mpy'))
52
- for m in mpy:
53
- # Iterate over mpy resources
54
- state = True
55
- if m in py and m != 'main':
56
- to_delete = f'{m}.py'
57
- try:
58
- remove(to_delete)
59
- except:
60
- state = False
61
- msg_buf.append(f' Delete {to_delete} {state}')
62
- return '\n'.join(msg_buf) if len(msg_buf) > 0 else 'Nothing to delete.'
63
-
64
-
65
- def module(unload=None):
66
- """
67
- List / unload loaded upython Load Modules
68
- :param unload: module name to unload
69
- :param unload: None - list active modules
70
- :return str: verdict
71
- """
72
- if unload is None:
73
- return list(modules.keys())
74
- if unload in modules.keys():
75
- del modules[unload]
76
- return f"Module unload {unload} done."
77
- return f"Module unload {unload} failed."
78
-
79
-
80
- @socket_stream
81
- def cachedump(cdel=None, msgobj=None):
82
- """
83
- Cache system persistent data storage files (.pds)
84
- """
85
- if cdel is None:
86
- # List pds files aka application cache
87
- msg_buf = []
88
- for pds in (_pds for _pds in listdir() if _pds.endswith('.pds')):
89
- with open(pds, 'r') as f:
90
- if msgobj is None:
91
- msg_buf.append(f'{pds}: {f.read()}')
92
- else:
93
- msgobj(f'{pds}: {f.read()}')
94
- return msg_buf if len(msg_buf) > 0 else ''
95
- # Remove given pds file
96
- try:
97
- remove(f'{cdel}.pds')
98
- return f'{cdel}.pds delete done.'
99
- except:
100
- return f'{cdel}.pds not exists'
101
-
102
-
103
- @socket_stream
104
- def micros_checksum(msgobj=None):
105
- from hashlib import sha1
106
- from binascii import hexlify
107
- from Config import cfgget
108
-
109
- for f_name in (_pds for _pds in listdir() if _pds.endswith('py')):
110
- with open(f_name, 'rb') as f:
111
- cs = hexlify(sha1(f.read()).digest()).decode('utf-8')
112
- msgobj(f"{cs} {f_name}")
113
- # GC collect?
114
- return f"micrOS version: {cfgget('version')}"
115
-
116
-
117
- def help(widgets=False):
118
- """
119
- [i] micrOS LM naming convention - built-in help message
120
- :return tuple:
121
- (widgets=False) list of functions implemented by this application
122
- (widgets=True) list of widget json for UI generation
123
- """
124
- return 'listmods', 'delmod mod=<module>.py/.mpy or .js/.html/.css', 'del_duplicates',\
125
- 'module unload="LM_rgb/None"',\
126
- 'cachedump cdel="rgb.pds/None"', 'micros_checksum'
@@ -1,331 +0,0 @@
1
- from LM_neopixel import load, segment, Data, status, pinmap as pm
2
- from random import randint
3
- from Types import resolve
4
- from Common import manage_task
5
-
6
-
7
- #################################
8
- # NEOPIXEL EFFECT DRAWER CLASS #
9
- #################################
10
-
11
- class DrawEffect:
12
- __instance = None
13
-
14
- def __new__(cls, pixcnt=24):
15
- if DrawEffect.__instance is None:
16
- DrawEffect.__instance = super().__new__(cls)
17
- DrawEffect.__instance.pix_cnt = None
18
- DrawEffect.__instance.index_offset = 0
19
- DrawEffect.__instance.color_wheel = 0
20
- DrawEffect.__instance.__init_effect(pixcnt)
21
- DrawEffect.__instance.offset_gen = None
22
- DrawEffect.__instance.auto_shift = False
23
- return DrawEffect.__instance
24
-
25
- def __init_effect(cls, ledcnt):
26
- """
27
- Set neopixel object & store pixel cnt
28
- """
29
- if Data.NEOPIXEL_OBJ is None:
30
- load(ledcnt=ledcnt)
31
- cls.pix_cnt = Data.NEOPIXEL_OBJ.n
32
- if cls.pix_cnt is None:
33
- cls.pix_cnt = Data.NEOPIXEL_OBJ.n
34
- return cls.pix_cnt
35
-
36
- def __offset(cls, shift):
37
- def _gen():
38
- while True:
39
- if cls.auto_shift:
40
- # Step rotation cycle - shift True
41
- cls.index_offset += 1
42
- if cls.index_offset > cls.pix_cnt - 1:
43
- cls.index_offset = 0
44
- for k in range(cls.index_offset, cls.pix_cnt):
45
- yield k
46
- for k in range(0, cls.index_offset):
47
- yield k
48
- cls.auto_shift = shift
49
- if cls.offset_gen is None:
50
- cls.offset_gen = _gen()
51
- return cls.offset_gen
52
-
53
- def draw(cls, iterable, shift=False):
54
- """
55
- DRAW GENERATED COLORS (RGB)
56
- HELPER FUNCTION with auto shift (offset) sub function
57
- :param iterable: Colors generator object / iterable
58
- :param shift: automatic color map rotation
59
- :return: None
60
- """
61
- offset_gen = cls.__offset(shift=shift)
62
- r, g, b, i = 0, 0, 0, 0
63
- for r, g, b in iterable:
64
- # Handle index offset - rotate effect
65
- i = next(offset_gen)
66
- # Write data to neopixel - write / segment :)
67
- segment(int(r), int(g), int(b), s=i, cache=False, write=False)
68
- segment(int(r), int(g), int(b), s=i, cache=False, write=True)
69
- return True
70
-
71
-
72
- def __color_input(r, g, b):
73
- _r, _g, _b, _ = Data.DCACHE
74
- r = _r if r is None else r
75
- g = _g if g is None else g
76
- b = _b if b is None else b
77
- return r, g, b
78
-
79
-
80
- #################################
81
- # DEFINE EFFECTS #
82
- #################################
83
-
84
- def meteor(r=None, g=None, b=None, shift=True, ledcnt=24):
85
- """
86
- Meteor effect
87
- :param r int: red value 0-1000
88
- :param g int: green value 0-1000
89
- :param b int: blue value 0-1000
90
- :param shift bool: automatic effect shifting
91
- :param ledcnt int: number of neopixel elements in chain (default: 24)
92
- :return str: verdict
93
- """
94
- def __effect(r, g, b, pixel):
95
- """
96
- Describe one full length color map
97
- :param r: red target color
98
- :param g: green target color
99
- :param b: blue target color
100
- :param pixel: number of led segments
101
- :return: yield tuple with r,g,b
102
- """
103
- step = float(0.9 / pixel)
104
- for k in range(0, pixel):
105
- fade = (k+1) * step
106
- data = round(r * fade), round(g * fade), round(b * fade)
107
- yield data
108
-
109
- # Conditional value load - with neopixel cache
110
- r, g, b = __color_input(r, g, b)
111
-
112
- # Init custom params
113
- effect = DrawEffect(pixcnt=ledcnt)
114
- # Create effect data
115
- cgen = __effect(r, g, b, effect.pix_cnt)
116
- # Draw effect data
117
- effect.draw(cgen, shift=shift)
118
- return 'Meteor R{}:G{}:B{} N:{}'.format(r, g, b, effect.pix_cnt)
119
-
120
-
121
- def cycle(r=None, g=None, b=None, shift=True, ledcnt=24):
122
- """
123
- Cycle effect
124
- :param r int: red value 0-1000
125
- :param g int: green value 0-1000
126
- :param b int: blue value 0-1000
127
- :param shift bool: automatic effect shifting
128
- :param ledcnt int: number of neopixel elements in chain (default: 24)
129
- :return str: verdict
130
- """
131
- def __effect(r, g, b, pixel):
132
- """
133
- Describe one full length color map
134
- :param r: red target color
135
- :param g: green target color
136
- :param b: blue target color
137
- :param pixel: number of led segments
138
- :return: yield tuple with r,g,b
139
- """
140
- lightrgb = round(r*0.1), round(g*0.1), round(b*0.1)
141
- yield lightrgb
142
- yield r, g, b
143
- yield lightrgb
144
- for i in range(3, pixel):
145
- yield 0, 0, 0
146
-
147
- # Conditional value load - with neopixel cache
148
- r, g, b = __color_input(r, g, b)
149
-
150
- effect = DrawEffect(pixcnt=ledcnt)
151
- cgen = __effect(r, g, b, effect.pix_cnt)
152
- effect.draw(cgen, shift=shift)
153
- return 'Cycle R{}:G{}:B{} N:{}'.format(r, g, b, effect.pix_cnt)
154
-
155
-
156
- def rainbow(step=1, br=50, ledcnt=24):
157
- """
158
- Rainbow effect
159
- :param step int: color weel resolution in step (default: 1)
160
- :param br int: brightness in percentage
161
- :param ledcnt int: number of neopixel elements in chain (default: 24)
162
- :return str: verdict
163
- """
164
- def __wheel(pos):
165
- # Input a value 0 to 255 to get a color value.
166
- # The colours are a transition r - g - b - back to r.
167
- if pos < 0 or pos > 255:
168
- return 0, 0, 0
169
- if pos < 85:
170
- return 255 - pos * 3, pos * 3, 0
171
- if pos < 170:
172
- pos -= 85
173
- return 0, 255 - pos * 3, pos * 3
174
- pos -= 170
175
- return pos * 3, 0, 255 - pos * 3
176
-
177
- def __effect(cnt, step, br):
178
- """
179
- :param cnt: led segment count
180
- :param br: max brightness 0-100%
181
- :param step: step size
182
- """
183
- cw = DrawEffect().color_wheel
184
- DrawEffect().color_wheel = 0 if cw >= 255 else cw+step
185
- for i in range(0, cnt):
186
- rc_index = (i * 256 // cnt) + DrawEffect().color_wheel
187
- r, g, b = __wheel(rc_index & 255)
188
- yield round(r*br*0.01), round(g*br*0.01), round(b*br*0.01)
189
-
190
- effect = DrawEffect(pixcnt=ledcnt)
191
- cgen = __effect(effect.pix_cnt, step=step, br=br)
192
- effect.draw(cgen, shift=True)
193
- return 'Rainbow'
194
-
195
-
196
- def shader(size=6, offset=0, shift=False, ledcnt=24):
197
- """
198
- Shader for ring lamp
199
- :param size int: shader size (disabled LEDs)
200
- :param offset int: rotate shader 0-(ledcnt-1)
201
- :param shift bool: auto shift shader effect (False)
202
- :param ledcnt int: number of neopixel elements in chain (default: 24)
203
- :return str: verdict
204
- """
205
- def __effect(size, offset, pixcnt):
206
- # Conditional value load - with neopixel cache
207
- r, g, b, _ = Data.DCACHE
208
- # calculate 0->24 range
209
- _slice1 = pixcnt if size + offset > pixcnt else size + offset
210
- # calculate 24->0-> range (overflow)
211
- _slice2 = size + offset - pixcnt if size + offset > pixcnt else 0
212
- for i in range(0, pixcnt):
213
- if offset < i < _slice1:
214
- yield 0, 0, 0
215
- elif 0 <= i < _slice2:
216
- yield 0, 0, 0
217
- else:
218
- yield r, g, b
219
-
220
- # Init custom params
221
- effect = DrawEffect(pixcnt=ledcnt)
222
- # Create effect data
223
- if size < effect.pix_cnt:
224
- cgen = __effect(size, offset, effect.pix_cnt)
225
- # Draw effect data
226
- effect.index_offset = 0 # reset auto shift offset
227
- effect.draw(cgen, shift=shift)
228
- return 'Shader size: {} ->{} ({})'.format(size, offset, effect.pix_cnt)
229
- return 'Shader invalid size: {} ({})'.format(size, effect.pix_cnt)
230
-
231
-
232
- def random(max_val=255):
233
- """
234
- Demo function: implements random color change
235
- :param max_val: set channel maximum generated value: 0-255
236
- :return str: rgb status - states: R, G, B
237
- """
238
- r = randint(0, max_val)
239
- g = randint(0, max_val)
240
- b = randint(0, max_val)
241
- Data.DCACHE[0] = r
242
- Data.DCACHE[1] = g
243
- Data.DCACHE[2] = b
244
- return "Set random: R:{} G: B:{}".format(r, g, b)
245
-
246
-
247
- def color(r=None, g=None, b=None):
248
- """
249
- Set color buffer - for runtime effect color change
250
- :param r int: red channel 0-255 (default: None - cached value)
251
- :param g int: green channel 0-255 (default: None - cached value)
252
- :param b int: blue channel 0-255 (default: None - cached value)
253
- :return dict: rgb status - states: R, G, B, S
254
- """
255
- # Conditional value load - with neopixel cache
256
- r, g, b = __color_input(r, g, b)
257
- Data.DCACHE[0] = r
258
- Data.DCACHE[1] = g
259
- Data.DCACHE[2] = b
260
- return status()
261
-
262
-
263
- def fire(r=None, g=None, b=None, ledcnt=24):
264
-
265
- def __effect(r, g, b, pixcnt):
266
- for _ in range(pixcnt):
267
- rand_percent = round(randint(1, 200)/100, 2)
268
-
269
- rgb = [
270
- r * rand_percent,
271
- g * rand_percent,
272
- b * rand_percent
273
- ]
274
-
275
- for i, color in enumerate(rgb):
276
- if color > 255:
277
- rgb[i] = 255
278
- if color < 0:
279
- rgb[i] = 0
280
- yield rgb
281
-
282
- # Conditional value load - with neopixel cache
283
- r, g, b = __color_input(r, g, b)
284
-
285
- effect = DrawEffect(pixcnt=ledcnt)
286
- cgen = __effect(r, g, b, effect.pix_cnt)
287
- effect.draw(cgen, shift=False)
288
- return 'fire R{}:G{}:B{} N:{}'.format(r, g, b, effect.pix_cnt)
289
-
290
-
291
- def stop_effects():
292
- """
293
- Stop all running (neo)effects tasks
294
- """
295
- return manage_task("neoeffects.*", "kill")
296
-
297
- #######################
298
- # LM helper functions #
299
- #######################
300
-
301
-
302
- def pinmap():
303
- """
304
- [i] micrOS LM naming convention
305
- Shows logical pins - pin number(s) used by this Load module
306
- - info which pins to use for this application
307
- :return dict: pin name (str) - pin value (int) pairs
308
- """
309
- return pm()
310
-
311
-
312
- def help(widgets=False):
313
- """
314
- [i] micrOS LM naming convention - built-in help message
315
- :return tuple:
316
- (widgets=False) list of functions implemented by this application
317
- (widgets=True) list of widget json for UI generation
318
- """
319
- return resolve(('meteor r=<0-255> g=<0-255> b=<0-255> shift=True ledcnt=24',
320
- 'BUTTON meteor &&',
321
- 'cycle r g b shift=True ledcnt=24',
322
- 'BUTTON cycle &&50',
323
- 'rainbow step=1 br=<5-100> ledcnt=24 &&',
324
- 'BUTTON rainbow br=50 &&',
325
- 'fire r=None g=None b=None ledcnt=24',
326
- 'BUTTON fire &&200',
327
- 'BUTTON stop_effects',
328
- 'shader size=4 offset=0 shift=True ledcnt=24',
329
- 'random max_val=255',
330
- 'pinmap',
331
- 'COLOR color r=<0-255-10> g b'), widgets=widgets)