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,28 +1,27 @@
|
|
|
1
|
+
"""
|
|
2
|
+
micrOS simple OLED UI (irq or single task based refresh)
|
|
3
|
+
- with page generation
|
|
4
|
+
Designed by Marcell Ban aka BxNxM
|
|
5
|
+
"""
|
|
6
|
+
|
|
1
7
|
from Config import cfgget
|
|
2
8
|
from utime import localtime
|
|
3
9
|
from network import WLAN, STA_IF
|
|
4
|
-
from microIO import
|
|
10
|
+
from microIO import bind_pin, pinmap_search
|
|
5
11
|
from Network import ifconfig
|
|
6
|
-
from
|
|
12
|
+
from Common import syslog, exec_cmd, manage_task
|
|
7
13
|
from machine import Pin
|
|
8
|
-
from
|
|
14
|
+
from Types import resolve
|
|
9
15
|
try:
|
|
10
|
-
from LM_system import memory_usage
|
|
16
|
+
from LM_system import memory_usage, hosts
|
|
11
17
|
except:
|
|
12
18
|
memory_usage = None # Optional function handling
|
|
13
|
-
try:
|
|
14
|
-
import LM_intercon as InterCon
|
|
15
|
-
except:
|
|
16
|
-
InterCon = None # Optional function handling
|
|
17
|
-
try:
|
|
18
|
-
from LM_genIO import get_adc
|
|
19
|
-
except:
|
|
20
|
-
get_adc = None # Optional function handling
|
|
21
19
|
try:
|
|
22
20
|
from LM_gameOfLife import next_gen as gol_nextgen, reset as gol_reset
|
|
23
21
|
except:
|
|
24
22
|
gol_nextgen = None # Optional function handling
|
|
25
23
|
|
|
24
|
+
from utime import ticks_ms, ticks_diff # For IRQ joystick handling
|
|
26
25
|
|
|
27
26
|
#################################
|
|
28
27
|
# PAGE MANAGER CLASS DEFINITION #
|
|
@@ -32,7 +31,7 @@ class PageUI:
|
|
|
32
31
|
PAGE_UI_OBJ = None
|
|
33
32
|
DISPLAY = None
|
|
34
33
|
|
|
35
|
-
def __init__(self, page_callbacks, w, h, page=0, pwr_sec=None, oled_type='ssd1306'):
|
|
34
|
+
def __init__(self, page_callbacks, w, h, page=0, pwr_sec=None, oled_type='ssd1306', joystick=False):
|
|
36
35
|
"""
|
|
37
36
|
:param page_callbacks: callback function list to show on UI
|
|
38
37
|
:param page: start page index, default 0 (+fallback)
|
|
@@ -40,6 +39,7 @@ class PageUI:
|
|
|
40
39
|
:param h: screen height
|
|
41
40
|
:param pwr_sec: auto screen off after this sec
|
|
42
41
|
:param oled_type: type of oled display: ssd1306 / sh1106
|
|
42
|
+
:param joystick: enable joystick IRQ-s
|
|
43
43
|
"""
|
|
44
44
|
if oled_type.strip() in ('ssd1306', 'sh1106'):
|
|
45
45
|
if oled_type.strip() == 'ssd1306':
|
|
@@ -48,7 +48,7 @@ class PageUI:
|
|
|
48
48
|
import LM_oled_sh1106 as oled
|
|
49
49
|
PageUI.DISPLAY = oled
|
|
50
50
|
else:
|
|
51
|
-
|
|
51
|
+
syslog(f"Oled UI unknown oled_type: {oled_type}")
|
|
52
52
|
Exception(f"Oled UI unknown oled_type: {oled_type}")
|
|
53
53
|
self.page_callback_list = page_callbacks
|
|
54
54
|
self.active_page = page
|
|
@@ -68,7 +68,8 @@ class PageUI:
|
|
|
68
68
|
# Create built-in button IRQ - OK button (center)
|
|
69
69
|
self.bttn_press_callback = None
|
|
70
70
|
self.irq_ok = False
|
|
71
|
-
|
|
71
|
+
if joystick:
|
|
72
|
+
self.__create_joystick_irq()
|
|
72
73
|
|
|
73
74
|
# Power saver state machine - turn off sec, deltaT (timirq executor seq loop), counter
|
|
74
75
|
self.pwr_saver_state = [pwr_sec, round(cfgget('timirqseq') / 1000, 2), pwr_sec]
|
|
@@ -105,13 +106,13 @@ class PageUI:
|
|
|
105
106
|
pass
|
|
106
107
|
|
|
107
108
|
ltime = localtime()
|
|
108
|
-
h = "0{
|
|
109
|
-
m = "0{
|
|
110
|
-
s = "0{
|
|
109
|
+
h = f"0{ltime[-5]}" if len(str(ltime[-5])) < 2 else ltime[-5]
|
|
110
|
+
m = f"0{ltime[-4]}" if len(str(ltime[-4])) < 2 else ltime[-4]
|
|
111
|
+
s = f"0{ltime[-3]}" if len(str(ltime[-3])) < 2 else ltime[-3]
|
|
111
112
|
nwmd = ifconfig()[0]
|
|
112
113
|
nwmd = nwmd[0] if len(nwmd) > 0 else "0"
|
|
113
114
|
irq_ok = ' ' if self.bttn_press_callback is None else '*' if self.irq_ok else '!'
|
|
114
|
-
PageUI.DISPLAY.text("{} {} {}:{}:{}"
|
|
115
|
+
PageUI.DISPLAY.text(f"{nwmd} {irq_ok} {h}:{m}:{s}", 0, 0)
|
|
115
116
|
|
|
116
117
|
def __page_bar(self):
|
|
117
118
|
"""Generates page indicator bar"""
|
|
@@ -150,19 +151,37 @@ class PageUI:
|
|
|
150
151
|
PageUI.DISPLAY.text(msg, 15, 40)
|
|
151
152
|
return True
|
|
152
153
|
|
|
153
|
-
def
|
|
154
|
-
"""Create
|
|
155
|
-
|
|
156
|
-
pin = physical_pin(pinkey)
|
|
157
|
-
except Exception as e:
|
|
158
|
-
msg = '[ERR] Button IRQ:{} {}'.format(pinkey, e)
|
|
154
|
+
def __create_joystick_irq(self):
|
|
155
|
+
"""Create Joystick buttons IRQs"""
|
|
156
|
+
def _set(pin_tag, callback):
|
|
159
157
|
pin = None
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
158
|
+
try:
|
|
159
|
+
pin = bind_pin(pin_tag)
|
|
160
|
+
except Exception as e:
|
|
161
|
+
syslog(f'[ERR] {pin_tag} IRQ: {e}')
|
|
162
|
+
if pin:
|
|
163
|
+
pin_obj = Pin(pin, Pin.IN, Pin.PULL_DOWN)
|
|
164
|
+
# [IRQ] - event type setup
|
|
165
|
+
pin_obj.irq(trigger=Pin.IRQ_FALLING, handler=callback)
|
|
166
|
+
|
|
167
|
+
def _event_handler(control_command, prell_ms=150):
|
|
168
|
+
nonlocal _p_last
|
|
169
|
+
_last = _p_last.get(control_command)
|
|
170
|
+
last = 0 if _last is None else _last
|
|
171
|
+
# Calculate time difference between last trigger action and now tick.
|
|
172
|
+
diff = ticks_diff(ticks_ms(), last)
|
|
173
|
+
if abs(diff) > prell_ms:
|
|
174
|
+
# Save now tick - last trigger action
|
|
175
|
+
_p_last[control_command] = ticks_ms()
|
|
176
|
+
self.control(control_command)
|
|
177
|
+
|
|
178
|
+
_p_last = {}
|
|
179
|
+
_set("js_right", lambda pin: _event_handler('next'))
|
|
180
|
+
_set("js_left", lambda pin: _event_handler('prev'))
|
|
181
|
+
_set("js_up", lambda pin: _event_handler('on'))
|
|
182
|
+
_set("js_down", lambda pin: _event_handler('off'))
|
|
183
|
+
_set("js_press", lambda pin: _event_handler('press'))
|
|
184
|
+
self.irq_ok = True
|
|
166
185
|
|
|
167
186
|
def __power_save(self):
|
|
168
187
|
"""
|
|
@@ -223,6 +242,7 @@ class PageUI:
|
|
|
223
242
|
else:
|
|
224
243
|
self.page_callback_list[self.active_page]() # <== Execute page functions
|
|
225
244
|
except Exception as e:
|
|
245
|
+
syslog(f"oled_ui render error: {e}")
|
|
226
246
|
PageUI.PAGE_UI_OBJ.show_msg = f"Err: {e}" # Show page error in msgbox
|
|
227
247
|
PageUI.DISPLAY.show()
|
|
228
248
|
self.__power_save()
|
|
@@ -266,7 +286,7 @@ class PageUI:
|
|
|
266
286
|
PageUI.DISPLAY.show()
|
|
267
287
|
self.oled_state = False # Off main page logic
|
|
268
288
|
self.bttn_press_callback = None
|
|
269
|
-
return "page: {} pwr: {
|
|
289
|
+
return f"page: {self.active_page} pwr: {self.oled_state}"
|
|
270
290
|
|
|
271
291
|
def _page_button_press(self):
|
|
272
292
|
"""
|
|
@@ -318,39 +338,47 @@ class PageUI:
|
|
|
318
338
|
#####################################
|
|
319
339
|
# PAGE GENERATORS #
|
|
320
340
|
#####################################
|
|
321
|
-
def intercon_page(self,
|
|
341
|
+
def intercon_page(self, cmd:str, run=False):
|
|
322
342
|
"""Generic interconnect page core - create multiple page with it"""
|
|
323
343
|
posx, posy = 5, 12
|
|
324
344
|
|
|
325
345
|
def _button():
|
|
346
|
+
nonlocal host, _cmd
|
|
326
347
|
# BUTTON CALLBACK - INTERCONNECT execution
|
|
327
348
|
self.open_intercons.append(host)
|
|
328
349
|
try:
|
|
329
350
|
# Send CMD to other device & show result
|
|
330
|
-
data_meta =
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
351
|
+
state, data_meta = exec_cmd(_cmd, jsonify=True)
|
|
352
|
+
if state:
|
|
353
|
+
self.cmd_task_tag = list(data_meta.keys())[0]
|
|
354
|
+
verdict = list(data_meta.values())[0]
|
|
355
|
+
if "Already running" in verdict and not run:
|
|
356
|
+
self.cmd_out = verdict # Otherwise the task start output not relevant on UI
|
|
357
|
+
else:
|
|
358
|
+
self.cmd_out = f"Error: {data_meta}"
|
|
334
359
|
except Exception as e:
|
|
335
360
|
self.cmd_out = str(e)
|
|
336
361
|
self.open_intercons.remove(host)
|
|
337
362
|
|
|
338
363
|
# Check open host connection
|
|
339
|
-
|
|
340
|
-
|
|
364
|
+
_cmd = cmd.strip().split()
|
|
365
|
+
host = _cmd[-1].replace(">", "").replace("&", "")
|
|
341
366
|
# Draw host + cmd details
|
|
342
|
-
PageUI.DISPLAY.text(
|
|
343
|
-
PageUI.DISPLAY.text(
|
|
367
|
+
PageUI.DISPLAY.text(' '.join(_cmd[0:-1]), 0, posy)
|
|
368
|
+
PageUI.DISPLAY.text(_cmd[-1], posx, posy+10)
|
|
369
|
+
self._cmd_text(posx, posy + 10)
|
|
370
|
+
|
|
344
371
|
# Update display output with retrieved task result (by TaskID)
|
|
345
372
|
if self.cmd_task_tag is not None:
|
|
346
|
-
task_buffer =
|
|
373
|
+
task_buffer = manage_task(self.cmd_task_tag, 'show').replace(' ', '')
|
|
347
374
|
if task_buffer is not None and len(task_buffer) > 0:
|
|
348
375
|
# Set display out to task buffered data
|
|
349
376
|
self.cmd_out = task_buffer
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
377
|
+
if not manage_task(self.cmd_task_tag, 'isbusy'):
|
|
378
|
+
# Kill task - clean
|
|
379
|
+
manage_task(self.cmd_task_tag, 'kill')
|
|
380
|
+
# data gathered - remove tag - skip re-read
|
|
381
|
+
self.cmd_task_tag = None
|
|
354
382
|
# Show self.cmd_out value on display
|
|
355
383
|
self._cmd_text(posx, posy+10)
|
|
356
384
|
# Run button event at page init
|
|
@@ -360,7 +388,7 @@ class PageUI:
|
|
|
360
388
|
# Set button press callback (+draw button)
|
|
361
389
|
self.set_press_callback(_button)
|
|
362
390
|
|
|
363
|
-
def cmd_call_page(self, cmd, run=False):
|
|
391
|
+
def cmd_call_page(self, cmd:str, run=False):
|
|
364
392
|
"""Generic LoadModule execution page core - create multiple page with it"""
|
|
365
393
|
posx, posy = 5, 12
|
|
366
394
|
|
|
@@ -369,7 +397,7 @@ class PageUI:
|
|
|
369
397
|
try:
|
|
370
398
|
cmd_list = cmd.strip().split()
|
|
371
399
|
# Send CMD to other device & show result
|
|
372
|
-
state, out =
|
|
400
|
+
state, out = exec_cmd(cmd_list)
|
|
373
401
|
try:
|
|
374
402
|
self.cmd_out = ''.join(out.strip().split()).replace(' ', '')
|
|
375
403
|
except Exception:
|
|
@@ -387,43 +415,16 @@ class PageUI:
|
|
|
387
415
|
# Set button press callback (+draw button)
|
|
388
416
|
self.set_press_callback(_button)
|
|
389
417
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
def __visualize(p):
|
|
394
|
-
max_w = 50
|
|
395
|
-
percent = p * 0.01
|
|
396
|
-
size = round(percent * max_w)
|
|
397
|
-
size = 1 if size < 1 else size
|
|
398
|
-
# Visualize percentage
|
|
399
|
-
PageUI.DISPLAY.rect(0, 9, size, size, fill=True)
|
|
400
|
-
# Visualize percentages scale
|
|
401
|
-
steps = int(max_w / 10)
|
|
402
|
-
for scale in range(steps, max_w + 1, steps):
|
|
403
|
-
if scale < size:
|
|
404
|
-
PageUI.DISPLAY.rect(0, 9, scale, scale, state=0)
|
|
405
|
-
else:
|
|
406
|
-
PageUI.DISPLAY.rect(0, 9, scale, scale, state=1)
|
|
407
|
-
|
|
408
|
-
data = {'percent': 'null', 'volt': 'null'}
|
|
409
|
-
if get_adc is not None:
|
|
410
|
-
data = get_adc(pin)
|
|
411
|
-
__visualize(p=data['percent'])
|
|
412
|
-
PageUI.DISPLAY.text("{} %".format(data['percent']), 65, 20)
|
|
413
|
-
PageUI.DISPLAY.text("{} V".format(data['volt']), 65, 40)
|
|
414
|
-
return True
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
#################################
|
|
418
|
-
# PAGE DEFINITIONS #
|
|
419
|
-
#################################
|
|
418
|
+
####################################
|
|
419
|
+
# UI PAGE DEFINITIONS #
|
|
420
|
+
####################################
|
|
420
421
|
|
|
421
422
|
def _sys_page():
|
|
422
423
|
"""
|
|
423
424
|
System basic information page
|
|
424
425
|
"""
|
|
425
426
|
PageUI.DISPLAY.text(cfgget("devfid"), 0, 15)
|
|
426
|
-
PageUI.DISPLAY.text(" {
|
|
427
|
+
PageUI.DISPLAY.text(f" {ifconfig()[1][0]}", 0, 25)
|
|
427
428
|
if memory_usage is not None:
|
|
428
429
|
mem = memory_usage()
|
|
429
430
|
PageUI.DISPLAY.text(f" {mem['percent']}% ({int(mem['mem_used']/1000)}kb)", 0, 35)
|
|
@@ -432,16 +433,21 @@ def _sys_page():
|
|
|
432
433
|
|
|
433
434
|
|
|
434
435
|
def _intercon_cache(line_limit=3):
|
|
435
|
-
if InterCon is None:
|
|
436
|
-
return False
|
|
437
436
|
line_start = 15
|
|
438
437
|
line_cnt = 1
|
|
439
438
|
PageUI.DISPLAY.text("InterCon cache", 0, line_start)
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
439
|
+
cache = hosts()["intercon"]
|
|
440
|
+
if sum([1 for _ in cache]) > 0:
|
|
441
|
+
for key, val in cache.items():
|
|
442
|
+
if '.' in key:
|
|
443
|
+
# IP splitting
|
|
444
|
+
key = key.split('.')[0]
|
|
445
|
+
val = '.'.join(val.split('.')[-2:])
|
|
446
|
+
else:
|
|
447
|
+
# MAC splitting
|
|
448
|
+
key = key.split(':')[0]
|
|
449
|
+
val = ':'.join(val.split(':')[-2:])
|
|
450
|
+
PageUI.DISPLAY.text(f" {val} {key}", 0, line_start+(line_cnt*10))
|
|
445
451
|
line_cnt += 1
|
|
446
452
|
if line_cnt > line_limit:
|
|
447
453
|
break
|
|
@@ -471,24 +477,36 @@ def _micros_welcome():
|
|
|
471
477
|
return str(e)
|
|
472
478
|
return True
|
|
473
479
|
|
|
474
|
-
|
|
475
|
-
#
|
|
476
|
-
#
|
|
477
|
-
|
|
478
|
-
|
|
480
|
+
#############################################################################
|
|
481
|
+
# PAGE GUI CONTROLLER FUNCTIONS #
|
|
482
|
+
# USED IN MICROS SHELL/IRQs #
|
|
483
|
+
#############################################################################
|
|
479
484
|
|
|
480
|
-
def
|
|
485
|
+
def load(pwr_sec=None, oled_type='ssd1306', page=0, width=128, height=64, joystick=True):
|
|
481
486
|
"""
|
|
482
|
-
Init
|
|
483
|
-
|
|
484
|
-
:param pwr_sec: power down oled after given sec - power safe
|
|
487
|
+
Init PageUI
|
|
488
|
+
:param pwr_sec: power down oled after given sec -> screensaver
|
|
485
489
|
:param oled_type: oled type selection: ssd1306 or sh1106
|
|
486
|
-
:param page: start page index,
|
|
490
|
+
:param page: start page index, default: 0
|
|
491
|
+
:param width: width in pixels
|
|
492
|
+
:param height: height in pixels
|
|
493
|
+
:param joystick: init joystick irq pin-s (default: True)
|
|
487
494
|
"""
|
|
488
495
|
if PageUI.PAGE_UI_OBJ is None:
|
|
489
496
|
pages = [_sys_page, _intercon_cache, _micros_welcome] # <== Add page function HERE
|
|
490
|
-
PageUI(pages,
|
|
497
|
+
PageUI(pages, width, height, page=page, pwr_sec=pwr_sec, oled_type=oled_type, joystick=joystick)
|
|
498
|
+
PageUI.PAGE_UI_OBJ.render_page()
|
|
499
|
+
return f"OLED: {oled_type}: {width}x{height} initialized."
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
def draw():
|
|
503
|
+
"""
|
|
504
|
+
Refresh page on PageUI
|
|
505
|
+
"""
|
|
506
|
+
if PageUI.PAGE_UI_OBJ is None:
|
|
507
|
+
return "Module uninitialized, run: oled_ui load pwr_sec=None oled_type='ssd1306' page=0 width=128 height=64"
|
|
491
508
|
PageUI.PAGE_UI_OBJ.render_page()
|
|
509
|
+
return f"refreshed..."
|
|
492
510
|
|
|
493
511
|
|
|
494
512
|
def control(cmd='next'):
|
|
@@ -500,7 +518,7 @@ def control(cmd='next'):
|
|
|
500
518
|
valid_cmd = ('next', 'prev', 'press', 'on', 'off')
|
|
501
519
|
if cmd in valid_cmd:
|
|
502
520
|
return PageUI.PAGE_UI_OBJ.control(cmd)
|
|
503
|
-
return 'Invalid command {}! Hint: {}'
|
|
521
|
+
return f'Invalid command {cmd}! Hint: {valid_cmd}'
|
|
504
522
|
|
|
505
523
|
|
|
506
524
|
def msgbox(msg='micrOS msg'):
|
|
@@ -512,8 +530,7 @@ def msgbox(msg='micrOS msg'):
|
|
|
512
530
|
PageUI.PAGE_UI_OBJ.render_page()
|
|
513
531
|
return 'Show msg'
|
|
514
532
|
|
|
515
|
-
|
|
516
|
-
def intercon_genpage(cmd=None, run=False):
|
|
533
|
+
def genpage(cmd:str=None, run=False):
|
|
517
534
|
"""
|
|
518
535
|
Create intercon pages dynamically :)
|
|
519
536
|
- based on cmd value.
|
|
@@ -521,40 +538,15 @@ def intercon_genpage(cmd=None, run=False):
|
|
|
521
538
|
:param run: run button event at page init: True/False
|
|
522
539
|
:return: page creation verdict
|
|
523
540
|
"""
|
|
524
|
-
raw = cmd.split()
|
|
525
|
-
host = raw[0]
|
|
526
|
-
cmd = ' '.join(raw[1:])
|
|
527
|
-
if PageUI.PAGE_UI_OBJ is None:
|
|
528
|
-
# Auto init UI
|
|
529
|
-
pageui()
|
|
530
|
-
try:
|
|
531
|
-
# Create page for intercon command
|
|
532
|
-
PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.intercon_page(host, cmd, run=run))
|
|
533
|
-
except Exception as e:
|
|
534
|
-
errlog_add(f'[ERR] intercon_genpage: {e}')
|
|
535
|
-
return str(e)
|
|
536
|
-
return True
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
def cmd_genpage(cmd=None, run=False):
|
|
540
|
-
"""
|
|
541
|
-
Create load module execution pages dynamically :)
|
|
542
|
-
- based on cmd value: load_module function (args)
|
|
543
|
-
:param cmd: 'load_module function (args)' string
|
|
544
|
-
:param run: run button event at page init: True/False
|
|
545
|
-
:return: page creation verdict
|
|
546
|
-
"""
|
|
547
|
-
if not isinstance(cmd, str):
|
|
548
|
-
return False
|
|
549
|
-
|
|
550
|
-
if PageUI.PAGE_UI_OBJ is None:
|
|
551
|
-
# Auto init UI
|
|
552
|
-
pageui()
|
|
553
541
|
try:
|
|
554
|
-
|
|
555
|
-
|
|
542
|
+
if ">>" in cmd or "&" in cmd:
|
|
543
|
+
# Create page for intercon/task background command
|
|
544
|
+
PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.intercon_page(cmd, run=run))
|
|
545
|
+
else:
|
|
546
|
+
# Create page for realtime command
|
|
547
|
+
PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.cmd_call_page(cmd, run=run))
|
|
556
548
|
except Exception as e:
|
|
557
|
-
|
|
549
|
+
syslog(f'[ERR] genpage: {e}')
|
|
558
550
|
return str(e)
|
|
559
551
|
return True
|
|
560
552
|
|
|
@@ -570,35 +562,11 @@ def function_genpage(func):
|
|
|
570
562
|
if not callable(func):
|
|
571
563
|
return "Provided <func> not callable, input must be python function (coding interface)"
|
|
572
564
|
|
|
573
|
-
if PageUI.PAGE_UI_OBJ is None:
|
|
574
|
-
# Auto init UI
|
|
575
|
-
pageui()
|
|
576
565
|
try:
|
|
577
566
|
# Create custom page
|
|
578
567
|
PageUI.PAGE_UI_OBJ.add_page(lambda: func(display=PageUI.DISPLAY))
|
|
579
568
|
except Exception as e:
|
|
580
|
-
|
|
581
|
-
return str(e)
|
|
582
|
-
return True
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
def adc_genpage(pin=33):
|
|
586
|
-
"""
|
|
587
|
-
Create ADC visualization pages dynamically :)
|
|
588
|
-
:param pin: pin number for ADC read, default: 33
|
|
589
|
-
:return: page creation verdict
|
|
590
|
-
"""
|
|
591
|
-
if not isinstance(pin, int):
|
|
592
|
-
return False
|
|
593
|
-
|
|
594
|
-
if PageUI.PAGE_UI_OBJ is None:
|
|
595
|
-
# Auto init UI
|
|
596
|
-
pageui()
|
|
597
|
-
try:
|
|
598
|
-
# Create page for intercon command
|
|
599
|
-
PageUI.PAGE_UI_OBJ.add_page(lambda: PageUI.PAGE_UI_OBJ.adc_visualize_page(pin=pin))
|
|
600
|
-
except Exception as e:
|
|
601
|
-
errlog_add(f'[ERR] adc_genpage: {e}')
|
|
569
|
+
syslog(f'[ERR] function_genpage: {e}')
|
|
602
570
|
return str(e)
|
|
603
571
|
return True
|
|
604
572
|
|
|
@@ -606,15 +574,6 @@ def adc_genpage(pin=33):
|
|
|
606
574
|
# LM helper functions #
|
|
607
575
|
#######################
|
|
608
576
|
|
|
609
|
-
def lmdep():
|
|
610
|
-
"""
|
|
611
|
-
Show Load Module dependency
|
|
612
|
-
- List of load modules used by this application
|
|
613
|
-
:return: tuple
|
|
614
|
-
"""
|
|
615
|
-
return 'oled', 'intercon', 'genIO'
|
|
616
|
-
|
|
617
|
-
|
|
618
577
|
def pinmap():
|
|
619
578
|
"""
|
|
620
579
|
[i] micrOS LM naming convention
|
|
@@ -623,7 +582,7 @@ def pinmap():
|
|
|
623
582
|
:return dict: pin name (str) - pin value (int) pairs
|
|
624
583
|
"""
|
|
625
584
|
pin_map = PageUI.DISPLAY.pinmap()
|
|
626
|
-
pin_map.update(
|
|
585
|
+
pin_map.update(pinmap_search(["js_right", "js_left", "js_up", "js_down", "js_press"]))
|
|
627
586
|
return pin_map
|
|
628
587
|
|
|
629
588
|
|
|
@@ -634,10 +593,9 @@ def help(widgets=False):
|
|
|
634
593
|
(widgets=False) list of functions implemented by this application
|
|
635
594
|
(widgets=True) list of widget json for UI generation
|
|
636
595
|
"""
|
|
637
|
-
return '
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
'pinmap'
|
|
596
|
+
return resolve(('load pwr_sec=None/int(sec) oled_type="ssd1306 or sh1106" page=0 width=128 height=64 joystick=True',
|
|
597
|
+
'draw',
|
|
598
|
+
'BUTTON control cmd=<prev,press,next,on,off>',
|
|
599
|
+
'msgbox "msg"',
|
|
600
|
+
'genpage "cmd" run=False',
|
|
601
|
+
'pinmap'), widgets=widgets)
|