micrOSDevToolKit 3.2.4__tar.gz → 3.3.0__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 (450) hide show
  1. {microsdevtoolkit-3.2.4/micrOSDevToolKit.egg-info → microsdevtoolkit-3.3.0}/PKG-INFO +1 -1
  2. microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32-1.28.0-3.3.0-0.bin +0 -0
  3. microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32c3-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32c3-1.28.0-3.3.0-0.bin +0 -0
  4. microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32c6-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32c6-1.28.0-3.3.0-0.bin +0 -0
  5. microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32s3-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32s3-1.28.0-3.3.0-0.bin +0 -0
  6. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +10 -10
  7. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Auth.py +21 -4
  8. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Shell.py +1 -1
  9. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Web.py +97 -44
  10. microsdevtoolkit-3.3.0/micrOS/source/__pycache__/Auth.cpython-312.pyc +0 -0
  11. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  12. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
  13. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  14. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  15. microsdevtoolkit-3.3.0/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
  16. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_web.py +36 -11
  17. microsdevtoolkit-3.3.0/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
  18. microsdevtoolkit-3.3.0/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
  19. microsdevtoolkit-3.3.0/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  20. microsdevtoolkit-3.3.0/micrOS/source/web/auth.js +142 -0
  21. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/config.css +49 -3
  22. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/config.html +2 -0
  23. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/config.js +460 -57
  24. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_web_engine.py +217 -0
  25. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
  26. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/SOURCES.txt +9 -4
  27. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/setup.py +1 -1
  28. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/DevEnvUSB.py +5 -5
  29. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/node_config.json +1 -1
  30. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/socketClient.py +105 -27
  31. microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/Auth.mpy +0 -0
  32. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  33. microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/Web.mpy +0 -0
  34. microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  35. microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/web/auth.js +21 -0
  36. microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/web/config.css +1 -0
  37. microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/web/config.html +1 -0
  38. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/config.js +47 -18
  39. microsdevtoolkit-3.2.4/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
  40. microsdevtoolkit-3.2.4/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  41. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/Auth.mpy +0 -0
  42. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/Web.mpy +0 -0
  43. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  44. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/web/config.css +0 -1
  45. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/web/config.html +0 -1
  46. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/LICENSE +0 -0
  47. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/MANIFEST.in +0 -0
  48. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/README.md +0 -0
  49. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/devToolKit.py +0 -0
  50. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/__init__.py +0 -0
  51. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/.DS_Store +0 -0
  52. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  53. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  54. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  55. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  56. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  57. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  58. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  59. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  60. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  61. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  62. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  63. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  64. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  65. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/__init__.py +0 -0
  66. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/dnd.png +0 -0
  67. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/logo.png +0 -0
  68. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/logo_mini.png +0 -0
  69. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/usb_port_icon.png +0 -0
  70. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/wifi_icon.png +0 -0
  71. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/__init__.py +0 -0
  72. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/board_commands.json +0 -0
  73. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  74. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  75. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
  76. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  77. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  78. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  79. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  80. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  81. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  82. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  83. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  84. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  85. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/.DS_Store +0 -0
  86. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Buffer.py +0 -0
  87. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Common.py +0 -0
  88. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Config.py +0 -0
  89. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Debug.py +0 -0
  90. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Files.py +0 -0
  91. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Hooks.py +0 -0
  92. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/InterConnect.py +0 -0
  93. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Interrupts.py +0 -0
  94. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Logger.py +0 -0
  95. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Network.py +0 -0
  96. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Notify.py +0 -0
  97. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Pacman.py +0 -0
  98. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Scheduler.py +0 -0
  99. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Server.py +0 -0
  100. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Tasks.py +0 -0
  101. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Time.py +0 -0
  102. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Types.py +0 -0
  103. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
  104. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  105. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  106. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
  107. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
  108. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
  109. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  110. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
  111. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
  112. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  113. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
  114. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
  115. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
  116. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
  117. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
  118. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  119. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
  120. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/config/_git.keep +0 -0
  121. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/helpers.py +0 -0
  122. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/main.py +0 -0
  123. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/mespnow.py +0 -0
  124. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/micrOS.py +0 -0
  125. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/micrOSloader.py +0 -0
  126. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/microIO.py +0 -0
  127. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32.py +0 -0
  128. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32c3.py +0 -0
  129. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32c5.py +0 -0
  130. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32c6.py +0 -0
  131. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32s2.py +0 -0
  132. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32s3.py +0 -0
  133. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_m5stamp.py +0 -0
  134. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_qtpy.py +0 -0
  135. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_rp2.py +0 -0
  136. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_tinypico.py +0 -0
  137. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_L298N.py +0 -0
  138. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_L9110_DCmotor.py +0 -0
  139. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_OV2640.py +0 -0
  140. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_aht10.py +0 -0
  141. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_bme280.py +0 -0
  142. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_buzzer.py +0 -0
  143. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_cct.py +0 -0
  144. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_cluster.py +0 -0
  145. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_dht11.py +0 -0
  146. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_dht22.py +0 -0
  147. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_dimmer.py +0 -0
  148. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_distance.py +0 -0
  149. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_ds18.py +0 -0
  150. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_esp32.py +0 -0
  151. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_espnow.py +0 -0
  152. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_fileserver.py +0 -0
  153. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_gameOfLife.py +0 -0
  154. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_genIO.py +0 -0
  155. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_haptic.py +0 -0
  156. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_i2c.py +0 -0
  157. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_i2s_mic.py +0 -0
  158. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_ld2410.py +0 -0
  159. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_light_sensor.py +0 -0
  160. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_neoeffects.py +0 -0
  161. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_neopixel.py +0 -0
  162. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_oled.py +0 -0
  163. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
  164. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_oled_ui.py +0 -0
  165. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_pacman.py +0 -0
  166. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_presence.py +0 -0
  167. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_qmi8658.py +0 -0
  168. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rencoder.py +0 -0
  169. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rest.py +0 -0
  170. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rgb.py +0 -0
  171. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rgbcct.py +0 -0
  172. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_roboarm.py +0 -0
  173. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_robustness.py +0 -0
  174. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rp2w.py +0 -0
  175. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_sdcard.py +0 -0
  176. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_servo.py +0 -0
  177. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_stepper.py +0 -0
  178. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_switch.py +0 -0
  179. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_system.py +0 -0
  180. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_telegram.py +0 -0
  181. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_tinyrgb.py +0 -0
  182. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_trackball.py +0 -0
  183. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_veml7700.py +0 -0
  184. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/urequests.py +0 -0
  185. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/dashboard.html +0 -0
  186. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/editor.js +0 -0
  187. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/editor_plugins.js +0 -0
  188. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/filesui.html +0 -0
  189. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/filesui.js +0 -0
  190. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/index.html +0 -0
  191. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uapi.js +0 -0
  192. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uapi_widgets.js +0 -0
  193. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/udashboard.js +0 -0
  194. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/ustyle.css +0 -0
  195. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uwidgets.js +0 -0
  196. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uwidgets_pro.js +0 -0
  197. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/__init__.py +0 -0
  198. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_buffer.py +0 -0
  199. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_config.py +0 -0
  200. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_pacman.py +0 -0
  201. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_scheduler.py +0 -0
  202. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_time.py +0 -0
  203. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_urequests.py +0 -0
  204. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_urequests_real_api.py +0 -0
  205. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  206. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  207. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  208. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/setup.cfg +0 -0
  209. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/DevEnvCompile.py +0 -0
  210. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/DevEnvOTA.py +0 -0
  211. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/Gateway.py +0 -0
  212. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/LM_to_compile.dat +0 -0
  213. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/MicrOSDevEnv.py +0 -0
  214. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/WebRepl.py +0 -0
  215. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/__init__.py +0 -0
  216. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/BackupRestore.py +0 -0
  217. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  218. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CCTTest.py +0 -0
  219. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CamStream.py +0 -0
  220. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CatGame.py +0 -0
  221. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/Dimmer.py +0 -0
  222. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/GetVersion.py +0 -0
  223. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  224. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  225. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  226. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  227. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
  228. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/RGBTest.py +0 -0
  229. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/RoboArm.py +0 -0
  230. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/SED_test.py +0 -0
  231. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/SensorsTest.py +0 -0
  232. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/SystemTest.py +0 -0
  233. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/Template_app.py +0 -0
  234. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/__init__.py +0 -0
  235. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_app_base.py +0 -0
  236. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_capture.py +0 -0
  237. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
  238. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  239. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  240. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  241. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/gateway/gateway.css +0 -0
  242. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/gateway/img_stream.html +0 -0
  243. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/gateway/index.html +0 -0
  244. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/LocalMachine.py +0 -0
  245. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/MicrosFiles.py +0 -0
  246. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/Repository.py +0 -0
  247. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/SafeInput.py +0 -0
  248. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/SearchDevices.py +0 -0
  249. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/SerialDriverHandler.py +0 -0
  250. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/TerminalColors.py +0 -0
  251. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/__init__.py +0 -0
  252. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/macroScript.py +0 -0
  253. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/micrOSClient.py +0 -0
  254. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/micrOSClientHistory.py +0 -0
  255. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/pip_package_installer.py +0 -0
  256. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSImageBuilder.py +0 -0
  257. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSImageConfig.json +0 -0
  258. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSdashboard.py +0 -0
  259. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSlint.py +0 -0
  260. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/.DS_Store +0 -0
  261. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/IO_darwin.py +0 -0
  262. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  263. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
  264. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  265. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  266. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  267. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  268. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  269. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  270. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  271. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  272. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  273. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  274. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  275. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  276. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  277. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  278. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  279. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  280. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  281. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  282. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  283. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  284. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  285. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  286. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  287. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  288. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  289. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  290. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  291. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  292. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  293. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  294. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  295. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  296. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  297. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  298. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  299. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  300. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  301. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  302. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  303. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  304. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  305. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  306. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  307. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  308. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  309. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  310. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  311. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  312. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  313. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  314. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  315. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  316. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  317. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  318. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  319. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  320. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  321. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  322. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/aioespnow.py +0 -0
  323. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/camera.py +0 -0
  324. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/dht.py +0 -0
  325. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/dotstar.py +0 -0
  326. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ds18x20.py +0 -0
  327. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/esp32.py +0 -0
  328. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/framebuf.py +0 -0
  329. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/machine.py +0 -0
  330. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/micropython.py +0 -0
  331. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/mip.py +0 -0
  332. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/neopixel.py +0 -0
  333. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/network.py +0 -0
  334. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ntptime.py +0 -0
  335. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/onewire.py +0 -0
  336. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/sim_common.py +0 -0
  337. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/simgc.py +0 -0
  338. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/simulator.py +0 -0
  339. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/tinypico.py +0 -0
  340. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/uasyncio.py +0 -0
  341. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/uos.py +0 -0
  342. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/urandom.py +0 -0
  343. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/usocket.py +0 -0
  344. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ussl.py +0 -0
  345. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ustruct.py +0 -0
  346. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/utime.py +0 -0
  347. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/view01.jpg +0 -0
  348. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/view02.jpg +0 -0
  349. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/webrepl.py +0 -0
  350. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/.include +0 -0
  351. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/generic.py +0 -0
  352. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/macro.py +0 -0
  353. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/template.macro +0 -0
  354. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/template.py +0 -0
  355. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/__init__.py +0 -0
  356. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
  357. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Common.mpy +0 -0
  358. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Config.mpy +0 -0
  359. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Debug.mpy +0 -0
  360. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Files.mpy +0 -0
  361. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  362. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  363. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  364. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Logger.mpy +0 -0
  365. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Network.mpy +0 -0
  366. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  367. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
  368. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  369. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Server.mpy +0 -0
  370. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  371. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Time.mpy +0 -0
  372. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Types.mpy +0 -0
  373. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/_mpy.version +0 -0
  374. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/config/_git.keep +0 -0
  375. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/helpers.mpy +0 -0
  376. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/main.py +0 -0
  377. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
  378. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  379. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  380. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/microIO.mpy +0 -0
  381. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  382. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  383. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
  384. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  385. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  386. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  387. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  388. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  389. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  390. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  391. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
  392. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py +0 -0
  393. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  394. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  395. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  396. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
  397. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  398. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  399. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  400. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  401. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  402. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
  403. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  404. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
  405. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
  406. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  407. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
  408. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  409. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
  410. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
  411. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  412. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_ld2410.mpy +0 -0
  413. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  414. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  415. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  416. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  417. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  418. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  419. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  420. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  421. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_qmi8658.py +0 -0
  422. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
  423. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  424. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  425. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
  426. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
  427. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
  428. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
  429. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
  430. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
  431. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
  432. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  433. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  434. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  435. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
  436. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
  437. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  438. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/urequests.mpy +0 -0
  439. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
  440. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/editor.js +0 -0
  441. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
  442. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/filesui.html +0 -0
  443. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/filesui.js +0 -0
  444. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/index.html +0 -0
  445. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/uapi.js +0 -0
  446. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
  447. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
  448. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
  449. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
  450. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/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.2.4
3
+ Version: 3.3.0
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
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "files": {
3
3
  "Auth.py": [
4
- 9.63,
5
- 5
4
+ 9.68,
5
+ 6
6
6
  ],
7
7
  "Time.py": [
8
8
  9.38,
@@ -29,7 +29,7 @@
29
29
  3
30
30
  ],
31
31
  "Web.py": [
32
- 9.32,
32
+ 9.36,
33
33
  2
34
34
  ],
35
35
  "Tasks.py": [
@@ -62,7 +62,7 @@
62
62
  ],
63
63
  "Common.py": [
64
64
  9.86,
65
- 31
65
+ 32
66
66
  ],
67
67
  "InterConnect.py": [
68
68
  9.7,
@@ -125,7 +125,7 @@
125
125
  0
126
126
  ],
127
127
  "modules/LM_web.py": [
128
- 9.13,
128
+ 8.14,
129
129
  0
130
130
  ],
131
131
  "modules/LM_genIO.py": [
@@ -303,11 +303,11 @@
303
303
  },
304
304
  "summary": {
305
305
  "core": [
306
- 5414,
306
+ 5477,
307
307
  27
308
308
  ],
309
309
  "load": [
310
- 7569,
310
+ 7589,
311
311
  48
312
312
  ],
313
313
  "core_dep": [
@@ -318,8 +318,8 @@
318
318
  true,
319
319
  5
320
320
  ],
321
- "core_score": 9.28,
322
- "load_score": 8.43,
323
- "version": "3.2.4-0"
321
+ "core_score": 9.29,
322
+ "load_score": 8.41,
323
+ "version": "3.3.0-0"
324
324
  }
325
325
  }
@@ -5,6 +5,22 @@ micrOS Load Module Authentication/Access feature
5
5
  from Config import cfgget as __cfgget
6
6
  PWD_KEY = "pwd"
7
7
 
8
+
9
+ class AuthRequired(Exception):
10
+ """
11
+ Raised by @sudo when the caller did not provide a valid app password.
12
+ Shell and WebEngine translate this into their own response style.
13
+ """
14
+
15
+
16
+ def check_password(password):
17
+ """
18
+ Shared app password check.
19
+ Username is intentionally not enforced yet: micrOS has only appwd.
20
+ """
21
+ return password == __cfgget("appwd")
22
+
23
+
8
24
  def sudo(_f=None, *, _when_true=None):
9
25
  """
10
26
  Decorator for password-protected functions.
@@ -42,9 +58,10 @@ def sudo(_f=None, *, _when_true=None):
42
58
  if a[wt_idx]:
43
59
  require = True
44
60
 
45
- # Password check
46
- if require and k.get(PWD_KEY) != __cfgget("appwd"):
47
- raise Exception(f"Access denied, wrong password ({PWD_KEY})")
61
+ # Password check: callers use pwd=.
62
+ password = k.get(PWD_KEY)
63
+ if require and not check_password(password):
64
+ raise AuthRequired(f"Access denied, wrong password ({PWD_KEY})")
48
65
  # Remove password before calling function
49
66
  k.pop(PWD_KEY, None)
50
67
  return f(*a, **k)
@@ -58,5 +75,5 @@ def resolve_secret(commands:str):
58
75
  """
59
76
  placeholder = f"${PWD_KEY}"
60
77
  if placeholder in commands:
61
- commands = commands.replace(placeholder, f"'{__cfgget("appwd")}'")
78
+ commands = commands.replace(placeholder, f"'{__cfgget('appwd')}'")
62
79
  return commands
@@ -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.2.4-0'
31
+ MICROS_VERSION = '3.3.0-0'
32
32
 
33
33
  def __init__(self):
34
34
  """
@@ -21,6 +21,7 @@ from Config import cfgget
21
21
  from Files import OSPath, path_join
22
22
  from Buffer import SlidingBuffer, BufferFullError, MemoryPool
23
23
  from Debug import console_write, syslog
24
+ from Auth import AuthRequired, PWD_KEY
24
25
 
25
26
  try:
26
27
  from gc import mem_free
@@ -89,7 +90,7 @@ def _parse_rest_cmd(cmd:str) -> list[str]:
89
90
  index += 1
90
91
  segment = decoded[start:index]
91
92
  if segment:
92
- segment = segment.replace('/', ' ').strip()
93
+ segment = segment.replace('/', ' ').replace('-', ' ').strip()
93
94
  if segment:
94
95
  tokens.extend(token for token in segment.split() if token)
95
96
  return tokens
@@ -98,6 +99,7 @@ def _parse_rest_cmd(cmd:str) -> list[str]:
98
99
  class HeaderParsingError(ValueError):
99
100
  """Exception for errors occurring while parsing HTTP/MIME headers"""
100
101
 
102
+
101
103
  #################################################################
102
104
  # Pre-allocated Memory Buffer #
103
105
  #################################################################
@@ -300,6 +302,7 @@ class WebEngine(Buffer):
300
302
  VERSION = "n/a"
301
303
  RESP_HEADERS = (
302
304
  200, b"HTTP/1.1 200 OK",
305
+ 401, b"HTTP/1.1 401 Unauthorized",
303
306
  400, b"HTTP/1.1 400 Bad Request",
304
307
  404, b"HTTP/1.1 404 Not Found",
305
308
  405, b"HTTP/1.1 405 Method Not Allowed",
@@ -353,6 +356,42 @@ class WebEngine(Buffer):
353
356
  self.mp_delimiter = None
354
357
  self.mp_closing_delimiter = None
355
358
 
359
+ def _auth_execute(self, callback, *args, **kwargs):
360
+ """Run endpoint callback, retrying @sudo callbacks with custom web auth."""
361
+ try:
362
+ return callback(*args, **kwargs)
363
+ except AuthRequired:
364
+ auth_header = "x-micros-auth"
365
+ password = self.headers.get(auth_header)
366
+ if password is None:
367
+ raise
368
+ kwargs[PWD_KEY] = password
369
+ return callback(*args, **kwargs)
370
+
371
+ def _auth_response(self, tx):
372
+ """Write the custom auth-required HTTP response."""
373
+ accept = self.headers.get("accept", "")
374
+ self.response_headers[b"cache-control"] = b"no-store"
375
+ self.response_headers[b"x-content-type-options"] = b"nosniff"
376
+ self.response_headers[b"referrer-policy"] = b"no-referrer"
377
+ wants_html = "text/html" in accept or "application/xhtml+xml" in accept
378
+ if self.method != self.GET or not wants_html:
379
+ self.terminate(401, b"application/json")
380
+ return self._generate_response(tx, {"state": False, "result": "Auth required"})
381
+ self.response_headers[b"content-security-policy"] = (
382
+ b"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; "
383
+ b"object-src 'none'; base-uri 'self'; frame-ancestors 'none'"
384
+ )
385
+ self.terminate(401, b"text/html")
386
+ auth_boot_script = '<script src="/auth.js" data-micros-auth="1"></script>'
387
+ body = (
388
+ '<!doctype html><html><head><meta charset="utf-8">'
389
+ '<meta name="viewport" content="width=device-width,initial-scale=1">'
390
+ '<title>micrOS Auth</title></head><body>'
391
+ f'{auth_boot_script}</body></html>'
392
+ )
393
+ return self._generate_response(tx, body)
394
+
356
395
  # =========================================
357
396
  # Public methods for load modules
358
397
  # =========================================
@@ -373,7 +412,6 @@ class WebEngine(Buffer):
373
412
  raise ValueError(f"method must be one of {WebEngine.METHODS}")
374
413
  WebEngine.ENDPOINTS[endpoint][method] = callback
375
414
 
376
-
377
415
  @staticmethod
378
416
  def web_mounts(modules:bool=None, data:bool=None, logs:bool=None) -> dict:
379
417
  """
@@ -652,38 +690,42 @@ class WebEngine(Buffer):
652
690
  resp_schema['result'] = {"micrOS": WebEngine.VERSION,
653
691
  'node': cfgget('devfid'),
654
692
  'auth': WebEngine.AUTH}
655
- if len(tuple(WebEngine.ENDPOINTS.keys())) > 0:
656
- resp_schema['result']['usr_endpoints'] = tuple(
657
- endpoint.decode("ascii") if isinstance(endpoint, (bytes, bytearray)) else endpoint
658
- for endpoint in WebEngine.ENDPOINTS
659
- )
693
+ get_endpoints = tuple(
694
+ endpoint.decode("ascii") if isinstance(endpoint, (bytes, bytearray)) else endpoint
695
+ for endpoint, methods in WebEngine.ENDPOINTS.items()
696
+ if WebEngine.GET in methods
697
+ )
698
+ resp_schema['result']['usr_endpoints'] = get_endpoints
660
699
  resp_schema['state'] = True
661
700
  self.terminate(200, b"text/html")
662
701
  return self._generate_response(tx, resp_schema)
663
702
 
664
703
  def _lm_endpoint_st(self, rx, tx):
665
704
  """Process a request by registered load module callbacks"""
666
- callback = WebEngine.ENDPOINTS[self.url][self.method]
667
- if "content-length" in self.headers and self.headers["content-length"] > 0:
668
- if mp_boundary := WebEngine._is_multipart(self.headers):
669
- self.mp_boundary = mp_boundary.encode("ascii")
670
- self.engine_state = self._start_multipart_parser_st
671
- return
672
- if self.headers["content-length"] > rx.size():
673
- return
674
- if self.headers["content-length"] < rx.size():
675
- self.on_client_error(tx, self.CONTENT_LENGTH_ERROR)
676
- return
677
- self.engine_state = None
678
- dtype, data = callback(self.headers, bytes(rx.peek()))
679
- dtype = dtype.encode("ascii")
680
- else:
681
- if not callable(callback):
682
- # Handle endpoint callback as a static resource
683
- self.engine_state = lambda _rx, _tx: self._send_file_st(_rx, _tx, callback)
684
- return
685
- dtype, data = callback(self.headers, b"")
686
- dtype = dtype.encode("ascii")
705
+ callback = WebEngine.ENDPOINTS[self.url][self.method]
706
+ try:
707
+ if "content-length" in self.headers and self.headers["content-length"] > 0:
708
+ if mp_boundary := WebEngine._is_multipart(self.headers):
709
+ self.mp_boundary = mp_boundary.encode("ascii")
710
+ self.engine_state = self._start_multipart_parser_st
711
+ return
712
+ if self.headers["content-length"] > rx.size():
713
+ return
714
+ if self.headers["content-length"] < rx.size():
715
+ self.on_client_error(tx, self.CONTENT_LENGTH_ERROR)
716
+ return
717
+ self.engine_state = None
718
+ dtype, data = self._auth_execute(callback, self.headers, bytes(rx.peek()))
719
+ dtype = dtype.encode("ascii")
720
+ else:
721
+ if not callable(callback):
722
+ # Handle endpoint callback as a static resource
723
+ self.engine_state = lambda _rx, _tx: self._send_file_st(_rx, _tx, callback)
724
+ return
725
+ dtype, data = self._auth_execute(callback, self.headers, b"")
726
+ dtype = dtype.encode("ascii")
727
+ except AuthRequired:
728
+ return self._auth_response(tx)
687
729
  # dtype:
688
730
  # one-shot (simple MIME types): image/jpeg | text/html | text/plain
689
731
  # - data contains the response to include in the body
@@ -760,8 +802,10 @@ class WebEngine(Buffer):
760
802
  self.on_missing_resource(tx, b"Mount not found")
761
803
  return
762
804
  try:
763
- self.response_headers[b"content-length"] = str(stat(web_resource)[6]).encode()
764
- self.terminate(200, WebEngine._file_type(web_resource))
805
+ file_size = stat(web_resource)[6]
806
+ content_type = WebEngine._file_type(web_resource)
807
+ self.response_headers[b"content-length"] = str(file_size).encode()
808
+ self.terminate(200, content_type)
765
809
  self._write_response_head(tx)
766
810
  return open(web_resource, "rb")
767
811
  except OSError:
@@ -811,16 +855,21 @@ class WebEngine(Buffer):
811
855
  return
812
856
  callback = WebEngine.ENDPOINTS[self.url][self.method]
813
857
  # Process complete part
814
- if not is_final:
815
- callback(part_headers, part_body, first=self.mp_first_part, last=False)
816
- if rx.peek(len(self.mp_delimiter)) != self.mp_delimiter:
817
- self.on_client_error(tx, self.MULTIPART_BOUNDARY_ERROR)
858
+ try:
859
+ if not is_final:
860
+ self._auth_execute(
861
+ callback, part_headers, part_body,
862
+ first=self.mp_first_part, last=False)
863
+ if rx.peek(len(self.mp_delimiter)) != self.mp_delimiter:
864
+ self.on_client_error(tx, self.MULTIPART_BOUNDARY_ERROR)
865
+ return
866
+ rx.consume(len(self.mp_delimiter))
867
+ self.content_length_cnt += len(self.mp_delimiter)
868
+ self.mp_first_part = False
869
+ self.engine_state = self._parse_boundary_st
818
870
  return
819
- rx.consume(len(self.mp_delimiter))
820
- self.content_length_cnt += len(self.mp_delimiter)
821
- self.mp_first_part = False
822
- self.engine_state = self._parse_boundary_st
823
- return
871
+ except AuthRequired:
872
+ return self._auth_response(tx)
824
873
  # Process last part
825
874
  rx.consume(len(self.mp_closing_delimiter))
826
875
  self.content_length_cnt += len(self.mp_closing_delimiter)
@@ -828,10 +877,14 @@ class WebEngine(Buffer):
828
877
  self.content_length_cnt + rx.size() != self.headers["content-length"]:
829
878
  self.on_client_error(tx, self.CONTENT_LENGTH_ERROR)
830
879
  return
831
- dtype, data = callback(
832
- part_headers,
833
- part_body,
834
- first=self.mp_first_part,
835
- last=True)
880
+ try:
881
+ dtype, data = self._auth_execute(
882
+ callback,
883
+ part_headers,
884
+ part_body,
885
+ first=self.mp_first_part,
886
+ last=True)
887
+ except AuthRequired:
888
+ return self._auth_response(tx)
836
889
  self.terminate(200, dtype.encode("ascii"))
837
890
  return self._generate_response(tx, data)
@@ -10,17 +10,15 @@ from Common import web_endpoint, web_mounts
10
10
  from Config import cfgget, cfgput
11
11
  from Auth import sudo
12
12
 
13
- _CFG_HIDE = ("hwuid", "guimeta", "socport", "version", "auth", "soctout")
14
-
15
-
16
- def load(dashboard=True, fileserver:bool=False, fs_explore:bool=False):
13
+ def load(dashboard=True, fileserver:bool=False, fs_explore:bool=False, config=True):
17
14
  """
18
15
  Centralized Web Backend Services Loader
19
16
  - Dynamic application dashboard
20
17
  - Fileserver
21
18
  :param dashboard: bool - enable*/disable application dashboard
22
19
  :param fileserver: bool - enable/disable* fileserver
23
- :param fs_explore: bool - enable all shared web mounts: modules, data
20
+ :param fs_explore: bool - enable/disable* all shared web mounts: modules, data
21
+ :param config: bool - enable*/disable micrOS web config with auth
24
22
  """
25
23
  endpoints = []
26
24
  if dashboard:
@@ -30,10 +28,13 @@ def load(dashboard=True, fileserver:bool=False, fs_explore:bool=False):
30
28
  import LM_fileserver
31
29
  endpoints.append(LM_fileserver.load())
32
30
  endpoints.append(web_mounts(fs_explore, fs_explore, fs_explore))
31
+ if config:
32
+ endpoints.append(enable_config())
33
33
  return endpoints
34
34
 
35
+ ######################## System Config ######################
36
+ _CFG_HIDE = ("hwuid", "guimeta", "socport", "version", "auth", "soctout")
35
37
 
36
- @sudo
37
38
  def enable_config():
38
39
  """
39
40
  Enable web configuration option
@@ -41,13 +42,15 @@ def enable_config():
41
42
  web_endpoint("config", _cfg_get_clb)
42
43
  web_endpoint("config", _cfg_set_clb, "POST")
43
44
  web_endpoint("config/ui", 'config.html')
44
- return "Endpoints: /config and /config/ui"
45
+ web_endpoint("config/reboot", _reboot_clb, "POST")
46
+ return "Config endpoints: config/ui GET, /config GET|POST (protected), /config/reboot POST (protected)"
45
47
 
46
48
 
47
49
  def _cfg_json(data):
48
50
  return "application/json", dumps(data)
49
51
 
50
52
 
53
+ @sudo
51
54
  def _cfg_get_clb(*_):
52
55
  """
53
56
  Get system config
@@ -55,6 +58,7 @@ def _cfg_get_clb(*_):
55
58
  return _cfg_json({k: v for k, v in cfgget().items() if k not in _CFG_HIDE})
56
59
 
57
60
 
61
+ @sudo
58
62
  def _cfg_set_clb(_, body):
59
63
  """
60
64
  Set system config delta
@@ -65,9 +69,11 @@ def _cfg_set_clb(_, body):
65
69
  failed_keys = []
66
70
  for k, v in incoming_data.items():
67
71
  try:
68
- if k == 'devfid' and not str(v).strip():
69
- raise Exception("Device name cannot be empty")
70
- state = cfgput(k, v)
72
+ if isinstance(v, str) and not v.strip():
73
+ if k == 'devfid':
74
+ raise Exception("Device name cannot be empty")
75
+ v = 'n/a'
76
+ state = cfgput(k, v, type_check=True)
71
77
  except Exception as e:
72
78
  state = False
73
79
  k = f"{k}: {e}"
@@ -84,6 +90,25 @@ def _cfg_set_clb(_, body):
84
90
  return _cfg_json({"state": False, "result": str(e)})
85
91
 
86
92
 
93
+ @sudo
94
+ def _reboot_clb(*_):
95
+ """
96
+ Hard reboot system from web endpoint
97
+ """
98
+ from Common import micro_task
99
+ from machine import reset
100
+
101
+ @micro_task("web.reboot", _wrap=True)
102
+ async def _hard_reboot(tag):
103
+ with micro_task(tag) as my_task:
104
+ await my_task.feed(1000)
105
+ reset()
106
+
107
+ return _cfg_json({"state": bool(_hard_reboot()), "result": "Hard reboot scheduled"})
108
+
109
+ #############################################################
110
+
111
+
87
112
  def help(widgets=False):
88
113
  """
89
114
  [i] micrOS LM naming convention - built-in help message
@@ -91,6 +116,6 @@ def help(widgets=False):
91
116
  (widgets=False) list of functions implemented by this application
92
117
  (widgets=True) list of widget json for UI generation
93
118
  """
94
- return ('load dashboard=True fileserver=False fs_explore=False',
119
+ return ('load dashboard=True fileserver=False fs_explore=False config=True',
95
120
  'enable_config',
96
121
  'help')
@@ -0,0 +1,142 @@
1
+ (function () {
2
+ var ID = 'micrOSAuth', rf = window.fetch && window.fetch.bind(window);
3
+ var user = 'admin', pass = '';
4
+ try {
5
+ sessionStorage.removeItem(ID);
6
+ sessionStorage.removeItem('micros.config.auth');
7
+ } catch (_) {}
8
+
9
+ function rm(e) { if (e && e.parentNode) e.parentNode.removeChild(e); }
10
+ function load() { return {user: user, pass: pass}; }
11
+ function save(d) {
12
+ user = d.user || 'admin';
13
+ pass = d.pass || '';
14
+ return load();
15
+ }
16
+ function clear() { pass = ''; }
17
+ function url(i) {
18
+ return typeof i === 'string' ? i :
19
+ i && typeof i.href === 'string' ? i.href :
20
+ i && typeof i.url === 'string' ? i.url : '';
21
+ }
22
+ function same(i) {
23
+ try {
24
+ var a = document.createElement('a'), u = url(i);
25
+ if (!u) return false;
26
+ a.href = u;
27
+ return a.protocol === location.protocol && a.host === location.host;
28
+ } catch (_) { return false; }
29
+ }
30
+ function hdr(d) {
31
+ d = d || load();
32
+ return d.pass ? {'x-micros-auth': d.pass} : {};
33
+ }
34
+ function ext(a, b) {
35
+ var o = {}, k;
36
+ a = a || {};
37
+ for (k in a) o[k] = a[k];
38
+ for (k in b) o[k] = b[k];
39
+ return o;
40
+ }
41
+ function mh(a, b) {
42
+ var k, o = {};
43
+ if (window.Headers) {
44
+ try {
45
+ o = new Headers(a || {});
46
+ for (k in b) o.set(k, b[k]);
47
+ return o;
48
+ } catch (_) {}
49
+ }
50
+ a = a || {};
51
+ for (k in a) o[k] = a[k];
52
+ for (k in b) o[k] = b[k];
53
+ return o;
54
+ }
55
+ function af(u, o, d) {
56
+ o = o || {};
57
+ if (!rf) return Promise.reject(Error('Fetch unsupported'));
58
+ return rf(u, ext(o, {headers: mh(o.headers || (u && u.headers), same(u) && d ? hdr(d) : {})}));
59
+ }
60
+ function gf(u, o) {
61
+ o = o || {};
62
+ return af(u, o).then(function (r) {
63
+ if (r.status !== 401 || o.micrOSAuth === false || !same(u)) return r;
64
+ var d = load();
65
+ if (d.pass) {
66
+ return af(u, o, d).then(function (rr) {
67
+ if (rr.status !== 401) return rr;
68
+ clear();
69
+ return prompt({target: u, request: o, message: 'Auth required', ok: function (pr) { return pr; }});
70
+ });
71
+ }
72
+ return prompt({target: u, request: o, message: 'Auth required', ok: function (rr) { return rr; }});
73
+ });
74
+ }
75
+ function css() {
76
+ if (document.getElementById(ID + 'Style')) return;
77
+ var s = document.createElement('style');
78
+ s.id = ID + 'Style';
79
+ s.textContent = '#' + ID + '{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#0009;font:14px sans-serif;color:#fff}#' + ID + ' form{display:flex;flex-direction:column;width:240px;max-width:90%;padding:14px;border:1px solid #555;border-radius:6px;background:#161022}#' + ID + ' input,#' + ID + ' button{display:block;width:100%;min-width:0;max-width:none;flex:none;height:32px;min-height:32px;margin:8px 0 0;border-radius:4px;border:1px solid #555;padding:0 9px;box-sizing:border-box;font:14px sans-serif}#' + ID + ' input{background:#241a36;color:#fff}#' + ID + ' button{background:#17823a;color:#fff;font-weight:bold}#' + ID + ' span{min-height:18px;margin-top:6px;color:#ff9a9a}#' + ID + ' pre{white-space:pre-wrap;word-break:break-word}';
80
+ (document.head || document.getElementsByTagName('head')[0]).appendChild(s);
81
+ }
82
+ function prompt(o) {
83
+ o = o || {};
84
+ css();
85
+ rm(document.getElementById(ID));
86
+ var d = load(), p = document.createElement('div'), f, e, m, t;
87
+ p.id = ID;
88
+ p.innerHTML = '<form><strong>micrOS Auth</strong><input name="user" autocomplete="username" placeholder="Username"><input name="pass" type="password" autocomplete="current-password" placeholder="Password"><button>Unlock</button><span></span></form>';
89
+ f = p.getElementsByTagName('form')[0];
90
+ e = f.elements;
91
+ m = p.getElementsByTagName('span')[0];
92
+ t = o.target || location.pathname;
93
+ e.user.value = d.user || 'admin';
94
+ m.textContent = o.message || '';
95
+ return new Promise(function (resolve, reject) {
96
+ f.onsubmit = function (ev) {
97
+ ev.preventDefault();
98
+ var n = {user: e.user.value || 'admin', pass: e.pass.value || ''};
99
+ af(t, o.request || {}, n).then(function (r) {
100
+ if (r.status === 401) {
101
+ m.textContent = 'Access denied';
102
+ return;
103
+ }
104
+ save(n);
105
+ if (o.ok) {
106
+ rm(p);
107
+ resolve(o.ok(r, n));
108
+ return;
109
+ }
110
+ r.text().then(function (body) {
111
+ if ((r.headers.get('content-type') || '').indexOf('text/html') >= 0) {
112
+ document.open();
113
+ document.write(body);
114
+ document.close();
115
+ } else {
116
+ p.removeAttribute('id');
117
+ p.innerHTML = '<pre></pre>';
118
+ p.getElementsByTagName('pre')[0].textContent = body;
119
+ }
120
+ resolve(r);
121
+ });
122
+ }).catch(function (err) {
123
+ m.textContent = 'Request failed';
124
+ reject(err);
125
+ });
126
+ };
127
+ document.body.appendChild(p);
128
+ e.pass.focus();
129
+ });
130
+ }
131
+ function ready(fn) {
132
+ if (document.body) fn();
133
+ else document.addEventListener('DOMContentLoaded', fn);
134
+ }
135
+
136
+ var ss = document.getElementsByTagName('script');
137
+ var me = document.currentScript || ss[ss.length - 1];
138
+ var boot = me && me.getAttribute('data-micros-auth');
139
+ window.micrOSAuth = {load: load, save: save, clear: clear, headers: hdr, fetch: gf, prompt: prompt};
140
+ if (rf) window.fetch = gf;
141
+ if (boot) ready(function () { prompt({target: boot === '1' ? location.pathname : boot}); });
142
+ })();