micrOSDevToolKit 3.0.3__tar.gz → 3.0.6__tar.gz

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 (437) hide show
  1. {microsdevtoolkit-3.0.3/micrOSDevToolKit.egg-info → microsdevtoolkit-3.0.6}/PKG-INFO +1 -1
  2. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +6 -6
  3. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Config.py +27 -33
  4. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Scheduler.py +1 -1
  5. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Shell.py +1 -1
  6. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Types.py +23 -14
  7. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Web.py +1 -1
  8. microsdevtoolkit-3.0.6/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
  9. microsdevtoolkit-3.0.6/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
  10. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  11. microsdevtoolkit-3.0.6/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
  12. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
  13. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_OV2640.py +3 -4
  14. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_aht10.py +1 -1
  15. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_bme280.py +1 -1
  16. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_dht11.py +1 -1
  17. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_dht22.py +1 -1
  18. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_system.py +1 -1
  19. microsdevtoolkit-3.0.6/micrOS/source/modules/__pycache__/LM_OV2640.cpython-312.pyc +0 -0
  20. microsdevtoolkit-3.0.6/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
  21. microsdevtoolkit-3.0.6/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
  22. {microsdevtoolkit-3.0.3/toolkit/workspace/precompiled → microsdevtoolkit-3.0.6/micrOS/source}/web/dashboard.html +0 -1
  23. {microsdevtoolkit-3.0.3/toolkit/workspace/precompiled → microsdevtoolkit-3.0.6/micrOS/source}/web/udashboard.js +77 -15
  24. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/web/uwidgets.js +7 -0
  25. microsdevtoolkit-3.0.6/micrOS/source/web/uwidgets_pro.js +272 -0
  26. microsdevtoolkit-3.0.6/micrOS/utests/test_config.py +152 -0
  27. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/utests/test_scheduler.py +1 -1
  28. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
  29. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOSDevToolKit.egg-info/SOURCES.txt +6 -0
  30. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/setup.py +1 -1
  31. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/micrOSdashboard.py +2 -1
  32. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  33. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  34. microsdevtoolkit-3.0.6/toolkit/workspace/precompiled/Config.mpy +0 -0
  35. microsdevtoolkit-3.0.6/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  36. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  37. microsdevtoolkit-3.0.6/toolkit/workspace/precompiled/Types.mpy +0 -0
  38. microsdevtoolkit-3.0.6/toolkit/workspace/precompiled/Web.mpy +0 -0
  39. microsdevtoolkit-3.0.6/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  40. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  41. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  42. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  43. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  44. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  45. {microsdevtoolkit-3.0.3/micrOS/source → microsdevtoolkit-3.0.6/toolkit/workspace/precompiled}/web/dashboard.html +0 -1
  46. {microsdevtoolkit-3.0.3/micrOS/source → microsdevtoolkit-3.0.6/toolkit/workspace/precompiled}/web/udashboard.js +77 -15
  47. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/web/uwidgets.js +7 -0
  48. microsdevtoolkit-3.0.6/toolkit/workspace/precompiled/web/uwidgets_pro.js +272 -0
  49. microsdevtoolkit-3.0.3/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
  50. microsdevtoolkit-3.0.3/micrOS/source/web/uwidgets_pro.js +0 -99
  51. microsdevtoolkit-3.0.3/toolkit/workspace/precompiled/Config.mpy +0 -0
  52. microsdevtoolkit-3.0.3/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  53. microsdevtoolkit-3.0.3/toolkit/workspace/precompiled/Types.mpy +0 -0
  54. microsdevtoolkit-3.0.3/toolkit/workspace/precompiled/Web.mpy +0 -0
  55. microsdevtoolkit-3.0.3/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  56. microsdevtoolkit-3.0.3/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -99
  57. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/LICENSE +0 -0
  58. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/MANIFEST.in +0 -0
  59. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/README.md +0 -0
  60. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/devToolKit.py +0 -0
  61. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/__init__.py +0 -0
  62. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/.DS_Store +0 -0
  63. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  64. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  65. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  66. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  67. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  68. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  69. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  70. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  71. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  72. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  73. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  74. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  75. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  76. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/media/__init__.py +0 -0
  77. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/media/dnd.png +0 -0
  78. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/media/logo.png +0 -0
  79. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/media/logo_mini.png +0 -0
  80. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/media/usb_port_icon.png +0 -0
  81. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/media/wifi_icon.png +0 -0
  82. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/__init__.py +0 -0
  83. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/board_commands.json +0 -0
  84. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  85. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  86. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
  87. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  88. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  89. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  90. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  91. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  92. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  93. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  94. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  95. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  96. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/.DS_Store +0 -0
  97. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Auth.py +0 -0
  98. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Buffer.py +0 -0
  99. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Common.py +0 -0
  100. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Debug.py +0 -0
  101. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Espnow.py +0 -0
  102. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Files.py +0 -0
  103. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Hooks.py +0 -0
  104. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/InterConnect.py +0 -0
  105. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Interrupts.py +0 -0
  106. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Logger.py +0 -0
  107. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Network.py +0 -0
  108. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Notify.py +0 -0
  109. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Pacman.py +0 -0
  110. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Server.py +0 -0
  111. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Tasks.py +0 -0
  112. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/Time.py +0 -0
  113. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
  114. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  115. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  116. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  117. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
  118. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
  119. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
  120. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  121. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  122. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  123. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
  124. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
  125. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  126. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
  127. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/config/_git.keep +0 -0
  128. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/helpers.py +0 -0
  129. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/main.py +0 -0
  130. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/micrOS.py +0 -0
  131. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/micrOSloader.py +0 -0
  132. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/microIO.py +0 -0
  133. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_esp32.py +0 -0
  134. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_esp32c3.py +0 -0
  135. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_esp32c5.py +0 -0
  136. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_esp32c6.py +0 -0
  137. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_esp32s2.py +0 -0
  138. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_esp32s3.py +0 -0
  139. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_m5stamp.py +0 -0
  140. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_qtpy.py +0 -0
  141. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_rp2.py +0 -0
  142. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/IO_tinypico.py +0 -0
  143. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_L298N.py +0 -0
  144. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_L9110_DCmotor.py +0 -0
  145. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_VL53L0X.py +0 -0
  146. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_buzzer.py +0 -0
  147. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_cct.py +0 -0
  148. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_cluster.py +0 -0
  149. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_co2.py +0 -0
  150. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_dimmer.py +0 -0
  151. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_distance.py +0 -0
  152. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_ds18.py +0 -0
  153. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_esp32.py +0 -0
  154. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_espnow.py +0 -0
  155. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_fileserver.py +0 -0
  156. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_gameOfLife.py +0 -0
  157. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_genIO.py +0 -0
  158. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_haptic.py +0 -0
  159. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_i2c.py +0 -0
  160. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_i2s_mic.py +0 -0
  161. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_ld2410.py +0 -0
  162. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_light_sensor.py +0 -0
  163. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_mh_z19c.py +0 -0
  164. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_neoeffects.py +0 -0
  165. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_neopixel.py +0 -0
  166. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_oled.py +0 -0
  167. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
  168. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_oled_ui.py +0 -0
  169. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_pacman.py +0 -0
  170. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_presence.py +0 -0
  171. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_qmi8658.py +0 -0
  172. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_rencoder.py +0 -0
  173. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_rest.py +0 -0
  174. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_rgb.py +0 -0
  175. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_rgbcct.py +0 -0
  176. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_roboarm.py +0 -0
  177. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_robustness.py +0 -0
  178. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_rp2w.py +0 -0
  179. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_sdcard.py +0 -0
  180. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_servo.py +0 -0
  181. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_sound_event.py +0 -0
  182. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_stepper.py +0 -0
  183. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_switch.py +0 -0
  184. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_tcs3472.py +0 -0
  185. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_telegram.py +0 -0
  186. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_tinyrgb.py +0 -0
  187. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_trackball.py +0 -0
  188. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_veml7700.py +0 -0
  189. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/modules/LM_web.py +0 -0
  190. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/urequests.py +0 -0
  191. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/web/editor.js +0 -0
  192. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/web/filesui.html +0 -0
  193. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/web/filesui.js +0 -0
  194. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/web/index.html +0 -0
  195. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/web/uapi.js +0 -0
  196. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/source/web/ustyle.css +0 -0
  197. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/utests/__init__.py +0 -0
  198. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/utests/test_buffer.py +0 -0
  199. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/utests/test_time.py +0 -0
  200. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/utests/test_urequests.py +0 -0
  201. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/utests/test_urequests_real_api.py +0 -0
  202. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOS/utests/test_web_engine.py +0 -0
  203. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  204. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  205. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  206. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/setup.cfg +0 -0
  207. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/DevEnvCompile.py +0 -0
  208. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/DevEnvOTA.py +0 -0
  209. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/DevEnvUSB.py +0 -0
  210. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/Gateway.py +0 -0
  211. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/LM_to_compile.dat +0 -0
  212. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/MicrOSDevEnv.py +0 -0
  213. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/WebRepl.py +0 -0
  214. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/__init__.py +0 -0
  215. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/BackupRestore.py +0 -0
  216. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  217. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/CCTTest.py +0 -0
  218. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/CamStream.py +0 -0
  219. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/CatGame.py +0 -0
  220. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/Dimmer.py +0 -0
  221. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/GetVersion.py +0 -0
  222. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  223. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  224. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  225. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  226. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
  227. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/RGBTest.py +0 -0
  228. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/RoboArm.py +0 -0
  229. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/SED_test.py +0 -0
  230. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/SensorsTest.py +0 -0
  231. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/SystemTest.py +0 -0
  232. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/Template_app.py +0 -0
  233. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/__init__.py +0 -0
  234. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/_app_base.py +0 -0
  235. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/_capture.py +0 -0
  236. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
  237. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  238. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  239. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  240. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/gateway/gateway.css +0 -0
  241. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/gateway/img_stream.html +0 -0
  242. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/gateway/index.html +0 -0
  243. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/LocalMachine.py +0 -0
  244. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/MicrosFiles.py +0 -0
  245. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/Repository.py +0 -0
  246. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/SafeInput.py +0 -0
  247. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/SearchDevices.py +0 -0
  248. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/SerialDriverHandler.py +0 -0
  249. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/TerminalColors.py +0 -0
  250. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/__init__.py +0 -0
  251. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/macroScript.py +0 -0
  252. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/micrOSClient.py +0 -0
  253. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/micrOSClientHistory.py +0 -0
  254. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/lib/pip_package_installer.py +0 -0
  255. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/micrOSlint.py +0 -0
  256. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/.DS_Store +0 -0
  257. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/IO_darwin.py +0 -0
  258. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  259. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  260. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  261. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  262. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  263. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  264. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  265. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  266. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  267. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  268. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  269. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  270. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  271. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  272. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  273. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  274. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  275. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  276. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  277. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  278. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  279. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  280. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  281. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  282. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  283. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  284. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  285. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  286. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  287. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  288. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  289. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  290. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  291. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  292. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  293. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  294. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  295. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  296. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  297. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  298. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  299. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  300. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  301. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  302. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  303. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  304. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  305. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  306. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  307. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  308. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  309. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  310. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  311. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  312. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  313. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  314. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  315. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/aioespnow.py +0 -0
  316. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/camera.py +0 -0
  317. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/dht.py +0 -0
  318. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/dotstar.py +0 -0
  319. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/ds18x20.py +0 -0
  320. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/esp32.py +0 -0
  321. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/framebuf.py +0 -0
  322. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/machine.py +0 -0
  323. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/micropython.py +0 -0
  324. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/mip.py +0 -0
  325. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/neopixel.py +0 -0
  326. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/network.py +0 -0
  327. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/node_config.json +0 -0
  328. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/ntptime.py +0 -0
  329. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/onewire.py +0 -0
  330. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/sim_common.py +0 -0
  331. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/simgc.py +0 -0
  332. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/simulator.py +0 -0
  333. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/tinypico.py +0 -0
  334. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/uasyncio.py +0 -0
  335. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/uos.py +0 -0
  336. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/urandom.py +0 -0
  337. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/usocket.py +0 -0
  338. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/ussl.py +0 -0
  339. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/ustruct.py +0 -0
  340. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/utime.py +0 -0
  341. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/view01.jpg +0 -0
  342. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/view02.jpg +0 -0
  343. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/simulator_lib/webrepl.py +0 -0
  344. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/socketClient.py +0 -0
  345. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/user_data/.include +0 -0
  346. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/user_data/webhooks/generic.py +0 -0
  347. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/user_data/webhooks/macro.py +0 -0
  348. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/user_data/webhooks/template.macro +0 -0
  349. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/user_data/webhooks/template.py +0 -0
  350. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/__init__.py +0 -0
  351. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Auth.mpy +0 -0
  352. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
  353. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Common.mpy +0 -0
  354. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Debug.mpy +0 -0
  355. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Espnow.mpy +0 -0
  356. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Files.mpy +0 -0
  357. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  358. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  359. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  360. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Logger.mpy +0 -0
  361. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Network.mpy +0 -0
  362. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  363. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
  364. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Server.mpy +0 -0
  365. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  366. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/Time.mpy +0 -0
  367. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/_mpy.version +0 -0
  368. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/config/_git.keep +0 -0
  369. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/helpers.mpy +0 -0
  370. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/main.py +0 -0
  371. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  372. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  373. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/microIO.mpy +0 -0
  374. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  375. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  376. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
  377. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  378. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  379. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  380. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  381. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  382. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  383. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  384. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
  385. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py +0 -0
  386. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_VL53L0X.py +0 -0
  387. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
  388. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  389. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  390. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
  391. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  392. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
  393. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  394. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
  395. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
  396. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  397. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
  398. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  399. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
  400. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
  401. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  402. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_ld2410.mpy +0 -0
  403. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  404. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_mh_z19c.py +0 -0
  405. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  406. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  407. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  408. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  409. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  410. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  411. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  412. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_qmi8658.py +0 -0
  413. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
  414. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  415. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  416. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
  417. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
  418. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
  419. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
  420. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
  421. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
  422. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
  423. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
  424. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  425. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_tcs3472.py +0 -0
  426. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  427. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
  428. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
  429. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  430. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  431. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/urequests.mpy +0 -0
  432. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/web/editor.js +0 -0
  433. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/web/filesui.html +0 -0
  434. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/web/filesui.js +0 -0
  435. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/web/index.html +0 -0
  436. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/web/uapi.js +0 -0
  437. {microsdevtoolkit-3.0.3 → microsdevtoolkit-3.0.6}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 3.0.3
3
+ Version: 3.0.6
4
4
  Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
5
  Home-page: https://github.com/BxNxM/micrOS
6
6
  Author: Marcell Ban
@@ -37,7 +37,7 @@
37
37
  13
38
38
  ],
39
39
  "Config.py": [
40
- 9.63,
40
+ 9.62,
41
41
  17
42
42
  ],
43
43
  "Shell.py": [
@@ -49,7 +49,7 @@
49
49
  3
50
50
  ],
51
51
  "Types.py": [
52
- 8.54,
52
+ 9.04,
53
53
  28
54
54
  ],
55
55
  "Logger.py": [
@@ -323,11 +323,11 @@
323
323
  },
324
324
  "summary": {
325
325
  "core": [
326
- 5306,
326
+ 5311,
327
327
  27
328
328
  ],
329
329
  "load": [
330
- 8828,
330
+ 8827,
331
331
  53
332
332
  ],
333
333
  "core_dep": [
@@ -338,8 +338,8 @@
338
338
  true,
339
339
  4
340
340
  ],
341
- "core_score": 9.26,
341
+ "core_score": 9.28,
342
342
  "load_score": 8.44,
343
- "version": "3.0.0-0"
343
+ "version": "3.0.6-0"
344
344
  }
345
345
  }
@@ -14,7 +14,6 @@ Designed by Marcell Ban aka BxNxM
14
14
  #################################################################
15
15
  from re import search
16
16
  from json import load, dump
17
- from utime import sleep
18
17
  from Debug import DebugCfg, console_write, syslog
19
18
  from Files import OSPath, path_join, is_file
20
19
  from uos import remove, rename
@@ -142,7 +141,7 @@ class Config:
142
141
  @classmethod
143
142
  def _inject_default_conf(cls):
144
143
  # Load config and template
145
- liveconf = cls.read_cfg_file(nosafe=True)
144
+ liveconf = cls.read_cfg_file()
146
145
  _persist = False
147
146
  # Remove obsolete keys from conf
148
147
  try:
@@ -166,43 +165,38 @@ class Config:
166
165
  break
167
166
  if _persist:
168
167
  # Only persist when migration cleanup removed keys or defaults are missing from the file.
169
- cls.write_cfg_file()
170
- console_write("[CONF] Save conf successful")
168
+ state = "successful" if cls.write_cfg_file() else "failed"
169
+ console_write(f"[CONF] Save conf {state}")
171
170
  except Exception as e:
172
171
  syslog(f"[ERR] Save (__inject) conf failed: {e}")
173
172
  finally:
174
173
  del liveconf
175
174
 
176
175
  @staticmethod
177
- def read_cfg_file(nosafe=False):
178
- conf = {}
179
- while True:
176
+ def read_cfg_file():
177
+ if not is_file(Config.CONFIG_PATH):
178
+ return {}
179
+ try:
180
+ with open(Config.CONFIG_PATH, 'r') as f:
181
+ return load(f)
182
+ except Exception as e:
183
+ syslog(f'[ERR] read_cfg_file error: {e}')
180
184
  try:
181
- with open(Config.CONFIG_PATH, 'r') as f:
182
- conf = load(f)
183
- break
184
- except Exception as e:
185
- console_write(f"[CONF] read_cfg_file error {conf} (json): {e}")
186
- # Write out initial config, if no config exists.
187
- if nosafe:
188
- break
189
- sleep(0.2)
190
- syslog(f'[ERR] read_cfg_file error: {e}')
191
- # Return config cache
192
- return conf
185
+ rename(Config.CONFIG_PATH, f"{Config.CONFIG_PATH}.bad")
186
+ console_write(f"[CONF] Corrupted config moved: {Config.CONFIG_PATH}.bad")
187
+ except Exception as e2:
188
+ syslog(f'[ERR] read_cfg_file quarantine failed: {e2}')
189
+ return {}
193
190
 
194
191
  @staticmethod
195
192
  def write_cfg_file():
196
- while True:
197
- try:
198
- # WRITE JSON CONFIG
199
- with open(Config.CONFIG_PATH, 'w') as f:
200
- dump({key: value for key, value in Config.INSTANCE.items()}, f)
201
- break
202
- except Exception as e:
203
- syslog(f'[ERR] write_cfg_file {Config.CONFIG_PATH} (json): {e}')
204
- sleep(0.2)
205
- return True
193
+ try:
194
+ with open(Config.CONFIG_PATH, 'w') as f:
195
+ dump({key: value for key, value in Config.INSTANCE.items()}, f)
196
+ return True
197
+ except Exception as e:
198
+ syslog(f'[ERR] write_cfg_file {Config.CONFIG_PATH}: {e}')
199
+ return False
206
200
 
207
201
  @staticmethod
208
202
  def type_handler(key, value):
@@ -251,16 +245,16 @@ class Config:
251
245
  def validate_pwd(password):
252
246
  """
253
247
  Validate appwd parameter
254
- - webrepl password
248
+ - webrepl password (max 9 char)
255
249
  - micrOS auth password (Shell/WebCli)
256
- - wifi access point password
250
+ - wifi access point password (WPA2-PSK)
257
251
  """
258
252
  # Check password rules
259
- if 4 <= len(password) <= 9:
253
+ if 8 <= len(password) <= 9:
260
254
  if search(r"[A-Z]", password) and search(r"[a-z]", password):
261
255
  if search(r"\d", password):
262
256
  return True, ''
263
- return False, 'Password must include [0-9] both [a-z][A-Z] and length between 4-9 char.'
257
+ return False, 'Password must include [0-9] both [a-z][A-Z] and length between 8-9 char.'
264
258
 
265
259
 
266
260
  #################################################################
@@ -43,7 +43,7 @@ def __cron_task_cache_manager(now_in_sec, sec_tolerant):
43
43
  tasktime_in_sec = int(str(taskid.split('|')[0]).split(':')[1])
44
44
  sec_diff = tasktime_in_sec - (now_in_sec - sec_tolerant)
45
45
  # Remove outdated cache registration
46
- if sec_diff < 0 or sec_diff > 20:
46
+ if sec_diff < 0 or sec_diff > sec_tolerant * 2:
47
47
  LAST_CRON_TASKS.remove(LAST_CRON_TASKS[index])
48
48
 
49
49
 
@@ -25,7 +25,7 @@ from Debug import syslog
25
25
 
26
26
  class Shell:
27
27
  __slots__ = ['__devfid', '__auth_mode', '__hwuid', '__auth_ok', '__conf_mode']
28
- MICROS_VERSION = '3.0.0-0'
28
+ MICROS_VERSION = '3.0.6-0'
29
29
 
30
30
  def __init__(self):
31
31
  """
@@ -10,6 +10,8 @@ USAGE:
10
10
  SLIDER brightness br
11
11
  SLIDER brightness br=<0-100>
12
12
  SLIDER brightness br=<0-100-5>
13
+ GRAPH top
14
+ EMBED{"callback": "/cam/stream", "title": "live stream", "image": true}
13
15
  """
14
16
  from json import dumps, loads
15
17
  from Debug import syslog
@@ -18,18 +20,21 @@ from Debug import syslog
18
20
  # HELP TUPLE RESOLVER #
19
21
  ########################################################
20
22
 
21
- __TEMPLATE = {'type': 'n/a', 'lm_call': ''}
23
+ __TEMPLATE = {'type': 'n/a', 'callback': ''}
22
24
  __RANGE_100 = {'range': (0, 100, 2)}
23
25
  __RANGE_255 = {'range': (0, 255, 2)}
24
26
  __OPTIONS = {'options': ("None",)}
25
27
 
26
- # Widget Types
27
- BUTTON = lambda: __TEMPLATE | {'type': 'button'} | __OPTIONS
28
- SLIDER = lambda: __TEMPLATE | {'type': 'slider'} | __RANGE_100
29
- TEXTBOX = lambda: __TEMPLATE | {'type': 'textbox', 'refresh': 10000}
30
- COLOR = lambda: __TEMPLATE | {'type': 'color'} | __RANGE_255
31
- WHITE = lambda: __TEMPLATE | {'type': 'white'} | __RANGE_255
32
- JOYSTICK = lambda: __TEMPLATE | {'type': 'joystick'} | __RANGE_100
28
+ # Widget Types - Load Module Callbacks
29
+ BUTTON = lambda: __TEMPLATE | {'type': 'button'} | __OPTIONS # pylint: disable=invalid-name
30
+ SLIDER = lambda: __TEMPLATE | {'type': 'slider'} | __RANGE_100 # pylint: disable=invalid-name
31
+ TEXTBOX = lambda: __TEMPLATE | {'type': 'textbox', 'refresh': 10000} # pylint: disable=invalid-name
32
+ COLOR = lambda: __TEMPLATE | {'type': 'color'} | __RANGE_255 # pylint: disable=invalid-name
33
+ WHITE = lambda: __TEMPLATE | {'type': 'white'} | __RANGE_255 # pylint: disable=invalid-name
34
+ JOYSTICK = lambda: __TEMPLATE | {'type': 'joystick'} | __RANGE_100 # pylint: disable=invalid-name
35
+ GRAPH = lambda: __TEMPLATE | {'type': 'graph', 'refresh': 3000, 'limit': 30} # pylint: disable=invalid-name
36
+ # Widget Types - Web endpoints
37
+ EMBED = lambda: __TEMPLATE | {'type': 'embed', 'image': False, 'retry': 3000, 'title': None} # pylint: disable=invalid-name
33
38
 
34
39
 
35
40
  ########################################################
@@ -76,7 +81,7 @@ def _generate(type_dict, help_msg):
76
81
  else:
77
82
  param_str = f'{p}=:{"range" if "range" in type_dict else "options"}:'
78
83
  valid_params.append(param_str)
79
- type_dict['lm_call'] = f"{func} {' '.join(valid_params)}"
84
+ type_dict['callback'] = f"{func} {' '.join(valid_params)}"
80
85
  return dumps(type_dict | overwrite)
81
86
 
82
87
 
@@ -127,15 +132,19 @@ def resolve(help_data, widgets=False):
127
132
  # Apply inline widget-only overrides, e.g. TEXTBOX{'refresh': 5000}
128
133
  resolved_tag.update(overrides)
129
134
  try:
130
- # Build a clean message for _generate, without inline {...}
131
- cleaned_msg = (tag + ' ' + cmd).strip()
132
- # Generate JSON output with TAG
133
- help_msg.append(_generate(resolved_tag, cleaned_msg))
135
+ if not cmd and isinstance(resolved_tag, dict):
136
+ help_msg.append(dumps(resolved_tag))
137
+ else:
138
+ # Build a clean message for _generate, without inline {...}
139
+ cleaned_msg = (tag + ' ' + cmd).strip()
140
+ # Generate JSON output with TAG
141
+ help_msg.append(_generate(resolved_tag, cleaned_msg))
134
142
  except Exception as e:
135
143
  syslog(f"[ERR] resolve {tag} help msg: {e}")
136
144
  continue
137
145
  # Widgets OFF - TAG exists - remove TAG from output
138
- help_msg.append(cmd.strip())
146
+ if tag not in ('EMBED',):
147
+ help_msg.append(cmd.strip())
139
148
  elif not widgets:
140
149
  # No TAG - Widgets OFF output
141
150
  help_msg.append(msg)
@@ -199,7 +199,7 @@ class Buffer:
199
199
  return len(request)
200
200
 
201
201
  async def _response_handler(self, resp_handler):
202
- if "closure" == type(resp_handler).__name__:
202
+ if type(resp_handler).__name__ in ("function", "closure"):
203
203
  for is_finished in resp_handler(self._send_buf):
204
204
  await self._flush_response()
205
205
  if is_finished:
@@ -58,9 +58,7 @@ def _set_web_endpoints():
58
58
  # Register rest endpoint
59
59
  web_endpoint('cam/snapshot', _snapshot_clb)
60
60
  web_endpoint('cam/stream', _image_stream_clb)
61
- web_endpoint('cam/photo', lambda _, body: \
62
- ('text/plain', photo() if not body else photo(body.encode('ascii'))))
63
- return "Endpoint created: /cam/snapshot, /cam/stream, /cam/photo"
61
+ return "Endpoint created: /cam/snapshot, /cam/stream"
64
62
 
65
63
 
66
64
  def settings(quality=None, flip=None, mirror=None, effect=None, saturation=None, brightness=None, contrast=None, whitebalace=None, q=None):
@@ -242,12 +240,13 @@ def help(widgets=False):
242
240
  """
243
241
  return resolve(('load quality="medium/low/high" freq="default/high"',
244
242
  'settings quality=None flip=None mirror=None effect="NONE"',
243
+ 'EMBED{"callback": "/cam/stream", "title": "camera stream", "image": true, "retry": 3000}',
245
244
  'SLIDER settings saturation=<0-100>',
246
245
  'SLIDER settings brightness=<0-100>',
247
246
  'SLIDER settings contrast=<0-100>',
248
247
  'BUTTON settings effect=<NONE,NEG,BW,RED,GREEN,BLUE,RETRO>',
249
248
  'capture',
250
- 'photo',
249
+ 'BUTTON photo',
251
250
  'BUTTON flashlight state=None',
252
251
  '[Hint] after load you can access the /cam/snapshot and /cam/stream endpoints',
253
252
  'Thanks to :) https://github.com/lemariva/micropython-camera-driver'), widgets=widgets)
@@ -136,4 +136,4 @@ def help(widgets=False):
136
136
  (widgets=False) list of functions implemented by this application
137
137
  (widgets=True) list of widget json for UI generation
138
138
  """
139
- return resolve(('TEXTBOX measure', 'reset', 'load', 'pinmap'), widgets=widgets)
139
+ return resolve(('GRAPH measure', 'reset', 'load', 'pinmap'), widgets=widgets)
@@ -349,5 +349,5 @@ def help(widgets=False):
349
349
  (widgets=False) list of functions implemented by this application
350
350
  (widgets=True) list of widget json for UI generation
351
351
  """
352
- return resolve(('TEXTBOX{"refresh": 2000} measure ntfy=False',
352
+ return resolve(('GRAPH{"refresh": 2000} measure ntfy=False',
353
353
  'load', 'pinmap'), widgets=widgets)
@@ -78,5 +78,5 @@ def help(widgets=False):
78
78
  (widgets=False) list of functions implemented by this application
79
79
  (widgets=True) list of widget json for UI generation
80
80
  """
81
- return resolve(('TEXTBOX measure log=False',
81
+ return resolve(('GRAPH measure log=False',
82
82
  'logger', 'load', 'pinmap'), widgets=widgets)
@@ -79,5 +79,5 @@ def help(widgets=False):
79
79
  (widgets=False) list of functions implemented by this application
80
80
  (widgets=True) list of widget json for UI generation
81
81
  """
82
- return resolve(('TEXTBOX measure log=False',
82
+ return resolve(('GRAPH measure log=False',
83
83
  'logger', 'load', 'pinmap'), widgets=widgets)
@@ -268,7 +268,7 @@ def help(widgets=False):
268
268
  (widgets=False) list of functions implemented by this application
269
269
  (widgets=True) list of widget json for UI generation
270
270
  """
271
- return resolve(('info', 'TEXTBOX top', 'gclean', 'heartbeat', 'clock',
271
+ return resolve(('info', 'GRAPH{"refresh":5000} top', 'gclean', 'heartbeat', 'clock',
272
272
  'setclock year month mday hour minute sec',
273
273
  'ntp', 'rssi', 'list_stations', 'pinmap key="builtin"', 'alarms clean=False',
274
274
  'notifications enable=<None,True,False>',
@@ -33,7 +33,6 @@
33
33
  </style>
34
34
  <script src="uapi.js" ></script>
35
35
  <script src="uwidgets.js" ></script>
36
- <script src="uwidgets_pro.js" ></script>
37
36
  <script src="udashboard.js" ></script>
38
37
  </head>
39
38
  <body>
@@ -1,4 +1,35 @@
1
1
  // API HELPER FUNCTION - get module exposed widgets
2
+ const OPTIONAL_WIDGET_TYPES = {
3
+ joystick: { src: 'uwidgets_pro.js', ready: () => typeof joystickWidget === 'function' },
4
+ embed: { src: 'uwidgets_pro.js', ready: () => typeof embedWidget === 'function' },
5
+ graph: { src: 'uwidgets_pro.js', ready: () => typeof graphWidget === 'function' }
6
+ };
7
+ const optionalWidgetLoaders = {};
8
+ const normalizeCallback = callback => String(callback || '').trim().replace(/\s+/g, '/').replace(/^\/+/, '').replace(/\/+$/, '');
9
+
10
+ function loadOptionalWidgetScript(src) {
11
+ if (optionalWidgetLoaders[src]) {
12
+ return optionalWidgetLoaders[src];
13
+ }
14
+ optionalWidgetLoaders[src] = new Promise((resolve, reject) => {
15
+ const script = document.createElement('script');
16
+ script.src = src;
17
+ script.onload = resolve;
18
+ script.onerror = () => reject(new Error(`Failed to load ${src}`));
19
+ document.head.appendChild(script);
20
+ });
21
+ return optionalWidgetLoaders[src];
22
+ }
23
+
24
+ function ensureOptionalWidgetsLoaded(widgets) {
25
+ const scripts = [...new Set(widgets
26
+ .map(({ type }) => OPTIONAL_WIDGET_TYPES[type])
27
+ .filter(Boolean)
28
+ .filter(({ ready }) => !ready())
29
+ .map(({ src }) => src))];
30
+ return scripts.length ? Promise.all(scripts.map(loadOptionalWidgetScript)) : Promise.resolve();
31
+ }
32
+
2
33
  function moduleHelp(module) {
3
34
  const endpoint = `${module}/help/True`;
4
35
  console.log(`[API] Endpoint: ${endpoint}`);
@@ -24,11 +55,11 @@ function containerAppendChild(elements, container) {
24
55
  container.appendChild(element);});
25
56
  }
26
57
 
27
- function generateElement(type, module, lm_call="", options={}) {
58
+ function generateElement(type, module, callback="", options={}) {
28
59
  // type: slider, button, box, h1, h2, p, li, etc.
29
60
  // data: rest command
30
61
  console.log(`type: ${type}`);
31
- const data = `${module}/${lm_call}`;
62
+ const data = `${module}/${callback}`;
32
63
  console.log(`data: ${data}`);
33
64
  const container = document.getElementById(`container-${module}`);
34
65
  if(!container) {
@@ -48,7 +79,25 @@ function generateElement(type, module, lm_call="", options={}) {
48
79
  colorPaletteWidget(container, data, options)
49
80
  } else if (type === 'joystick') {
50
81
  // Create joystick widget
82
+ if (typeof joystickWidget !== 'function') {
83
+ console.error("Optional widget not loaded: joystick");
84
+ return;
85
+ }
51
86
  joystickWidget(container, data, options)
87
+ } else if (type === 'embed') {
88
+ // Create embedded image stream or webpage widget
89
+ if (typeof embedWidget !== 'function') {
90
+ console.error("Optional widget not loaded: embed");
91
+ return;
92
+ }
93
+ embedWidget(container, data, options)
94
+ } else if (type === 'graph') {
95
+ // Create graph widget
96
+ if (typeof graphWidget !== 'function') {
97
+ console.error("Optional widget not loaded: graph");
98
+ return;
99
+ }
100
+ graphWidget(container, data, options)
52
101
  } else {
53
102
  // Create other elements
54
103
  const element = document.createElement(type);
@@ -57,10 +106,10 @@ function generateElement(type, module, lm_call="", options={}) {
57
106
  }
58
107
  }
59
108
 
60
- function autoTitleLen(widgets, lm_call) {
109
+ function autoTitleLen(widgets, callback) {
61
110
  try {
62
- const func = lm_call.split('/')[0].split(' ')[0];
63
- const count = widgets.reduce((accumulator, { lm_call }) => accumulator + (lm_call.split(' ')[0] === func ? 1 : 0), 0);
111
+ const func = normalizeCallback(callback).split('/')[0];
112
+ const count = widgets.reduce((accumulator, item) => accumulator + (normalizeCallback(item.callback).split('/')[0] === func ? 1 : 0), 0);
64
113
  return count > 1 ? 2 : 1;
65
114
  } catch (error) {
66
115
  console.error(error);
@@ -68,11 +117,16 @@ function autoTitleLen(widgets, lm_call) {
68
117
  }
69
118
  }
70
119
 
71
- function craftModuleWidgets(module, widgets) {
120
+ async function craftModuleWidgets(module, widgets) {
72
121
  if (!widgets.length) {
73
122
  console.log(`${module} no exposed widgets`);
74
123
  return;
75
124
  }
125
+ try {
126
+ await ensureOptionalWidgetsLoaded(widgets);
127
+ } catch (error) {
128
+ console.error(`Error loading optional widgets for ${module}:`, error);
129
+ }
76
130
 
77
131
  console.log(`Craft widget to ${module}`);
78
132
  // Create HTML elements for widgets
@@ -85,17 +139,25 @@ function craftModuleWidgets(module, widgets) {
85
139
  generateElement('h2', module);
86
140
 
87
141
  const widgetTypeOptions = {
88
- button: item => ({title_len: autoTitleLen(widgets, item.lm_call), options: item.options }),
89
- slider: item => ({title_len: autoTitleLen(widgets, item.lm_call), range: item.range }),
90
- color: item => ({title_len: autoTitleLen(widgets, item.lm_call), range: item.range }),
91
- textbox: item => ({title_len: autoTitleLen(widgets, item.lm_call), refresh: item.refresh }),
92
- joystick: item => ({title_len: autoTitleLen(widgets, item.lm_call), range: item.range })
142
+ button: item => ({title_len: autoTitleLen(widgets, item.callback), options: item.options }),
143
+ slider: item => ({title_len: autoTitleLen(widgets, item.callback), range: item.range }),
144
+ color: item => ({title_len: autoTitleLen(widgets, item.callback), range: item.range }),
145
+ textbox: item => ({title_len: autoTitleLen(widgets, item.callback), refresh: item.refresh }),
146
+ graph: item => ({title_len: autoTitleLen(widgets, item.callback), refresh: item.refresh, limit: item.limit }),
147
+ joystick: item => ({title_len: autoTitleLen(widgets, item.callback), range: item.range }),
148
+ embed: item => ({
149
+ title_len: item.callback ? Math.max(autoTitleLen(widgets, item.callback), 2) : 1,
150
+ callback: normalizeCallback(item.callback || ''),
151
+ image: item.image,
152
+ retry: item.retry,
153
+ title: item.title
154
+ })
93
155
  };
94
156
 
95
157
  // Create control elements for widget
96
158
  widgets.forEach(item => {
97
- let { type, lm_call } = item;
98
- lm_call = lm_call.replace(/\s/g, '/');
159
+ let { type, callback = '' } = item;
160
+ callback = normalizeCallback(callback);
99
161
  const type_options = widgetTypeOptions[type] ? widgetTypeOptions[type](item) : null;
100
162
  if (!type_options) {
101
163
  console.log(`Unsupported micrOS widget html_type: ${type}`);
@@ -104,7 +166,7 @@ function craftModuleWidgets(module, widgets) {
104
166
 
105
167
  try {
106
168
  console.log("adding widget controls");
107
- generateElement(type, module, lm_call, type_options);
169
+ generateElement(type, module, callback, type_options);
108
170
  } catch (error) {
109
171
  console.error(error);
110
172
  }
@@ -116,7 +178,7 @@ function DynamicWidgetLoad() {
116
178
  const app_list = data.result;
117
179
  app_list.forEach(module => {
118
180
  moduleHelp(module).then(widgets => {
119
- craftModuleWidgets(module, widgets);
181
+ return craftModuleWidgets(module, widgets);
120
182
  }).catch(error => {
121
183
  console.error(`Error processing module ${module}:`, error);
122
184
  });
@@ -6,6 +6,13 @@ const windowWidth = window.innerWidth;
6
6
  function createTitle(command, title_len) {
7
7
  return command.split('/').slice(1, title_len + 1).join('-').replace(/=|:range:/g, '').replace(/=|:options:/g, '');
8
8
  }
9
+
10
+ function toAbsoluteEndpoint(endpoint) {
11
+ if (!endpoint) {return '';}
12
+ if (/^https?:\/\//i.test(endpoint)) {return endpoint;}
13
+ return `${BASE_URL}/${endpoint.replace(/^\/+/, '')}`;
14
+ }
15
+
9
16
  function paramPythonify(opt) {
10
17
  if (opt === "None" || opt === "True" || opt === "False") {return opt;}
11
18
  // Check if the input is a valid integer