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
@@ -1,28 +1,27 @@
1
+ """
2
+ micrOS simple OLED UI (irq or single task based refresh)
3
+ - with page generation
4
+ Designed by Marcell Ban aka BxNxM
5
+ """
6
+
1
7
  from Config import cfgget
2
8
  from utime import localtime
3
9
  from network import WLAN, STA_IF
4
- from microIO import physical_pin, pinmap_dump
10
+ from microIO import bind_pin, pinmap_search
5
11
  from Network import ifconfig
6
- from Debug import errlog_add
12
+ from Common import syslog, exec_cmd, manage_task
7
13
  from machine import Pin
8
- from Tasks import lm_exec, Manager
14
+ from Types import resolve
9
15
  try:
10
- from LM_system import memory_usage
16
+ from LM_system import memory_usage, hosts
11
17
  except:
12
18
  memory_usage = None # Optional function handling
13
- try:
14
- import LM_intercon as InterCon
15
- except:
16
- InterCon = None # Optional function handling
17
- try:
18
- from LM_genIO import get_adc
19
- except:
20
- get_adc = None # Optional function handling
21
19
  try:
22
20
  from LM_gameOfLife import next_gen as gol_nextgen, reset as gol_reset
23
21
  except:
24
22
  gol_nextgen = None # Optional function handling
25
23
 
24
+ from utime import ticks_ms, ticks_diff # For IRQ joystick handling
26
25
 
27
26
  #################################
28
27
  # PAGE MANAGER CLASS DEFINITION #
@@ -32,7 +31,7 @@ class PageUI:
32
31
  PAGE_UI_OBJ = None
33
32
  DISPLAY = None
34
33
 
35
- def __init__(self, page_callbacks, w, h, page=0, pwr_sec=None, oled_type='ssd1306'):
34
+ def __init__(self, page_callbacks, w, h, page=0, pwr_sec=None, oled_type='ssd1306', joystick=False):
36
35
  """
37
36
  :param page_callbacks: callback function list to show on UI
38
37
  :param page: start page index, default 0 (+fallback)
@@ -40,6 +39,7 @@ class PageUI:
40
39
  :param h: screen height
41
40
  :param pwr_sec: auto screen off after this sec
42
41
  :param oled_type: type of oled display: ssd1306 / sh1106
42
+ :param joystick: enable joystick IRQ-s
43
43
  """
44
44
  if oled_type.strip() in ('ssd1306', 'sh1106'):
45
45
  if oled_type.strip() == 'ssd1306':
@@ -48,7 +48,7 @@ class PageUI:
48
48
  import LM_oled_sh1106 as oled
49
49
  PageUI.DISPLAY = oled
50
50
  else:
51
- errlog_add(f"Oled UI unknown oled_type: {oled_type}")
51
+ syslog(f"Oled UI unknown oled_type: {oled_type}")
52
52
  Exception(f"Oled UI unknown oled_type: {oled_type}")
53
53
  self.page_callback_list = page_callbacks
54
54
  self.active_page = page
@@ -68,7 +68,8 @@ class PageUI:
68
68
  # Create built-in button IRQ - OK button (center)
69
69
  self.bttn_press_callback = None
70
70
  self.irq_ok = False
71
- self.__create_button_irq()
71
+ if joystick:
72
+ self.__create_joystick_irq()
72
73
 
73
74
  # Power saver state machine - turn off sec, deltaT (timirq executor seq loop), counter
74
75
  self.pwr_saver_state = [pwr_sec, round(cfgget('timirqseq') / 1000, 2), pwr_sec]
@@ -105,13 +106,13 @@ class PageUI:
105
106
  pass
106
107
 
107
108
  ltime = localtime()
108
- h = "0{}".format(ltime[-5]) if len(str(ltime[-5])) < 2 else ltime[-5]
109
- m = "0{}".format(ltime[-4]) if len(str(ltime[-4])) < 2 else ltime[-4]
110
- s = "0{}".format(ltime[-3]) if len(str(ltime[-3])) < 2 else ltime[-3]
109
+ h = f"0{ltime[-5]}" if len(str(ltime[-5])) < 2 else ltime[-5]
110
+ m = f"0{ltime[-4]}" if len(str(ltime[-4])) < 2 else ltime[-4]
111
+ s = f"0{ltime[-3]}" if len(str(ltime[-3])) < 2 else ltime[-3]
111
112
  nwmd = ifconfig()[0]
112
113
  nwmd = nwmd[0] if len(nwmd) > 0 else "0"
113
114
  irq_ok = ' ' if self.bttn_press_callback is None else '*' if self.irq_ok else '!'
114
- PageUI.DISPLAY.text("{} {} {}:{}:{}".format(nwmd, irq_ok, h, m, s), 0, 0)
115
+ PageUI.DISPLAY.text(f"{nwmd} {irq_ok} {h}:{m}:{s}", 0, 0)
115
116
 
116
117
  def __page_bar(self):
117
118
  """Generates page indicator bar"""
@@ -150,19 +151,37 @@ class PageUI:
150
151
  PageUI.DISPLAY.text(msg, 15, 40)
151
152
  return True
152
153
 
153
- def __create_button_irq(self, pinkey='oleduibttn'):
154
- """Create button press IRQ for OK/Center button"""
155
- try:
156
- pin = physical_pin(pinkey)
157
- except Exception as e:
158
- msg = '[ERR] Button IRQ:{} {}'.format(pinkey, e)
154
+ def __create_joystick_irq(self):
155
+ """Create Joystick buttons IRQs"""
156
+ def _set(pin_tag, callback):
159
157
  pin = None
160
- errlog_add(msg)
161
- if pin:
162
- pin_obj = Pin(pin, Pin.IN, Pin.PULL_DOWN)
163
- # [IRQ] - event type setup
164
- pin_obj.irq(trigger=Pin.IRQ_RISING, handler=lambda pin: self.control('press'))
165
- self.irq_ok = True
158
+ try:
159
+ pin = bind_pin(pin_tag)
160
+ except Exception as e:
161
+ syslog(f'[ERR] {pin_tag} IRQ: {e}')
162
+ if pin:
163
+ pin_obj = Pin(pin, Pin.IN, Pin.PULL_DOWN)
164
+ # [IRQ] - event type setup
165
+ pin_obj.irq(trigger=Pin.IRQ_FALLING, handler=callback)
166
+
167
+ def _event_handler(control_command, prell_ms=150):
168
+ nonlocal _p_last
169
+ _last = _p_last.get(control_command)
170
+ last = 0 if _last is None else _last
171
+ # Calculate time difference between last trigger action and now tick.
172
+ diff = ticks_diff(ticks_ms(), last)
173
+ if abs(diff) > prell_ms:
174
+ # Save now tick - last trigger action
175
+ _p_last[control_command] = ticks_ms()
176
+ self.control(control_command)
177
+
178
+ _p_last = {}
179
+ _set("js_right", lambda pin: _event_handler('next'))
180
+ _set("js_left", lambda pin: _event_handler('prev'))
181
+ _set("js_up", lambda pin: _event_handler('on'))
182
+ _set("js_down", lambda pin: _event_handler('off'))
183
+ _set("js_press", lambda pin: _event_handler('press'))
184
+ self.irq_ok = True
166
185
 
167
186
  def __power_save(self):
168
187
  """
@@ -223,6 +242,7 @@ class PageUI:
223
242
  else:
224
243
  self.page_callback_list[self.active_page]() # <== Execute page functions
225
244
  except Exception as e:
245
+ syslog(f"oled_ui render error: {e}")
226
246
  PageUI.PAGE_UI_OBJ.show_msg = f"Err: {e}" # Show page error in msgbox
227
247
  PageUI.DISPLAY.show()
228
248
  self.__power_save()
@@ -266,7 +286,7 @@ class PageUI:
266
286
  PageUI.DISPLAY.show()
267
287
  self.oled_state = False # Off main page logic
268
288
  self.bttn_press_callback = None
269
- return "page: {} pwr: {}".format(self.active_page, self.oled_state)
289
+ return f"page: {self.active_page} pwr: {self.oled_state}"
270
290
 
271
291
  def _page_button_press(self):
272
292
  """
@@ -318,39 +338,47 @@ class PageUI:
318
338
  #####################################
319
339
  # PAGE GENERATORS #
320
340
  #####################################
321
- def intercon_page(self, host, cmd, run=False):
341
+ def intercon_page(self, cmd:str, run=False):
322
342
  """Generic interconnect page core - create multiple page with it"""
323
343
  posx, posy = 5, 12
324
344
 
325
345
  def _button():
346
+ nonlocal host, _cmd
326
347
  # BUTTON CALLBACK - INTERCONNECT execution
327
348
  self.open_intercons.append(host)
328
349
  try:
329
350
  # Send CMD to other device & show result
330
- data_meta = InterCon.send_cmd(host, cmd)
331
- self.cmd_task_tag = data_meta['tag']
332
- if "Task is Busy" in data_meta['verdict'] and not run:
333
- self.cmd_out = data_meta['verdict'] # Otherwise the task start output not relevant on UI
351
+ state, data_meta = exec_cmd(_cmd, jsonify=True)
352
+ if state:
353
+ self.cmd_task_tag = list(data_meta.keys())[0]
354
+ verdict = list(data_meta.values())[0]
355
+ if "Already running" in verdict and not run:
356
+ self.cmd_out = verdict # Otherwise the task start output not relevant on UI
357
+ else:
358
+ self.cmd_out = f"Error: {data_meta}"
334
359
  except Exception as e:
335
360
  self.cmd_out = str(e)
336
361
  self.open_intercons.remove(host)
337
362
 
338
363
  # Check open host connection
339
- if host in self.open_intercons:
340
- return
364
+ _cmd = cmd.strip().split()
365
+ host = _cmd[-1].replace(">", "").replace("&", "")
341
366
  # Draw host + cmd details
342
- PageUI.DISPLAY.text(host, 0, posy)
343
- PageUI.DISPLAY.text(cmd, posx, posy+10)
367
+ PageUI.DISPLAY.text(' '.join(_cmd[0:-1]), 0, posy)
368
+ PageUI.DISPLAY.text(_cmd[-1], posx, posy+10)
369
+ self._cmd_text(posx, posy + 10)
370
+
344
371
  # Update display output with retrieved task result (by TaskID)
345
372
  if self.cmd_task_tag is not None:
346
- task_buffer = str(Manager().show(tag=self.cmd_task_tag)).replace(' ', '')
373
+ task_buffer = manage_task(self.cmd_task_tag, 'show').replace(' ', '')
347
374
  if task_buffer is not None and len(task_buffer) > 0:
348
375
  # Set display out to task buffered data
349
376
  self.cmd_out = task_buffer
350
- # Kill task - clean
351
- Manager().kill(tag=self.cmd_task_tag)
352
- # data gathered - remove tag - skip re-read
353
- self.cmd_task_tag = None
377
+ if not manage_task(self.cmd_task_tag, 'isbusy'):
378
+ # Kill task - clean
379
+ manage_task(self.cmd_task_tag, 'kill')
380
+ # data gathered - remove tag - skip re-read
381
+ self.cmd_task_tag = None
354
382
  # Show self.cmd_out value on display
355
383
  self._cmd_text(posx, posy+10)
356
384
  # Run button event at page init
@@ -360,7 +388,7 @@ class PageUI:
360
388
  # Set button press callback (+draw button)
361
389
  self.set_press_callback(_button)
362
390
 
363
- def cmd_call_page(self, cmd, run=False):
391
+ def cmd_call_page(self, cmd:str, run=False):
364
392
  """Generic LoadModule execution page core - create multiple page with it"""
365
393
  posx, posy = 5, 12
366
394
 
@@ -369,7 +397,7 @@ class PageUI:
369
397
  try:
370
398
  cmd_list = cmd.strip().split()
371
399
  # Send CMD to other device & show result
372
- state, out = lm_exec(cmd_list)
400
+ state, out = exec_cmd(cmd_list)
373
401
  try:
374
402
  self.cmd_out = ''.join(out.strip().split()).replace(' ', '')
375
403
  except Exception:
@@ -387,43 +415,16 @@ class PageUI:
387
415
  # Set button press callback (+draw button)
388
416
  self.set_press_callback(_button)
389
417
 
390
- def adc_visualize_page(self, pin):
391
- """Generic ADC value visualization page - create multiple page with it"""
392
-
393
- def __visualize(p):
394
- max_w = 50
395
- percent = p * 0.01
396
- size = round(percent * max_w)
397
- size = 1 if size < 1 else size
398
- # Visualize percentage
399
- PageUI.DISPLAY.rect(0, 9, size, size, fill=True)
400
- # Visualize percentages scale
401
- steps = int(max_w / 10)
402
- for scale in range(steps, max_w + 1, steps):
403
- if scale < size:
404
- PageUI.DISPLAY.rect(0, 9, scale, scale, state=0)
405
- else:
406
- PageUI.DISPLAY.rect(0, 9, scale, scale, state=1)
407
-
408
- data = {'percent': 'null', 'volt': 'null'}
409
- if get_adc is not None:
410
- data = get_adc(pin)
411
- __visualize(p=data['percent'])
412
- PageUI.DISPLAY.text("{} %".format(data['percent']), 65, 20)
413
- PageUI.DISPLAY.text("{} V".format(data['volt']), 65, 40)
414
- return True
415
-
416
-
417
- #################################
418
- # PAGE DEFINITIONS #
419
- #################################
418
+ ####################################
419
+ # UI PAGE DEFINITIONS #
420
+ ####################################
420
421
 
421
422
  def _sys_page():
422
423
  """
423
424
  System basic information page
424
425
  """
425
426
  PageUI.DISPLAY.text(cfgget("devfid"), 0, 15)
426
- PageUI.DISPLAY.text(" {}".format(ifconfig()[1][0]), 0, 25)
427
+ PageUI.DISPLAY.text(f" {ifconfig()[1][0]}", 0, 25)
427
428
  if memory_usage is not None:
428
429
  mem = memory_usage()
429
430
  PageUI.DISPLAY.text(f" {mem['percent']}% ({int(mem['mem_used']/1000)}kb)", 0, 35)
@@ -432,16 +433,21 @@ def _sys_page():
432
433
 
433
434
 
434
435
  def _intercon_cache(line_limit=3):
435
- if InterCon is None:
436
- return False
437
436
  line_start = 15
438
437
  line_cnt = 1
439
438
  PageUI.DISPLAY.text("InterCon cache", 0, line_start)
440
- if sum([1 for _ in InterCon.host_cache()]) > 0:
441
- for key, val in InterCon.host_cache().items():
442
- key = key.split('.')[0]
443
- val = '.'.join(val.split('.')[-2:])
444
- PageUI.DISPLAY.text(" {} {}".format(val, key), 0, line_start+(line_cnt*10))
439
+ cache = hosts()["intercon"]
440
+ if sum([1 for _ in cache]) > 0:
441
+ for key, val in cache.items():
442
+ if '.' in key:
443
+ # IP splitting
444
+ key = key.split('.')[0]
445
+ val = '.'.join(val.split('.')[-2:])
446
+ else:
447
+ # MAC splitting
448
+ key = key.split(':')[0]
449
+ val = ':'.join(val.split(':')[-2:])
450
+ PageUI.DISPLAY.text(f" {val} {key}", 0, line_start+(line_cnt*10))
445
451
  line_cnt += 1
446
452
  if line_cnt > line_limit:
447
453
  break
@@ -471,24 +477,36 @@ def _micros_welcome():
471
477
  return str(e)
472
478
  return True
473
479
 
474
- #################################
475
- # PAGE GUI CONTROLLER FUNCTIONS #
476
- # USED IN MICROS SHELL/IRQs #
477
- #################################
478
-
480
+ #############################################################################
481
+ # PAGE GUI CONTROLLER FUNCTIONS #
482
+ # USED IN MICROS SHELL/IRQs #
483
+ #############################################################################
479
484
 
480
- def pageui(pwr_sec=None, oled_type='ssd1306', page=0):
485
+ def load(pwr_sec=None, oled_type='ssd1306', page=0, width=128, height=64, joystick=True):
481
486
  """
482
- Init&RUN PageUI
483
- - add page definitions here - interface from code
484
- :param pwr_sec: power down oled after given sec - power safe
487
+ Init PageUI
488
+ :param pwr_sec: power down oled after given sec -> screensaver
485
489
  :param oled_type: oled type selection: ssd1306 or sh1106
486
- :param page: start page index, start from 0
490
+ :param page: start page index, default: 0
491
+ :param width: width in pixels
492
+ :param height: height in pixels
493
+ :param joystick: init joystick irq pin-s (default: True)
487
494
  """
488
495
  if PageUI.PAGE_UI_OBJ is None:
489
496
  pages = [_sys_page, _intercon_cache, _micros_welcome] # <== Add page function HERE
490
- PageUI(pages, 128, 64, page=page, pwr_sec=pwr_sec, oled_type=oled_type)
497
+ PageUI(pages, width, height, page=page, pwr_sec=pwr_sec, oled_type=oled_type, joystick=joystick)
498
+ PageUI.PAGE_UI_OBJ.render_page()
499
+ return f"OLED: {oled_type}: {width}x{height} initialized."
500
+
501
+
502
+ def draw():
503
+ """
504
+ Refresh page on PageUI
505
+ """
506
+ if PageUI.PAGE_UI_OBJ is None:
507
+ return "Module uninitialized, run: oled_ui load pwr_sec=None oled_type='ssd1306' page=0 width=128 height=64"
491
508
  PageUI.PAGE_UI_OBJ.render_page()
509
+ return f"refreshed..."
492
510
 
493
511
 
494
512
  def control(cmd='next'):
@@ -500,7 +518,7 @@ def control(cmd='next'):
500
518
  valid_cmd = ('next', 'prev', 'press', 'on', 'off')
501
519
  if cmd in valid_cmd:
502
520
  return PageUI.PAGE_UI_OBJ.control(cmd)
503
- return 'Invalid command {}! Hint: {}'.format(cmd, valid_cmd)
521
+ return f'Invalid command {cmd}! Hint: {valid_cmd}'
504
522
 
505
523
 
506
524
  def msgbox(msg='micrOS msg'):
@@ -512,8 +530,7 @@ def msgbox(msg='micrOS msg'):
512
530
  PageUI.PAGE_UI_OBJ.render_page()
513
531
  return 'Show msg'
514
532
 
515
-
516
- def intercon_genpage(cmd=None, run=False):
533
+ def genpage(cmd:str=None, run=False):
517
534
  """
518
535
  Create intercon pages dynamically :)
519
536
  - based on cmd value.
@@ -521,40 +538,15 @@ def intercon_genpage(cmd=None, run=False):
521
538
  :param run: run button event at page init: True/False
522
539
  :return: page creation verdict
523
540
  """
524
- raw = cmd.split()
525
- host = raw[0]
526
- cmd = ' '.join(raw[1:])
527
- if PageUI.PAGE_UI_OBJ is None:
528
- # Auto init UI
529
- pageui()
530
- try:
531
- # Create page for intercon command
532
- PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.intercon_page(host, cmd, run=run))
533
- except Exception as e:
534
- errlog_add(f'[ERR] intercon_genpage: {e}')
535
- return str(e)
536
- return True
537
-
538
-
539
- def cmd_genpage(cmd=None, run=False):
540
- """
541
- Create load module execution pages dynamically :)
542
- - based on cmd value: load_module function (args)
543
- :param cmd: 'load_module function (args)' string
544
- :param run: run button event at page init: True/False
545
- :return: page creation verdict
546
- """
547
- if not isinstance(cmd, str):
548
- return False
549
-
550
- if PageUI.PAGE_UI_OBJ is None:
551
- # Auto init UI
552
- pageui()
553
541
  try:
554
- # Create page for intercon command
555
- PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.cmd_call_page(cmd, run=run))
542
+ if ">>" in cmd or "&" in cmd:
543
+ # Create page for intercon/task background command
544
+ PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.intercon_page(cmd, run=run))
545
+ else:
546
+ # Create page for realtime command
547
+ PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.cmd_call_page(cmd, run=run))
556
548
  except Exception as e:
557
- errlog_add(f'[ERR] cmd_genpage: {e}')
549
+ syslog(f'[ERR] genpage: {e}')
558
550
  return str(e)
559
551
  return True
560
552
 
@@ -570,35 +562,11 @@ def function_genpage(func):
570
562
  if not callable(func):
571
563
  return "Provided <func> not callable, input must be python function (coding interface)"
572
564
 
573
- if PageUI.PAGE_UI_OBJ is None:
574
- # Auto init UI
575
- pageui()
576
565
  try:
577
566
  # Create custom page
578
567
  PageUI.PAGE_UI_OBJ.add_page(lambda: func(display=PageUI.DISPLAY))
579
568
  except Exception as e:
580
- errlog_add(f'[ERR] function_genpage: {e}')
581
- return str(e)
582
- return True
583
-
584
-
585
- def adc_genpage(pin=33):
586
- """
587
- Create ADC visualization pages dynamically :)
588
- :param pin: pin number for ADC read, default: 33
589
- :return: page creation verdict
590
- """
591
- if not isinstance(pin, int):
592
- return False
593
-
594
- if PageUI.PAGE_UI_OBJ is None:
595
- # Auto init UI
596
- pageui()
597
- try:
598
- # Create page for intercon command
599
- PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.adc_visualize_page(pin=pin))
600
- except Exception as e:
601
- errlog_add(f'[ERR] adc_genpage: {e}')
569
+ syslog(f'[ERR] function_genpage: {e}')
602
570
  return str(e)
603
571
  return True
604
572
 
@@ -606,15 +574,6 @@ def adc_genpage(pin=33):
606
574
  # LM helper functions #
607
575
  #######################
608
576
 
609
- def lmdep():
610
- """
611
- Show Load Module dependency
612
- - List of load modules used by this application
613
- :return: tuple
614
- """
615
- return 'oled', 'intercon', 'genIO'
616
-
617
-
618
577
  def pinmap():
619
578
  """
620
579
  [i] micrOS LM naming convention
@@ -623,7 +582,7 @@ def pinmap():
623
582
  :return dict: pin name (str) - pin value (int) pairs
624
583
  """
625
584
  pin_map = PageUI.DISPLAY.pinmap()
626
- pin_map.update(pinmap_dump('oleduibttn'))
585
+ pin_map.update(pinmap_search(["js_right", "js_left", "js_up", "js_down", "js_press"]))
627
586
  return pin_map
628
587
 
629
588
 
@@ -634,10 +593,9 @@ def help(widgets=False):
634
593
  (widgets=False) list of functions implemented by this application
635
594
  (widgets=True) list of widget json for UI generation
636
595
  """
637
- return 'pageui page=0 pwr_sec=None/int(sec) oled_type="ssd1306 or sh1106"',\
638
- 'control next/prev/press/on/off',\
639
- 'msgbox "msg"',\
640
- 'intercon_genpage "host" "cmd" run=False',\
641
- 'cmd_genpage "cmd" run=False',\
642
- 'adc_genpage pin=33',\
643
- 'pinmap'
596
+ return resolve(('load pwr_sec=None/int(sec) oled_type="ssd1306 or sh1106" page=0 width=128 height=64 joystick=True',
597
+ 'draw',
598
+ 'BUTTON control cmd=<prev,press,next,on,off>',
599
+ 'msgbox "msg"',
600
+ 'genpage "cmd" run=False',
601
+ 'pinmap'), widgets=widgets)