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,5 +1,5 @@
1
1
  from machine import Pin, PWM
2
- from microIO import physical_pin
2
+ from microIO import bind_pin, PinMap
3
3
  from Common import SmartADC
4
4
  from random import randint
5
5
 
@@ -10,22 +10,24 @@ from random import randint
10
10
 
11
11
  class IObjects:
12
12
  PIN_OBJS = {}
13
+ DENY_TAG_INPUT = True
13
14
 
14
15
  @staticmethod
15
- def _check_obj(pin, tag):
16
- if IObjects.PIN_OBJS.get(pin, None) is None:
17
- return False # Obj not exists
18
- elif IObjects.PIN_OBJS.get(pin)[0] != tag:
19
- return False # Obj not exists
20
- return True # Obj exists
16
+ def store_obj(pin:int, obj:object) -> None:
17
+ IObjects.PIN_OBJS[pin] = obj
21
18
 
22
19
  @staticmethod
23
- def _store_obj(pin, tag, obj):
24
- IObjects.PIN_OBJS[pin] = (tag, obj)
20
+ def get_obj(pin:int) -> object:
21
+ return IObjects.PIN_OBJS[pin]
25
22
 
26
23
  @staticmethod
27
- def _get_obj(pin):
28
- return IObjects.PIN_OBJS[pin][1]
24
+ def is_unassigned(pin_number):
25
+ return IObjects.PIN_OBJS.get(pin_number, None) is None
26
+
27
+ @staticmethod
28
+ def protect_builtins(pin_num, tag):
29
+ if pin_num is None and IObjects.DENY_TAG_INPUT:
30
+ raise Exception(f"pin must be integer not {type(tag)}: {tag}")
29
31
 
30
32
 
31
33
  ##################################
@@ -36,37 +38,39 @@ def __digital_out_init(pin):
36
38
  """
37
39
  Init Digital output
38
40
  """
39
- if not isinstance(pin, int):
40
- pin = physical_pin(pin)
41
- if not IObjects._check_obj(pin, 'out'):
42
- pin_obj = Pin(pin, Pin.OUT)
43
- IObjects._store_obj(pin, 'out', pin_obj)
44
- return IObjects._get_obj(pin)
41
+ pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"OUT{pin}", pin)
42
+ IObjects.protect_builtins(pin, pin_tag)
43
+ pin_num = bind_pin(pin_tag, pin)
44
+ if IObjects.is_unassigned(pin_number=pin_num):
45
+ pin_obj = Pin(pin_num, Pin.OUT)
46
+ IObjects.store_obj(pin_num, pin_obj)
47
+ return IObjects.get_obj(pin_num)
45
48
 
46
49
 
47
50
  def __digital_in_init(pin):
48
51
  """
49
52
  Init Digital output
50
53
  """
51
- if not isinstance(pin, int):
52
- pin = physical_pin(pin)
53
- if not IObjects._check_obj(pin, 'in'):
54
- pin_obj = Pin(pin, Pin.IN, Pin.PULL_UP)
55
- IObjects._store_obj(pin, 'in', pin_obj)
56
- return IObjects._get_obj(pin)
54
+ pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"IN{pin}", pin)
55
+ IObjects.protect_builtins(pin, pin_tag)
56
+ pin_num = bind_pin(pin_tag, pin)
57
+ if IObjects.is_unassigned(pin_number=pin_num):
58
+ pin_obj = Pin(pin_num, Pin.IN, Pin.PULL_UP)
59
+ IObjects.store_obj(pin_num, pin_obj)
60
+ return IObjects.get_obj(pin_num)
57
61
 
58
62
 
59
63
  def __pwm_init(pin, freq):
60
64
  """
61
65
  Init PWM signal
62
66
  """
63
- if not isinstance(pin, int):
64
- pin = physical_pin(pin)
65
- tag = 'pwm{}'.format(freq)
66
- if not IObjects._check_obj(pin, tag):
67
- pin_obj = PWM(Pin(pin), freq=freq)
68
- IObjects._store_obj(pin, tag, pin_obj)
69
- return IObjects._get_obj(pin)
67
+ pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"PWM{pin}", pin)
68
+ IObjects.protect_builtins(pin, pin_tag)
69
+ pin_num = bind_pin(pin_tag, pin)
70
+ if IObjects.is_unassigned(pin_number=pin_num):
71
+ pin_obj = PWM(Pin(pin_num), freq=freq)
72
+ IObjects.store_obj(pin_num, pin_obj)
73
+ return IObjects.get_obj(pin_num)
70
74
 
71
75
 
72
76
  ##################################
@@ -118,7 +122,10 @@ def get_adc(pin, key=None):
118
122
  :param key: select adc parameter by key
119
123
  :return dict: adc volt, percent, raw
120
124
  """
121
- data = SmartADC.get_singleton(pin).get()
125
+ pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"ADC{pin}", pin)
126
+ IObjects.protect_builtins(pin, pin_tag)
127
+ pin = bind_pin(pin_tag, pin)
128
+ data = SmartADC.get_instance(pin).get()
122
129
  data["pin"] = pin
123
130
  if key is None:
124
131
  return data
@@ -134,11 +141,17 @@ def get_in(pin):
134
141
  return {'pin': pin, 'state': __digital_in_init(pin).value()}
135
142
 
136
143
 
137
- def genio_pins():
144
+ def load(allow_tags=False):
138
145
  """
139
- Get used pins in genIO module
146
+ Optional load function to set
147
+ tag input besides pin numbers.
148
+ [WARNING] allow_tag=True can be dangerous
149
+ - it can overwrite existing I/O based on
150
+ the provided tag
151
+ :param allow_tag: default False
140
152
  """
141
- return IObjects.PIN_OBJS
153
+ IObjects.DENY_TAG_INPUT = not allow_tags
154
+ return "[WARNING] allow_tag=True can be dangerous, use it consciously!!!" if allow_tags else "Loaded"
142
155
 
143
156
 
144
157
  #######################
@@ -156,4 +169,5 @@ def help(widgets=False):
156
169
  'set_random_pwm pin min_duty max_duty freq=20480)',\
157
170
  'set_out pin=<int> state=<None/True/False>',\
158
171
  'get_adc pin key=None',\
159
- 'get_in pin', 'genio_pins'
172
+ 'get_in pin',\
173
+ 'load allow_tags=False'
@@ -0,0 +1,111 @@
1
+ from microIO import bind_pin, pinmap_search
2
+ from Types import resolve
3
+ from machine import Pin, PWM
4
+ from utime import sleep_ms
5
+
6
+ class Haptic:
7
+ HAPTIC_OBJ = None
8
+ # Haptic vibration motor settings
9
+ LOW = 700
10
+ HIGH = 1000
11
+ STOP = 0
12
+ WAIT_TO_STOP_MS = 100
13
+ INTENSITY = "low"
14
+
15
+ def load(intensity=None):
16
+ """
17
+ Init haptic engine
18
+ :param intensity: low / high / None haptic feedback intensity
19
+ """
20
+ if Haptic.HAPTIC_OBJ is None:
21
+ dimmer_pin = Pin(bind_pin('haptic'))
22
+ Haptic.HAPTIC_OBJ = PWM(dimmer_pin, freq=20480)
23
+ Haptic.HAPTIC_OBJ.duty(0)
24
+ if intensity in ("high", "low"):
25
+ Haptic.INTENSITY = intensity
26
+ return Haptic.HAPTIC_OBJ
27
+
28
+
29
+ def tap():
30
+ """
31
+ Tap - buzz effect
32
+ """
33
+ haptic = load()
34
+ if Haptic.INTENSITY == "low":
35
+ haptic.duty(Haptic.LOW)
36
+ sleep_ms(150)
37
+ haptic.duty(Haptic.STOP)
38
+ return "Tap: low"
39
+ if Haptic.INTENSITY == "high":
40
+ haptic.duty(Haptic.HIGH)
41
+ sleep_ms(150)
42
+ haptic.duty(Haptic.STOP)
43
+ return "Tap: high"
44
+
45
+ def gen(intensity=Haptic.LOW, wait=200, stop_wait=100, repeat=2):
46
+ """
47
+ Generate effect
48
+ :param intensity: 600-1000
49
+ :param wait: wait after intensity was set [ms]
50
+ :param stop_wait: wait for top the motor [ms]
51
+ :param repeat: repeat cycle
52
+ """
53
+ haptic = load()
54
+ for _ in range(repeat):
55
+ # Wait to run
56
+ haptic.duty(intensity)
57
+ sleep_ms(wait)
58
+ # Wait to stop
59
+ haptic.duty(0)
60
+ sleep_ms(stop_wait)
61
+ haptic.duty(0)
62
+ return f"finished: {(wait+stop_wait)*repeat}ms:{intensity}:{wait}:{repeat}"
63
+
64
+
65
+ def effect1():
66
+ haptic = load()
67
+ haptic.duty(Haptic.HIGH)
68
+ sleep_ms(150)
69
+ haptic.duty(Haptic.LOW)
70
+ sleep_ms(100)
71
+ haptic.duty(Haptic.HIGH)
72
+ sleep_ms(100)
73
+ haptic.duty(Haptic.STOP)
74
+ return "finished: 350ms"
75
+
76
+
77
+ def effect2():
78
+ haptic = load()
79
+ haptic.duty(Haptic.HIGH)
80
+ sleep_ms(150)
81
+ for i in range(Haptic.HIGH, 300, -100):
82
+ haptic.duty(i)
83
+ sleep_ms(50)
84
+ haptic.duty(Haptic.STOP)
85
+ return "finished: 400ms"
86
+
87
+
88
+ def deinit():
89
+ Haptic.HAPTIC_OBJ.deinit()
90
+ Haptic.HAPTIC_OBJ = None
91
+ return "Deinited"
92
+
93
+
94
+ def pinmap():
95
+ """
96
+ [i] micrOS LM naming convention
97
+ Shows logical pins - pin number(s) used by this Load module
98
+ - info which pins to use for this application
99
+ :return dict: pin name (str) - pin value (int) pairs
100
+ """
101
+ return pinmap_search('haptic')
102
+
103
+
104
+ def help(widgets=False):
105
+ return resolve(("load intensity='low/high'/None",
106
+ "BUTTON tap",
107
+ "BUTTON effect1",
108
+ "BUTTON effect2",
109
+ "gen max=<600-1000> wait=200 stop_wait=100 repeat=2",
110
+ "deinit",
111
+ "pinmap"), widgets=widgets)
@@ -0,0 +1,61 @@
1
+ from microIO import bind_pin, pinmap_search
2
+
3
+ __I2C = None
4
+
5
+
6
+ def __init():
7
+ global __I2C
8
+ if __I2C is None:
9
+ from machine import Pin, I2C
10
+ __I2C = I2C(-1, Pin(bind_pin('i2c_scl')), Pin(bind_pin('i2c_sda')))
11
+ return __I2C
12
+
13
+
14
+ def scan():
15
+ """
16
+ I2C scan function - experimental
17
+ :return list: list of devices
18
+ """
19
+ devices = [ hex(device) for device in __init().scan() ]
20
+ return devices
21
+
22
+
23
+ def discover():
24
+ """
25
+ Discover devices
26
+ """
27
+ known_addresses = {hex(0x0A): "TRACKBALL", hex(0x3c): "OLED",
28
+ hex(0x76): "BME280", hex(0x10): 'VEML7700',
29
+ hex(0x6b): "QMI8658", hex(0x29): 'TCS3472'}
30
+ devices = scan()
31
+ output = {"unknown": []}
32
+ for k in devices:
33
+ if k in known_addresses:
34
+ device_name = known_addresses[k]
35
+ output[device_name] = k
36
+ else:
37
+ output["unknown"].append(k)
38
+ return output
39
+
40
+ #######################
41
+ # LM helper functions #
42
+ #######################
43
+
44
+ def pinmap():
45
+ """
46
+ [i] micrOS LM naming convention
47
+ Shows logical pins - pin number(s) used by this Load module
48
+ - info which pins to use for this application
49
+ :return dict: pin name (str) - pin value (int) pairs
50
+ """
51
+ return pinmap_search(['i2c_scl', 'i2c_sda'])
52
+
53
+
54
+ def help(widgets=False):
55
+ """
56
+ [BETA][i] micrOS LM naming convention - built-in help message
57
+ :return tuple:
58
+ (widgets=False) list of functions implemented by this application
59
+ (widgets=True) list of widget json for UI generation
60
+ """
61
+ return 'scan', 'discover', 'pinmap'
@@ -1,16 +1,14 @@
1
1
  from ustruct import unpack
2
- from microIO import physical_pin, pinmap_dump
3
- from Common import micro_task, rest_endpoint
2
+ from microIO import bind_pin, pinmap_search
3
+ from Common import micro_task, web_endpoint, manage_task
4
4
  from machine import I2S, Pin
5
- from Debug import console_write
6
- from Tasks import TaskBase
7
5
  import uasyncio as asyncio
8
6
 
9
7
 
10
8
  class Data:
11
- SCK_PIN = Pin(physical_pin('i2s_sck')) # Serial clock
12
- WS_PIN = Pin(physical_pin('i2s_ws')) # Word select
13
- SD_PIN = Pin(physical_pin('i2s_sd')) # Serial data
9
+ SCK_PIN = Pin(bind_pin('i2s_sck')) # Serial clock
10
+ WS_PIN = Pin(bind_pin('i2s_ws')) # Word select
11
+ SD_PIN = Pin(bind_pin('i2s_sd')) # Serial data
14
12
  I2S_CHANNEL = 1
15
13
  FORMAT = I2S.STEREO
16
14
  SAMPLING_RATE = 8000
@@ -26,7 +24,7 @@ class Data:
26
24
  CONTROL_TASK_TAG = 'i2s._mic_control'
27
25
  CONTROL_BUTTON_PIN = None
28
26
 
29
- # To be initialized by load_n_init
27
+ # To be initialized by load
30
28
  I2S_AUDIO_IN = None
31
29
  SREADER = None
32
30
 
@@ -51,18 +49,18 @@ async def __control_task(ms_period=50):
51
49
  querying samples. Pushing the button again reinitializes the
52
50
  microphone without having to restart dependent load modules.
53
51
  """
54
- with micro_task(tag=Data.CONTROL_TASK_TAG):
52
+ with micro_task(tag=Data.CONTROL_TASK_TAG) as my_task:
55
53
  while True:
56
54
  if Data.CONTROL_BUTTON_PIN.value():
57
55
  Data.MIC_ENABLED = not Data.MIC_ENABLED
58
- console_write(f'Microphone enabled: {Data.MIC_ENABLED}')
56
+ print(f'Microphone enabled: {Data.MIC_ENABLED}')
59
57
 
60
58
  if Data.MIC_ENABLED:
61
- load_n_init()
59
+ load()
62
60
 
63
61
  # Debounce
64
- await asyncio.sleep_ms(500)
65
- await asyncio.sleep_ms(ms_period)
62
+ await my_task.feed(sleep_ms=500)
63
+ await my_task.feed(sleep_ms=ms_period)
66
64
 
67
65
 
68
66
  ###########################
@@ -78,7 +76,7 @@ async def __task(ms_period):
78
76
  recording_task.out = 'Capturing'
79
77
  while Data.MIC_ENABLED:
80
78
  await Data.SREADER.readinto(sample_mv)
81
- await asyncio.sleep_ms(ms_period)
79
+ await recording_task.feed(sleep_ms=ms_period)
82
80
  recording_task.out = 'Finished'
83
81
 
84
82
  except Exception as e:
@@ -96,8 +94,7 @@ def background_capture():
96
94
  if not Data.MIC_ENABLED:
97
95
  return "Microphone is disabled"
98
96
 
99
- state = micro_task(tag=Data.TASK_TAG, task=__task(ms_period=1))
100
- return "Starting" if state else "Already running"
97
+ return micro_task(tag=Data.TASK_TAG, task=__task(ms_period=1))
101
98
 
102
99
 
103
100
  def get_from_buffer(capture_duration=Data.CAPTURE_DURATION,
@@ -139,8 +136,8 @@ async def _capture(capture_duration = Data.CAPTURE_DURATION,
139
136
  if not Data.MIC_ENABLED:
140
137
  return bytearray()
141
138
 
142
- if TaskBase.is_busy(Data.TASK_TAG):
143
- console_write('[i2s_mic] Warning: micro task is already running, capturing directly is not possible. '\
139
+ if manage_task(Data.TASK_TAG, 'isbusy'):
140
+ print('[i2s_mic] Warning: micro task is already running, capturing directly is not possible. '\
144
141
  'Use get_from_buffer() instead.')
145
142
  return bytearray()
146
143
 
@@ -247,7 +244,7 @@ def set_volume(shift_size=0):
247
244
  Data.SHIFT_SIZE = shift_size
248
245
 
249
246
 
250
- def load_n_init(buf_length=Data.BUF_LENGTH, sampling_rate=Data.SAMPLING_RATE,
247
+ def load(buf_length=Data.BUF_LENGTH, sampling_rate=Data.SAMPLING_RATE,
251
248
  capture_duration=Data.CAPTURE_DURATION, shift_size = Data.SHIFT_SIZE,
252
249
  sample_size = Data.SAMPLE_SIZE, i2s_channel = Data.I2S_CHANNEL,
253
250
  default_channel = Data.DEFAULT_CHANNEL, sound_format = Data.FORMAT,
@@ -278,7 +275,7 @@ def load_n_init(buf_length=Data.BUF_LENGTH, sampling_rate=Data.SAMPLING_RATE,
278
275
 
279
276
  if control_button:
280
277
  micro_task(tag=Data.CONTROL_TASK_TAG, task=__control_task())
281
- Data.CONTROL_BUTTON_PIN = Pin(physical_pin(control_button), Pin.IN)
278
+ Data.CONTROL_BUTTON_PIN = Pin(bind_pin(control_button), Pin.IN)
282
279
 
283
280
  Data.BUF_LENGTH = buf_length
284
281
  Data.SAMPLING_RATE = sampling_rate
@@ -296,7 +293,7 @@ def load_n_init(buf_length=Data.BUF_LENGTH, sampling_rate=Data.SAMPLING_RATE,
296
293
  Data.SREADER = asyncio.StreamReader(Data.I2S_AUDIO_IN)
297
294
 
298
295
  if enable_endpoint:
299
- rest_endpoint('mic/stream', _record_clb)
296
+ web_endpoint('mic/stream', _record_clb)
300
297
 
301
298
  if Data.RECORD_TASK_ENABLED:
302
299
  background_capture()
@@ -315,7 +312,7 @@ def pinmap():
315
312
  - info which pins to use for this application
316
313
  :return dict: pin name (str) - pin value (int) pairs
317
314
  """
318
- return pinmap_dump(['sck', 'ws', 'sd'])
315
+ return pinmap_search(['i2s_sck', 'i2s_ws', 'i2s_sd'])
319
316
 
320
317
 
321
318
  def help(widgets=False):
@@ -325,7 +322,7 @@ def help(widgets=False):
325
322
  (widgets=False) list of functions implemented by this application
326
323
  (widgets=True) list of widget json for UI generation
327
324
  """
328
- return 'load_n_init buf_length=16000 '\
325
+ return 'load buf_length=16000 '\
329
326
  'sampling_rate=8000 capture_duration=0.25 shift_size=6 '\
330
327
  'sample_size=16 i2s_channel=1 default_channel=\'right\' '\
331
328
  'sound_format=I2S.STEREO downsampling=1 control_button='' enable_endpoint=True',\
@@ -17,9 +17,9 @@
17
17
 
18
18
  from machine import Pin, UART
19
19
  import utime
20
- from microIO import physical_pin, pinmap_dump
20
+ from microIO import bind_pin, pinmap_search
21
21
 
22
- ser = UART(1, baudrate = 256000, tx=Pin(physical_pin('tx')), rx=Pin(physical_pin('rx')), timeout = 1)
22
+ ser = UART(1, baudrate = 256000, tx=Pin(bind_pin('tx')), rx=Pin(bind_pin('rx')), timeout = 1)
23
23
  HEADER = bytes([0xfd, 0xfc, 0xfb, 0xfa])
24
24
  TERMINATOR = bytes([0x04, 0x03, 0x02, 0x01])
25
25
  NULLDATA = bytes([])
@@ -190,7 +190,7 @@ def pinmap():
190
190
  - info which pins to use for this application
191
191
  :return dict: pin name (str) - pin value (int) pairs
192
192
  """
193
- return pinmap_dump(['tx', 'rx'])
193
+ return pinmap_search(['tx', 'rx'])
194
194
 
195
195
 
196
196
  def help(widgets=False):
@@ -5,14 +5,9 @@ ADC.ATTN_2_5DB — the full range voltage: 1.5V
5
5
  ADC.ATTN_6DB — the full range voltage: 2.0V
6
6
  ADC.ATTN_11DB — the full range voltage: 3.3V
7
7
  """
8
- import uasyncio as asyncio
9
- from Common import SmartADC, micro_task
8
+ from Common import SmartADC, micro_task, exec_cmd
10
9
  from Types import resolve
11
- try:
12
- import LM_intercon as InterCon
13
- except:
14
- InterCon = None
15
- from microIO import physical_pin, pinmap_dump
10
+ from microIO import bind_pin, pinmap_search
16
11
 
17
12
 
18
13
  ADC = None
@@ -24,10 +19,18 @@ def __init_tempt6000():
24
19
  """
25
20
  global ADC
26
21
  if ADC is None:
27
- ADC = SmartADC(physical_pin('temp6000'))
22
+ ADC = SmartADC(bind_pin('temp6000'))
28
23
  return ADC
29
24
 
30
25
 
26
+ def load():
27
+ """
28
+ Initialize TEMPT6000 light sensor module
29
+ """
30
+ __init_tempt6000()
31
+ return "TEMPT6000 light sensor module - loaded"
32
+
33
+
31
34
  def intensity():
32
35
  """
33
36
  Measure light intensity in %
@@ -69,21 +72,17 @@ async def _task(on, off, threshold, tolerance=2, check_ms=5000):
69
72
  # TURN ON
70
73
  if percent <= threshold:
71
74
  if on != last_ev:
72
- if InterCon is not None:
73
- host = on[0]
74
- cmd = ' '.join(on[1:])
75
- InterCon.send_cmd(host, cmd)
76
- my_task.out = f"{percent}% <= threshold: {threshold}% - ON"
75
+ host = on[0]
76
+ state, _ = exec_cmd(on[1:] + [f">>{host}"], jsonify=True)
77
+ my_task.out = f"{percent}% <= threshold: {threshold}% - ON [{'OK' if state else 'NOK'}]"
77
78
  last_ev = on
78
79
  elif percent > threshold+tolerance: # +tolerance to avoid "on/off/on/off" on threshold limit
79
80
  if off != last_ev:
80
- if InterCon is not None:
81
- host = off[0]
82
- cmd = ' '.join(off[1:])
83
- InterCon.send_cmd(host, cmd)
84
- my_task.out = f"{percent}% > threshold: {threshold+tolerance}% - OFF"
81
+ host = off[0]
82
+ state, _ = exec_cmd(off[1:] + [f">>{host}"], jsonify=True)
83
+ my_task.out = f"{percent}% > threshold: {threshold+tolerance}% - OFF [{'OK' if state else 'NOK'}]"
85
84
  last_ev = off
86
- await asyncio.sleep_ms(check_ms) # Sample every <check_ms> sec
85
+ await my_task.feed(sleep_ms=check_ms) # Sample every <check_ms> sec
87
86
 
88
87
 
89
88
  def subscribe_intercon(on, off, threshold=4, tolerance=2, sample_sec=60):
@@ -97,11 +96,8 @@ def subscribe_intercon(on, off, threshold=4, tolerance=2, sample_sec=60):
97
96
  """
98
97
  # Start play - servo XY in async task
99
98
  # [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
100
- state = micro_task(tag="light_sensor.intercon", task=_task(on, off, threshold, tolerance=tolerance,
99
+ return micro_task(tag="light_sensor.intercon", task=_task(on, off, threshold, tolerance=tolerance,
101
100
  check_ms=sample_sec*1000))
102
- if state:
103
- return 'Light sensor remote trigger starts'
104
- return 'Light sensor remote trigger - already running'
105
101
 
106
102
 
107
103
  #######################
@@ -115,7 +111,7 @@ def pinmap():
115
111
  - info which pins to use for this application
116
112
  :return dict: pin name (str) - pin value (int) pairs
117
113
  """
118
- return pinmap_dump('temp6000')
114
+ return pinmap_search('temp6000')
119
115
 
120
116
 
121
117
  def help(widgets=False):
@@ -126,6 +122,6 @@ def help(widgets=False):
126
122
  (widgets=True) list of widget json for UI generation
127
123
  """
128
124
  return resolve(('TEXTBOX intensity', 'TEXTBOX illuminance',
129
- 'subscribe_intercon on off threshold=1 tolerance=2 sample_sec=60',\
130
- 'pinmap', 'INFO sensor:TEMP600'), widgets=widgets)
125
+ 'subscribe_intercon on off threshold=1 tolerance=2 sample_sec=60',
126
+ 'pinmap', 'load', '[Info] sensor:TEMP600'), widgets=widgets)
131
127