micrOSDevToolKit 3.6.4__tar.gz → 3.7.1__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 (452) hide show
  1. {microsdevtoolkit-3.6.4/micrOSDevToolKit.egg-info → microsdevtoolkit-3.7.1}/PKG-INFO +1 -1
  2. microsdevtoolkit-3.6.4/micrOS/micropython/micrOS-esp32-1.28.0-3.6.4-0.bin → microsdevtoolkit-3.7.1/micrOS/micropython/micrOS-esp32-1.28.0-3.7.0-0.bin +0 -0
  3. microsdevtoolkit-3.6.4/micrOS/micropython/micrOS-esp32c3-1.28.0-3.6.4-0.bin → microsdevtoolkit-3.7.1/micrOS/micropython/micrOS-esp32c3-1.28.0-3.7.0-0.bin +0 -0
  4. microsdevtoolkit-3.6.4/micrOS/micropython/micrOS-esp32c6-1.28.0-3.6.4-0.bin → microsdevtoolkit-3.7.1/micrOS/micropython/micrOS-esp32c6-1.28.0-3.7.0-0.bin +0 -0
  5. microsdevtoolkit-3.6.4/micrOS/micropython/micrOS-esp32s3-1.28.0-3.6.4-0.bin → microsdevtoolkit-3.7.1/micrOS/micropython/micrOS-esp32s3-1.28.0-3.7.0-0.bin +0 -0
  6. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +6 -6
  7. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Shell.py +1 -1
  8. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Tasks.py +16 -14
  9. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_sdcard.py +3 -3
  10. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_web.py +35 -7
  11. microsdevtoolkit-3.7.1/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  12. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/config.js +46 -85
  13. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/config_packages.js +0 -16
  14. microsdevtoolkit-3.7.1/micrOS/source/web/config_webapps.js +226 -0
  15. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
  16. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOSDevToolKit.egg-info/SOURCES.txt +6 -4
  17. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/setup.py +1 -1
  18. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/SystemTest.py +24 -0
  19. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  20. microsdevtoolkit-3.7.1/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  21. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_sdcard.py +3 -3
  22. microsdevtoolkit-3.7.1/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  23. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/config.js +13 -17
  24. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/config_packages.js +1 -4
  25. microsdevtoolkit-3.7.1/toolkit/workspace/precompiled/web/config_webapps.js +29 -0
  26. microsdevtoolkit-3.6.4/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  27. microsdevtoolkit-3.6.4/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  28. microsdevtoolkit-3.6.4/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  29. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/LICENSE +0 -0
  30. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/MANIFEST.in +0 -0
  31. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/README.md +0 -0
  32. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/devToolKit.py +0 -0
  33. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/__init__.py +0 -0
  34. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/.DS_Store +0 -0
  35. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  36. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  37. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  38. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  39. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  40. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  41. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  42. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  43. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  44. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  45. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  46. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  47. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  48. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/media/__init__.py +0 -0
  49. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/media/dnd.png +0 -0
  50. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/media/logo.png +0 -0
  51. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/media/logo_mini.png +0 -0
  52. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/media/usb_port_icon.png +0 -0
  53. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/media/wifi_icon.png +0 -0
  54. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/__init__.py +0 -0
  55. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/board_commands.json +0 -0
  56. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  57. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  58. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
  59. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  60. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  61. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  62. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  63. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  64. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  65. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  66. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  67. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  68. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/.DS_Store +0 -0
  69. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Auth.py +0 -0
  70. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Buffer.py +0 -0
  71. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Common.py +0 -0
  72. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Config.py +0 -0
  73. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Debug.py +0 -0
  74. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Files.py +0 -0
  75. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Hooks.py +0 -0
  76. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/InterConnect.py +0 -0
  77. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Interrupts.py +0 -0
  78. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Logger.py +0 -0
  79. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Network.py +0 -0
  80. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Notify.py +0 -0
  81. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Pacman.py +0 -0
  82. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Scheduler.py +0 -0
  83. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Server.py +0 -0
  84. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Time.py +0 -0
  85. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Types.py +0 -0
  86. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/Web.py +0 -0
  87. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Auth.cpython-312.pyc +0 -0
  88. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
  89. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  90. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
  91. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  92. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  93. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
  94. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
  95. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
  96. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  97. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Network.cpython-312.pyc +0 -0
  98. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Notify.cpython-312.pyc +0 -0
  99. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
  100. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
  101. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  102. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  103. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  104. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
  105. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
  106. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
  107. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
  108. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
  109. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
  110. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  111. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
  112. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/config/_git.keep +0 -0
  113. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/helpers.py +0 -0
  114. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/main.py +0 -0
  115. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/mespnow.py +0 -0
  116. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/micrOS.py +0 -0
  117. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/micrOSloader.py +0 -0
  118. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/microIO.py +0 -0
  119. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_esp32.py +0 -0
  120. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_esp32c3.py +0 -0
  121. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_esp32c5.py +0 -0
  122. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_esp32c6.py +0 -0
  123. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_esp32s2.py +0 -0
  124. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_esp32s3.py +0 -0
  125. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_m5stamp.py +0 -0
  126. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_qtpy.py +0 -0
  127. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_rp2.py +0 -0
  128. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/IO_tinypico.py +0 -0
  129. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_aht10.py +0 -0
  130. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_bme280.py +0 -0
  131. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_buzzer.py +0 -0
  132. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_cct.py +0 -0
  133. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_cluster.py +0 -0
  134. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_dht11.py +0 -0
  135. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_dht22.py +0 -0
  136. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_dimmer.py +0 -0
  137. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_ds18.py +0 -0
  138. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_esp32.py +0 -0
  139. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_espnow.py +0 -0
  140. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_fileserver.py +0 -0
  141. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_gameOfLife.py +0 -0
  142. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_genIO.py +0 -0
  143. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_i2c.py +0 -0
  144. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_i2s_mic.py +0 -0
  145. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_neoeffects.py +0 -0
  146. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_neopixel.py +0 -0
  147. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_oled.py +0 -0
  148. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
  149. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_oled_ui.py +0 -0
  150. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_pacman.py +0 -0
  151. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_presence.py +0 -0
  152. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_rencoder.py +0 -0
  153. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_rest.py +0 -0
  154. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_rgb.py +0 -0
  155. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_rgbcct.py +0 -0
  156. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_robustness.py +0 -0
  157. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_rp2w.py +0 -0
  158. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_servo.py +0 -0
  159. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_stepper.py +0 -0
  160. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_switch.py +0 -0
  161. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_system.py +0 -0
  162. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_telegram.py +0 -0
  163. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/LM_tinyrgb.py +0 -0
  164. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_cct.cpython-312.pyc +0 -0
  165. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_dht11.cpython-312.pyc +0 -0
  166. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_dht22.cpython-312.pyc +0 -0
  167. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_dimmer.cpython-312.pyc +0 -0
  168. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_fileserver.cpython-312.pyc +0 -0
  169. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_neopixel.cpython-312.pyc +0 -0
  170. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
  171. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_rencoder.cpython-312.pyc +0 -0
  172. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_rgb.cpython-312.pyc +0 -0
  173. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_rgbcct.cpython-312.pyc +0 -0
  174. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_roboarm.cpython-312.pyc +0 -0
  175. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_robustness.cpython-312.pyc +0 -0
  176. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
  177. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/urequests.py +0 -0
  178. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/auth.js +0 -0
  179. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/config.css +0 -0
  180. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/config.html +0 -0
  181. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/config_schedler.js +0 -0
  182. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/dashboard.html +0 -0
  183. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/editor.js +0 -0
  184. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/editor_plugins.js +0 -0
  185. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/favicon.ico +0 -0
  186. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/filesui.html +0 -0
  187. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/filesui.js +0 -0
  188. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/index.html +0 -0
  189. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/uapi.js +0 -0
  190. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/uapi_widgets.js +0 -0
  191. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/ubashboard.css +0 -0
  192. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/udashboard.js +0 -0
  193. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/ustyle.css +0 -0
  194. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/uwidgets.js +0 -0
  195. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/source/web/uwidgets_pro.js +0 -0
  196. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/__init__.py +0 -0
  197. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_buffer.py +0 -0
  198. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_config.py +0 -0
  199. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_memory_policy.py +0 -0
  200. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_pacman.py +0 -0
  201. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_scheduler.py +0 -0
  202. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_time.py +0 -0
  203. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_urequests.py +0 -0
  204. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_urequests_real_api.py +0 -0
  205. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOS/utests/test_web_engine.py +0 -0
  206. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  207. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  208. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  209. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/setup.cfg +0 -0
  210. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/DevEnvCompile.py +0 -0
  211. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/DevEnvOTA.py +0 -0
  212. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/DevEnvUSB.py +0 -0
  213. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/Gateway.py +0 -0
  214. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/LM_to_compile.dat +0 -0
  215. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/MicrOSDevEnv.py +0 -0
  216. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/WebRepl.py +0 -0
  217. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/__init__.py +0 -0
  218. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/BackupRestore.py +0 -0
  219. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  220. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/CCTTest.py +0 -0
  221. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/CamStream.py +0 -0
  222. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/CatGame.py +0 -0
  223. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/Dimmer.py +0 -0
  224. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/GetVersion.py +0 -0
  225. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  226. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  227. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  228. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  229. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
  230. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/RGBTest.py +0 -0
  231. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/RoboArm.py +0 -0
  232. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/SED_test.py +0 -0
  233. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/SensorsTest.py +0 -0
  234. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/Template_app.py +0 -0
  235. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/__init__.py +0 -0
  236. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/_app_base.py +0 -0
  237. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/_capture.py +0 -0
  238. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
  239. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  240. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  241. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  242. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/gateway/gateway.css +0 -0
  243. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/gateway/img_stream.html +0 -0
  244. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/gateway/index.html +0 -0
  245. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/LocalMachine.py +0 -0
  246. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/MicrosFiles.py +0 -0
  247. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/Repository.py +0 -0
  248. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/SafeInput.py +0 -0
  249. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/SearchDevices.py +0 -0
  250. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/SerialDriverHandler.py +0 -0
  251. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/TerminalColors.py +0 -0
  252. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/__init__.py +0 -0
  253. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/macroScript.py +0 -0
  254. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/micrOSClient.py +0 -0
  255. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/micrOSClientHistory.py +0 -0
  256. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/lib/pip_package_installer.py +0 -0
  257. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/micrOSDocGen.py +0 -0
  258. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/micrOSImageBuilder.py +0 -0
  259. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/micrOSImageConfig.json +0 -0
  260. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/micrOSdashboard.py +0 -0
  261. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/micrOSlint.py +0 -0
  262. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/.DS_Store +0 -0
  263. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/IO_darwin.py +0 -0
  264. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  265. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
  266. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  267. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  268. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  269. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  270. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  271. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  272. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  273. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  274. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  275. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  276. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  277. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  278. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  279. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  280. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  281. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  282. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  283. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  284. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  285. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  286. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  287. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  288. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  289. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  290. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  291. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  292. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  293. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  294. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  295. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  296. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  297. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  298. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  299. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  300. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  301. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  302. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  303. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  304. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  305. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  306. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  307. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  308. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  309. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  310. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  311. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  312. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  313. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  314. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  315. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  316. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  317. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  318. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  319. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  320. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  321. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  322. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  323. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  324. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/aioespnow.py +0 -0
  325. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/camera.py +0 -0
  326. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/dht.py +0 -0
  327. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/dotstar.py +0 -0
  328. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/ds18x20.py +0 -0
  329. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/esp32.py +0 -0
  330. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/framebuf.py +0 -0
  331. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/machine.py +0 -0
  332. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/micropython.py +0 -0
  333. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/mip.py +0 -0
  334. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/neopixel.py +0 -0
  335. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/network.py +0 -0
  336. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/node_config.json +0 -0
  337. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/ntptime.py +0 -0
  338. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/onewire.py +0 -0
  339. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/sim_common.py +0 -0
  340. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/simgc.py +0 -0
  341. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/simulator.py +0 -0
  342. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/tinypico.py +0 -0
  343. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/uasyncio.py +0 -0
  344. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/uos.py +0 -0
  345. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/urandom.py +0 -0
  346. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/usocket.py +0 -0
  347. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/ussl.py +0 -0
  348. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/ustruct.py +0 -0
  349. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/utime.py +0 -0
  350. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/view01.jpg +0 -0
  351. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/view02.jpg +0 -0
  352. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/simulator_lib/webrepl.py +0 -0
  353. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/socketClient.py +0 -0
  354. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/.include +0 -0
  355. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/webhooks/__pycache__/generic.cpython-312.pyc +0 -0
  356. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/webhooks/__pycache__/macro.cpython-312.pyc +0 -0
  357. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/webhooks/__pycache__/template.cpython-312.pyc +0 -0
  358. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/webhooks/generic.py +0 -0
  359. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/webhooks/macro.py +0 -0
  360. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/webhooks/template.macro +0 -0
  361. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/user_data/webhooks/template.py +0 -0
  362. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/__init__.py +0 -0
  363. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Auth.mpy +0 -0
  364. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
  365. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Common.mpy +0 -0
  366. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Config.mpy +0 -0
  367. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Debug.mpy +0 -0
  368. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Files.mpy +0 -0
  369. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  370. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  371. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  372. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Logger.mpy +0 -0
  373. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Network.mpy +0 -0
  374. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  375. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
  376. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  377. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Server.mpy +0 -0
  378. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Time.mpy +0 -0
  379. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Types.mpy +0 -0
  380. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/Web.mpy +0 -0
  381. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/_mpy.version +0 -0
  382. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/config/_git.keep +0 -0
  383. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/helpers.mpy +0 -0
  384. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/main.py +0 -0
  385. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
  386. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  387. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  388. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/microIO.mpy +0 -0
  389. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  390. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  391. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
  392. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  393. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  394. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  395. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  396. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  397. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  398. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  399. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  400. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  401. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
  402. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  403. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  404. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  405. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  406. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  407. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  408. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
  409. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
  410. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  411. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
  412. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  413. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
  414. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  415. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  416. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  417. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  418. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  419. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  420. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  421. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  422. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
  423. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  424. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  425. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
  426. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
  427. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
  428. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
  429. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
  430. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  431. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  432. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  433. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
  434. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/urequests.mpy +0 -0
  435. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/auth.js +0 -0
  436. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/config.css +0 -0
  437. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/config.html +0 -0
  438. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/config_schedler.js +0 -0
  439. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
  440. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/editor.js +0 -0
  441. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
  442. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/favicon.ico +0 -0
  443. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/filesui.html +0 -0
  444. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/filesui.js +0 -0
  445. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/index.html +0 -0
  446. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/uapi.js +0 -0
  447. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
  448. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/ubashboard.css +0 -0
  449. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
  450. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
  451. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
  452. {microsdevtoolkit-3.6.4 → microsdevtoolkit-3.7.1}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 3.6.4
3
+ Version: 3.7.1
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
@@ -117,7 +117,7 @@
117
117
  0
118
118
  ],
119
119
  "modules/LM_web.py": [
120
- 8.52,
120
+ 8.6,
121
121
  0
122
122
  ],
123
123
  "modules/LM_genIO.py": [
@@ -259,11 +259,11 @@
259
259
  },
260
260
  "summary": {
261
261
  "core": [
262
- 5485,
262
+ 5488,
263
263
  27
264
264
  ],
265
265
  "load": [
266
- 6125,
266
+ 6148,
267
267
  37
268
268
  ],
269
269
  "packages": [
@@ -272,8 +272,8 @@
272
272
  25
273
273
  ],
274
274
  "web": [
275
- 215999,
276
- 20
275
+ 223188,
276
+ 21
277
277
  ],
278
278
  "core_dep": [
279
279
  true,
@@ -285,6 +285,6 @@
285
285
  ],
286
286
  "core_score": 9.26,
287
287
  "load_score": 8.37,
288
- "version": "3.6.4-0"
288
+ "version": "3.7.1-0"
289
289
  }
290
290
  }
@@ -28,7 +28,7 @@ IMAGE_MODE = 'rel' if 'micrOS' in uname()[-1] else 'dev'
28
28
 
29
29
  class Shell:
30
30
  __slots__ = ['__devfid', '__auth_mode', '__hwuid', '__auth_ok', '__conf_mode']
31
- MICROS_VERSION = '3.6.4-0'
31
+ MICROS_VERSION = '3.7.1-0'
32
32
 
33
33
  def __init__(self):
34
34
  """
@@ -605,6 +605,7 @@ def _exec_lm_core(cmd_list, jsonify):
605
605
  :param jsonify: request json output
606
606
  Return Bool(OK/NOK), Str(Command output)
607
607
  """
608
+ hint = "Shell: for hints type help.\nShell: for LM exec: [1](LM)module [2]function [3...]optional params"
608
609
 
609
610
  # LoadModule execution
610
611
  if len(cmd_list) >= 2:
@@ -615,18 +616,19 @@ def _exec_lm_core(cmd_list, jsonify):
615
616
  # [1] LOAD MODULE - OPTIMIZED by sys.modules
616
617
  if lm_mod not in modules:
617
618
  exec(f"import {lm_mod}")
618
- try:
619
- # [2] EXECUTE FUNCTION FROM MODULE
620
- lm_output = eval(f"{lm_mod}.{lm_func}({lm_params})")
621
- except Exception as e:
622
- # Handle not proper module load (simulator), note: module in sys.modules BUT not available
623
- if lm_mod in str(e):
624
- # [2.1] LOAD MODULE - FORCED
625
- exec(f"import {lm_mod}")
626
- # [2.2] EXECUTE FUNCTION FROM MODULE
627
- lm_output = eval(f"{lm_mod}.{lm_func}({lm_params})")
628
- else:
629
- raise e
619
+ # [2] IMPORT GUARD: Allow local functions and explicitly advertised commands.
620
+ module = modules[lm_mod]
621
+ func = getattr(module, lm_func)
622
+ if not callable(func):
623
+ return False, hint
624
+ if getattr(func, '__globals__', {}).get('__name__') != lm_mod:
625
+ help_func = getattr(module, 'help', None)
626
+ if help_func is None or not any(entry.split(' ', 1)[0] == lm_func
627
+ for entry in help_func()):
628
+ return False, hint
629
+ # [3] Execute the checked callable, keeping its decorator active.
630
+ # Explicit locals also work in MicroPython and the CPython simulator.
631
+ lm_output = eval(f"_func({lm_params})", globals(), {'_func': func, lm_mod: module})
630
632
  # ------------ LM output format: dict(jsonify) / str(raw) ------------- #
631
633
  # Handle LM output data
632
634
  if isinstance(lm_output, dict):
@@ -635,7 +637,7 @@ def _exec_lm_core(cmd_list, jsonify):
635
637
  [f" {key}: {value}" for key, value in lm_output.items()])
636
638
  if lm_func == 'help':
637
639
  # Special case:
638
- # jsonify (True) json output, (False) default, "human readable" formatted output)
640
+ # jsonify (True) json output, (False) default, "human-readable" formatted output
639
641
  lm_output = dumps(lm_output) if jsonify else '\n'.join([f" {out}," for out in lm_output])
640
642
  # Return LM exec result
641
643
  return True, str(lm_output)
@@ -648,7 +650,7 @@ def _exec_lm_core(cmd_list, jsonify):
648
650
  gcollect()
649
651
  # LM EXECUTION ERROR
650
652
  return False, f"Core error: {lm_mod}->{lm_func}: {e}"
651
- return False, "Shell: for hints type help.\nShell: for LM exec: [1](LM)module [2]function [3...]optional params"
653
+ return False, hint
652
654
 
653
655
 
654
656
  def lm_is_loaded(lm_name):
@@ -1,6 +1,6 @@
1
1
  from machine import SDCard
2
2
  from uos import mount, umount
3
- from Files import is_dir, path_join, list_fs, OSPath
3
+ from Files import is_dir, path_join, list_fs, OSPath, abs_path
4
4
 
5
5
  STORAGE_PATH = path_join(OSPath.DATA, "storage")
6
6
 
@@ -41,7 +41,7 @@ def write_file(name, content):
41
41
  :param name: file name with type
42
42
  :param content: file text content
43
43
  """
44
- target = path_join(STORAGE_PATH, name)
44
+ target = path_join(STORAGE_PATH, abs_path(name))
45
45
  try:
46
46
  with open(target, 'w') as f:
47
47
  f.write(content)
@@ -55,7 +55,7 @@ def read_file(name):
55
55
  Read a file
56
56
  :param name: file name with type
57
57
  """
58
- target = path_join(STORAGE_PATH, name)
58
+ target = path_join(STORAGE_PATH, abs_path(name))
59
59
  try:
60
60
  with open(target, 'r') as f:
61
61
  return f.read()
@@ -10,6 +10,8 @@ from Common import web_endpoint, conf_dir, syslog
10
10
  from Config import cfgget, cfgput
11
11
  from Auth import sudo
12
12
 
13
+ __MOUNTS_WA = None
14
+
13
15
 
14
16
  def load(dashboard:bool=None, fileserver:bool=None, fs_explore:bool=None, config:bool=None):
15
17
  """
@@ -31,22 +33,26 @@ def load(dashboard:bool=None, fileserver:bool=None, fs_explore:bool=None, config
31
33
  fileserver = wsc["fileserver"] if fileserver is None else fileserver
32
34
  fs_explore = wsc["fs_explore"] if fs_explore is None else fs_explore
33
35
  if fileserver:
36
+ global __MOUNTS_WA
34
37
  import LM_fileserver
35
38
  msg.append(LM_fileserver.load())
36
39
  msg.append(LM_fileserver.extend_mounts(modules=fs_explore, data=fs_explore, logs=fs_explore))
40
+ __MOUNTS_WA = LM_fileserver.mounts_write_access
37
41
  config = wsc["config"] if config is None else config
38
42
  if config:
39
43
  msg.append(enable_config())
40
44
 
41
45
  _web_apps('s', {"dashboard": dashboard,
42
- "fileserver": fileserver, "fs_explore": fs_explore,
43
- "config": config})
46
+ "fileserver": fileserver, "fs_explore": fs_explore,
47
+ "config": config})
44
48
  return msg
45
49
 
46
50
 
47
51
  def _web_apps(mode, conf=None):
48
52
  """
53
+ Stateful web application loading
49
54
  :param mode (str): s - save or r - read
55
+ :param conf (dict): dict to save at save mode
50
56
  """
51
57
  if mode == "s":
52
58
  if conf is None:
@@ -59,8 +65,10 @@ def _web_apps(mode, conf=None):
59
65
  except Exception as e:
60
66
  syslog(f"[WARN] Web app conf save: {e}")
61
67
  return False
62
- # Load config (with fallback)
63
- cfg = {"dashboard": True, "fileserver": False, "fs_explore": False, "config": True}
68
+ # Load config (with fallback) - default config
69
+ cfg = {"dashboard": True,
70
+ "fileserver": False, "fs_explore": False,
71
+ "config": True, "fs_write_access": {}}
64
72
  try:
65
73
  with open(conf_dir("webapps.json"), 'r') as f:
66
74
  cfg.update(conf_load(f))
@@ -69,11 +77,30 @@ def _web_apps(mode, conf=None):
69
77
  return cfg
70
78
 
71
79
 
72
- def status():
80
+ def status(pwd=None) -> dict:
81
+ """
82
+ Web services status: dashboard, fileserver, fs_explore + write access [FSI], config
83
+ """
84
+ apps_status = _web_apps('r')
85
+ if (callable(__MOUNTS_WA) and apps_status.get("fileserver", False)
86
+ and apps_status.get("fs_explore", False)):
87
+ # requires password !
88
+ mounts_write_access = __MOUNTS_WA(pwd=pwd)
89
+ apps_status["fs_write_access"] = mounts_write_access
90
+ return apps_status
91
+
92
+
93
+ def mounts_w_access(*args, **kwargs) -> dict:
73
94
  """
74
- Web services status: dashboard, fileserver, fs_explore, config
95
+ [FSI] Fileserver write access control interface
96
+ input: modules:bool data:bool logs:bool pwd="<password>"
75
97
  """
76
- return _web_apps('r')
98
+ apps_status = _web_apps('r')
99
+ if (callable(__MOUNTS_WA) and apps_status.get("fileserver", False)
100
+ and apps_status.get("fs_explore", False)):
101
+ # requires password !
102
+ return __MOUNTS_WA(*args, **kwargs)
103
+ return {}
77
104
 
78
105
  ######################## System Config ######################
79
106
  _CFG_HIDE = ("hwuid", "guimeta", "socport", "version", "auth", "soctout")
@@ -167,5 +194,6 @@ def help(widgets=False):
167
194
  """
168
195
  return ('load dashboard=True fileserver=False fs_explore=False config=True',
169
196
  'enable_config',
197
+ 'mounts_w_access modules:bool=None data:bool=None logs:bool=None pwd=<password>',
170
198
  'status',
171
199
  'help')
@@ -9,12 +9,15 @@ const configCategories = {
9
9
  },
10
10
  'Web': {
11
11
  icon: '🌐',
12
- keys: ['webui', 'webui_max_con']
12
+ keys: ['webui', 'webui_max_con'],
13
+ script: '/config_webapps.js',
14
+ render: 'renderWebAppsSection'
13
15
  },
14
16
  'Scheduler': {
15
17
  icon: '⏰',
16
18
  keys: ['cron', 'crontasks'],
17
- render: loadSchedulerSection
19
+ script: '/config_schedler.js',
20
+ render: 'renderSchedulerSection'
18
21
  },
19
22
  'Interrupts': {
20
23
  icon: '⚡',
@@ -30,7 +33,8 @@ const configCategories = {
30
33
  },
31
34
  'Packages': {
32
35
  icon: '📦',
33
- render: loadPackagesSection
36
+ script: '/config_packages.js',
37
+ render: 'renderPackagesSection'
34
38
  },
35
39
  'Debug': {
36
40
  icon: '🛠',
@@ -56,10 +60,6 @@ const configLabelMap = {
56
60
  'timirqcbf': 'Functions',
57
61
  'webui': 'Enable',
58
62
  'webui_max_con': 'Allowed Number of Connections',
59
- 'web.dashboard': 'Dashboard',
60
- 'web.fileserver': 'Fileserver',
61
- 'web.fs_explore': 'Fileserver > Show sys dirs',
62
- 'web.config': 'Config',
63
63
  'irq_prell_ms': 'Debounce (ms)',
64
64
  };
65
65
  const configSelectOptions = {
@@ -81,6 +81,23 @@ function configLabel(key) {
81
81
  let configData = {};
82
82
  let changedValues = {};
83
83
  let configSaving = false;
84
+ const restEncodeMap = {
85
+ '"': '%5Cx22', "'": '%27', '#': '%23', '=': '%3D', '>': '%3E', '&': '%26',
86
+ '/': '%2F', '\\': '%5C%5C', ' ': '%20', '?': '%3F', '%': '%25'
87
+ };
88
+
89
+ function getAdminPassword() {
90
+ if (changedValues.hasOwnProperty('appwd')) {
91
+ return changedValues.appwd;
92
+ }
93
+ return configData.appwd || '';
94
+ }
95
+
96
+ /** Encode a value as one quoted REST argument for micrOS execution. */
97
+ function restQuote(value) {
98
+ return '"' + String(value).replace(/["'#=>&/\\ ?%]/g, char => restEncodeMap[char]) + '"';
99
+ }
100
+
84
101
  const configSectionScripts = {};
85
102
  const selectedCategoryKey = 'micros.config.selectedCategory';
86
103
 
@@ -296,8 +313,7 @@ async function handleUpdateConfig() {
296
313
  return;
297
314
  }
298
315
  const savedChanges = {...changedValues};
299
- const nodeChanges = Object.fromEntries(Object.entries(savedChanges).filter(([key]) => !key.startsWith('web.')));
300
- const appChanges = Object.fromEntries(Object.entries(savedChanges).filter(([key]) => key.startsWith('web.')));
316
+ const nodeChanges = savedChanges;
301
317
  configSaving = true;
302
318
  updateSaveButtonState();
303
319
  try {
@@ -316,18 +332,6 @@ async function handleUpdateConfig() {
316
332
  }
317
333
  commitConfigChanges(nodeChanges);
318
334
  }
319
- if (Object.keys(appChanges).length) {
320
- const args = Object.entries(appChanges)
321
- .map(([key, value]) => `${encodeURIComponent(key.slice(4))}=${value ? 'True' : 'False'}`);
322
- const response = await restAPI('web/load/' + args.join('/'), false);
323
- if (!response || response.state !== true) throw new Error('Unable to update web app settings.');
324
- const status = await restAPI('web/status', false);
325
- if (!status || status.state !== true || !status.result ||
326
- !Object.entries(appChanges).every(([key, value]) => status.result[key.slice(4)] === value)) {
327
- throw new Error('Unable to confirm saved web app settings.');
328
- }
329
- commitConfigChanges(appChanges);
330
- }
331
335
  showConfigSaveSuccess(savedChanges);
332
336
  } catch (error) {
333
337
  console.error('Update failed:', error);
@@ -357,6 +361,10 @@ function addMenuListeners() {
357
361
  closeMobileMenu();
358
362
  saveSelectedCategory(key);
359
363
  const category = configCategories[key] || {};
364
+ if (category.script) {
365
+ loadConfigSection(key);
366
+ return;
367
+ }
360
368
  if (typeof category.render === 'function') {
361
369
  category.render();
362
370
  return;
@@ -428,57 +436,9 @@ function renderConfigFields(data, sectionKey = '', renderFields = renderDefaultF
428
436
  } else {
429
437
  renderFields(data, container, sectionKey);
430
438
  }
431
- if (sectionKey === 'Web') updateWebAppsVisibility(container);
432
439
  updateUnsavedFields();
433
440
  }
434
441
 
435
- function updateWebAppsVisibility(container) {
436
- const enabled = (changedValues.webui ?? configData.webui) === true;
437
- const group = container.querySelector('#configWebApps');
438
- if (group) group.hidden = !enabled;
439
- else if (enabled) renderWebApps(container);
440
- }
441
-
442
- function renderWebApps(container) {
443
- const group = createConfigFieldset('Web apps');
444
- group.id = 'configWebApps';
445
- const fields = document.createElement('div');
446
- const message = textElement('p', 'Loading web apps...');
447
- message.setAttribute('role', 'status');
448
- group.appendChild(fields);
449
- group.appendChild(message);
450
- group.appendChild(textElement('p', '[i] Disabling an app requires a reboot.'));
451
- container.appendChild(group);
452
-
453
- function render() {
454
- fields.innerHTML = '';
455
- const current = {...configData, ...changedValues};
456
- Object.entries(current)
457
- .filter(([key, value]) => key.startsWith('web.') && typeof value === 'boolean')
458
- .sort(([a], [b]) => configLabel(a).localeCompare(configLabel(b), 'en'))
459
- .forEach(([key, value]) => renderField(fields, key, value));
460
- fields.querySelectorAll('[data-config-key="web.config"] button').forEach(button => { button.disabled = true; });
461
- message.textContent = '';
462
- updateUnsavedFields();
463
- }
464
-
465
- if (Object.keys(configData).some(key => key.startsWith('web.'))) {
466
- render();
467
- return;
468
- }
469
- restAPI('web/status', false)
470
- .then(response => {
471
- if (!response || response.state !== true || !response.result || typeof response.result !== 'object' || Array.isArray(response.result)) {
472
- throw new Error('Unable to load web app settings.');
473
- }
474
- Object.entries(response.result).forEach(([key, value]) => {
475
- if (typeof value === 'boolean') configData['web.' + key] = value;
476
- });
477
- render();
478
- })
479
- .catch(error => { message.textContent = error.message; });
480
- }
481
-
482
442
  function renderTaskSection() {
483
443
  const container = document.getElementById('configFields');
484
444
  container.innerHTML = '';
@@ -965,19 +925,17 @@ function fetchDeviceHealth(settings) {
965
925
  });
966
926
  }
967
927
 
968
- // Fetch optional config sections once, when first opened.
969
- function loadSchedulerSection() {
970
- return loadConfigSection('scheduler', '/config_schedler.js', () => renderSchedulerSection());
971
- }
972
-
973
- function loadPackagesSection() {
974
- return loadConfigSection('packages', '/config_packages.js', () => renderPackagesSection());
975
- }
976
-
977
- function loadConfigSection(name, src, render) {
928
+ // Optional sections declare their script and renderer in configCategories.
929
+ function loadConfigSection(category) {
930
+ const {script: src, render: renderer} = configCategories[category];
978
931
  const container = document.getElementById('configFields');
979
- container.innerHTML = '';
980
- const loading = textElement('p', `Loading ${name}...`);
932
+ // Base settings stay usable even when optional enhancements are unavailable.
933
+ renderConfigFields(filterConfig(category), category);
934
+ if (!isEditableConfigSection(category)) {
935
+ container.appendChild(textElement('h2', categoryTitle(category), 'config-heading-top'));
936
+ }
937
+ const loading = textElement('p', `Loading ${category.toLowerCase()} features...`);
938
+ loading.setAttribute('role', 'status');
981
939
  container.appendChild(loading);
982
940
  if (!configSectionScripts[src]) {
983
941
  configSectionScripts[src] = new Promise((resolve, reject) => {
@@ -987,7 +945,7 @@ function loadConfigSection(name, src, render) {
987
945
  script.onerror = () => {
988
946
  script.remove();
989
947
  delete configSectionScripts[src];
990
- reject(new Error(`Failed to load ${name}.`));
948
+ reject(new Error(`Optional ${category.toLowerCase()} features are unavailable.`));
991
949
  };
992
950
  document.head.appendChild(script);
993
951
  });
@@ -995,12 +953,15 @@ function loadConfigSection(name, src, render) {
995
953
  return configSectionScripts[src]
996
954
  .then(() => {
997
955
  // Do not replace a different menu or a newer view while loading.
998
- if (loading.isConnected) render();
956
+ if (!loading.isConnected) return;
957
+ const render = typeof renderer === 'function' ? renderer : window[renderer];
958
+ if (typeof render !== 'function') throw new Error(`Optional ${category.toLowerCase()} features are unavailable.`);
959
+ render();
999
960
  })
1000
961
  .catch(err => {
1001
962
  if (!loading.isConnected) return;
1002
963
  loading.textContent = err.message;
1003
- container.appendChild(makeButton('Retry', () => loadConfigSection(name, src, render)));
964
+ container.appendChild(makeButton('Retry', () => loadConfigSection(category)));
1004
965
  });
1005
966
  }
1006
967
 
@@ -1620,7 +1581,7 @@ function trackChange(key, value) {
1620
1581
  } else {
1621
1582
  changedValues[key] = value;
1622
1583
  }
1623
- if (key === 'webui') updateWebAppsVisibility(document.getElementById('configFields'));
1584
+ if (key === 'webui' && typeof updateWebAppsVisibility === 'function') updateWebAppsVisibility(document.getElementById('configFields'));
1624
1585
  updateSaveButtonState();
1625
1586
  console.log('Changed config keys:', Object.keys(changedValues));
1626
1587
  }
@@ -1,9 +1,5 @@
1
1
  // Loaded on demand by config.js when the Packages menu opens.
2
2
  let installedPackageNames = new Set();
3
- const restEncodeMap = {
4
- '"': '%5Cx22', "'": '%27', '#': '%23', '=': '%3D', '>': '%3E', '&': '%26',
5
- '/': '%2F', '\\': '%5C%5C', ' ': '%20', '?': '%3F', '%': '%25'
6
- };
7
3
  const PACMAN_TIMEOUT_MS = 20000;
8
4
 
9
5
  // Packages UI: install and inspect
@@ -250,18 +246,6 @@ function getPackageActions() {
250
246
  ];
251
247
  }
252
248
 
253
- function getAdminPassword() {
254
- if (changedValues.hasOwnProperty('appwd')) {
255
- return changedValues.appwd;
256
- }
257
- return configData.appwd || '';
258
- }
259
-
260
- /** Encode a value as one quoted REST argument for micrOS execution. */
261
- function restQuote(value) {
262
- return '"' + String(value).replace(/["'#=>&/\\ ?%]/g, char => restEncodeMap[char]) + '"';
263
- }
264
-
265
249
  function loadPackageDetails(packageName, details, button) {
266
250
  if (details.style.display !== 'none' && details.textContent) {
267
251
  details.style.display = 'none';