micrOSDevToolKit 2.1.5__py3-none-any.whl → 2.26.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- env/driver_cp210x/.DS_Store +0 -0
- env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +17 -1
- micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +191 -151
- micrOS/source/Auth.py +37 -0
- micrOS/source/Common.py +376 -102
- micrOS/source/Config.py +55 -25
- micrOS/source/Debug.py +54 -193
- micrOS/source/Espnow.py +404 -0
- micrOS/source/Files.py +207 -0
- micrOS/source/Hooks.py +88 -16
- micrOS/source/InterConnect.py +130 -46
- micrOS/source/Interrupts.py +8 -8
- micrOS/source/Logger.py +131 -0
- micrOS/source/Network.py +41 -21
- micrOS/source/Notify.py +74 -198
- micrOS/source/Pacman.py +326 -0
- micrOS/source/Scheduler.py +18 -55
- micrOS/source/Server.py +84 -217
- micrOS/source/Shell.py +103 -93
- micrOS/source/Tasks.py +239 -173
- micrOS/source/Time.py +21 -22
- micrOS/source/Types.py +89 -54
- micrOS/source/Web.py +485 -0
- micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- micrOS/source/helpers.py +132 -0
- micrOS/source/micrOS.py +25 -21
- micrOS/source/micrOSloader.py +14 -23
- micrOS/source/microIO.py +94 -57
- toolkit/simulator_lib/LP_darwin.py → micrOS/source/modules/IO_esp32.py +22 -11
- micrOS/source/{IO_esp32c3.py → modules/IO_esp32c3.py} +6 -1
- micrOS/source/modules/IO_esp32c6.py +38 -0
- micrOS/source/{IO_esp32s2.py → modules/IO_esp32s2.py} +6 -1
- micrOS/source/{IO_esp32s3.py → modules/IO_esp32s3.py} +43 -2
- micrOS/source/modules/IO_m5stamp.py +86 -0
- micrOS/source/{IO_qtpy.py → modules/IO_qtpy.py} +28 -18
- micrOS/source/{IO_tinypico.py → modules/IO_tinypico.py} +48 -3
- micrOS/source/modules/LM_L298N.py +161 -0
- {toolkit/workspace/precompiled → micrOS/source/modules}/LM_L9110_DCmotor.py +4 -4
- micrOS/source/{LM_OV2640.py → modules/LM_OV2640.py} +53 -42
- micrOS/source/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
- micrOS/source/{LM_aht10.py → modules/LM_aht10.py} +12 -4
- micrOS/source/{LM_bme280.py → modules/LM_bme280.py} +13 -25
- micrOS/source/{LM_buzzer.py → modules/LM_buzzer.py} +42 -40
- micrOS/source/{LM_cct.py → modules/LM_cct.py} +22 -27
- micrOS/source/modules/LM_cluster.py +255 -0
- micrOS/source/{LM_co2.py → modules/LM_co2.py} +13 -6
- micrOS/source/{LM_dht11.py → modules/LM_dht11.py} +13 -29
- micrOS/source/{LM_dht22.py → modules/LM_dht22.py} +13 -28
- micrOS/source/{LM_dimmer.py → modules/LM_dimmer.py} +19 -16
- micrOS/source/modules/LM_distance.py +135 -0
- micrOS/source/{LM_ds18.py → modules/LM_ds18.py} +12 -4
- micrOS/source/{LM_esp32.py → modules/LM_esp32.py} +16 -4
- micrOS/source/modules/LM_espnow.py +53 -0
- micrOS/source/modules/LM_fileserver.py +265 -0
- micrOS/source/{LM_gameOfLife.py → modules/LM_gameOfLife.py} +5 -5
- micrOS/source/{LM_genIO.py → modules/LM_genIO.py} +49 -35
- micrOS/source/modules/LM_haptic.py +111 -0
- micrOS/source/modules/LM_i2c.py +61 -0
- micrOS/source/{LM_i2s_mic.py → modules/LM_i2s_mic.py} +20 -23
- micrOS/source/{LM_ld2410.py → modules/LM_ld2410.py} +3 -3
- micrOS/source/{LM_light_sensor.py → modules/LM_light_sensor.py} +22 -26
- micrOS/source/modules/LM_mh_z19c.py +198 -0
- micrOS/source/modules/LM_neoeffects.py +284 -0
- micrOS/source/{LM_neopixel.py → modules/LM_neopixel.py} +26 -31
- micrOS/source/{LM_oled.py → modules/LM_oled.py} +28 -20
- micrOS/source/{LM_oled_sh1106.py → modules/LM_oled_sh1106.py} +28 -24
- micrOS/source/{LM_oled_ui.py → modules/LM_oled_ui.py} +132 -174
- micrOS/source/modules/LM_pacman.py +320 -0
- micrOS/source/{LM_presence.py → modules/LM_presence.py} +24 -36
- micrOS/source/modules/LM_qmi8658.py +204 -0
- micrOS/source/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
- micrOS/source/modules/LM_rest.py +81 -0
- micrOS/source/{LM_rgb.py → modules/LM_rgb.py} +25 -34
- micrOS/source/{LM_rgbcct.py → modules/LM_rgbcct.py} +5 -5
- micrOS/source/{LM_roboarm.py → modules/LM_roboarm.py} +37 -45
- micrOS/source/modules/LM_robustness.py +137 -0
- micrOS/source/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
- micrOS/source/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
- micrOS/source/{LM_servo.py → modules/LM_servo.py} +4 -4
- micrOS/source/modules/LM_sound_event.py +751 -0
- micrOS/source/{LM_stepper.py → modules/LM_stepper.py} +8 -8
- micrOS/source/{LM_switch.py → modules/LM_switch.py} +21 -18
- micrOS/source/{LM_system.py → modules/LM_system.py} +96 -59
- micrOS/source/modules/LM_tcs3472.py +187 -0
- micrOS/source/modules/LM_telegram.py +388 -0
- micrOS/source/modules/LM_trackball.py +287 -0
- micrOS/source/modules/LM_veml7700.py +159 -0
- micrOS/source/modules/LM_web.py +38 -0
- micrOS/source/urequests.py +204 -91
- {toolkit/workspace/precompiled → micrOS/source/web}/dashboard.html +9 -4
- micrOS/source/web/editor.js +440 -0
- micrOS/source/web/filesui.html +178 -0
- micrOS/source/web/filesui.js +338 -0
- micrOS/source/{index.html → web/index.html} +44 -2
- micrOS/source/web/uapi.js +103 -0
- micrOS/source/web/udashboard.js +129 -0
- micrOS/source/web/ustyle.css +55 -0
- micrOS/source/web/uwidgets.js +172 -0
- micrOS/source/web/uwidgets_pro.js +99 -0
- micrOS/utests/__init__.py +0 -0
- micrOS/utests/test_scheduler.py +435 -0
- {micrOSDevToolKit-2.1.5.data → microsdevtoolkit-2.26.1.data}/scripts/devToolKit.py +47 -4
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/METADATA +392 -279
- microsdevtoolkit-2.26.1.dist-info/RECORD +396 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/WHEEL +1 -1
- toolkit/DevEnvCompile.py +63 -33
- toolkit/DevEnvOTA.py +72 -22
- toolkit/DevEnvUSB.py +147 -77
- toolkit/Gateway.py +9 -9
- toolkit/LM_to_compile.dat +12 -4
- toolkit/MicrOSDevEnv.py +129 -51
- toolkit/WebRepl.py +73 -0
- toolkit/dashboard_apps/BackupRestore.py +171 -0
- toolkit/dashboard_apps/CCTDemo.py +12 -17
- toolkit/dashboard_apps/CCTTest.py +20 -24
- toolkit/dashboard_apps/CamStream.py +2 -6
- toolkit/dashboard_apps/CatGame.py +14 -16
- toolkit/dashboard_apps/Dimmer.py +11 -21
- toolkit/dashboard_apps/GetVersion.py +11 -19
- toolkit/dashboard_apps/MicrophoneTest.py +2 -7
- toolkit/dashboard_apps/NeoEffectsDemo.py +22 -35
- toolkit/dashboard_apps/NeopixelTest.py +20 -25
- toolkit/dashboard_apps/PresenceTest.py +2 -8
- toolkit/dashboard_apps/QMI8685_GYRO.py +68 -0
- toolkit/dashboard_apps/RGBTest.py +20 -24
- toolkit/dashboard_apps/RoboArm.py +24 -32
- toolkit/dashboard_apps/SED_test.py +10 -14
- toolkit/dashboard_apps/SensorsTest.py +61 -0
- toolkit/dashboard_apps/SystemTest.py +219 -117
- toolkit/dashboard_apps/Template_app.py +12 -19
- toolkit/dashboard_apps/_app_base.py +34 -0
- toolkit/dashboard_apps/_gyro_visualizer.py +78 -0
- toolkit/dashboard_apps/uLightDemo.py +15 -24
- toolkit/index.html +6 -5
- toolkit/lib/LocalMachine.py +6 -1
- toolkit/lib/MicrosFiles.py +46 -0
- toolkit/lib/Repository.py +64 -0
- toolkit/lib/TerminalColors.py +4 -0
- toolkit/lib/macroScript.py +371 -0
- toolkit/lib/micrOSClient.py +124 -51
- toolkit/lib/micrOSClientHistory.py +156 -0
- toolkit/lib/pip_package_installer.py +31 -4
- toolkit/micrOSdashboard.py +16 -21
- toolkit/micrOSlint.py +28 -10
- toolkit/simulator_lib/.DS_Store +0 -0
- micrOS/source/IO_esp32.py → toolkit/simulator_lib/IO_darwin.py +3 -0
- toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- toolkit/simulator_lib/aioespnow.py +28 -0
- toolkit/simulator_lib/camera.py +84 -0
- toolkit/simulator_lib/dht.py +1 -1
- toolkit/simulator_lib/framebuf.py +49 -1
- toolkit/simulator_lib/machine.py +32 -2
- toolkit/simulator_lib/micropython.py +3 -3
- toolkit/simulator_lib/mip.py +165 -0
- toolkit/simulator_lib/neopixel.py +3 -2
- toolkit/simulator_lib/network.py +2 -1
- toolkit/simulator_lib/node_config.json +2 -3
- toolkit/simulator_lib/ntptime.py +1 -1
- toolkit/simulator_lib/{sim_console.py → sim_common.py} +2 -3
- toolkit/simulator_lib/simgc.py +6 -2
- toolkit/simulator_lib/simulator.py +138 -46
- toolkit/simulator_lib/uasyncio.py +34 -3
- toolkit/simulator_lib/uos.py +147 -0
- toolkit/simulator_lib/urandom.py +4 -0
- toolkit/simulator_lib/usocket.py +5 -1
- toolkit/simulator_lib/view01.jpg +0 -0
- toolkit/simulator_lib/view02.jpg +0 -0
- toolkit/socketClient.py +43 -23
- toolkit/user_data/webhooks/generic.py +1 -1
- toolkit/user_data/webhooks/macro.py +44 -0
- toolkit/user_data/webhooks/template.macro +20 -0
- toolkit/user_data/webhooks/template.py +1 -1
- toolkit/workspace/precompiled/Auth.mpy +0 -0
- toolkit/workspace/precompiled/Common.mpy +0 -0
- toolkit/workspace/precompiled/Config.mpy +0 -0
- toolkit/workspace/precompiled/Debug.mpy +0 -0
- toolkit/workspace/precompiled/Espnow.mpy +0 -0
- toolkit/workspace/precompiled/Files.mpy +0 -0
- toolkit/workspace/precompiled/Hooks.mpy +0 -0
- toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- toolkit/workspace/precompiled/Logger.mpy +0 -0
- toolkit/workspace/precompiled/Network.mpy +0 -0
- toolkit/workspace/precompiled/Notify.mpy +0 -0
- toolkit/workspace/precompiled/Pacman.mpy +0 -0
- toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- toolkit/workspace/precompiled/Server.mpy +0 -0
- toolkit/workspace/precompiled/Shell.mpy +0 -0
- toolkit/workspace/precompiled/Tasks.mpy +0 -0
- toolkit/workspace/precompiled/Time.mpy +0 -0
- toolkit/workspace/precompiled/Types.mpy +0 -0
- toolkit/workspace/precompiled/Web.mpy +0 -0
- toolkit/workspace/precompiled/_mpy.version +1 -1
- toolkit/workspace/precompiled/config/_git.keep +0 -0
- toolkit/workspace/precompiled/helpers.mpy +0 -0
- toolkit/workspace/precompiled/micrOS.mpy +0 -0
- toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- toolkit/workspace/precompiled/microIO.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
- {micrOS/source → toolkit/workspace/precompiled/modules}/LM_L9110_DCmotor.py +4 -4
- toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
- toolkit/workspace/precompiled/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
- toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- toolkit/workspace/precompiled/{LM_buzzer.mpy → modules/LM_buzzer.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- toolkit/workspace/precompiled/{LM_esp32.py → modules/LM_esp32.py} +16 -4
- toolkit/workspace/precompiled/modules/LM_espnow.py +53 -0
- toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- toolkit/workspace/precompiled/{LM_gameOfLife.mpy → modules/LM_gameOfLife.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_i2c.py +61 -0
- toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- toolkit/workspace/precompiled/{LM_ld2410.mpy → modules/LM_ld2410.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_mh_z19c.py +198 -0
- toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_qmi8658.py +204 -0
- toolkit/workspace/precompiled/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
- toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- toolkit/workspace/precompiled/{LM_rgbcct.mpy → modules/LM_rgbcct.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_robustness.py +137 -0
- toolkit/workspace/precompiled/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
- toolkit/workspace/precompiled/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
- toolkit/workspace/precompiled/{LM_servo.mpy → modules/LM_servo.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
- toolkit/workspace/precompiled/{LM_stepper.mpy → modules/LM_stepper.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_tcs3472.py +187 -0
- toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/{LM_tinyrgb.mpy → modules/LM_tinyrgb.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- toolkit/workspace/precompiled/urequests.mpy +0 -0
- {micrOS/source → toolkit/workspace/precompiled/web}/dashboard.html +9 -4
- toolkit/workspace/precompiled/web/editor.js +440 -0
- toolkit/workspace/precompiled/web/filesui.html +178 -0
- toolkit/workspace/precompiled/web/filesui.js +338 -0
- toolkit/workspace/precompiled/{index.html → web/index.html} +44 -2
- toolkit/workspace/precompiled/web/uapi.js +103 -0
- toolkit/workspace/precompiled/web/udashboard.js +129 -0
- toolkit/workspace/precompiled/web/ustyle.css +55 -0
- toolkit/workspace/precompiled/web/uwidgets.js +172 -0
- toolkit/workspace/precompiled/web/uwidgets_pro.js +99 -0
- env/driver_cp210x/CH34XSER_MAC/CH34X_DRV_INSTALL_INSTRUCTIONS.pdf +0 -0
- env/driver_cp210x/CH34XSER_MAC/CH34xVCPDriver.pkg +0 -0
- micrOS/micropython/esp32-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/esp32c3-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32c3-GENERIC-20240222-v1.22.2.bin +0 -0
- micrOS/micropython/esp32s2-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
- micrOS/micropython/esp32s3-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/rpi-pico-w-20231005-v1.21.0.uf2 +0 -0
- micrOS/micropython/tinypico-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/tinypico-usbc-UM-20240105-v1.22.1.bin +0 -0
- micrOS/source/LM_L298N_DCmotor.py +0 -86
- micrOS/source/LM_catgame.py +0 -74
- micrOS/source/LM_dashboard_be.py +0 -37
- micrOS/source/LM_demo.py +0 -85
- micrOS/source/LM_distance.py +0 -88
- micrOS/source/LM_i2c.py +0 -44
- micrOS/source/LM_intercon.py +0 -57
- micrOS/source/LM_keychain.py +0 -318
- micrOS/source/LM_lmpacman.py +0 -126
- micrOS/source/LM_neoeffects.py +0 -327
- micrOS/source/LM_pet_feeder.py +0 -76
- micrOS/source/LM_ph_sensor.py +0 -51
- micrOS/source/LM_rest.py +0 -40
- micrOS/source/LM_robustness.py +0 -73
- micrOS/source/LM_telegram.py +0 -96
- micrOS/source/reset.py +0 -11
- micrOS/source/uapi.js +0 -76
- micrOS/source/udashboard.js +0 -137
- micrOS/source/ustyle.css +0 -28
- micrOS/source/uwidgets.js +0 -179
- micrOSDevToolKit-2.1.5.dist-info/RECORD +0 -337
- toolkit/dashboard_apps/AirQualityBME280.py +0 -36
- toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -36
- toolkit/lib/file_extensions.py +0 -16
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-38.pyc +0 -0
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-39.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
- toolkit/workspace/precompiled/IO_esp32.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32c3.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32s2.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
- toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
- toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
- toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
- toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
- toolkit/workspace/precompiled/LM_aht10.mpy +0 -0
- toolkit/workspace/precompiled/LM_bme280.mpy +0 -0
- toolkit/workspace/precompiled/LM_catgame.py +0 -74
- toolkit/workspace/precompiled/LM_cct.mpy +0 -0
- toolkit/workspace/precompiled/LM_co2.mpy +0 -0
- toolkit/workspace/precompiled/LM_dashboard_be.py +0 -37
- toolkit/workspace/precompiled/LM_demo.py +0 -85
- toolkit/workspace/precompiled/LM_dht11.mpy +0 -0
- toolkit/workspace/precompiled/LM_dht22.mpy +0 -0
- toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
- toolkit/workspace/precompiled/LM_distance.py +0 -88
- toolkit/workspace/precompiled/LM_ds18.mpy +0 -0
- toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
- toolkit/workspace/precompiled/LM_i2c.py +0 -44
- toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
- toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
- toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
- toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
- toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
- toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_sh1106.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/LM_pet_feeder.py +0 -76
- toolkit/workspace/precompiled/LM_ph_sensor.py +0 -51
- toolkit/workspace/precompiled/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/LM_rest.mpy +0 -0
- toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
- toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
- toolkit/workspace/precompiled/LM_robustness.py +0 -73
- toolkit/workspace/precompiled/LM_switch.mpy +0 -0
- toolkit/workspace/precompiled/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/reset.mpy +0 -0
- toolkit/workspace/precompiled/uapi.js +0 -76
- toolkit/workspace/precompiled/udashboard.js +0 -137
- toolkit/workspace/precompiled/ustyle.css +0 -28
- toolkit/workspace/precompiled/uwidgets.js +0 -179
- /toolkit/user_data/node_config_archive/.include → /micrOS/source/config/_git.keep +0 -0
- /micrOS/source/{IO_rp2.py → modules/IO_rp2.py} +0 -0
- /micrOS/source/{LM_tinyrgb.py → modules/LM_tinyrgb.py} +0 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info/licenses}/LICENSE +0 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/top_level.txt +0 -0
micrOS/source/Shell.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Module is responsible for shell like environment
|
|
3
3
|
dedicated to micrOS framework.
|
|
4
4
|
Built-in-function:
|
|
5
|
-
- Shell wrapper for
|
|
5
|
+
- Shell wrapper for lm_exec interface
|
|
6
6
|
- Configuration handling interface - state machine handling
|
|
7
7
|
- Help (runtime) message generation
|
|
8
8
|
|
|
@@ -11,12 +11,12 @@ Designed by Marcell Ban aka BxNxM
|
|
|
11
11
|
#################################################################
|
|
12
12
|
# IMPORTS #
|
|
13
13
|
#################################################################
|
|
14
|
-
from os import listdir
|
|
15
14
|
from sys import modules
|
|
16
15
|
from machine import reset as hard_reset, soft_reset
|
|
17
16
|
from Config import cfgget, cfgput
|
|
17
|
+
from Files import OSPath, ilist_fs, path_join
|
|
18
18
|
from Tasks import lm_exec
|
|
19
|
-
from Debug import
|
|
19
|
+
from Debug import syslog
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
#################################################################
|
|
@@ -24,7 +24,8 @@ from Debug import errlog_add
|
|
|
24
24
|
#################################################################
|
|
25
25
|
|
|
26
26
|
class Shell:
|
|
27
|
-
|
|
27
|
+
__slots__ = ['__devfid', '__auth_mode', '__hwuid', '__auth_ok', '__conf_mode']
|
|
28
|
+
MICROS_VERSION = '2.26.1-0'
|
|
28
29
|
|
|
29
30
|
def __init__(self):
|
|
30
31
|
"""
|
|
@@ -42,57 +43,53 @@ class Shell:
|
|
|
42
43
|
try:
|
|
43
44
|
cfgput('version', Shell.MICROS_VERSION)
|
|
44
45
|
except Exception as e:
|
|
45
|
-
|
|
46
|
+
syslog(f"[ERR] micrOS version export failed (config): {e}")
|
|
46
47
|
|
|
47
|
-
def
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
"""
|
|
51
|
-
pass
|
|
48
|
+
async def a_send(self, msg):
|
|
49
|
+
""" Must be defined by child class... """
|
|
50
|
+
raise NotImplementedError("Child class must implement a_send method")
|
|
52
51
|
|
|
53
52
|
def reset(self):
|
|
54
53
|
"""Reset shell state"""
|
|
55
54
|
self.__auth_ok = False
|
|
56
55
|
self.__conf_mode = False
|
|
57
56
|
|
|
58
|
-
def reboot(self, hard=False):
|
|
59
|
-
"""Reboot micropython VM"""
|
|
60
|
-
self.
|
|
61
|
-
self.send("Bye!")
|
|
57
|
+
async def reboot(self, hard=False):
|
|
58
|
+
""" Reboot micropython VM """
|
|
59
|
+
await self.a_send(f"{'[HARD] ' if hard else ''}Reboot micrOS system.\nBye!")
|
|
62
60
|
if hard:
|
|
63
61
|
hard_reset()
|
|
64
62
|
soft_reset()
|
|
65
63
|
|
|
66
64
|
def prompt(self):
|
|
67
|
-
"""Generate prompt"""
|
|
65
|
+
""" Generate prompt """
|
|
68
66
|
auth = "[password] " if self.__auth_mode and not self.__auth_ok else ""
|
|
69
67
|
mode = "[configure] " if self.__conf_mode else ""
|
|
70
68
|
return f"{auth}{mode}{self.__devfid} $ "
|
|
71
69
|
|
|
72
|
-
def __auth(self, msg_list):
|
|
73
|
-
"""Authorize user"""
|
|
70
|
+
async def __auth(self, msg_list):
|
|
71
|
+
""" Authorize user """
|
|
74
72
|
# Set user auth state
|
|
75
73
|
if self.__auth_mode and not self.__auth_ok:
|
|
76
74
|
# check password
|
|
77
|
-
|
|
78
|
-
if usrpwd == msg_list[0].strip():
|
|
75
|
+
if cfgget('appwd') == msg_list[0].strip():
|
|
79
76
|
self.__auth_ok = True
|
|
80
|
-
self.
|
|
77
|
+
await self.a_send("AuthOk")
|
|
81
78
|
return True, []
|
|
82
|
-
self.
|
|
79
|
+
await self.a_send("AuthFailed\nBye!")
|
|
83
80
|
return False, []
|
|
84
81
|
return True, msg_list
|
|
85
82
|
|
|
86
|
-
def shell(self, msg):
|
|
83
|
+
async def shell(self, msg):
|
|
87
84
|
"""
|
|
88
85
|
micrOS Shell main - input string handling
|
|
89
86
|
:param msg: incoming shell command (command or load module call)
|
|
90
87
|
"""
|
|
91
|
-
state = self.__shell(msg)
|
|
92
|
-
self.
|
|
88
|
+
state = await self.__shell(msg)
|
|
89
|
+
await self.a_send(self.prompt())
|
|
93
90
|
return state
|
|
94
91
|
|
|
95
|
-
def __shell(self, msg):
|
|
92
|
+
async def __shell(self, msg):
|
|
96
93
|
"""
|
|
97
94
|
Socket server - interpreter shell
|
|
98
95
|
:param msg: socket input string
|
|
@@ -108,6 +105,8 @@ class Shell:
|
|
|
108
105
|
# No msg to work with
|
|
109
106
|
return True
|
|
110
107
|
msg_list = msg.strip().split()
|
|
108
|
+
# INTERCON embedding: conf mode and remote call request check
|
|
109
|
+
is_local_cmd = self.__conf_mode or not msg_list[-1].startswith(">>")
|
|
111
110
|
|
|
112
111
|
##########################################
|
|
113
112
|
# [1] Handle built-in shell commands #
|
|
@@ -115,75 +114,80 @@ class Shell:
|
|
|
115
114
|
##########################################
|
|
116
115
|
|
|
117
116
|
# Hello message
|
|
118
|
-
if msg_list[0] == 'hello':
|
|
117
|
+
if is_local_cmd and msg_list[0] == 'hello':
|
|
119
118
|
# For low level device identification - hello msg
|
|
120
|
-
self.
|
|
119
|
+
await self.a_send(f"hello:{self.__devfid}:{self.__hwuid}")
|
|
121
120
|
return True
|
|
122
121
|
|
|
123
122
|
# [!] AUTH
|
|
124
|
-
state, msg_list = self.__auth(msg_list)
|
|
123
|
+
state, msg_list = await self.__auth(msg_list)
|
|
125
124
|
if not state:
|
|
126
125
|
return False
|
|
127
126
|
if len(msg_list) == 0:
|
|
128
127
|
return True
|
|
129
128
|
|
|
130
129
|
# Version handling
|
|
131
|
-
if msg_list[0] == 'version':
|
|
130
|
+
if is_local_cmd and msg_list[0] == 'version':
|
|
132
131
|
# For micrOS system version info
|
|
133
|
-
self.
|
|
132
|
+
await self.a_send(str(Shell.MICROS_VERSION))
|
|
134
133
|
return True
|
|
135
134
|
|
|
136
135
|
# Reboot micropython VM
|
|
137
|
-
if msg_list[0] == 'reboot':
|
|
136
|
+
if is_local_cmd and msg_list[0] == 'reboot':
|
|
138
137
|
hard = False
|
|
139
138
|
if len(msg_list) >= 2 and "-h" in msg_list[1]:
|
|
140
139
|
# reboot / reboot -h
|
|
141
140
|
hard = True
|
|
142
|
-
self.reboot(hard)
|
|
141
|
+
await self.reboot(hard)
|
|
143
142
|
|
|
144
|
-
if msg_list[0].startswith('webrepl'):
|
|
143
|
+
if is_local_cmd and msg_list[0].startswith('webrepl'):
|
|
145
144
|
if len(msg_list) == 2 and '-u' in msg_list[1]:
|
|
146
|
-
Shell.webrepl(msg_obj=self.
|
|
147
|
-
Shell.webrepl(msg_obj=self.
|
|
145
|
+
await Shell.webrepl(msg_obj=self.a_send, update=True)
|
|
146
|
+
return await Shell.webrepl(msg_obj=self.a_send)
|
|
148
147
|
|
|
149
148
|
# CONFIGURE MODE STATE: ACCESS FOR NODE_CONFIG.JSON
|
|
150
|
-
if msg_list[0].startswith('conf'):
|
|
149
|
+
if is_local_cmd and msg_list[0].startswith('conf'):
|
|
151
150
|
self.__conf_mode = True
|
|
152
151
|
return True
|
|
153
|
-
if msg_list[0].startswith('noconf'):
|
|
152
|
+
if is_local_cmd and msg_list[0].startswith('noconf'):
|
|
154
153
|
self.__conf_mode = False
|
|
155
154
|
return True
|
|
156
155
|
|
|
157
156
|
# HELP MSG
|
|
158
|
-
if msg_list[0] == "help":
|
|
159
|
-
self.
|
|
160
|
-
self.
|
|
161
|
-
self.
|
|
162
|
-
self.
|
|
163
|
-
self.
|
|
164
|
-
self.
|
|
165
|
-
self.
|
|
166
|
-
self.
|
|
167
|
-
self.
|
|
168
|
-
self.
|
|
169
|
-
self.
|
|
170
|
-
self.
|
|
171
|
-
self.
|
|
172
|
-
self.
|
|
173
|
-
self.
|
|
174
|
-
self.
|
|
175
|
-
self.
|
|
176
|
-
self.
|
|
177
|
-
self.
|
|
157
|
+
if is_local_cmd and msg_list[0] == "help":
|
|
158
|
+
await self.a_send("[MICROS]")
|
|
159
|
+
await self.a_send(" hello - hello msg - for device identification")
|
|
160
|
+
await self.a_send(" modules - show active Load Modules")
|
|
161
|
+
await self.a_send(" version - returns micrOS version")
|
|
162
|
+
await self.a_send(" exit - exit shell session")
|
|
163
|
+
await self.a_send(" reboot - system soft reboot (vm), hard reboot (hw): reboot -h")
|
|
164
|
+
await self.a_send(" webrepl - start webrepl, for file transfers use with --update")
|
|
165
|
+
await self.a_send("[CONF] Configuration mode")
|
|
166
|
+
await self.a_send(" conf - Enter conf mode")
|
|
167
|
+
await self.a_send(" dump - Dump all data, filter: dump <str>")
|
|
168
|
+
await self.a_send(" key - Get value")
|
|
169
|
+
await self.a_send(" key value - Set value")
|
|
170
|
+
await self.a_send(" noconf - Exit conf mode")
|
|
171
|
+
await self.a_send("[TASK] Task operations")
|
|
172
|
+
await self.a_send(" task list - list tasks by tags")
|
|
173
|
+
await self.a_send(" task kill <tag> - stop task")
|
|
174
|
+
await self.a_send(" task show <tag> - show task output")
|
|
175
|
+
await self.a_send("[EXEC] Command mode, syntax(...): <module> <function> <params> <postfix>")
|
|
176
|
+
await self.a_send(" Postfix hints:")
|
|
177
|
+
await self.a_send(" ... &<x> - start one-shot task")
|
|
178
|
+
await self.a_send(" ... &&<x> - start periodic task, where <x>: delay ms [x min: 20ms]")
|
|
179
|
+
await self.a_send(" ... >json - request json formatted output")
|
|
180
|
+
await self.a_send(" ... >>hostname - remote command execution (intercon)")
|
|
181
|
+
await self.a_send(" help lm - list ALL available LoadModules")
|
|
178
182
|
if "lm" in str(msg_list):
|
|
179
|
-
return Shell._show_lm_funcs(msg_obj=self.
|
|
180
|
-
return Shell._show_lm_funcs(msg_obj=self.
|
|
183
|
+
return await Shell._show_lm_funcs(msg_obj=self.a_send)
|
|
184
|
+
return await Shell._show_lm_funcs(msg_obj=self.a_send, active_only=True)
|
|
181
185
|
|
|
182
186
|
# [2] EXECUTE:
|
|
183
187
|
# @1 Configure mode
|
|
184
|
-
if self.__conf_mode and len(msg_list) > 0:
|
|
188
|
+
if is_local_cmd and self.__conf_mode and len(msg_list) > 0:
|
|
185
189
|
# Lock thread under config handling is threads available
|
|
186
|
-
return Shell._configure(self.
|
|
190
|
+
return await Shell._configure(self.a_send, msg_list)
|
|
187
191
|
# @2 Command mode
|
|
188
192
|
"""
|
|
189
193
|
INPUT MSG STRUCTURE
|
|
@@ -192,43 +196,43 @@ class Shell:
|
|
|
192
196
|
"""
|
|
193
197
|
try:
|
|
194
198
|
# Execute command via InterpreterCore
|
|
195
|
-
self.
|
|
199
|
+
await self.a_send(lm_exec(arg_list=msg_list)[1])
|
|
196
200
|
return True
|
|
197
201
|
except Exception as e:
|
|
198
|
-
self.
|
|
202
|
+
await self.a_send(f"[ERROR] shell.lm_exec internal error: {e}")
|
|
199
203
|
return False
|
|
200
204
|
|
|
201
205
|
#################################################################
|
|
202
206
|
# CONFIGURE MODE HANDLER #
|
|
203
207
|
#################################################################
|
|
204
208
|
@staticmethod
|
|
205
|
-
def _configure(msg_obj, msg_list):
|
|
209
|
+
async def _configure(msg_obj, msg_list):
|
|
206
210
|
"""
|
|
207
211
|
:param msg_obj: shell output stream function reference (write object)
|
|
208
212
|
:param msg_list: socket input param list
|
|
209
213
|
:return: execution status
|
|
210
214
|
"""
|
|
211
|
-
def dump():
|
|
215
|
+
async def dump():
|
|
212
216
|
nonlocal msg_obj, msg_list
|
|
213
217
|
if msg_list[0] == 'dump':
|
|
214
218
|
search = msg_list[1] if len(msg_list) == 2 else None
|
|
215
219
|
# DUMP DATA
|
|
216
220
|
for _key, value in cfgget().items():
|
|
217
221
|
if search is None or search in _key:
|
|
218
|
-
msg_obj(f" {_key}{' ' * (10 - len(_key))}:{' ' * 7} {value}")
|
|
222
|
+
await msg_obj(f" {_key}{' ' * (10 - len(_key))}:{' ' * 7} {value}")
|
|
219
223
|
return True
|
|
220
224
|
return False
|
|
221
225
|
|
|
222
226
|
# [CONFIG] Get value
|
|
223
227
|
if len(msg_list) == 1:
|
|
224
|
-
if dump(): # Simple dump without param filter
|
|
228
|
+
if await dump(): # Simple dump without param filter
|
|
225
229
|
return True
|
|
226
230
|
# GET SINGLE PARAMETER VALUE
|
|
227
|
-
msg_obj(cfgget(msg_list[0]))
|
|
231
|
+
await msg_obj(cfgget(msg_list[0]))
|
|
228
232
|
return True
|
|
229
233
|
# [CONFIG] Set value
|
|
230
234
|
if len(msg_list) >= 2:
|
|
231
|
-
if dump(): # Dump with search option
|
|
235
|
+
if await dump(): # Dump with search option
|
|
232
236
|
return True
|
|
233
237
|
# Deserialize params
|
|
234
238
|
key = msg_list[0]
|
|
@@ -236,67 +240,73 @@ class Shell:
|
|
|
236
240
|
try:
|
|
237
241
|
output = cfgput(key, " ".join(msg_list[1:]), type_check=True)
|
|
238
242
|
except Exception as e:
|
|
239
|
-
msg_obj(f"node_config write error: {e}")
|
|
243
|
+
await msg_obj(f"node_config write error: {e}")
|
|
240
244
|
output = False
|
|
241
245
|
# Evaluation and reply
|
|
242
|
-
msg_obj('Saved' if output else 'Invalid key' if cfgget(key) is None else 'Failed to save')
|
|
246
|
+
await msg_obj('Saved' if output else 'Invalid key' if cfgget(key) is None else 'Failed to save')
|
|
243
247
|
return True
|
|
244
248
|
|
|
245
249
|
#################################################################
|
|
246
250
|
# COMMAND MODE & LMS HANDLER #
|
|
247
251
|
#################################################################
|
|
248
252
|
@staticmethod
|
|
249
|
-
def _show_lm_funcs(msg_obj, active_only=False):
|
|
253
|
+
async def _show_lm_funcs(msg_obj, active_only=False):
|
|
250
254
|
"""
|
|
251
255
|
Dump LM modules with functions - in case of [py] files
|
|
252
256
|
Dump LM module with help function call - in case of [mpy] files
|
|
253
257
|
"""
|
|
254
|
-
def _help(
|
|
255
|
-
|
|
258
|
+
async def _help(mods):
|
|
259
|
+
nonlocal mpath
|
|
260
|
+
for lm_path in mods:
|
|
256
261
|
lm_name = lm_path.replace('LM_', '').split('.')[0]
|
|
257
262
|
try:
|
|
258
|
-
msg_obj(f"
|
|
263
|
+
await msg_obj(f" {lm_name}")
|
|
259
264
|
if lm_path.endswith('.mpy'):
|
|
260
|
-
msg_obj(f"
|
|
265
|
+
await msg_obj(f" {' ' * len(lm_path.replace('LM_', '').split('.')[0])}help")
|
|
261
266
|
continue
|
|
262
|
-
with open(lm_path, 'r') as f:
|
|
267
|
+
with open(path_join(mpath, lm_path), 'r') as f:
|
|
263
268
|
line = "micrOSisTheBest"
|
|
264
269
|
while line:
|
|
265
270
|
line = f.readline()
|
|
266
|
-
|
|
267
|
-
|
|
271
|
+
ldata = line.strip()
|
|
272
|
+
if ldata.startswith('def ') and not ldata.split()[1].startswith("_") and 'self' not in ldata:
|
|
273
|
+
await msg_obj(f" {' ' * len(lm_name)}{ldata.replace('def ', '').split('(')[0]}")
|
|
268
274
|
except Exception as e:
|
|
269
|
-
msg_obj(f"[{lm_path}] SHOW LM PARSER WARNING: {e}")
|
|
275
|
+
await msg_obj(f"[{lm_path}] SHOW LM PARSER WARNING: {e}")
|
|
270
276
|
return False
|
|
271
277
|
return True
|
|
272
278
|
|
|
279
|
+
await msg_obj("")
|
|
273
280
|
# [1] list active modules (default in shell)
|
|
281
|
+
mpath = OSPath.MODULES
|
|
274
282
|
if active_only:
|
|
275
283
|
mod_keys = modules.keys()
|
|
276
|
-
active_modules = (dir_mod for dir_mod in
|
|
277
|
-
|
|
284
|
+
active_modules = (dir_mod for dir_mod in ilist_fs(path=mpath, type_filter='f', select="LM")
|
|
285
|
+
if dir_mod.split('.')[0] in mod_keys)
|
|
286
|
+
return await _help(active_modules)
|
|
278
287
|
# [2] list all LMs on file system (ALL - help lm) - manual
|
|
279
|
-
return _help(
|
|
288
|
+
return await _help(ilist_fs(path=mpath, type_filter='f', select="LM"))
|
|
280
289
|
|
|
281
290
|
@staticmethod
|
|
282
|
-
def webrepl(msg_obj, update=False):
|
|
291
|
+
async def webrepl(msg_obj, update=False):
|
|
283
292
|
from Network import ifconfig
|
|
284
293
|
|
|
285
|
-
msg_obj(" Start micropython WEBREPL - file transfer and debugging")
|
|
286
|
-
msg_obj(" [i] restart machine shortcut: import reset")
|
|
287
|
-
msg_obj(f" Connect over http://micropython.org/webrepl/#{ifconfig()[1][0]}:8266/")
|
|
288
|
-
msg_obj(f" \t[!] webrepl password: {cfgget('appwd')}")
|
|
294
|
+
await msg_obj(" Start micropython WEBREPL - file transfer and debugging")
|
|
295
|
+
await msg_obj(" [i] restart machine shortcut: import reset")
|
|
296
|
+
await msg_obj(f" Connect over http://micropython.org/webrepl/#{ifconfig()[1][0]}:8266/")
|
|
297
|
+
await msg_obj(f" \t[!] webrepl password: {cfgget('appwd')}")
|
|
289
298
|
if update:
|
|
290
|
-
msg_obj(" Restart node then start webrepl...")
|
|
291
|
-
msg_obj(" Bye!")
|
|
299
|
+
await msg_obj(" Restart node then start webrepl...")
|
|
300
|
+
await msg_obj(" Bye!")
|
|
292
301
|
# Set .if_mode->webrepl (start webrepl after reboot and poll update status...)
|
|
293
302
|
with open('.if_mode', 'w') as f:
|
|
294
303
|
f.write('webrepl')
|
|
295
304
|
hard_reset()
|
|
296
305
|
try:
|
|
297
306
|
import webrepl
|
|
298
|
-
msg_obj(webrepl.start(password=cfgget('appwd')))
|
|
307
|
+
await msg_obj(webrepl.start(password=cfgget('appwd')))
|
|
299
308
|
except Exception as e:
|
|
300
309
|
_err_msg = f"[ERR] while starting webrepl: {e}"
|
|
301
|
-
msg_obj(_err_msg)
|
|
302
|
-
|
|
310
|
+
await msg_obj(_err_msg)
|
|
311
|
+
syslog(_err_msg)
|
|
312
|
+
return True
|