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
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
from random import randint
|
|
2
|
-
from microIO import detect_platform
|
|
3
|
-
from Debug import console_write
|
|
4
|
-
from Time import uptime
|
|
5
|
-
|
|
6
|
-
CNT = 0
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def _debug(func):
|
|
10
|
-
"""
|
|
11
|
-
Debug wrapper
|
|
12
|
-
- console logging
|
|
13
|
-
- handled cmd counter (exec_info to get the value)
|
|
14
|
-
"""
|
|
15
|
-
def __wrapper(*args, **kwargs):
|
|
16
|
-
global CNT
|
|
17
|
-
CNT += 1
|
|
18
|
-
console_write("debug module cmd executed") # + Progress LED
|
|
19
|
-
return func(*args, **kwargs)
|
|
20
|
-
return __wrapper
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@_debug
|
|
24
|
-
def hello(name="MrNobody"):
|
|
25
|
-
return f"Hello {name}! This is a micrOS smart endpoint ☁️, running on {detect_platform()}.\
|
|
26
|
-
\nFor more info call `demo links` function :D"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
@_debug
|
|
30
|
-
def calculator(a, b, op="+"):
|
|
31
|
-
if op.strip() == "+":
|
|
32
|
-
return f"{a} + {b} = {a + b}"
|
|
33
|
-
if op.strip() == "-":
|
|
34
|
-
return f"{a} - {b} = {a - b}"
|
|
35
|
-
if op.strip() == "/":
|
|
36
|
-
return f"{a} / {b} = {round(a / b, 3)}"
|
|
37
|
-
if op.strip() == "*":
|
|
38
|
-
return f"{a} * {b} = {a * b}"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
@_debug
|
|
42
|
-
def dice_cube():
|
|
43
|
-
value = randint(1, 6)
|
|
44
|
-
return f"🎲 {value}"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
@_debug
|
|
48
|
-
def yes_no():
|
|
49
|
-
val = randint(0, 1)
|
|
50
|
-
return 'NO👎' if val == 0 else 'YES👍'
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
@_debug
|
|
54
|
-
def links():
|
|
55
|
-
descript = f"Platform: {detect_platform()}\nGITHUB: https://github.com/BxNxM/micrOS\nYOUTUBE: https://www.youtube.com/@micrOSframework\nINSTAGRAM: https://instagram.com/micros_framework"
|
|
56
|
-
return descript
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
@_debug
|
|
60
|
-
def source():
|
|
61
|
-
return 'https://github.com/BxNxM/micrOS/blob/master/micrOS/source/LM_demo.py'
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
@_debug
|
|
65
|
-
def exec_info():
|
|
66
|
-
global CNT
|
|
67
|
-
return f"Under {uptime()}: {CNT} cmd served."
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
@_debug
|
|
71
|
-
def help(widgets=False):
|
|
72
|
-
"""
|
|
73
|
-
[i] micrOS LM naming convention - built-in help message
|
|
74
|
-
:return tuple:
|
|
75
|
-
(widgets=False) list of functions implemented by this application
|
|
76
|
-
(widgets=True) list of widget json for UI generation
|
|
77
|
-
"""
|
|
78
|
-
return 'hello name="MrNobody"',\
|
|
79
|
-
'calculator a b op="+"',\
|
|
80
|
-
'\t=>op: + - / *',\
|
|
81
|
-
'dice_cube - show number, roll a dice',\
|
|
82
|
-
'yes_no - show random yes/no',\
|
|
83
|
-
'links - show micrOS links',\
|
|
84
|
-
'source - show demo module source code',\
|
|
85
|
-
'exec_info - Execution info, demo module usage'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
from machine import Pin, time_pulse_us
|
|
2
|
-
from utime import sleep_us
|
|
3
|
-
from microIO import physical_pin, pinmap_dump
|
|
4
|
-
|
|
5
|
-
__TRIGGER_OBJ = None
|
|
6
|
-
__ECHO_OBJ = None
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def __init_HCSR04():
|
|
10
|
-
global __TRIGGER_OBJ, __ECHO_OBJ
|
|
11
|
-
if __TRIGGER_OBJ is None or __ECHO_OBJ is None:
|
|
12
|
-
trigger_pin = physical_pin('hcsrtrig')
|
|
13
|
-
echo_pin = physical_pin('hcsrecho')
|
|
14
|
-
# Init trigger pin (out)
|
|
15
|
-
__TRIGGER_OBJ = Pin(trigger_pin, mode=Pin.OUT, pull=None)
|
|
16
|
-
__TRIGGER_OBJ.value(0)
|
|
17
|
-
# Init echo pin (in)
|
|
18
|
-
__ECHO_OBJ = Pin(echo_pin, mode=Pin.IN, pull=None)
|
|
19
|
-
return __TRIGGER_OBJ, __ECHO_OBJ
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def __send_pulse_and_wait(echo_timeout_us=1000000):
|
|
23
|
-
trigger_pin, echo_pin = __init_HCSR04()
|
|
24
|
-
trigger_pin.value(0) # Stabilize the sensor
|
|
25
|
-
sleep_us(5)
|
|
26
|
-
trigger_pin.value(1)
|
|
27
|
-
# Send a 10us pulse.
|
|
28
|
-
sleep_us(10)
|
|
29
|
-
trigger_pin.value(0)
|
|
30
|
-
try:
|
|
31
|
-
pulse_time = time_pulse_us(echo_pin, 1, echo_timeout_us)
|
|
32
|
-
return pulse_time
|
|
33
|
-
except OSError as ex:
|
|
34
|
-
if ex.args[0] == 110: # 110 = ETIMEDOUT
|
|
35
|
-
raise OSError('Out of range')
|
|
36
|
-
raise ex
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
#########################
|
|
40
|
-
# Application functions #
|
|
41
|
-
#########################
|
|
42
|
-
|
|
43
|
-
def distance_mm():
|
|
44
|
-
"""
|
|
45
|
-
To calculate the distance we get the pulse_time and divide it by 2
|
|
46
|
-
(the pulse walk the distance twice) and by 29.1 becasue
|
|
47
|
-
the sound speed on air (343.2 m/s), that It's equivalent to
|
|
48
|
-
0.34320 mm/us that is 1mm each 2.91us
|
|
49
|
-
pulse_time // 2 // 2.91 -> pulse_time // 5.82 -> pulse_time * 100 // 582
|
|
50
|
-
"""
|
|
51
|
-
return __send_pulse_and_wait() * 100 // 582
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def distance_cm():
|
|
55
|
-
return (__send_pulse_and_wait() / 2) / 29.1
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def deinit():
|
|
59
|
-
global __TRIGGER_OBJ, __ECHO_OBJ
|
|
60
|
-
trigger_pin, echo_pin = __init_HCSR04()
|
|
61
|
-
trigger_pin.deinit()
|
|
62
|
-
echo_pin.deinit()
|
|
63
|
-
__TRIGGER_OBJ = None
|
|
64
|
-
__ECHO_OBJ = None
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
#######################
|
|
68
|
-
# LM helper functions #
|
|
69
|
-
#######################
|
|
70
|
-
|
|
71
|
-
def pinmap():
|
|
72
|
-
"""
|
|
73
|
-
[i] micrOS LM naming convention
|
|
74
|
-
Shows logical pins - pin number(s) used by this Load module
|
|
75
|
-
- info which pins to use for this application
|
|
76
|
-
:return dict: pin name (str) - pin value (int) pairs
|
|
77
|
-
"""
|
|
78
|
-
return pinmap_dump(['hcsrtrig', 'hcsrecho'])
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def help(widgets=False):
|
|
82
|
-
"""
|
|
83
|
-
[i] micrOS LM naming convention - built-in help message
|
|
84
|
-
:return tuple:
|
|
85
|
-
(widgets=False) list of functions implemented by this application
|
|
86
|
-
(widgets=True) list of widget json for UI generation
|
|
87
|
-
"""
|
|
88
|
-
return 'distance_mm', 'distance_cm', 'deinit', 'pinmap'
|
|
Binary file
|
|
Binary file
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from microIO import physical_pin, pinmap_dump
|
|
2
|
-
|
|
3
|
-
__I2C = None
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def __init():
|
|
7
|
-
global __I2C
|
|
8
|
-
if __I2C is None:
|
|
9
|
-
from machine import Pin, I2C
|
|
10
|
-
__I2C = I2C(-1, Pin(physical_pin('i2c_scl')), Pin(physical_pin('i2c_sda')))
|
|
11
|
-
return __I2C
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def scan():
|
|
15
|
-
"""
|
|
16
|
-
I2C scan function - experimental
|
|
17
|
-
:return list: list of devices
|
|
18
|
-
"""
|
|
19
|
-
# https://docs.micropython.org/en/latest/library/machine.I2C.html
|
|
20
|
-
return __init().scan()
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
#######################
|
|
24
|
-
# LM helper functions #
|
|
25
|
-
#######################
|
|
26
|
-
|
|
27
|
-
def pinmap():
|
|
28
|
-
"""
|
|
29
|
-
[i] micrOS LM naming convention
|
|
30
|
-
Shows logical pins - pin number(s) used by this Load module
|
|
31
|
-
- info which pins to use for this application
|
|
32
|
-
:return dict: pin name (str) - pin value (int) pairs
|
|
33
|
-
"""
|
|
34
|
-
return pinmap_dump(['i2c_scl', 'i2c_sda'])
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def help(widgets=False):
|
|
38
|
-
"""
|
|
39
|
-
[i] micrOS LM naming convention - built-in help message
|
|
40
|
-
:return tuple:
|
|
41
|
-
(widgets=False) list of functions implemented by this application
|
|
42
|
-
(widgets=True) list of widget json for UI generation
|
|
43
|
-
"""
|
|
44
|
-
return 'scan', 'pinmap'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import uasyncio as asyncio
|
|
2
|
-
from LM_servo import sduty, deinit
|
|
3
|
-
from LM_stepper import step
|
|
4
|
-
from Common import micro_task
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class Data:
|
|
8
|
-
TASK_TAG = "pet_feeder.portion"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
async def __portion_task(portion, posmin, posmax):
|
|
12
|
-
# ASYNC TASK ADAPTER [*2] with automatic state management
|
|
13
|
-
# [micro_task->Task] TaskManager access to task internals (out, done attributes)
|
|
14
|
-
with micro_task(tag=Data.TASK_TAG) as my_task:
|
|
15
|
-
for p in range(0, portion):
|
|
16
|
-
# [1]Run pos fill up
|
|
17
|
-
for pos in range(posmin, posmax):
|
|
18
|
-
sduty(pos)
|
|
19
|
-
await asyncio.sleep_ms(15)
|
|
20
|
-
# [2]Wait between fill up / food out
|
|
21
|
-
await asyncio.sleep_ms(500)
|
|
22
|
-
# [3]Run pos food out
|
|
23
|
-
for pos in range(posmax, posmin, -1):
|
|
24
|
-
sduty(pos)
|
|
25
|
-
await asyncio.sleep_ms(20)
|
|
26
|
-
my_task.out = "{}/{} serving".format(p+1, portion)
|
|
27
|
-
deinit()
|
|
28
|
-
my_task.out += ": {} task done".format(Data.TASK_TAG)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def serve(portion=1, posmin=65, posmax=97):
|
|
32
|
-
"""
|
|
33
|
-
Pet feeder - with servo motor
|
|
34
|
-
:param portion: number of portions (min/max positions to repeat)
|
|
35
|
-
:param posmin: servo "start" position
|
|
36
|
-
:param posmax: servo "stop" position
|
|
37
|
-
"""
|
|
38
|
-
# [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
|
|
39
|
-
state = micro_task(tag=Data.TASK_TAG, task=__portion_task(portion=portion, posmin=posmin, posmax=posmax))
|
|
40
|
-
return "Starting" if state else "Already running"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def serve_w_stepper(portion=1, forward=135, back=10):
|
|
44
|
-
"""
|
|
45
|
-
Pet feeder (beta) - with stepper motor
|
|
46
|
-
:param count: number of portions
|
|
47
|
-
:param forward: s
|
|
48
|
-
:param back:
|
|
49
|
-
"""
|
|
50
|
-
for _ in range(portion):
|
|
51
|
-
# portion move
|
|
52
|
-
step(forward)
|
|
53
|
-
# Safety anti-block solution?
|
|
54
|
-
step(-back)
|
|
55
|
-
step(back)
|
|
56
|
-
step(-back)
|
|
57
|
-
step(back)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
def lmdep():
|
|
61
|
-
"""
|
|
62
|
-
Show Load Module dependency
|
|
63
|
-
- List of load modules used by this application
|
|
64
|
-
:return: tuple
|
|
65
|
-
"""
|
|
66
|
-
return 'servo', 'stepper'
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def help(widgets=False):
|
|
70
|
-
"""
|
|
71
|
-
[i] micrOS LM naming convention - built-in help message
|
|
72
|
-
:return tuple:
|
|
73
|
-
(widgets=False) list of functions implemented by this application
|
|
74
|
-
(widgets=True) list of widget json for UI generation
|
|
75
|
-
"""
|
|
76
|
-
return 'serve portion=1 \t\t[info] servo control', 'serve_w_stepper portion=1 \t[info] stepper control', 'lmdep'
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
from time import sleep
|
|
2
|
-
from microIO import physical_pin, pinmap_dump
|
|
3
|
-
from Common import SmartADC
|
|
4
|
-
|
|
5
|
-
"""
|
|
6
|
-
https://cimpleo.com/blog/simple-arduino-ph-meter/
|
|
7
|
-
ADC.ATTN_0DB — the full range voltage: 1.2V
|
|
8
|
-
ADC.ATTN_2_5DB — the full range voltage: 1.5V
|
|
9
|
-
ADC.ATTN_6DB — the full range voltage: 2.0V
|
|
10
|
-
ADC.ATTN_11DB — the full range voltage: 3.3V
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def __measure(samples=10):
|
|
15
|
-
adc_obj = SmartADC.get_singleton(physical_pin('ph'))
|
|
16
|
-
mbuf = 0
|
|
17
|
-
for k in range(0, samples):
|
|
18
|
-
mbuf += adc_obj.get()['volt']
|
|
19
|
-
sleep(0.1)
|
|
20
|
-
voltage = round(mbuf / samples, 3)
|
|
21
|
-
return voltage
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def measure():
|
|
25
|
-
data = SmartADC.get_singleton(physical_pin('ph')).get()
|
|
26
|
-
return "ADC data: {}\nAVG V: {}".format(data, __measure())
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
#######################
|
|
30
|
-
# LM helper functions #
|
|
31
|
-
#######################
|
|
32
|
-
|
|
33
|
-
def pinmap():
|
|
34
|
-
"""
|
|
35
|
-
[i] micrOS LM naming convention
|
|
36
|
-
Shows logical pins - pin number(s) used by this Load module
|
|
37
|
-
- info which pins to use for this application
|
|
38
|
-
:return dict: pin name (str) - pin value (int) pairs
|
|
39
|
-
"""
|
|
40
|
-
return pinmap_dump('ph')
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def help(widgets=False):
|
|
44
|
-
"""
|
|
45
|
-
[i] micrOS LM naming convention - built-in help message
|
|
46
|
-
:return tuple:
|
|
47
|
-
(widgets=False) list of functions implemented by this application
|
|
48
|
-
(widgets=True) list of widget json for UI generation
|
|
49
|
-
"""
|
|
50
|
-
return 'measure', 'pinmap'
|
|
51
|
-
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
from LM_system import memory_usage
|
|
2
|
-
from Common import socket_stream
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@socket_stream
|
|
6
|
-
def raise_error(msgobj=None):
|
|
7
|
-
"""
|
|
8
|
-
Test function - raise LM exception
|
|
9
|
-
"""
|
|
10
|
-
if msgobj is not None:
|
|
11
|
-
msgobj("Raise test exception")
|
|
12
|
-
raise Exception("Test exception")
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@socket_stream
|
|
16
|
-
def memory_leak(cnt=160, msgobj=None):
|
|
17
|
-
"""
|
|
18
|
-
Test function - allocate lot of memory
|
|
19
|
-
:param cnt: data counter, default 160 iteration
|
|
20
|
-
:return: verdict
|
|
21
|
-
"""
|
|
22
|
-
dict_test = {}
|
|
23
|
-
mem_start = memory_usage()['mem_used']
|
|
24
|
-
for k in range(cnt):
|
|
25
|
-
mem = memory_usage()['percent']
|
|
26
|
-
data = "micrOS memory usage: {} %".format(mem)
|
|
27
|
-
if msgobj is not None:
|
|
28
|
-
msgobj("[{}] gen: {}".format(k, data))
|
|
29
|
-
dict_test[k] = data
|
|
30
|
-
mem_end = memory_usage()['mem_used']
|
|
31
|
-
delta = mem_start - mem_end
|
|
32
|
-
return '[{}] RAM Alloc.: {} kB {} byte'.format(len(dict_test), int(delta / 1024), int(delta % 1024))
|
|
33
|
-
|
|
34
|
-
@socket_stream
|
|
35
|
-
def recursion_limit(limit=14, msgobj=None):
|
|
36
|
-
cnt = 0
|
|
37
|
-
for cnt in range(1, limit+1):
|
|
38
|
-
try:
|
|
39
|
-
_recursion(cnt, msgobj=msgobj)
|
|
40
|
-
except Exception as e:
|
|
41
|
-
msgobj(f"ok error: {e}")
|
|
42
|
-
break
|
|
43
|
-
return f"Recursion limit: {cnt}"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def _recursion(cnt, msgobj=None):
|
|
47
|
-
"""
|
|
48
|
-
Test function - recursion test
|
|
49
|
-
:param cnt: recursion depth
|
|
50
|
-
:return: verdict
|
|
51
|
-
Error example:
|
|
52
|
-
node01 $ robustness recursion_limit 15
|
|
53
|
-
lm_exec LM_robustness->recursion_limit: maximum recursion depth exceeded
|
|
54
|
-
"""
|
|
55
|
-
if cnt > 0:
|
|
56
|
-
remain = _recursion(cnt-1)
|
|
57
|
-
if msgobj is not None:
|
|
58
|
-
msgobj("recalled {}".format(cnt))
|
|
59
|
-
else:
|
|
60
|
-
remain = 0
|
|
61
|
-
return remain
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def help(widgets=False):
|
|
65
|
-
"""
|
|
66
|
-
[i] micrOS LM naming convention - built-in help message
|
|
67
|
-
:return tuple:
|
|
68
|
-
(widgets=False) list of functions implemented by this application
|
|
69
|
-
(widgets=True) list of widget json for UI generation
|
|
70
|
-
"""
|
|
71
|
-
return 'NOTE: This is a test module to validate system robustness', \
|
|
72
|
-
'raise_error', 'memory_leak cnt=160', 'recursion_limit cnt=14'
|
|
73
|
-
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
// Get the current hostname and create the REST API URL
|
|
2
|
-
const currentHostname = window.location.hostname;
|
|
3
|
-
const port = window.location.port ? `:${window.location.port}` : "";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function restAPICore(cmd) {
|
|
7
|
-
// Core micrOS rest API handler
|
|
8
|
-
cmd = cmd.trim().replace(/\s+/g, '/');
|
|
9
|
-
let query = `http://${currentHostname}${port}/rest/${cmd}`;
|
|
10
|
-
const startTime = performance.now();
|
|
11
|
-
let endTime;
|
|
12
|
-
// Call rest api with command parameter and return the promise
|
|
13
|
-
return fetch(query).then(response => {
|
|
14
|
-
if (!response.ok) {
|
|
15
|
-
throw new Error('restAPICore code NOK: ' + response.status);
|
|
16
|
-
}
|
|
17
|
-
endTime = performance.now();
|
|
18
|
-
return response.json();
|
|
19
|
-
}).then(response => {
|
|
20
|
-
// return cmd result
|
|
21
|
-
const delta = (endTime - startTime).toFixed(0);
|
|
22
|
-
return { response, delta, query }; // RETURN DATA
|
|
23
|
-
}).catch(error => {
|
|
24
|
-
console.error('Error in restAPICore:', error);
|
|
25
|
-
throw error;
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function restAPI(cmd='', console=true) {
|
|
30
|
-
// micrOS rest API handler with built-in restCmdInput
|
|
31
|
-
// UPDATES: restConsole(...)
|
|
32
|
-
if (cmd == '') {
|
|
33
|
-
cmd = document.getElementById('restCmdInput').value;
|
|
34
|
-
}
|
|
35
|
-
return restAPICore(cmd)
|
|
36
|
-
.then(({ response, delta, query }) => {
|
|
37
|
-
if (console) {
|
|
38
|
-
restConsole(query, response, delta);
|
|
39
|
-
}
|
|
40
|
-
return response
|
|
41
|
-
}).catch(error => {
|
|
42
|
-
console.error('Error in restAPI:', error);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function restConsole(apiUrl, data, delta) {
|
|
47
|
-
// UPDATES: restConsoleUrl, restConsoleResponse, restConsoleTime
|
|
48
|
-
document.getElementById('restConsoleUrl').innerHTML = `<strong>Generated URL:</strong><br> <a href="${apiUrl}" target="_blank" style="color: white;">${apiUrl}</a>`;
|
|
49
|
-
document.getElementById('restConsoleResponse').innerHTML = JSON.stringify(data, null, 4).replace(/\\n/g, "<br/>" + " ".repeat(15));
|
|
50
|
-
document.getElementById('restConsoleTime').innerHTML = `⏱ Response time: ${delta} ms`;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function restInfo() {
|
|
54
|
-
// UPDATES: 'restInfo' and restConsole(...)
|
|
55
|
-
restAPICore(cmd='').then(({ response, delta, query }) => {
|
|
56
|
-
// Update API Console
|
|
57
|
-
restConsole(query, response, delta)
|
|
58
|
-
// Update 'SysApiInfo' tag
|
|
59
|
-
let infoHeader = Object.entries(response['result'])
|
|
60
|
-
.filter(([key]) => key !== 'usr_endpoints') // Exclude usr_endpoints
|
|
61
|
-
.map(([key, value]) => `${key}: ${JSON.stringify(value)}`);
|
|
62
|
-
if (infoHeader[2].endsWith("true")) { // check auth: true
|
|
63
|
-
infoHeader[2] = "🔑";
|
|
64
|
-
} else {infoHeader.splice(2, 1);}
|
|
65
|
-
infoHeader = infoHeader.join(' ❖ ').replace(/"/g, '');
|
|
66
|
-
let infoSubpages = (response['result']['usr_endpoints'] ? "<br><br>📎 " + Object.entries(response['result']['usr_endpoints'])
|
|
67
|
-
.map(([key, value]) => `<a href="${value}" target="_blank" style="color: white;">${value} </a>`)
|
|
68
|
-
.join(' | ') : '');
|
|
69
|
-
document.getElementById('restInfo').innerHTML = infoHeader + infoSubpages;
|
|
70
|
-
}).catch(error => {
|
|
71
|
-
console.error('Error in restAPI:', error);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Init basic info from board
|
|
76
|
-
// restInfo();
|