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/micrOS.py CHANGED
@@ -4,39 +4,36 @@ dedicated to micrOS framework.
4
4
 
5
5
  Designed by Marcell Ban aka BxNxM
6
6
  """
7
+
8
+ #################################################################
9
+ # INIT FS #
10
+ #################################################################
11
+ from Files import init_micros_dirs
12
+ init_micros_dirs()
13
+
7
14
  #################################################################
8
15
  # IMPORTS #
9
16
  #################################################################
10
17
  from Time import ntp_time, suntime
11
18
  from Tasks import Manager
12
- from Hooks import bootup, profiling_info
19
+ from Hooks import bootup, profiling_info, enableESPNow
13
20
  from Network import auto_nw_config
14
- from Server import SocketServer
15
- from Interrupts import enableInterrupt, enableCron
16
- from Interrupts import initEventIRQs
17
- from Debug import errlog_add
21
+ from Server import Server
22
+ from Interrupts import enableInterrupt, enableCron, initEventIRQs
23
+ from Debug import syslog
18
24
 
19
25
 
20
26
  #################################################################
21
27
  # INTERRUPT HANDLER INTERFACES / WRAPPERS #
22
28
  #################################################################
23
29
 
24
-
25
- def safe_boot():
26
- try:
27
- bootup()
28
- except Exception as e:
29
- print(f"[micrOS main] Hooks.boot() error: {e}")
30
- errlog_add(f"[ERR] safe_boot: {e}")
31
-
32
-
33
30
  def irq_handler():
34
31
  try:
35
32
  enableInterrupt()
36
33
  enableCron()
37
34
  except Exception as e:
38
35
  print(f"[micrOS main] InterruptHandler.enableInterrupt/CronInterrupt error: {e}")
39
- errlog_add(f"[ERR] irq_handler error: {e}")
36
+ syslog(f"[ERR] irq_handler error: {e}")
40
37
 
41
38
 
42
39
  def external_irq_handler():
@@ -44,7 +41,7 @@ def external_irq_handler():
44
41
  initEventIRQs()
45
42
  except Exception as e:
46
43
  print(f"[micrOS main] InterruptHandler.initEventIRQs error: {e}")
47
- errlog_add(f"[ERR] external_irq_handler error: {e}")
44
+ syslog(f"[ERR] external_irq_handler error: {e}")
48
45
 
49
46
 
50
47
  #################################################################
@@ -59,7 +56,11 @@ def micrOS():
59
56
  aio = Manager()
60
57
 
61
58
  # BOOT TASKS: Initial LM executions
62
- safe_boot()
59
+ try:
60
+ bootup()
61
+ except Exception as e:
62
+ print(f"[micrOS main] Hooks.boot() error: {e}")
63
+ syslog(f"[ERR] safe_boot: {e}")
63
64
 
64
65
  # NETWORK setup
65
66
  nwmd = auto_nw_config()
@@ -78,12 +79,15 @@ def micrOS():
78
79
  # SET interrupt with timirqcbf from nodeconfig
79
80
  irq_handler()
80
81
 
81
- # [SocketServer] as async task
82
- aio.create_task(SocketServer().run_server(), tag='server')
83
- profiling_info(label='[memUsage] SYSTEM IS UP')
82
+ # [Server] as async task
83
+ aio.create_task(Server().run_server(), tag='server')
84
+
85
+ # [ESPNow] server as async task
86
+ enableESPNow()
87
+ profiling_info(label='[memUsage] SYSTEM IS UP AND RUNNING')
84
88
 
85
89
  # [EVENT LOOP] Start async event loop
86
90
  aio.run_forever()
87
91
 
88
92
  # UNEXPECTED RESTART ???
89
- errlog_add("[ERR] !!! Unexpected micrOS restart")
93
+ syslog("[ERR] !!! Unexpected micrOS restart")
@@ -1,5 +1,6 @@
1
1
  """
2
2
  Module is responsible for invoke micrOS or recovery webrepl mode
3
+ [IMPORTANT] This module must never use any micrOS specific functions in main scope.
3
4
 
4
5
  Designed by Marcell Ban aka BxNxM
5
6
  """
@@ -11,14 +12,10 @@ try:
11
12
  import traceback
12
13
  except:
13
14
  traceback = None
14
- try:
15
- from Debug import errlog_add
16
- except Exception as e:
17
- print(f"Import error: {e}")
18
- errlog_add = None
15
+ from machine import reset
19
16
 
20
17
 
21
- def __is_micrOS():
18
+ def _is_micrOS():
22
19
  """
23
20
  Recovery mode for OTA update in case of connection/transfer failure
24
21
  .if_mode can have 2 possible values: webrepl or micros (strings)
@@ -34,7 +31,6 @@ def __is_micrOS():
34
31
  False -> webrepl
35
32
  * EOE (EndOfExecution) -> off
36
33
  """
37
- mode = 'micros'
38
34
  try:
39
35
  with open('.if_mode', 'r') as f:
40
36
  mode = f.read().strip().lower()
@@ -54,12 +50,13 @@ def __is_micrOS():
54
50
  exit(0)
55
51
  # start webrepl
56
52
  print("[loader][if_mode:False] .if_mode:webrepl -> webrepl interface")
57
- print("[loader][recovery mode] - manually selected in .if_mode file")
58
53
  return False
59
54
 
60
55
 
61
56
  def __recovery_mode():
62
57
  # Recovery/Update mode (webrepl) - dependencies: Network, ConfigHandler
58
+ from sys import path
59
+ path.insert(0, "/modules")
63
60
  from Network import auto_nw_config
64
61
  from Config import cfgget
65
62
  pwd = cfgget('appwd') # Get pwd from config
@@ -71,7 +68,11 @@ def __recovery_mode():
71
68
  import webrepl
72
69
  webrepl.start(password=pwd)
73
70
  except Exception as e:
74
- print(f"Webrepl import error: {e}")
71
+ print(f"[loader] webrepl failed: {e} - Reset .if_mode to micros and reboot")
72
+ with open('.if_mode', 'w') as f:
73
+ f.write("micros")
74
+ # Reboot machine
75
+ reset()
75
76
 
76
77
 
77
78
  def __auto_restart_event():
@@ -82,10 +83,6 @@ def __auto_restart_event():
82
83
  - value: micros [update was successful - reboot is necessary]
83
84
  :return:
84
85
  """
85
- from sys import platform
86
- if platform == 'rp2':
87
- print("[loader][ota-rebooter] SKIP on platform: rp2 (webrepl block)")
88
- return
89
86
 
90
87
  from utime import sleep
91
88
  trigger_is_active = False
@@ -93,7 +90,7 @@ def __auto_restart_event():
93
90
  # Wait after webrepl started for possible ota updates (~3s*5= 15sec)
94
91
  while wait_update_tout > 0:
95
92
  # Wait for micros turns to webrepl until timeout
96
- if __is_micrOS():
93
+ if _is_micrOS():
97
94
  # micrOS mode
98
95
  print(f"[loader][ota-rebooter][micros][{wait_update_tout}] Wait for OTA update possible start")
99
96
  wait_update_tout -= 1
@@ -102,19 +99,18 @@ def __auto_restart_event():
102
99
  # Set trigger - if_mode changed to webrepl - ota update started - trigger wait
103
100
  trigger_is_active = True
104
101
  # Restart if trigger was activated
105
- if trigger_is_active and __is_micrOS():
102
+ if trigger_is_active and _is_micrOS():
106
103
  print("[loader][ota-rebooter][micros][trigger: True] OTA was finished - reboot")
107
104
  # Create cleanup indicator file for ConfigHandler
108
- with open('cleanup.pds', 'w') as f:
105
+ with open('.cleanup', 'w') as f:
109
106
  f.write('')
110
107
  # Reboot machine
111
- from machine import reset
112
108
  reset()
113
109
  sleep(3)
114
110
 
115
111
 
116
112
  def main():
117
- if __is_micrOS():
113
+ if _is_micrOS():
118
114
  # Main mode
119
115
  try:
120
116
  print("[loader][main mode] Start micrOS (default)")
@@ -126,11 +122,6 @@ def main():
126
122
  # Handle micrOS system crash (never happened...but) -> webrepl mode default pwd: ADmin123
127
123
  print(f"[loader][main mode] micrOS start failed: {e}")
128
124
  print("[loader][main mode] -> [recovery mode]")
129
- if errlog_add is not None:
130
- try:
131
- errlog_add(f"[ERR][micrOSloader] start failed: {e}")
132
- except:
133
- pass
134
125
  # Recovery aka webrepl mode
135
126
  __recovery_mode()
136
127
  __auto_restart_event()
micrOS/source/microIO.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
- Module is responsible for board independent
3
- input/output handling dedicated to micrOS framework.
4
- - Hardware based pinout handling
2
+ This module manages board-independent input and output operations
3
+ for the micrOS framework, ensuring compatibility across different
4
+ microcontrollers.
5
+ - Handles hardware-based pin configurations.
5
6
 
6
7
  Designed by Marcell Ban aka BxNxM
7
8
  """
@@ -9,7 +10,9 @@ Designed by Marcell Ban aka BxNxM
9
10
  # IMPORTS #
10
11
  #################################################################
11
12
  from sys import platform
12
- from os import listdir
13
+ from uos import uname
14
+ from Files import ilist_fs, OSPath
15
+ from Logger import syslog
13
16
 
14
17
  #################################################################
15
18
  # GPI/O ON DEVICE #
@@ -27,24 +30,25 @@ def detect_platform():
27
30
  """
28
31
  Unified platform detection for micrOS
29
32
  """
30
- if 'esp32' in platform:
31
- from os import uname
32
- board = uname()[-1]
33
- if 'tinypico' in str(board).lower():
34
- return 'tinypico' # esp32 family - tinypico
35
- if 'esp32s2' in str(board).lower():
36
- return 'esp32s2' # esp32 family - esp32S2
37
- if 'esp32s3' in str(board).lower():
38
- return 'esp32s3' # esp32 family - esp32s3
39
- if 'esp32c3' in str(board).lower():
40
- return 'esp32c3' # esp32 family - esp32c3
41
- return 'esp32' # esp32 family - general
33
+ if 'esp32' in platform: # esp32 family
34
+ board = str(uname()[-1]).lower()
35
+ if 'tinypico' in board:
36
+ return 'tinypico'
37
+ if 'esp32s2' in board:
38
+ return 'esp32s2'
39
+ if 'esp32s3' in board:
40
+ return 'esp32s3'
41
+ if 'esp32c3' in board:
42
+ return 'esp32c3'
43
+ if 'esp32c6' in board:
44
+ return 'esp32c6'
45
+ return 'esp32' # esp32 family: general
42
46
  return platform # esp8266 or something else
43
47
 
44
48
 
45
49
  def set_pinmap(map_data=None):
46
50
  """
47
- Select pin map on device (init from ConfigHandler)
51
+ !Select pin map on device (init from ConfigHandler!!!)
48
52
  - map_data: default None (n/a), platform detection, like: esp32 -> IO_esp32.mpy
49
53
  - map_data: string input, like: my_pinmap -> IO_my_pinmap.mpy
50
54
  Parse map_data use cases:
@@ -53,99 +57,132 @@ def set_pinmap(map_data=None):
53
57
  u.c.3: esp32; dht:10; neop:15 - selected LP + manual overwrite pins
54
58
  """
55
59
 
56
- # HANDLE PIN MAP PARAMS (lp_name + custom pin lut)
60
+ # HANDLE PIN MAP PARAMS (io_file + custom pin lut)
57
61
  parsed_data = ["n/a"] if map_data is None else map_data.strip().split(';')
58
- lp_name = "n/a" if ':' in parsed_data[0] else parsed_data.pop(0)
62
+ io_file = "n/a" if ':' in parsed_data[0] else parsed_data.pop(0)
59
63
  # SAVE PARSED CUSTOM PIN OVERWRITE (manual mapping - MAPPING)
60
64
  try:
61
65
  PinMap.MAPPING = {pin.split(':')[0].strip(): int(pin.split(':')[1].strip()) for pin in parsed_data if ':' in pin}
62
66
  except Exception as e:
63
- # PARSE ERROR !!!
64
- print(f"[io] custom pin key(s) parse error: {e}")
67
+ syslog(f"[io] custom pin key(s) parse error: {e}")
65
68
 
66
69
  # SELECT LOOKUP TABLE BASED ON PLATFORM / User input
67
- if isinstance(lp_name, str) and lp_name != 'n/a':
68
- if f"IO_{lp_name}" in [lp.split('.')[0] for lp in listdir() if lp.startswith('IO_')]:
69
- PinMap.MAPPING_LUT = lp_name
70
+ if isinstance(io_file, str) and io_file != 'n/a':
71
+ if f"IO_{io_file}" in [io.split('.')[0] for io in ilist_fs(OSPath.MODULES, type_filter='f', select="IO")]:
72
+ PinMap.MAPPING_LUT = io_file
70
73
  return PinMap.MAPPING_LUT
71
74
  PinMap.MAPPING_LUT = detect_platform()
72
75
  return PinMap.MAPPING_LUT
73
76
 
74
77
 
75
- def physical_pin(key):
78
+ def resolve_pin(tag:str) -> int:
76
79
  """
77
- Used in LoadModules
78
- key - resolve pin number by logical name (like: switch_1)
79
- This function implements protected IO allocation (overload protection)
80
- for protected LM functions (IO-booking)
80
+ DEPRECATED IN LoadModules - USE bind_pin(tag) wrapper instead
81
+ This function implements IO allocation/booking (with overload protection)
82
+ - based on platform/custom IO_.py lookup table file
83
+ :parm tag: resolve pin name by logical name (like: switch_1)
84
+ return: integer (pin number)
81
85
  """
82
- # Get pin number on platform by pin key aka logical pin
83
- pin_num = __resolve_pin_number(key)
86
+ # Get pin number on platform by pin key/name
87
+ pin_num = __resolve_pin(tag)
84
88
  if isinstance(pin_num, int):
85
89
  # Check pin is already used
86
90
  if pin_num in PinMap.IO_USE_DICT:
87
91
  key_cache = PinMap.IO_USE_DICT[pin_num]
88
- if key_cache == key:
89
- print(f"[io] ReInit pin: {key_cache}:{pin_num}")
90
- return pin_num
91
- msg = f"[io] Pin {key} is busy: {key_cache}:{pin_num}"
92
- raise Exception(msg)
93
- # key: pin number, value: pin key (alias)
94
- PinMap.IO_USE_DICT[pin_num] = key
95
- print(f"[io] Init pin: {key}:{pin_num}")
92
+ if key_cache == tag:
93
+ return pin_num # [io] ENABLE ReInit pin with same tag name
94
+ raise Exception(f"[io] Pin {tag} is busy: {key_cache}:{pin_num}")
95
+ # tag: pin number, value: pin tag (alias)
96
+ PinMap.IO_USE_DICT[pin_num] = tag
97
+ print(f"[io] Init pin: {tag}:{pin_num}")
96
98
  return pin_num
97
99
 
98
100
 
99
- def get_pinmap():
101
+ def register_pin(tag:str, number:int) -> int:
102
+ """
103
+ DEPRECATED IN LoadModules - USE bind_pin(tag, number) wrapper instead
104
+ Book pin (with overload protection) without IO_platform.py file editing
105
+ :param tag: associated pin name for pin number
106
+ :param number: pin number as integer
107
+ return: pin number
108
+ """
109
+ allocated_tag = PinMap.IO_USE_DICT.get(number, None)
110
+ if allocated_tag is None:
111
+ # Save custom pin - same as cstmpmap config param
112
+ PinMap.MAPPING[tag] = number
113
+ # Save pin number as used - same as resolve_pin does
114
+ PinMap.IO_USE_DICT[number] = tag
115
+ else:
116
+ reg_tag = PinMap.IO_USE_DICT.get(number)
117
+ if tag != reg_tag: # detect conflict
118
+ raise Exception(f"[io-register] {tag}:{number} already in use: {reg_tag}")
119
+ return number
120
+
121
+
122
+ def bind_pin(tag, number=None) -> int:
123
+ """
124
+ Universal pin handler - assign+lock pin for a tag -> application
125
+ :param tag: tag for application pin booking with built-in tag detection from IO_<device>.py
126
+ :param number: optional parameter to overwrite default tag:pin relation
127
+ DO NOT HANDLE ERROR HERE - SUB ELEMENTS HAVE TO THROUGH ERROR INFO FOR LOAD MODULES
128
+ """
129
+ if number is None:
130
+ return resolve_pin(tag)
131
+ if isinstance(number, int):
132
+ return register_pin(tag, number)
133
+ raise Exception("microIO.allocate_pin number parameter must be integer!")
134
+
135
+
136
+ def pinmap_info(show_all=False) -> dict:
100
137
  """
101
138
  Debug info function to get active pinmap and booked IO-s
102
139
  """
103
- return {'map': PinMap.MAPPING_LUT, 'booked': PinMap.IO_USE_DICT, 'custom': PinMap.MAPPING}
140
+ inf = {'map': PinMap.MAPPING_LUT, 'booked': PinMap.IO_USE_DICT, 'custom': PinMap.MAPPING}
141
+ if show_all:
142
+ iomaps = list([iomap.replace("IO_", "").split(".")[0]
143
+ for iomap in ilist_fs(OSPath.MODULES, type_filter='f', select="IO")])
144
+ inf.update({"known_maps": iomaps})
145
+ return inf
104
146
 
105
147
 
106
- def pinmap_dump(keys):
148
+ def pinmap_search(keys):
107
149
  """
108
- keys: one or list of pin names (like: switch_1) to resolve physical pin number
109
- Gives information where to connect the selected periphery to control
110
- DO NOT USE RETURNED PIN NUMBERS FOR FUNC ALLOCATION IN LMs!!!
111
- - USE: physical_pin function for protected IO allocation (overload protection)
150
+ :param keys: one or list of pin names (like: switch_1) to resolve physical pin number
151
+ Gives information where to connect the selected periphery to control WITHOUT PIN BOOKING
112
152
  """
113
153
  if isinstance(keys, str):
114
- try:
115
- num = __resolve_pin_number(keys)
116
- except:
117
- num = None
118
- return {keys: num}
154
+ keys = [keys]
119
155
  pins_cache = {}
120
156
  for pin_name in keys:
121
157
  try:
122
- num = __resolve_pin_number(pin_name)
158
+ num = __resolve_pin(pin_name)
123
159
  except:
124
160
  num = None
125
161
  pins_cache[pin_name] = num
126
162
  return pins_cache
127
163
 
128
164
 
129
- def __resolve_pin_number(key):
165
+ def __resolve_pin(name:str):
130
166
  """
131
167
  Dynamic const lookup table handling by var name
132
- :param key: logical pin name, example: neop, dht, etc.
168
+ :param name: logical pin name, example: neop, dht, etc.
133
169
  """
134
- custom_pin = PinMap.MAPPING.get(key, None) # Get user custom pin map (if any)
170
+ custom_pin = PinMap.MAPPING.get(name, None) # Get user custom pin map (if any)
135
171
  if custom_pin is None:
136
172
  # [1] Handle default pin resolve from static lut
137
173
  mio = f'IO_{PinMap.MAPPING_LUT}'
138
174
  try:
139
175
  exec(f'import {mio}')
140
176
  # GET KEY PARAM VALUE
141
- out = eval(f'{mio}.{key}')
177
+ out = eval(f'{mio}.{name}')
142
178
  # Workaround to support normal python (tuple output), micropython (exact output - int)
143
179
  return int(out[0]) if isinstance(out, tuple) else out
144
180
  except Exception as e:
145
181
  # Missing LP module - don't die
146
182
  if "No module named" in str(e):
147
183
  return None
148
- # Other issue (key not found, etc...)
184
+ # Other issue (name not found, etc...)
185
+ syslog(f"[ERR] io-resolve {name}: {e}")
149
186
  raise Exception(f"[io-resolve] error: {e}")
150
187
  # [2] Handle user custom pins from cstmpmap (overwrite default)
151
188
  return custom_pin
@@ -44,15 +44,25 @@ stppr_4 = const(27) # D27 - stepper motor pin
44
44
 
45
45
 
46
46
  # I2C BUS
47
- i2c_sda = const(21) # D22 - oled - data
48
- i2c_scl = const(22) # D21 - oled - clock
47
+ i2c_sda = const(21) # D21 - oled - data
48
+ i2c_scl = const(22) # D22 - oled - clock
49
+ # I2S BUS
50
+ i2s_sck = const(26) # Serial clock
51
+ i2s_ws = const(25) # Word select
52
+ i2s_sd = const(33) # Serial data
49
53
 
50
54
 
51
55
  # EXTERNAL EVENT IRQ
52
- irq1 = const(4) # D4 - event irq pin
53
- irq2 = const(18) # D18 - event irq pin
54
- irq3 = const(5) # D19 - event irq pin
55
- irq4 = const(13) # D13 - event irq pin
56
+ irq1 = const(4) # D4 - event irq pin
57
+ irq2 = const(18) # D18 - event irq pin
58
+ irq3 = const(5) # D19 - event irq pin
59
+ irq4 = const(13) # D13 - event irq pin
60
+
61
+ js_right = const(4) # oled_ui joystick
62
+ js_left = const(18)
63
+ js_up = const(5)
64
+ js_down = const(13)
65
+ js_press = const(34) # oled_ui center/ok button
56
66
 
57
67
  touch_0 = const(13) # D13 - touch sensor TODO
58
68
 
@@ -61,9 +71,10 @@ touch_0 = const(13) # D13 - touch sensor TODO
61
71
  hcsrtrig = const(32) # D32 - distance HCSR04 trigger pin
62
72
  hcsrecho = const(35) # D35 - distance HCSR04 echo pin
63
73
  dhtpin = const(32) # D32 - dht_pin 11 and 22
64
- co2 = const(35) # D35 - CO2
65
- temp6000 = const(36) # VP - light sensor TEMP6000
66
- ph = const(39) # VN - PH sensor
74
+ co2 = const(35) # D35 - [ADC] CO2
75
+ temp6000 = const(36) # VP - [ADC] light sensor TEMP6000
76
+ ph = const(39) # VN - [ADC] PH sensor
67
77
  ds18 = const(19) # D19 - DS18B20 - temp. sensor
68
-
69
- mic = const(39)
78
+ mic = const(39) # VN - [ADC] microphone
79
+ rot_dt = const(13) # [IRQ] rotary encoder data
80
+ rot_clk = const(12) # [IRQ] rotary encoder clock
@@ -34,7 +34,12 @@ irq1 = const(5) # event irq pin
34
34
  irq2 = const(6) # event irq pin
35
35
  irq3 = const(7) # event irq pin
36
36
  irq4 = const(8) # event irq pin
37
- oleduibttn = const(20) # oled_ui center/ok button
37
+
38
+ js_right = const(5) # oled_ui joystick
39
+ js_left = const(6)
40
+ js_up = const(7)
41
+ js_down = const(8)
42
+ js_press = const(20) # oled_ui center/ok button
38
43
 
39
44
  # I2C BUS
40
45
  i2c_sda = const(8) # oled - data
@@ -0,0 +1,38 @@
1
+ from micropython import const
2
+
3
+ """
4
+ Seeed Studio XIAO ESP32-C6
5
+
6
+ BOARD MICROPYTHON
7
+ D0/A0 - GPIO 0
8
+ D1/A1 - GPIO 1
9
+ D2/A2 - GPIO 2
10
+ D3 - GPIO 21
11
+ D4 SDA - GPIO 22
12
+ D5 SCL - GPIO 23
13
+ D6 TX0 - GPIO 16
14
+ D7 RX0 - GPIO 17
15
+ D8 SCK - GPIO 19
16
+ D9 MISO - GPIO 20
17
+ D10 MOSI - GPIO 18
18
+ BUILTIN LED - GPIO 15
19
+ """
20
+
21
+ # BUILTIN LED
22
+ builtin = const(-15) # BUILT IN LED - progress_led
23
+
24
+
25
+ # I2C BUS
26
+ i2c_sda = const(22) # D4 - data
27
+ i2c_scl = const(23) # D5 - clock
28
+
29
+
30
+ # EXTERNAL EVENT IRQ
31
+ irq1 = const(21) # D3 - event irq1 pin
32
+ irq2 = const(2) # D2 - event irq2 pin
33
+ irq3 = const(1) # D1 - event irq3 pin
34
+ irq4 = const(0) # D0 - event irq4 pin
35
+
36
+
37
+ neop = const(18) # D10 - neopixel OneWire bus [PWM]
38
+
@@ -52,7 +52,12 @@ irq1 = const(39) # event irq pin
52
52
  irq2 = const(37) # event irq pin
53
53
  irq3 = const(35) # event irq pin
54
54
  irq4 = const(33) # event irq pin
55
- oleduibttn = const(34) # oled_ui center/ok button
55
+
56
+ js_right = const(39) # oled_ui joystick
57
+ js_left = const(37)
58
+ js_up = const(35)
59
+ js_down = const(33)
60
+ js_press = const(34) # oled_ui center/ok button
56
61
 
57
62
 
58
63
  # SENSORS
@@ -1,7 +1,43 @@
1
1
  from micropython import const
2
2
 
3
+ #### DEFINE CUSTOM PROGRESS LED LOGIC ####
4
+ class WS2812:
5
+ NEOPIXEL = None
6
+ WHEEL = None
7
+ PIN = const(38) # BUILT IN LED - progress_led
8
+
9
+ try:
10
+ # init ws2812
11
+ from machine import Pin
12
+ from neopixel import NeoPixel
13
+ WS2812.NEOPIXEL = NeoPixel(Pin(WS2812.PIN), 1)
14
+ except Exception as e:
15
+ print(f"[Error] IO error, esp21se ws2812: {e}")
16
+
17
+
18
+ def _step_ws2812(pin=False):
19
+ if pin:
20
+ return WS2812.PIN
21
+
22
+ def _color_wheel():
23
+ while True:
24
+ yield 10, 0, 0
25
+ yield 5, 5, 0
26
+ yield 0, 10, 0
27
+ yield 0, 5, 5
28
+ yield 0, 0, 10
29
+ yield 5, 0, 5
30
+
31
+ if WS2812.WHEEL is None:
32
+ WS2812.WHEEL = _color_wheel()
33
+ WS2812.NEOPIXEL[0] = next(WS2812.WHEEL)
34
+ WS2812.NEOPIXEL.write()
35
+ return True # No double-blink
36
+
37
+ #######################################
38
+
3
39
  # BUILTIN LED
4
- builtin = const(38) # BUILT IN LED - progress_led
40
+ builtin = _step_ws2812 # BUILT IN LED - progress_led
5
41
 
6
42
  # ANALOG RGB + WW + CW
7
43
  redgb = const(37) # - rgb red channel [PWM]
@@ -57,7 +93,12 @@ irq1 = const(45) # - event irq pin
57
93
  irq2 = const(48) # - event irq pin
58
94
  irq3 = const(47) # - event irq pin
59
95
  irq4 = const(21) # - event irq pin
60
- oleduibttn = const(20) # - oled_ui center/ok button
96
+
97
+ js_right = const(45) # oled_ui joystick
98
+ js_left = const(48)
99
+ js_up = const(47)
100
+ js_down = const(21)
101
+ js_press = const(20) # oled_ui center/ok button
61
102
 
62
103
  touch_0 = const(0) # - touch sensor TODO
63
104