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/micrOS.py
CHANGED
|
@@ -4,39 +4,36 @@ dedicated to micrOS framework.
|
|
|
4
4
|
|
|
5
5
|
Designed by Marcell Ban aka BxNxM
|
|
6
6
|
"""
|
|
7
|
+
|
|
8
|
+
#################################################################
|
|
9
|
+
# INIT FS #
|
|
10
|
+
#################################################################
|
|
11
|
+
from Files import init_micros_dirs
|
|
12
|
+
init_micros_dirs()
|
|
13
|
+
|
|
7
14
|
#################################################################
|
|
8
15
|
# IMPORTS #
|
|
9
16
|
#################################################################
|
|
10
17
|
from Time import ntp_time, suntime
|
|
11
18
|
from Tasks import Manager
|
|
12
|
-
from Hooks import bootup, profiling_info
|
|
19
|
+
from Hooks import bootup, profiling_info, enableESPNow
|
|
13
20
|
from Network import auto_nw_config
|
|
14
|
-
from Server import
|
|
15
|
-
from Interrupts import enableInterrupt, enableCron
|
|
16
|
-
from
|
|
17
|
-
from Debug import errlog_add
|
|
21
|
+
from Server import Server
|
|
22
|
+
from Interrupts import enableInterrupt, enableCron, initEventIRQs
|
|
23
|
+
from Debug import syslog
|
|
18
24
|
|
|
19
25
|
|
|
20
26
|
#################################################################
|
|
21
27
|
# INTERRUPT HANDLER INTERFACES / WRAPPERS #
|
|
22
28
|
#################################################################
|
|
23
29
|
|
|
24
|
-
|
|
25
|
-
def safe_boot():
|
|
26
|
-
try:
|
|
27
|
-
bootup()
|
|
28
|
-
except Exception as e:
|
|
29
|
-
print(f"[micrOS main] Hooks.boot() error: {e}")
|
|
30
|
-
errlog_add(f"[ERR] safe_boot: {e}")
|
|
31
|
-
|
|
32
|
-
|
|
33
30
|
def irq_handler():
|
|
34
31
|
try:
|
|
35
32
|
enableInterrupt()
|
|
36
33
|
enableCron()
|
|
37
34
|
except Exception as e:
|
|
38
35
|
print(f"[micrOS main] InterruptHandler.enableInterrupt/CronInterrupt error: {e}")
|
|
39
|
-
|
|
36
|
+
syslog(f"[ERR] irq_handler error: {e}")
|
|
40
37
|
|
|
41
38
|
|
|
42
39
|
def external_irq_handler():
|
|
@@ -44,7 +41,7 @@ def external_irq_handler():
|
|
|
44
41
|
initEventIRQs()
|
|
45
42
|
except Exception as e:
|
|
46
43
|
print(f"[micrOS main] InterruptHandler.initEventIRQs error: {e}")
|
|
47
|
-
|
|
44
|
+
syslog(f"[ERR] external_irq_handler error: {e}")
|
|
48
45
|
|
|
49
46
|
|
|
50
47
|
#################################################################
|
|
@@ -59,7 +56,11 @@ def micrOS():
|
|
|
59
56
|
aio = Manager()
|
|
60
57
|
|
|
61
58
|
# BOOT TASKS: Initial LM executions
|
|
62
|
-
|
|
59
|
+
try:
|
|
60
|
+
bootup()
|
|
61
|
+
except Exception as e:
|
|
62
|
+
print(f"[micrOS main] Hooks.boot() error: {e}")
|
|
63
|
+
syslog(f"[ERR] safe_boot: {e}")
|
|
63
64
|
|
|
64
65
|
# NETWORK setup
|
|
65
66
|
nwmd = auto_nw_config()
|
|
@@ -78,12 +79,15 @@ def micrOS():
|
|
|
78
79
|
# SET interrupt with timirqcbf from nodeconfig
|
|
79
80
|
irq_handler()
|
|
80
81
|
|
|
81
|
-
# [
|
|
82
|
-
aio.create_task(
|
|
83
|
-
|
|
82
|
+
# [Server] as async task
|
|
83
|
+
aio.create_task(Server().run_server(), tag='server')
|
|
84
|
+
|
|
85
|
+
# [ESPNow] server as async task
|
|
86
|
+
enableESPNow()
|
|
87
|
+
profiling_info(label='[memUsage] SYSTEM IS UP AND RUNNING')
|
|
84
88
|
|
|
85
89
|
# [EVENT LOOP] Start async event loop
|
|
86
90
|
aio.run_forever()
|
|
87
91
|
|
|
88
92
|
# UNEXPECTED RESTART ???
|
|
89
|
-
|
|
93
|
+
syslog("[ERR] !!! Unexpected micrOS restart")
|
micrOS/source/micrOSloader.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Module is responsible for invoke micrOS or recovery webrepl mode
|
|
3
|
+
[IMPORTANT] This module must never use any micrOS specific functions in main scope.
|
|
3
4
|
|
|
4
5
|
Designed by Marcell Ban aka BxNxM
|
|
5
6
|
"""
|
|
@@ -11,14 +12,10 @@ try:
|
|
|
11
12
|
import traceback
|
|
12
13
|
except:
|
|
13
14
|
traceback = None
|
|
14
|
-
|
|
15
|
-
from Debug import errlog_add
|
|
16
|
-
except Exception as e:
|
|
17
|
-
print(f"Import error: {e}")
|
|
18
|
-
errlog_add = None
|
|
15
|
+
from machine import reset
|
|
19
16
|
|
|
20
17
|
|
|
21
|
-
def
|
|
18
|
+
def _is_micrOS():
|
|
22
19
|
"""
|
|
23
20
|
Recovery mode for OTA update in case of connection/transfer failure
|
|
24
21
|
.if_mode can have 2 possible values: webrepl or micros (strings)
|
|
@@ -34,7 +31,6 @@ def __is_micrOS():
|
|
|
34
31
|
False -> webrepl
|
|
35
32
|
* EOE (EndOfExecution) -> off
|
|
36
33
|
"""
|
|
37
|
-
mode = 'micros'
|
|
38
34
|
try:
|
|
39
35
|
with open('.if_mode', 'r') as f:
|
|
40
36
|
mode = f.read().strip().lower()
|
|
@@ -54,12 +50,13 @@ def __is_micrOS():
|
|
|
54
50
|
exit(0)
|
|
55
51
|
# start webrepl
|
|
56
52
|
print("[loader][if_mode:False] .if_mode:webrepl -> webrepl interface")
|
|
57
|
-
print("[loader][recovery mode] - manually selected in .if_mode file")
|
|
58
53
|
return False
|
|
59
54
|
|
|
60
55
|
|
|
61
56
|
def __recovery_mode():
|
|
62
57
|
# Recovery/Update mode (webrepl) - dependencies: Network, ConfigHandler
|
|
58
|
+
from sys import path
|
|
59
|
+
path.insert(0, "/modules")
|
|
63
60
|
from Network import auto_nw_config
|
|
64
61
|
from Config import cfgget
|
|
65
62
|
pwd = cfgget('appwd') # Get pwd from config
|
|
@@ -71,7 +68,11 @@ def __recovery_mode():
|
|
|
71
68
|
import webrepl
|
|
72
69
|
webrepl.start(password=pwd)
|
|
73
70
|
except Exception as e:
|
|
74
|
-
print(f"
|
|
71
|
+
print(f"[loader] webrepl failed: {e} - Reset .if_mode to micros and reboot")
|
|
72
|
+
with open('.if_mode', 'w') as f:
|
|
73
|
+
f.write("micros")
|
|
74
|
+
# Reboot machine
|
|
75
|
+
reset()
|
|
75
76
|
|
|
76
77
|
|
|
77
78
|
def __auto_restart_event():
|
|
@@ -82,10 +83,6 @@ def __auto_restart_event():
|
|
|
82
83
|
- value: micros [update was successful - reboot is necessary]
|
|
83
84
|
:return:
|
|
84
85
|
"""
|
|
85
|
-
from sys import platform
|
|
86
|
-
if platform == 'rp2':
|
|
87
|
-
print("[loader][ota-rebooter] SKIP on platform: rp2 (webrepl block)")
|
|
88
|
-
return
|
|
89
86
|
|
|
90
87
|
from utime import sleep
|
|
91
88
|
trigger_is_active = False
|
|
@@ -93,7 +90,7 @@ def __auto_restart_event():
|
|
|
93
90
|
# Wait after webrepl started for possible ota updates (~3s*5= 15sec)
|
|
94
91
|
while wait_update_tout > 0:
|
|
95
92
|
# Wait for micros turns to webrepl until timeout
|
|
96
|
-
if
|
|
93
|
+
if _is_micrOS():
|
|
97
94
|
# micrOS mode
|
|
98
95
|
print(f"[loader][ota-rebooter][micros][{wait_update_tout}] Wait for OTA update possible start")
|
|
99
96
|
wait_update_tout -= 1
|
|
@@ -102,19 +99,18 @@ def __auto_restart_event():
|
|
|
102
99
|
# Set trigger - if_mode changed to webrepl - ota update started - trigger wait
|
|
103
100
|
trigger_is_active = True
|
|
104
101
|
# Restart if trigger was activated
|
|
105
|
-
if trigger_is_active and
|
|
102
|
+
if trigger_is_active and _is_micrOS():
|
|
106
103
|
print("[loader][ota-rebooter][micros][trigger: True] OTA was finished - reboot")
|
|
107
104
|
# Create cleanup indicator file for ConfigHandler
|
|
108
|
-
with open('cleanup
|
|
105
|
+
with open('.cleanup', 'w') as f:
|
|
109
106
|
f.write('')
|
|
110
107
|
# Reboot machine
|
|
111
|
-
from machine import reset
|
|
112
108
|
reset()
|
|
113
109
|
sleep(3)
|
|
114
110
|
|
|
115
111
|
|
|
116
112
|
def main():
|
|
117
|
-
if
|
|
113
|
+
if _is_micrOS():
|
|
118
114
|
# Main mode
|
|
119
115
|
try:
|
|
120
116
|
print("[loader][main mode] Start micrOS (default)")
|
|
@@ -126,11 +122,6 @@ def main():
|
|
|
126
122
|
# Handle micrOS system crash (never happened...but) -> webrepl mode default pwd: ADmin123
|
|
127
123
|
print(f"[loader][main mode] micrOS start failed: {e}")
|
|
128
124
|
print("[loader][main mode] -> [recovery mode]")
|
|
129
|
-
if errlog_add is not None:
|
|
130
|
-
try:
|
|
131
|
-
errlog_add(f"[ERR][micrOSloader] start failed: {e}")
|
|
132
|
-
except:
|
|
133
|
-
pass
|
|
134
125
|
# Recovery aka webrepl mode
|
|
135
126
|
__recovery_mode()
|
|
136
127
|
__auto_restart_event()
|
micrOS/source/microIO.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
This module manages board-independent input and output operations
|
|
3
|
+
for the micrOS framework, ensuring compatibility across different
|
|
4
|
+
microcontrollers.
|
|
5
|
+
- Handles hardware-based pin configurations.
|
|
5
6
|
|
|
6
7
|
Designed by Marcell Ban aka BxNxM
|
|
7
8
|
"""
|
|
@@ -9,7 +10,9 @@ Designed by Marcell Ban aka BxNxM
|
|
|
9
10
|
# IMPORTS #
|
|
10
11
|
#################################################################
|
|
11
12
|
from sys import platform
|
|
12
|
-
from
|
|
13
|
+
from uos import uname
|
|
14
|
+
from Files import ilist_fs, OSPath
|
|
15
|
+
from Logger import syslog
|
|
13
16
|
|
|
14
17
|
#################################################################
|
|
15
18
|
# GPI/O ON DEVICE #
|
|
@@ -27,24 +30,25 @@ def detect_platform():
|
|
|
27
30
|
"""
|
|
28
31
|
Unified platform detection for micrOS
|
|
29
32
|
"""
|
|
30
|
-
if 'esp32' in platform:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
if 'esp32' in platform: # esp32 family
|
|
34
|
+
board = str(uname()[-1]).lower()
|
|
35
|
+
if 'tinypico' in board:
|
|
36
|
+
return 'tinypico'
|
|
37
|
+
if 'esp32s2' in board:
|
|
38
|
+
return 'esp32s2'
|
|
39
|
+
if 'esp32s3' in board:
|
|
40
|
+
return 'esp32s3'
|
|
41
|
+
if 'esp32c3' in board:
|
|
42
|
+
return 'esp32c3'
|
|
43
|
+
if 'esp32c6' in board:
|
|
44
|
+
return 'esp32c6'
|
|
45
|
+
return 'esp32' # esp32 family: general
|
|
42
46
|
return platform # esp8266 or something else
|
|
43
47
|
|
|
44
48
|
|
|
45
49
|
def set_pinmap(map_data=None):
|
|
46
50
|
"""
|
|
47
|
-
Select pin map on device (init from ConfigHandler)
|
|
51
|
+
!Select pin map on device (init from ConfigHandler!!!)
|
|
48
52
|
- map_data: default None (n/a), platform detection, like: esp32 -> IO_esp32.mpy
|
|
49
53
|
- map_data: string input, like: my_pinmap -> IO_my_pinmap.mpy
|
|
50
54
|
Parse map_data use cases:
|
|
@@ -53,99 +57,132 @@ def set_pinmap(map_data=None):
|
|
|
53
57
|
u.c.3: esp32; dht:10; neop:15 - selected LP + manual overwrite pins
|
|
54
58
|
"""
|
|
55
59
|
|
|
56
|
-
# HANDLE PIN MAP PARAMS (
|
|
60
|
+
# HANDLE PIN MAP PARAMS (io_file + custom pin lut)
|
|
57
61
|
parsed_data = ["n/a"] if map_data is None else map_data.strip().split(';')
|
|
58
|
-
|
|
62
|
+
io_file = "n/a" if ':' in parsed_data[0] else parsed_data.pop(0)
|
|
59
63
|
# SAVE PARSED CUSTOM PIN OVERWRITE (manual mapping - MAPPING)
|
|
60
64
|
try:
|
|
61
65
|
PinMap.MAPPING = {pin.split(':')[0].strip(): int(pin.split(':')[1].strip()) for pin in parsed_data if ':' in pin}
|
|
62
66
|
except Exception as e:
|
|
63
|
-
|
|
64
|
-
print(f"[io] custom pin key(s) parse error: {e}")
|
|
67
|
+
syslog(f"[io] custom pin key(s) parse error: {e}")
|
|
65
68
|
|
|
66
69
|
# SELECT LOOKUP TABLE BASED ON PLATFORM / User input
|
|
67
|
-
if isinstance(
|
|
68
|
-
if f"IO_{
|
|
69
|
-
PinMap.MAPPING_LUT =
|
|
70
|
+
if isinstance(io_file, str) and io_file != 'n/a':
|
|
71
|
+
if f"IO_{io_file}" in [io.split('.')[0] for io in ilist_fs(OSPath.MODULES, type_filter='f', select="IO")]:
|
|
72
|
+
PinMap.MAPPING_LUT = io_file
|
|
70
73
|
return PinMap.MAPPING_LUT
|
|
71
74
|
PinMap.MAPPING_LUT = detect_platform()
|
|
72
75
|
return PinMap.MAPPING_LUT
|
|
73
76
|
|
|
74
77
|
|
|
75
|
-
def
|
|
78
|
+
def resolve_pin(tag:str) -> int:
|
|
76
79
|
"""
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
DEPRECATED IN LoadModules - USE bind_pin(tag) wrapper instead
|
|
81
|
+
This function implements IO allocation/booking (with overload protection)
|
|
82
|
+
- based on platform/custom IO_.py lookup table file
|
|
83
|
+
:parm tag: resolve pin name by logical name (like: switch_1)
|
|
84
|
+
return: integer (pin number)
|
|
81
85
|
"""
|
|
82
|
-
# Get pin number on platform by pin key
|
|
83
|
-
pin_num =
|
|
86
|
+
# Get pin number on platform by pin key/name
|
|
87
|
+
pin_num = __resolve_pin(tag)
|
|
84
88
|
if isinstance(pin_num, int):
|
|
85
89
|
# Check pin is already used
|
|
86
90
|
if pin_num in PinMap.IO_USE_DICT:
|
|
87
91
|
key_cache = PinMap.IO_USE_DICT[pin_num]
|
|
88
|
-
if key_cache ==
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
PinMap.IO_USE_DICT[pin_num] = key
|
|
95
|
-
print(f"[io] Init pin: {key}:{pin_num}")
|
|
92
|
+
if key_cache == tag:
|
|
93
|
+
return pin_num # [io] ENABLE ReInit pin with same tag name
|
|
94
|
+
raise Exception(f"[io] Pin {tag} is busy: {key_cache}:{pin_num}")
|
|
95
|
+
# tag: pin number, value: pin tag (alias)
|
|
96
|
+
PinMap.IO_USE_DICT[pin_num] = tag
|
|
97
|
+
print(f"[io] Init pin: {tag}:{pin_num}")
|
|
96
98
|
return pin_num
|
|
97
99
|
|
|
98
100
|
|
|
99
|
-
def
|
|
101
|
+
def register_pin(tag:str, number:int) -> int:
|
|
102
|
+
"""
|
|
103
|
+
DEPRECATED IN LoadModules - USE bind_pin(tag, number) wrapper instead
|
|
104
|
+
Book pin (with overload protection) without IO_platform.py file editing
|
|
105
|
+
:param tag: associated pin name for pin number
|
|
106
|
+
:param number: pin number as integer
|
|
107
|
+
return: pin number
|
|
108
|
+
"""
|
|
109
|
+
allocated_tag = PinMap.IO_USE_DICT.get(number, None)
|
|
110
|
+
if allocated_tag is None:
|
|
111
|
+
# Save custom pin - same as cstmpmap config param
|
|
112
|
+
PinMap.MAPPING[tag] = number
|
|
113
|
+
# Save pin number as used - same as resolve_pin does
|
|
114
|
+
PinMap.IO_USE_DICT[number] = tag
|
|
115
|
+
else:
|
|
116
|
+
reg_tag = PinMap.IO_USE_DICT.get(number)
|
|
117
|
+
if tag != reg_tag: # detect conflict
|
|
118
|
+
raise Exception(f"[io-register] {tag}:{number} already in use: {reg_tag}")
|
|
119
|
+
return number
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def bind_pin(tag, number=None) -> int:
|
|
123
|
+
"""
|
|
124
|
+
Universal pin handler - assign+lock pin for a tag -> application
|
|
125
|
+
:param tag: tag for application pin booking with built-in tag detection from IO_<device>.py
|
|
126
|
+
:param number: optional parameter to overwrite default tag:pin relation
|
|
127
|
+
DO NOT HANDLE ERROR HERE - SUB ELEMENTS HAVE TO THROUGH ERROR INFO FOR LOAD MODULES
|
|
128
|
+
"""
|
|
129
|
+
if number is None:
|
|
130
|
+
return resolve_pin(tag)
|
|
131
|
+
if isinstance(number, int):
|
|
132
|
+
return register_pin(tag, number)
|
|
133
|
+
raise Exception("microIO.allocate_pin number parameter must be integer!")
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def pinmap_info(show_all=False) -> dict:
|
|
100
137
|
"""
|
|
101
138
|
Debug info function to get active pinmap and booked IO-s
|
|
102
139
|
"""
|
|
103
|
-
|
|
140
|
+
inf = {'map': PinMap.MAPPING_LUT, 'booked': PinMap.IO_USE_DICT, 'custom': PinMap.MAPPING}
|
|
141
|
+
if show_all:
|
|
142
|
+
iomaps = list([iomap.replace("IO_", "").split(".")[0]
|
|
143
|
+
for iomap in ilist_fs(OSPath.MODULES, type_filter='f', select="IO")])
|
|
144
|
+
inf.update({"known_maps": iomaps})
|
|
145
|
+
return inf
|
|
104
146
|
|
|
105
147
|
|
|
106
|
-
def
|
|
148
|
+
def pinmap_search(keys):
|
|
107
149
|
"""
|
|
108
|
-
keys: one or list of pin names (like: switch_1) to resolve physical pin number
|
|
109
|
-
Gives information where to connect the selected periphery to control
|
|
110
|
-
DO NOT USE RETURNED PIN NUMBERS FOR FUNC ALLOCATION IN LMs!!!
|
|
111
|
-
- USE: physical_pin function for protected IO allocation (overload protection)
|
|
150
|
+
:param keys: one or list of pin names (like: switch_1) to resolve physical pin number
|
|
151
|
+
Gives information where to connect the selected periphery to control WITHOUT PIN BOOKING
|
|
112
152
|
"""
|
|
113
153
|
if isinstance(keys, str):
|
|
114
|
-
|
|
115
|
-
num = __resolve_pin_number(keys)
|
|
116
|
-
except:
|
|
117
|
-
num = None
|
|
118
|
-
return {keys: num}
|
|
154
|
+
keys = [keys]
|
|
119
155
|
pins_cache = {}
|
|
120
156
|
for pin_name in keys:
|
|
121
157
|
try:
|
|
122
|
-
num =
|
|
158
|
+
num = __resolve_pin(pin_name)
|
|
123
159
|
except:
|
|
124
160
|
num = None
|
|
125
161
|
pins_cache[pin_name] = num
|
|
126
162
|
return pins_cache
|
|
127
163
|
|
|
128
164
|
|
|
129
|
-
def
|
|
165
|
+
def __resolve_pin(name:str):
|
|
130
166
|
"""
|
|
131
167
|
Dynamic const lookup table handling by var name
|
|
132
|
-
:param
|
|
168
|
+
:param name: logical pin name, example: neop, dht, etc.
|
|
133
169
|
"""
|
|
134
|
-
custom_pin = PinMap.MAPPING.get(
|
|
170
|
+
custom_pin = PinMap.MAPPING.get(name, None) # Get user custom pin map (if any)
|
|
135
171
|
if custom_pin is None:
|
|
136
172
|
# [1] Handle default pin resolve from static lut
|
|
137
173
|
mio = f'IO_{PinMap.MAPPING_LUT}'
|
|
138
174
|
try:
|
|
139
175
|
exec(f'import {mio}')
|
|
140
176
|
# GET KEY PARAM VALUE
|
|
141
|
-
out = eval(f'{mio}.{
|
|
177
|
+
out = eval(f'{mio}.{name}')
|
|
142
178
|
# Workaround to support normal python (tuple output), micropython (exact output - int)
|
|
143
179
|
return int(out[0]) if isinstance(out, tuple) else out
|
|
144
180
|
except Exception as e:
|
|
145
181
|
# Missing LP module - don't die
|
|
146
182
|
if "No module named" in str(e):
|
|
147
183
|
return None
|
|
148
|
-
# Other issue (
|
|
184
|
+
# Other issue (name not found, etc...)
|
|
185
|
+
syslog(f"[ERR] io-resolve {name}: {e}")
|
|
149
186
|
raise Exception(f"[io-resolve] error: {e}")
|
|
150
187
|
# [2] Handle user custom pins from cstmpmap (overwrite default)
|
|
151
188
|
return custom_pin
|
|
@@ -44,15 +44,25 @@ stppr_4 = const(27) # D27 - stepper motor pin
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
# I2C BUS
|
|
47
|
-
i2c_sda = const(21) #
|
|
48
|
-
i2c_scl = const(22) #
|
|
47
|
+
i2c_sda = const(21) # D21 - oled - data
|
|
48
|
+
i2c_scl = const(22) # D22 - oled - clock
|
|
49
|
+
# I2S BUS
|
|
50
|
+
i2s_sck = const(26) # Serial clock
|
|
51
|
+
i2s_ws = const(25) # Word select
|
|
52
|
+
i2s_sd = const(33) # Serial data
|
|
49
53
|
|
|
50
54
|
|
|
51
55
|
# EXTERNAL EVENT IRQ
|
|
52
|
-
irq1 = const(4)
|
|
53
|
-
irq2 = const(18)
|
|
54
|
-
irq3 = const(5)
|
|
55
|
-
irq4 = const(13)
|
|
56
|
+
irq1 = const(4) # D4 - event irq pin
|
|
57
|
+
irq2 = const(18) # D18 - event irq pin
|
|
58
|
+
irq3 = const(5) # D19 - event irq pin
|
|
59
|
+
irq4 = const(13) # D13 - event irq pin
|
|
60
|
+
|
|
61
|
+
js_right = const(4) # oled_ui joystick
|
|
62
|
+
js_left = const(18)
|
|
63
|
+
js_up = const(5)
|
|
64
|
+
js_down = const(13)
|
|
65
|
+
js_press = const(34) # oled_ui center/ok button
|
|
56
66
|
|
|
57
67
|
touch_0 = const(13) # D13 - touch sensor TODO
|
|
58
68
|
|
|
@@ -61,9 +71,10 @@ touch_0 = const(13) # D13 - touch sensor TODO
|
|
|
61
71
|
hcsrtrig = const(32) # D32 - distance HCSR04 trigger pin
|
|
62
72
|
hcsrecho = const(35) # D35 - distance HCSR04 echo pin
|
|
63
73
|
dhtpin = const(32) # D32 - dht_pin 11 and 22
|
|
64
|
-
co2 = const(35) # D35 - CO2
|
|
65
|
-
temp6000 = const(36) # VP
|
|
66
|
-
ph = const(39) # VN
|
|
74
|
+
co2 = const(35) # D35 - [ADC] CO2
|
|
75
|
+
temp6000 = const(36) # VP - [ADC] light sensor TEMP6000
|
|
76
|
+
ph = const(39) # VN - [ADC] PH sensor
|
|
67
77
|
ds18 = const(19) # D19 - DS18B20 - temp. sensor
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
mic = const(39) # VN - [ADC] microphone
|
|
79
|
+
rot_dt = const(13) # [IRQ] rotary encoder data
|
|
80
|
+
rot_clk = const(12) # [IRQ] rotary encoder clock
|
|
@@ -34,7 +34,12 @@ irq1 = const(5) # event irq pin
|
|
|
34
34
|
irq2 = const(6) # event irq pin
|
|
35
35
|
irq3 = const(7) # event irq pin
|
|
36
36
|
irq4 = const(8) # event irq pin
|
|
37
|
-
|
|
37
|
+
|
|
38
|
+
js_right = const(5) # oled_ui joystick
|
|
39
|
+
js_left = const(6)
|
|
40
|
+
js_up = const(7)
|
|
41
|
+
js_down = const(8)
|
|
42
|
+
js_press = const(20) # oled_ui center/ok button
|
|
38
43
|
|
|
39
44
|
# I2C BUS
|
|
40
45
|
i2c_sda = const(8) # oled - data
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from micropython import const
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Seeed Studio XIAO ESP32-C6
|
|
5
|
+
|
|
6
|
+
BOARD MICROPYTHON
|
|
7
|
+
D0/A0 - GPIO 0
|
|
8
|
+
D1/A1 - GPIO 1
|
|
9
|
+
D2/A2 - GPIO 2
|
|
10
|
+
D3 - GPIO 21
|
|
11
|
+
D4 SDA - GPIO 22
|
|
12
|
+
D5 SCL - GPIO 23
|
|
13
|
+
D6 TX0 - GPIO 16
|
|
14
|
+
D7 RX0 - GPIO 17
|
|
15
|
+
D8 SCK - GPIO 19
|
|
16
|
+
D9 MISO - GPIO 20
|
|
17
|
+
D10 MOSI - GPIO 18
|
|
18
|
+
BUILTIN LED - GPIO 15
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
# BUILTIN LED
|
|
22
|
+
builtin = const(-15) # BUILT IN LED - progress_led
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# I2C BUS
|
|
26
|
+
i2c_sda = const(22) # D4 - data
|
|
27
|
+
i2c_scl = const(23) # D5 - clock
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# EXTERNAL EVENT IRQ
|
|
31
|
+
irq1 = const(21) # D3 - event irq1 pin
|
|
32
|
+
irq2 = const(2) # D2 - event irq2 pin
|
|
33
|
+
irq3 = const(1) # D1 - event irq3 pin
|
|
34
|
+
irq4 = const(0) # D0 - event irq4 pin
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
neop = const(18) # D10 - neopixel OneWire bus [PWM]
|
|
38
|
+
|
|
@@ -52,7 +52,12 @@ irq1 = const(39) # event irq pin
|
|
|
52
52
|
irq2 = const(37) # event irq pin
|
|
53
53
|
irq3 = const(35) # event irq pin
|
|
54
54
|
irq4 = const(33) # event irq pin
|
|
55
|
-
|
|
55
|
+
|
|
56
|
+
js_right = const(39) # oled_ui joystick
|
|
57
|
+
js_left = const(37)
|
|
58
|
+
js_up = const(35)
|
|
59
|
+
js_down = const(33)
|
|
60
|
+
js_press = const(34) # oled_ui center/ok button
|
|
56
61
|
|
|
57
62
|
|
|
58
63
|
# SENSORS
|
|
@@ -1,7 +1,43 @@
|
|
|
1
1
|
from micropython import const
|
|
2
2
|
|
|
3
|
+
#### DEFINE CUSTOM PROGRESS LED LOGIC ####
|
|
4
|
+
class WS2812:
|
|
5
|
+
NEOPIXEL = None
|
|
6
|
+
WHEEL = None
|
|
7
|
+
PIN = const(38) # BUILT IN LED - progress_led
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
# init ws2812
|
|
11
|
+
from machine import Pin
|
|
12
|
+
from neopixel import NeoPixel
|
|
13
|
+
WS2812.NEOPIXEL = NeoPixel(Pin(WS2812.PIN), 1)
|
|
14
|
+
except Exception as e:
|
|
15
|
+
print(f"[Error] IO error, esp21se ws2812: {e}")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _step_ws2812(pin=False):
|
|
19
|
+
if pin:
|
|
20
|
+
return WS2812.PIN
|
|
21
|
+
|
|
22
|
+
def _color_wheel():
|
|
23
|
+
while True:
|
|
24
|
+
yield 10, 0, 0
|
|
25
|
+
yield 5, 5, 0
|
|
26
|
+
yield 0, 10, 0
|
|
27
|
+
yield 0, 5, 5
|
|
28
|
+
yield 0, 0, 10
|
|
29
|
+
yield 5, 0, 5
|
|
30
|
+
|
|
31
|
+
if WS2812.WHEEL is None:
|
|
32
|
+
WS2812.WHEEL = _color_wheel()
|
|
33
|
+
WS2812.NEOPIXEL[0] = next(WS2812.WHEEL)
|
|
34
|
+
WS2812.NEOPIXEL.write()
|
|
35
|
+
return True # No double-blink
|
|
36
|
+
|
|
37
|
+
#######################################
|
|
38
|
+
|
|
3
39
|
# BUILTIN LED
|
|
4
|
-
builtin =
|
|
40
|
+
builtin = _step_ws2812 # BUILT IN LED - progress_led
|
|
5
41
|
|
|
6
42
|
# ANALOG RGB + WW + CW
|
|
7
43
|
redgb = const(37) # - rgb red channel [PWM]
|
|
@@ -57,7 +93,12 @@ irq1 = const(45) # - event irq pin
|
|
|
57
93
|
irq2 = const(48) # - event irq pin
|
|
58
94
|
irq3 = const(47) # - event irq pin
|
|
59
95
|
irq4 = const(21) # - event irq pin
|
|
60
|
-
|
|
96
|
+
|
|
97
|
+
js_right = const(45) # oled_ui joystick
|
|
98
|
+
js_left = const(48)
|
|
99
|
+
js_up = const(47)
|
|
100
|
+
js_down = const(21)
|
|
101
|
+
js_press = const(20) # oled_ui center/ok button
|
|
61
102
|
|
|
62
103
|
touch_0 = const(0) # - touch sensor TODO
|
|
63
104
|
|