diff --git a/.gitattributes b/.gitattributes
index 745bc27a1..ad391420f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -15,3 +15,9 @@
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
+
+# No changes for zip files
+*.zip binary
+*.autoconf binary
+*.bin binary
+*.tapp binary
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index c70982081..ff5fa0de6 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -6,7 +6,7 @@
- [ ] The pull request is done against the latest development branch
- [ ] Only relevant files were touched
- [ ] Only one feature/fix was added per PR and the code change compiles without warnings
- - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.4.9
+ - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.6
- [ ] The code change is tested and works with Tasmota core ESP32 V.2.0.14
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
diff --git a/.github/workflows/Tasmota_build_devel.yml b/.github/workflows/Tasmota_build_devel.yml
index 50eedbea2..aada97400 100644
--- a/.github/workflows/Tasmota_build_devel.yml
+++ b/.github/workflows/Tasmota_build_devel.yml
@@ -20,9 +20,9 @@ jobs:
if: github.repository == 'arendst/Tasmota' && github.ref_name == 'development'
continue-on-error: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install clang compiler
@@ -38,14 +38,18 @@ jobs:
run: |
cd lib/libesp32/berry_matter
../berry/berry -s -g solidify_all.be
+ - name: Berry Animate Code
+ run: |
+ cd lib/libesp32/berry_animate
+ ../berry/berry -s -g solidify_all.be
- name: LVGL Berry Code
run: |
cd lib/libesp32_lvgl/lv_binding_berry
../../libesp32/berry/berry -s -g solidify_all.be
- - uses: jason2866/upload-artifact@v2.0.2
+ - uses: jason2866/upload-artifact@v2.0.3
with:
- name: '["berry_tasmota", "berry_matter", "berry_lvgl", "berry_header"]'
- path: '["./lib/libesp32/berry_tasmota/src/solidify", "./lib/libesp32/berry_matter/src/solidify", "./lib/libesp32_lvgl/lv_binding_berry/src/solidify", "./lib/libesp32/berry/generate"]'
+ name: '["berry_tasmota", "berry_matter", "berry_animate", "berry_lvgl", "berry_header"]'
+ path: '["./lib/libesp32/berry_tasmota/src/solidify", "./lib/libesp32/berry_matter/src/solidify", "./lib/libesp32/berry_animate/src/solidify", "./lib/libesp32_lvgl/lv_binding_berry/src/solidify", "./lib/libesp32/berry/generate"]'
push_solidified:
needs: be_solidify
@@ -53,24 +57,26 @@ jobs:
if: github.repository == 'arendst/Tasmota' && github.ref_name == 'development'
continue-on-error: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- - uses: jason2866/download-artifact@v3
+ - uses: jason2866/download-artifact@v3.0.4
with:
name: |
berry_tasmota
berry_matter
+ berry_animate
berry_lvgl
berry_header
path: |
./lib/libesp32/berry_tasmota/src/solidify
./lib/libesp32/berry_matter/src/solidify
+ ./lib/libesp32/berry_animate/src/solidify
./lib/libesp32_lvgl/lv_binding_berry/src/solidify
./lib/libesp32/berry/generate
- - uses: stefanzweifel/git-auto-commit-action@v4
+ - uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Solidified Code updated
@@ -94,11 +100,11 @@ jobs:
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: development
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -110,7 +116,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload safeboot firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware_safeboot
path: ./build_output
@@ -134,11 +140,11 @@ jobs:
- tasmota-zbbridge
- tasmota-zigbee
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: development
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -148,7 +154,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
@@ -179,11 +185,11 @@ jobs:
- tasmota32c2-arduino30
- tasmota32c6cdc-arduino30
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: development
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -193,7 +199,7 @@ jobs:
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
- uses: actions/download-artifact@v3
+ uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./firmware
@@ -203,7 +209,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
@@ -218,11 +224,11 @@ jobs:
variant: [ tasmota, tasmota32 ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: development
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -232,7 +238,7 @@ jobs:
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
- uses: actions/download-artifact@v3
+ uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./firmware
@@ -242,7 +248,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- name: Upload language firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
diff --git a/.github/workflows/Tasmota_build_master.yml b/.github/workflows/Tasmota_build_master.yml
index 1af64ebc8..c7b5af17c 100644
--- a/.github/workflows/Tasmota_build_master.yml
+++ b/.github/workflows/Tasmota_build_master.yml
@@ -33,11 +33,11 @@ jobs:
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -49,7 +49,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload safeboot firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware_safeboot
path: ./build_output
@@ -72,11 +72,11 @@ jobs:
- tasmota-zbbridge
- tasmota-zigbee
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -86,7 +86,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
@@ -115,11 +115,11 @@ jobs:
- tasmota32s3cdc
- tasmota32solo1
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -127,7 +127,7 @@ jobs:
pip install wheel
pip install -U platformio
- name: Download safeboot firmwares
- uses: actions/download-artifact@v3
+ uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./firmware
@@ -137,7 +137,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
@@ -152,11 +152,11 @@ jobs:
variant: [ tasmota, tasmota32 ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -164,7 +164,7 @@ jobs:
pip install wheel
pip install -U platformio
- name: Download safeboot firmwares
- uses: actions/download-artifact@v3
+ uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./firmware
@@ -174,7 +174,7 @@ jobs:
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- name: Upload language firmware artifacts
- uses: actions/upload-artifact@v3
+ uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
@@ -184,14 +184,14 @@ jobs:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Download Tasmota firmwares
- uses: actions/download-artifact@v3
+ uses: jason2866/download-artifact@v3.0.4
with:
name: firmware
path: ./mv_firmware
- name: Download safeboot firmwares
- uses: actions/download-artifact@v3
+ uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./mv_firmware
diff --git a/.github/workflows/build_all_the_things.yml b/.github/workflows/build_all_the_things.yml
index 2d0d84e61..3984a31ab 100644
--- a/.github/workflows/build_all_the_things.yml
+++ b/.github/workflows/build_all_the_things.yml
@@ -7,6 +7,7 @@ on:
paths:
- '**.c'
- '**.cpp'
+ - '**.be'
- '**.h'
- '**.hpp'
- '**.ino'
@@ -26,9 +27,9 @@ jobs:
variant:
- tasmota32-safeboot
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -40,13 +41,13 @@ jobs:
#platformio update
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- - uses: actions/upload-artifact@v3
+ - uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
os-check-mac:
- runs-on: macOS-12
+ runs-on: macos-14
if: github.repository == 'arendst/Tasmota'
strategy:
fail-fast: true
@@ -54,11 +55,11 @@ jobs:
variant:
- tasmota32-webcam
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
- python-version: '3.x'
+ python-version: '3.12'
- name: Install dependencies
run: |
pip install wheel
@@ -68,7 +69,7 @@ jobs:
#platformio update
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- - uses: actions/upload-artifact@v3
+ - uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
@@ -117,9 +118,9 @@ jobs:
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -133,7 +134,7 @@ jobs:
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- - uses: actions/upload-artifact@v3
+ - uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
@@ -147,9 +148,9 @@ jobs:
variant: [ tasmota ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
@@ -161,7 +162,7 @@ jobs:
#platformio update
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- - uses: actions/upload-artifact@v3
+ - uses: jason2866/upload-artifact@v2.0.3
with:
name: firmware
path: ./build_output
diff --git a/.github/workflows/copy_change.yml b/.github/workflows/copy_change.yml
index da236fc52..9ff05ed09 100644
--- a/.github/workflows/copy_change.yml
+++ b/.github/workflows/copy_change.yml
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Push I2CDevices.md to https://github.com/Tasmota/docs
uses: Jason2866/copy_file_to_another_repo_action@main
env:
diff --git a/.github/workflows/stale-actions.yml b/.github/workflows/stale-actions.yml
index b99f6f555..e3b6856e0 100644
--- a/.github/workflows/stale-actions.yml
+++ b/.github/workflows/stale-actions.yml
@@ -8,7 +8,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- - uses: actions/stale@v6.0.1
+ - uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 25
diff --git a/.gitignore b/.gitignore
index dcc81a15d..6ef9fd6b5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,5 +39,6 @@ lib/libesp32/berry/berry
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/settings.json
+.vscode/extensions.json
*.bak
*.code-workspace
diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile
index f16b02389..9e0648c64 100644
--- a/.gitpod.Dockerfile
+++ b/.gitpod.Dockerfile
@@ -1,3 +1,3 @@
-FROM gitpod/workspace-full
-
+FROM gitpod/workspace-python-3.11
+
USER gitpod
diff --git a/.gitpod.yml b/.gitpod.yml
index 0425a416b..e85868905 100644
--- a/.gitpod.yml
+++ b/.gitpod.yml
@@ -1,11 +1,9 @@
tasks:
- - command: pip3 install -U platformio && platformio run -e tasmota
+ - command: pip install -U platformio && pip install --upgrade pip && platformio run -t clean -e tasmota
image:
file: .gitpod.Dockerfile
vscode:
extensions:
- - Atishay-Jain.All-Autocomplete
- - esbenp.prettier-vscode
- shardulm94.trailing-spaces
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 000000000..080e70d08
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,10 @@
+{
+ // See http://go.microsoft.com/fwlink/?LinkId=827846
+ // for the documentation about the extensions.json format
+ "recommendations": [
+ "platformio.platformio-ide"
+ ],
+ "unwantedRecommendations": [
+ "ms-vscode.cpptools-extension-pack"
+ ]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index f764ed574..7714ebe96 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -52,7 +52,7 @@
},
{
"text": "$(arrow-right)",
- "tooltip": "PlatformIO: Upload and Monitor",
+ "tooltip": "PlatformIO: Build, Upload and Monitor",
"commands": "platformio-ide.uploadAndMonitor"
},
{
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 28bf1da3d..03656d581 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,154 @@ All notable changes to this project will be documented in this file.
## [Released]
+## [13.4.0] 20240214
+- Release Quinta
+
+## [13.3.0.5] 20240214
+### Added
+- Internal support for persistent JSON settings using single file
+- Command ``SetOption158`` to publish or suppress ModbusReceived MQTT messages (#20678)
+- ESP32 Core3 support for SPI ethernet on DM9051, W5500 and KSZ8851
+- Berry option to invert serial
+
+### Breaking Changed
+- ESP32 LVGL library from v8.3.11 to v9.0.0, some small breaking changes in C, none in HASPmota (#20659)
+
+### Changed
+- Matter improve `MtrInfo` (#20686)
+- Matter implement auto-attributes (#20694)
+
+### Fixed
+- Matter redirects for Advanced Matter configuration UI (#20690)
+- LVGL9 restore missing layouts (#20701)
+
+## [13.3.0.4] 20240205
+### Added
+- HASPmota support for `min` and `max` attribute in `slider` (#20582)
+- ESP32-C3 support for GPIO11 (#18350)
+- ESP32 support for Shelly Plus Add-On using DS18x20 or DHT11/AM2301/DHT21/DHT22/AM2302/AM2321/SI7021 on GPIO0/1 (#20580)
+- ESP32 MI32 Legacy initial support for sensors using BTHOME packet format (#20625)
+- Berry `introspect.contains` and `bytes.addfloat` (#20635)
+- Matter add human readable names for TimeSync cluster (#20666)
+
+### Breaking Changed
+- Matter aggregator relocated to endpoint 1 for Google compatibility, may break existing associations (#20654)
+
+### Changed
+- Library OneWire-Stickbreaker by TasmotaOneWire supporting Shelly Plus Add-On (#20580)
+- Refactored rules ``Subscribe`` using LList allowing full message size and enabled by default
+- Refactored rules USE_EXPRESSION and SUPPORT_IF_STATEMENT replacing LinkedList with arrays and enabled by default
+- ESP32 Core3 platform update from 2024.01.11 to 2024.01.12 (#20576)
+- Utouch optimizations, rgb i2c init (#20596)
+- GPIO Viewer update from 1.0.7 to 1.5.0
+- Miel HVAC lower the minimum temperature to 10C (#20628)
+
+### Fixed
+- Berry C mapping, raise an error if too many arguments are sent (#20604)
+- Matter error when removing device from Google Home (#20665)
+- Matter exception when fabrics is not initialized (#20667)
+
+## [13.3.0.3] 20240122
+### Added
+- Berry `debug.caller` (#20470)
+- GPIO Viewer user selection of assets website now defaults to `https://ota.tasmota.com/tasmota|tasmota32/gpio_viewer/assets`
+- Support for HardwareSerial invert (#15461)
+- SML support for IM350 (#20474)
+- LVGL `lv.str_arr` (#20480)
+- ESP32 MI BLE support for Xiaomi LYWSD02MMC (#20381)
+- LVGL option to add `lv.keyboard` extra widget (#20496)
+- GUI sensor separators (#20495)
+- Command ``TimedPower [,ON|OFF|TOGGLE|BLINK]`` executes ``Power [ON|OFF|TOGGLE|BLINK] `` and after executes ``Power [OFF|ON|TOGGLE|BLINK_OFF]``
+- Berry solidification of strings longer than 255 bytes (#20529)
+- Berry syntax coloring for Notepad++ by FransO (#20541)
+- Berry/Zigbee web hook per device for customized status display (#20542)
+- Zigbee ``ZbEmulation`` to selectively exclude some devices from Hue/Alexa emulation (#20552)
+
+### Changed
+- ESP32 Core2 platform update from 2024.01.00 to 2024.01.01 (#20508)
+- IP stack compatible with new Core3 IPv6 implementation (#20509)
+- Command ``TimedPower`` from erasing all timers to showing remaining timers
+- ESP8266 platform update from 2024.01.00 to 2024.01.01 (#20539)
+- ESP8266 Framework (Arduino Core) from v2.7.5 to v2.7.6 (#20539)
+- Refactored Pio filesystem download script (#20544)
+- Command ``TimedPower`` refactored from String to LList
+
+### Fixed
+- Scripter memory leak in `>w x` (#20473)
+- ESP8266 GPIO Viewer exception 9 on reading Analog GPIO
+- GPIO Viewer single instance
+- Zigbee ramdom crash in main page (#20481)
+- Web file upload response on upload error (#20340)
+- ESP32 shutter exception 6 (divide by zero) on ``ShutterMode 4`` (#20524)
+- GPIOViewer exception 3
+- Berry assigment to list with negative index (#20537)
+- Matter support for Alexa (#20545)
+- ESP8266 IPv6 support (#20539)
+- ESP32 Audio for Core3, MP3Stream and Shine (#20540)
+- ESP32 Core3 reset GPIOs 16/17 when PSRAM is not used (20547)
+
+### Removed
+- Max number of 30 backlog entries
+
+## [13.3.0.2] 20240111
+### Added
+- HASPmota type `chart` (#20372)
+- Berry add support for `tcpclientasync` in `tcpserver` (#20401)
+- Berry add `tasmota.urlbecload(url:string) -> bool` (#20412)
+- GPIO Viewer to see realtime GPIO states. Enable with define USE_GPIO_VIEWER
+- Berry `gpio.read_pwm` and `gpio.read_pwm_resolution` (#20414)
+- Berry `gpio.get_pin_type` and `gpio.ger_pin_type_index` (#20415)
+- Berry `gpio.read_pwm` and `gpio.read_pwm_resolution` (#20414)
+- Berry GPIO viewer initial version using async webserver (#20416)
+- Berry add `string` to `bytes()` (#20420)
+- Berry button to dynamically load GPIO Viewer with Berry backend (#20424)
+- Berry `debug_panel.tapp` to display real-time heap and wifi rssi (#20436)
+- Berry `webserver.header` to read browser sent headers (#20447)
+- Berry provide lightweight options for `tasmota.wifi/eth/memory/rtc` (#20448)
+- Berry `tasmota.webcolor` (#20454)
+- Support for pipsolar inverter (#20408)
+
+### Changed
+- Renamed button "Consoles" to "Tools"
+- ESP32 platform update from 2023.12.00 to 2024.01.00 (#20445)
+- Header `Host` is now collected by Webserver (#20446)
+- Webcam tweaks (#20451)
+- ESP8266 platform update from 2023.04.00 to 2024.01.00 (#20467)
+- ESP8266 Framework (Arduino Core) from v2.7.4.9 to v2.7.5 (#20467)
+
+### Fixed
+- ESP32 Zigbee Aqara attributes (#20452)
+
+## [13.3.0.1] 20240101
+### Added
+- Support for Sonoff Basic R4 Magic Switch (#20247)
+- Support for CST816S touch interface (#20213)
+- NeoPool hydrolysis FL1 and Redox flag (#20258)
+- Matter support for password for remote Tasmota devices (#20296)
+- Display of active drivers using command ``status 4``
+- ESP32 used UART information
+- HASPmota `haspmota.page_show()` to change page (#20333)
+- Berry `introspect.set()` for class attributes (#20339)
+- Support negative power on BL0942 using index 5..8 (#20322)
+
+### Breaking Changed
+- Refactoring of Berry `animate` module for WS2812 Leds (#20236)
+
+### Changed
+- Support syslog updates every sleep or every second if `#define SYSLOG_UPDATE_SECOND` (#20260)
+- ESP32 platform update from 2023.11.01 to 2023.12.00 (#20298)
+- Moved Berry animate to its own `berry_animate` lib (#20309)
+- Relax checks of Partition Wizard for newest Shelly (#20349)
+
+### Fixed
+- Matter Contact sensor was not triggering any update (#20232)
+- CVE-2021-36603 Cross Site Scripting (XSS) vulnerability (#12221)
+- ESP32 piezo ceramic buzzer doesn't buzz (#20118)
+- Syslog server warning caused by lack of field and hostname starting with 'z' (#14689)
+- Support for Domoticz floor/room topics. Regression from v12.0.1 (#20299)
+- Berry claiming UART0 if needed (#20324)
+- LVGL fix type for lv_imgbtn (#20354)
+
## [13.3.0] 20231213
- Release Quinlan
@@ -40,6 +188,7 @@ All notable changes to this project will be documented in this file.
- Matter update hierarchy of plugins (#19915)
- NeoPool ``NPHydrolysis`` percent and unit (#19924)
- Thermostat JSON index from 0 to 1 (#20011)
+- ESP32 platform update from 2023.11.00 to 2023.11.01 (#20087)
### Fixed
- Scripter timer issue (#19914)
diff --git a/CODE_OWNERS.md b/CODE_OWNERS.md
index b0d05100f..f8b14ee9f 100644
--- a/CODE_OWNERS.md
+++ b/CODE_OWNERS.md
@@ -79,11 +79,11 @@ In addition to @arendst the following code is mainly owned by:
| xdrv_65_tuyamcubr | David Gwynne
| xdrv_66_tm1638 | @arendst
| xdrv_67_mcp23xxx | @arendst
-| xdrv_68_zerocrossDimmer.ino | @stefanbode
+| xdrv_68_zerocrossDimmer | @stefanbode
| xdrv_69_pca9557 | @cctweaker
-| xdrv_70 |
-| xdrv_71 |
-| xdrv_72 |
+| xdrv_70_1_hdmi_cec | @s-hadinger
+| xdrv_71_magic_switch | @barbudor
+| xdrv_72_pipsolar | @chefpro
| xdrv_73 |
| xdrv_74 |
| xdrv_75 |
@@ -100,7 +100,12 @@ In addition to @arendst the following code is mainly owned by:
| xdrv_88_esp32_shelly_pro | @arendst
| xdrv_89_esp32_dali | @eeak
| xdrv_90_esp32_dingtian_relay | @barbudor
+| xdrv_91_ |
+| xdrv_92_ |
+| xdrv_93_ |
+| xdrv_94_ |
| |
+| xdrv_121_gpioviewer | @arendst
| xdrv_122_file_settings_demo | @arendst
| xdrv_127_debug | @arendst
| |
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index aced10132..f308ce48f 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -34,11 +34,11 @@ While fallback or downgrading is common practice it was never supported due to S
## Supported Core versions
-This release will be supported from ESP8266/Arduino library Core version **2.7.4.9** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
+This release will be supported from ESP8266/Arduino library Core version **2.7.6** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
This release will be supported from ESP32/Arduino library Core version **2.0.14**.
-Support of ESP8266 Core versions before 2.7.4.9 and ESP32 Core versions before 2.0.14 have been removed.
+Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 2.0.14 have been removed.
## Support of TLS
@@ -55,7 +55,7 @@ Easy initial installation of Tasmota can be performed using the [Tasmota WebInst
## Provided Binary Downloads
### ESP8266 or ESP8285 based
-The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.4.9**.
+The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.6**.
- **tasmota.bin** = The Tasmota version with most drivers for 1M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota-4M.bin** = The Tasmota version with most drivers and filesystem for 4M+ flash.
@@ -75,7 +75,7 @@ Latest released binaries can be downloaded from
- http://ota.tasmota.com/tasmota/release
Historical binaries can be downloaded from
-- http://ota.tasmota.com/tasmota/release-13.3.0
+- http://ota.tasmota.com/tasmota/release-13.4.0
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
@@ -106,7 +106,7 @@ Latest released binaries can be downloaded from
- https://ota.tasmota.com/tasmota32/release
Historical binaries can be downloaded from
-- https://ota.tasmota.com/tasmota32/release-13.3.0
+- https://ota.tasmota.com/tasmota32/release-13.4.0
The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin``
@@ -116,69 +116,100 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
[Complete list](BUILDS.md) of available feature and sensors.
-## Changelog v13.3.0 Quinlan
+## Changelog v13.4.0 Quinta
### Added
-- Support for ESP32-C2 and ESP32-C6 using Arduino Core3
-- Command ``GpioRead`` to show input state [#19810](https://github.com/arendst/Tasmota/issues/19810)
-- Command ``WebCanvas linear-gradient(#F02 7%,#F93,#FF4,#082,#00F,#708 93%)`` to set GUI canvas
-- I2C bus2 support to iAQ core sensor [#19799](https://github.com/arendst/Tasmota/issues/19799)
-- I2C bus2 support to HTU temperature and humidity sensor
-- I2C bus2 support to BH1750 ambient light sensor
-- I2C bus2 support to ADS1115 A/D Converter
-- I2C bus2 support to SHTxX temperature and humidity sensor
-- I2C bus2 support to HYTxxx temperature and humidity sensor
-- I2C bus2 support to SI1145/6/7 Ultra violet index and light sensor
-- I2C bus2 support to LM75AD temperature sensor
-- Support for Winsen XH03x dust particle sensors using USE_PMS5003 and PMS_MODEL_ZH03X [#19850](https://github.com/arendst/Tasmota/issues/19850)
-- ST7735S display.ini for 1.44 inch 128x128 red SPI display [#19862](https://github.com/arendst/Tasmota/issues/19862)
-- Scripter TCP client [#19914](https://github.com/arendst/Tasmota/issues/19914)
-- NeoPool hydrolysis setpoint and max
-- NeoPool command ``NPFiltrationSpeed`` to set non-standard filtration type speed [#19857](https://github.com/arendst/Tasmota/issues/19857)
-- NeoPool command ``SetOption157`` to enable output of sensitive data [#19857](https://github.com/arendst/Tasmota/issues/19857)
-- NeoPool command ``NPBoost`` [#19973](https://github.com/arendst/Tasmota/issues/19973)
-- NeoPool sensor delta trigger (command ``NPTelePeriod``) [#19973](https://github.com/arendst/Tasmota/issues/19973)
-- NeoPool enhancements for HomeAssistant [#19857](https://github.com/arendst/Tasmota/issues/19857)
-- NeoPool store settings on unified file system [#19973](https://github.com/arendst/Tasmota/issues/19973)
-- DeepSleep support through TIMERS [#20117](https://github.com/arendst/Tasmota/issues/20117)
-- ESP32 auto TasConsole USB or Serial connection for Core3 by @staars
-- ESP32 Partition Wizard can be loaded dynamically [#19980](https://github.com/arendst/Tasmota/issues/19980)
-- ESP32 support for Avago Tech Bluetooth Buttons [#20088](https://github.com/arendst/Tasmota/issues/20088)
-- Berry ``debug.gcdebug()`` to enable GC debugging [#19936](https://github.com/arendst/Tasmota/issues/19936)
-- Berry AES_CBC to crypto module [#19964](https://github.com/arendst/Tasmota/issues/19964)
-- Berry `scale_int`, equivalent of `scale_uint` for signed integers [#20090](https://github.com/arendst/Tasmota/issues/20090)
-- HASPmota add styling properties [#19912](https://github.com/arendst/Tasmota/issues/19912)
-- Matter flow sensor support [#19852](https://github.com/arendst/Tasmota/issues/19852)
+- Command ``TimedPower [,ON|OFF|TOGGLE|BLINK]`` executes ``Power [ON|OFF|TOGGLE|BLINK] `` and after executes ``Power [OFF|ON|TOGGLE|OFF]``
+- Command ``SetOption158`` to publish or suppress ModbusReceived MQTT messages [#20678](https://github.com/arendst/Tasmota/issues/20678)
+- Display of active drivers using command ``status 4``
+- GPIO Viewer to see realtime GPIO states. Enable with define USE_GPIO_VIEWER
+- GPIO Viewer user selection of assets website now defaults to `https://ota.tasmota.com/tasmota|tasmota32/gpio_viewer/assets`
+- Support for CST816S touch interface [#20213](https://github.com/arendst/Tasmota/issues/20213)
+- Support for Sonoff Basic R4 Magic Switch [#20247](https://github.com/arendst/Tasmota/issues/20247)
+- Support negative power on BL0942 using index 5..8 [#20322](https://github.com/arendst/Tasmota/issues/20322)
+- Support for pipsolar inverter [#20408](https://github.com/arendst/Tasmota/issues/20408)
+- Support for HardwareSerial invert [#15461](https://github.com/arendst/Tasmota/issues/15461)
+- NeoPool hydrolysis FL1 and Redox flag [#20258](https://github.com/arendst/Tasmota/issues/20258)
+- SML support for IM350 [#20474](https://github.com/arendst/Tasmota/issues/20474)
+- GUI sensor separators [#20495](https://github.com/arendst/Tasmota/issues/20495)
+- ESP32 used UART information
+- ESP32 support GPIOViewer when ``define USE_ESP32_GPIO_VIEWER`` is enabled
+- ESP32 MI BLE support for Xiaomi LYWSD02MMC [#20381](https://github.com/arendst/Tasmota/issues/20381)
+- ESP32 support for Shelly Plus Add-On using DS18x20 or DHT11/AM2301/DHT21/DHT22/AM2302/AM2321/SI7021 on GPIO0/1 [#20580](https://github.com/arendst/Tasmota/issues/20580)
+- ESP32 MI32 Legacy initial support for sensors using BTHOME packet format [#20625](https://github.com/arendst/Tasmota/issues/20625)
+- ESP32 Core3 support for SPI ethernet on DM9051, W5500 and KSZ8851
+- ESP32-C3 support for GPIO11 [#18350](https://github.com/arendst/Tasmota/issues/18350)
+- Berry GPIO viewer initial version using async webserver [#20416](https://github.com/arendst/Tasmota/issues/20416)
+- Berry `introspect.set()` for class attributes [#20339](https://github.com/arendst/Tasmota/issues/20339)
+- Berry support for `tcpclientasync` in `tcpserver` [#20401](https://github.com/arendst/Tasmota/issues/20401)
+- Berry `tasmota.urlbecload(url:string) -> bool` [#20412](https://github.com/arendst/Tasmota/issues/20412)
+- Berry `gpio.read_pwm` and `gpio.read_pwm_resolution` [#20414](https://github.com/arendst/Tasmota/issues/20414)
+- Berry `gpio.get_pin_type` and `gpio.ger_pin_type_index` [#20415](https://github.com/arendst/Tasmota/issues/20415)
+- Berry `string` to `bytes()` [#20420](https://github.com/arendst/Tasmota/issues/20420)
+- Berry button to dynamically load GPIO Viewer with Berry backend [#20424](https://github.com/arendst/Tasmota/issues/20424)
+- Berry `debug_panel.tapp` to display real-time heap and wifi rssi [#20436](https://github.com/arendst/Tasmota/issues/20436)
+- Berry `webserver.header` to read browser sent headers [#20447](https://github.com/arendst/Tasmota/issues/20447)
+- Berry provide lightweight options for `tasmota.wifi/eth/memory/rtc` [#20448](https://github.com/arendst/Tasmota/issues/20448)
+- Berry `tasmota.webcolor` [#20454](https://github.com/arendst/Tasmota/issues/20454)
+- Berry `debug.caller` [#20470](https://github.com/arendst/Tasmota/issues/20470)
+- Berry solidification of strings longer than 255 bytes [#20529](https://github.com/arendst/Tasmota/issues/20529)
+- Berry syntax coloring for Notepad++ by FransO [#20541](https://github.com/arendst/Tasmota/issues/20541)
+- Berry/Zigbee web hook per device for customized status display [#20542](https://github.com/arendst/Tasmota/issues/20542)
+- Berry `introspect.contains` and `bytes.addfloat` [#20635](https://github.com/arendst/Tasmota/issues/20635)
+- Zigbee ``ZbEmulation`` to selectively exclude some devices from Hue/Alexa emulation [#20552](https://github.com/arendst/Tasmota/issues/20552)
+- LVGL `lv.str_arr` [#20480](https://github.com/arendst/Tasmota/issues/20480)
+- LVGL option to add `lv.keyboard` extra widget [#20496](https://github.com/arendst/Tasmota/issues/20496)
+- HASPmota `haspmota.page_show()` to change page [#20333](https://github.com/arendst/Tasmota/issues/20333)
+- HASPmota type `chart` [#20372](https://github.com/arendst/Tasmota/issues/20372)
+- HASPmota support for `min` and `max` attribute in `slider` [#20582](https://github.com/arendst/Tasmota/issues/20582)
+- Matter support for password for remote Tasmota devices [#20296](https://github.com/arendst/Tasmota/issues/20296)
+- Matter add human readable names for TimeSync cluster [#20666](https://github.com/arendst/Tasmota/issues/20666)
### Breaking Changed
-- NeoPool SENSOR topic ``Power`` renamed to ``Powerunit`` [#19857](https://github.com/arendst/Tasmota/issues/19857)
-- Remove Berry `every_200ms` event which didn't work anyways [#20205](https://github.com/arendst/Tasmota/issues/20205)
+- ESP32 LVGL library from v8.3.11 to v9.0.0, some small breaking changes in C, none in HASPmota [#20659](https://github.com/arendst/Tasmota/issues/20659)
+- Refactoring of Berry `animate` module for WS2812 Leds [#20236](https://github.com/arendst/Tasmota/issues/20236)
+- Matter aggregator relocated to endpoint 1 for Google compatibility, may break existing associations [#20654](https://github.com/arendst/Tasmota/issues/20654)
### Changed
-- ESP32 Framework (Arduino Core3) from v3.0.0-alpha1 to v3.0.0-alpha3
-- ESP32 LVGL library from v8.3.10 to v8.3.11 (no functional change)
-- Increase MAX_HUE_DEVICES to 32 [#19820](https://github.com/arendst/Tasmota/issues/19820)
-- NeoPool ``NPHydrolysis`` percent and unit [#19924](https://github.com/arendst/Tasmota/issues/19924)
-- Thermostat JSON index from 0 to 1 [#20011](https://github.com/arendst/Tasmota/issues/20011)
-- MI32 updates [#19893](https://github.com/arendst/Tasmota/issues/19893)
-- ESP32 keep FileSystem intact when over flashing with VSC [#19816](https://github.com/arendst/Tasmota/issues/19816)
-- Berry leds animation refactoring stage 1 [#20197](https://github.com/arendst/Tasmota/issues/20197)
-- Berry ULP API changes for Core3/IDF5 [#20198](https://github.com/arendst/Tasmota/issues/20198)
-- Matter Light0 now accept a Relay number [#19809](https://github.com/arendst/Tasmota/issues/19809)
-- Matter update hierarchy of plugins [#19915](https://github.com/arendst/Tasmota/issues/19915)
+- ESP8266 platform update from 2023.04.00 to 2024.01.01 [#20539](https://github.com/arendst/Tasmota/issues/20539)
+- ESP8266 Framework (Arduino Core) from v2.7.4.9 to v2.7.6 [#20539](https://github.com/arendst/Tasmota/issues/20539)
+- ESP32 Core2 platform update from 2023.11.01 to 2024.01.01 [#20473](https://github.com/arendst/Tasmota/issues/20473)
+- ESP32 Core3 platform update from 2024.01.11 to 2024.01.12 [#20576](https://github.com/arendst/Tasmota/issues/20576)
+- Library OneWire-Stickbreaker by TasmotaOneWire supporting Shelly Plus Add-On [#20580](https://github.com/arendst/Tasmota/issues/20580)
+- Renamed button "Consoles" to "Tools"
+- Refactored rule ``Subscribe`` using LList allowing full message size and enabled by default
+- Refactored rules USE_EXPRESSION and SUPPORT_IF_STATEMENT replacing LinkedList with arrays and enabled by default
+- Support syslog updates every sleep or every second if `#define SYSLOG_UPDATE_SECOND` [#20260](https://github.com/arendst/Tasmota/issues/20260)
+- Web file upload response on upload error [#20340](https://github.com/arendst/Tasmota/issues/20340)
+- Header `Host` is now collected by Webserver [#20446](https://github.com/arendst/Tasmota/issues/20446)
+- Utouch optimizations, rgb i2c init [#20596](https://github.com/arendst/Tasmota/issues/20596)
+- Miel HVAC lower the minimum temperature to 10C [#20628](https://github.com/arendst/Tasmota/issues/20628)
+- Webcam tweaks [#20451](https://github.com/arendst/Tasmota/issues/20451)
+- IP stack compatible with new Core3 IPv6 implementation [#20509](https://github.com/arendst/Tasmota/issues/20509)
+- Refactored Pio filesystem download script [#20544](https://github.com/arendst/Tasmota/issues/20544)
+- Matter improve `MtrInfo` [#20686](https://github.com/arendst/Tasmota/issues/20686)
+- Matter redirects for Advanced Matter configuration UI [#20690](https://github.com/arendst/Tasmota/issues/20690)
+- Matter implement auto-attributes [#20694](https://github.com/arendst/Tasmota/issues/20694)
### Fixed
-- Compile USE_PID [#19890](https://github.com/arendst/Tasmota/issues/19890)
-- Scripter timer issue [#19914](https://github.com/arendst/Tasmota/issues/19914)
-- NeoPool filtration mode display [#19801](https://github.com/arendst/Tasmota/issues/19801)
-- ``changeUIntScale`` for linearity when expanding range [#20089](https://github.com/arendst/Tasmota/issues/20089)
-- TUYA state machine (in TUYA v1) [#20110](https://github.com/arendst/Tasmota/issues/20110)
-- ``WebQuery`` response buffer corruption and format character ``%`` [#20111](https://github.com/arendst/Tasmota/issues/20111)
-- ESP32 I2C allow bus2 support when bus1 is not enabled
-- ESP32 remove restart energy logging if no energy monitoring is selected
-- ESP32 IR receive with Arduino Core3 [#19904](https://github.com/arendst/Tasmota/issues/19904)
-- ESP32 Zero-Cross Dimmer for Core3 [#19929](https://github.com/arendst/Tasmota/issues/19929)
-- ESP32-C3 ledlink functionality regression from v13.1.0.2
-- ESP32 Neopixel flicker for Core3/IDF5 [#20196](https://github.com/arendst/Tasmota/issues/20196)
-- Berry parser error in specific cases [#20059](https://github.com/arendst/Tasmota/issues/20059)
-- Berry ``gpio.dac_voltage()`` regression from v13.1.0.1 [#19997](https://github.com/arendst/Tasmota/issues/19997)
-- HASPmota `bar` fixed `val` attribute [#20208](https://github.com/arendst/Tasmota/issues/20208)
+- CVE-2021-36603 Cross Site Scripting (XSS) vulnerability [#12221](https://github.com/arendst/Tasmota/issues/12221)
+- Syslog server warning caused by lack of field and hostname starting with 'z' [#14689](https://github.com/arendst/Tasmota/issues/14689)
+- Support for Domoticz floor/room topics. Regression from v12.0.1 [#20299](https://github.com/arendst/Tasmota/issues/20299)
+- Scripter memory leak in `>w x` [#20473](https://github.com/arendst/Tasmota/issues/20473)
+- Zigbee ramdom crash in main page [#20481](https://github.com/arendst/Tasmota/issues/20481)
+- ESP8266 IPv6 support [#20539](https://github.com/arendst/Tasmota/issues/20539)
+- ESP32 piezo ceramic buzzer doesn't buzz [#20118](https://github.com/arendst/Tasmota/issues/20118)
+- ESP32 shutter exception 6 (divide by zero) on ``ShutterMode 4`` [#20524](https://github.com/arendst/Tasmota/issues/20524)
+- ESP32 Zigbee Aqara attributes [#20452](https://github.com/arendst/Tasmota/issues/20452)
+- ESP32 Audio for Core3, MP3Stream and Shine [#20540](https://github.com/arendst/Tasmota/issues/20540)
+- ESP32 Core3 reset GPIOs 16/17 when PSRAM is not used [#20547](https://github.com/arendst/Tasmota/issues/20547)
+- LVGL fix type for lv_imgbtn [#20354](https://github.com/arendst/Tasmota/issues/20354)
+- Berry claiming UART0 if needed [#20324](https://github.com/arendst/Tasmota/issues/20324)
+- Berry assigment to list with negative index [#20537](https://github.com/arendst/Tasmota/issues/20537)
+- Berry C mapping, raise an error if too many arguments are sent [#20604](https://github.com/arendst/Tasmota/issues/20604)
+- Matter Contact sensor was not triggering any update [#20232](https://github.com/arendst/Tasmota/issues/20232)
+- Matter support for Alexa [#20545](https://github.com/arendst/Tasmota/issues/20545)
+- Matter error when removing device from Google Home [#20665](https://github.com/arendst/Tasmota/issues/20665)
+- Matter exception when fabrics is not initialized [#20667](https://github.com/arendst/Tasmota/issues/20667)
+
+### Removed
+- Max number of 30 backlog entries
diff --git a/SECURITY.md b/SECURITY.md
index f0a8de1ed..ef3246b10 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -2,4 +2,4 @@
## Reporting a Vulnerability
-Please report security issues to https://sidweb.nl/cms3/en/contact
+Please report security issues to [Tasmota](https://ota.tasmota.com/tasmota/contact/contact.php)
diff --git a/boards/esp32-fix.json b/boards/esp32-fix.json
index 8287019b8..73cf149fa 100644
--- a/boards/esp32-fix.json
+++ b/boards/esp32-fix.json
@@ -41,6 +41,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
diff --git a/boards/esp32.json b/boards/esp32.json
index 4dd2a3602..10c117cd7 100644
--- a/boards/esp32.json
+++ b/boards/esp32.json
@@ -41,6 +41,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
diff --git a/boards/esp32_solo1.json b/boards/esp32_solo1.json
index f3d9913b0..b80a58156 100644
--- a/boards/esp32_solo1.json
+++ b/boards/esp32_solo1.json
@@ -41,6 +41,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
diff --git a/boards/esp32c2.json b/boards/esp32c2.json
index cabab4cb4..ea5cbae2c 100644
--- a/boards/esp32c2.json
+++ b/boards/esp32c2.json
@@ -39,6 +39,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"
}
diff --git a/boards/esp32c2_2M.json b/boards/esp32c2_2M.json
index 969ff519c..fbffa167c 100644
--- a/boards/esp32c2_2M.json
+++ b/boards/esp32c2_2M.json
@@ -39,6 +39,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"
}
diff --git a/boards/esp32c3.json b/boards/esp32c3.json
index 2bb2f7660..6a49ba922 100644
--- a/boards/esp32c3.json
+++ b/boards/esp32c3.json
@@ -39,6 +39,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"
}
diff --git a/boards/esp32c3cdc.json b/boards/esp32c3cdc.json
index 8e46134b3..7ee0326f0 100644
--- a/boards/esp32c3cdc.json
+++ b/boards/esp32c3cdc.json
@@ -41,7 +41,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
- "speed": 460800
+ "speed": 2000000
+ },
+ "download": {
+ "speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"
diff --git a/boards/esp32c6.json b/boards/esp32c6.json
index 76e7620db..68feaec6e 100644
--- a/boards/esp32c6.json
+++ b/boards/esp32c6.json
@@ -39,6 +39,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"
}
diff --git a/boards/esp32c6cdc.json b/boards/esp32c6cdc.json
index eb8a6ffbb..9cde9e62b 100644
--- a/boards/esp32c6cdc.json
+++ b/boards/esp32c6cdc.json
@@ -41,7 +41,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
- "speed": 460800
+ "speed": 2000000
+ },
+ "download": {
+ "speed": 2000000
},
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"
diff --git a/boards/esp32s2.json b/boards/esp32s2.json
index aa9efca8b..18bd9200a 100644
--- a/boards/esp32s2.json
+++ b/boards/esp32s2.json
@@ -38,6 +38,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html",
"vendor": "Espressif"
}
diff --git a/boards/esp32s2cdc.json b/boards/esp32s2cdc.json
index f9a302699..c379be423 100644
--- a/boards/esp32s2cdc.json
+++ b/boards/esp32s2cdc.json
@@ -37,7 +37,10 @@
"maximum_size": 4194304,
"require_upload_port": true,
"before_reset": "usb_reset",
- "speed": 460800
+ "speed": 2000000
+ },
+ "download": {
+ "speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html",
"vendor": "Espressif"
diff --git a/boards/esp32s3-opi_opi.json b/boards/esp32s3-opi_opi.json
index aa7e5db2a..92803a838 100644
--- a/boards/esp32s3-opi_opi.json
+++ b/boards/esp32s3-opi_opi.json
@@ -41,6 +41,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
\ No newline at end of file
diff --git a/boards/esp32s3-qio_opi.json b/boards/esp32s3-qio_opi.json
index 4f2a06c47..614831574 100644
--- a/boards/esp32s3-qio_opi.json
+++ b/boards/esp32s3-qio_opi.json
@@ -41,6 +41,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
diff --git a/boards/esp32s3-qio_qspi.json b/boards/esp32s3-qio_qspi.json
index 42b20a4bc..9b11a31b0 100644
--- a/boards/esp32s3-qio_qspi.json
+++ b/boards/esp32s3-qio_qspi.json
@@ -41,6 +41,9 @@
"require_upload_port": true,
"speed": 460800
},
+ "download": {
+ "speed": 230400
+ },
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
diff --git a/boards/esp32s3cdc-opi_opi.json b/boards/esp32s3cdc-opi_opi.json
index a5992333c..684cba031 100644
--- a/boards/esp32s3cdc-opi_opi.json
+++ b/boards/esp32s3cdc-opi_opi.json
@@ -49,7 +49,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
- "speed": 460800
+ "speed": 2000000
+ },
+ "download": {
+ "speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
diff --git a/boards/esp32s3cdc-qio_opi.json b/boards/esp32s3cdc-qio_opi.json
index 46ed77fca..46b363266 100644
--- a/boards/esp32s3cdc-qio_opi.json
+++ b/boards/esp32s3cdc-qio_opi.json
@@ -49,7 +49,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
- "speed": 460800
+ "speed": 2000000
+ },
+ "download": {
+ "speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
diff --git a/boards/esp32s3cdc-qio_qspi.json b/boards/esp32s3cdc-qio_qspi.json
index 7e80448e3..fa90e8509 100644
--- a/boards/esp32s3cdc-qio_qspi.json
+++ b/boards/esp32s3cdc-qio_qspi.json
@@ -49,7 +49,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
- "speed": 460800
+ "speed": 2000000
+ },
+ "download": {
+ "speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
diff --git a/lib/default/LinkedList-1.2.3/LinkedList.h b/lib/default/LinkedList-1.2.3/LinkedList.h
index 64321cf01..4453126de 100644
--- a/lib/default/LinkedList-1.2.3/LinkedList.h
+++ b/lib/default/LinkedList-1.2.3/LinkedList.h
@@ -7,6 +7,8 @@
Created by Ivan Seidel Gomes, March, 2013.
Released into the public domain.
+
+ 20240118 - Removed sort functions not used by Tasmota (@arendst)
*/
@@ -39,8 +41,6 @@ protected:
ListNode* getNode(int index);
- ListNode* findEndOfSortedString(ListNode *p, int (*cmp)(T &, T &));
-
public:
LinkedList();
LinkedList(int sizeIndex, T _t); //initiate list size and default value
@@ -96,11 +96,6 @@ public:
*/
virtual void clear();
- /*
- Sort the list, given a comparison function
- */
- virtual void sort(int (*cmp)(T &, T &));
-
// add support to array brakets [] operator
inline T& operator[](int index);
inline T& operator[](size_t& i) { return this->get(i); }
@@ -347,73 +342,4 @@ void LinkedList::clear(){
shift();
}
-template
-void LinkedList::sort(int (*cmp)(T &, T &)){
- if(_size < 2) return; // trivial case;
-
- for(;;) {
-
- ListNode **joinPoint = &root;
-
- while(*joinPoint) {
- ListNode *a = *joinPoint;
- ListNode *a_end = findEndOfSortedString(a, cmp);
-
- if(!a_end->next ) {
- if(joinPoint == &root) {
- last = a_end;
- isCached = false;
- return;
- }
- else {
- break;
- }
- }
-
- ListNode *b = a_end->next;
- ListNode *b_end = findEndOfSortedString(b, cmp);
-
- ListNode *tail = b_end->next;
-
- a_end->next = NULL;
- b_end->next = NULL;
-
- while(a && b) {
- if(cmp(a->data, b->data) <= 0) {
- *joinPoint = a;
- joinPoint = &a->next;
- a = a->next;
- }
- else {
- *joinPoint = b;
- joinPoint = &b->next;
- b = b->next;
- }
- }
-
- if(a) {
- *joinPoint = a;
- while(a->next) a = a->next;
- a->next = tail;
- joinPoint = &a->next;
- }
- else {
- *joinPoint = b;
- while(b->next) b = b->next;
- b->next = tail;
- joinPoint = &b->next;
- }
- }
- }
-}
-
-template
-ListNode* LinkedList::findEndOfSortedString(ListNode *p, int (*cmp)(T &, T &)) {
- while(p->next && cmp(p->data, p->next->data) <= 0) {
- p = p->next;
- }
-
- return p;
-}
-
#endif
diff --git a/lib/default/LinkedList-1.2.3/LinkedList_with_sort.h b/lib/default/LinkedList-1.2.3/LinkedList_with_sort.h
new file mode 100644
index 000000000..64321cf01
--- /dev/null
+++ b/lib/default/LinkedList-1.2.3/LinkedList_with_sort.h
@@ -0,0 +1,419 @@
+/*
+ LinkedList.h - V1.1 - Generic LinkedList implementation
+ Works better with FIFO, because LIFO will need to
+ search the entire List to find the last one;
+
+ For instructions, go to https://github.com/ivanseidel/LinkedList
+
+ Created by Ivan Seidel Gomes, March, 2013.
+ Released into the public domain.
+*/
+
+
+#ifndef LinkedList_h
+#define LinkedList_h
+
+#include
+
+template
+struct ListNode
+{
+ T data;
+ ListNode *next;
+};
+
+template
+class LinkedList{
+
+protected:
+ int _size;
+ ListNode *root;
+ ListNode *last;
+
+ // Helps "get" method, by saving last position
+ ListNode *lastNodeGot;
+ int lastIndexGot;
+ // isCached should be set to FALSE
+ // everytime the list suffer changes
+ bool isCached;
+
+ ListNode* getNode(int index);
+
+ ListNode* findEndOfSortedString(ListNode *p, int (*cmp)(T &, T &));
+
+public:
+ LinkedList();
+ LinkedList(int sizeIndex, T _t); //initiate list size and default value
+ ~LinkedList();
+
+ /*
+ Returns current size of LinkedList
+ */
+ virtual int size();
+ /*
+ Adds a T object in the specified index;
+ Unlink and link the LinkedList correcly;
+ Increment _size
+ */
+ virtual bool add(int index, T);
+ /*
+ Adds a T object in the end of the LinkedList;
+ Increment _size;
+ */
+ virtual bool add(T);
+ /*
+ Adds a T object in the start of the LinkedList;
+ Increment _size;
+ */
+ virtual bool unshift(T);
+ /*
+ Set the object at index, with T;
+ */
+ virtual bool set(int index, T);
+ /*
+ Remove object at index;
+ If index is not reachable, returns false;
+ else, decrement _size
+ */
+ virtual T remove(int index);
+ /*
+ Remove last object;
+ */
+ virtual T pop();
+ /*
+ Remove first object;
+ */
+ virtual T shift();
+ /*
+ Get the index'th element on the list;
+ Return Element if accessible,
+ else, return false;
+ */
+ virtual T get(int index);
+
+ /*
+ Clear the entire array
+ */
+ virtual void clear();
+
+ /*
+ Sort the list, given a comparison function
+ */
+ virtual void sort(int (*cmp)(T &, T &));
+
+ // add support to array brakets [] operator
+ inline T& operator[](int index);
+ inline T& operator[](size_t& i) { return this->get(i); }
+ inline const T& operator[](const size_t& i) const { return this->get(i); }
+
+};
+
+// Initialize LinkedList with false values
+template
+LinkedList::LinkedList()
+{
+ root=NULL;
+ last=NULL;
+ _size=0;
+
+ lastNodeGot = root;
+ lastIndexGot = 0;
+ isCached = false;
+}
+
+// Clear Nodes and free Memory
+template
+LinkedList::~LinkedList()
+{
+ ListNode* tmp;
+ while(root!=NULL)
+ {
+ tmp=root;
+ root=root->next;
+ delete tmp;
+ }
+ last = NULL;
+ _size=0;
+ isCached = false;
+}
+
+/*
+ Actualy "logic" coding
+*/
+
+template
+ListNode* LinkedList::getNode(int index){
+
+ int _pos = 0;
+ ListNode* current = root;
+
+ // Check if the node trying to get is
+ // immediatly AFTER the previous got one
+ if(isCached && lastIndexGot <= index){
+ _pos = lastIndexGot;
+ current = lastNodeGot;
+ }
+
+ while(_pos < index && current){
+ current = current->next;
+
+ _pos++;
+ }
+
+ // Check if the object index got is the same as the required
+ if(_pos == index){
+ isCached = true;
+ lastIndexGot = index;
+ lastNodeGot = current;
+
+ return current;
+ }
+
+ return NULL;
+}
+
+template
+int LinkedList::size(){
+ return _size;
+}
+
+template
+LinkedList::LinkedList(int sizeIndex, T _t){
+ for (int i = 0; i < sizeIndex; i++){
+ add(_t);
+ }
+}
+
+template
+bool LinkedList::add(int index, T _t){
+
+ if(index >= _size)
+ return add(_t);
+
+ if(index == 0)
+ return unshift(_t);
+
+ ListNode *tmp = new ListNode(),
+ *_prev = getNode(index-1);
+ tmp->data = _t;
+ tmp->next = _prev->next;
+ _prev->next = tmp;
+
+ _size++;
+ isCached = false;
+
+ return true;
+}
+
+template
+bool LinkedList::add(T _t){
+
+ ListNode *tmp = new ListNode();
+ tmp->data = _t;
+ tmp->next = NULL;
+
+ if(root){
+ // Already have elements inserted
+ last->next = tmp;
+ last = tmp;
+ }else{
+ // First element being inserted
+ root = tmp;
+ last = tmp;
+ }
+
+ _size++;
+ isCached = false;
+
+ return true;
+}
+
+template
+bool LinkedList::unshift(T _t){
+
+ if(_size == 0)
+ return add(_t);
+
+ ListNode *tmp = new ListNode();
+ tmp->next = root;
+ tmp->data = _t;
+ root = tmp;
+
+ _size++;
+ isCached = false;
+
+ return true;
+}
+
+
+template
+T& LinkedList::operator[](int index) {
+ return getNode(index)->data;
+}
+
+template
+bool LinkedList::set(int index, T _t){
+ // Check if index position is in bounds
+ if(index < 0 || index >= _size)
+ return false;
+
+ getNode(index)->data = _t;
+ return true;
+}
+
+template
+T LinkedList::pop(){
+ if(_size <= 0)
+ return T();
+
+ isCached = false;
+
+ if(_size >= 2){
+ ListNode *tmp = getNode(_size - 2);
+ T ret = tmp->next->data;
+ delete(tmp->next);
+ tmp->next = NULL;
+ last = tmp;
+ _size--;
+ return ret;
+ }else{
+ // Only one element left on the list
+ T ret = root->data;
+ delete(root);
+ root = NULL;
+ last = NULL;
+ _size = 0;
+ return ret;
+ }
+}
+
+template
+T LinkedList::shift(){
+ if(_size <= 0)
+ return T();
+
+ if(_size > 1){
+ ListNode *_next = root->next;
+ T ret = root->data;
+ delete(root);
+ root = _next;
+ _size --;
+ isCached = false;
+
+ return ret;
+ }else{
+ // Only one left, then pop()
+ return pop();
+ }
+
+}
+
+template
+T LinkedList::remove(int index){
+ if (index < 0 || index >= _size)
+ {
+ return T();
+ }
+
+ if(index == 0)
+ return shift();
+
+ if (index == _size-1)
+ {
+ return pop();
+ }
+
+ ListNode *tmp = getNode(index - 1);
+ ListNode *toDelete = tmp->next;
+ T ret = toDelete->data;
+ tmp->next = tmp->next->next;
+ delete(toDelete);
+ _size--;
+ isCached = false;
+ return ret;
+}
+
+
+template
+T LinkedList::get(int index){
+ ListNode *tmp = getNode(index);
+
+ return (tmp ? tmp->data : T());
+}
+
+template
+void LinkedList::clear(){
+ while(size() > 0)
+ shift();
+}
+
+template
+void LinkedList::sort(int (*cmp)(T &, T &)){
+ if(_size < 2) return; // trivial case;
+
+ for(;;) {
+
+ ListNode **joinPoint = &root;
+
+ while(*joinPoint) {
+ ListNode *a = *joinPoint;
+ ListNode *a_end = findEndOfSortedString(a, cmp);
+
+ if(!a_end->next ) {
+ if(joinPoint == &root) {
+ last = a_end;
+ isCached = false;
+ return;
+ }
+ else {
+ break;
+ }
+ }
+
+ ListNode *b = a_end->next;
+ ListNode *b_end = findEndOfSortedString(b, cmp);
+
+ ListNode *tail = b_end->next;
+
+ a_end->next = NULL;
+ b_end->next = NULL;
+
+ while(a && b) {
+ if(cmp(a->data, b->data) <= 0) {
+ *joinPoint = a;
+ joinPoint = &a->next;
+ a = a->next;
+ }
+ else {
+ *joinPoint = b;
+ joinPoint = &b->next;
+ b = b->next;
+ }
+ }
+
+ if(a) {
+ *joinPoint = a;
+ while(a->next) a = a->next;
+ a->next = tail;
+ joinPoint = &a->next;
+ }
+ else {
+ *joinPoint = b;
+ while(b->next) b = b->next;
+ b->next = tail;
+ joinPoint = &b->next;
+ }
+ }
+ }
+}
+
+template
+ListNode* LinkedList::findEndOfSortedString(ListNode *p, int (*cmp)(T &, T &)) {
+ while(p->next && cmp(p->data, p->next->data) <= 0) {
+ p = p->next;
+ }
+
+ return p;
+}
+
+#endif
diff --git a/lib/default/TasmotaLList/src/LList.h b/lib/default/TasmotaLList/src/LList.h
index 82653448b..4c2d2c656 100644
--- a/lib/default/TasmotaLList/src/LList.h
+++ b/lib/default/TasmotaLList/src/LList.h
@@ -59,9 +59,9 @@ public:
~LList() { reset(); }
// remove elements
- void removeHead(void); // remove first element
+ T * removeHead(void); // remove first element
void reset(void); // remove all elements
- void remove(const T * val);
+ const T * remove(const T * val);
// read the list
inline bool isEmpty(void) const { return (_head == nullptr) ? true : false; }
@@ -77,6 +77,7 @@ public:
T & addHead(void);
T & addHead(const T &val);
T & addToLast(void);
+ T & insertAt(size_t index);
// add an element allocated externally
// memory is free by us now -- don't free it!
T & addHead(LList_elt * elt);
@@ -142,17 +143,20 @@ void LList::reset(void) {
}
template
-void LList::removeHead(void) {
+T * LList::removeHead(void) {
if (_head) {
+ T * orginal_head = &_head->_val;
LList_elt * next = _head->next();
delete _head;
_head = next;
+ return orginal_head;
}
+ return nullptr;
}
template
-void LList::remove(const T * val) {
- if (nullptr == val) { return; }
+const T * LList::remove(const T * val) {
+ if (nullptr == val) { return val; }
// find element in chain and find pointer before
LList_elt **curr_ptr = &_head;
while (*curr_ptr) {
@@ -164,6 +168,7 @@ void LList::remove(const T * val) {
}
curr_ptr = &((*curr_ptr)->_next); // move to next element
}
+ return val;
}
template
@@ -201,6 +206,27 @@ T & LList::addToLast(void) {
return elt->_val;
}
+template
+T & LList::insertAt(size_t index) {
+ if (0 == index) {
+ return addHead(); // insert at the head
+ }
+ index--;
+ LList_elt **curr_ptr = &_head;
+ size_t count = 0;
+ while (*curr_ptr) {
+ if (count == index) {
+ LList_elt * elt = new LList_elt(); // create element
+ elt->next((*curr_ptr)->next());
+ (*curr_ptr)->next(elt);
+ return elt->_val;
+ }
+ curr_ptr = &((*curr_ptr)->_next);
+ count++;
+ }
+ return addToLast();
+}
+
template
T & LList::addToLast(LList_elt * elt) {
LList_elt **curr_ptr = &_head;
diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
index 9bdfb9733..72bf19e1d 100644
--- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
+++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
@@ -46,11 +46,12 @@ static uint32_t tasmota_serial_uart_bitmap = 0; // Assigned UARTs
#endif // ESP32
-TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback, int nwmode, int buffer_size) {
+TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback, int nwmode, int buffer_size, bool invert) {
m_valid = false;
m_hardserial = false;
m_hardswap = false;
m_overflow = false;
+ m_invert = invert;
m_data_bits = 8;
m_stop_bits = 1;
m_nwmode = nwmode;
@@ -98,7 +99,7 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fal
m_valid = true;
}
-void TasmotaSerial::end(bool turnOffDebug) {
+void TasmotaSerial::end(void) {
#ifdef ESP8266
if (m_hardserial) {
// Serial.end(); // Keep active for logging
@@ -116,7 +117,7 @@ void TasmotaSerial::end(bool turnOffDebug) {
#ifdef ESP32
// Serial.printf("TSR: Freeing UART%d\n", m_uart);
- TSerial->end(turnOffDebug);
+ TSerial->end();
bitClear(tasmota_serial_uart_bitmap, m_uart);
#endif // ESP32
}
@@ -155,7 +156,7 @@ bool TasmotaSerial::freeUart(void) {
}
void TasmotaSerial::Esp32Begin(void) {
- TSerial->begin(m_speed, m_config, m_rx_pin, m_tx_pin);
+ TSerial->begin(m_speed, m_config, m_rx_pin, m_tx_pin, m_invert);
// For low bit rate, below 9600, set the Full RX threshold at 10 bytes instead of the default 120
if (m_speed <= 9600) {
// At 9600, 10 chars are ~10ms
@@ -219,7 +220,7 @@ bool TasmotaSerial::begin(uint32_t speed, uint32_t config) {
}
#ifdef ESP8266
Serial.flush();
- Serial.begin(speed, (SerialConfig)config);
+ Serial.begin(speed, (SerialConfig)config, SERIAL_FULL, m_tx_pin, m_invert);
if (m_hardswap) {
Serial.swap();
}
diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h
index 2f9be0963..c17da9eb3 100644
--- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h
+++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h
@@ -37,7 +37,7 @@
class TasmotaSerial : public Stream {
public:
- TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback = 0, int nwmode = 0, int buffer_size = TM_SERIAL_BUFFER_SIZE);
+ TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback = 0, int nwmode = 0, int buffer_size = TM_SERIAL_BUFFER_SIZE, bool invert = false);
virtual ~TasmotaSerial();
void setTransmitEnablePin(int tx_enable_pin);
@@ -45,7 +45,7 @@ class TasmotaSerial : public Stream {
size_t getRxBufferSize() { return serial_buffer_size; }
bool begin(uint32_t speed = TM_SERIAL_BAUDRATE, uint32_t config = SERIAL_8N1);
- void end(bool turnOffDebug = true);
+ void end(void);
bool hardwareSerial(void);
int peek(void);
@@ -102,6 +102,7 @@ class TasmotaSerial : public Stream {
bool m_overflow;
bool m_high_speed = false;
bool m_very_high_speed = false; // above 100000 bauds
+ bool m_invert;
uint8_t *m_buffer = nullptr;
#ifdef ESP32
uint32_t m_speed;
diff --git a/lib/lib_basic/OneWire-Stickbreaker/OneWire.h b/lib/lib_basic/OneWire-Stickbreaker/OneWire.h
deleted file mode 100644
index 77910ecb9..000000000
--- a/lib/lib_basic/OneWire-Stickbreaker/OneWire.h
+++ /dev/null
@@ -1,560 +0,0 @@
-#ifndef OneWire_h
-#define OneWire_h
-
-#include
-
-#if defined(__AVR__)
-#include
-#endif
-
-#if ARDUINO >= 100
-#include "Arduino.h" // for delayMicroseconds, digitalPinToBitMask, etc
-#else
-#include "WProgram.h" // for delayMicroseconds
-#include "pins_arduino.h" // for digitalPinToBitMask, etc
-#endif
-
-// You can exclude certain features from OneWire. In theory, this
-// might save some space. In practice, the compiler automatically
-// removes unused code (technically, the linker, using -fdata-sections
-// and -ffunction-sections when compiling, and Wl,--gc-sections
-// when linking), so most of these will not result in any code size
-// reduction. Well, unless you try to use the missing features
-// and redesign your program to not need them! ONEWIRE_CRC8_TABLE
-// is the exception, because it selects a fast but large algorithm
-// or a small but slow algorithm.
-
-// you can exclude onewire_search by defining that to 0
-#ifndef ONEWIRE_SEARCH
-#define ONEWIRE_SEARCH 1
-#endif
-
-// You can exclude CRC checks altogether by defining this to 0
-#ifndef ONEWIRE_CRC
-#define ONEWIRE_CRC 1
-#endif
-
-// Select the table-lookup method of computing the 8-bit CRC
-// by setting this to 1. The lookup table enlarges code size by
-// about 250 bytes. It does NOT consume RAM (but did in very
-// old versions of OneWire). If you disable this, a slower
-// but very compact algorithm is used.
-#ifndef ONEWIRE_CRC8_TABLE
-#define ONEWIRE_CRC8_TABLE 0
-#endif
-
-// You can allow 16-bit CRC checks by defining this to 1
-// (Note that ONEWIRE_CRC must also be 1.)
-#ifndef ONEWIRE_CRC16
-#define ONEWIRE_CRC16 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-// Platform specific I/O definitions
-
-#if defined(__AVR__)
-#define PIN_TO_BASEREG(pin) (portInputRegister(digitalPinToPort(pin)))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint8_t
-#define IO_REG_BASE_ATTR asm("r30")
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0)
-#define DIRECT_MODE_INPUT(base, mask) ((*((base)+1)) &= ~(mask))
-#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+1)) |= (mask))
-#define DIRECT_WRITE_LOW(base, mask) ((*((base)+2)) &= ~(mask))
-#define DIRECT_WRITE_HIGH(base, mask) ((*((base)+2)) |= (mask))
-
-#elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK66FX1M0__) || defined(__MK64FX512__)
-#define PIN_TO_BASEREG(pin) (portOutputRegister(pin))
-#define PIN_TO_BITMASK(pin) (1)
-#define IO_REG_TYPE uint8_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR __attribute__ ((unused))
-#define DIRECT_READ(base, mask) (*((base)+512))
-#define DIRECT_MODE_INPUT(base, mask) (*((base)+640) = 0)
-#define DIRECT_MODE_OUTPUT(base, mask) (*((base)+640) = 1)
-#define DIRECT_WRITE_LOW(base, mask) (*((base)+256) = 1)
-#define DIRECT_WRITE_HIGH(base, mask) (*((base)+128) = 1)
-
-#elif defined(__MKL26Z64__)
-#define PIN_TO_BASEREG(pin) (portOutputRegister(pin))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint8_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, mask) ((*((base)+16) & (mask)) ? 1 : 0)
-#define DIRECT_MODE_INPUT(base, mask) (*((base)+20) &= ~(mask))
-#define DIRECT_MODE_OUTPUT(base, mask) (*((base)+20) |= (mask))
-#define DIRECT_WRITE_LOW(base, mask) (*((base)+8) = (mask))
-#define DIRECT_WRITE_HIGH(base, mask) (*((base)+4) = (mask))
-
-#elif defined(__SAM3X8E__) || defined(__SAM3A8C__) || defined(__SAM3A4C__)
-// Arduino 1.5.1 may have a bug in delayMicroseconds() on Arduino Due.
-// http://arduino.cc/forum/index.php/topic,141030.msg1076268.html#msg1076268
-// If you have trouble with OneWire on Arduino Due, please check the
-// status of delayMicroseconds() before reporting a bug in OneWire!
-#define PIN_TO_BASEREG(pin) (&(digitalPinToPort(pin)->PIO_PER))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, mask) (((*((base)+15)) & (mask)) ? 1 : 0)
-#define DIRECT_MODE_INPUT(base, mask) ((*((base)+5)) = (mask))
-#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+4)) = (mask))
-#define DIRECT_WRITE_LOW(base, mask) ((*((base)+13)) = (mask))
-#define DIRECT_WRITE_HIGH(base, mask) ((*((base)+12)) = (mask))
-#ifndef PROGMEM
-#define PROGMEM
-#endif
-#ifndef pgm_read_byte
-#define pgm_read_byte(addr) (*(const uint8_t *)(addr))
-#endif
-
-#elif defined(__PIC32MX__)
-#define PIN_TO_BASEREG(pin) (portModeRegister(digitalPinToPort(pin)))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, mask) (((*(base+4)) & (mask)) ? 1 : 0) //PORTX + 0x10
-#define DIRECT_MODE_INPUT(base, mask) ((*(base+2)) = (mask)) //TRISXSET + 0x08
-#define DIRECT_MODE_OUTPUT(base, mask) ((*(base+1)) = (mask)) //TRISXCLR + 0x04
-#define DIRECT_WRITE_LOW(base, mask) ((*(base+8+1)) = (mask)) //LATXCLR + 0x24
-#define DIRECT_WRITE_HIGH(base, mask) ((*(base+8+2)) = (mask)) //LATXSET + 0x28
-
-#elif defined(ARDUINO_ARCH_ESP8266)
-// Special note: I depend on the ESP community to maintain these definitions and
-// submit good pull requests. I can not answer any ESP questions or help you
-// resolve any problems related to ESP chips. Please do not contact me and please
-// DO NOT CREATE GITHUB ISSUES for ESP support. All ESP questions must be asked
-// on ESP community forums.
-#define PIN_TO_BASEREG(pin) ((volatile uint32_t*) GPO)
-#define PIN_TO_BITMASK(pin) (1 << pin)
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, mask) ((GPI & (mask)) ? 1 : 0) //GPIO_IN_ADDRESS
-#define DIRECT_MODE_INPUT(base, mask) (GPE &= ~(mask)) //GPIO_ENABLE_W1TC_ADDRESS
-#define DIRECT_MODE_OUTPUT(base, mask) (GPE |= (mask)) //GPIO_ENABLE_W1TS_ADDRESS
-#define DIRECT_WRITE_LOW(base, mask) (GPOC = (mask)) //GPIO_OUT_W1TC_ADDRESS
-#define DIRECT_WRITE_HIGH(base, mask) (GPOS = (mask)) //GPIO_OUT_W1TS_ADDRESS
-
-#elif defined(ARDUINO_ARCH_ESP32)
-#include
-#if ESP_IDF_VERSION_MAJOR >= 5
-#include "soc/gpio_periph.h"
-#endif // ESP_IDF_VERSION_MAJOR >= 5
-#define PIN_TO_BASEREG(pin) (0)
-#define PIN_TO_BITMASK(pin) (pin)
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-
-static inline __attribute__((always_inline))
-IO_REG_TYPE directRead(IO_REG_TYPE pin)
-{
-// return digitalRead(pin); // Works most of the time
-// return gpio_ll_get_level(&GPIO, pin); // The hal is not public api, don't use in application code
-
-//#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
-#if SOC_GPIO_PIN_COUNT <= 32
- return (GPIO.in.val >> pin) & 0x1;
-#else // ESP32 with over 32 gpios
- if ( pin < 32 )
- return (GPIO.in >> pin) & 0x1;
- else
- return (GPIO.in1.val >> (pin - 32)) & 0x1;
-#endif
- return 0;
-
-}
-
-static inline __attribute__((always_inline))
-void directWriteLow(IO_REG_TYPE pin)
-{
-// digitalWrite(pin, 0); // Works most of the time
-// gpio_ll_set_level(&GPIO, pin, 0); // The hal is not public api, don't use in application code
-
-//#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
-#if SOC_GPIO_PIN_COUNT <= 32
- GPIO.out_w1tc.val = ((uint32_t)1 << pin);
-#else // ESP32 with over 32 gpios
- if ( pin < 32 )
- GPIO.out_w1tc = ((uint32_t)1 << pin);
- else
- GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32));
-#endif
-}
-
-static inline __attribute__((always_inline))
-void directWriteHigh(IO_REG_TYPE pin)
-{
-// digitalWrite(pin, 1); // Works most of the time
-// gpio_ll_set_level(&GPIO, pin, 1); // The hal is not public api, don't use in application code
-
-//#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
-#if SOC_GPIO_PIN_COUNT <= 32
- GPIO.out_w1ts.val = ((uint32_t)1 << pin);
-#else // ESP32 with over 32 gpios
- if ( pin < 32 )
- GPIO.out_w1ts = ((uint32_t)1 << pin);
- else
- GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32));
-#endif
-
-}
-
-static inline __attribute__((always_inline))
-void directModeInput(IO_REG_TYPE pin)
-{
-// pinMode(pin, INPUT); // Too slow - doesn't work
-// gpio_ll_output_disable(&GPIO, pin); // The hal is not public api, don't use in application code
-
- if ( digitalPinIsValid(pin) )
- {
- // Input
-//#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
-#if SOC_GPIO_PIN_COUNT <= 32
- GPIO.enable_w1tc.val = ((uint32_t)1 << (pin));
-#else // ESP32 with over 32 gpios
- if ( pin < 32 )
- GPIO.enable_w1tc = ((uint32_t)1 << pin);
- else
- GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32));
-#endif
- }
-
-}
-
-static inline __attribute__((always_inline))
-void directModeOutput(IO_REG_TYPE pin)
-{
-// pinMode(pin, OUTPUT); // Too slow - doesn't work
-// gpio_ll_output_enable(&GPIO, pin); // The hal is not public api, don't use in application code
-
- if ( digitalPinCanOutput(pin) )
- {
- // Output
-//#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
-#if SOC_GPIO_PIN_COUNT <= 32
- GPIO.enable_w1ts.val = ((uint32_t)1 << (pin));
-#else // ESP32 with over 32 gpios
- if ( pin < 32 )
- GPIO.enable_w1ts = ((uint32_t)1 << pin);
- else
- GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32));
-#endif
- }
-
-}
-
-#define DIRECT_READ(base, pin) directRead(pin)
-#define DIRECT_WRITE_LOW(base, pin) directWriteLow(pin)
-#define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(pin)
-#define DIRECT_MODE_INPUT(base, pin) directModeInput(pin)
-#define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(pin)
-
-#elif defined(__SAMD21G18A__)
-#define PIN_TO_BASEREG(pin) portModeRegister(digitalPinToPort(pin))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, mask) (((*((base)+8)) & (mask)) ? 1 : 0)
-#define DIRECT_MODE_INPUT(base, mask) ((*((base)+1)) = (mask))
-#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+2)) = (mask))
-#define DIRECT_WRITE_LOW(base, mask) ((*((base)+5)) = (mask))
-#define DIRECT_WRITE_HIGH(base, mask) ((*((base)+6)) = (mask))
-
-#elif defined(RBL_NRF51822)
-#define PIN_TO_BASEREG(pin) (0)
-#define PIN_TO_BITMASK(pin) (pin)
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, pin) nrf_gpio_pin_read(pin)
-#define DIRECT_WRITE_LOW(base, pin) nrf_gpio_pin_clear(pin)
-#define DIRECT_WRITE_HIGH(base, pin) nrf_gpio_pin_set(pin)
-#define DIRECT_MODE_INPUT(base, pin) nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL)
-#define DIRECT_MODE_OUTPUT(base, pin) nrf_gpio_cfg_output(pin)
-
-#elif defined(__arc__) /* Arduino101/Genuino101 specifics */
-
-#include "scss_registers.h"
-#include "portable.h"
-#include "avr/pgmspace.h"
-
-#define GPIO_ID(pin) (g_APinDescription[pin].ulGPIOId)
-#define GPIO_TYPE(pin) (g_APinDescription[pin].ulGPIOType)
-#define GPIO_BASE(pin) (g_APinDescription[pin].ulGPIOBase)
-#define DIR_OFFSET_SS 0x01
-#define DIR_OFFSET_SOC 0x04
-#define EXT_PORT_OFFSET_SS 0x0A
-#define EXT_PORT_OFFSET_SOC 0x50
-
-/* GPIO registers base address */
-#define PIN_TO_BASEREG(pin) ((volatile uint32_t *)g_APinDescription[pin].ulGPIOBase)
-#define PIN_TO_BITMASK(pin) pin
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-
-static inline __attribute__((always_inline))
-IO_REG_TYPE directRead(volatile IO_REG_TYPE *base, IO_REG_TYPE pin)
-{
- IO_REG_TYPE ret;
- if (SS_GPIO == GPIO_TYPE(pin)) {
- ret = READ_ARC_REG(((IO_REG_TYPE)base + EXT_PORT_OFFSET_SS));
- } else {
- ret = MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, EXT_PORT_OFFSET_SOC);
- }
- return ((ret >> GPIO_ID(pin)) & 0x01);
-}
-
-static inline __attribute__((always_inline))
-void directModeInput(volatile IO_REG_TYPE *base, IO_REG_TYPE pin)
-{
- if (SS_GPIO == GPIO_TYPE(pin)) {
- WRITE_ARC_REG(READ_ARC_REG((((IO_REG_TYPE)base) + DIR_OFFSET_SS)) & ~(0x01 << GPIO_ID(pin)),
- ((IO_REG_TYPE)(base) + DIR_OFFSET_SS));
- } else {
- MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) &= ~(0x01 << GPIO_ID(pin));
- }
-}
-
-static inline __attribute__((always_inline))
-void directModeOutput(volatile IO_REG_TYPE *base, IO_REG_TYPE pin)
-{
- if (SS_GPIO == GPIO_TYPE(pin)) {
- WRITE_ARC_REG(READ_ARC_REG(((IO_REG_TYPE)(base) + DIR_OFFSET_SS)) | (0x01 << GPIO_ID(pin)),
- ((IO_REG_TYPE)(base) + DIR_OFFSET_SS));
- } else {
- MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) |= (0x01 << GPIO_ID(pin));
- }
-}
-
-static inline __attribute__((always_inline))
-void directWriteLow(volatile IO_REG_TYPE *base, IO_REG_TYPE pin)
-{
- if (SS_GPIO == GPIO_TYPE(pin)) {
- WRITE_ARC_REG(READ_ARC_REG(base) & ~(0x01 << GPIO_ID(pin)), base);
- } else {
- MMIO_REG_VAL(base) &= ~(0x01 << GPIO_ID(pin));
- }
-}
-
-static inline __attribute__((always_inline))
-void directWriteHigh(volatile IO_REG_TYPE *base, IO_REG_TYPE pin)
-{
- if (SS_GPIO == GPIO_TYPE(pin)) {
- WRITE_ARC_REG(READ_ARC_REG(base) | (0x01 << GPIO_ID(pin)), base);
- } else {
- MMIO_REG_VAL(base) |= (0x01 << GPIO_ID(pin));
- }
-}
-
-#define DIRECT_READ(base, pin) directRead(base, pin)
-#define DIRECT_MODE_INPUT(base, pin) directModeInput(base, pin)
-#define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(base, pin)
-#define DIRECT_WRITE_LOW(base, pin) directWriteLow(base, pin)
-#define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(base, pin)
-
-#elif defined(__riscv)
-
-/*
- * Tested on highfive1
- *
- * Stable results are achieved operating in the
- * two high speed modes of the highfive1. It
- * seems to be less reliable in slow mode.
- */
-#define PIN_TO_BASEREG(pin) (0)
-#define PIN_TO_BITMASK(pin) digitalPinToBitMask(pin)
-#define IO_REG_TYPE uint32_t
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-
-static inline __attribute__((always_inline))
-IO_REG_TYPE directRead(IO_REG_TYPE mask)
-{
- return ((GPIO_REG(GPIO_INPUT_VAL) & mask) != 0) ? 1 : 0;
-}
-
-static inline __attribute__((always_inline))
-void directModeInput(IO_REG_TYPE mask)
-{
- GPIO_REG(GPIO_OUTPUT_XOR) &= ~mask;
- GPIO_REG(GPIO_IOF_EN) &= ~mask;
-
- GPIO_REG(GPIO_INPUT_EN) |= mask;
- GPIO_REG(GPIO_OUTPUT_EN) &= ~mask;
-}
-
-static inline __attribute__((always_inline))
-void directModeOutput(IO_REG_TYPE mask)
-{
- GPIO_REG(GPIO_OUTPUT_XOR) &= ~mask;
- GPIO_REG(GPIO_IOF_EN) &= ~mask;
-
- GPIO_REG(GPIO_INPUT_EN) &= ~mask;
- GPIO_REG(GPIO_OUTPUT_EN) |= mask;
-}
-
-static inline __attribute__((always_inline))
-void directWriteLow(IO_REG_TYPE mask)
-{
- GPIO_REG(GPIO_OUTPUT_VAL) &= ~mask;
-}
-
-static inline __attribute__((always_inline))
-void directWriteHigh(IO_REG_TYPE mask)
-{
- GPIO_REG(GPIO_OUTPUT_VAL) |= mask;
-}
-
-#define DIRECT_READ(base, mask) directRead(mask)
-#define DIRECT_WRITE_LOW(base, mask) directWriteLow(mask)
-#define DIRECT_WRITE_HIGH(base, mask) directWriteHigh(mask)
-#define DIRECT_MODE_INPUT(base, mask) directModeInput(mask)
-#define DIRECT_MODE_OUTPUT(base, mask) directModeOutput(mask)
-
-#else
-#define PIN_TO_BASEREG(pin) (0)
-#define PIN_TO_BITMASK(pin) (pin)
-#define IO_REG_TYPE unsigned int
-#define IO_REG_BASE_ATTR
-#define IO_REG_MASK_ATTR
-#define DIRECT_READ(base, pin) digitalRead(pin)
-#define DIRECT_WRITE_LOW(base, pin) digitalWrite(pin, LOW)
-#define DIRECT_WRITE_HIGH(base, pin) digitalWrite(pin, HIGH)
-#define DIRECT_MODE_INPUT(base, pin) pinMode(pin,INPUT)
-#define DIRECT_MODE_OUTPUT(base, pin) pinMode(pin,OUTPUT)
-#warning "OneWire. Fallback mode. Using API calls for pinMode,digitalRead and digitalWrite. Operation of this library is not guaranteed on this architecture."
-
-#endif
-
-
-class OneWire
-{
- private:
- IO_REG_TYPE bitmask;
- volatile IO_REG_TYPE *baseReg;
-
-#if ONEWIRE_SEARCH
- // global search state
- unsigned char ROM_NO[8];
- uint8_t LastDiscrepancy;
- uint8_t LastFamilyDiscrepancy;
- uint8_t LastDeviceFlag;
-#endif
-
- public:
- OneWire( uint8_t pin);
-
- // Perform a 1-Wire reset cycle. Returns 1 if a device responds
- // with a presence pulse. Returns 0 if there is no device or the
- // bus is shorted or otherwise held low for more than 250uS
- uint8_t reset(void);
-
- // Issue a 1-Wire rom select command, you do the reset first.
- void select(const uint8_t rom[8]);
-
- // Issue a 1-Wire rom skip command, to address all on bus.
- void skip(void);
-
- // Write a byte. If 'power' is one then the wire is held high at
- // the end for parasitically powered devices. You are responsible
- // for eventually depowering it by calling depower() or doing
- // another read or write.
- void write(uint8_t v, uint8_t power = 0);
-
- void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0);
-
- // Read a byte.
- uint8_t read(void);
-
- void read_bytes(uint8_t *buf, uint16_t count);
-
- // Write a bit. The bus is always left powered at the end, see
- // note in write() about that.
- void write_bit(uint8_t v);
-
- // Read a bit.
- uint8_t read_bit(void);
-
- // Stop forcing power onto the bus. You only need to do this if
- // you used the 'power' flag to write() or used a write_bit() call
- // and aren't about to do another read or write. You would rather
- // not leave this powered if you don't have to, just in case
- // someone shorts your bus.
- void depower(void);
-
-#if ONEWIRE_SEARCH
- // Clear the search state so that if will start from the beginning again.
- void reset_search();
-
- // Setup the search to find the device type 'family_code' on the next call
- // to search(*newAddr) if it is present.
- void target_search(uint8_t family_code);
-
- // Look for the next device. Returns 1 if a new address has been
- // returned. A zero might mean that the bus is shorted, there are
- // no devices, or you have already retrieved all of them. It
- // might be a good idea to check the CRC to make sure you didn't
- // get garbage. The order is deterministic. You will always get
- // the same devices in the same order.
- uint8_t search(uint8_t *newAddr, bool search_mode = true);
-#endif
-
-#if ONEWIRE_CRC
- // Compute a Dallas Semiconductor 8 bit CRC, these are used in the
- // ROM and scratchpad registers.
- static uint8_t crc8(const uint8_t *addr, uint8_t len);
-
-#if ONEWIRE_CRC16
- // Compute the 1-Wire CRC16 and compare it against the received CRC.
- // Example usage (reading a DS2408):
- // // Put everything in a buffer so we can compute the CRC easily.
- // uint8_t buf[13];
- // buf[0] = 0xF0; // Read PIO Registers
- // buf[1] = 0x88; // LSB address
- // buf[2] = 0x00; // MSB address
- // WriteBytes(net, buf, 3); // Write 3 cmd bytes
- // ReadBytes(net, buf+3, 10); // Read 6 data bytes, 2 0xFF, 2 CRC16
- // if (!CheckCRC16(buf, 11, &buf[11])) {
- // // Handle error.
- // }
- //
- // @param input - Array of bytes to checksum.
- // @param len - How many bytes to use.
- // @param inverted_crc - The two CRC16 bytes in the received data.
- // This should just point into the received data,
- // *not* at a 16-bit integer.
- // @param crc - The crc starting value (optional)
- // @return True, iff the CRC matches.
- static bool check_crc16(const uint8_t* input, uint16_t len, const uint8_t* inverted_crc, uint16_t crc = 0);
-
- // Compute a Dallas Semiconductor 16 bit CRC. This is required to check
- // the integrity of data received from many 1-Wire devices. Note that the
- // CRC computed here is *not* what you'll get from the 1-Wire network,
- // for two reasons:
- // 1) The CRC is transmitted bitwise inverted.
- // 2) Depending on the endian-ness of your processor, the binary
- // representation of the two-byte return value may have a different
- // byte order than the two bytes you get from 1-Wire.
- // @param input - Array of bytes to checksum.
- // @param len - How many bytes to use.
- // @param crc - The crc starting value (optional)
- // @return The CRC16, as defined by Dallas Semiconductor.
- static uint16_t crc16(const uint8_t* input, uint16_t len, uint16_t crc = 0);
-#endif
-#endif
-};
-
-#endif
diff --git a/lib/lib_basic/OneWire-Stickbreaker/OneWire.cpp b/lib/lib_basic/TasmotaOneWire-2.3.3/OneWire.cpp
similarity index 70%
rename from lib/lib_basic/OneWire-Stickbreaker/OneWire.cpp
rename to lib/lib_basic/TasmotaOneWire-2.3.3/OneWire.cpp
index 404e8b272..2ef1a3102 100644
--- a/lib/lib_basic/OneWire-Stickbreaker/OneWire.cpp
+++ b/lib/lib_basic/TasmotaOneWire-2.3.3/OneWire.cpp
@@ -33,6 +33,12 @@ OneWire is now very mature code. No changes other than adding
definitions for newer hardware support are anticipated.
=======
+Version 2.3.3 Tasmota 26JAN2024
+ Add support for Shelly Add-On by Theo Arends
+
+Version 2.3.3 Tasmota 15AUG2023
+ Add support for ESP32 Arduino core 3 by @Jason2866
+
Version 2.3.3 ESP32 Stickbreaker 06MAY2019
Add a #ifdef to isolate ESP32 mods
Version 2.3.1 ESP32 everslick 30APR2018
@@ -152,19 +158,180 @@ sample code bearing this copyright.
#include "OneWire.h"
-#ifdef ESP32
-#define t_noInterrupts() {portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;portENTER_CRITICAL(&mux)
-#define t_interrupts() portEXIT_CRITICAL(&mux);}
-#else
+// Platform specific I/O definitions
+
+#if defined(ARDUINO_ARCH_ESP8266)
+// Special note: I depend on the ESP community to maintain these definitions and
+// submit good pull requests. I can not answer any ESP questions or help you
+// resolve any problems related to ESP chips. Please do not contact me and please
+// DO NOT CREATE GITHUB ISSUES for ESP support. All ESP questions must be asked
+// on ESP community forums.
+#define PIN_TO_BASEREG(pin) ((volatile uint32_t*) GPO)
+#define PIN_TO_BITMASK(pin) (1UL << pin)
+#define IO_REG_TYPE uint32_t
+#define IO_REG_BASE_ATTR
+#define IO_REG_MASK_ATTR
+
+static inline __attribute__((always_inline))
+void directModeInput(IO_REG_TYPE mask)
+{
+ if(mask > 0x8000)
+ {
+ GP16FFS(GPFFS_GPIO(16));
+ GPC16 = 0;
+ GP16E &= ~1;
+ }
+ else
+ {
+ GPE &= ~(mask);
+ }
+}
+
+static inline __attribute__((always_inline))
+void directModeOutput(IO_REG_TYPE mask)
+{
+ if(mask > 0x8000)
+ {
+ GP16FFS(GPFFS_GPIO(16));
+ GPC16 = 0;
+ GP16E |= 1;
+ }
+ else
+ {
+ GPE |= (mask);
+ }
+}
+
+static inline __attribute__((always_inline))
+bool directRead(IO_REG_TYPE mask)
+{
+ if(mask > 0x8000)
+ return GP16I & 0x01;
+ else
+ return ((GPI & (mask)) ? true : false);
+}
+
+#define DIRECT_READ(base, mask) directRead(mask)
+#define DIRECT_MODE_INPUT(base, mask) directModeInput(mask)
+#define DIRECT_MODE_OUTPUT(base, mask) directModeOutput(mask)
+#define DIRECT_WRITE_LOW(base, mask) (mask > 0x8000) ? GP16O &= ~1 : (GPOC = (mask))
+#define DIRECT_WRITE_HIGH(base, mask) (mask > 0x8000) ? GP16O |= 1 : (GPOS = (mask))
+
+#define CRIT_TIMING
#define t_noInterrupts noInterrupts
#define t_interrupts interrupts
+
+#elif defined(ARDUINO_ARCH_ESP32)
+#include
+#if ESP_IDF_VERSION_MAJOR >= 5
+#include "soc/gpio_periph.h"
+#endif // ESP_IDF_VERSION_MAJOR >= 5
+#define PIN_TO_BASEREG(pin) (0)
+#define PIN_TO_BITMASK(pin) (pin)
+#define IO_REG_TYPE uint32_t
+#define IO_REG_BASE_ATTR
+#define IO_REG_MASK_ATTR
+
+static inline __attribute__((always_inline))
+IO_REG_TYPE directRead(IO_REG_TYPE pin)
+{
+#if SOC_GPIO_PIN_COUNT <= 32
+ return (GPIO.in.val >> pin) & 0x1;
+#else // ESP32 with over 32 gpios
+ if ( pin < 32 )
+ return (GPIO.in >> pin) & 0x1;
+ else
+ return (GPIO.in1.val >> (pin - 32)) & 0x1;
+#endif
+ return 0;
+
+}
+
+static inline __attribute__((always_inline))
+void directWriteLow(IO_REG_TYPE pin)
+{
+#if SOC_GPIO_PIN_COUNT <= 32
+ GPIO.out_w1tc.val = ((uint32_t)1 << pin);
+#else // ESP32 with over 32 gpios
+ if ( pin < 32 )
+ GPIO.out_w1tc = ((uint32_t)1 << pin);
+ else
+ GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32));
+#endif
+}
+
+static inline __attribute__((always_inline))
+void directWriteHigh(IO_REG_TYPE pin)
+{
+#if SOC_GPIO_PIN_COUNT <= 32
+ GPIO.out_w1ts.val = ((uint32_t)1 << pin);
+#else // ESP32 with over 32 gpios
+ if ( pin < 32 )
+ GPIO.out_w1ts = ((uint32_t)1 << pin);
+ else
+ GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32));
#endif
-OneWire::OneWire(uint8_t pin)
+}
+
+static inline __attribute__((always_inline))
+void directModeInput(IO_REG_TYPE pin)
{
+ if ( digitalPinIsValid(pin) )
+ {
+ // Input
+#if SOC_GPIO_PIN_COUNT <= 32
+ GPIO.enable_w1tc.val = ((uint32_t)1 << (pin));
+#else // ESP32 with over 32 gpios
+ if ( pin < 32 )
+ GPIO.enable_w1tc = ((uint32_t)1 << pin);
+ else
+ GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32));
+#endif
+ }
+
+}
+
+static inline __attribute__((always_inline))
+void directModeOutput(IO_REG_TYPE pin)
+{
+ if ( digitalPinCanOutput(pin) )
+ {
+ // Output
+#if SOC_GPIO_PIN_COUNT <= 32
+ GPIO.enable_w1ts.val = ((uint32_t)1 << (pin));
+#else // ESP32 with over 32 gpios
+ if ( pin < 32 )
+ GPIO.enable_w1ts = ((uint32_t)1 << pin);
+ else
+ GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32));
+#endif
+ }
+
+}
+
+#define DIRECT_READ(base, pin) directRead(pin)
+#define DIRECT_WRITE_LOW(base, pin) directWriteLow(pin)
+#define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(pin)
+#define DIRECT_MODE_INPUT(base, pin) directModeInput(pin)
+#define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(pin)
+
+#define CRIT_TIMING IRAM_ATTR
+#define t_noInterrupts() {portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;portENTER_CRITICAL(&mux)
+#define t_interrupts() portEXIT_CRITICAL(&mux);}
+
+#endif
+
+OneWire::OneWire(uint8_t pin, int8_t pin_out) {
pinMode(pin, INPUT);
bitmask = PIN_TO_BITMASK(pin);
baseReg = PIN_TO_BASEREG(pin);
+ dual_mode = (pin_out > -1);
+ if (dual_mode) {
+ pinMode(pin_out, OUTPUT);
+ bitmask_out = PIN_TO_BITMASK(pin_out);
+ baseReg_out = PIN_TO_BASEREG(pin_out);
+ }
#if ONEWIRE_SEARCH
reset_search();
#endif
@@ -177,19 +344,19 @@ OneWire::OneWire(uint8_t pin)
//
// Returns 1 if a device asserted a presence pulse, 0 otherwise.
//
-#ifdef ARDUINO_ARCH_ESP32
-uint8_t IRAM_ATTR OneWire::reset(void)
-#else
-uint8_t OneWire::reset(void)
-#endif
+uint8_t CRIT_TIMING OneWire::reset(void)
{
- IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
- volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;
- uint8_t r;
- uint8_t retries = 125;
+ IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
+ volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;
+
+ uint8_t r;
+ uint8_t retries = 125;
+
+ if (!dual_mode) {
t_noInterrupts();
DIRECT_MODE_INPUT(reg, mask);
t_interrupts();
+
// wait until the wire is high... just in case
do {
if (--retries == 0) return 0;
@@ -204,7 +371,33 @@ uint8_t OneWire::reset(void)
delayMicroseconds(70);
r = !DIRECT_READ(reg, mask);
t_interrupts();
+
delayMicroseconds(410);
+ } else {
+ IO_REG_TYPE mask_out IO_REG_MASK_ATTR = bitmask_out;
+ volatile IO_REG_TYPE *reg_out IO_REG_BASE_ATTR = baseReg_out;
+
+ t_noInterrupts();
+ DIRECT_WRITE_HIGH(reg_out, mask_out);
+ t_interrupts();
+
+ // wait until the wire is high... just in case
+ do {
+ if (--retries == 0) return 0;
+ delayMicroseconds(2);
+ } while ( !DIRECT_READ(reg, mask));
+
+ t_noInterrupts();
+ DIRECT_WRITE_LOW(reg_out, mask_out);
+ delayMicroseconds(480);
+ DIRECT_WRITE_HIGH(reg_out, mask_out);
+ delayMicroseconds(70);
+ r = !DIRECT_READ(reg, mask);
+ t_interrupts();
+
+ delayMicroseconds(410);
+ }
+
return r;
}
@@ -212,57 +405,84 @@ uint8_t OneWire::reset(void)
// Write a bit. Port and bit is used to cut lookup time and provide
// more certain timing.
//
-#ifdef ARDUINO_ARCH_ESP32
-void IRAM_ATTR OneWire::write_bit(uint8_t v)
-#else
-void OneWire::write_bit(uint8_t v)
-#endif
+void CRIT_TIMING OneWire::write_bit(uint8_t v)
{
IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;
- if (v & 1) {
- t_noInterrupts();
- DIRECT_WRITE_LOW(reg, mask);
- DIRECT_MODE_OUTPUT(reg, mask); // drive output low
- delayMicroseconds(10);
- DIRECT_WRITE_HIGH(reg, mask); // drive output high
- t_interrupts();
- delayMicroseconds(55);
- } else {
- t_noInterrupts();
- DIRECT_WRITE_LOW(reg, mask);
- DIRECT_MODE_OUTPUT(reg, mask); // drive output low
- delayMicroseconds(65);
- DIRECT_WRITE_HIGH(reg, mask); // drive output high
- t_interrupts();
- delayMicroseconds(5);
- }
+ if (!dual_mode) {
+ if (v & 1) {
+ t_noInterrupts();
+ DIRECT_WRITE_LOW(reg, mask);
+ DIRECT_MODE_OUTPUT(reg, mask); // drive output low
+ delayMicroseconds(10);
+ DIRECT_WRITE_HIGH(reg, mask); // drive output high
+ t_interrupts();
+ delayMicroseconds(55);
+ } else {
+ t_noInterrupts();
+ DIRECT_WRITE_LOW(reg, mask);
+ DIRECT_MODE_OUTPUT(reg, mask); // drive output low
+ delayMicroseconds(65);
+ DIRECT_WRITE_HIGH(reg, mask); // drive output high
+ t_interrupts();
+ delayMicroseconds(5);
+ }
+ } else {
+ IO_REG_TYPE mask_out IO_REG_MASK_ATTR = bitmask_out;
+ volatile IO_REG_TYPE *reg_out IO_REG_BASE_ATTR = baseReg_out;
+
+ if (v & 1) {
+ t_noInterrupts();
+ DIRECT_WRITE_LOW(reg_out, mask_out);
+ delayMicroseconds(10);
+ DIRECT_WRITE_HIGH(reg_out, mask_out); // drive output high
+ t_interrupts();
+ delayMicroseconds(55);
+ } else {
+ t_noInterrupts();
+ DIRECT_WRITE_LOW(reg_out, mask_out);
+ delayMicroseconds(65);
+ DIRECT_WRITE_HIGH(reg_out, mask_out); // drive output high
+ t_interrupts();
+ delayMicroseconds(5);
+ }
+ }
}
//
// Read a bit. Port and bit is used to cut lookup time and provide
// more certain timing.
//
-#ifdef ARDUINO_ARCH_ESP32
-uint8_t IRAM_ATTR OneWire::read_bit(void)
-#else
-uint8_t OneWire::read_bit(void)
-#endif
+uint8_t CRIT_TIMING OneWire::read_bit(void)
{
IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;
uint8_t r;
- t_noInterrupts();
- DIRECT_MODE_OUTPUT(reg, mask);
- DIRECT_WRITE_LOW(reg, mask);
- delayMicroseconds(3);
- DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise
- delayMicroseconds(10);
- r = DIRECT_READ(reg, mask);
- t_interrupts();
- delayMicroseconds(53);
+ if (!dual_mode) {
+ t_noInterrupts();
+ DIRECT_MODE_OUTPUT(reg, mask);
+ DIRECT_WRITE_LOW(reg, mask);
+ delayMicroseconds(3);
+ DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise
+ delayMicroseconds(10);
+ r = DIRECT_READ(reg, mask);
+ t_interrupts();
+ delayMicroseconds(53);
+ } else {
+ IO_REG_TYPE mask_out IO_REG_MASK_ATTR = bitmask_out;
+ volatile IO_REG_TYPE *reg_out IO_REG_BASE_ATTR = baseReg_out;
+
+ t_noInterrupts();
+ DIRECT_WRITE_LOW(reg_out, mask_out);
+ delayMicroseconds(3);
+ DIRECT_WRITE_HIGH(reg_out, mask_out);
+ delayMicroseconds(10);
+ r = DIRECT_READ(reg, mask);
+ t_interrupts();
+ delayMicroseconds(53);
+ }
return r;
}
@@ -280,10 +500,16 @@ void OneWire::write(uint8_t v, uint8_t power /* = 0 */) {
OneWire::write_bit( (bitMask & v)?1:0);
}
if ( !power) {
+ if (!dual_mode) {
t_noInterrupts();
DIRECT_MODE_INPUT(baseReg, bitmask);
DIRECT_WRITE_LOW(baseReg, bitmask);
t_interrupts();
+ } else {
+// t_noInterrupts();
+// DIRECT_WRITE_LOW(baseReg_out, bitmask_out);
+// t_interrupts();
+ }
}
}
@@ -291,10 +517,16 @@ void OneWire::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0
for (uint16_t i = 0 ; i < count ; i++)
write(buf[i]);
if (!power) {
- t_noInterrupts();
- DIRECT_MODE_INPUT(baseReg, bitmask);
- DIRECT_WRITE_LOW(baseReg, bitmask);
- t_interrupts();
+ if (!dual_mode) {
+ t_noInterrupts();
+ DIRECT_MODE_INPUT(baseReg, bitmask);
+ DIRECT_WRITE_LOW(baseReg, bitmask);
+ t_interrupts();
+ } else {
+// t_noInterrupts();
+// DIRECT_WRITE_LOW(baseReg_out, bitmask_out);
+// t_interrupts();
+ }
}
}
@@ -338,9 +570,9 @@ void OneWire::skip()
void OneWire::depower()
{
- t_noInterrupts();
- DIRECT_MODE_INPUT(baseReg, bitmask);
- t_interrupts();
+// t_noInterrupts();
+// DIRECT_MODE_INPUT(baseReg, bitmask);
+// t_interrupts();
}
#if ONEWIRE_SEARCH
diff --git a/lib/lib_basic/TasmotaOneWire-2.3.3/OneWire.h b/lib/lib_basic/TasmotaOneWire-2.3.3/OneWire.h
new file mode 100644
index 000000000..fcef2bd20
--- /dev/null
+++ b/lib/lib_basic/TasmotaOneWire-2.3.3/OneWire.h
@@ -0,0 +1,171 @@
+#ifndef OneWire_h
+#define OneWire_h
+
+#include
+#include "Arduino.h" // for delayMicroseconds, digitalPinToBitMask, etc
+
+// You can exclude certain features from OneWire. In theory, this
+// might save some space. In practice, the compiler automatically
+// removes unused code (technically, the linker, using -fdata-sections
+// and -ffunction-sections when compiling, and Wl,--gc-sections
+// when linking), so most of these will not result in any code size
+// reduction. Well, unless you try to use the missing features
+// and redesign your program to not need them! ONEWIRE_CRC8_TABLE
+// is the exception, because it selects a fast but large algorithm
+// or a small but slow algorithm.
+
+// you can exclude onewire_search by defining that to 0
+#ifndef ONEWIRE_SEARCH
+#define ONEWIRE_SEARCH 1
+#endif
+
+// You can exclude CRC checks altogether by defining this to 0
+#ifndef ONEWIRE_CRC
+#define ONEWIRE_CRC 1
+#endif
+
+// Select the table-lookup method of computing the 8-bit CRC
+// by setting this to 1. The lookup table enlarges code size by
+// about 250 bytes. It does NOT consume RAM (but did in very
+// old versions of OneWire). If you disable this, a slower
+// but very compact algorithm is used.
+#ifndef ONEWIRE_CRC8_TABLE
+#define ONEWIRE_CRC8_TABLE 0
+#endif
+
+// You can allow 16-bit CRC checks by defining this to 1
+// (Note that ONEWIRE_CRC must also be 1.)
+#ifndef ONEWIRE_CRC16
+#define ONEWIRE_CRC16 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#define IO_REG_TYPE uint32_t
+
+class OneWire
+{
+ private:
+ IO_REG_TYPE bitmask;
+ volatile IO_REG_TYPE *baseReg;
+ bool dual_mode;
+ IO_REG_TYPE bitmask_out;
+ volatile IO_REG_TYPE *baseReg_out;
+
+#if ONEWIRE_SEARCH
+ // global search state
+ unsigned char ROM_NO[8];
+ uint8_t LastDiscrepancy;
+ uint8_t LastFamilyDiscrepancy;
+ uint8_t LastDeviceFlag;
+#endif
+
+ public:
+ OneWire(uint8_t pin, int8_t pin_out = -1);
+
+ // Perform a 1-Wire reset cycle. Returns 1 if a device responds
+ // with a presence pulse. Returns 0 if there is no device or the
+ // bus is shorted or otherwise held low for more than 250uS
+ uint8_t reset(void);
+
+ // Issue a 1-Wire rom select command, you do the reset first.
+ void select(const uint8_t rom[8]);
+
+ // Issue a 1-Wire rom skip command, to address all on bus.
+ void skip(void);
+
+ // Write a byte. If 'power' is one then the wire is held high at
+ // the end for parasitically powered devices. You are responsible
+ // for eventually depowering it by calling depower() or doing
+ // another read or write.
+ void write(uint8_t v, uint8_t power = 0);
+
+ void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0);
+
+ // Read a byte.
+ uint8_t read(void);
+
+ void read_bytes(uint8_t *buf, uint16_t count);
+
+ // Write a bit. The bus is always left powered at the end, see
+ // note in write() about that.
+ void write_bit(uint8_t v);
+
+ // Read a bit.
+ uint8_t read_bit(void);
+
+ // Stop forcing power onto the bus. You only need to do this if
+ // you used the 'power' flag to write() or used a write_bit() call
+ // and aren't about to do another read or write. You would rather
+ // not leave this powered if you don't have to, just in case
+ // someone shorts your bus.
+ void depower(void);
+
+#if ONEWIRE_SEARCH
+ // Clear the search state so that if will start from the beginning again.
+ void reset_search();
+
+ // Setup the search to find the device type 'family_code' on the next call
+ // to search(*newAddr) if it is present.
+ void target_search(uint8_t family_code);
+
+ // Look for the next device. Returns 1 if a new address has been
+ // returned. A zero might mean that the bus is shorted, there are
+ // no devices, or you have already retrieved all of them. It
+ // might be a good idea to check the CRC to make sure you didn't
+ // get garbage. The order is deterministic. You will always get
+ // the same devices in the same order.
+ uint8_t search(uint8_t *newAddr, bool search_mode = true);
+#endif
+
+#if ONEWIRE_CRC
+ // Compute a Dallas Semiconductor 8 bit CRC, these are used in the
+ // ROM and scratchpad registers.
+ static uint8_t crc8(const uint8_t *addr, uint8_t len);
+
+#if ONEWIRE_CRC16
+ // Compute the 1-Wire CRC16 and compare it against the received CRC.
+ // Example usage (reading a DS2408):
+ // // Put everything in a buffer so we can compute the CRC easily.
+ // uint8_t buf[13];
+ // buf[0] = 0xF0; // Read PIO Registers
+ // buf[1] = 0x88; // LSB address
+ // buf[2] = 0x00; // MSB address
+ // WriteBytes(net, buf, 3); // Write 3 cmd bytes
+ // ReadBytes(net, buf+3, 10); // Read 6 data bytes, 2 0xFF, 2 CRC16
+ // if (!CheckCRC16(buf, 11, &buf[11])) {
+ // // Handle error.
+ // }
+ //
+ // @param input - Array of bytes to checksum.
+ // @param len - How many bytes to use.
+ // @param inverted_crc - The two CRC16 bytes in the received data.
+ // This should just point into the received data,
+ // *not* at a 16-bit integer.
+ // @param crc - The crc starting value (optional)
+ // @return True, iff the CRC matches.
+ static bool check_crc16(const uint8_t* input, uint16_t len, const uint8_t* inverted_crc, uint16_t crc = 0);
+
+ // Compute a Dallas Semiconductor 16 bit CRC. This is required to check
+ // the integrity of data received from many 1-Wire devices. Note that the
+ // CRC computed here is *not* what you'll get from the 1-Wire network,
+ // for two reasons:
+ // 1) The CRC is transmitted bitwise inverted.
+ // 2) Depending on the endian-ness of your processor, the binary
+ // representation of the two-byte return value may have a different
+ // byte order than the two bytes you get from 1-Wire.
+ // @param input - Array of bytes to checksum.
+ // @param len - How many bytes to use.
+ // @param crc - The crc starting value (optional)
+ // @return The CRC16, as defined by Dallas Semiconductor.
+ static uint16_t crc16(const uint8_t* input, uint16_t len, uint16_t crc = 0);
+#endif
+#endif
+};
+
+#endif
diff --git a/lib/lib_basic/OneWire-Stickbreaker/README.md b/lib/lib_basic/TasmotaOneWire-2.3.3/README.md
similarity index 100%
rename from lib/lib_basic/OneWire-Stickbreaker/README.md
rename to lib/lib_basic/TasmotaOneWire-2.3.3/README.md
diff --git a/lib/lib_basic/OneWire-Stickbreaker/examples/DS18x20_Temperature/DS18x20_Temperature.pde b/lib/lib_basic/TasmotaOneWire-2.3.3/examples/DS18x20_Temperature/DS18x20_Temperature.pde
similarity index 100%
rename from lib/lib_basic/OneWire-Stickbreaker/examples/DS18x20_Temperature/DS18x20_Temperature.pde
rename to lib/lib_basic/TasmotaOneWire-2.3.3/examples/DS18x20_Temperature/DS18x20_Temperature.pde
diff --git a/lib/lib_basic/OneWire-Stickbreaker/examples/DS2408_Switch/DS2408_Switch.pde b/lib/lib_basic/TasmotaOneWire-2.3.3/examples/DS2408_Switch/DS2408_Switch.pde
similarity index 100%
rename from lib/lib_basic/OneWire-Stickbreaker/examples/DS2408_Switch/DS2408_Switch.pde
rename to lib/lib_basic/TasmotaOneWire-2.3.3/examples/DS2408_Switch/DS2408_Switch.pde
diff --git a/lib/lib_basic/OneWire-Stickbreaker/examples/DS250x_PROM/DS250x_PROM.pde b/lib/lib_basic/TasmotaOneWire-2.3.3/examples/DS250x_PROM/DS250x_PROM.pde
similarity index 100%
rename from lib/lib_basic/OneWire-Stickbreaker/examples/DS250x_PROM/DS250x_PROM.pde
rename to lib/lib_basic/TasmotaOneWire-2.3.3/examples/DS250x_PROM/DS250x_PROM.pde
diff --git a/lib/lib_basic/OneWire-Stickbreaker/keywords.txt b/lib/lib_basic/TasmotaOneWire-2.3.3/keywords.txt
similarity index 100%
rename from lib/lib_basic/OneWire-Stickbreaker/keywords.txt
rename to lib/lib_basic/TasmotaOneWire-2.3.3/keywords.txt
diff --git a/lib/lib_basic/OneWire-Stickbreaker/library.json b/lib/lib_basic/TasmotaOneWire-2.3.3/library.json
similarity index 100%
rename from lib/lib_basic/OneWire-Stickbreaker/library.json
rename to lib/lib_basic/TasmotaOneWire-2.3.3/library.json
diff --git a/lib/lib_basic/OneWire-Stickbreaker/library.properties b/lib/lib_basic/TasmotaOneWire-2.3.3/library.properties
similarity index 100%
rename from lib/lib_basic/OneWire-Stickbreaker/library.properties
rename to lib/lib_basic/TasmotaOneWire-2.3.3/library.properties
diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp
index 7ea9aa0e6..f44500c51 100644
--- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp
+++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp
@@ -623,6 +623,22 @@ int8_t Renderer::color_type(void) {
return 0;
}
+bool Renderer::utouch_Init(char **name) {
+ return false;
+}
+
+uint16_t Renderer::touched(void) {
+ return false;
+}
+
+int16_t Renderer::getPoint_x(void) {
+ return 0;
+}
+
+int16_t Renderer::getPoint_y(void) {
+ return 0;
+}
+
void Renderer::Splash(void) {
}
diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h
index 279ab514d..7ef7d86ab 100644
--- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h
+++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h
@@ -92,6 +92,10 @@ public:
virtual void ep_update_mode(uint8_t mode);
virtual void ep_update_area(uint16_t xp, uint16_t yp, uint16_t width, uint16_t height, uint8_t mode);
virtual uint32_t get_sr_touch(uint32_t xp, uint32_t xm, uint32_t yp, uint32_t ym);
+ virtual bool utouch_Init(char **);
+ virtual uint16_t touched(void);
+ virtual int16_t getPoint_x();
+ virtual int16_t getPoint_y();
void setDrawMode(uint8_t mode);
uint8_t drawmode;
diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp
index 6b2262f32..9f2b54216 100755
--- a/lib/lib_display/UDisplay/uDisplay.cpp
+++ b/lib/lib_display/UDisplay/uDisplay.cpp
@@ -37,6 +37,9 @@ extern int Cache_WriteBack_Addr(uint32_t addr, uint32_t size);
#define renderer_swap(a, b) { int16_t t = a; a = b; b = t; }
+enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
+extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
+
const uint16_t udisp_colors[]={UDISP_BLACK,UDISP_WHITE,UDISP_RED,UDISP_GREEN,UDISP_BLUE,UDISP_CYAN,UDISP_MAGENTA,\
UDISP_YELLOW,UDISP_NAVY,UDISP_DARKGREEN,UDISP_DARKCYAN,UDISP_MAROON,UDISP_PURPLE,UDISP_OLIVE,\
UDISP_LIGHTGREY,UDISP_DARKGREY,UDISP_ORANGE,UDISP_GREENYELLOW,UDISP_PINK};
@@ -79,6 +82,21 @@ uDisplay::~uDisplay(void) {
}
}
+#ifdef USE_UNIVERSAL_TOUCH
+ if (ut_init_code) {
+ free(ut_init_code);
+ }
+ if (ut_touch_code) {
+ free(ut_touch_code);
+ }
+ if (ut_getx_code) {
+ free(ut_getx_code);
+ }
+ if (ut_gety_code) {
+ free(ut_gety_code);
+ }
+#endif // USE_UNIVERSAL_TOUCH
+
#ifdef USE_ESP32_S3
if (_dmadesc) {
heap_caps_free(_dmadesc);
@@ -109,6 +127,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
lutftime = 350;
lut3time = 10;
busy_pin = -1;
+ spec_init = -1;
ep_mode = 0;
fg_col = 1;
bg_col = 0;
@@ -136,6 +155,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
lut_cmd[cnt] = 0xff;
lut_array[cnt] = 0;
}
+
lut_partial = 0;
lut_full = 0;
char linebuff[UDSP_LBSIZE];
@@ -171,6 +191,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
// collect line and send directly
lp1++;
spi_nr = 4;
+ spec_init = _UDSP_SPI;
spi_dc = -1;
spi_miso = -1;
spi_clk = next_val(&lp1);
@@ -200,8 +221,30 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
Serial.printf("DSP RESET : %d\n", reset);
#endif
}
- }
-
+ } else if (*lp1 == 'I') {
+ // pecial case RGB with i2c init, bus nr, i2c addr
+ lp1++;
+ if (interface == _UDSP_RGB) {
+ // collect line and send directly
+ lp1++;
+ wire_n = next_val(&lp1);
+ i2caddr = next_hex(&lp1);
+#ifdef UDSP_DEBUG
+ Serial.printf("I2C_INIT bus : %d\n", wire_n);
+ Serial.printf("I2C_INIT addr : %02x\n", i2caddr);
+#endif
+ if (wire_n == 1) {
+ wire = &Wire;
+ } else {
+#ifdef ESP32
+ wire = &Wire1;
+#else
+ wire = &Wire;
+#endif
+ }
+ spec_init = _UDSP_I2C;
+ }
+ }
} else if (section == 'L') {
if (*lp1 >= '1' && *lp1 <= '5') {
lut_num = (*lp1 & 0x07);
@@ -332,8 +375,8 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
break;
case 'I':
// init data
- if (interface == _UDSP_RGB && spi_nr == 4) {
- // special case RGB with SPI init
+ if (interface == _UDSP_RGB && spec_init > 0) {
+ // special case RGB with SPI or I2C init
// collect line and send directly
dsp_ncmds = 0;
while (1) {
@@ -344,10 +387,26 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
break;
}
}
- interface = _UDSP_SPI;
- send_spi_icmds(dsp_ncmds);
+ if (spec_init == _UDSP_SPI) {
+ interface = spec_init;
+ send_spi_icmds(dsp_ncmds);
+ } else {
+ if (dsp_ncmds == 2) {
+ wire->beginTransmission(i2caddr);
+ wire->write(dsp_cmds[0]);
+ wire->write(dsp_cmds[1]);
+ wire->endTransmission();
+#ifdef UDSP_DEBUG
+ Serial.printf("reg = %02x, val = %02x\n", dsp_cmds[0], dsp_cmds[1]);
+#endif
+ } else {
+ delay(dsp_cmds[0]);
+#ifdef UDSP_DEBUG
+ Serial.printf("delay = %d ms\n", dsp_cmds[0]);
+#endif
+ }
+ }
interface = _UDSP_RGB;
-
} else {
if (interface == _UDSP_I2C) {
dsp_cmds[dsp_ncmds++] = next_hex(&lp1);
@@ -542,6 +601,64 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
case 'b':
bpmode = next_val(&lp1);
break;
+#ifdef USE_UNIVERSAL_TOUCH
+ case 'U':
+ if (!strncmp(lp1, "TI", 2)) {
+ // init
+ ut_wire = 0;
+ ut_reset = -1;
+ ut_irq = -1;
+ lp1 += 3;
+ str2c(&lp1, ut_name, sizeof(ut_name));
+ if (*lp1 == 'I') {
+ // i2c mode
+ lp1++;
+ uint8_t ut_mode = *lp1 & 0xf;
+ lp1 += 2;
+ ut_i2caddr = next_hex(&lp1);
+ ut_reset = next_val(&lp1);
+ ut_irq = next_val(&lp1);
+
+ if (ut_mode == 1) {
+ ut_wire = &Wire;
+ } else {
+#ifdef ESP32
+ ut_wire = &Wire1;
+#else
+ ut_wire = &Wire;
+#endif
+ }
+ } else if (*lp1 == 'S') {
+ // spi mode
+ lp1++;
+ ut_spi_nr = *lp1 & 0xf;
+ lp1 += 2;
+ ut_spi_cs = next_val(&lp1);
+ ut_reset = next_val(&lp1);
+ ut_irq = next_val(&lp1);
+ pinMode(ut_spi_cs, OUTPUT);
+ digitalWrite(ut_spi_cs, HIGH);
+ ut_spiSettings = SPISettings(2000000, MSBFIRST, SPI_MODE0);
+ } else {
+ // simple resistive touch
+ lp1++;
+ }
+ ut_trans(&lp, &ut_init_code);
+ } else if (!strncmp(lp1, "TT", 2)) {
+ lp1 += 2;
+ // touch
+ ut_trans(&lp, &ut_touch_code);
+ } else if (!strncmp(lp1, "TX", 2)) {
+ lp1 += 2;
+ // get x
+ ut_trans(&lp, &ut_getx_code);
+ } else if (!strncmp(lp1, "TY", 2)) {
+ lp1 += 2;
+ // get y
+ ut_trans(&lp, &ut_gety_code);
+ }
+ break;
+#endif // USE_UNIVERSAL_TOUCH
}
}
}
@@ -844,6 +961,17 @@ uint16_t index = 0;
delay_arg(args);
}
} else {
+ if (spi_dc == -2) {
+ // pseudo opcodes
+ switch (iob) {
+ case UDSP_WRITE_16:
+ break;
+ case UDSP_READ_DATA:
+ break;
+ case UDSP_READ_STATUS:
+ break;
+ }
+ }
ulcd_command(iob);
uint8_t args = dsp_cmds[cmd_offset++];
index++;
@@ -1018,9 +1146,9 @@ Renderer *uDisplay::Init(void) {
_panel_config->clk_src = LCD_CLK_SRC_PLL160M;
- if (spi_speed > 14) {
- spi_speed = 14;
- }
+ //if (spi_speed > 14) {
+ //spi_speed = 14;
+ //}
_panel_config->timings.pclk_hz = spi_speed*1000000;
_panel_config->timings.h_res = gxs;
_panel_config->timings.v_res = gys;
@@ -1815,6 +1943,71 @@ for(y=h; y>0; y--) {
}
*/
+#ifdef USE_UNIVERSAL_TOUCH
+
+uint8_t ut_irq_flg;
+
+void IRAM_ATTR ut_touch_irq(void) {
+ ut_irq_flg = 1;
+}
+
+// universal touch driver
+bool uDisplay::utouch_Init(char **name) {
+ *name = ut_name;
+ if (ut_init_code) {
+ if (ut_reset >= 0) {
+ pinMode(ut_reset, OUTPUT);
+ digitalWrite(ut_reset, HIGH);
+ delay(10);
+ digitalWrite(ut_reset, LOW);
+ delay(5);
+ digitalWrite(ut_reset, HIGH);
+ delay(10);
+ }
+ if (ut_irq >= 0) {
+ pinMode(ut_irq, INPUT );
+ attachInterrupt(ut_irq, ut_touch_irq, FALLING);
+ }
+
+ if (ut_spi_nr == spi_nr) {
+ ut_spi = uspi;
+ } else {
+ // not yet
+ ut_spi = nullptr;
+ }
+ return ut_execute(ut_init_code);
+ }
+ return false;
+}
+
+uint16_t uDisplay::touched(void) {
+ if (ut_irq >= 0) {
+ if (!ut_irq_flg) {
+ return false;
+ }
+ ut_irq_flg = 0;
+ }
+ if (ut_touch_code) {
+ return ut_execute(ut_touch_code);
+ }
+ return 0;
+}
+
+int16_t uDisplay::getPoint_x(void) {
+ if (ut_getx_code) {
+ return ut_execute(ut_getx_code);
+ }
+ return 0;
+}
+
+int16_t uDisplay::getPoint_y(void) {
+ if (ut_gety_code) {
+ return ut_execute(ut_gety_code);
+ }
+ return 0;
+}
+#endif // USE_UNIVERSAL_TOUCH
+
void uDisplay::Splash(void) {
@@ -2401,7 +2594,7 @@ void uDisplay::dim10(uint8_t dim, uint16_t dim_gamma) { // dimmer with
}
// the cases are PSEUDO_OPCODES from MODULE_DESCRIPTOR
-// and may be exapnded with more opcodes
+// and may be expanded with more opcodes
void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) {
int16_t temp;
@@ -2461,6 +2654,462 @@ char *uDisplay::devname(void) {
return dname;
}
+
+
+#ifdef USE_UNIVERSAL_TOUCH
+
+float CharToFloat(const char *str);
+
+uint32_t uDisplay::ut_par(char **lp, uint32_t mode) {
+ char *cp = *lp;
+ while (*cp != ' ') {
+ if (!cp) break;
+ cp++;
+ }
+ cp++;
+ uint32_t result;
+ if (!mode) {
+ // hex
+ result = strtol(cp, &cp, 16);
+ } else if (mode == 1) {
+ // word
+ result = strtol(cp, &cp, 10);
+ } else {
+ // float as 32bit integer
+ float fval = CharToFloat(cp);
+ result = *(uint32_t*)&fval;
+ while (*cp) {
+ if (*cp == ' ' || *cp =='\n') {
+ break;
+ }
+ cp++;
+ }
+ }
+ *lp = cp;
+ return result;
+}
+
+// translate pseudo opcodes to tokens
+void uDisplay::ut_trans(char **sp, uint8_t **code) {
+ char *cp = *sp;
+ uint16_t wval;
+ uint8_t tmp_code[64];
+ uint8_t *ut_code = tmp_code;
+ while (*cp) {
+ if (*cp == ':' || *cp == '#') {
+ break;
+ }
+ if (*cp == ';') {
+ // skip comment line
+ while (*cp) {
+ if (*cp == '\n') {
+ cp++;
+ break;
+ }
+ cp++;
+ }
+ }
+ if (!strncmp(cp, "RDWM", 4)) {
+ // read word many
+ *ut_code++ = UT_RDWM;
+ wval = ut_par(&cp, 0);
+ *ut_code++ = wval>>8;
+ *ut_code++ = wval;
+ wval = ut_par(&cp, 1);
+ if (wval > sizeof(ut_array)) {
+ wval = sizeof(ut_array);
+ }
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "RDW", 3)) {
+ // read word one
+ *ut_code++ = UT_RDW;
+ wval = ut_par(&cp, 0);
+ *ut_code++ = wval>>8;
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "RDM", 3)) {
+ // read many
+ *ut_code++ = UT_RDM;
+ *ut_code++ = ut_par(&cp, 0);
+ wval = ut_par(&cp, 1);
+ if (wval > sizeof(ut_array)) {
+ wval = sizeof(ut_array);
+ }
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "RD", 2)) {
+ // read one
+ *ut_code++ = UT_RD;
+ *ut_code++ = ut_par(&cp, 0);
+ } else if (!strncmp(cp, "CPR", 3)) {
+ // cmp and set
+ *ut_code++ = UT_CPR;
+ *ut_code++ = ut_par(&cp, 0);
+ } else if (!strncmp(cp, "CP", 2)) {
+ // cmp and set
+ *ut_code++ = UT_CP;
+ *ut_code++ = ut_par(&cp, 0);
+ } else if (!strncmp(cp, "RTF", 3)) {
+ // return when false
+ *ut_code++ = UT_RTF;
+ } else if (!strncmp(cp, "RTT", 3)) {
+ // return when true
+ *ut_code++ = UT_RTT;
+ } else if (!strncmp(cp, "MVB", 3)) {
+ // move
+ *ut_code++ = UT_MVB;
+ *ut_code++ = ut_par(&cp, 1);
+ *ut_code++ = ut_par(&cp, 1);
+ } else if (!strncmp(cp, "MV", 2)) {
+ // move
+ *ut_code++ = UT_MV;
+ *ut_code++ = ut_par(&cp, 1);
+ *ut_code++ = ut_par(&cp, 1);
+ } else if (!strncmp(cp, "RT", 2)) {
+ // return status
+ *ut_code++ = UT_RT;
+ } else if (!strncmp(cp, "WRW", 3)) {
+ *ut_code++ = UT_WRW;
+ wval = ut_par(&cp, 0);
+ *ut_code++ = wval>>8;
+ *ut_code++ = wval;
+ wval = ut_par(&cp, 0);
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "WR", 2)) {
+ *ut_code++ = UT_WR;
+ wval = ut_par(&cp, 0);
+ *ut_code++ = wval;
+ wval = ut_par(&cp, 0);
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "AND", 3)) {
+ *ut_code++ = UT_AND;
+ wval = ut_par(&cp, 0);
+ *ut_code++ = wval >> 8;
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "SCL", 3)) {
+ *ut_code++ = UT_SCALE;
+ wval = ut_par(&cp, 1);
+ *ut_code++ = wval >> 8;
+ *ut_code++ = wval;
+ uint32_t lval = ut_par(&cp, 2);
+ *ut_code++ = lval >> 24;
+ *ut_code++ = lval >> 16;
+ *ut_code++ = lval >> 8;
+ *ut_code++ = lval;
+ } else if (!strncmp(cp, "LIM", 3)) {
+ *ut_code++ = UT_LIM;
+ wval = ut_par(&cp, 1);
+ *ut_code++ = wval >> 8;
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "GSRT", 4)) {
+ *ut_code++ = UT_GSRT;
+ wval = ut_par(&cp, 1);
+ *ut_code++ = wval >> 8;
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "XPT", 3)) {
+ *ut_code++ = UT_XPT;
+ wval = ut_par(&cp, 1);
+ *ut_code++ = wval >> 8;
+ *ut_code++ = wval;
+ } else if (!strncmp(cp, "DBG", 3)) {
+ *ut_code++ = UT_DBG;
+ wval = ut_par(&cp, 1);
+ *ut_code++ = wval;
+ }
+ cp++;
+ }
+ *ut_code++ = UT_END;
+ *sp = cp - 1;
+ uint16_t memsize = (uint32_t)ut_code - (uint32_t)tmp_code;
+ // allocate memory
+ //AddLog(LOG_LEVEL_INFO, PSTR("UT-code: %d bytes"),memsize);
+#ifdef UDSP_DEBUG
+ Serial.printf("Utouch code size : %d\n", memsize);
+#endif
+ uint8_t *mp = (uint8_t*)malloc(memsize + 2);
+ if (mp) {
+ memmove(mp, tmp_code, memsize);
+ *code = mp;
+ }
+}
+
+uint8_t *uDisplay::ut_rd(uint8_t *iop, uint32_t len, uint32_t amode) {
+ if (ut_wire) {
+ // i2c mode
+ ut_wire->beginTransmission(ut_i2caddr);
+ ut_wire->write(*iop++);
+ if (amode == 2) {
+ ut_wire->write(*iop++);
+ }
+ ut_wire->endTransmission(false);
+ if (len > 1) {
+ len = *iop++;
+ }
+ ut_wire->requestFrom(ut_i2caddr, (size_t)len);
+ uint8_t index = 0;
+ while (ut_wire->available()) {
+ ut_array[index++] = ut_wire->read();
+ }
+ } else {
+ // spi mode
+ if (amode == 1) {
+ uint16_t val = *iop++;
+ uint16_t len = *iop++;
+ if (ut_spi) {
+ digitalWrite(ut_spi_cs, LOW);
+ ut_spi->beginTransaction(ut_spiSettings);
+ ut_spi->transfer(val);
+ val = ut_spi->transfer16(0);
+ ut_spi->endTransaction();
+ ut_array[len] = val << 8;
+ ut_array[len + 1] = val;
+ digitalWrite(ut_spi_cs, HIGH);
+ }
+ }
+ }
+ return iop;
+}
+
+uint8_t *uDisplay::ut_wr(uint8_t *iop, uint32_t amode) {
+ if (ut_wire) {
+ // i2c mode
+ ut_wire->beginTransmission(ut_i2caddr);
+ ut_wire->write(*iop++);
+ if (amode == 2) {
+ ut_wire->write(*iop++);
+ }
+ ut_wire->write(*iop++);
+ ut_wire->endTransmission(true);
+ } else {
+ // spi mode
+ }
+ return iop;
+}
+
+
+int16_t uDisplay::besttwoavg( int16_t x , int16_t y , int16_t z ) {
+ int16_t da, db, dc;
+ int16_t reta = 0;
+ if ( x > y ) da = x - y; else da = y - x;
+ if ( x > z ) db = x - z; else db = z - x;
+ if ( z > y ) dc = z - y; else dc = y - z;
+
+ if ( da <= db && da <= dc ) reta = (x + y) >> 1;
+ else if ( db <= da && db <= dc ) reta = (x + z) >> 1;
+ else reta = (y + z) >> 1;
+
+ return (reta);
+}
+
+uint16_t uDisplay::ut_XPT2046(uint16_t z_th) {
+ uint16_t result = 0;
+ if (ut_spi) {
+ int16_t data[6];
+ ut_spi->beginTransaction(ut_spiSettings);
+ digitalWrite(ut_spi_cs, LOW);
+ ut_spi->transfer(0xB1 /* Z1 */);
+ int16_t z1 = ut_spi->transfer16(0xC1 /* Z2 */) >> 3;
+ int16_t z = z1 + 4095;
+ int16_t z2 = ut_spi->transfer16(0x91 /* X */) >> 3;
+ z -= z2;
+ if (z >= z_th) {
+ ut_spi->transfer16(0x91 /* X */); // dummy X measure, 1st is always noisy
+ data[0] = ut_spi->transfer16(0xD1 /* Y */) >> 3;
+ data[1] = ut_spi->transfer16(0x91 /* X */) >> 3; // make 3 x-y measurements
+ data[2] = ut_spi->transfer16(0xD1 /* Y */) >> 3;
+ data[3] = ut_spi->transfer16(0x91 /* X */) >> 3;
+ result = 1;
+ }
+ else {
+ data[0] = data[1] = data[2] = data[3] = 0;
+ }
+ data[4] = ut_spi->transfer16(0xD0 /* Y */) >> 3; // Last Y touch power down
+ data[5] = ut_spi->transfer16(0) >> 3;
+ digitalWrite(ut_spi_cs, HIGH);
+ ut_spi->endTransaction();
+
+ uint16_t x = besttwoavg( data[0], data[2], data[4] );
+ uint16_t y = besttwoavg( data[1], data[3], data[5] );
+
+ ut_array[0] = x >> 8;
+ ut_array[1] = x;
+ ut_array[2] = y >> 8;
+ ut_array[3] = y;
+ }
+ return result;
+}
+
+int16_t uDisplay::ut_execute(uint8_t *ut_code) {
+int16_t result = 0;
+uint8_t iob, len;
+uint16_t wval;
+
+ while (*ut_code != UT_END) {
+ iob = *ut_code++;
+ switch (iob) {
+ case UT_RD:
+ // read 1 byte
+ ut_code = ut_rd(ut_code, 1, 1);
+ break;
+
+ case UT_RDM:
+ // read multiple bytes
+ ut_code = ut_rd(ut_code, 2, 1);
+ break;
+
+ case UT_RDW:
+ // read 1 byte
+ ut_code = ut_rd(ut_code, 1, 2);
+ break;
+
+ case UT_RDWM:
+ // read multiple bytes
+ ut_code = ut_rd(ut_code, 2, 2);
+ break;
+
+ case UT_WR:
+ ut_code = ut_wr(ut_code, 1);
+ break;
+
+ case UT_WRW:
+ ut_code = ut_wr(ut_code, 2);
+ break;
+
+ case UT_CP:
+ // compare
+ iob = *ut_code++;
+ result = (iob == ut_array[0]);
+ break;
+
+ case UT_CPR:
+ // compare
+ iob = *ut_code++;
+ result = (iob == result);
+ break;
+
+ case UT_RTF:
+ // return when false
+ if (result == 0) {
+ return false;
+ }
+ break;
+
+ case UT_RTT:
+ // return when true
+ if (result > 0) {
+ return false;
+ }
+ break;
+
+ case UT_MVB:
+ // move byte from index to high or low result
+ wval = *ut_code++;
+ iob = *ut_code++;
+ if (wval == 0) {
+ result &= 0xff00;
+ result |= ut_array[iob];
+ } else {
+ result &= 0x00ff;
+ result |= (ut_array[iob] << 8);
+ }
+ break;
+
+ case UT_MV:
+ // move
+ // source
+ result = *ut_code++;
+ iob = *ut_code++;
+ if (iob == 1) {
+ result = ut_array[result];
+ } else if (iob == 2) {
+ iob = result;
+ result = ut_array[iob] << 8;
+ result |= ut_array[iob + 1];
+ } else {
+ iob = result;
+ result = ut_array[iob + 1] << 8;
+ result |= ut_array[iob];
+ }
+ result &= 0xfff;
+ break;
+
+ case UT_AND:
+ // and
+ wval = *ut_code++ << 8;
+ wval |= *ut_code++;
+ result &= wval;
+ break;
+
+ case UT_SCALE:
+ {
+ wval = *ut_code++ << 8;
+ wval |= *ut_code++;
+ result -= wval;
+ uint32_t lval = (uint32_t)*ut_code++ << 24;
+ lval |= (uint32_t)*ut_code++ << 16;
+ lval |= (uint32_t)*ut_code++ << 8;
+ lval |= (uint32_t)*ut_code++;
+ float fval = *(float*)&lval;
+ fval *= (float)result;
+ result = fval;
+ }
+ break;
+
+ case UT_LIM:
+ wval = *ut_code++ << 8;
+ wval |= *ut_code++;
+ if (result > wval) {
+ result = wval;
+ }
+ break;
+
+ case UT_RT:
+ // result
+ return result;
+ break;
+
+ case UT_GSRT:
+#ifdef USE_ESP32_S3
+ { uint32_t val = get_sr_touch(SIMPLERS_XP, SIMPLERS_XM, SIMPLERS_YP, SIMPLERS_YM);
+ if (val == 0) {
+ return false;
+ }
+ uint16_t xp = val >> 16;
+ uint16_t yp = val;
+
+ wval = *ut_code++ << 8;
+ wval |= *ut_code++;
+ if (xp > wval && yp > wval) {
+ ut_array[0] = val >> 24;
+ ut_array[1] = val >> 16;
+ ut_array[2] = val >> 8;
+ ut_array[3] = val;
+ return true;
+ }
+ return false;
+ }
+#endif // USE_ESP32_S3
+ break;
+
+ case UT_XPT:
+ wval = *ut_code++ << 8;
+ wval |= *ut_code++;
+ result = ut_XPT2046(wval);
+ break;
+
+ case UT_DBG:
+ // debug show result
+ //Serial.printf("UTDBG: %d\n", result);
+ wval = *ut_code++;
+ AddLog(LOG_LEVEL_INFO, PSTR("UTDBG %d: %02x : %02x,%02x,%02x,%02x"), wval, result, ut_array[0], ut_array[1], ut_array[2], ut_array[3]);
+ break;
+
+ case UT_END:
+ break;
+ }
+ }
+ return result;
+}
+#endif // USE_UNIVERSAL_TOUCH
+
uint32_t uDisplay::str2c(char **sp, char *vp, uint32_t len) {
char *lp = *sp;
if (len) len--;
@@ -2517,38 +3166,57 @@ uint32_t uDisplay::next_hex(char **sp) {
// we use our own hardware driver for 9 bit spi
void uDisplay::hw_write9(uint8_t val, uint8_t dc) {
- uint32_t regvalue = val >> 1;
- if (dc) regvalue |= 0x80;
- else regvalue &= 0x7f;
- if (val & 1) regvalue |= 0x8000;
-
- REG_SET_BIT(SPI_USER_REG(3), SPI_USR_MOSI);
- REG_WRITE(SPI_MOSI_DLEN_REG(3), 9 - 1);
- uint32_t *dp = (uint32_t*)SPI_W0_REG(3);
- *dp = regvalue;
- REG_SET_BIT(SPI_CMD_REG(3), SPI_USR);
- while (REG_GET_FIELD(SPI_CMD_REG(3), SPI_USR));
+ if (spi_dc < -1) {
+ // RA8876 mode
+ if (!dc) {
+ uspi->write(RA8876_CMD_WRITE);
+ uspi->write(val);
+ } else {
+ uspi->write(RA8876_DATA_WRITE);
+ uspi->write(val);
+ }
+ } else {
+ uint32_t regvalue = val >> 1;
+ if (dc) regvalue |= 0x80;
+ else regvalue &= 0x7f;
+ if (val & 1) regvalue |= 0x8000;
+ REG_SET_BIT(SPI_USER_REG(3), SPI_USR_MOSI);
+ REG_WRITE(SPI_MOSI_DLEN_REG(3), 9 - 1);
+ uint32_t *dp = (uint32_t*)SPI_W0_REG(3);
+ *dp = regvalue;
+ REG_SET_BIT(SPI_CMD_REG(3), SPI_USR);
+ while (REG_GET_FIELD(SPI_CMD_REG(3), SPI_USR));
+ }
}
#else
#include "spi_register.h"
void uDisplay::hw_write9(uint8_t val, uint8_t dc) {
- uint32_t regvalue;
- uint8_t bytetemp;
- if (!dc) {
- bytetemp = (val>> 1) & 0x7f;
+ if (spi_dc < -1) {
+ // RA8876 mode
+ if (!dc) {
+ uspi->write(RA8876_CMD_WRITE);
+ uspi->write(val);
+ } else {
+ uspi->write(RA8876_DATA_WRITE);
+ uspi->write(val);
+ }
} else {
- bytetemp = (val >> 1) | 0x80;
+ uint32_t regvalue;
+ uint8_t bytetemp;
+ if (!dc) {
+ bytetemp = (val>> 1) & 0x7f;
+ } else {
+ bytetemp = (val >> 1) | 0x80;
+ }
+ regvalue = ((8 & SPI_USR_COMMAND_BITLEN) << SPI_USR_COMMAND_BITLEN_S) | ((uint32)bytetemp); //configure transmission variable,9bit transmission length and first 8 command bit
+ if (val & 0x01) regvalue |= BIT15; //write the 9th bit
+ while (READ_PERI_REG(SPI_CMD(1)) & SPI_USR); //waiting for spi module available
+ WRITE_PERI_REG(SPI_USER2(1), regvalue); //write command and command length into spi reg
+ SET_PERI_REG_MASK(SPI_CMD(1), SPI_USR); //transmission start
}
-
- regvalue = ((8 & SPI_USR_COMMAND_BITLEN) << SPI_USR_COMMAND_BITLEN_S) | ((uint32)bytetemp); //configure transmission variable,9bit transmission length and first 8 command bit
- if (val & 0x01) regvalue |= BIT15; //write the 9th bit
- while (READ_PERI_REG(SPI_CMD(1)) & SPI_USR); //waiting for spi module available
- WRITE_PERI_REG(SPI_USER2(1), regvalue); //write command and command length into spi reg
- SET_PERI_REG_MASK(SPI_CMD(1), SPI_USR); //transmission start
-
}
#endif
@@ -2565,6 +3233,26 @@ void USECACHE uDisplay::write8(uint8_t val) {
}
}
+uint8_t uDisplay::writeReg16(uint8_t reg, uint16_t wval) {
+ hw_write9(reg, 0);
+ hw_write9(wval, 1);
+ hw_write9(reg + 1, 0);
+ hw_write9(wval >> 8, 1);
+ return 0;
+}
+
+uint8_t uDisplay::readData(void) {
+ uspi->write(RA8876_DATA_READ);
+ uint8_t val = uspi->transfer(0);
+ return val;
+}
+
+uint8_t uDisplay::readStatus(void) {
+ uspi->write(RA8876_STATUS_READ);
+ uint8_t val = uspi->transfer(0);
+ return val;
+}
+
void uDisplay::write8_slow(uint8_t val) {
for (uint8_t bit = 0x80; bit; bit >>= 1) {
GPIO_CLR_SLOW(spi_clk);
diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h
index 238802dca..bf031f5fa 100755
--- a/lib/lib_display/UDisplay/uDisplay.h
+++ b/lib/lib_display/UDisplay/uDisplay.h
@@ -17,6 +17,25 @@
#endif // ESP_IDF_VERSION_MAJOR >= 5
#endif
+enum {
+ UT_RD,UT_RDM,UT_CP,UT_RTF,UT_MV,UT_MVB,UT_RT,UT_RTT,UT_RDW,UT_RDWM,UT_WR,UT_WRW,UT_CPR,UT_AND,UT_SCALE,UT_LIM,UT_DBG,UT_GSRT,UT_XPT,UT_END
+};
+
+#define RA8876_DATA_WRITE 0x80
+#define RA8876_DATA_READ 0xC0
+#define RA8876_CMD_WRITE 0x00
+#define RA8876_STATUS_READ 0x40
+
+#define UDSP_WRITE_16 0xf0
+#define UDSP_READ_DATA 0xf1
+#define UDSP_READ_STATUS 0xf2
+
+
+#define SIMPLERS_XP par_dbl[1]
+#define SIMPLERS_XM par_cs
+#define SIMPLERS_YP par_rs
+#define SIMPLERS_YM par_dbl[0]
+
#ifdef USE_ESP32_S3
#include
#include "esp_private/gdma.h"
@@ -102,6 +121,8 @@ enum uColorType { uCOLOR_BW, uCOLOR_COLOR };
#endif
+
+
#define GPIO_CLR_SLOW(A) digitalWrite(A, LOW)
#define GPIO_SET_SLOW(A) digitalWrite(A, HIGH)
@@ -190,6 +211,13 @@ class uDisplay : public Renderer {
void invertDisplay(boolean i);
void SetPwrCB(pwr_cb cb) { pwr_cbp = cb; };
void SetDimCB(dim_cb cb) { dim_cbp = cb; };
+#ifdef USE_UNIVERSAL_TOUCH
+// universal touch driver
+ bool utouch_Init(char **name);
+ uint16_t touched(void);
+ int16_t getPoint_x();
+ int16_t getPoint_y();
+#endif // USE_UNIVERSAL_TOUCH
private:
void beginTransaction(SPISettings s);
@@ -213,6 +241,9 @@ class uDisplay : public Renderer {
void write16(uint16_t val);
void write32(uint32_t val);
void spi_data9(uint8_t d, uint8_t dc);
+ uint8_t readData(void);
+ uint8_t readStatus(void);
+ uint8_t writeReg16(uint8_t reg, uint16_t wval);
void WriteColor(uint16_t color);
void SetLut(const unsigned char* lut);
void SetLuts(void);
@@ -245,6 +276,7 @@ class uDisplay : public Renderer {
uint8_t interface;
uint8_t i2caddr;
int8_t i2c_scl;
+ int8_t spec_init;
TwoWire *wire;
int8_t wire_n;
int8_t i2c_sda;
@@ -411,6 +443,33 @@ class uDisplay : public Renderer {
void pushPixelsDMA(uint16_t* image, uint32_t len);
void pushPixels3DMA(uint8_t* image, uint32_t len);
#endif // ESP32
+
+#ifdef USE_UNIVERSAL_TOUCH
+// universal touch driver
+ void ut_trans(char **sp, uint8_t **ut_code);
+ int16_t ut_execute(uint8_t *ut_code);
+ uint32_t ut_par(char **cp, uint32_t mode);
+ uint8_t *ut_rd(uint8_t *io, uint32_t len, uint32_t amode);
+ uint8_t *ut_wr(uint8_t *io, uint32_t amode);
+ uint16_t ut_XPT2046(uint16_t zh);
+ int16_t besttwoavg( int16_t x , int16_t y , int16_t z );
+
+ uint8_t ut_array[16];
+ uint8_t ut_i2caddr;
+ uint8_t ut_spi_cs;
+ int8_t ut_reset;
+ int8_t ut_irq;
+ uint8_t ut_spi_nr;
+ TwoWire *ut_wire;
+ SPIClass *ut_spi;
+ SPISettings ut_spiSettings;
+ char ut_name[8];
+ uint8_t *ut_init_code;
+ uint8_t *ut_touch_code;
+ uint8_t *ut_getx_code;
+ uint8_t *ut_gety_code;
+
+#endif // USE_UNIVERSAL_TOUCH
};
diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp
index dbeb77601..d050d83ac 100644
--- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp
+++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp
@@ -38,6 +38,9 @@ fast picture write
// Serial.printf(">%d,\n", stage);
//
+enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
+extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
+
const uint16_t RA8876_colors[]={RA8876_BLACK,RA8876_WHITE,RA8876_RED,RA8876_GREEN,RA8876_BLUE,RA8876_CYAN,RA8876_MAGENTA,\
RA8876_YELLOW,RA8876_NAVY,RA8876_DARKGREEN,RA8876_DARKCYAN,RA8876_MAROON,RA8876_PURPLE,RA8876_OLIVE,\
RA8876_LIGHTGREY,RA8876_DARKGREY,RA8876_ORANGE,RA8876_GREENYELLOW,RA8876_PINK};
@@ -193,6 +196,10 @@ void RA8876::DisplayOnff(int8_t on) {
}
}
+void RA8876::dim10(uint8_t contrast, uint16_t contrast_gamma) {
+ dim(contrast / 16);
+}
+
// 0-15
void RA8876::dim(uint8_t contrast) {
SPI.beginTransaction(m_spiSettings);
@@ -1294,6 +1301,102 @@ void RA8876::setDrawMode(uint8_t mode) {
setDrawMode_reg(mode);
}
+//#define RA_FT5206_VENDID 0x11
+#define RA_FT5206_VENDID 0x79
+#define RA_FT5206U_CHIPID 0x64
+#define RA_FT5316_CHIPID 0x0a
+#define RA_FT5206_VENDID_REG (0xA8)
+#define RA_FT5206_CHIPID_REG (0xA3)
+#define RA_FT5206_TOUCHES_REG (0x02)
+#define RA_FT5206_MODE_REG (0x00)
+#define RA_FT5206_address 0x38
+
+int RA8876::_readByte(uint8_t reg, uint8_t nbytes, uint8_t *data) {
+ _i2cPort->beginTransmission(RA_FT5206_address);
+ _i2cPort->write(reg);
+ _i2cPort->endTransmission();
+ _i2cPort->requestFrom(RA_FT5206_address, (size_t)nbytes);
+ uint8_t index = 0;
+ while (_i2cPort->available()) {
+ data[index++] = _i2cPort->read();
+ }
+ return 0;
+}
+
+int RA8876::_writeByte(uint8_t reg, uint8_t nbytes, uint8_t *data) {
+ _i2cPort->beginTransmission(RA_FT5206_address);
+ _i2cPort->write(reg);
+ for (uint8_t i = 0; i < nbytes; i++) {
+ _i2cPort->write(data[i]);
+ }
+ _i2cPort->endTransmission();
+ return 0;
+}
+
+bool RA8876::utouch_Init(char **name) {
+ strcpy(ut_name, "FT5316");
+ *name = ut_name;
+
+ _i2cPort = &Wire;
+
+ uint8_t val;
+ _readByte(RA_FT5206_VENDID_REG, 1, &val);
+ //AddLog(LOG_LEVEL_INFO, PSTR("UTDBG %02x"), val);
+
+ if (val != RA_FT5206_VENDID) {
+ return false;
+ }
+
+ _readByte(RA_FT5206_CHIPID_REG, 1, &val);
+ //AddLog(LOG_LEVEL_INFO, PSTR("UTDBG %02x"), val);
+
+ if (val != RA_FT5316_CHIPID) {
+ return false;
+ }
+
+ return true;
+}
+
+uint16_t RA8876::touched(void) {
+ uint8_t data[16];
+
+ uint8_t val = 0;
+ _readByte(RA_FT5206_MODE_REG, 1, &val);
+ if (val) {
+ val = 0;
+ _writeByte(RA_FT5206_MODE_REG, 1, &val);
+ }
+
+ _readByte(RA_FT5206_MODE_REG, 16, data);
+
+ if (data[2]) {
+ ut_x = data[3] << 8;
+ ut_x |= data[4];
+ ut_y = data[5] << 8;
+ ut_y |= data[6];
+ ut_x &= 0xfff;
+ ut_y &= 0xfff;
+ }
+ return data[2];
+}
+
+int16_t RA8876::getPoint_x() {
+ return ut_x;
+}
+
+int16_t RA8876::getPoint_y() {
+ return ut_y;
+}
+
+void RA8876::TS_RotConvert(int16_t *x, int16_t *y) {
+int16_t temp;
+ *x = *x * width() / 800;
+ *y = *y * height() / 480;
+
+ *x = width() - *x;
+ *y = height() - *y;
+}
+
void RA8876::setDrawMode_reg(uint8_t mode) {
SPI.beginTransaction(m_spiSettings);
uint8_t ccr1 = readReg(RA8876_REG_CCR1);
diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h
index 7cf2f031b..eb986a631 100644
--- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h
+++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h
@@ -26,6 +26,10 @@
#include "driver/spi_master.h"
#endif
+#include
+
+#include "tasmota_options.h"
+
#undef SPRINT
#define SPRINT(A) {char str[32];sprintf(str,"val: %d ",A);Serial.println((char*)str);}
@@ -147,10 +151,14 @@ enum ExternalFontFamily
typedef uint8_t FontFlags;
#define RA8876_FONT_FLAG_XLAT_FULLWIDTH 0x01 // Translate ASCII to Unicode fullwidth forms
+
+#ifndef RA8876_SPI_SPEED
// 1MHz. TODO: Figure out actual speed to use
// Data sheet section 5.2 says maximum SPI clock is 50MHz.
//#define RA8876_SPI_SPEED 10000000
-#define RA8876_SPI_SPEED 25000000
+//#define RA8876_SPI_SPEED 25000000
+#define RA8876_SPI_SPEED 40000000
+#endif
// With SPI, the RA8876 expects an initial byte where the top two bits are meaningful. Bit 7
// is A0, bit 6 is WR#. See data sheet section 7.3.2 and section 19.
@@ -461,7 +469,6 @@ class RA8876 : public Renderer {
void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
-
void drawCircle(int16_t x, int16_t y, int16_t radius, uint16_t color);
void fillCircle(int16_t x, int16_t y, int16_t radius, uint16_t color);
void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
@@ -501,8 +508,14 @@ class RA8876 : public Renderer {
void setDrawMode(uint8_t mode);
void setDrawMode_reg(uint8_t mode);
void dim(uint8_t contrast);
+ void dim10(uint8_t contrast, uint16_t contrast_gamma);
void FastString(uint16_t x,uint16_t y,uint16_t tcolor, const char* str);
+ bool utouch_Init(char **name);
+ uint16_t touched(void);
+ int16_t getPoint_x();
+ int16_t getPoint_y();
+
private:
uint8_t tabcolor;
void PWM_init(void);
@@ -526,6 +539,7 @@ class RA8876 : public Renderer {
bool initPLL(void);
bool initMemory(SdramInfo *info);
bool initDisplay(void);
+ char ut_name[8];
// Font utils
uint8_t internalFontEncoding(enum FontEncoding enc);
@@ -540,6 +554,14 @@ class RA8876 : public Renderer {
void drawEllipseShape(int x, int y, int xrad, int yrad, uint16_t color, uint8_t cmd); // drawCircle, fillCircle
void drawThreePointShape1(int x1, int y1, int x2, int y2, int x3, int y3, uint16_t color, uint8_t reg, uint8_t cmd);
+ void TS_RotConvert(int16_t *x, int16_t *y);
+
+ TwoWire *_i2cPort;
+ int _readByte(uint8_t reg, uint8_t nbytes, uint8_t *data);
+ int _writeByte(uint8_t reg, uint8_t nbytes, uint8_t *data);
+ uint16_t ut_x;
+ uint16_t ut_y;
+
int8_t m_csPin, _mosi, _miso, _sclk, dimmer, _hwspi;
uint16_t m_width;
uint16_t m_height;
diff --git a/lib/lib_div/ESPFtpServer/ESPFtpServer.cpp b/lib/lib_div/ESPFtpServer/ESPFtpServer.cpp
new file mode 100755
index 000000000..c70d17dcf
--- /dev/null
+++ b/lib/lib_div/ESPFtpServer/ESPFtpServer.cpp
@@ -0,0 +1,1132 @@
+/*
+ * FTP SERVER FOR ESP32/ESP8266
+ * based on FTP Server for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
+ * based on Jean-Michel Gallego's work
+ * modified to work with esp8266 SPIFFS by David Paiva david@nailbuster.com
+ * 2017: modified by @robo8080 (ported to ESP32 and SD)
+ * 2019: modified by @fa1ke5 (use SD card in SD_MMC mode (No SD lib, SD_MMC lib), and added fully fuctional passive mode ftp server)
+ * 2020: modified by @jmwislez (support generic FS, and re-introduced ESP8266)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+#include "ESPFtpServer.h"
+#include
+
+#ifdef ESP32
+#define F(A) A
+#endif
+
+void FtpServer::begin (String uname, String pword, FS *ufp) {
+
+ if (is_up) return;
+
+ cfsp = ufp;
+
+ // Tells the ftp server to begin listening for incoming connection
+ _FTP_USER = uname;
+ _FTP_PASS = pword;
+
+ ftpServer = new WiFiServer(FTP_CTRL_PORT);
+ if (!ftpServer) return;
+ dataServer = new WiFiServer(FTP_DATA_PORT_PASV);
+ if (!dataServer) return;
+
+ ftpServer->begin ();
+ delay (10);
+ dataServer->begin ();
+ delay (10);
+ millisTimeOut = (uint32_t)FTP_TIME_OUT * 60 * 1000;
+ millisDelay = 0;
+ cmdStatus = 0;
+ iniVariables ();
+ is_up = true;
+}
+
+FtpServer::~FtpServer(void) {
+ ftpServer->close();
+ ftpServer->stop();
+ delete ftpServer;
+ dataServer->close();
+ dataServer->stop();
+ delete dataServer;
+}
+
+
+void FtpServer::iniVariables () {
+ // Default for data port
+ dataPort = FTP_DATA_PORT_PASV;
+
+ // Default Data connection is Active
+ dataPassiveConn = false;
+
+ // Set the root directory
+ strcpy (cwdName, "/");
+
+ rnfrCmd = false;
+ transferStatus = 0;
+}
+
+void FtpServer::handleFTP () {
+
+ if (!is_up) return;
+
+ if ((int32_t) (millisDelay - millis ()) > 0) {
+ return;
+ }
+
+ if (ftpServer->hasClient ()) {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> disconnecting client"));
+ #endif
+ client.stop ();
+ client = ftpServer->available ();
+ }
+
+ if (cmdStatus == 0) {
+ if (client.connected ()) {
+ disconnectClient ();
+ }
+ cmdStatus = 1;
+ }
+ else if (cmdStatus == 1) { // Ftp server waiting for connection
+ abortTransfer ();
+ iniVariables ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> ftp server waiting for connection on port ") + String (FTP_CTRL_PORT));
+ #endif
+ cmdStatus = 2;
+ }
+ else if (cmdStatus == 2) { // Ftp server idle
+ if (client.connected ()) { // A client connected
+ clientConnected ();
+ millisEndConnection = millis () + 10 * 1000; // wait client id during 10 s.
+ cmdStatus = 3;
+ }
+ }
+ else if (readChar () > 0) { // got response
+ if (cmdStatus == 3) { // Ftp server waiting for user identity
+ if (userIdentity ()) {
+ cmdStatus = 4;
+ }
+ else {
+ cmdStatus = 0;
+ }
+ }
+ else if (cmdStatus == 4) { // Ftp server waiting for user registration
+ if (userPassword ()) {
+ cmdStatus = 5;
+ millisEndConnection = millis () + millisTimeOut;
+ }
+ else {
+ cmdStatus = 0;
+ }
+ }
+ else if (cmdStatus == 5) { // Ftp server waiting for user command
+ if (!processCommand ()) {
+ cmdStatus = 0;
+ }
+ else {
+ millisEndConnection = millis () + millisTimeOut;
+ }
+ }
+ }
+ else if (!client.connected () || !client) {
+ cmdStatus = 1;
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected"));
+ #endif
+ }
+
+ if (transferStatus == 1) { // Retrieve data
+ if (!doRetrieve ()) {
+ transferStatus = 0;
+ }
+ }
+ else if (transferStatus == 2) { // Store data
+ if (!doStore ()) {
+ transferStatus = 0;
+ }
+ }
+ else if (cmdStatus > 2 && ! ((int32_t) (millisEndConnection - millis ()) > 0 )) {
+ client.println (F("530 Timeout"));
+ millisDelay = millis () + 200; // delay of 200 ms
+ cmdStatus = 0;
+ }
+}
+
+void FtpServer::clientConnected () {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client connected"));
+ #endif
+ client.println (F("220-Welcome to FTP for ESP8266/ESP32"));
+ client.println (F("220-By David Paiva"));
+ client.println (F("220-Version ") + String (FTP_SERVER_VERSION));
+ client.println (F("220 Put your ftp client in passive mode, and do not attempt more than one connection"));
+ iCL = 0;
+}
+
+void FtpServer::disconnectClient () {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> disconnecting client"));
+ #endif
+ abortTransfer ();
+ client.println (F("221 Goodbye"));
+ client.stop ();
+}
+
+boolean FtpServer::userIdentity () {
+ if (strcmp (command, "USER")) {
+ client.println (F("500 Syntax error"));
+ }
+ if (strcmp (parameters, _FTP_USER.c_str ())) {
+ client.println (F("530 user not found"));
+ }
+ else {
+ client.println (F("331 OK. Password required"));
+ strcpy (cwdName, "/");
+ return true;
+ }
+ millisDelay = millis () + 100; // delay of 100 ms
+ return false;
+}
+
+boolean FtpServer::userPassword () {
+ if (strcmp (command, "PASS")) {
+ client.println (F("500 Syntax error"));
+ }
+ else if (strcmp (parameters, _FTP_PASS.c_str ())) {
+ client.println (F("530 "));
+ }
+ else {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> user authenticated"));
+ #endif
+ client.println (F("230 OK."));
+ return true;
+ }
+ millisDelay = millis () + 100; // delay of 100 ms
+ return false;
+}
+
+boolean FtpServer::processCommand () {
+ struct tm * ptm;
+ time_t ftime;
+ char buffer[80];
+
+ ///////////////////////////////////////
+ // //
+ // ACCESS CONTROL COMMANDS //
+ // //
+ ///////////////////////////////////////
+
+ //
+ // CDUP - Change to Parent Directory
+ //
+ if (!strcmp (command, "CDUP") || (!strcmp (command, "CWD") && !strcmp (parameters, ".."))) {
+ bool ok = false;
+ if (strlen (cwdName) > 1) { // do nothing if cwdName is root
+ // if cwdName ends with '/', remove it (must not append)
+ if (cwdName[strlen (cwdName) - 1] == '/') {
+ cwdName[ strlen (cwdName ) - 1 ] = 0;
+ }
+ // search last '/'
+ char * pSep = strrchr (cwdName, '/');
+ ok = pSep > cwdName;
+ // if found, ends the string on its position
+ if (ok) {
+ * pSep = 0;
+ ok = cfsp->exists (cwdName);
+ }
+ }
+ // if an error appends, move to root
+ if (!ok) {
+ strcpy (cwdName, "/");
+ }
+ client.println (F("250 Ok. Current directory is ") + String (cwdName));
+ }
+
+ //
+ // CWD - Change Working Directory
+ //
+ else if (!strcmp (command, "CWD")) {
+ char path[FTP_CWD_SIZE];
+ if (haveParameter () && makeExistsPath (path)) {
+ strcpy (cwdName, path);
+ client.println (F("250 Ok. Current directory is ") + String (cwdName));
+ }
+ }
+
+ //
+ // PWD - Print Directory
+ //
+ else if (!strcmp (command, "PWD")) {
+ client.println (F("257 \"") + String (cwdName) + F("\" is your current directory"));
+ }
+
+ //
+ // QUIT
+ //
+ else if (!strcmp (command, "QUIT")) {
+ disconnectClient ();
+ return false;
+ }
+
+ ///////////////////////////////////////
+ // //
+ // TRANSFER PARAMETER COMMANDS //
+ // //
+ ///////////////////////////////////////
+
+ //
+ // MODE - Transfer Mode
+ //
+ else if (!strcmp (command, "MODE")) {
+ if (!strcmp (parameters, "S")) {
+ client.println (F("200 S Ok"));
+ }
+ else {
+ client.println (F("504 Only S (tream) is supported"));
+ }
+ }
+
+ //
+ // PASV - Passive Connection management
+ //
+ else if (!strcmp (command, "PASV")) {
+ if (data.connected ()) {
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+ }
+ dataIp = WiFi.localIP ();
+ dataPort = FTP_DATA_PORT_PASV;
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> connection management set to passive"));
+ Serial.println (F("-> data port set to ") + String (dataPort));
+ #endif
+ client.println (F("227 Entering Passive Mode (") + String (dataIp[0]) + "," + String (dataIp[1]) + "," + String (dataIp[2]) + "," + String (dataIp[3]) + "," + String (dataPort >> 8) + "," + String (dataPort & 255) + ").");
+ dataPassiveConn = true;
+ }
+
+ //
+ // PORT - Data Port
+ //
+ else if (!strcmp (command, "PORT")) {
+ if (data) {
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+ }
+ // get IP of data client
+ dataIp[0] = atoi (parameters);
+ char * p = strchr (parameters, ',');
+ for (uint8_t i = 1; i < 4; i ++) {
+ dataIp[i] = atoi (++ p);
+ p = strchr (p, ',');
+ }
+ // get port of data client
+ dataPort = 256 * atoi (++ p);
+ p = strchr (p, ',');
+ dataPort += atoi (++ p);
+ if (p == NULL) {
+ client.println (F("501 Can't interpret parameters"));
+ }
+ else {
+ client.println (F("200 PORT command successful"));
+ dataPassiveConn = false;
+ }
+ }
+
+ //
+ // STRU - File Structure
+ //
+ else if (!strcmp (command, "STRU")) {
+ if (!strcmp (parameters, "F")) {
+ client.println (F("200 F Ok"));
+ }
+ else {
+ client.println (F("504 Only F (ile) is supported"));
+ }
+ }
+
+ //
+ // TYPE - Data Type
+ //
+ else if (!strcmp (command, "TYPE")) {
+ if (!strcmp (parameters, "A")) {
+ client.println (F("200 TYPE is now ASCII"));
+ }
+ else if (!strcmp (parameters, "I" )) {
+ client.println (F("200 TYPE is now 8-bit binary"));
+ }
+ else {
+ client.println (F("504 Unknown TYPE"));
+ }
+ }
+
+ ///////////////////////////////////////
+ // //
+ // FTP SERVICE COMMANDS //
+ // //
+ ///////////////////////////////////////
+
+ //
+ // ABOR - Abort
+ //
+ else if (!strcmp (command, "ABOR")) {
+ abortTransfer ();
+ client.println (F("226 Data connection closed"));
+ }
+
+ //
+ // DELE - Delete a File
+ //
+ else if (!strcmp (command, "DELE")) {
+ char path[FTP_CWD_SIZE];
+ if (strlen (parameters) == 0) {
+ client.println (F("501 No file name"));
+ }
+ else if (makePath (path)) {
+ if (!cfsp->exists (path)) {
+ client.println (F("550 File ") + String (parameters) + F(" not found"));
+ }
+ else {
+ if (cfsp->remove (path)) {
+ client.println (F("250 Deleted ") + String (parameters));
+ // silently recreate the directory if it vanished with the last file it contained
+ String directory = String (path).substring (0, String(path).lastIndexOf ("/"));
+ if (!cfsp->exists (directory.c_str())) {
+ cfsp->mkdir (directory.c_str());
+ }
+ }
+ else {
+ client.println (F("450 Can't delete ") + String (parameters));
+ }
+ }
+ }
+ }
+
+ //
+ // LIST - List
+ //
+ else if (!strcmp (command, "LIST")) {
+ if (dataConnect ()) {
+ client.println (F("150 Accepted data connection"));
+ uint16_t nm = 0;
+
+ #ifdef ESP8266
+ Dir dir = cfsp->openDir (cwdName);
+ while (dir.next ()) {
+ String fname, fsize;
+ fname = dir.fileName ();
+ time_t ftime = dir.fileTime ();
+ ptm = gmtime (&ftime);
+ int pos = fname.lastIndexOf ("/"); //looking for the beginning of the file by the last "/"
+ fname.remove (0, pos + 1); //Delete everything up to and including the filename
+ fsize = String (dir.fileSize ());
+ if (dir.isDirectory ()){
+ sprintf (buffer, "%04d-%02d-%02d %02d:%02d %s", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, fname.c_str());
+ }
+ else {
+ sprintf (buffer, "%04d-%02d-%02d %02d:%02d %s %s", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, fillSpaces (14, String (fsize)).c_str(), fname.c_str());
+ }
+ data.println (buffer);
+ nm ++;
+ }
+ client.println( "226 " + String (nm) + " matches total");
+ #endif
+ #ifdef ESP32
+ File dir = cfsp->open (cwdName);
+ if ((!dir) || (!dir.isDirectory ())) {
+ client.println (F("550 Can't open directory ") + String (cwdName));
+ }
+ else {
+ File file = dir.openNextFile ();
+ while (file) {
+ String fname, fsize;
+ fname = file.name ();
+ ftime = file.getLastWrite ();
+ ptm = gmtime (&ftime);
+ int pos = fname.lastIndexOf ("/"); //looking for the beginning of the file by the last "/"
+ fname.remove (0, pos + 1); //Delete everything up to and including the filename
+ #ifdef FTP_DEBUG
+ Serial.println ("-> " + fname);
+ #endif
+ fsize = String (file.size ());
+ if (file.isDirectory ()){
+ sprintf (buffer, "%04u-%02u-%02u %02u:%02u %s", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, fname.c_str());
+ }
+ else {
+ sprintf (buffer, "%04u-%02u-%02u %02d:%02u %s %s", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, fillSpaces (14, String (fsize)).c_str(), fname.c_str());
+ }
+ data.println (buffer);
+ nm ++;
+ file = dir.openNextFile ();
+ }
+ client.println ("226 " + String (nm) + F(" matches total"));
+ }
+ #endif
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+ }
+ else {
+ client.println (F("425 No data connection"));
+ data.stop ();
+ }
+ }
+
+ //
+ // MLSD - Listing for Machine Processing (see RFC 3659)
+ //
+ else if (!strcmp (command, "MLSD")) {
+ if (!dataConnect ()) {
+ client.println (F("425 No data connection MLSD"));
+ }
+ else {
+ client.println (F("150 Accepted data connection"));
+ uint16_t nm = 0;
+ #ifdef ESP8266
+ Dir dir = cfsp->openDir (cwdName);
+ char dtStr[15];
+ while (dir.next ()) {
+ String fn, fs;
+ fn = dir.fileName ();
+ int pos = fn.lastIndexOf ("/"); //looking for the beginning of the file by the last "/"
+ fn.remove (0, pos + 1); //Delete everything up to and including the filename
+ fs = String (dir.fileSize ());
+ ftime = dir.fileTime ();
+ ptm = gmtime (&ftime);
+ if (dir.isDirectory ()) {
+ sprintf (buffer, "Type=dir;Modify=%04u%02u%02u%02u%02u%02u; %s", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, fn.c_str());
+ }
+ else {
+ sprintf (buffer, "Type=file;Size=%s;Modify=%04u%02u%02u%02u%02u%02u; %s", fs.c_str(), ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, fn.c_str());
+ }
+ data.println (buffer);
+ nm ++;
+ }
+ client.println (F("226-options: -a -l"));
+ client.println("226 " + String(nm) + F(" matches total"));
+ #endif
+ #ifdef ESP32
+ File dir = cfsp->open (cwdName);
+ char dtStr[15];
+ if (!cfsp->exists (cwdName)) {
+ client.println (F("550 Can't open directory ") + String (parameters));
+ }
+ else {
+ File file = dir.openNextFile ();
+ while (file) {
+ String fn, fs;
+ fn = file.name ();
+ int pos = fn.lastIndexOf ("/"); // looking for the beginning of the file by the last "/"
+ fn.remove (0, pos + 1); // delete everything up to and including the filename
+ fs = String (file.size ());
+ ftime = file.getLastWrite ();
+ ptm = gmtime (&ftime);
+ if (file.isDirectory ()) {
+ sprintf (buffer, "Type=dir;Modify=%04u%02u%02u%02u%02u%02u; %s", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, fn.c_str());
+ }
+ else {
+ sprintf (buffer, "Type=file;Size=%s;Modify=%04u%02u%02u%02u%02u%02u; %s", fs.c_str(), ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, fn.c_str());
+ }
+ data.println (buffer);
+ nm ++;
+ file = dir.openNextFile ();
+ }
+ client.println (F("226-options: -a -l"));
+ client.println ("226 " + String (nm) + F(" matches total"));
+ }
+ #endif
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+ }
+ }
+
+ //
+ // NLST - Name List
+ //
+ else if (!strcmp (command, "NLST" )) {
+ if (!dataConnect ()) {
+ client.println (F("425 No data connection"));
+ }
+ else {
+ client.println (F("150 Accepted data connection"));
+ uint16_t nm = 0;
+ #ifdef ESP8266
+ Dir dir = cfsp->openDir (cwdName);
+ if (!cfsp->exists (cwdName)) {
+ client.println (F("550 Can't open directory ") + String (parameters));
+ }
+ else {
+ while (dir.next ()) {
+ data.println (dir.fileName ());
+ nm ++;
+ }
+ client.println ("226 " + String(nm) + F(" matches total"));
+ }
+ #endif
+ #ifdef ESP32
+ File dir = cfsp->open (cwdName);
+ if (!cfsp->exists (cwdName)) {
+ client.println (F("550 Can't open directory ") + String (parameters));
+ }
+ else {
+ File file = dir.openNextFile ();
+ while (file) {
+ data.println (file.name ());
+ nm ++;
+ file = dir.openNextFile ();
+ }
+ client.println ("226 " + String (nm) + F(" matches total"));
+ }
+ #endif
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+ }
+ }
+
+ //
+ // NOOP
+ //
+ else if (!strcmp (command, "NOOP")) {
+ client.println (F("200 Zzz..."));
+ }
+
+ //
+ // RETR - Retrieve
+ //
+ else if (!strcmp (command, "RETR")) {
+ char path[FTP_CWD_SIZE];
+ if (strlen (parameters) == 0) {
+ client.println (F("501 No file name"));
+ }
+ else if (makePath (path)) {
+ file = cfsp->open (path, "r");
+ if (!file) {
+ client.println (F("550 File ") + String (parameters) + F(" not found"));
+ }
+ else if (!file) {
+ client.println (F("450 Can't open ") + String (parameters));
+ }
+ else if (!dataConnect ()) {
+ client.println (F("425 No data connection"));
+ }
+ else {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> sending ") + String (parameters));
+ #endif
+ client.println (F("150-Connected to port ") + String (dataPort));
+ client.println (F("150 ") + String (file.size ()) + F(" bytes to download"));
+ millisBeginTrans = millis ();
+ bytesTransferred = 0;
+ transferStatus = 1;
+ }
+ }
+ }
+
+ //
+ // STOR - Store
+ //
+ else if (!strcmp (command, "STOR")) {
+ char path[FTP_CWD_SIZE];
+ if (strlen (parameters) == 0) {
+ client.println (F("501 No file name"));
+ }
+ else if (makePath (path)) {
+ file = cfsp->open (path, "w");
+ if (!file) {
+ client.println (F("451 Can't open/create ") + String (parameters));
+ }
+ else if (!dataConnect ()) {
+ client.println (F("425 No data connection"));
+ file.close ();
+ }
+ else {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> receiving ") + String (parameters));
+ #endif
+ client.println (F("150 Connected to port ") + String (dataPort));
+ millisBeginTrans = millis ();
+ bytesTransferred = 0;
+ transferStatus = 2;
+ }
+ }
+ }
+
+ //
+ // MKD - Make Directory
+ //
+
+ else if (!strcmp (command, "MKD")) {
+ char path[FTP_CWD_SIZE];
+ if (haveParameter () && makePath (path)) {
+ if (cfsp->exists (path)) {
+ client.println (F("521 Can't create \"") + String (parameters) + F("\", Directory exists"));
+ }
+ else {
+ if (cfsp->mkdir (path)) {
+ client.println (F("257 \"") + String (parameters) + F("\" created"));
+ }
+ else {
+ client.println (F("550 Can't create \"") + String (parameters) + "\"");
+ }
+ }
+ }
+ }
+
+ //
+ // RMD - Remove a Directory
+ //
+ else if (!strcmp (command, "RMD")) {
+ char path[FTP_CWD_SIZE];
+ if (haveParameter () && makePath (path)) {
+ if (cfsp->rmdir (path)) {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> deleting ") + String (parameters));
+ #endif
+ client.println ("250 \"" + String (parameters) + F("\" deleted"));
+ }
+ else {
+ if (cfsp->exists (path)) { // hack
+ client.println (F("550 Can't remove \"") + String (parameters) + F("\". Directory not empty?"));
+ }
+ else {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> deleting ") + String (parameters));
+ #endif
+ client.println ("250 \"" + String (parameters) + F("\" deleted"));
+ }
+ }
+ }
+ }
+
+ //
+ // RNFR - Rename From
+ //
+ else if (!strcmp (command, "RNFR")) {
+ buf[0] = 0;
+ if (strlen (parameters) == 0) {
+ client.println (F("501 No file name"));
+ }
+ else if (makePath (buf)) {
+ if (!cfsp->exists (buf)) {
+ client.println (F("550 File ") + String (parameters) + F(" not found"));
+ }
+ else {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> renaming ") + String (buf));
+ #endif
+ client.println (F("350 RNFR accepted - file exists, ready for destination"));
+ rnfrCmd = true;
+ }
+ }
+ }
+
+ //
+ // RNTO - Rename To
+ //
+ else if (!strcmp (command, "RNTO")) {
+ char path[FTP_CWD_SIZE];
+ char dir[FTP_FIL_SIZE];
+ if (strlen (buf ) == 0 || ! rnfrCmd) {
+ client.println (F("503 Need RNFR before RNTO"));
+ }
+ else if (strlen (parameters ) == 0) {
+ client.println (F("501 No file name"));
+ }
+ else if (makePath (path)) {
+ if (cfsp->exists (path)) {
+ client.println (F("553 ") + String (parameters) + F(" already exists"));
+ }
+ else {
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> renaming ") + String (buf) + " to " + String (path));
+ #endif
+ if (cfsp->rename (buf, path)) {
+ client.println (F("250 File successfully renamed or moved"));
+ }
+ else {
+ client.println (F("451 Rename/move failure"));
+ }
+ }
+ }
+ rnfrCmd = false;
+ }
+
+ ///////////////////////////////////////
+ // //
+ // EXTENSIONS COMMANDS (RFC 3659) //
+ // //
+ ///////////////////////////////////////
+
+ //
+ // FEAT - New Features
+ //
+ else if (!strcmp (command, "FEAT")) {
+ client.println (F("211-Extensions supported:"));
+ client.println (F(" MLSD"));
+ client.println (F("211 End."));
+ }
+
+ //
+ // MDTM - File Modification Time (see RFC 3659)
+ //
+ else if (!strcmp (command, "MDTM")) {
+ client.println (F("550 Unable to retrieve time"));
+ }
+
+ //
+ // SIZE - Size of the file
+ //
+ else if (!strcmp (command, "SIZE")) {
+ char path[FTP_CWD_SIZE];
+ if (strlen (parameters) == 0) {
+ client.println (F("501 No file name"));
+ }
+ else if (makePath (path)) {
+ file = cfsp->open (path, "r");
+ if (!file) {
+ client.println (F("450 Can't open ") + String (parameters));
+ }
+ else {
+ client.println (F("213 ") + String (file.size ()));
+ file.close ();
+ }
+ }
+ }
+
+ //
+ // SITE - System command
+ //
+ else if (!strcmp (command, "SITE")) {
+ client.println (F("500 Unknown SITE command ") + String (parameters));
+ }
+
+ //
+ // Unrecognized commands ...
+ //
+ else {
+ client.println (F("500 Unknown command"));
+ }
+ return true;
+}
+
+boolean FtpServer::dataConnect () {
+ unsigned long startTime = millis ();
+ //wait 5 seconds for a data connection
+ if (!data.connected ()) {
+ while (!dataServer->hasClient () && millis () - startTime < 10000) {
+ yield ();
+ }
+ if (dataServer->hasClient ()) {
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+ data = dataServer->available ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client connected to dataserver"));
+ #endif
+ }
+ }
+ return data.connected ();
+}
+
+boolean FtpServer::doRetrieve () {
+ if (data.connected ()) {
+ int16_t nb = file.readBytes (buf, FTP_BUF_SIZE);
+ if (nb > 0) {
+ data.write ((uint8_t*)buf, nb);
+ bytesTransferred += nb;
+ return true;
+ }
+ }
+ closeTransfer ();
+ return false;
+}
+
+boolean FtpServer::doStore () {
+ // Avoid blocking by never reading more bytes than are available
+ int navail = data.available();
+ if (navail > 0) {
+ // And be sure not to overflow the buffer
+ if (navail > FTP_BUF_SIZE) {
+ navail = FTP_BUF_SIZE;
+ }
+ int16_t nb = data.read((uint8_t *)buf, navail);
+ if (nb > 0) {
+ file.write((uint8_t *)buf, nb);
+ bytesTransferred += nb;
+ }
+ }
+ if (!data.connected() && (navail <= 0)) {
+ closeTransfer();
+ return false;
+ }
+ else {
+ return true;
+ }
+}
+
+void FtpServer::closeTransfer () {
+ uint32_t deltaT = (int32_t) (millis () - millisBeginTrans);
+ if (deltaT > 0 && bytesTransferred > 0) {
+ client.println (F("226-File successfully transferred"));
+ client.println ("226 " + String (deltaT) + " ms, " + String (bytesTransferred / deltaT) + " kbytes/s");
+ }
+ else {
+ client.println (F("226 File successfully transferred"));
+ }
+ file.close ();
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> file successfully transferred"));
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+}
+
+void FtpServer::abortTransfer () {
+ if (transferStatus > 0) {
+ file.close ();
+ data.stop ();
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> client disconnected from dataserver"));
+ #endif
+ client.println (F("426 Transfer aborted"));
+ #ifdef FTP_DEBUG
+ Serial.println (F("-> transfer aborted"));
+ #endif
+ }
+ transferStatus = 0;
+}
+
+// Read a char from client connected to ftp server
+//
+// update cmdLine and command buffers, iCL and parameters pointers
+//
+// return:
+// -2 if buffer cmdLine is full
+// -1 if line not completed
+// 0 if empty line received
+// length of cmdLine (positive) if no empty line received
+
+int8_t FtpServer::readChar () {
+ int8_t rc = -1;
+
+ if (client.available ()) {
+ char c = client.read ();
+ #ifdef FTP_DEBUG
+ Serial.print (c);
+ #endif
+ if (c == '\\') {
+ c = '/';
+ }
+ if (c != '\r' ) {
+ if (c != '\n' ) {
+ if (iCL < FTP_CMD_SIZE) {
+ cmdLine[iCL ++] = c;
+ }
+ else {
+ rc = -2; // Line too long
+ }
+ }
+ else {
+ cmdLine[iCL] = 0;
+ command[0] = 0;
+ parameters = NULL;
+ // empty line?
+ if (iCL == 0) {
+ rc = 0;
+ }
+ else {
+ rc = iCL;
+ // search for space between command and parameters
+ parameters = strchr (cmdLine, ' ');
+ if (parameters != NULL) {
+ if (parameters - cmdLine > 4) {
+ rc = -2; // Syntax error
+ }
+ else {
+ strncpy (command, cmdLine, parameters - cmdLine);
+ command[parameters - cmdLine] = 0;
+
+ while (* (++ parameters) == ' ') {
+ ;
+ }
+ }
+ }
+ else if (strlen (cmdLine) > 4) {
+ rc = -2; // Syntax error.
+ }
+ else {
+ strcpy (command, cmdLine);
+ }
+ iCL = 0;
+ }
+ }
+ }
+ if (rc > 0) {
+ for (uint8_t i = 0; i < strlen (command); i ++) {
+ command[i] = toupper (command[i]);
+ }
+ }
+ if (rc == -2) {
+ iCL = 0;
+ client.println (F("500 Syntax error"));
+ }
+ }
+ return rc;
+}
+
+// Make complete path/name from cwdName and parameters
+//
+// 3 possible cases: parameters can be absolute path, relative path or only the name
+//
+// parameters:
+// fullName : where to store the path/name
+//
+// return:
+// true, if done
+
+boolean FtpServer::makePath (char * fullName) {
+ return makePath (fullName, parameters);
+}
+
+boolean FtpServer::makePath (char * fullName, char * param) {
+ if (param == NULL) {
+ param = parameters;
+ }
+ // Root or empty?
+ if (strcmp (param, "/") == 0 || strlen (param) == 0) {
+ strcpy (fullName, "/");
+ return true;
+ }
+ // If relative path, concatenate with current dir
+ if (param[0] != '/' ) {
+ strcpy (fullName, cwdName);
+ if (fullName[strlen (fullName) - 1] != '/') {
+ strncat (fullName, "/", FTP_CWD_SIZE);
+ }
+ strncat (fullName, param, FTP_CWD_SIZE);
+ }
+ else {
+ strcpy (fullName, param);
+ }
+ // If ends with '/', remove it
+ uint16_t strl = strlen (fullName) - 1;
+ if (fullName[strl] == '/' && strl > 1) {
+ fullName[strl] = 0;
+ }
+ if (strlen (fullName) < FTP_CWD_SIZE) {
+ return true;
+ }
+ client.println (F("500 Command line too long"));
+ return false;
+}
+
+// Calculate year, month, day, hour, minute and second
+// from first parameter sent by MDTM command (YYYYMMDDHHMMSS)
+//
+// parameters:
+// pyear, pmonth, pday, phour, pminute and psecond: pointer of
+// variables where to store data
+//
+// return:
+// 0 if parameter is not YYYYMMDDHHMMSS
+// length of parameter + space
+
+uint8_t FtpServer::getDateTime (uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
+ uint8_t * phour, uint8_t * pminute, uint8_t * psecond) {
+ char dt[15];
+
+ // Date/time are expressed as a 14 digits long string
+ // terminated by a space and followed by name of file
+ if (strlen (parameters ) < 15 || parameters[14] != ' ') {
+ return 0;
+ }
+ for (uint8_t i = 0; i < 14; i ++) {
+ if (!isdigit (parameters[i])) {
+ return 0;
+ }
+ }
+ strncpy (dt, parameters, 14);
+ dt[14] = 0;
+ * psecond = atoi (dt + 12);
+ dt[12] = 0;
+ * pminute = atoi (dt + 10);
+ dt[10] = 0;
+ * phour = atoi (dt + 8);
+ dt[8] = 0;
+ * pday = atoi (dt + 6);
+ dt[6] = 0;
+ * pmonth = atoi (dt + 4);
+ dt[4] = 0;
+ * pyear = atoi (dt);
+ return 15;
+}
+
+// Create string YYYYMMDDHHMMSS from date and time
+//
+// parameters:
+// date, time
+// tstr: where to store the string. Must be at least 15 characters long
+//
+// return:
+// pointer to tstr
+
+char * FtpServer::makeDateTimeStr (char * tstr, uint16_t date, uint16_t time) {
+ sprintf (tstr, "%04u%02u%02u%02u%02u%02u",
+ ((date & 0xFE00) >> 9) + 1980, (date & 0x01E0) >> 5, date & 0x001F,
+ (time & 0xF800) >> 11, (time & 0x07E0) >> 5, (time & 0x001F) << 1);
+ return tstr;
+}
+
+bool FtpServer::haveParameter () {
+ if (parameters != NULL && strlen (parameters) > 0) {
+ return true;
+ }
+ client.println (F("501 No file name"));
+ return false;
+}
+
+bool FtpServer::makeExistsPath (char * path, char * param) {
+ if (!makePath (path, param)) {
+ return false;
+ }
+ if (cfsp->exists (path)) {
+ return true;
+ }
+ client.println (F("550 ") + String (path) + F(" not found."));
+ return false;
+}
+
+String FtpServer::fillSpaces (uint8_t length, String input) {
+ String output;
+ output = "";
+ while (output.length() < length - input.length()) {
+ output += " ";
+ }
+ output += input;
+ return (output);
+}
diff --git a/lib/lib_div/ESPFtpServer/ESPFtpServer.h b/lib/lib_div/ESPFtpServer/ESPFtpServer.h
new file mode 100755
index 000000000..84f380658
--- /dev/null
+++ b/lib/lib_div/ESPFtpServer/ESPFtpServer.h
@@ -0,0 +1,125 @@
+/*
+* FTP SERVER FOR ESP8266/ESP32
+ * based on FTP Server for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
+ * based on Jean-Michel Gallego's work
+ * modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
+ * 2017: modified by @robo8080 (ported to ESP32 and SD)
+ * 2019: modified by @fa1ke5 (use SD card in SD_MMC mode (No SD lib, SD_MMC lib), and added fully fuctional passive mode ftp server)
+ * 2020: modified by @jmwislez (support generic FS, and re-introduced ESP8266)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+/*******************************************************************************
+ ** **
+ ** DEFINITIONS FOR FTP SERVER **
+ ** **
+ *******************************************************************************/
+
+// Uncomment to print debugging info to console
+//#define FTP_DEBUG
+
+#ifndef FTP_SERVERESP_H
+#define FTP_SERVERESP_H
+
+#include
+#include
+#ifdef ESP32
+ #include
+#else
+ #include
+#endif
+
+#define FTP_SERVER_VERSION "jmwislez/ESP32FtpServer 0.1.0"
+
+#define FTP_CTRL_PORT 21 // Command port on wich server is listening
+#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
+
+#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
+
+#ifdef ESP32
+#define FTP_CMD_SIZE 255 + 8 // max size of a command
+#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
+#define FTP_FIL_SIZE 255 // max size of a file name
+#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
+#endif
+
+#ifdef ESP8266
+#define FTP_CMD_SIZE 128 // max size of a command
+#define FTP_CWD_SIZE 128 // max size of a directory name
+#define FTP_FIL_SIZE 64 // max size of a file name
+#define FTP_BUF_SIZE 256 // 700 KByte/s download in AP mode, direct connection.
+#endif
+
+class FtpServer {
+ public:
+ void begin(String uname, String pword, FS *ufp);
+ void handleFTP (void);
+ ~FtpServer(void);
+ bool is_up = false;
+
+ private:
+ bool haveParameter ();
+ bool makeExistsPath (char * path, char * param = NULL);
+ void iniVariables ();
+ void clientConnected ();
+ void disconnectClient ();
+ boolean userIdentity ();
+ boolean userPassword ();
+ boolean processCommand ();
+ boolean dataConnect ();
+ boolean doRetrieve ();
+ boolean doStore ();
+ void closeTransfer ();
+ void abortTransfer ();
+ boolean makePath (char * fullname);
+ boolean makePath (char * fullName, char * param);
+ uint8_t getDateTime (uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
+ uint8_t * phour, uint8_t * pminute, uint8_t * second);
+ char * makeDateTimeStr (char * tstr, uint16_t date, uint16_t time);
+ int8_t readChar ();
+ String fillSpaces (uint8_t len, String input_str);
+
+ IPAddress dataIp; // IP address of client for data
+ WiFiClient client;
+ WiFiClient data;
+
+ WiFiServer *ftpServer;
+ WiFiServer *dataServer;
+
+ FS *cfsp;
+
+ File file;
+
+ boolean dataPassiveConn;
+ uint16_t dataPort;
+ char buf[FTP_BUF_SIZE]; // data buffer for transfers
+ char cmdLine[FTP_CMD_SIZE]; // where to store incoming char from client
+ char cwdName[FTP_CWD_SIZE]; // name of current directory
+ char command[5]; // command sent by client
+ boolean rnfrCmd; // previous command was RNFR
+ char * parameters; // point to begin of parameters sent by client
+ uint16_t iCL; // pointer to cmdLine next incoming char
+ int8_t cmdStatus, // status of ftp command connexion
+ transferStatus; // status of ftp data transfer
+ uint32_t millisTimeOut, // disconnect after 5 min of inactivity
+ millisDelay,
+ millisEndConnection, //
+ millisBeginTrans, // store time of beginning of a transaction
+ bytesTransferred; //
+ String _FTP_USER;
+ String _FTP_PASS;
+};
+
+#endif // FTP_SERVERESP_H
diff --git a/lib/lib_div/ESPFtpServer/LICENSE b/lib/lib_div/ESPFtpServer/LICENSE
new file mode 100644
index 000000000..65c5ca88a
--- /dev/null
+++ b/lib/lib_div/ESPFtpServer/LICENSE
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/lib/lib_div/ESPFtpServer/README.md b/lib/lib_div/ESPFtpServer/README.md
new file mode 100644
index 000000000..8976e20d2
--- /dev/null
+++ b/lib/lib_div/ESPFtpServer/README.md
@@ -0,0 +1,14 @@
+# ESPFtpServer
+
+The history of this code is as follows:
+
+* https://github.com/gallegojm/Arduino-Ftp-Server/tree/master/FtpServer: FTP server for Arduino Mega2560 and Due with ethernet module W5100, W5200 or W5500
+* https://github.com/nailbuster/esp8266FTPServer: ported to ESP8266 and SPIFFS file system
+* https://github.com/robo8080/ESP32_FTPServer_SD: ported to ESP32 and SD card file system
+* https://github.com/fa1ke5/ESP32_FTPServer_SD_MMC: use SD card in SD_MMC mode (No SD lib, SD_MMC lib). Added fully fuctional passive mode ftp server, browse dir, change dir, rename dir/file, delete dir/file, upload and download files, dirs.
+
+The current repository is forked from fa1ke5, and has the following changes:
+* use of any file system file system (like SPIFFS/LittleFS/SD_MMC)
+* codebase to work for both ESP8266 and ESP32
+* clean-up of code layout and English
+* addition of library description files
diff --git a/lib/lib_div/ESPFtpServer/examples/ESPFtpServer.ino b/lib/lib_div/ESPFtpServer/examples/ESPFtpServer.ino
new file mode 100644
index 000000000..7fcd1a08c
--- /dev/null
+++ b/lib/lib_div/ESPFtpServer/examples/ESPFtpServer.ino
@@ -0,0 +1,104 @@
+// Uncomment the file system to use for FTP server
+
+#define FS_LITTLEFS
+//#define FS_SPIFFS
+//#define FS_SD_MMC
+
+#ifdef ESP32
+#include
+#endif
+#ifdef ESP8266
+#include
+#endif
+#include
+#include
+#include "ESPFtpServer.h"
+
+#if defined(FS_LITTLEFS)
+#ifdef ESP32
+#include "LITTLEFS.h"
+#define FS_ID LITTLEFS
+#endif
+#ifdef ESP8266
+#include "LittleFS.h"
+#define FS_ID LittleFS
+#endif
+#define FS_NAME "LittleFS"
+#elif defined(FS_SPIFFS)
+#ifdef ESP32
+#include "SPIFFS.h"
+#endif
+#define FS_ID SPIFFS
+#define FS_NAME "SPIFFS"
+#elif defined(FS_SD_MMC)
+#include "SD_MMC.h"
+#define FS_ID SD_MMC
+#define FS_NAME "SD_MMC"
+#else
+#define FS_ID SD
+#define FS_NAME "UNDEF"
+#endif
+
+const char* ssid = "*********************";
+const char* password = "*********************";
+
+const char* ntpServer = "pool.ntp.org";
+const long gmtOffset_sec = 3600;
+const int daylightOffset_sec = 3600;
+struct tm timeinfo;
+
+FtpServer ftpSrv; //set #define FTP_DEBUG in ESP32FtpServer.h to see ftp verbose on serial
+
+#ifdef ESP8266
+bool getLocalTime (struct tm * info) {
+ time_t now;
+
+ time(&now);
+ localtime_r (&now, info);
+
+ if (info->tm_year > (2016 - 1900)) {
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+#endif
+
+void setup (void) {
+ Serial.begin (115200);
+
+ WiFi.begin (ssid, password);
+ Serial.println ("");
+
+ // Wait for connection
+ while (WiFi.status () != WL_CONNECTED) {
+ delay (500);
+ Serial.print (".");
+ }
+ Serial.println ("");
+ Serial.print ("Connected to ");
+ Serial.println (ssid);
+ Serial.print ("IP address: ");
+ Serial.println (WiFi.localIP ());
+
+ configTime (gmtOffset_sec, daylightOffset_sec, ntpServer);
+ while (!getLocalTime (&timeinfo)) {
+ delay (500);
+ Serial.print (".");
+ }
+ Serial.printf ("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n", (timeinfo.tm_year) + 1900, (timeinfo.tm_mon) + 1, timeinfo.tm_mday, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
+
+ //FS_ID.format ();
+ if (FS_ID.begin ()) {
+ Serial.println ("File system opened (" + String (FS_NAME) + ")");
+ ftpSrv.begin ("esp32", "esp32"); //username, password for ftp. set ports in ESPFtpServer.h (default 21, 50009 for PASV)
+ }
+ else {
+ Serial.println ("File system could not be opened; ftp server will not work");
+ }
+}
+
+void loop (void){
+ ftpSrv.handleFTP (FS_ID); //make sure in loop you call handleFTP()!
+}
diff --git a/lib/lib_div/ESPFtpServer/library.json b/lib/lib_div/ESPFtpServer/library.json
new file mode 100644
index 000000000..9c2bc1525
--- /dev/null
+++ b/lib/lib_div/ESPFtpServer/library.json
@@ -0,0 +1,21 @@
+{
+ "name": "ESPFtpServer",
+ "keywords": "ftp, littlefs, spiffs, esp32, esp8266",
+ "description": "ESPFtpServer implements a simple FTP server (passive mode, only one connection at a time) on ESP8266 and ESP32, for any file system (SPIFFS/LittleFS/SD_MMC).",
+ "homepage": "https://github.com/jmwislez/ESPFtpServer/",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jmwislez/ESPFtpServer.git"
+ },
+ "version": "0.1.0",
+ "authors": {
+ "name": "Jean-Marc Wislez",
+ "url": "https://github.com/jmwislez/"
+ },
+ "exclude": [
+ ".github",
+ "extras"
+ ],
+ "frameworks": "arduino",
+ "platforms": ["espressif8266", "espressif32"]
+}
diff --git a/lib/lib_div/ESPFtpServer/library.properties b/lib/lib_div/ESPFtpServer/library.properties
new file mode 100644
index 000000000..e6de7105f
--- /dev/null
+++ b/lib/lib_div/ESPFtpServer/library.properties
@@ -0,0 +1,12 @@
+name=ESPFtpServer
+version=0.1.0
+author=Jean-Marc Wislez
+maintainer=Jean-Marc Wislez
+sentence=A simple FTP server for LittleFS/SPIFFS on ESP8266/ESP32
+paragraph=ESPFtpServer implements a simple FTP server (passive mode, only one connection at a time) on ESP8266 and ESP32, for any file system (SPIFFS/LittleFS/SD_MMC).
+category=Network
+url=https://github.com/jmwislez/ESPFtpServer/
+architectures=esp8266,esp32
+repository=https://github.com/jmwislez/ESPFtpServer.git
+license=GPL
+architectures=*
diff --git a/lib/lib_div/ams/DataParser.h b/lib/lib_div/ams/DataParser.h
index 6aa92faec..0a11e6792 100644
--- a/lib/lib_div/ams/DataParser.h
+++ b/lib/lib_div/ams/DataParser.h
@@ -23,6 +23,7 @@
struct DataParserContext {
uint8_t type;
+ uint8_t flags;
uint16_t length;
time_t timestamp;
uint8_t system_title[8];
diff --git a/lib/lib_div/ams/GcmParser.cpp b/lib/lib_div/ams/GcmParser.cpp
index 12ac94a2b..724d4a094 100644
--- a/lib/lib_div/ams/GcmParser.cpp
+++ b/lib/lib_div/ams/GcmParser.cpp
@@ -36,13 +36,19 @@ int8_t GCMParser::parse(uint8_t *d, DataParserContext &ctx) {
int len = 0;
int headersize = 2 + systemTitleLength;
ptr += systemTitleLength;
- if(((*ptr) & 0xFF) == 0x81) {
+
+ if (ctx.flags & 1) {
+ len = *ptr;
+ ptr++;
+ headersize++;
+ } else {
+ if(((*ptr) & 0xFF) == 0x81) {
ptr++;
len = *ptr;
// 1-byte payload length
ptr++;
headersize += 2;
- } else if(((*ptr) & 0xFF) == 0x82) {
+ } else if(((*ptr) & 0xFF) == 0x82) {
GCMSizeDef* h = (GCMSizeDef*) ptr;
// 2-byte payload length
@@ -50,14 +56,19 @@ int8_t GCMParser::parse(uint8_t *d, DataParserContext &ctx) {
ptr += 3;
headersize += 3;
- } else if(((*ptr) & 0xFF) == 0x4f) {
- // ???????? single frame did only decode with this compare
+ } else if(((*ptr) & 0xFF) == 0x4f) {
+ // ???????? single frame did only decode with this compare
ptr++;
headersize++;
- } else if(((*ptr) & 0xFF) == 0x5e) {
- // ???????? single frame did only decode with this compare
+ } else if(((*ptr) & 0xFF) == 0x5e) {
+ // ???????? single frame did only decode with this compare
ptr++;
headersize++;
+ } else {
+ len = *ptr;
+ ptr++;
+ headersize++;
+ }
}
if(len + headersize > ctx.length)
return DATA_PARSE_INCOMPLETE;
diff --git a/lib/lib_div/ams/han_Parser.cpp b/lib/lib_div/ams/han_Parser.cpp
index 97bd2449c..d15c297b0 100644
--- a/lib/lib_div/ams/han_Parser.cpp
+++ b/lib/lib_div/ams/han_Parser.cpp
@@ -44,7 +44,7 @@ int16_t Han_Parser::serial_readBytes(uint8_t *buf, uint16_t size) {
return size;
}
-bool Han_Parser::readHanPort(uint8_t **out, uint16_t *size) {
+bool Han_Parser::readHanPort(uint8_t **out, uint16_t *size, uint8_t flags) {
if (!serial_available()) return false;
@@ -56,6 +56,7 @@ bool Han_Parser::readHanPort(uint8_t **out, uint16_t *size) {
}
DataParserContext ctx = {0};
+ ctx.flags = flags;
int pos = DATA_PARSE_INCOMPLETE;
// For each byte received, check if we have a complete frame we can handle
while (serial_available() && pos == DATA_PARSE_INCOMPLETE) {
diff --git a/lib/lib_div/ams/han_Parser.h b/lib/lib_div/ams/han_Parser.h
index 1847865dd..2011de4cf 100644
--- a/lib/lib_div/ams/han_Parser.h
+++ b/lib/lib_div/ams/han_Parser.h
@@ -18,7 +18,7 @@ class Han_Parser
public:
Han_Parser(uint16_t (*)(uint8_t, uint8_t), uint8_t, uint8_t *, uint8_t *);
~Han_Parser(void);
- bool readHanPort(uint8_t **out, uint16_t *size);
+ bool readHanPort(uint8_t **out, uint16_t *size, uint8_t flags);
int16_t unwrapData(uint8_t *buf, DataParserContext &context);
void printHanReadError(int16_t pos);
uint8_t encryptionKey[16];
diff --git a/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp b/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp
index 9a805fb2b..25f1b9a48 100644
--- a/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp
+++ b/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp
@@ -78,7 +78,7 @@ void ESPKNXIP::send(address_t const &receiver, knx_command_type_t ct, uint8_t da
#endif
#ifdef ESP8266
- udp.beginPacketMulticast(MULTICAST_IP, MULTICAST_PORT, WiFi.localIP());
+ udp.beginPacketMulticast(MULTICAST_IP, MULTICAST_PORT, WiFi.localIP(), 255);
#else
if (0 == udp.beginMulticastPacket()) {
udp.beginMulticast(MULTICAST_IP, MULTICAST_PORT);
diff --git a/lib/libesp32/ESP-Mail-Client/src/extras/MB_FS.h b/lib/libesp32/ESP-Mail-Client/src/extras/MB_FS.h
index 96740627b..caed959a9 100644
--- a/lib/libesp32/ESP-Mail-Client/src/extras/MB_FS.h
+++ b/lib/libesp32/ESP-Mail-Client/src/extras/MB_FS.h
@@ -31,43 +31,10 @@
#define MBFS_CLASS_H
#include
-#include "MB_MCU.h"
-
-#define FS_NO_GLOBALS
-#if defined(ESP32) || defined(ESP8266) || defined(MB_ARDUINO_PICO)
-#if defined(MBFS_FLASH_FS) || defined(MBFS_SD_FS)
#include
-#endif
-#endif
#include "MB_FS_Interfaces.h"
#include MB_STRING_INCLUDE_CLASS
-#if defined(MBFS_FLASH_FS) || defined(MBFS_SD_FS)
-#include "SPI.h"
-#endif
-
-#if defined(ESP32) && __has_include()
-#ifdef _LITTLEFS_H_
-#define MB_FS_USE_POSIX_STAT
-#include
-namespace mb_fs_ns
-{
- inline bool exists(const char *mountPoint, const char *filename)
- {
- MB_String path = mountPoint;
- path += filename;
- struct stat st;
- return stat(path.c_str(), &st) == 0;
- }
-};
-#endif
-#endif
-
-using namespace mb_string;
-
-#if defined(BOARD_HAS_PSRAM) && defined(MB_STRING_USE_PSRAM)
-#include
-#endif
#define MB_FS_ERROR_FILE_IO_ERROR -300
#define MB_FS_ERROR_FILE_NOT_FOUND -301
@@ -75,6 +42,14 @@ using namespace mb_string;
#define MB_FS_ERROR_SD_STORAGE_IS_NOT_READY -303
#define MB_FS_ERROR_FILE_STILL_OPENED -304
+
+#define mbfs_file_type mb_fs_mem_storage_type
+#define mbfs_flash mb_fs_mem_storage_type_flash
+#define mbfs_sd mb_fs_mem_storage_type_sd
+#define mbfs_undefined mb_fs_mem_storage_type_undefined
+
+#define mbfs_type (mbfs_file_type)
+
typedef enum
{
mb_fs_mem_storage_type_undefined,
@@ -90,733 +65,158 @@ typedef enum
mb_fs_open_mode_append
} mb_fs_open_mode;
-#define mbfs_file_type mb_fs_mem_storage_type
-#define mbfs_flash mb_fs_mem_storage_type_flash
-#define mbfs_sd mb_fs_mem_storage_type_sd
-#define mbfs_undefined mb_fs_mem_storage_type_undefined
+extern FS *ufsp;
-#define mbfs_type (mbfs_file_type)
-
-#if defined(ARDUINO_ARCH_SAMD) || defined(__AVR_ATmega4809__) || defined(ARDUINO_NANO_RP2040_CONNECT)
-#if !defined(MBFS_SDFAT_ENABLED)
-struct mbfs_sd_config_info_t
-{
- int ss = -1;
-};
-#endif
-#elif defined(ESP32) || defined(MBFS_SDFAT_ENABLED)
-
-#if defined(ESP32)
-struct mbfs_sd_mmc_config_info_t
-{
- const char *mountpoint = "";
- bool mode1bit = false;
- bool format_if_mount_failed = false;
-};
-#endif
-
-struct mbfs_sd_config_info_t
-{
- int ss = -1;
- int sck = -1;
- int miso = -1;
- int mosi = -1;
- uint32_t frequency = 4000000;
-
-#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
-
- SdSpiConfig *sdFatSPIConfig = nullptr;
- SdioConfig *sdFatSDIOConfig = nullptr;
-
-#endif
-
-#if defined(ESP32)
-
-#if defined(MBFS_SD_FS)
- SPIClass *spiConfig = nullptr;
-#endif
- mbfs_sd_mmc_config_info_t sdMMCConfig;
-#endif
-
-#if defined(MBFS_SDFAT_ENABLED)
- SPIClass *spiConfig = nullptr;
-#endif
-};
-
-#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
-struct mbfs_sd_config_info_t
-{
- int ss = -1;
-#if defined(MBFS_SD_FS)
- SDFSConfig *sdFSConfig = nullptr;
-#endif
-};
-#else
-struct mbfs_sd_config_info_t
-{
- int ss = -1;
-};
-#endif
-
-class MB_FS
-{
+class MB_FS {
public:
MB_FS() {}
~MB_FS() {}
- struct mbfs_sd_config_info_t sd_config;
- // Assign the SD card interfaces with GPIO pins.
- bool sdBegin(int ss = -1, int sck = -1, int miso = -1, int mosi = -1, uint32_t frequency = 4000000)
- {
- if (sd_rdy)
- return true;
-
-#if defined(MBFS_SD_FS) && defined(MBFS_CARD_TYPE_SD)
- sd_config.ss = ss;
-#if defined(ESP32)
- sd_config.sck = sck;
- sd_config.miso = miso;
- sd_config.mosi = mosi;
- SPI.begin(sck, miso, mosi, ss);
- sd_config.frequency = frequency;
- return sdSPIBegin(ss, &SPI, frequency);
-#elif defined(ESP8266) || defined(ARDUINO_ARCH_SAMD) || defined(__AVR_ATmega4809__) || defined(ARDUINO_NANO_RP2040_CONNECT)
- sd_rdy = MBFS_SD_FS.begin(ss);
- return sd_rdy;
-#elif defined(MB_ARDUINO_PICO)
- SDFSConfig c;
- c.setCSPin(ss);
- c.setSPISpeed(frequency);
- MBFS_SD_FS.setConfig(c);
- sd_rdy = MBFS_SD_FS.begin();
- return sd_rdy;
-#endif
-
-#endif
- return false;
+ bool sdBegin(int ss = -1, int sck = -1, int miso = -1, int mosi = -1, uint32_t frequency = 4000000) {
+ mfsp = ufsp;
+ return true;
}
-#if defined(ESP32) && defined(MBFS_SD_FS) && defined(MBFS_CARD_TYPE_SD)
-
- // Assign the SD card interfaces with SPIClass object pointer (ESP32 only).
- bool sdSPIBegin(int ss, SPIClass *spiConfig, uint32_t frequency)
- {
-
- if (sd_rdy)
- return true;
-
- sd_config.frequency = frequency;
-
-#if defined(ESP32)
-
- sd_config.ss = ss;
-
- if (spiConfig)
- sd_config.spiConfig = spiConfig;
- else
- sd_config.spiConfig = &SPI;
-
-#if !defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
- if (ss > -1)
- sd_rdy = MBFS_SD_FS.begin(ss, *sd_config.spiConfig, frequency);
- else
- sd_rdy = MBFS_SD_FS.begin();
-#endif
-
-#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
-
- cfg->_int.sd_config.sck = sck;
-
- if (ss > -1)
- sd_rdy = MBFS_SD_FS.begin(ss);
- else
- sd_rdy = MBFS_SD_FS.begin(SD_CS_PIN);
-#endif
-
- return sd_rdy;
- }
-
-#endif
-
-#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
-
- // Assign the SD card interfaces with SdSpiConfig object pointer and SPI pins assignment.
- bool sdFatBegin(SdSpiConfig *sdFatSPIConfig, int ss, int sck, int miso, int mosi)
- {
-
- if (sd_rdy)
- return true;
-
- if (sdFatSPIConfig)
- {
- sd_config.sdFatSPIConfig = sdFatSPIConfig;
- sd_config.spiConfig = &SPI;
- sd_config.ss = ss;
-
-#if defined(ESP32)
- if (ss > -1)
- sd_config.spiConfig->begin(sck, miso, mosi, ss);
-#endif
-
- sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSPIConfig);
- return sd_rdy;
- }
-
- return false;
- }
-
- // Assign the SD card interfaces with SdioConfig object pointer.
- bool sdFatBegin(SdioConfig *sdFatSDIOConfig)
- {
-
- if (sd_rdy)
- return true;
-
-#if defined(HAS_SDIO_CLASS) // Default is 0 (no SDIO) in SdFatConfig.h
-
-#if HAS_SDIO_CLASS
-
- if (sdFatSDIOConfig)
- {
- sd_config.sdFatSDIOConfig = sdFatSDIOConfig;
-
- sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSDIOConfig);
- return sd_rdy;
- }
-#endif
-
-#endif
-
- return false;
- }
-#endif
-
-#if (defined(ESP8266) || defined(MB_ARDUINO_PICO)) && defined(MBFS_SD_FS)
- // Assign the SD card interfaces with SDFSConfig object pointer (ESP8266 and Pico only).
- bool sdFatBegin(SDFSConfig *sdFSConfig)
- {
-
- if (sd_rdy)
- return true;
-
- if (sdFSConfig)
- {
- sd_config.sdFSConfig = sdFSConfig;
- SDFS.setConfig(*sd_config.sdFSConfig);
- sd_rdy = SDFS.begin();
- return sd_rdy;
- }
-
- return false;
- }
-#endif
-
- // Assign the SD_MMC card interfaces (ESP32 only).
- bool sdMMCBegin(const char *mountpoint, bool mode1bit, bool format_if_mount_failed)
- {
-
- if (sd_rdy)
- return true;
-
-#if defined(ESP32)
-#if defined(MBFS_CARD_TYPE_SD_MMC)
-
- sd_config.sdMMCConfig.mountpoint = mountpoint;
- sd_config.sdMMCConfig.mode1bit = mode1bit;
- sd_config.sdMMCConfig.format_if_mount_failed = format_if_mount_failed;
-
- sd_rdy = MBFS_SD_FS.begin(mountpoint, mode1bit, format_if_mount_failed);
- return sd_rdy;
-#endif
-#endif
- return false;
+ bool sdSPIBegin(int ss, SPIClass *spiConfig, uint32_t frequency) {
+ mfsp = ufsp;
+ return true;
}
// Check the mounting status of Flash storage.
- bool flashReady()
- {
-#if defined MBFS_FLASH_FS
-
- if (flash_rdy)
- return true;
-
-#if defined(ESP32)
-
-#if defined(MBFS_FORMAT_FLASH)
- flash_rdy = MBFS_FLASH_FS.begin(true);
-#else
- flash_rdy = MBFS_FLASH_FS.begin();
-#endif
-
-#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
- flash_rdy = MBFS_FLASH_FS.begin();
-#endif
-
-#endif
-
- return flash_rdy;
+ bool flashReady() {
+ return true;
}
// Check the mounting status of SD storage.
- bool sdReady()
- {
-
-#if defined(MBFS_SD_FS)
-
- if (sd_rdy)
- return true;
-
-#if defined(ESP32)
-
-#if defined(MBFS_CARD_TYPE_SD)
-
- if (!sd_config.spiConfig)
- {
- if (sd_config.ss > -1)
- SPI.begin(sd_config.sck, sd_config.miso, sd_config.mosi, sd_config.ss);
- sd_config.spiConfig = &SPI;
- }
-
-#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
-
- if (!sd_rdy)
- {
- if (sd_config.sdFatSPIConfig)
- sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSPIConfig);
- else if (sd_config.sdFatSDIOConfig)
- sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSDIOConfig);
- }
-
-#else
- if (!sd_rdy)
- sd_rdy = sdSPIBegin(sd_config.ss, sd_config.spiConfig, sd_config.frequency);
-
-#endif
-
-#elif defined(MBFS_CARD_TYPE_SD_MMC)
- if (!sd_rdy)
- sd_rdy = sdMMCBegin(sd_config.sdMMCConfig.mountpoint, sd_config.sdMMCConfig.mode1bit, sd_config.sdMMCConfig.format_if_mount_failed);
-#endif
-
-#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
- if (!sd_rdy)
- {
- if (sd_config.sdFSConfig)
- sd_rdy = sdFatBegin(sd_config.sdFSConfig);
- else
- sd_rdy = sdBegin(sd_config.ss);
- }
-
-#elif defined(ARDUINO_ARCH_SAMD) || defined(__AVR_ATmega4809__) || defined(ARDUINO_NANO_RP2040_CONNECT)
- if (!sd_rdy)
- sd_rdy = sdBegin(sd_config.ss);
-#endif
-
-#endif
-
- return sd_rdy;
+ bool sdReady() {
+ return true;
}
// Check the mounting status of Flash or SD storage with mb_fs_mem_storage_type.
- bool checkStorageReady(mbfs_file_type type)
- {
-
-#if defined(MBFS_USE_FILE_STORAGE)
- if (type == mbfs_flash)
- {
- if (!flash_rdy)
- flashReady();
- return flash_rdy;
- }
- else if (type == mbfs_sd)
- {
- if (!sd_rdy)
- sdReady();
- return sd_rdy;
- }
-#endif
-
- return false;
+ bool checkStorageReady(mbfs_file_type type) {
+ return true;
}
- // Open file for read or write with file name, mb_fs_mem_storage_type and mb_fs_open_mode.
- // return size of file (read) or 0 (write) or negative value for error
- int open(const MB_String &filename, mbfs_file_type type, mb_fs_open_mode mode)
- {
-
-#if defined(MBFS_USE_FILE_STORAGE)
-
- if (!checkStorageReady(type))
- {
- if (type == mbfs_flash)
- return MB_FS_ERROR_FLASH_STORAGE_IS_NOT_READY;
- else if (type == mbfs_sd)
- return MB_FS_ERROR_SD_STORAGE_IS_NOT_READY;
- else
- return MB_FS_ERROR_FILE_IO_ERROR;
+ int open(const MB_String &filename, mbfs_file_type type, mb_fs_open_mode mode) {
+ char fmode[8];
+ switch (mode) {
+ case mb_fs_open_mode_read:
+ strcpy(fmode, "r");
+ break;
+ case mb_fs_open_mode_write:
+ strcpy(fmode, "w");
+ break;
+ case mb_fs_open_mode_append:
+ strcpy(fmode, "a");
+ break;
}
-
- if (mode == mb_fs_open_mode_read)
- {
- if (!existed(filename.c_str(), type))
- return MB_FS_ERROR_FILE_NOT_FOUND;
- }
-
- int ret = openFile(filename, type, mode);
-
- if (ret < 0)
- return ret;
-
- if (ready(type))
- return ret;
-
-#endif
- return MB_FS_ERROR_FILE_IO_ERROR;
+ flash_file = filename;
+ mfsp = ufsp;
+ mb_File = mfsp->open(filename.c_str(), fmode);
+ //Serial.printf(">>> 1 %s, %s, %d ", filename.c_str(), fmode, mb_File);
+ return mb_File;
}
- // Check if file is already open.
- bool ready(mbfs_file_type type)
- {
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- return true;
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- return true;
-#endif
- return false;
+ bool ready(mbfs_file_type type) {
+ return true;
}
- // Get file for read/write with file name, mb_fs_mem_storage_type and mb_fs_open_mode.
- int size(mbfs_file_type type)
- {
- int size = 0;
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- size = mb_flashFs.size();
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- size = mb_sdFs.size();
-#endif
- return size;
+ int size(mbfs_file_type type) {
+ return mb_File.size();
}
// Check if file is ready to read/write.
- int available(mbfs_file_type type)
- {
- int available = 0;
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- available = mb_flashFs.available();
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- available = mb_sdFs.available();
-#endif
- return available;
+ int available(mbfs_file_type type) {
+ return mb_File.available();
}
// Read byte array. Return the number of bytes that completed read or negative value for error.
- int read(mbfs_file_type type, uint8_t *buf, size_t len)
- {
- int read = 0;
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- read = mb_flashFs.read(buf, len);
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- read = mb_sdFs.read(buf, len);
-#endif
- return read;
+ int read(mbfs_file_type type, uint8_t *buf, size_t len) {
+ return mb_File.read(buf, len);
}
// Print char array. Return the number of bytes that completed write or negative value for error.
- int print(mbfs_file_type type, const char *str)
- {
- int write = 0;
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- write = mb_flashFs.print(str);
-#endif
-#if defined(MBFS_SD_FS)
-
- if (type == mbfs_sd && mb_sdFs)
- write = mb_sdFs.print(str);
-#endif
- return write;
+ int print(mbfs_file_type type, const char *str) {
+ return mb_File.print(str);
}
// Print char array with new line. Return the number of bytes that completed write or negative value for error.
- int println(mbfs_file_type type, const char *str)
- {
- int write = print(type, str);
- if (write == (int)strlen(str))
- write += print(type, (const char *)MBSTRING_FLASH_MCR("\n"));
- return write;
+ int println(mbfs_file_type type, const char *str) {
+ return mb_File.print(str);
}
// Print integer. Return the number of bytes that completed write or negative value for error.
- int print(mbfs_file_type type, int v)
- {
- int write = 0;
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- write = mb_flashFs.print(v);
-#endif
-#if defined(MBFS_SD_FS)
-
- if (type == mbfs_sd && mb_sdFs)
- write = mb_sdFs.print(v);
-#endif
- return write;
+ int print(mbfs_file_type type, int v) {
+ return mb_File.print(v);
}
// Print integer with newline. Return the number of bytes that completed write or negative value for error.
- int println(mbfs_file_type type, int v)
- {
- int write = print(type, v);
- if (write > 0)
- write += print(type, (const char *)MBSTRING_FLASH_MCR("\n"));
- return write;
+ int println(mbfs_file_type type, int v) {
+ return mb_File.print(v);
}
- int print(mbfs_file_type type, unsigned int v)
- {
- int write = 0;
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- write = mb_flashFs.print(v);
-#endif
-#if defined(MBFS_SD_FS)
-
- if (type == mbfs_sd && mb_sdFs)
- write = mb_sdFs.print(v);
-#endif
- return write;
+ int print(mbfs_file_type type, unsigned int v) {
+ return mb_File.print(v);
}
// Print integer with newline. Return the number of bytes that completed write or negative value for error.
- int println(mbfs_file_type type, unsigned int v)
- {
- int write = print(type, v);
- if (write > 0)
- write += print(type, (const char *)MBSTRING_FLASH_MCR("\n"));
- return write;
+ int println(mbfs_file_type type, unsigned int v) {
+ return mb_File.print(v);
}
// Write byte array. Return the number of bytes that completed write or negative value for error.
- int write(mbfs_file_type type, uint8_t *buf, size_t len)
- {
- int write = 0;
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- write = mb_flashFs.write(buf, len);
-#endif
-#if defined(MBFS_SD_FS)
-
- if (type == mbfs_sd && mb_sdFs)
- write = mb_sdFs.write(buf, len);
-#endif
- return write;
+ int write(mbfs_file_type type, uint8_t *buf, size_t len) {
+ return mb_File.write(buf, len);
}
// Close file.
- void close(mbfs_file_type type)
- {
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs && flash_opened)
- {
- mb_flashFs.close();
- flash_filename_crc = 0;
- flash_opened = false;
- flash_open_mode = mb_fs_open_mode_undefined;
- }
-#endif
-
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs && sd_opened)
- {
- mb_sdFs.close();
- sd_filename_crc = 0;
- sd_opened = false;
- sd_open_mode = mb_fs_open_mode_undefined;
- }
-#endif
+ void close(mbfs_file_type type) {
+ mb_File.close();
}
// Check file existence.
- bool existed(const MB_String &filename, mbfs_file_type type)
- {
-
- if (!checkStorageReady(type))
- return false;
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash)
- {
-
-// The workaround for ESP32 LittleFS when calling vfs_api.cpp open() issue.
-// See https://github.com/espressif/arduino-esp32/issues/7615
-#if defined(MB_FS_USE_POSIX_STAT)
- return mb_fs_ns::exists("/littlefs", filename.c_str());
-#else
- return MBFS_FLASH_FS.exists(filename.c_str());
-#endif
- }
-
-#endif
-
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd)
- {
-#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
- MBFS_SD_FILE file;
- bool ret = file.open(filename.c_str(), O_RDONLY);
- file.close();
- return ret;
-#else
- return MBFS_SD_FS.exists(filename.c_str());
-#endif
- }
-#endif
-
- return false;
+ bool existed(const MB_String &filename, mbfs_file_type type) {
+ return mfsp->exists(filename.c_str());
}
// Seek to position in file.
- bool seek(mbfs_file_type type, int pos)
- {
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- return mb_flashFs.seek(pos);
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- return mb_sdFs.seek(pos);
-#endif
-
- return false;
+ bool seek(mbfs_file_type type, int pos) {
+ return mb_File.seek(pos);
}
// Read byte. Return the 1 for completed read or negative value for error.
- int read(mbfs_file_type type)
- {
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- return mb_flashFs.read();
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- return mb_sdFs.read();
-#endif
- return -1;
+ int read(mbfs_file_type type) {
+ return mb_File.read();
}
// Write byte. Return the 1 for completed write or negative value for error.
- int write(mbfs_file_type type, uint8_t v)
- {
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- return mb_flashFs.write(v);
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- return mb_sdFs.write(v);
-#endif
- return -1;
+ int write(mbfs_file_type type, uint8_t v) {
+ return mb_File.write(v);
}
- bool remove(const MB_String &filename, mbfs_file_type type)
- {
- if (!checkStorageReady(type))
- return false;
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && !flashReady())
- return false;
-#endif
-
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && !sdReady())
- return false;
-#endif
-
- if (!existed(filename, type))
- return true;
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash)
- return MBFS_FLASH_FS.remove(filename.c_str());
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd)
- {
-#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
- if (mb_sdFs.open(filename.c_str(), O_RDWR | O_CREAT | O_APPEND))
- {
- mb_sdFs.remove();
- mb_sdFs.close();
- return true;
- }
-#else
- return MBFS_SD_FS.remove(filename.c_str());
-#endif
- }
-
-#endif
- return false;
+ bool remove(const MB_String &filename, mbfs_file_type type) {
+ return mfsp->remove(filename.c_str());
}
-// Get the Flash file instance.
-#if defined(MBFS_FLASH_FS)
- fs::File &getFlashFile()
- {
- return mb_flashFs;
+ fs::File &getFlashFile() {
+ return mb_File;
}
-#endif
-
-// Get the SD file instance.
-#if defined(MBFS_SD_FS)
- MBFS_SD_FILE &getSDFile()
- {
- return mb_sdFs;
- }
-#endif
// Get name of opened file.
- const char *name(mbfs_file_type type)
- {
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash && mb_flashFs)
- return flash_file.c_str();
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd && mb_sdFs)
- return sd_file.c_str();
-#endif
-
- return "";
+ const char *name(mbfs_file_type type) {
+ return flash_file.c_str();
}
// Calculate CRC16 of byte array.
- uint16_t calCRC(const char *buf)
- {
+ uint16_t calCRC(const char *buf) {
uint8_t x;
uint16_t crc = 0xFFFF;
int length = (int)strlen(buf);
- while (length--)
- {
+ while (length--) {
x = crc >> 8 ^ *buf++;
x ^= x >> 4;
crc = (crc << 8) ^ ((uint16_t)(x << 12)) ^ ((uint16_t)(x << 5)) ^ ((uint16_t)x);
@@ -825,19 +225,16 @@ public:
}
// Free reserved memory at pointer.
- void delP(void *ptr)
- {
+ void delP(void *ptr) {
void **p = (void **)ptr;
- if (*p)
- {
+ if (*p) {
free(*p);
*p = 0;
}
}
// Allocate memory
- void *newP(size_t len, bool clear = true)
- {
+ void *newP(size_t len, bool clear = true) {
void *p;
size_t newLen = getReservedLen(len);
#if defined(BOARD_HAS_PSRAM) && defined(MB_STRING_USE_PSRAM)
@@ -872,8 +269,7 @@ public:
return p;
}
- size_t getReservedLen(size_t len)
- {
+ size_t getReservedLen(size_t len) {
int blen = len + 1;
int newlen = (blen / 4) * 4;
@@ -884,20 +280,17 @@ public:
return (size_t)newlen;
}
- void createDirs(MB_String dirs, mbfs_file_type type)
- {
+ void createDirs(MB_String dirs, mbfs_file_type type) {
if (!longNameSupported())
return;
MB_String dir;
int count = 0;
int lastPos = 0;
- for (size_t i = 0; i < dirs.length(); i++)
- {
+ for (size_t i = 0; i < dirs.length(); i++) {
dir.append(1, dirs[i]);
count++;
- if (dirs[i] == '/' && i > 0)
- {
+ if (dirs[i] == '/' && i > 0) {
if (dir.length() > 0)
{
@@ -936,8 +329,7 @@ public:
dir.clear();
}
- bool longNameSupported()
- {
+ bool longNameSupported() {
#if defined(MBFS_SDFAT_ENABLED) || defined(MBFS_FLASH_FS)
return true;
@@ -952,186 +344,10 @@ public:
private:
uint16_t flash_filename_crc = 0;
- uint16_t sd_filename_crc = 0;
MB_String flash_file, sd_file;
- mb_fs_open_mode flash_open_mode = mb_fs_open_mode_undefined;
- mb_fs_open_mode sd_open_mode = mb_fs_open_mode_undefined;
- bool flash_opened = false;
- bool sd_opened = false;
- bool sd_rdy = false;
- bool flash_rdy = false;
- uint16_t loopCount = 0;
+ FS *mfsp;
+ File mb_File;
-#if defined(MBFS_FLASH_FS)
- fs::File mb_flashFs;
-#endif
-#if defined(MBFS_SD_FS)
- MBFS_SD_FILE mb_sdFs;
-#endif
-
- int openFile(const MB_String &filename, mb_fs_mem_storage_type type, mb_fs_open_mode mode)
- {
-
-#if defined(MBFS_FLASH_FS)
- if (type == mbfs_flash)
- return openFlashFile(filename, mode);
-#endif
-#if defined(MBFS_SD_FS)
- if (type == mbfs_sd)
- return openSDFile(filename, mode);
-#endif
- return MB_FS_ERROR_FILE_IO_ERROR;
- }
-
- int openSDFile(const MB_String &filename, mb_fs_open_mode mode)
- {
- int ret = MB_FS_ERROR_FILE_IO_ERROR;
-
-#if defined(MBFS_SD_FS)
-
- if (mode == mb_fs_open_mode_read || mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
- {
- uint16_t crc = calCRC(filename.c_str());
-
- if (mode == sd_open_mode && flash_filename_crc == crc && sd_opened) // same sd file opened, leave it
- return MB_FS_ERROR_FILE_STILL_OPENED;
-
- if (sd_opened)
- close(mbfs_sd); // sd file opened, close it
-
- flash_filename_crc = crc;
- }
-
-#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
-
- if (mode == mb_fs_open_mode_read)
- {
- if (mb_sdFs.open(filename.c_str(), O_RDONLY))
- {
- sd_file = filename;
- sd_opened = true;
- sd_open_mode = mode;
- ret = mb_sdFs.size();
- }
- }
- else if (mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
- {
- if (mode == mb_fs_open_mode_write)
- remove(filename, mb_fs_mem_storage_type_sd);
-
- createDirs(filename, mb_fs_mem_storage_type_sd);
- if (mb_sdFs.open(filename.c_str(), O_RDWR | O_CREAT | O_APPEND))
- {
- sd_file = filename;
- sd_opened = true;
- sd_open_mode = mode;
- ret = 0;
- }
- }
-
-#else
-
- if (mode == mb_fs_open_mode_read)
- {
-#if defined(ESP32) || defined(ESP8266)
- mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_READ);
-#else
- mb_sdFs = MBFS_SD_FS.open(filename.c_str(), "r");
-#endif
- if (mb_sdFs)
- {
- sd_file = filename;
- sd_opened = true;
- sd_open_mode = mode;
- ret = mb_sdFs.size();
- }
- }
- else if (mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
- {
- if (mode == mb_fs_open_mode_write)
- remove(filename, mb_fs_mem_storage_type_sd);
-
- createDirs(filename, mb_fs_mem_storage_type_sd);
-#if defined(ESP32)
- if (mode == mb_fs_open_mode_write)
- mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_WRITE);
- else
- mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_APPEND);
-#elif defined(ESP8266)
- mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_WRITE);
-#else
- if (mode == mb_fs_open_mode_write)
- mb_sdFs = MBFS_SD_FS.open(filename.c_str(), "w");
- else
- mb_sdFs = MBFS_SD_FS.open(filename.c_str(), "a");
-#endif
-
- if (mb_sdFs)
- {
- sd_file = filename;
- sd_opened = true;
- sd_open_mode = mode;
- ret = 0;
- }
- }
-#endif
-
-#endif
- return ret;
- }
-
- int openFlashFile(const MB_String &filename, mb_fs_open_mode mode)
- {
- int ret = MB_FS_ERROR_FILE_IO_ERROR;
-
-#if defined(MBFS_FLASH_FS)
-
- if (mode == mb_fs_open_mode_read || mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
- {
- uint16_t crc = calCRC(filename.c_str());
- if (mode == flash_open_mode && sd_filename_crc == crc && flash_opened) // same flash file opened, leave it
- return MB_FS_ERROR_FILE_STILL_OPENED;
-
- if (flash_opened)
- close(mbfs_flash); // flash file opened, close it
-
- sd_filename_crc = crc;
- }
-
- if (mode == mb_fs_open_mode_read)
- {
- mb_flashFs = MBFS_FLASH_FS.open(filename.c_str(), "r");
- if (mb_flashFs)
- {
- flash_file = filename;
- flash_opened = true;
- flash_open_mode = mode;
- ret = mb_flashFs.size();
- }
- }
- else if (mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
- {
- if (mode == mb_fs_open_mode_write)
- remove(filename, mb_fs_mem_storage_type_flash);
-
- createDirs(filename, mb_fs_mem_storage_type_flash);
- if (mode == mb_fs_open_mode_write)
- mb_flashFs = MBFS_FLASH_FS.open(filename.c_str(), "w");
- else
- mb_flashFs = MBFS_FLASH_FS.open(filename.c_str(), "a");
-
- if (mb_flashFs)
- {
- flash_file = filename;
- flash_opened = true;
- flash_open_mode = mode;
- ret = 0;
- }
- }
-
-#endif
- return ret;
- }
};
#endif
diff --git a/lib/libesp32/ESP-Mail-Client/src/extras/MB_FS_org.h b/lib/libesp32/ESP-Mail-Client/src/extras/MB_FS_org.h
new file mode 100644
index 000000000..682a3d78e
--- /dev/null
+++ b/lib/libesp32/ESP-Mail-Client/src/extras/MB_FS_org.h
@@ -0,0 +1,1139 @@
+/**
+ * The MB_FS, filesystems wrapper class v1.0.16
+ *
+ * This wrapper class is for SD and Flash filesystems interface which supports SdFat (//https://github.com/greiman/SdFat)
+ *
+ * Created June 14, 2023
+ *
+ * The MIT License (MIT)
+ * Copyright (c) 2023 K. Suwatchai (Mobizt)
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person returning a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#if 0
+#ifndef MBFS_CLASS_H
+#define MBFS_CLASS_H
+
+#include
+#include "MB_MCU.h"
+
+#define FS_NO_GLOBALS
+#if defined(ESP32) || defined(ESP8266) || defined(MB_ARDUINO_PICO)
+#if defined(MBFS_FLASH_FS) || defined(MBFS_SD_FS)
+#include
+#endif
+#endif
+#include "MB_FS_Interfaces.h"
+#include MB_STRING_INCLUDE_CLASS
+
+#if defined(MBFS_FLASH_FS) || defined(MBFS_SD_FS)
+#include "SPI.h"
+#endif
+
+#if defined(ESP32) && __has_include()
+#ifdef _LITTLEFS_H_
+#define MB_FS_USE_POSIX_STAT
+#include
+namespace mb_fs_ns
+{
+ inline bool exists(const char *mountPoint, const char *filename)
+ {
+ MB_String path = mountPoint;
+ path += filename;
+ struct stat st;
+ return stat(path.c_str(), &st) == 0;
+ }
+};
+#endif
+#endif
+
+using namespace mb_string;
+
+#if defined(BOARD_HAS_PSRAM) && defined(MB_STRING_USE_PSRAM)
+#include
+#endif
+
+#define MB_FS_ERROR_FILE_IO_ERROR -300
+#define MB_FS_ERROR_FILE_NOT_FOUND -301
+#define MB_FS_ERROR_FLASH_STORAGE_IS_NOT_READY -302
+#define MB_FS_ERROR_SD_STORAGE_IS_NOT_READY -303
+#define MB_FS_ERROR_FILE_STILL_OPENED -304
+
+typedef enum
+{
+ mb_fs_mem_storage_type_undefined,
+ mb_fs_mem_storage_type_flash,
+ mb_fs_mem_storage_type_sd
+} mb_fs_mem_storage_type;
+
+typedef enum
+{
+ mb_fs_open_mode_undefined = -1,
+ mb_fs_open_mode_read = 0,
+ mb_fs_open_mode_write,
+ mb_fs_open_mode_append
+} mb_fs_open_mode;
+
+#define mbfs_file_type mb_fs_mem_storage_type
+#define mbfs_flash mb_fs_mem_storage_type_flash
+#define mbfs_sd mb_fs_mem_storage_type_sd
+#define mbfs_undefined mb_fs_mem_storage_type_undefined
+
+#define mbfs_type (mbfs_file_type)
+
+#if defined(ARDUINO_ARCH_SAMD) || defined(__AVR_ATmega4809__) || defined(ARDUINO_NANO_RP2040_CONNECT)
+#if !defined(MBFS_SDFAT_ENABLED)
+struct mbfs_sd_config_info_t
+{
+ int ss = -1;
+};
+#endif
+#elif defined(ESP32) || defined(MBFS_SDFAT_ENABLED)
+
+#if defined(ESP32)
+struct mbfs_sd_mmc_config_info_t
+{
+ const char *mountpoint = "";
+ bool mode1bit = false;
+ bool format_if_mount_failed = false;
+};
+#endif
+
+struct mbfs_sd_config_info_t
+{
+ int ss = -1;
+ int sck = -1;
+ int miso = -1;
+ int mosi = -1;
+ uint32_t frequency = 4000000;
+
+#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
+
+ SdSpiConfig *sdFatSPIConfig = nullptr;
+ SdioConfig *sdFatSDIOConfig = nullptr;
+
+#endif
+
+#if defined(ESP32)
+
+#if defined(MBFS_SD_FS)
+ SPIClass *spiConfig = nullptr;
+#endif
+ mbfs_sd_mmc_config_info_t sdMMCConfig;
+#endif
+
+#if defined(MBFS_SDFAT_ENABLED)
+ SPIClass *spiConfig = nullptr;
+#endif
+};
+
+#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
+struct mbfs_sd_config_info_t
+{
+ int ss = -1;
+#if defined(MBFS_SD_FS)
+ SDFSConfig *sdFSConfig = nullptr;
+#endif
+};
+#else
+struct mbfs_sd_config_info_t
+{
+ int ss = -1;
+};
+#endif
+
+class MB_FS
+{
+
+public:
+ MB_FS() {}
+ ~MB_FS() {}
+
+ struct mbfs_sd_config_info_t sd_config;
+
+ // Assign the SD card interfaces with GPIO pins.
+ bool sdBegin(int ss = -1, int sck = -1, int miso = -1, int mosi = -1, uint32_t frequency = 4000000)
+ {
+ if (sd_rdy)
+ return true;
+
+#if defined(MBFS_SD_FS) && defined(MBFS_CARD_TYPE_SD)
+ sd_config.ss = ss;
+#if defined(ESP32)
+ sd_config.sck = sck;
+ sd_config.miso = miso;
+ sd_config.mosi = mosi;
+ SPI.begin(sck, miso, mosi, ss);
+ sd_config.frequency = frequency;
+ return sdSPIBegin(ss, &SPI, frequency);
+#elif defined(ESP8266) || defined(ARDUINO_ARCH_SAMD) || defined(__AVR_ATmega4809__) || defined(ARDUINO_NANO_RP2040_CONNECT)
+ sd_rdy = MBFS_SD_FS.begin(ss);
+ return sd_rdy;
+#elif defined(MB_ARDUINO_PICO)
+ SDFSConfig c;
+ c.setCSPin(ss);
+ c.setSPISpeed(frequency);
+ MBFS_SD_FS.setConfig(c);
+ sd_rdy = MBFS_SD_FS.begin();
+ return sd_rdy;
+#endif
+
+#endif
+ return false;
+ }
+
+#if defined(ESP32) && defined(MBFS_SD_FS) && defined(MBFS_CARD_TYPE_SD)
+
+ // Assign the SD card interfaces with SPIClass object pointer (ESP32 only).
+ bool sdSPIBegin(int ss, SPIClass *spiConfig, uint32_t frequency)
+ {
+
+ if (sd_rdy)
+ return true;
+
+ sd_config.frequency = frequency;
+
+#if defined(ESP32)
+
+ sd_config.ss = ss;
+
+ if (spiConfig)
+ sd_config.spiConfig = spiConfig;
+ else
+ sd_config.spiConfig = &SPI;
+
+#if !defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
+ if (ss > -1)
+ sd_rdy = MBFS_SD_FS.begin(ss, *sd_config.spiConfig, frequency);
+ else
+ sd_rdy = MBFS_SD_FS.begin();
+#endif
+
+#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
+
+ cfg->_int.sd_config.sck = sck;
+
+ if (ss > -1)
+ sd_rdy = MBFS_SD_FS.begin(ss);
+ else
+ sd_rdy = MBFS_SD_FS.begin(SD_CS_PIN);
+#endif
+
+ return sd_rdy;
+ }
+
+#endif
+
+#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
+
+ // Assign the SD card interfaces with SdSpiConfig object pointer and SPI pins assignment.
+ bool sdFatBegin(SdSpiConfig *sdFatSPIConfig, int ss, int sck, int miso, int mosi)
+ {
+
+ if (sd_rdy)
+ return true;
+
+ if (sdFatSPIConfig)
+ {
+ sd_config.sdFatSPIConfig = sdFatSPIConfig;
+ sd_config.spiConfig = &SPI;
+ sd_config.ss = ss;
+
+#if defined(ESP32)
+ if (ss > -1)
+ sd_config.spiConfig->begin(sck, miso, mosi, ss);
+#endif
+
+ sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSPIConfig);
+ return sd_rdy;
+ }
+
+ return false;
+ }
+
+ // Assign the SD card interfaces with SdioConfig object pointer.
+ bool sdFatBegin(SdioConfig *sdFatSDIOConfig)
+ {
+
+ if (sd_rdy)
+ return true;
+
+#if defined(HAS_SDIO_CLASS) // Default is 0 (no SDIO) in SdFatConfig.h
+
+#if HAS_SDIO_CLASS
+
+ if (sdFatSDIOConfig)
+ {
+ sd_config.sdFatSDIOConfig = sdFatSDIOConfig;
+
+ sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSDIOConfig);
+ return sd_rdy;
+ }
+#endif
+
+#endif
+
+ return false;
+ }
+#endif
+
+#if (defined(ESP8266) || defined(MB_ARDUINO_PICO)) && defined(MBFS_SD_FS)
+ // Assign the SD card interfaces with SDFSConfig object pointer (ESP8266 and Pico only).
+ bool sdFatBegin(SDFSConfig *sdFSConfig)
+ {
+
+ if (sd_rdy)
+ return true;
+
+ if (sdFSConfig)
+ {
+ sd_config.sdFSConfig = sdFSConfig;
+ SDFS.setConfig(*sd_config.sdFSConfig);
+ sd_rdy = SDFS.begin();
+ return sd_rdy;
+ }
+
+ return false;
+ }
+#endif
+
+ // Assign the SD_MMC card interfaces (ESP32 only).
+ bool sdMMCBegin(const char *mountpoint, bool mode1bit, bool format_if_mount_failed)
+ {
+
+ if (sd_rdy)
+ return true;
+
+#if defined(ESP32)
+#if defined(MBFS_CARD_TYPE_SD_MMC)
+
+ sd_config.sdMMCConfig.mountpoint = mountpoint;
+ sd_config.sdMMCConfig.mode1bit = mode1bit;
+ sd_config.sdMMCConfig.format_if_mount_failed = format_if_mount_failed;
+
+ sd_rdy = MBFS_SD_FS.begin(mountpoint, mode1bit, format_if_mount_failed);
+ return sd_rdy;
+#endif
+#endif
+ return false;
+ }
+
+ // Check the mounting status of Flash storage.
+ bool flashReady()
+ {
+#if defined MBFS_FLASH_FS
+
+ if (flash_rdy)
+ return true;
+
+#if defined(ESP32)
+
+#if defined(MBFS_FORMAT_FLASH)
+ flash_rdy = MBFS_FLASH_FS.begin(true);
+#else
+ flash_rdy = MBFS_FLASH_FS.begin();
+#endif
+
+#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
+ flash_rdy = MBFS_FLASH_FS.begin();
+#endif
+
+#endif
+
+ return flash_rdy;
+ }
+
+ // Check the mounting status of SD storage.
+ bool sdReady()
+ {
+
+#if defined(MBFS_SD_FS)
+
+ if (sd_rdy)
+ return true;
+
+#if defined(ESP32)
+
+#if defined(MBFS_CARD_TYPE_SD)
+
+ if (!sd_config.spiConfig)
+ {
+ if (sd_config.ss > -1)
+ SPI.begin(sd_config.sck, sd_config.miso, sd_config.mosi, sd_config.ss);
+ sd_config.spiConfig = &SPI;
+ }
+
+#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
+
+ if (!sd_rdy)
+ {
+ if (sd_config.sdFatSPIConfig)
+ sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSPIConfig);
+ else if (sd_config.sdFatSDIOConfig)
+ sd_rdy = MBFS_SD_FS.begin(*sd_config.sdFatSDIOConfig);
+ }
+
+#else
+ if (!sd_rdy)
+ sd_rdy = sdSPIBegin(sd_config.ss, sd_config.spiConfig, sd_config.frequency);
+
+#endif
+
+#elif defined(MBFS_CARD_TYPE_SD_MMC)
+ if (!sd_rdy)
+ sd_rdy = sdMMCBegin(sd_config.sdMMCConfig.mountpoint, sd_config.sdMMCConfig.mode1bit, sd_config.sdMMCConfig.format_if_mount_failed);
+#endif
+
+#elif defined(ESP8266) || defined(MB_ARDUINO_PICO)
+ if (!sd_rdy)
+ {
+ if (sd_config.sdFSConfig)
+ sd_rdy = sdFatBegin(sd_config.sdFSConfig);
+ else
+ sd_rdy = sdBegin(sd_config.ss);
+ }
+
+#elif defined(ARDUINO_ARCH_SAMD) || defined(__AVR_ATmega4809__) || defined(ARDUINO_NANO_RP2040_CONNECT)
+ if (!sd_rdy)
+ sd_rdy = sdBegin(sd_config.ss);
+#endif
+
+#endif
+
+ return sd_rdy;
+ }
+
+ // Check the mounting status of Flash or SD storage with mb_fs_mem_storage_type.
+ bool checkStorageReady(mbfs_file_type type)
+ {
+
+#if defined(MBFS_USE_FILE_STORAGE)
+ if (type == mbfs_flash)
+ {
+ if (!flash_rdy)
+ flashReady();
+ return flash_rdy;
+ }
+ else if (type == mbfs_sd)
+ {
+ if (!sd_rdy)
+ sdReady();
+ return sd_rdy;
+ }
+#endif
+
+ return false;
+ }
+
+ // Open file for read or write with file name, mb_fs_mem_storage_type and mb_fs_open_mode.
+ // return size of file (read) or 0 (write) or negative value for error
+ int open(const MB_String &filename, mbfs_file_type type, mb_fs_open_mode mode)
+ {
+
+#if defined(MBFS_USE_FILE_STORAGE)
+
+ if (!checkStorageReady(type))
+ {
+ if (type == mbfs_flash)
+ return MB_FS_ERROR_FLASH_STORAGE_IS_NOT_READY;
+ else if (type == mbfs_sd)
+ return MB_FS_ERROR_SD_STORAGE_IS_NOT_READY;
+ else
+ return MB_FS_ERROR_FILE_IO_ERROR;
+ }
+
+ if (mode == mb_fs_open_mode_read)
+ {
+ if (!existed(filename.c_str(), type))
+ return MB_FS_ERROR_FILE_NOT_FOUND;
+ }
+
+ int ret = openFile(filename, type, mode);
+
+ if (ret < 0)
+ return ret;
+
+ if (ready(type))
+ return ret;
+
+#endif
+ return MB_FS_ERROR_FILE_IO_ERROR;
+ }
+
+ // Check if file is already open.
+ bool ready(mbfs_file_type type)
+ {
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ return true;
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ return true;
+#endif
+ return false;
+ }
+
+ // Get file for read/write with file name, mb_fs_mem_storage_type and mb_fs_open_mode.
+ int size(mbfs_file_type type)
+ {
+ int size = 0;
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ size = mb_flashFs.size();
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ size = mb_sdFs.size();
+#endif
+ return size;
+ }
+
+ // Check if file is ready to read/write.
+ int available(mbfs_file_type type)
+ {
+ int available = 0;
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ available = mb_flashFs.available();
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ available = mb_sdFs.available();
+#endif
+ return available;
+ }
+
+ // Read byte array. Return the number of bytes that completed read or negative value for error.
+ int read(mbfs_file_type type, uint8_t *buf, size_t len)
+ {
+ int read = 0;
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ read = mb_flashFs.read(buf, len);
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ read = mb_sdFs.read(buf, len);
+#endif
+ return read;
+ }
+
+ // Print char array. Return the number of bytes that completed write or negative value for error.
+ int print(mbfs_file_type type, const char *str)
+ {
+ int write = 0;
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ write = mb_flashFs.print(str);
+#endif
+#if defined(MBFS_SD_FS)
+
+ if (type == mbfs_sd && mb_sdFs)
+ write = mb_sdFs.print(str);
+#endif
+ return write;
+ }
+
+ // Print char array with new line. Return the number of bytes that completed write or negative value for error.
+ int println(mbfs_file_type type, const char *str)
+ {
+ int write = print(type, str);
+ if (write == (int)strlen(str))
+ write += print(type, (const char *)MBSTRING_FLASH_MCR("\n"));
+ return write;
+ }
+
+ // Print integer. Return the number of bytes that completed write or negative value for error.
+ int print(mbfs_file_type type, int v)
+ {
+ int write = 0;
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ write = mb_flashFs.print(v);
+#endif
+#if defined(MBFS_SD_FS)
+
+ if (type == mbfs_sd && mb_sdFs)
+ write = mb_sdFs.print(v);
+#endif
+ return write;
+ }
+
+ // Print integer with newline. Return the number of bytes that completed write or negative value for error.
+ int println(mbfs_file_type type, int v)
+ {
+ int write = print(type, v);
+ if (write > 0)
+ write += print(type, (const char *)MBSTRING_FLASH_MCR("\n"));
+ return write;
+ }
+
+ int print(mbfs_file_type type, unsigned int v)
+ {
+ int write = 0;
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ write = mb_flashFs.print(v);
+#endif
+#if defined(MBFS_SD_FS)
+
+ if (type == mbfs_sd && mb_sdFs)
+ write = mb_sdFs.print(v);
+#endif
+ return write;
+ }
+
+ // Print integer with newline. Return the number of bytes that completed write or negative value for error.
+ int println(mbfs_file_type type, unsigned int v)
+ {
+ int write = print(type, v);
+ if (write > 0)
+ write += print(type, (const char *)MBSTRING_FLASH_MCR("\n"));
+ return write;
+ }
+
+ // Write byte array. Return the number of bytes that completed write or negative value for error.
+ int write(mbfs_file_type type, uint8_t *buf, size_t len)
+ {
+ int write = 0;
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ write = mb_flashFs.write(buf, len);
+#endif
+#if defined(MBFS_SD_FS)
+
+ if (type == mbfs_sd && mb_sdFs)
+ write = mb_sdFs.write(buf, len);
+#endif
+ return write;
+ }
+
+ // Close file.
+ void close(mbfs_file_type type)
+ {
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs && flash_opened)
+ {
+ mb_flashFs.close();
+ flash_filename_crc = 0;
+ flash_opened = false;
+ flash_open_mode = mb_fs_open_mode_undefined;
+ }
+#endif
+
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs && sd_opened)
+ {
+ mb_sdFs.close();
+ sd_filename_crc = 0;
+ sd_opened = false;
+ sd_open_mode = mb_fs_open_mode_undefined;
+ }
+#endif
+ }
+
+ // Check file existence.
+ bool existed(const MB_String &filename, mbfs_file_type type)
+ {
+
+ if (!checkStorageReady(type))
+ return false;
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash)
+ {
+
+// The workaround for ESP32 LittleFS when calling vfs_api.cpp open() issue.
+// See https://github.com/espressif/arduino-esp32/issues/7615
+#if defined(MB_FS_USE_POSIX_STAT)
+ return mb_fs_ns::exists("/littlefs", filename.c_str());
+#else
+ return MBFS_FLASH_FS.exists(filename.c_str());
+#endif
+ }
+
+#endif
+
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd)
+ {
+#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
+ MBFS_SD_FILE file;
+ bool ret = file.open(filename.c_str(), O_RDONLY);
+ file.close();
+ return ret;
+#else
+ return MBFS_SD_FS.exists(filename.c_str());
+#endif
+ }
+#endif
+
+ return false;
+ }
+
+ // Seek to position in file.
+ bool seek(mbfs_file_type type, int pos)
+ {
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ return mb_flashFs.seek(pos);
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ return mb_sdFs.seek(pos);
+#endif
+
+ return false;
+ }
+
+ // Read byte. Return the 1 for completed read or negative value for error.
+ int read(mbfs_file_type type)
+ {
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ return mb_flashFs.read();
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ return mb_sdFs.read();
+#endif
+ return -1;
+ }
+
+ // Write byte. Return the 1 for completed write or negative value for error.
+ int write(mbfs_file_type type, uint8_t v)
+ {
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ return mb_flashFs.write(v);
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ return mb_sdFs.write(v);
+#endif
+ return -1;
+ }
+
+ bool remove(const MB_String &filename, mbfs_file_type type)
+ {
+ if (!checkStorageReady(type))
+ return false;
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && !flashReady())
+ return false;
+#endif
+
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && !sdReady())
+ return false;
+#endif
+
+ if (!existed(filename, type))
+ return true;
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash)
+ return MBFS_FLASH_FS.remove(filename.c_str());
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd)
+ {
+#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
+ if (mb_sdFs.open(filename.c_str(), O_RDWR | O_CREAT | O_APPEND))
+ {
+ mb_sdFs.remove();
+ mb_sdFs.close();
+ return true;
+ }
+#else
+ return MBFS_SD_FS.remove(filename.c_str());
+#endif
+ }
+
+#endif
+ return false;
+ }
+
+// Get the Flash file instance.
+#if defined(MBFS_FLASH_FS)
+ fs::File &getFlashFile()
+ {
+ return mb_flashFs;
+ }
+#endif
+
+// Get the SD file instance.
+#if defined(MBFS_SD_FS)
+ MBFS_SD_FILE &getSDFile()
+ {
+ return mb_sdFs;
+ }
+#endif
+
+ // Get name of opened file.
+ const char *name(mbfs_file_type type)
+ {
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash && mb_flashFs)
+ return flash_file.c_str();
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd && mb_sdFs)
+ return sd_file.c_str();
+#endif
+
+ return "";
+ }
+
+ // Calculate CRC16 of byte array.
+ uint16_t calCRC(const char *buf)
+ {
+ uint8_t x;
+ uint16_t crc = 0xFFFF;
+
+ int length = (int)strlen(buf);
+
+ while (length--)
+ {
+ x = crc >> 8 ^ *buf++;
+ x ^= x >> 4;
+ crc = (crc << 8) ^ ((uint16_t)(x << 12)) ^ ((uint16_t)(x << 5)) ^ ((uint16_t)x);
+ }
+ return crc;
+ }
+
+ // Free reserved memory at pointer.
+ void delP(void *ptr)
+ {
+ void **p = (void **)ptr;
+ if (*p)
+ {
+ free(*p);
+ *p = 0;
+ }
+ }
+
+ // Allocate memory
+ void *newP(size_t len, bool clear = true)
+ {
+ void *p;
+ size_t newLen = getReservedLen(len);
+#if defined(BOARD_HAS_PSRAM) && defined(MB_STRING_USE_PSRAM)
+
+ if (ESP.getPsramSize() > 0)
+ p = (void *)ps_malloc(newLen);
+ else
+ p = (void *)malloc(newLen);
+
+ if (!p)
+ return NULL;
+
+#else
+
+#if defined(ESP8266_USE_EXTERNAL_HEAP)
+ ESP.setExternalHeap();
+#endif
+
+ p = (void *)malloc(newLen);
+ bool nn = p ? true : false;
+
+#if defined(ESP8266_USE_EXTERNAL_HEAP)
+ ESP.resetHeap();
+#endif
+
+ if (!nn)
+ return NULL;
+
+#endif
+ if (clear)
+ memset(p, 0, newLen);
+ return p;
+ }
+
+ size_t getReservedLen(size_t len)
+ {
+ int blen = len + 1;
+
+ int newlen = (blen / 4) * 4;
+
+ if (newlen < blen)
+ newlen += 4;
+
+ return (size_t)newlen;
+ }
+
+ void createDirs(MB_String dirs, mbfs_file_type type)
+ {
+ if (!longNameSupported())
+ return;
+
+ MB_String dir;
+ int count = 0;
+ int lastPos = 0;
+ for (size_t i = 0; i < dirs.length(); i++)
+ {
+ dir.append(1, dirs[i]);
+ count++;
+ if (dirs[i] == '/' && i > 0)
+ {
+ if (dir.length() > 0)
+ {
+
+ lastPos = dir.length() - 1;
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash)
+ MBFS_FLASH_FS.mkdir(dir.substr(0, dir.length() - 1).c_str());
+#endif
+
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd)
+ MBFS_SD_FS.mkdir(dir.substr(0, dir.length() - 1).c_str());
+#endif
+ }
+ count = 0;
+ }
+ }
+
+ if (count > 0)
+ {
+ if (dir.find('.', lastPos) == MB_String::npos)
+ {
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash)
+ MBFS_FLASH_FS.mkdir(dir.c_str());
+#endif
+
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd)
+ MBFS_SD_FS.mkdir(dir.c_str());
+#endif
+ }
+ }
+
+ dir.clear();
+ }
+
+ bool longNameSupported()
+ {
+
+#if defined(MBFS_SDFAT_ENABLED) || defined(MBFS_FLASH_FS)
+ return true;
+#endif
+
+#if defined(MBFS_SD_FS) && (defined(ESP32) || defined(ESP8266) || defined(MB_ARDUINO_PICO))
+ return true;
+#endif
+
+ return false;
+ }
+
+private:
+ uint16_t flash_filename_crc = 0;
+ uint16_t sd_filename_crc = 0;
+ MB_String flash_file, sd_file;
+ mb_fs_open_mode flash_open_mode = mb_fs_open_mode_undefined;
+ mb_fs_open_mode sd_open_mode = mb_fs_open_mode_undefined;
+ bool flash_opened = false;
+ bool sd_opened = false;
+ bool sd_rdy = false;
+ bool flash_rdy = false;
+ uint16_t loopCount = 0;
+
+#if defined(MBFS_FLASH_FS)
+ fs::File mb_flashFs;
+#endif
+#if defined(MBFS_SD_FS)
+ MBFS_SD_FILE mb_sdFs;
+#endif
+
+ int openFile(const MB_String &filename, mb_fs_mem_storage_type type, mb_fs_open_mode mode)
+ {
+
+#if defined(MBFS_FLASH_FS)
+ if (type == mbfs_flash)
+ return openFlashFile(filename, mode);
+#endif
+#if defined(MBFS_SD_FS)
+ if (type == mbfs_sd)
+ return openSDFile(filename, mode);
+#endif
+ return MB_FS_ERROR_FILE_IO_ERROR;
+ }
+
+ int openSDFile(const MB_String &filename, mb_fs_open_mode mode)
+ {
+ int ret = MB_FS_ERROR_FILE_IO_ERROR;
+
+#if defined(MBFS_SD_FS)
+
+ if (mode == mb_fs_open_mode_read || mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
+ {
+ uint16_t crc = calCRC(filename.c_str());
+
+ if (mode == sd_open_mode && flash_filename_crc == crc && sd_opened) // same sd file opened, leave it
+ return MB_FS_ERROR_FILE_STILL_OPENED;
+
+ if (sd_opened)
+ close(mbfs_sd); // sd file opened, close it
+
+ flash_filename_crc = crc;
+ }
+
+#if defined(MBFS_ESP32_SDFAT_ENABLED) || defined(MBFS_SDFAT_ENABLED)
+
+ if (mode == mb_fs_open_mode_read)
+ {
+ if (mb_sdFs.open(filename.c_str(), O_RDONLY))
+ {
+ sd_file = filename;
+ sd_opened = true;
+ sd_open_mode = mode;
+ ret = mb_sdFs.size();
+ }
+ }
+ else if (mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
+ {
+ if (mode == mb_fs_open_mode_write)
+ remove(filename, mb_fs_mem_storage_type_sd);
+
+ createDirs(filename, mb_fs_mem_storage_type_sd);
+ if (mb_sdFs.open(filename.c_str(), O_RDWR | O_CREAT | O_APPEND))
+ {
+ sd_file = filename;
+ sd_opened = true;
+ sd_open_mode = mode;
+ ret = 0;
+ }
+ }
+
+#else
+
+ if (mode == mb_fs_open_mode_read)
+ {
+#if defined(ESP32) || defined(ESP8266)
+ mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_READ);
+#else
+ mb_sdFs = MBFS_SD_FS.open(filename.c_str(), "r");
+#endif
+ if (mb_sdFs)
+ {
+ sd_file = filename;
+ sd_opened = true;
+ sd_open_mode = mode;
+ ret = mb_sdFs.size();
+ }
+ }
+ else if (mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
+ {
+ if (mode == mb_fs_open_mode_write)
+ remove(filename, mb_fs_mem_storage_type_sd);
+
+ createDirs(filename, mb_fs_mem_storage_type_sd);
+#if defined(ESP32)
+ if (mode == mb_fs_open_mode_write)
+ mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_WRITE);
+ else
+ mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_APPEND);
+#elif defined(ESP8266)
+ mb_sdFs = MBFS_SD_FS.open(filename.c_str(), FILE_WRITE);
+#else
+ if (mode == mb_fs_open_mode_write)
+ mb_sdFs = MBFS_SD_FS.open(filename.c_str(), "w");
+ else
+ mb_sdFs = MBFS_SD_FS.open(filename.c_str(), "a");
+#endif
+
+ if (mb_sdFs)
+ {
+ sd_file = filename;
+ sd_opened = true;
+ sd_open_mode = mode;
+ ret = 0;
+ }
+ }
+#endif
+
+#endif
+ return ret;
+ }
+
+ int openFlashFile(const MB_String &filename, mb_fs_open_mode mode)
+ {
+ int ret = MB_FS_ERROR_FILE_IO_ERROR;
+
+#if defined(MBFS_FLASH_FS)
+
+ if (mode == mb_fs_open_mode_read || mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
+ {
+ uint16_t crc = calCRC(filename.c_str());
+ if (mode == flash_open_mode && sd_filename_crc == crc && flash_opened) // same flash file opened, leave it
+ return MB_FS_ERROR_FILE_STILL_OPENED;
+
+ if (flash_opened)
+ close(mbfs_flash); // flash file opened, close it
+
+ sd_filename_crc = crc;
+ }
+
+ if (mode == mb_fs_open_mode_read)
+ {
+ mb_flashFs = MBFS_FLASH_FS.open(filename.c_str(), "r");
+ if (mb_flashFs)
+ {
+ flash_file = filename;
+ flash_opened = true;
+ flash_open_mode = mode;
+ ret = mb_flashFs.size();
+ }
+ }
+ else if (mode == mb_fs_open_mode_write || mode == mb_fs_open_mode_append)
+ {
+ if (mode == mb_fs_open_mode_write)
+ remove(filename, mb_fs_mem_storage_type_flash);
+
+ createDirs(filename, mb_fs_mem_storage_type_flash);
+ if (mode == mb_fs_open_mode_write)
+ mb_flashFs = MBFS_FLASH_FS.open(filename.c_str(), "w");
+ else
+ mb_flashFs = MBFS_FLASH_FS.open(filename.c_str(), "a");
+
+ if (mb_flashFs)
+ {
+ flash_file = filename;
+ flash_opened = true;
+ flash_open_mode = mode;
+ ret = 0;
+ }
+ }
+
+#endif
+ return ret;
+ }
+};
+
+#endif
+#endif
\ No newline at end of file
diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp b/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp
index ea288d547..c5cdedc3f 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp
@@ -89,10 +89,12 @@ void WiFiClass32::scrubDNS(void) {
const IPAddress ip_dns = IPAddress(dns_getserver(i));
// Step 1. save valid values from DNS
if (!ip_addr_isany_val((const ip_addr_t &)ip_dns)) {
- if (ip_dns.isV4() && has_v4) {
- dns_save4[i] = (ip_addr_t) ip_dns; // dns entry is populated, save it in v4 slot
- } else if (ip_dns.isV6() && has_v6) {
- dns_save6[i] = (ip_addr_t) ip_dns; // dns entry is populated, save it in v6 slot
+ if (ip_dns.type() == IPv4 && has_v4) {
+ ip_dns.to_ip_addr_t(&dns_save4[i]);
+ // dns_save4[i] = (ip_addr_t) ip_dns; // dns entry is populated, save it in v4 slot
+ } else if (has_v6) {
+ ip_dns.to_ip_addr_t(&dns_save6[i]);
+ // dns_save6[i] = (ip_addr_t) ip_dns; // dns entry is populated, save it in v6 slot
}
}
@@ -213,7 +215,7 @@ static void wifi32_dns_found_callback(const char *name, const ip_addr_t *ipaddr,
}
// We need this helper method to access protected methods from WiFiGeneric
void WiFiClass32::dnsDone(void) {
- setStatusBits(WIFI_DNS_DONE_BIT);
+ setStatusBits(NET_DNS_DONE_BIT);
}
/**
@@ -231,7 +233,7 @@ int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult, int32_t t
scrubDNS(); // internal calls to reconnect can zero the DNS servers, save DNS for future use
ip_addr_counter++; // increase counter, from now ignore previous responses
- clearStatusBits(WIFI_DNS_IDLE_BIT | WIFI_DNS_DONE_BIT);
+ clearStatusBits(NET_DNS_IDLE_BIT | NET_DNS_DONE_BIT);
uint8_t v4v6priority = LWIP_DNS_ADDRTYPE_IPV4;
#ifdef USE_IPV6
v4v6priority = WifiDNSGetIPv6Priority() ? LWIP_DNS_ADDRTYPE_IPV6_IPV4 : LWIP_DNS_ADDRTYPE_IPV4_IPV6;
@@ -240,18 +242,18 @@ int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult, int32_t t
// Serial.printf("DNS: dns_gethostbyname_addrtype errg=%i counter=%i\n", err, ip_addr_counter);
if(err == ERR_OK && !ip_addr_isany_val(dns_ipaddr)) {
#ifdef USE_IPV6
- aResult = dns_ipaddr;
+ aResult.from_ip_addr_t(&dns_ipaddr);
#else // USE_IPV6
aResult = ip_addr_get_ip4_u32(&dns_ipaddr);
#endif // USE_IPV6
} else if(err == ERR_INPROGRESS) {
- waitStatusBits(WIFI_DNS_DONE_BIT, timer_ms); //real internal timeout in lwip library is 14[s]
- clearStatusBits(WIFI_DNS_DONE_BIT);
+ waitStatusBits(NET_DNS_DONE_BIT, timer_ms); //real internal timeout in lwip library is 14[s]
+ clearStatusBits(NET_DNS_DONE_BIT);
}
if (!ip_addr_isany_val(dns_ipaddr)) {
#ifdef USE_IPV6
- aResult = dns_ipaddr;
+ aResult.from_ip_addr_t(&dns_ipaddr);
#else // USE_IPV6
aResult = ip_addr_get_ip4_u32(&dns_ipaddr);
#endif // USE_IPV6
diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.cpp b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.cpp
index d31aaed2b..dc2908eec 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.cpp
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.cpp
@@ -342,6 +342,25 @@ uint8_t ledcReadResolution(uint8_t chan) {
return res;
}
+int32_t ledcReadDutyResolution(uint8_t pin) {
+ int32_t chan = analogGetChannel2(pin);
+ if (chan >= 0) {
+ return (1 << ledcReadResolution(chan));
+ }
+ return -1;
+}
+
+// Version of ledcRead that works for both Core2 and Core3
+// Return -1 if pin is not configured as PWM
+int32_t ledcRead2(uint8_t pin) {
+ int32_t chan = analogGetChannel2(pin);
+ if (chan >= 0) {
+ uint8_t group=(chan/8), channel=(chan%8);
+ return ledc_get_duty((ledc_mode_t)group, (ledc_channel_t)channel);
+ }
+ return -1;
+}
+
// void analogWrite(uint8_t pin, int val);
extern "C" void __wrap__Z11analogWritehi(uint8_t pin, int val) {
analogWritePhase(pin, val, 0); // if unspecified, use phase = 0
diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
index 8cae8d499..659e34b55 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
@@ -98,6 +98,18 @@ void analogWrite(uint8_t pin, int val);
// Extended version that also allows to change phase
extern void analogWritePhase(uint8_t pin, uint32_t duty, uint32_t phase = 0);
+//
+// ledcReadDutyResolution - read the resolution
+//
+// return -1 if pin is not assigned to ledc
+int32_t ledcReadDutyResolution(uint8_t pin);
+
+//
+// ledcRead2 - read the value of PWM
+//
+// return -1 if pin is not assigned to ledc
+int32_t ledcRead2(uint8_t pin);
+
// return the channel assigned to a GPIO, or -1 if none
extern int32_t analogGetChannel2(uint32_t pin);
diff --git a/lib/libesp32/berry/CMakeLists.txt b/lib/libesp32/berry/CMakeLists.txt
new file mode 100644
index 000000000..aba79bf1b
--- /dev/null
+++ b/lib/libesp32/berry/CMakeLists.txt
@@ -0,0 +1,38 @@
+cmake_minimum_required(VERSION 3.10)
+
+project(Berry C)
+set(CMAKE_C_STANDARD 99)
+
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+
+set(BERRY_COC ${CMAKE_CURRENT_SOURCE_DIR}/tools/coc/coc)
+set(BERRY_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
+set(BERRY_CONFIG_DIR default CACHE FILEPATH "The directory of berry_conf.h.")
+set(BERRY_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/${BERRY_CONFIG_DIR}/berry_conf.h)
+set(BERRY_GENERATE ${CMAKE_CURRENT_SOURCE_DIR}/generate)
+
+if (${CMAKE_HOST_WIN32})
+ set(BERRY_COC python ${BERRY_COC})
+endif ()
+
+file(MAKE_DIRECTORY generate)
+
+# berry library
+file(GLOB SOURCES src/*.c)
+add_library(libberry ${SOURCES})
+target_include_directories(libberry PUBLIC src ${BERRY_CONFIG_DIR})
+
+add_custom_target(berry-coc
+ COMMAND ${BERRY_COC} -o ${BERRY_GENERATE} ${BERRY_SOURCE_DIR} -c ${BERRY_CONFIG}
+ DEPENDS ${SOURCES} COMMAND_EXPAND_LISTS
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT "Generate coc objects"
+)
+add_dependencies(libberry berry-coc)
+
+# berry default exe
+file(GLOB SOURCES_EXE default/*.c)
+add_executable(berry ${SOURCES_EXE})
+target_link_libraries(berry PUBLIC libberry)
diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c
index 0333db5ea..a4e7c7a33 100644
--- a/lib/libesp32/berry/default/be_modtab.c
+++ b/lib/libesp32/berry/default/be_modtab.c
@@ -146,7 +146,10 @@ BERRY_LOCAL const bntvmodule_t* const be_module_table[] = {
#ifdef USE_UNISHOX_COMPRESSION
&be_native_module(unishox),
#endif // USE_UNISHOX_COMPRESSION
+
+#ifdef USE_WS2812
&be_native_module(animate),
+#endif // USE_WS2812
#ifdef USE_LVGL
&be_native_module(lv),
@@ -206,10 +209,7 @@ be_extern_native_class(AXP192);
be_extern_native_class(AXP202);
be_extern_native_class(OneWire);
be_extern_native_class(Leds_ntv);
-be_extern_native_class(Leds_frame);
be_extern_native_class(Leds);
-be_extern_native_class(Leds_animator);
-be_extern_native_class(Leds_pulse);
be_extern_native_class(AudioGenerator);
be_extern_native_class(AudioFileSource);
be_extern_native_class(AudioOutputI2S);
@@ -278,9 +278,6 @@ BERRY_LOCAL bclass_array be_class_table = {
#ifdef USE_WS2812
&be_native_class(Leds_ntv),
&be_native_class(Leds),
- &be_native_class(Leds_frame),
- &be_native_class(Leds_animator),
- &be_native_class(Leds_pulse),
#endif // USE_WS2812
#ifdef USE_ENERGY_SENSOR
&be_native_class(energy_struct),
diff --git a/lib/libesp32/berry/default/berry.c b/lib/libesp32/berry/default/berry.c
index 8a63d8ea8..4ddf7b6f0 100644
--- a/lib/libesp32/berry/default/berry.c
+++ b/lib/libesp32/berry/default/berry.c
@@ -59,6 +59,13 @@
FULL_VERSION " (build in " __DATE__ ", " __TIME__ ")\n" \
"[" COMPILER "] on " OS_NAME " (default)\n" \
+#if defined(_WIN32)
+#define PATH_SEPARATOR ";"
+#else
+#define PATH_SEPARATOR ":"
+#endif
+
+
/* command help information */
#define help_information \
"Usage: berry [options] [script [args]]\n" \
@@ -66,6 +73,7 @@
" -i enter interactive mode after executing 'file'\n" \
" -l all variables in 'file' are parsed as local\n" \
" -e load 'script' source string and execute\n" \
+ " -m custom module search path(s) separated by '" PATH_SEPARATOR "'\n"\
" -c compile script 'file' to bytecode file\n" \
" -o save bytecode to 'file'\n" \
" -g force named globals in VM\n" \
@@ -87,6 +95,7 @@
#define arg_g (1 << 7)
#define arg_s (1 << 8)
#define arg_err (1 << 9)
+#define arg_m (1 << 10)
struct arg_opts {
int idx;
@@ -95,6 +104,7 @@ struct arg_opts {
const char *errarg;
const char *src;
const char *dst;
+ const char *modulepath;
};
/* check if the character is a letter */
@@ -257,6 +267,10 @@ static int parse_arg(struct arg_opts *opt, int argc, char *argv[])
case 'e': args |= arg_e; break;
case 'g': args |= arg_g; break;
case 's': args |= arg_s; break;
+ case 'm':
+ args |= arg_m;
+ opt->modulepath = opt->optarg;
+ break;
case '?': return args | arg_err;
case 'c':
args |= arg_c;
@@ -286,12 +300,47 @@ static void push_args(bvm *vm, int argc, char *argv[])
be_pop(vm, 1);
}
+#if defined(_WIN32)
+#define BERRY_ROOT "\\Windows\\system32"
+static const char *module_paths[] = {
+ BERRY_ROOT "\\berry\\packages",
+};
+#else
+#define BERRY_ROOT "/usr/local"
+static const char *module_paths[] = {
+ BERRY_ROOT "/lib/berry/packages",
+};
+#endif
+
+static void berry_paths(bvm * vm)
+{
+ size_t i;
+ for (i = 0; i < array_count(module_paths); ++i) {
+ be_module_path_set(vm, module_paths[i]);
+ }
+}
+
+static void berry_custom_paths(bvm *vm, const char *modulepath)
+{
+ const char delim[] = PATH_SEPARATOR;
+ char *copy = malloc(strlen(modulepath) + 1);
+ strcpy(copy, modulepath);
+ char *ptr = strtok(copy, delim);
+
+ while (ptr != NULL) {
+ be_module_path_set(vm, ptr);
+ ptr = strtok(NULL, delim);
+ }
+ free(copy);
+}
+
/*
* command format: berry [options] [script [args]]
* command options:
* -i: enter interactive mode after executing 'script'
* -b: load code from bytecode file
* -e: load 'script' source and execute
+ * -m: specify custom module search path(s)
* command format: berry options
* command options:
* -v: show version information
@@ -305,7 +354,7 @@ static int analysis_args(bvm *vm, int argc, char *argv[])
{
int args = 0;
struct arg_opts opt = { 0 };
- opt.pattern = "vhilegsc?o?";
+ opt.pattern = "m?vhilegsc?o?";
args = parse_arg(&opt, argc, argv);
argc -= opt.idx;
argv += opt.idx;
@@ -315,6 +364,16 @@ static int analysis_args(bvm *vm, int argc, char *argv[])
be_pop(vm, 1);
return -1;
}
+
+ if (args & arg_m) {
+ berry_custom_paths(vm, opt.modulepath);
+ args &= ~arg_m;
+ }
+ else {
+ // use default module paths
+ berry_paths(vm);
+ }
+
if (args & arg_g) {
comp_set_named_gbl(vm); /* forced named global in VM code */
args &= ~arg_g; /* clear the flag for this option not to interfere with other options */
@@ -339,31 +398,11 @@ static int analysis_args(bvm *vm, int argc, char *argv[])
return load_script(vm, argc, argv, args);
}
-#if defined(_WIN32)
-#define BERRY_ROOT "\\Windows\\system32"
-static const char *module_paths[] = {
- BERRY_ROOT "\\berry\\packages",
-};
-#else
-#define BERRY_ROOT "/usr/local"
-static const char *module_paths[] = {
- BERRY_ROOT "/lib/berry/packages",
-};
-#endif
-
-static void berry_paths(bvm * vm)
-{
- size_t i;
- for (i = 0; i < array_count(module_paths); ++i) {
- be_module_path_set(vm, module_paths[i]);
- }
-}
int main(int argc, char *argv[])
{
int res;
bvm *vm = be_vm_new(); /* create a virtual machine instance */
- berry_paths(vm);
res = analysis_args(vm, argc, argv);
be_vm_delete(vm); /* free all objects and vm */
return res;
diff --git a/lib/libesp32/berry/gen.sh b/lib/libesp32/berry/gen.sh
index 2df6ad838..a0edbd2df 100755
--- a/lib/libesp32/berry/gen.sh
+++ b/lib/libesp32/berry/gen.sh
@@ -5,4 +5,4 @@
# Included in the Platformio build process with `pio-tools/gen-berry-structures.py
#
rm -Rf ./generate/be_*.h
-python3 tools/coc/coc -o generate src default ../berry_tasmota/src ../berry_mapping/src ../berry_int64/src ../../libesp32_lvgl/lv_binding_berry/src ../berry_matter/src/solidify ../berry_matter/src ../../libesp32_lvgl/lv_binding_berry/src/solidify ../../libesp32_lvgl/lv_binding_berry/generate -c default/berry_conf.h
+python3 tools/coc/coc -o generate src default ../berry_tasmota/src ../berry_mapping/src ../berry_int64/src ../../libesp32_lvgl/lv_binding_berry/src ../berry_matter/src/solidify ../berry_matter/src ../berry_animate/src/solidify ../berry_animate/src ../../libesp32_lvgl/lv_binding_berry/src/solidify ../../libesp32_lvgl/lv_binding_berry/generate -c default/berry_conf.h
diff --git a/lib/libesp32/berry/src/be_api.c b/lib/libesp32/berry/src/be_api.c
index ba5b915d2..6ccb65c5a 100644
--- a/lib/libesp32/berry/src/be_api.c
+++ b/lib/libesp32/berry/src/be_api.c
@@ -643,6 +643,10 @@ BERRY_API bbool be_setmember(bvm *vm, int index, const char *k)
bstring *key = be_newstr(vm, k);
bmodule *mod = var_toobj(o);
return be_module_setmember(vm, mod, key, v);
+ } else if (var_isclass(o)) {
+ bstring *key = be_newstr(vm, k);
+ bclass *cl = var_toobj(o);
+ return be_class_setmember(vm, cl, key, v);
}
return bfalse;
}
@@ -661,6 +665,7 @@ BERRY_API bbool be_copy(bvm *vm, int index)
}
/* `onlyins` limits the search to instance, and discards module. Makes sure getmethod does not return anything for module. */
+/* may return BE_NONE */
static int ins_member(bvm *vm, int index, const char *k, bbool onlyins)
{
int type = BE_NIL;
@@ -677,12 +682,12 @@ static int ins_member(bvm *vm, int index, const char *k, bbool onlyins)
bmodule *module = var_toobj(o);
type = be_module_attr(vm, module, be_newstr(vm, k), top);
}
- return type == BE_NONE ? BE_NIL : type;
+ return type;
}
BERRY_API bbool be_getmember(bvm *vm, int index, const char *k)
{
- return ins_member(vm, index, k, bfalse) != BE_NIL;
+ return ins_member(vm, index, k, bfalse) != BE_NONE;
}
BERRY_API bbool be_getmethod(bvm *vm, int index, const char *k)
@@ -727,10 +732,13 @@ BERRY_API bbool be_getindex(bvm *vm, int index)
static bvalue* list_setindex(blist *list, bvalue *key)
{
int idx = var_toidx(key);
- if (idx < be_list_count(list)) {
- return be_list_at(list, idx);
+ if (idx < 0) {
+ idx = list->count + idx;
}
- return NULL;
+ if (idx < 0 || idx >= list->count) {
+ return NULL;
+ }
+ return be_list_at(list, idx);
}
BERRY_API bbool be_setindex(bvm *vm, int index)
diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c
index c26a45df2..1789dca94 100644
--- a/lib/libesp32/berry/src/be_byteslib.c
+++ b/lib/libesp32/berry/src/be_byteslib.c
@@ -309,6 +309,17 @@ static size_t buf_add_buf(buf_impl* attr, buf_impl* attr2)
return attr->len;
}
+static size_t buf_add_raw(buf_impl* attr, const void* buf_raw, int32_t len)
+{
+ uint8_t *buf = (uint8_t*) buf_raw;
+ if ((len > 0) && (attr->len + len <= attr->size)) {
+ for (int32_t i = 0; i < len; i++) {
+ attr->bufptr[attr->len++] = buf[i];
+ }
+ }
+ return attr->len;
+}
+
static uint8_t buf_get1(buf_impl* attr, int offset)
{
if ((offset >= 0) && (offset < attr->len)) {
@@ -991,6 +1002,32 @@ static int m_setfloat(bvm *vm)
be_return_nil(vm);
}
+/*
+ * Add a 32 bits float
+ * `addfloat(value:real or int [, big_endian:bool]) -> instance`
+ *
+ */
+static int m_addfloat(bvm *vm)
+{
+ int argc = be_top(vm);
+ buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */
+ check_ptr(vm, &attr);
+ if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
+ if (argc >=2 && (be_isint(vm, 2) || be_isreal(vm, 2))) {
+ float val_f = (float) be_toreal(vm, 2);
+ int32_t* val_i = (int32_t*) &val_f;
+ bbool be = bfalse;
+ if (argc >= 3) {
+ be = be_tobool(vm, 3);
+ }
+ if (be) { buf_add4_be(&attr, *val_i); } else { buf_add4_le(&attr, *val_i); }
+ be_pop(vm, argc - 1);
+ m_write_attributes(vm, 1, &attr); /* update attributes */
+ be_return(vm);
+ }
+ be_return_nil(vm);
+}
+
/*
* Fills a buffer with another buffer.
*
@@ -1211,17 +1248,26 @@ static int m_merge(bvm *vm)
int argc = be_top(vm);
buf_impl attr = m_read_attributes(vm, 1); /* no resize yet */
check_ptr(vm, &attr);
- if (argc >= 2 && be_isbytes(vm, 2)) {
- buf_impl attr2 = m_read_attributes(vm, 2);
- check_ptr(vm, &attr2);
+ if (argc >= 2 && (be_isbytes(vm, 2) || be_isstring(vm, 2))) {
+ const uint8_t * buf;
+ int32_t buf_len;
+ if (be_isbytes(vm, 2)) {
+ buf_impl attr2 = m_read_attributes(vm, 2);
+ check_ptr(vm, &attr2);
+ buf = attr2.bufptr;
+ buf_len = attr2.len;
+ } else {
+ buf = (const uint8_t *)be_tostring(vm, 2);
+ buf_len = strlen((const char *)buf);
+ }
/* allocate new object */
- bytes_new_object(vm, attr.len + attr2.len);
+ bytes_new_object(vm, attr.len + buf_len);
buf_impl attr3 = m_read_attributes(vm, -1);
check_ptr(vm, &attr3);
buf_add_buf(&attr3, &attr);
- buf_add_buf(&attr3, &attr2);
+ buf_add_raw(&attr3, buf, buf_len);
m_write_attributes(vm, -1, &attr3); /* update instance */
be_return(vm); /* return self */
@@ -1249,13 +1295,23 @@ static int m_connect(bvm *vm)
buf_impl attr = m_read_attributes(vm, 1);
check_ptr(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
- if (argc >= 2 && (be_isbytes(vm, 2) || be_isint(vm, 2))) {
+ if (argc >= 2 && (be_isbytes(vm, 2) || be_isint(vm, 2) || be_isstring(vm, 2))) {
if (be_isint(vm, 2)) {
bytes_resize(vm, &attr, attr.len + 1); /* resize */
buf_add1(&attr, be_toint(vm, 2));
m_write_attributes(vm, 1, &attr); /* update instance */
be_pushvalue(vm, 1);
be_return(vm); /* return self */
+ } else if (be_isstring(vm, 2)) {
+ const char *str = be_tostring(vm, 2);
+ size_t str_len = strlen(str);
+ if (str_len > 0) {
+ bytes_resize(vm, &attr, attr.len + str_len); /* resize */
+ buf_add_raw(&attr, str, str_len);
+ m_write_attributes(vm, 1, &attr); /* update instance */
+ }
+ be_pushvalue(vm, 1);
+ be_return(vm); /* return self */
} else {
buf_impl attr2 = m_read_attributes(vm, 2);
check_ptr(vm, &attr2);
@@ -1266,7 +1322,7 @@ static int m_connect(bvm *vm)
be_return(vm); /* return self */
}
}
- be_raise(vm, "type_error", "operand must be bytes or int");
+ be_raise(vm, "type_error", "operand must be bytes or int or string");
be_return_nil(vm); /* return self */
}
@@ -1731,6 +1787,7 @@ void be_load_byteslib(bvm *vm)
{ "setbytes", m_setbytes },
{ "getfloat", m_getfloat },
{ "setfloat", m_setfloat },
+ { "addfloat", m_addfloat },
{ "item", m_item },
{ "setitem", m_setitem },
{ "size", m_size },
@@ -1738,6 +1795,7 @@ void be_load_byteslib(bvm *vm)
{ "clear", m_clear },
{ "reverse", m_reverse },
{ "copy", m_copy },
+ { "append", m_connect },
{ "+", m_merge },
{ "..", m_connect },
{ "==", m_equal },
@@ -1775,6 +1833,7 @@ class be_class_bytes (scope: global, name: bytes) {
geti, func(m_geti)
getfloat, func(m_getfloat)
setfloat, func(m_setfloat)
+ addfloat, func(m_addfloat)
set, func(m_set)
seti, func(m_set)
setbytes, func(m_setbytes)
@@ -1785,6 +1844,7 @@ class be_class_bytes (scope: global, name: bytes) {
clear, func(m_clear)
reverse, func(m_reverse)
copy, func(m_copy)
+ append, func(m_connect)
+, func(m_merge)
.., func(m_connect)
==, func(m_equal)
diff --git a/lib/libesp32/berry/src/be_constobj.h b/lib/libesp32/berry/src/be_constobj.h
index 485bf85e6..34245050a 100644
--- a/lib/libesp32/berry/src/be_constobj.h
+++ b/lib/libesp32/berry/src/be_constobj.h
@@ -262,6 +262,13 @@ const bntvmodule_t be_native_module(_module) = { \
BE_STRING \
}
+/* variant for long strings that does not trigger strtab */
+#define be_nested_str_long(_name_) \
+ { \
+ { .s=((bstring*)&be_const_str_##_name_) }, \
+ BE_STRING \
+ }
+
#define be_nested_str_literal(_name_) \
{ \
{ .s=(be_nested_const_str(_name_, _hash, sizeof(_name_)-1 ))\
diff --git a/lib/libesp32/berry/src/be_debuglib.c b/lib/libesp32/berry/src/be_debuglib.c
index fac4bfb53..2e4ee9bf4 100644
--- a/lib/libesp32/berry/src/be_debuglib.c
+++ b/lib/libesp32/berry/src/be_debuglib.c
@@ -13,6 +13,7 @@
#include "be_debug.h"
#include "be_map.h"
#include "be_vm.h"
+#include "be_exec.h"
#include
#if BE_USE_DEBUG_MODULE
@@ -103,6 +104,26 @@ static int m_traceback(bvm *vm)
be_return_nil(vm);
}
+static int m_caller(bvm *vm)
+{
+ int depth = 1;
+ if (be_top(vm) >= 1 && be_isint(vm, 1)) {
+ depth = be_toint(vm, 1);
+ if (depth < 0) {
+ depth = -depth; /* take absolute value */
+ }
+ }
+ bcallframe *cf = (bcallframe*)be_stack_top(&vm->callstack) - depth;
+ bcallframe *base = be_stack_base(&vm->callstack);
+ if (cf >= base) {
+ bvalue *reg = be_incrtop(vm);
+ var_setval(reg, cf->func);
+ be_return(vm);
+ } else {
+ be_return_nil(vm);
+ }
+}
+
#if BE_USE_DEBUG_HOOK
static int m_sethook(bvm *vm)
{
@@ -236,6 +257,7 @@ be_native_module_attr_table(debug) {
be_native_module_function("varname", m_varname),
be_native_module_function("upvname", m_upvname)
#endif
+ be_native_module_function("caller", m_caller),
be_native_module_function("gcdebug", m_gcdebug)
};
@@ -252,6 +274,7 @@ module debug (scope: global, depend: BE_USE_DEBUG_MODULE) {
top, func(m_top)
varname, func(m_varname), BE_DEBUG_VAR_INFO
upvname, func(m_upvname), BE_DEBUG_VAR_INFO
+ caller, func(m_caller)
// individual counters
allocs, func(m_allocs)
frees, func(m_frees)
diff --git a/lib/libesp32/berry/src/be_introspectlib.c b/lib/libesp32/berry/src/be_introspectlib.c
index 4f98f2d94..ba54aad25 100644
--- a/lib/libesp32/berry/src/be_introspectlib.c
+++ b/lib/libesp32/berry/src/be_introspectlib.c
@@ -93,10 +93,23 @@ static int m_findmember(bvm *vm)
be_return_nil(vm);
}
+static int m_contains(bvm *vm)
+{
+ bbool contains = bfalse;
+ int top = be_top(vm);
+ if (top >= 2 && be_isstring(vm, 2) && (be_isinstance(vm, 1) || be_ismodule(vm, 1) || be_isclass(vm, 1))) {
+ if (be_getmember(vm, 1, be_tostring(vm, 2))) {
+ contains = btrue;
+ }
+ }
+ be_pushbool(vm, contains);
+ be_return(vm);
+}
+
static int m_setmember(bvm *vm)
{
int top = be_top(vm);
- if (top >= 3 && (be_isinstance(vm, 1) || be_ismodule(vm, 1)) && be_isstring(vm, 2)) {
+ if (top >= 3 && (be_isinstance(vm, 1) || be_ismodule(vm, 1) || be_isclass(vm, 1)) && be_isstring(vm, 2)) {
be_setmember(vm, 1, be_tostring(vm, 2));
be_return(vm);
}
@@ -108,7 +121,10 @@ static int m_toptr(bvm *vm)
int top = be_top(vm);
if (top >= 1) {
bvalue *v = be_indexof(vm, 1);
- if (var_basetype(v) >= BE_FUNCTION || var_type(v) == BE_COMPTR) {
+ if (var_type(v) == BE_STRING) {
+ be_pushcomptr(vm, be_tostring(vm, 1));
+ be_return(vm);
+ } else if (var_basetype(v) >= BE_FUNCTION || var_type(v) == BE_COMPTR) {
be_pushcomptr(vm, var_toobj(v));
be_return(vm);
} else if (var_type(v) == BE_INT) {
@@ -222,6 +238,7 @@ be_native_module_attr_table(introspect) {
be_native_module_function("get", m_findmember),
be_native_module_function("set", m_setmember),
+ be_native_module_function("contains", m_contains),
be_native_module_function("module", m_getmodule),
be_native_module_function("setmodule", m_setmodule),
@@ -242,6 +259,7 @@ module introspect (scope: global, depend: BE_USE_INTROSPECT_MODULE) {
get, func(m_findmember)
set, func(m_setmember)
+ contains, func(m_contains)
module, func(m_getmodule)
setmodule, func(m_setmodule)
diff --git a/lib/libesp32/berry/src/be_mem.c b/lib/libesp32/berry/src/be_mem.c
index 24b75ec18..9d20ca055 100644
--- a/lib/libesp32/berry/src/be_mem.c
+++ b/lib/libesp32/berry/src/be_mem.c
@@ -26,12 +26,43 @@
#define realloc BE_EXPLICIT_REALLOC
#endif
-static void* malloc_from_pool(bvm *vm, size_t size);
-static void free_from_pool(bvm *vm, void* ptr, size_t old_size);
-
#define POOL16_SIZE 16
#define POOL32_SIZE 32
+#ifdef _MSC_VER
+#include
+#pragma intrinsic(_BitScanForward)
+#endif
+
+#if defined(__GNUC__)
+#define popcount(v) __builtin_popcount(v)
+#define ffs(v) __builtin_ffs(v)
+#elif defined(_MSC_VER)
+#define popcount(v) __popcnt(v)
+
+static int ffs(unsigned x)
+{
+ unsigned long i;
+ return _BitScanForward(&i, x) ? i : 0;
+}
+#else
+/* https://github.com/hcs0/Hackers-Delight/blob/master/pop.c.txt - count number of 1-bits */
+static int popcount(uint32_t n)
+{
+ n = (n & 0x55555555u) + ((n >> 1) & 0x55555555u);
+ n = (n & 0x33333333u) + ((n >> 2) & 0x33333333u);
+ n = (n & 0x0f0f0f0fu) + ((n >> 4) & 0x0f0f0f0fu);
+ n = (n & 0x00ff00ffu) + ((n >> 8) & 0x00ff00ffu);
+ n = (n & 0x0000ffffu) + ((n >>16) & 0x0000ffffu);
+ return n;
+}
+
+#error "unsupport compiler for ffs()"
+#endif
+
+static void* malloc_from_pool(bvm *vm, size_t size);
+static void free_from_pool(bvm *vm, void* ptr, size_t old_size);
+
BERRY_API void* be_os_malloc(size_t size)
{
return malloc(size);
@@ -66,7 +97,7 @@ BERRY_API void* be_realloc(bvm *vm, void *ptr, size_t old_size, size_t new_size)
if (!ptr || (old_size == 0)) {
block = malloc_from_pool(vm, new_size);
}
-
+
/* Case 2: deallocate */
else if (new_size == 0) {
#if BE_USE_PERF_COUNTERS
@@ -176,11 +207,7 @@ static void* malloc_from_pool(bvm *vm, size_t size) {
/* look for an empty slot */
if (pool16->bitmap != 0x0000) {
/* there is a free slot */
-#ifdef __GNUC__
- int bit = __builtin_ffs(pool16->bitmap) - 1;
-#else
int bit = ffs(pool16->bitmap) - 1;
-#endif
if (bit >= 0) {
/* we found a free slot */
// bitClear(pool16->bitmap, bit);
@@ -208,11 +235,7 @@ static void* malloc_from_pool(bvm *vm, size_t size) {
/* look for an empty slot */
if (pool32->bitmap != 0x0000) {
/* there is a free slot */
-#ifdef __GNUC__
- int bit = __builtin_ffs(pool32->bitmap) - 1;
-#else
int bit = ffs(pool32->bitmap) - 1;
-#endif
if (bit >= 0) {
/* we found a free slot */
// bitClear(pool32->bitmap, bit);
@@ -327,24 +350,6 @@ BERRY_API void be_gc_free_memory_pools(bvm *vm) {
vm->gc.pool32 = NULL;
}
-/* https://github.com/hcs0/Hackers-Delight/blob/master/pop.c.txt - count number of 1-bits */
-static int pop0(uint32_t n) __attribute__((unused));
-static int pop0(uint32_t n) {
- n = (n & 0x55555555u) + ((n >> 1) & 0x55555555u);
- n = (n & 0x33333333u) + ((n >> 2) & 0x33333333u);
- n = (n & 0x0f0f0f0fu) + ((n >> 4) & 0x0f0f0f0fu);
- n = (n & 0x00ff00ffu) + ((n >> 8) & 0x00ff00ffu);
- n = (n & 0x0000ffffu) + ((n >>16) & 0x0000ffffu);
- return n;
-}
-
-#ifdef __GNUC__
- #define count_bits_1(v) __builtin_popcount(v)
-#else
- #define count_bits_1(v) pop0(v)
-#endif
-
-
BERRY_API void be_gc_memory_pools_info(bvm *vm, size_t* slots_used, size_t* slots_allocated) {
size_t used = 0;
size_t allocated = 0;
@@ -352,14 +357,14 @@ BERRY_API void be_gc_memory_pools_info(bvm *vm, size_t* slots_used, size_t* slot
gc16_t* pool16 = vm->gc.pool16;
while (pool16) {
allocated += POOL16_SLOTS;
- used += POOL16_SLOTS - count_bits_1(pool16->bitmap);
+ used += POOL16_SLOTS - popcount(pool16->bitmap);
pool16 = pool16->next;
}
gc32_t* pool32 = vm->gc.pool32;
while (pool32) {
allocated += POOL32_SLOTS;
- used += POOL32_SLOTS - count_bits_1(pool32->bitmap);
+ used += POOL32_SLOTS - popcount(pool32->bitmap);
pool32 = pool32->next;
}
if (slots_used) { *slots_used = used; }
diff --git a/lib/libesp32/berry/src/be_parser.c b/lib/libesp32/berry/src/be_parser.c
index 3afedf41c..be001bf97 100644
--- a/lib/libesp32/berry/src/be_parser.c
+++ b/lib/libesp32/berry/src/be_parser.c
@@ -1571,15 +1571,11 @@ static void class_stmt(bparser *parser)
begin_block(parser->finfo, &binfo, 0);
bstring *class_str = parser_newstr(parser, "_class"); /* we always define `_class` local variable */
- if (e.type == ETLOCAL) {
- bexpdesc e1; /* if inline class, we add a second local variable for _class */
- init_exp(&e1, ETLOCAL, 0);
- e1.v.idx = new_localvar(parser, class_str);
- be_code_setvar(parser->finfo, &e1, &e, 1);
- } else { /* if global class, we just reuse the newly created class in the register */
- init_exp(&e, ETLOCAL, 0);
- e.v.idx = new_localvar(parser, class_str);
- }
+ bexpdesc e1; /* if inline class, we add a second local variable for _class */
+ init_exp(&e1, ETLOCAL, 0);
+ e1.v.idx = new_localvar(parser, class_str);
+ be_code_setvar(parser->finfo, &e1, &e, 1);
+
begin_varinfo(parser, class_str);
class_block(parser, c, &e);
diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c
index b0164ddba..0cafe2a73 100644
--- a/lib/libesp32/berry/src/be_solidifylib.c
+++ b/lib/libesp32/berry/src/be_solidifylib.c
@@ -16,6 +16,7 @@
#include "be_vm.h"
#include "be_decoder.h"
#include "be_sys.h"
+#include "be_mem.h"
#include
#include
#include
@@ -45,6 +46,16 @@ extern const bclass be_class_map;
} \
} while (0)
+/* minimal version without formatting and without size limit */
+#define lognofmt(__s) \
+ do { \
+ if (fout) { \
+ be_fwrite(fout, __s, strlen(__s)); \
+ } else { \
+ be_writestring(__s); \
+ } \
+ } while (0)
+
/********************************************************************\
* Encode string to identifiers
*
@@ -200,17 +211,29 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, bvalue * value, const
{
const char * str = str(var_tostr(value));
size_t len = strlen(str);
- if (len >= 255) {
- be_raise(vm, "internal_error", "Strings greater than 255 chars not supported yet");
- }
size_t id_len = toidentifier_length(str);
- char id_buf[id_len];
+ char id_buf_stack[64];
+ char *id_buf = id_buf_stack;
+ if (id_len >= 64) {
+ id_buf = be_os_malloc(id_len);
+ if (!id_buf) {
+ be_raise(vm, "memory_error", "could not allocated buffer");
+ }
+ }
toidentifier(id_buf, str);
- if (!str_literal) {
+ if (len >= 255) {
+ /* decompose to avoid any size limit */
+ lognofmt("be_nested_str_long(");
+ lognofmt(id_buf);
+ lognofmt(")");
+ } else if (!str_literal) {
logfmt("be_nested_str(%s)", id_buf);
} else {
logfmt("be_nested_str_weak(%s)", id_buf);
}
+ if (id_buf != id_buf_stack) {
+ be_os_free(id_buf);
+ }
}
break;
case BE_CLOSURE:
diff --git a/lib/libesp32/berry/src/be_string.c b/lib/libesp32/berry/src/be_string.c
index c6cb093c2..806e37ff0 100644
--- a/lib/libesp32/berry/src/be_string.c
+++ b/lib/libesp32/berry/src/be_string.c
@@ -27,6 +27,17 @@
.s = _s \
}
+#define be_define_const_str_long(_name, _s, _len) \
+ BERRY_LOCAL const bclstring be_const_str_##_name = { \
+ .next = (bgcobject *)NULL, \
+ .type = BE_STRING, \
+ .marked = GC_CONST, \
+ .extra = 0, \
+ .slen = 255, \
+ .llen = _len, \
+ .s = _s \
+ }
+
/* const string table */
struct bconststrtab {
const bstring* const *table;
@@ -279,7 +290,7 @@ void be_gcstrtab(bvm *vm)
uint32_t be_strhash(const bstring *s)
{
- if (gc_isconst(s)) {
+ if (gc_isconst(s) && (s->slen != 255)) {
bcstring* cs = cast(bcstring*, s);
if (cs->hash) { /* if hash is null we need to compute it */
return cs->hash;
@@ -298,12 +309,12 @@ uint32_t be_strhash(const bstring *s)
const char* be_str2cstr(const bstring *s)
{
be_assert(cast_str(s) != NULL);
- if (gc_isconst(s)) {
- return cstr(s);
- }
if (s->slen == 255) {
return lstr(s);
}
+ if (gc_isconst(s)) {
+ return cstr(s);
+ }
return sstr(s);
}
diff --git a/lib/libesp32/berry/src/be_string.h b/lib/libesp32/berry/src/be_string.h
index 51b3fd016..f39ae6c4f 100644
--- a/lib/libesp32/berry/src/be_string.h
+++ b/lib/libesp32/berry/src/be_string.h
@@ -26,6 +26,12 @@ typedef struct {
/* char s[]; */
} blstring;
+typedef struct { /* const long string */
+ bstring_header;
+ int llen;
+ char s[];
+} bclstring;
+
typedef struct {
bstring_header;
uint32_t hash;
diff --git a/lib/libesp32/berry/tests/bytes.be b/lib/libesp32/berry/tests/bytes.be
index 6a481d62c..c4d4af3f6 100644
--- a/lib/libesp32/berry/tests/bytes.be
+++ b/lib/libesp32/berry/tests/bytes.be
@@ -103,13 +103,40 @@ assert(str(b) == "bytes('1122334455')")
b = b2 + b1
assert(str(b) == "bytes('3344551122')")
-#- .. -#
+#- + for string -#
+b1 = bytes("AA")
+b = b1 + ''
+assert(str(b) == "bytes('AA')")
+b = b1 + '01'
+assert(str(b) == "bytes('AA3031')")
+
+#- .. and append as synonym-#
b1 = bytes("1122")
b2 = bytes("334455")
b = b1..b2
assert(str(b1) == "bytes('1122334455')")
assert(str(b2) == "bytes('334455')")
assert(str(b) == "bytes('1122334455')")
+#
+b1 = bytes("1122")
+b2 = bytes("334455")
+b = b1.append(b2)
+assert(str(b1) == "bytes('1122334455')")
+assert(str(b2) == "bytes('334455')")
+assert(str(b) == "bytes('1122334455')")
+
+#- .. with string -#
+b1 = bytes("AA")
+b1 .. ''
+assert(str(b1) == "bytes('AA')")
+b1 .. '01'
+assert(str(b1) == "bytes('AA3031')")
+#
+b1 = bytes("AA")
+b1.append('')
+assert(str(b1) == "bytes('AA')")
+b1.append('01')
+assert(str(b1) == "bytes('AA3031')")
#- item -#
b = bytes("334455")
@@ -257,3 +284,8 @@ assert(!bytes())
assert(bool(bytes("00")) == true)
assert(bytes("01").tobool() == true)
assert(bytes("02"))
+
+# retrieving 3-bytes little/big endian
+a = bytes("01020304")
+assert(a.get(1, 3) == 0x040302)
+assert(a.get(1, -3) == 0x020304)
diff --git a/lib/libesp32/berry/tests/class_static.be b/lib/libesp32/berry/tests/class_static.be
index dbe8c222e..b56c5d282 100644
--- a/lib/libesp32/berry/tests/class_static.be
+++ b/lib/libesp32/berry/tests/class_static.be
@@ -155,3 +155,12 @@ assert(A.a == 1)
assert(A.b == A)
assert(A.c == [1, A])
assert(A.f(1) == A)
+
+# bug when superclass is a member
+# the following would break with:
+#
+# attribute_error: class 'B' cannot assign to static attribute 'aa'
+# stack traceback:
+# stdin:1: in function `main`
+class B end m = module('m') m.B = B
+class A : m.B static aa = 1 end
diff --git a/lib/libesp32/berry/tests/debug.be b/lib/libesp32/berry/tests/debug.be
index 9e732f6c3..88b559d81 100644
--- a/lib/libesp32/berry/tests/debug.be
+++ b/lib/libesp32/berry/tests/debug.be
@@ -1,4 +1,29 @@
import debug
class A end
-debug.attrdump(A) #- should not crash -#
\ No newline at end of file
+debug.attrdump(A) #- should not crash -#
+
+# debug.caller()
+def caller_name_chain()
+ import debug
+ import introspect
+ var i = 1
+ var ret = []
+ var caller = debug.caller(i)
+ while caller
+ ret.push(introspect.name(caller))
+ i += 1
+ caller = debug.caller(i)
+ end
+ return ret
+end
+var chain = caller_name_chain()
+assert(chain[0] == 'caller_name_chain')
+
+def guess_my_name__()
+ return caller_name_chain()
+end
+chain = guess_my_name__()
+print(chain)
+assert(chain[0] == 'caller_name_chain')
+assert(chain[1] == 'guess_my_name__')
diff --git a/lib/libesp32/berry/tests/introspect.be b/lib/libesp32/berry/tests/introspect.be
index c93033982..1d9c7af29 100644
--- a/lib/libesp32/berry/tests/introspect.be
+++ b/lib/libesp32/berry/tests/introspect.be
@@ -42,3 +42,25 @@ assert(introspect.name(A) == 'A')
assert(introspect.name(A.a) == 'a')
assert(introspect.name(A.b) == 'b')
assert(introspect.name(A.c) == nil)
+
+# test introspect get and set
+# class and instance
+class A
+ static var a
+ var b
+end
+
+a = A()
+introspect.set(A, "a", 10)
+assert(A.a == 10)
+assert(introspect.get(A, "a") == 10)
+
+introspect.set(a, "b", 20)
+assert(a.b == 20)
+assert(introspect.get(a, "b") == 20)
+
+# module
+m = module('m')
+introspect.set(m, 'c', 30)
+assert(m.c == 30)
+assert(introspect.get(m, 'c') == 30)
diff --git a/lib/libesp32/berry/tools/coc/block_builder.py b/lib/libesp32/berry/tools/coc/block_builder.py
index 6535fd40b..a65ddb720 100644
--- a/lib/libesp32/berry/tools/coc/block_builder.py
+++ b/lib/libesp32/berry/tools/coc/block_builder.py
@@ -23,6 +23,7 @@ class block_builder:
self.block = block()
self.strtab = []
self.strtab_weak = []
+ self.strtab_long = []
self.block.name = obj.name
if depend(obj, macro):
diff --git a/lib/libesp32/berry/tools/coc/coc b/lib/libesp32/berry/tools/coc/coc
index 1a12c01e6..b80d0ac08 100755
--- a/lib/libesp32/berry/tools/coc/coc
+++ b/lib/libesp32/berry/tools/coc/coc
@@ -19,6 +19,7 @@ class builder:
self.macro = None
self.strmap = {}
self.strmap_weak = {}
+ self.strmap_long = {}
self.macro = macro_table()
for path in self.config:
@@ -27,7 +28,7 @@ class builder:
for d in self.input:
self.scandir(d)
- sb = str_build(self.strmap, self.strmap_weak)
+ sb = str_build(self.strmap, self.strmap_weak, self.strmap_long)
sb.build(self.output)
def parse_file(self, filename):
@@ -42,12 +43,16 @@ class builder:
self.strmap[s] = 0
for s in parser.strtab_weak:
self.strmap_weak[s] = 0
+ for s in parser.strtab_long:
+ self.strmap_long[s] = 0
for obj in parser.objects:
builder = block_builder(obj, self.macro)
for s in builder.strtab:
self.strmap[s] = 0
for s in builder.strtab_weak:
self.strmap_weak[s] = 0
+ for s in builder.strtab_long:
+ self.strmap_long[s] = 0
builder.dumpfile(self.output)
def scandir(self, srcpath):
diff --git a/lib/libesp32/berry/tools/coc/coc_parser.py b/lib/libesp32/berry/tools/coc/coc_parser.py
index c5603ebb7..68c81a2ba 100644
--- a/lib/libesp32/berry/tools/coc/coc_parser.py
+++ b/lib/libesp32/berry/tools/coc/coc_parser.py
@@ -22,6 +22,7 @@ class coc_parser:
self.objects = []
self.strtab = set()
self.strtab_weak = set()
+ self.strtab_long = set()
self.text = text
self.parsers = {
"@const_object_info_begin": self.parse_object,
@@ -30,6 +31,7 @@ class coc_parser:
"be_nested_str(": self.parse_string,
"be_const_key_weak(": self.parse_string_weak,
"be_nested_str_weak(": self.parse_string_weak,
+ "be_nested_str_long(": self.parse_string_long,
"be_str_weak(": self.parse_string_weak,
}
@@ -131,6 +133,13 @@ class coc_parser:
self.strtab_weak.add(literal)
# print(f"str '{ident}' -> {literal}")
+ def parse_string_long(self):
+ if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
+ ident = self.parse_word()
+ literal = unescape_operator(ident)
+ if not literal in self.strtab:
+ self.strtab_long.add(literal)
+
#################################################################################
# Parse a block of definition like module, class...
#################################################################################
diff --git a/lib/libesp32/berry/tools/coc/str_build.py b/lib/libesp32/berry/tools/coc/str_build.py
index 31caba1d3..b8380bf57 100644
--- a/lib/libesp32/berry/tools/coc/str_build.py
+++ b/lib/libesp32/berry/tools/coc/str_build.py
@@ -22,9 +22,10 @@ class str_info:
self.extra = 0
class str_build:
- def __init__(self, map, map_weak):
+ def __init__(self, map, map_weak, map_long):
self.map = map.copy()
self.str_weak = []
+ self.str_long = []
size = int(len(self.map) / 2) # voluntarily reduce hash size to half
if size < 4: size = 4
@@ -44,6 +45,11 @@ class str_build:
if not k in self.map:
self.str_weak.append(k)
+ # handle long strings
+ for k in sorted(map_long.keys()):
+ if not k in self.map:
+ self.str_long.append(k)
+
def build(self, path):
prefix = path + "/be_const_strtab"
self.writefile(prefix + "_def.h", self.build_table_def())
@@ -121,6 +127,10 @@ class str_build:
ostr += escape_operator(k) + ", " + escape_c(k) + ", "
ostr += "0u, 0, " + str(len(k)) + ", NULL);\n"
+ for k in self.str_long:
+ ostr += "be_define_const_str_long("
+ ostr += escape_operator(k) + ", " + escape_c(k) + ", " + str(len(k)) + ");\n"
+
ostr += "\n"
ostr += "static const bstring* const m_string_table[] = {\n"
@@ -156,4 +166,6 @@ class str_build:
ostr += "\n/* weak strings */\n"
for s in self.str_weak:
ostr += "extern const bcstring be_const_str_" + escape_operator(s) + ";\n"
+ for s in self.str_long:
+ ostr += "extern const bclstring be_const_str_" + escape_operator(s) + ";\n"
return ostr
diff --git a/lib/libesp32/berry/tools/plugins/Notepad++/TasmotaBerry-udl.xml b/lib/libesp32/berry/tools/plugins/Notepad++/TasmotaBerry-udl.xml
new file mode 100644
index 000000000..c535c6d09
--- /dev/null
+++ b/lib/libesp32/berry/tools/plugins/Notepad++/TasmotaBerry-udl.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+ 00# 01 02 03#- 04-#
+
+ 0x
+ A B C D E F a b c d e f
+
+
+
+ ..
+ - ! ~ * / % + - << >> & ^ | .. < <= > >= == != && || ? ( ) { } [ ] . ,
: = += -= *= /= %= &= |= ^= <<= >>=
+
+
+
+
+ if do while for def
+ else elif
+ end
+
+
+
+ if elif else while for def
end class break continue return true
false nil var do import as
try except raise static
+ nil boolean integer real string function class instance module list map range global file math bytes persist
+ assert print input super type classname classof number int real str bool module size compile issubclass is instance call open
+ file.write file.read file.readbytes file.readline file.seek file.tell file.size file.close list.tostring list.push list.pop list.insert list.item list.setitem list.size list.resize list.clear list.iter list.keys list.concat list.reverse list.copy map.tostring map.insert map.remove map.item map.setitem map.insert map.contains nap.find map.size map.iter map.keys range.tostring range.iter range.lower range.upper range.incr range.setrange string.count string.split string.find string.hex string.byte string.char string.toupper string.tolower string.tr string.replace string.escape string.format math.pi math.nan math.imin math.imax math.floor math.ceil math.abs math.rand math.srand math.isnan math.sqrt math.cos math.tan math.asin math.acos math.atan math.atan2 math.deg math.rad math.sinh math.cosh math.tanh bytes.size bytes.resize bytes.clear bytes.reverse bytes.copy bytes.ismapped bytes.get bytes.geti bytes.set bytes.seti bytes.add bytes.getfloat bytes.setfloat bytes.getbits bytes.setbits bytes.setbytes bytes.tostring bytes.tohex bytes.fromhex bytes.asstring bytes.tob64 bytes.fromb64 global.contains global.id global.setmember json.load json.dump introspect.members introspect.get introspect.set introspect.name introspect.ismethod introspect.module introspect.setmodule introspect.topr os.getcmd os.chdir os.mkdir os.remove os.listdir os.system os.exit os.path.isdir os.path.isfile os.path.exists os.path.split os.path.splitext persist.save persist.find
+
+
+
+
+ 00" 01\ 02" 03' 04\ 05' 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/libesp32/berry_animate/library.json b/lib/libesp32/berry_animate/library.json
new file mode 100644
index 000000000..3033e8a52
--- /dev/null
+++ b/lib/libesp32/berry_animate/library.json
@@ -0,0 +1,17 @@
+{
+ "name": "Berry animation library for WS2812 leds",
+ "version": "0.1",
+ "description": "Berry animation library for WS2812 leds",
+ "license": "MIT",
+ "homepage": "https://github.com/arendst/Tasmota",
+ "frameworks": "arduino",
+ "platforms": "espressif32",
+ "authors":
+ {
+ "name": "Stephan Hadinger",
+ "maintainer": true
+ },
+ "build": {
+ "flags": [ "-I$PROJECT_DIR/include", "-includetasmota_options.h" ]
+ }
+}
\ No newline at end of file
diff --git a/lib/libesp32/berry_animate/path.be b/lib/libesp32/berry_animate/path.be
new file mode 100644
index 000000000..afba51adc
--- /dev/null
+++ b/lib/libesp32/berry_animate/path.be
@@ -0,0 +1,2 @@
+# empty module
+# allows stand-alone `import path`
diff --git a/lib/libesp32/berry_animate/solidify_all.be b/lib/libesp32/berry_animate/solidify_all.be
new file mode 100755
index 000000000..cf19458aa
--- /dev/null
+++ b/lib/libesp32/berry_animate/solidify_all.be
@@ -0,0 +1,99 @@
+#!/usr/bin/env -S ../berry/berry -s -g
+#
+# Berry solidify files
+
+import os
+import global
+import solidify
+import string as string2
+import re
+
+import sys
+sys.path().push('src/embedded') # allow to import from src/embedded
+
+# globals that need to exist to make compilation succeed
+var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,tcpclientasync,"
+ "lv_clock,lv_clock_icon,lv_signal_arcs,lv_signal_bars,lv_wifi_arcs_icon,lv_wifi_arcs,"
+ "lv_wifi_bars_icon,lv_wifi_bars,"
+ "_lvgl,"
+ "int64"
+
+for g:string2.split(globs, ",")
+ global.(g) = nil
+end
+
+var prefix_dir = "src/embedded/"
+var prefix_out = "src/solidify/"
+
+def sort(l)
+ # insertion sort
+ for i:1..size(l)-1
+ var k = l[i]
+ var j = i
+ while (j > 0) && (l[j-1] > k)
+ l[j] = l[j-1]
+ j -= 1
+ end
+ l[j] = k
+ end
+ return l
+end
+
+def clean_directory(dir)
+ var file_list = os.listdir(dir)
+ for f : file_list
+ if f[0] == '.' continue end # ignore files starting with `.`
+ os.remove(dir + f)
+ end
+end
+
+var pattern = "#@\\s*solidify:([A-Za-z0-9_.,]+)"
+
+def parse_file(fname, prefix_out)
+ print("Parsing: ", fname)
+ var f = open(prefix_dir + fname)
+ var src = f.read()
+ f.close()
+ # try to compile
+ var compiled = compile(src)
+ compiled() # run the compile code to instanciate the classes and modules
+ # output solidified
+ var fname_h = string2.split(fname, '.be')[0] + '.h' # take whatever is before the first '.be'
+ var fout = open(prefix_out + "solidified_" + fname_h, "w")
+ fout.write(f"/* Solidification of {fname_h} */\n")
+ fout.write("/********************************************************************\\\n")
+ fout.write("* Generated code, don't edit *\n")
+ fout.write("\\********************************************************************/\n")
+ fout.write('#include "be_constobj.h"\n')
+
+ var directives = re.searchall(pattern, src)
+ # print(directives)
+
+ for directive : directives
+ var object_list = string2.split(directive[1], ',')
+ var object_name = object_list[0]
+ var weak = (object_list.find('weak') != nil) # do we solidify with weak strings?
+ var o = global
+ var cl_name = nil
+ var obj_name = nil
+ for subname : string2.split(object_name, '.')
+ o = o.(subname)
+ cl_name = obj_name
+ obj_name = subname
+ end
+ solidify.dump(o, weak, fout, cl_name)
+ end
+
+ fout.write("/********************************************************************/\n")
+ fout.write("/* End of solidification */\n")
+ fout.close()
+end
+
+clean_directory(prefix_out)
+
+var src_file_list = os.listdir(prefix_dir)
+src_file_list = sort(src_file_list)
+for src_file : src_file_list
+ if src_file[0] == '.' continue end
+ parse_file(src_file, prefix_out)
+end
diff --git a/lib/libesp32/berry_animate/src/be_animate_module.c b/lib/libesp32/berry_animate/src/be_animate_module.c
new file mode 100644
index 000000000..83ba2bb62
--- /dev/null
+++ b/lib/libesp32/berry_animate/src/be_animate_module.c
@@ -0,0 +1,244 @@
+/*
+ be_animate_module.c - implements the animate module for Leds
+
+ Copyright (C) 2023 Stephan Hadinger & Theo Arends
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+/*******************************************************************\
+ * `animate` global module
+\*******************************************************************/
+
+#ifdef USE_BERRY
+#include "be_constobj.h"
+#include "be_mapping.h"
+
+#include "solidify/solidified_animate_1_core.h"
+#include "solidify/solidified_animate_2_animate_effects.h"
+#include "solidify/solidified_animate_9_module.h"
+
+
+/*******************************************************************\
+ * standard palettes
+\*******************************************************************/
+static const uint8_t PALETTE_RAINBOW_WHITE[] = {
+ 0x50, 0xFF, 0x00, 0x00, // red
+ 0x30, 0xFF, 0x00, 0x00, // red
+ 0x50, 0xFF, 0xA5, 0x00, // orange
+ 0x30, 0xFF, 0xA5, 0x00, // orange
+ 0x50, 0xFF, 0xFF, 0x00, // yellow
+ 0x30, 0xFF, 0xFF, 0x00, // yellow
+ 0x50, 0x00, 0xFF, 0x00, // green
+ 0x30, 0x00, 0xFF, 0x00, // green
+ 0x50, 0x00, 0x00, 0xFF, // blue
+ 0x30, 0x00, 0x00, 0xFF, // blue
+ 0x50, 0xFF, 0x00, 0xFF, // indigo
+ 0x30, 0xFF, 0x00, 0xFF, // indigo
+ 0x50, 0xFF, 0xFF, 0xFF, // white
+ 0x30, 0xFF, 0xFF, 0xFF, // white
+ 0x00, 0xFF, 0x00, 0x00, // red
+};
+
+static const uint8_t PALETTE_STANDARD_TAG[] = {
+ 0x40, 0xFF, 0x00, 0x00, // red
+ 0x40, 0xFF, 0xA5, 0x00, // orange
+ 0x40, 0xFF, 0xFF, 0x00, // yellow
+ 0x40, 0x00, 0xFF, 0x00, // green
+ 0x40, 0x00, 0x00, 0xFF, // blue
+ 0x40, 0xFF, 0x00, 0xFF, // indigo
+ 0x40, 0xEE, 0x44, 0xA5, // violet
+ 0x00, 0xFF, 0x00, 0x00, // red
+};
+
+// Gradient palette "ib_jul01_gp", originally from
+// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ing/xmas/tn/ib_jul01.png.index.html
+static const uint8_t PALETTE_ib_jul01_gp[] = {
+ 0x00, 0xE6, 0x06, 0x11, // rgb(230, 6, 17) 0.000%,
+ 0x5E, 0x25, 0x60, 0x5A, // rgb( 37, 96, 90) 37.010%,
+ 0x85, 0x90, 0xBD, 0x6A, // rgb(144,189,106) 52.000%,
+ 0xFF, 0xBB, 0x03, 0x0D, // rgb(187, 3, 13) 100.000%
+};
+
+// Gradient palette "ib44"
+// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ing/general/tn/ib44.png.index.html
+static const uint8_t PALETTE_ib_44[] = {
+ 0, 214, 24, 16,
+ 64, 227, 115, 78,
+ 255, 239, 206, 140,
+};
+
+// Gradient palette "Fire-1"
+// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ds/icons/Fire-1.c3g
+static const uint8_t PALETTE_Fire_1[] = {
+ 0, 255, 0, 0,
+ 128, 255, 128, 0,
+ 255, 255, 255, 0,
+};
+
+// Gradient palette "bhw1_sunconure"
+// http://soliton.vm.bytemark.co.uk/pub/cpt-city/bhw/bhw1/tn/bhw1_sunconure.png.index.html
+static const uint8_t PALETTE_bhw1_sunconure[] = {
+ 0, 97, 240, 78,
+ 161, 246, 137, 30,
+ 255, 246, 45, 30,
+};
+
+// Gradient palette "bhw3_41"
+// http://soliton.vm.bytemark.co.uk/pub/cpt-city/bhw/bhw3/tn/bhw3_41.png.index.html
+static const uint8_t PALETTE_bhw3_41[] = {
+ 0, 0, 0, 128,
+ 71, 64, 64, 255,
+ 75, 160, 160, 255,
+ 76, 255, 255, 255,
+ 178, 255, 255, 255,
+ 179, 255, 128, 128,
+ 196, 255, 0, 0,
+ 255, 128, 0, 0,
+};
+
+// Gradient palette "bhw4_089"
+// http://soliton.vm.bytemark.co.uk/pub/cpt-city/bhw/bhw4/tn/bhw4_089.png.index.html
+static const uint8_t PALETTE_bhw4_089[] = {
+ 0, 174, 52, 28,
+ 28, 224, 154, 133,
+ 53, 235, 208, 206,
+ 79, 249, 208, 118,
+ 109, 228, 95, 50,
+ 132, 227, 165, 116,
+ 163, 226, 131, 67,
+ 184, 252, 213, 118,
+ 201, 252, 169, 125,
+ 224, 255, 194, 101,
+ 255, 215, 80, 35,
+};
+
+static const uint8_t PALETTE_STANDARD_VAL[] = {
+ 0x00, 0xFF, 0x00, 0x00, // red
+ 0x2A, 0xFF, 0xA5, 0x00, // orange
+ 0x55, 0xFF, 0xFF, 0x00, // yellow
+ 0x7F, 0x00, 0xFF, 0x00, // green
+ 0xAA, 0x00, 0x00, 0xFF, // blue
+ 0xD4, 0xFF, 0x00, 0xFF, // indigo
+ 0xFF, 0xFF, 0x00, 0x00, // red
+};
+
+static const uint8_t PALETTE_SATURATED_TAG[] = {
+ 0x40, 0xFF, 0x00, 0x00, // red
+ 0x40, 0xFF, 0xA5, 0x00, // orange
+ 0x40, 0xFF, 0xFF, 0x00, // yellow
+ 0x40, 0x00, 0xFF, 0x00, // green
+ 0x40, 0x00, 0x00, 0xFF, // blue
+ 0x40, 0xFF, 0x00, 0xFF, // indigo
+ 0x00, 0xFF, 0x00, 0x00, // red
+};
+
+extern const bclass be_class_Leds_frame;
+
+#include "be_fixed_animate.h"
+
+/* @const_object_info_begin
+
+module animate (scope: global, strings: weak) {
+ SAWTOOTH, int(1)
+ TRIANGLE, int(2)
+ SQUARE, int(3)
+ COSINE, int(4)
+ LASTFORM, int(5)
+
+ PALETTE_STANDARD_TAG, comptr(PALETTE_STANDARD_TAG)
+ PALETTE_RAINBOW_WHITE, comptr(PALETTE_RAINBOW_WHITE)
+ PALETTE_STANDARD_VAL, comptr(PALETTE_STANDARD_VAL)
+ PALETTE_SATURATED_TAG, comptr(PALETTE_SATURATED_TAG)
+ PALETTE_ib_jul01_gp, comptr(PALETTE_ib_jul01_gp)
+ PALETTE_ib_44, comptr(PALETTE_ib_44)
+ PALETTE_Fire_1, comptr(PALETTE_Fire_1)
+ PALETTE_bhw1_sunconure, comptr(PALETTE_bhw1_sunconure)
+ PALETTE_bhw4_089, comptr(PALETTE_bhw4_089)
+
+ core, class(be_class_Animate_core)
+ animator, class(be_class_Animate_animator)
+ frame, class(be_class_Leds_frame)
+ pulse, class(be_class_Animate_pulse)
+ palette, class(be_class_Animate_palette)
+ oscillator, class(be_class_Animate_oscillator)
+}
+
+@const_object_info_end */
+
+/* Unit test for palettes
+
+import animate
+var p, gradient
+p = animate.palette.ptr_to_palette(animate.PALETTE_STANDARD_TAG)
+assert(p == bytes('40FF000040FFA50040FFFF004000FF00400000FF40FF00FF40EE44A500FF0000'))
+gradient = animate.palette.to_css_gradient(p)
+assert(gradient == 'background:linear-gradient(to right,#FF0000 0.0%,#FFA500 14.3%,#FFFF00 28.6%,#00FF00 42.9%,#0000FF 57.1%,#FF00FF 71.4%,#EE44A5 85.7%,#FF0000 100.0%);')
+
+p = animate.palette.ptr_to_palette(animate.PALETTE_STANDARD_VAL)
+assert(p == bytes('00FF00002AFFA50055FFFF007F00FF00AA0000FFD4FF00FFFFFF0000'))
+gradient = animate.palette.to_css_gradient(animate.PALETTE_STANDARD_VAL)
+assert(gradient == 'background:linear-gradient(to right,#FF0000 0.0%,#FFA500 16.5%,#FFFF00 33.3%,#00FF00 49.8%,#0000FF 66.7%,#FF00FF 83.1%,#FF0000 100.0%);')
+
+
+# unit tests
+import animate
+var o = animate.oscillator(-1000, 1000, 3000)
+o.start(1000)
+assert(o.value == -1000)
+assert(o.animate(1500) == -667)
+assert(o.animate(2500) == 0)
+assert(o.animate(3999) == 1000)
+assert(o.animate(4000) == -1000)
+assert(o.animate(4100) == -933)
+
+o = animate.oscillator(-1000, 1000, 6000, animate.TRIANGLE)
+o.start(1000)
+assert(o.value == -1000)
+assert(o.animate(1500) == -667)
+assert(o.animate(2500) == 0)
+assert(o.animate(3999) == 1000)
+assert(o.animate(4000) == 1000)
+assert(o.animate(4100) == 933)
+assert(o.animate(6000) == -334)
+assert(o.animate(7000) == -1000)
+assert(o.animate(7100) == -933)
+
+o = animate.oscillator(-1000, 1000, 6000, animate.SQUARE)
+o.start(1000)
+assert(o.value == -1000)
+assert(o.animate(1500) == -1000)
+assert(o.animate(2500) == -1000)
+assert(o.animate(3999) == -1000)
+assert(o.animate(4000) == 1000)
+assert(o.animate(4100) == 1000)
+assert(o.animate(6000) == 1000)
+assert(o.animate(7000) == -1000)
+assert(o.animate(7100) == -1000)
+
+o = animate.oscillator(-1000, 1000, 6000, animate.COSINE)
+o.start(1000)
+assert(o.animate(1000) == -1000)
+assert(o.animate(1500) == -867)
+assert(o.animate(2000) == -500)
+assert(o.animate(2500) == 0)
+assert(o.animate(4000) == 1000)
+assert(o.animate(5500) == 0)
+assert(o.animate(7000) == -1000)
+
+
+
+*/
+
+#endif // USE_BERRY
diff --git a/lib/libesp32/berry_animate/src/be_berry_leds_frame.cpp b/lib/libesp32/berry_animate/src/be_berry_leds_frame.cpp
new file mode 100644
index 000000000..70917593f
--- /dev/null
+++ b/lib/libesp32/berry_animate/src/be_berry_leds_frame.cpp
@@ -0,0 +1,179 @@
+/*
+ xdrv_52_3_berry_leds.ino - Berry scripting language, native fucnctions
+
+ Copyright (C) 2021 Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+
+#ifdef USE_BERRY
+
+#include
+
+#ifdef USE_WS2812
+
+extern uint16_t changeUIntScale(uint16_t inum, uint16_t ifrom_min, uint16_t ifrom_max,uint16_t ito_min, uint16_t ito_max);
+extern uint32_t ApplyBriGamma(uint32_t color_a /* 0xRRGGBB */, uint32_t bri /* 0..255 */, bool gamma);
+
+extern "C" {
+ // Leds_frame.blend(color1:int, color2:int, alpha:int) -> int
+ //
+ int32_t be_leds_blend(bvm *vm);
+ int32_t be_leds_blend(bvm *vm) {
+ int32_t top = be_top(vm); // Get the number of arguments
+ if (top >= 3 && be_isint(vm, 1) && be_isint(vm, 2) && be_isint(vm, 3)) {
+ uint32_t color_a = be_toint(vm, 1);
+ uint32_t color_b = be_toint(vm, 2);
+ uint32_t alpha = be_toint(vm, 3);
+ uint32_t r = (color_a >> 16) & 0xFF;
+ uint32_t g = (color_a >> 8) & 0xFF;
+ uint32_t b = (color_a ) & 0xFF;
+ uint32_t a = (color_a >> 24) & 0xFF;
+ uint32_t r2 = (color_b >> 16) & 0xFF;
+ uint32_t g2 = (color_b >> 8) & 0xFF;
+ uint32_t b2 = (color_b ) & 0xFF;
+ uint32_t a2 = (color_b >> 24) & 0xFF;
+ uint32_t r3 = changeUIntScale(alpha, 0, 255, r2, r);
+ uint32_t g3 = changeUIntScale(alpha, 0, 255, g2, g);
+ uint32_t b3 = changeUIntScale(alpha, 0, 255, b2, b);
+ uint32_t a3 = changeUIntScale(alpha, 0, 255, a2, a);
+ uint32_t rgb = (a3 << 24) | (r3 << 16) | (g3 << 8) | b3;
+ be_pushint(vm, rgb);
+ be_return(vm);
+ }
+ be_raise(vm, "type_error", nullptr);
+ }
+
+ // Leds_frame.blend_pixels(dest:bytes(), foreground:bytes) -> nil
+ // Destination can be the same as foreground or background
+ //
+ // All calculation are done in `0xAARRGGBB` format, AA=0 if opaque (i.e. ignored)
+ // Background has always alpha = 0 (any other value is ignored) - for simplification
+ // Size is truncated to smallest of all 3 buffers
+ int32_t be_leds_blend_pixels(bvm *vm);
+ int32_t be_leds_blend_pixels(bvm *vm) {
+ int32_t top = be_top(vm); // Get the number of arguments
+ if (top >= 2 && be_isbytes(vm, 2)) {
+ size_t dest_len = 0;
+ uint32_t * dest_buf = (uint32_t*) be_tobytes(vm, 1, &dest_len);
+ // back = dest for now, could be changed in the future
+ size_t back_len = 0;
+ const uint32_t * back_buf = (const uint32_t*) be_tobytes(vm, 1, &back_len);
+ size_t fore_len = 0;
+ const uint32_t * fore_buf = (const uint32_t*) be_tobytes(vm, 2, &fore_len);
+
+ if (fore_len < dest_len) { dest_len = fore_len; }
+ if (back_len < dest_len) { dest_len = back_len; }
+ size_t pixels_count = dest_len / 4;
+ if (pixels_count > 0) {
+ uint32_t * dest = (uint32_t *)dest_buf;
+ uint32_t * back = (uint32_t *)back_buf;
+ uint32_t * fore = (uint32_t *)fore_buf;
+ for (size_t i = 0; i < pixels_count; i++) {
+ uint32_t back_argb = back[i];
+ uint32_t fore_argb = fore[i];
+ uint32_t fore_alpha = (fore_argb >> 24) & 0xFF;
+ uint32_t dest_rgb_new = back_argb;
+ if (fore_alpha == 0) { // opaque layer, copy value from fore
+ dest_rgb_new = fore_argb;
+ } else if (fore_alpha == 255) { // fore is transparent, use back
+ // nothing to do, dest_rgb_new = back_argb above
+ } else {
+ uint32_t back_r = (back_argb >> 16) & 0xFF;
+ uint32_t fore_r = (fore_argb >> 16) & 0xFF;
+ uint32_t back_g = (back_argb >> 8) & 0xFF;
+ uint32_t fore_g = (fore_argb >> 8) & 0xFF;
+ uint32_t back_b = (back_argb ) & 0xFF;
+ uint32_t fore_b = (fore_argb ) & 0xFF;
+ uint32_t dest_r_new = changeUIntScale(fore_alpha, 0, 255, fore_r, back_r);
+ uint32_t dest_g_new = changeUIntScale(fore_alpha, 0, 255, fore_g, back_g);
+ uint32_t dest_b_new = changeUIntScale(fore_alpha, 0, 255, fore_b, back_b);
+ dest_rgb_new = (dest_r_new << 16) | (dest_g_new << 8) | dest_b_new;
+ }
+ dest[i] = dest_rgb_new;
+ }
+ }
+ be_return_nil(vm);
+ }
+ be_raise(vm, "type_error", nullptr);
+ }
+
+ // Leds_frame.fill_pixels(dest:bytes(), color:int) -> nil
+ //
+ // Fill buffer with same color
+ int32_t be_leds_fill_pixels(bvm *vm);
+ int32_t be_leds_fill_pixels(bvm *vm) {
+ int32_t top = be_top(vm); // Get the number of arguments
+ if (top >= 2 && be_isint(vm, 2)) {
+ size_t dest_len = 0;
+ uint32_t * dest_buf = (uint32_t*) be_tobytes(vm, 1, &dest_len);
+ uint32_t color = be_toint(vm, 2);
+
+ size_t pixels_count = dest_len / 4;
+ if (pixels_count > 0) {
+ uint32_t * dest = (uint32_t *)dest_buf;
+ for (size_t i = 0; i < pixels_count; i++) {
+ dest[i] = color;
+ }
+ }
+ be_return_nil(vm);
+ }
+ be_raise(vm, "type_error", nullptr);
+ }
+
+ // Leds_frame.paste_pixels(neopixel:bytes(), led_buffer:bytes(), bri:int 0..100, gamma:bool)
+ //
+ // Copy from ARGB buffer to GRB
+ int32_t be_leds_paste_pixels(bvm *vm);
+ int32_t be_leds_paste_pixels(bvm *vm) {
+ int32_t top = be_top(vm); // Get the number of arguments
+ if (top >= 2 && be_isbytes(vm, 2)) {
+ size_t src_len = 0;
+ uint32_t * src_buf = (uint32_t*) be_tobytes(vm, 1, &src_len);
+ size_t dest_len = 0;
+ uint8_t * dest_buf = (uint8_t*) be_tobytes(vm, 2, &dest_len);
+
+ uint32_t bri255 = 255;
+ if (top >= 3 && be_isint(vm, 3)) {
+ bri255 = be_toint(vm, 3);
+ }
+ bool gamma = false;
+ if (top >= 4 && be_isbool(vm, 4)) {
+ gamma = be_tobool(vm, 4);
+ }
+
+ size_t pixels_count = src_len / 4;
+ if (pixels_count > dest_len / 3) { pixels_count = dest_len / 3; }
+ if (pixels_count > 0) {
+ for (size_t i = 0; i < pixels_count; i++) {
+ uint32_t src_argb = ApplyBriGamma(src_buf[i], bri255, gamma);
+ uint32_t src_r = (src_argb >> 16) & 0xFF;
+ uint32_t src_g = (src_argb >> 8) & 0xFF;
+ uint32_t src_b = (src_argb ) & 0xFF;
+ dest_buf[i * 3 + 0] = src_g;
+ dest_buf[i * 3 + 1] = src_r;
+ dest_buf[i * 3 + 2] = src_b;
+ }
+ }
+ be_return_nil(vm);
+ }
+ be_raise(vm, "type_error", nullptr);
+ }
+
+
+}
+
+#endif // USE_WS2812
+#endif // USE_BERRY
diff --git a/lib/libesp32/berry_tasmota/src/be_leds_frame_lib.c b/lib/libesp32/berry_animate/src/be_leds_frame_lib.c
similarity index 96%
rename from lib/libesp32/berry_tasmota/src/be_leds_frame_lib.c
rename to lib/libesp32/berry_animate/src/be_leds_frame_lib.c
index a1b1c353b..36d82d28e 100644
--- a/lib/libesp32/berry_tasmota/src/be_leds_frame_lib.c
+++ b/lib/libesp32/berry_animate/src/be_leds_frame_lib.c
@@ -3,6 +3,7 @@
*
*******************************************************************/
+#ifdef USE_BERRY
#include "be_constobj.h"
#ifdef USE_WS2812
@@ -37,3 +38,4 @@ class be_class_Leds_frame (scope: global, name: Leds_frame, super:be_class_bytes
#include "be_fixed_be_class_Leds_frame.h"
#endif // USE_WS2812
+#endif // USE_BERRY
diff --git a/lib/libesp32/berry_animate/src/berry_animate.h b/lib/libesp32/berry_animate/src/berry_animate.h
new file mode 100644
index 000000000..87e27bd27
--- /dev/null
+++ b/lib/libesp32/berry_animate/src/berry_animate.h
@@ -0,0 +1,8 @@
+// force include of module by including this file
+
+#ifndef __BERRY_ANIMATE__
+#define __BERRY_ANIMATE__
+
+
+
+#endif // __BERRY_ANIMATE__
diff --git a/lib/libesp32/berry_animate/src/embedded/animate_0.be b/lib/libesp32/berry_animate/src/embedded/animate_0.be
new file mode 100644
index 000000000..5c854f6e1
--- /dev/null
+++ b/lib/libesp32/berry_animate/src/embedded/animate_0.be
@@ -0,0 +1,3 @@
+# prepare for module `animate`
+
+global.animate = module('animate')
\ No newline at end of file
diff --git a/lib/libesp32/berry_tasmota/src/embedded/leds_0_animator.be b/lib/libesp32/berry_animate/src/embedded/animate_1_core.be
similarity index 69%
rename from lib/libesp32/berry_tasmota/src/embedded/leds_0_animator.be
rename to lib/libesp32/berry_animate/src/embedded/animate_1_core.be
index e6de57d09..bacaf561d 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/leds_0_animator.be
+++ b/lib/libesp32/berry_animate/src/embedded/animate_1_core.be
@@ -1,13 +1,8 @@
-# class Leds_animator
-
-#@ solidify:Leds_animator,weak
-
-# for solidification
-class Leds_frame end
+# class Animate_core
##########################################################################################
#
-# class Leds_animator
+# class Animate_core
#
# Simple framework to orchestrate all the animations for a led strip or led matrix
#
@@ -15,7 +10,8 @@ class Leds_frame end
# This version uses `fast_loop` for up to 5ms animation time (200 Hz)
#
##########################################################################################
-class Leds_animator
+#@ solidify:Animate_core,weak
+class Animate_core
var strip # neopixelbus object
var pixel_count # number of pixels in the strip
var bri # brightness of the animation, 0..100, default 50
@@ -26,8 +22,8 @@ class Leds_animator
static var FAST_LOOP_MIN = 20
var fast_loop_next # next time-stamp for fast_loop
# cb for animation
- var animate_object # object called at each tick
- var animate_method # method of object called at each tick
+ var obj # object called at each tick
+ var mth # method of object called at each tick
# frame ojects
var frame # Leds_frame frame object
var layer # Leds_frame for layer on top of frame
@@ -35,20 +31,34 @@ class Leds_animator
var back_color # background color RRGGBB
def init(strip, bri)
+ import animate
+
self.strip = strip
if (bri == nil) bri = 50 end
self.bri = bri # percentage of brightness 0..100
+ self.set_strip_bri()
self.running = false
self.pixel_count = strip.pixel_count()
self.animators = []
self.painters = []
#
self.clear() # clear all leds first
- self.frame = Leds_frame(self.pixel_count)
- self.layer = Leds_frame(self.pixel_count)
+ self.frame = animate.frame(self.pixel_count)
+ self.layer = animate.frame(self.pixel_count)
#
self.fast_loop_cb = def() self.fast_loop() end
self.back_color = 0x000000
+ #
+ self.set_current()
+ end
+
+ def set_strip_bri()
+ self.strip.set_bri(tasmota.scale_uint(self.bri, 0, 100, 0, 255))
+ end
+
+ # set this animate.core as the current animator for configuration
+ def set_current()
+ global._cur_anim = self # declare the current animate.core for painters and animators to register
end
# cb
@@ -62,11 +72,37 @@ class Leds_animator
end
def add_animator(anim)
- self.animators.push(anim)
+ if self.animators.find(anim) == nil
+ self.animators.push(anim)
+ end
end
+ # remove a specific animator
+ # remove all animators if no parameter or nil
+ # silently ignores if the animator can't be found
+ def remove_animator(anim)
+ var animators = self.animators
+ if (anim != nil)
+ animators.remove(animators.find(anim))
+ else
+ animators.clear()
+ end
+ end
+
+ def remove_painter(p)
+ var painters = self.painters
+ if (p != nil)
+ painters.remove(painters.find(p))
+ else
+ painters.clear()
+ end
+ end
+
+
def add_painter(painter)
- self.painters.push(painter)
+ if self.painters.find(painter) == nil
+ self.painters.push(painter)
+ end
end
def clear()
@@ -98,14 +134,15 @@ class Leds_animator
def set_bri(bri)
self.bri = bri
+ self.set_strip_bri()
end
def get_bri(bri)
return self.bri
end
def set_cb(obj, method)
- self.animate_object = obj
- self.animate_method = method
+ self.obj = obj
+ self.mth = method
end
def fast_loop()
@@ -134,19 +171,22 @@ class Leds_animator
while i < size(self.painters)
layer.fill_pixels(0xFF000000) # fill with transparent color
if (self.painters[i].paint(layer))
+# print(f"frame0 {self.frame.tohex()}")
+# print(f"layer0 {self.layer.tohex()}")
frame.blend_pixels(layer)
+# print(f"frame1 {self.frame.tohex()}")
end
i += 1
end
# tirgger animate and display
- var obj = self.animate_object
- var mth = self.animate_method
+ var obj = self.obj
+ var mth = self.mth
if (obj && mth)
mth(obj)
end
self.animate()
# now display the frame
- self.frame.paste_pixels(self.strip.pixels_buffer(), self.bri, self.strip.gamma)
+ self.frame.paste_pixels(self.strip.pixels_buffer(), self.strip.get_bri(), self.strip.get_gamma())
self.strip.dirty()
self.strip.show()
end
@@ -161,3 +201,4 @@ class Leds_animator
tasmota.remove_fast_loop(self.fast_loop_cb)
end
end
+animate.core = global.Animate_core
diff --git a/lib/libesp32/berry_tasmota/src/embedded/leds_1_animate_effects.be b/lib/libesp32/berry_animate/src/embedded/animate_2_animate_effects.be
similarity index 74%
rename from lib/libesp32/berry_tasmota/src/embedded/leds_1_animate_effects.be
rename to lib/libesp32/berry_animate/src/embedded/animate_2_animate_effects.be
index fd8d112ed..d2653db67 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/leds_1_animate_effects.be
+++ b/lib/libesp32/berry_animate/src/embedded/animate_2_animate_effects.be
@@ -1,14 +1,33 @@
-# class Leds_pulse
+# class Animate_pulse
-#@ solidify:Leds_pulse,weak
+#@ solidify:Animate_painter,weak
+# painter superclass
+class Animate_painter
+
+ def init()
+ # register ourselves into the current animate.core
+ var core = global._cur_anim
+ if (core != nil)
+ core.add_painter(self)
+ end
+ end
+
+ # return true if buffer was filled successfully
+ #
+ # Needs to be overwritten
+ def paint(frame)
+ end
+
+end
+animate.painter = global.Animate_painter
##########################################################################################
#
-# class Leds_pulse
+# class Animate_pulse
#
# Display a color pulse
#
-# index (1)
+# pos (1)
# |
# v
# _______
@@ -17,20 +36,23 @@
# | | | |
# |2| 3 |2|
#
-# 1: `index`, start of the pulse (in pixel)
+# 1: `pos`, start of the pulse (in pixel)
# 2: `slew_size`, number of pixels to fade from back to fore color, can be `0`
# 3: `pulse_size`, number of pixels of the pulse
#
##########################################################################################
-class Leds_pulse
+#@ solidify:Animate_pulse,weak
+class Animate_pulse : Animate_painter
var color
var back_color
- var index
+ var pos
var slew_size
var pulse_size
def init(color, pulse_size, slew_size)
+ super(self).init()
+
if (color == nil) color = 0xFFFFFF end # white by default
if (pulse_size == nil) pulse_size = 1 end
if (slew_size == nil) slew_size = 0 end
@@ -41,6 +63,7 @@ class Leds_pulse
self.pulse_size = pulse_size
if slew_size < 0 slew_size = 0 end
self.slew_size = slew_size
+ self.pos = 0
end
##
@@ -54,8 +77,8 @@ class Leds_pulse
self.back_color = c
end
- def set_index(index)
- self.index = index
+ def set_pos(pos)
+ self.pos = pos
end
def set_slew_size(slew_size)
@@ -72,18 +95,18 @@ class Leds_pulse
if (back_color != 0xFF000000)
frame.fill_pixels(back_color) # fill with transparent color
end
- var index = self.index
+ var pos = self.pos
var slew_size = self.slew_size
var pulse_size = self.pulse_size
var color = self.color
var pixel_size = frame.pixel_size
- # var min_index = index - slew_size
- # var max_index = index + pulse_size + slew_size - 1
+ # var min_index = pos - slew_size
+ # var max_index = pos + pulse_size + slew_size - 1
var pulse_min, pulse_max
- pulse_min = index
- pulse_max = index + pulse_size
+ pulse_min = pos
+ pulse_max = pos + pulse_size
if (pulse_min < 0) pulse_min = 0 end
if (pulse_max >= pixel_size) pulse_max = pixel_size end
@@ -94,47 +117,48 @@ class Leds_pulse
end
if (slew_size > 0)
- # check first slew, from `min_index` to `index - 1`
+ # check first slew, from `min_index` to `pos - 1`
# Slew 1
- pulse_min = index - slew_size
- pulse_max = index
+ pulse_min = pos - slew_size
+ pulse_max = pos
if (pulse_min < 0) pulse_min = 0 end
if (pulse_max >= pixel_size) pulse_max = pixel_size end
i = pulse_min
while (i < pulse_max)
# blend from 255 (back) to 0 (fore)
- frame[i] = frame.blend(back_color, color, tasmota.scale_int(i, index - slew_size - 1, index, 255, 0))
+ frame[i] = frame.blend(back_color, color, tasmota.scale_int(i, pos - slew_size - 1, pos, 255, 0))
# blend
i += 1
end
# Slew 2
- pulse_min = index + pulse_size
- pulse_max = index + pulse_size + slew_size
+ pulse_min = pos + pulse_size
+ pulse_max = pos + pulse_size + slew_size
if (pulse_min < 0) pulse_min = 0 end
if (pulse_max >= pixel_size) pulse_max = pixel_size end
i = pulse_min
while (i < pulse_max)
# blend
- frame[i] = frame.blend(back_color, color, tasmota.scale_int(i, index + pulse_size - 1, index + pulse_size + slew_size, 0, 255))
+ frame[i] = frame.blend(back_color, color, tasmota.scale_int(i, pos + pulse_size - 1, pos + pulse_size + slew_size, 0, 255))
i += 1
end
end
return true
end
-
end
+animate.pulse = global.Animate_pulse
#
# Unit tests
#
if false
-var frame = Leds_frame(10)
+import animate
+var frame = animate.frame(10)
assert(frame.tohex() == '00000000000000000000000000000000000000000000000000000000000000000000000000000000')
-var pulse = Leds_pulse(0x00FF00, 3, 2)
-pulse.set_index(5)
+var pulse = animate.pulse(0x00FF00, 3, 2)
+pulse.set_pos(5)
pulse.paint(frame)
assert(frame.tohex() == '0000000000000000000000000055000000AA000000FF000000FF000000FF000000AA000000550000')
diff --git a/lib/libesp32/berry_animate/src/embedded/animate_9_module.be b/lib/libesp32/berry_animate/src/embedded/animate_9_module.be
new file mode 100644
index 000000000..6991f0fde
--- /dev/null
+++ b/lib/libesp32/berry_animate/src/embedded/animate_9_module.be
@@ -0,0 +1,516 @@
+#
+# class Animate
+#
+# Animation framework
+#
+
+#################################################################################
+# class Animate_palette
+#
+# Animated color palette
+#################################################################################
+
+#################################################################################
+# Palette format compatible
+#
+# Takes a binary array with a set of 4 bytes elements: VRGB
+# V: Value in a range 0..255. The first value must be 0,
+# the last needs to be 255.
+# Numbers must be in strictly increasin numbers.
+# The algorithm maps a 0..255 rotating value to its color
+# in the palette.
+# R: Red component
+# G: Green component
+# B: Blue component
+# Note: RGB is in big Endian to make it more readable, although
+# it's little-endian when in memory. Be aware!
+# RGB values are stored at max brightness and without gamma correction
+#################################################################################
+
+# # Gradient palette "ib_jul01_gp", originally from
+# # http://soliton.vm.bytemark.co.uk/pub/cpt-city/ing/xmas/tn/ib_jul01.png.index.html
+# var PALETTE_ib_jul01_gp = bytes(
+# "00" "E60611"
+# "5E" "25605A"
+# "85" "90BD6A"
+# "FF" "BB030D"
+# )
+# # animate.PALETTE_ib_jul01_gp = PALETTE_ib_jul01_gp
+# # rgb(230, 6, 17) 0.000%,
+# # rgb( 37, 96, 90) 37.010%,
+# # rgb(144,189,106) 52.000%,
+# # rgb(187, 3, 13) 100.000%
+
+# var PALETTE_STANDARD_VAL = bytes(
+# "00" "FF0000" # red
+# "24" "FFA500" # orange
+# "49" "FFFF00" # yellow
+# "6E" "008800" # green
+# "92" "0000FF" # blue
+# "B7" "4B0082" # indigo
+# "DB" "EE82EE" # violet
+# "FF" "FF0000" # red
+# )
+# # animate.PALETTE_STANDARD = PALETTE_STANDARD
+
+# var PALETTE_SATURATED_TAG = bytes(
+# "40" "FF0000" # red
+# "40" "FFA500" # orange
+# "40" "FFFF00" # yellow
+# "40" "00FF00" # green
+# "40" "0000FF" # blue
+# "40" "FF00FF" # indigo
+# "40" "EE44A5" # violet
+# "00" "FF0000" # red
+# )
+
+# var PALETTE_STANDARD_TAG = bytes(
+# "40" "FF0000" # red
+# "40" "FFA500" # orange
+# "40" "FFFF00" # yellow
+# "40" "008800" # green
+# "40" "0000FF" # blue
+# "40" "4B0082" # indigo
+# "40" "EE82EE" # violet
+# "00" "FF0000" # red
+# )
+# # animate.PALETTE_STANDARD = PALETTE_STANDARD
+
+#@ solidify:Animate_animator,weak
+class Animate_animator
+ # timing information
+ var running # true if running
+ var duration_ms # duration_ms of the entire cycle in ms, cannot be `0`
+ var origin # origin in ms of the current cycle, as per tasmota.millis() reference
+ # callback information
+ var obj # object to call
+ var mth # object method to call
+
+ def init()
+ # register ourselves into the current animate.core
+ var core = global._cur_anim
+ if (core != nil)
+ core.add_animator(self)
+ end
+ end
+
+ def set_duration_ms(duration_ms)
+ self.duration_ms = duration_ms
+ end
+
+ def set_cb(obj, mth)
+ self.obj = obj
+ self.mth = mth
+ end
+
+ def start(millis)
+ if (self.duration_ms == nil) return end
+ if millis == nil millis = tasmota.millis() end
+ self.origin = millis
+ self.running = true
+ end
+
+ def stop()
+ self.origin = nil
+ self.running = false
+ end
+
+ def is_running()
+ return bool(self.running)
+ end
+
+ # called at the end of each cycle
+ def beat()
+ end
+
+end
+animate.animator = Animate_animator
+
+#@ solidify:Animate_palette,weak
+class Animate_palette : Animate_animator
+ ## inherited
+ ## timing information
+ # var running
+ # var duration_ms # duration_ms of the entire cycle in ms, cannot be `0`
+ # var origin # origin in ms of the current cycle, as per tasmota.millis() reference
+ ## callback information
+ # var obj # object to call
+ # var mth # object method to call
+
+ # parsing of palette
+ var palette # raw bytes object
+ var slots_arr # constructed array of timestamp slots
+ var slots # number of slots
+ # range information (when used as range color)
+ var range_min # minimum value expected as input
+ var range_max # maximum value expected as input, needs (range_min < range_max, can be negative)
+ # brightness
+ var bri # brightness to be applied to palette 0..100
+ # color object to do RGB color calculation
+ var color # instance of light_state, used for color calculation (reuse of object)
+
+ def init(palette, duration_ms)
+ super(self).init()
+
+ self.duration_ms = duration_ms
+ self.running = false
+ self.bri = 100
+ self.color = light_state(light_state.RGB)
+ #
+ self.set_palette(palette)
+ end
+
+ # load or change palette
+ def set_palette(palette)
+ if (type(palette) == 'ptr') palette = self.ptr_to_palette(palette) end # convert comptr to palette buffer
+ self.palette = palette
+ self.slots = size(palette) / 4
+ # recompute palette
+ if self.duration_ms != nil
+ self.set_duration(self.duration_ms)
+ elif (self.range_min != nil) && (self.range_max != nil)
+ self.set_range(self.range_min, self.range_max)
+ end
+ end
+
+ # setter to be used as cb
+ def set_bri(bri)
+ self.bri = int(bri)
+ end
+
+ # convert a comptr to a bytes() for palette
+ # parse the raw bytes to find the actual length
+ #
+ # input: comptr
+ # return: bytes() object of palette
+ static def ptr_to_palette(p)
+ if type(p) == 'ptr'
+ var b_raw = bytes(p, 2000) # arbitrary large size
+ var idx = 1
+ if b_raw[0] != 0
+ # palette in tick counts
+ while true
+ if b_raw[idx * 4] == 0
+ break
+ end
+ idx += 1
+ end
+ else
+ # palette is in value range from 0..255
+ while true
+ if b_raw[idx * 4] == 0xFF
+ break
+ end
+ idx += 1
+ end
+ end
+ var sz = (idx + 1) * 4
+ return bytes(p, sz)
+ end
+ end
+
+ def parse_palette(min, max)
+ var arr = []
+ var slots = self.slots
+ arr.resize(slots)
+
+ # check if we have slots or values
+ # if first value index is non-zero, it's ticks count
+ if self.palette.get(0, 1) != 0
+ # palette in tick counts
+ # compute the total number of ticks
+ var total_ticks = 0
+ var idx = 0
+ while idx < slots - 1
+ total_ticks += self.palette.get(idx * 4, 1)
+ idx += 1
+ end
+ var cur_ticks = 0
+ idx = 0
+ while idx < slots
+ arr[idx] = tasmota.scale_int(cur_ticks, 0, total_ticks, min, max)
+ cur_ticks += self.palette.get(idx * 4, 1)
+ idx += 1
+ end
+ else
+ # palette is in value range from 0..255
+ var idx = 0
+ while idx < slots
+ var val = self.palette.get(idx * 4, 1)
+ arr[idx] = tasmota.scale_int(val, 0, 255, min, max)
+ idx += 1
+ end
+ end
+ # print(f"ANM: {arr=}")
+ return arr
+ end
+
+ def set_duration(duration_ms)
+ if (duration_ms == nil) return end
+ if duration_ms <= 0 raise "value_error", "duration_ms must be positive" end
+ self.duration_ms = duration_ms
+
+ self.slots_arr = self.parse_palette(0, duration_ms - 1)
+ end
+
+ def set_range(min, max)
+ if (min >= max) raise "value_error", "min must be lower than mex" end
+ self.range_min = min
+ self.range_max = max
+
+ self.slots_arr = self.parse_palette(min, max)
+ end
+
+ # compute the css linear-gradient description
+ #
+ # Example: background: linear-gradient(to right, #000000, #e66465 11.0%, #9198e5);
+ static def to_css_gradient(palette)
+ var p = _class(palette)
+ var arr = p.parse_palette(0, 1000)
+ var ret = "background:linear-gradient(to right"
+ var idx = 0
+ while idx < size(arr)
+ var prm = arr[idx] # per mile
+
+ var bgrt = p.palette.get(idx * 4, 4)
+ var r = (bgrt >> 8) & 0xFF
+ var g = (bgrt >> 16) & 0xFF
+ var b = (bgrt >> 24) & 0xFF
+ ret += f",#{r:02X}{g:02X}{b:02X} {prm/10.0:.1f}%"
+ idx += 1
+ end
+ ret += ");"
+ return ret
+ end
+
+ def set_value(value)
+ if (self.range_min == nil || self.range_max == nil) return nil end
+ var scale_int = tasmota.scale_int
+
+ # find slot
+ var slots = self.slots
+ var idx = slots - 2
+ while idx > 0
+ if value >= self.slots_arr[idx] break end
+ idx -= 1
+ end
+ var bgrt0 = self.palette.get(idx * 4, 4)
+ var bgrt1 = self.palette.get((idx + 1) * 4, 4)
+ var t0 = self.slots_arr[idx]
+ var t1 = self.slots_arr[idx + 1]
+ var r = scale_int(value, t0, t1, (bgrt0 >> 8) & 0xFF, (bgrt1 >> 8) & 0xFF)
+ var g = scale_int(value, t0, t1, (bgrt0 >> 16) & 0xFF, (bgrt1 >> 16) & 0xFF)
+ var b = scale_int(value, t0, t1, (bgrt0 >> 24) & 0xFF, (bgrt1 >> 24) & 0xFF)
+ var rgb = (r << 16) | (g << 8) | b
+ #
+ var obj = self.obj
+ var mth = self.mth
+ if (obj && mth)
+ mth(obj, rgb)
+ end
+ # if self.cb != nil
+ # self.cb(rgb)
+ # end
+ #
+ # print(f"ANM: {rgb=:%06X}")
+ return rgb
+ end
+
+ def animate(millis)
+ if (self.duration_ms == nil) return end
+ if millis == nil millis = tasmota.millis() end
+ var past = millis - self.origin
+ if past < 0
+ past = 0
+ millis = self.origin
+ end
+ var duration_ms = self.duration_ms
+ var scale_uint = tasmota.scale_uint
+ if past >= duration_ms
+ self.origin += (past / duration_ms) * duration_ms
+ past = past % duration_ms
+ end
+ # find slot
+ var slots = self.slots
+ var idx = slots - 2
+ while idx > 0
+ if past >= self.slots_arr[idx] break end
+ idx -= 1
+ end
+ var bgrt0 = self.palette.get(idx * 4, 4)
+ var bgrt1 = self.palette.get((idx + 1) * 4, 4)
+ var t0 = self.slots_arr[idx]
+ var t1 = self.slots_arr[idx + 1]
+ var r = scale_uint(past, t0, t1, (bgrt0 >> 8) & 0xFF, (bgrt1 >> 8) & 0xFF)
+ var g = scale_uint(past, t0, t1, (bgrt0 >> 16) & 0xFF, (bgrt1 >> 16) & 0xFF)
+ var b = scale_uint(past, t0, t1, (bgrt0 >> 24) & 0xFF, (bgrt1 >> 24) & 0xFF)
+
+ var color = self.color
+ color.set_rgb((bgrt0 >> 8) & 0xFF, (bgrt0 >> 16) & 0xFF, (bgrt0 >> 24) & 0xFF)
+ var bri0 = color.bri
+ color.set_rgb((bgrt1 >> 8) & 0xFF, (bgrt1 >> 16) & 0xFF, (bgrt1 >> 24) & 0xFF)
+ var bri1 = color.bri
+ var bri2 = scale_uint(past, t0, t1, bri0, bri1)
+ color.set_rgb(r, g, b)
+ color.set_bri(bri2)
+
+ r = color.r
+ g = color.g
+ b = color.b
+
+ # apply self.bri if not `100`
+ var bri = self.bri
+ if bri != 100
+ r = tasmota.scale_uint(r, 0, 100, 0, bri)
+ g = tasmota.scale_uint(g, 0, 100, 0, bri)
+ b = tasmota.scale_uint(b, 0, 100, 0, bri)
+ end
+
+ # var rgb = (r << 16) | (g << 8) | b
+ var rgb = (r << 16) | (g << 8) | b
+
+ var obj = self.obj
+ var mth = self.mth
+ if (obj && mth)
+ mth(obj, rgb)
+ end
+
+ return rgb
+ end
+end
+animate.palette = Animate_palette
+
+#-
+
+pal = Animate_palette(PALETTE_STANDARD_TAG, 7000)
+pal = Animate_palette(PALETTE_STANDARD_VAL, 7000)
+
+
+import animate
+var pal = animate.palette(PALETTE_STANDARD_TAG, 7000)
+pal.start(0)
+for t: range(0,8000,200)
+ pal.tick(t)
+end
+
+-#
+
+animate.SAWTOOTH = 1
+animate.TRIANGLE = 2
+animate.SQUARE = 3
+animate.COSINE = 4
+animate.LASTFOMR = 5 # identify last form
+
+#@ solidify:Animate_oscillator,weak
+class Animate_oscillator : Animate_animator
+ ## inherited
+ ## timing information
+ # var running
+ # var duration_ms # duration_ms of the entire cycle in ms, cannot be `0`
+ # var origin # origin in ms of the current cycle, as per tasmota.millis() reference
+ var phase # 0..100% - phase shift, default 0
+ var duty_cycle # 0..100% - duty cycle, default 50%
+ ## callback information
+ # var obj # object to call
+ # var mth # object method to call
+ var a # starting value
+ var b # end value
+ var form # waveform
+ # current value
+ var value
+
+ def init(a, b, duration_ms, form)
+ super(self).init()
+ self.phase = 0
+ self.duty_cycle = 50
+ self.a = a
+ self.b = b
+ self.duration_ms = duration_ms
+ self.value = a
+ if (form == nil) form = 1 end
+ self.form = form
+ end
+
+ def set_phase(phase)
+ if (phase < 0) phase = 0 end
+ if (phase > 100) phase = 100 end
+ self.phase = phase
+ end
+
+ def set_duty_cycle(duty_cycle)
+ if (duty_cycle < 0) duty_cycle = 0 end
+ if (duty_cycle > 100) duty_cycle = 100 end
+ self.duty_cycle = duty_cycle
+ end
+
+ def set_a(a)
+ self.a = a
+ end
+ def set_b(b)
+ self.b = b
+ end
+
+ def set_form(form)
+ if (form == nil) form = 1 end
+ self.form = form
+ end
+
+ def animate(millis)
+ if (self.duration_ms == nil) return end
+ if millis == nil millis = tasmota.millis() end
+ var past = millis - self.origin
+ if past < 0
+ past = 0
+ millis = self.origin
+ end
+ var duration_ms = self.duration_ms
+ var duration_ms_mid # mid point considering duty cycle
+ duration_ms_mid = tasmota.scale_uint(self.duty_cycle, 0, 100, 0, duration_ms)
+ if past >= duration_ms
+ self.origin += (past / duration_ms) * duration_ms
+ past = past % duration_ms
+ # handle end of cycle
+ self.beat()
+ end
+
+ var a = self.a
+ var b = self.b
+ var value = self.value
+ var past_with_phase = past # adjust past with phase
+ if self.phase > 0
+ past_with_phase += tasmota.scale_uint(self.phase, 0, 100, 0, duration_ms)
+ if (past_with_phase > duration_ms) past_with_phase -= duration_ms end # if overflow, take modulus
+ end
+
+ if self.form == 1 #-SAWTOOTH-#
+ value = tasmota.scale_int(past_with_phase, 0, duration_ms - 1, a, b)
+ elif self.form == 2 #-TRIANGLE-#
+ if past_with_phase < duration_ms_mid
+ value = tasmota.scale_int(past_with_phase, 0, duration_ms_mid - 1, a, b)
+ else
+ value = tasmota.scale_int(past_with_phase, duration_ms_mid, duration_ms - 1, b, a)
+ end
+ elif self.form == 3 #-SQUARE-#
+ if past_with_phase < duration_ms_mid
+ value = a
+ else
+ value = b
+ end
+ elif (self.form == 4) #-COSINE-#
+ # map timing to 0..32767
+ var angle = tasmota.scale_int(past_with_phase, 0, duration_ms - 1, 0, 32767)
+ var x = tasmota.sine_int(angle - 8192) # -4096 .. 4096, dephase from cosine to sine
+ value = tasmota.scale_int(x, -4096, 4096, a, b)
+ end
+ self.value = value
+
+ var obj = self.obj
+ var mth = self.mth
+ if (obj && mth)
+ mth(obj, value)
+ end
+
+ return value
+ end
+end
+global.animate.oscillator = Animate_oscillator
diff --git a/lib/libesp32/berry_tasmota/src/embedded/leds_frame_be_methods.be b/lib/libesp32/berry_animate/src/embedded/leds_frame_be_methods.be
similarity index 100%
rename from lib/libesp32/berry_tasmota/src/embedded/leds_frame_be_methods.be
rename to lib/libesp32/berry_animate/src/embedded/leds_frame_be_methods.be
diff --git a/lib/libesp32_lvgl/lvgl/src/extra/others/fragment/README.md b/lib/libesp32/berry_animate/src/solidify/.keep
similarity index 100%
rename from lib/libesp32_lvgl/lvgl/src/extra/others/fragment/README.md
rename to lib/libesp32/berry_animate/src/solidify/.keep
diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_0.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_0.h
new file mode 100644
index 000000000..a0a262928
--- /dev/null
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_0.h
@@ -0,0 +1,7 @@
+/* Solidification of animate_0.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds_0_animator.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h
similarity index 61%
rename from lib/libesp32/berry_tasmota/src/solidify/solidified_leds_0_animator.h
rename to lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h
index ea031d397..280b7de5c 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds_0_animator.h
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h
@@ -1,85 +1,15 @@
-/* Solidification of leds_0_animator.h */
+/* Solidification of animate_1_core.h */
/********************************************************************\
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
-extern const bclass be_class_Leds_animator;
-
-/********************************************************************
-** Solidified function: remove
-********************************************************************/
-be_local_closure(Leds_animator_remove, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(clear),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_fast_loop),
- /* K3 */ be_nested_str_weak(fast_loop_cb),
- }),
- be_str_weak(remove),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0xB8060200, // 0002 GETNGBL R1 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
- 0x880C0103, // 0004 GETMBR R3 R0 K3
- 0x7C040400, // 0005 CALL R1 2
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_background_animator
-********************************************************************/
-be_local_closure(Leds_animator_add_background_animator, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(set_cb),
- /* K1 */ be_nested_str_weak(set_back_color),
- /* K2 */ be_nested_str_weak(add_animator),
- }),
- be_str_weak(add_background_animator),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x5C100000, // 0001 MOVE R4 R0
- 0x88140101, // 0002 GETMBR R5 R0 K1
- 0x7C080600, // 0003 CALL R2 3
- 0x8C080102, // 0004 GETMET R2 R0 K2
- 0x5C100200, // 0005 MOVE R4 R1
- 0x7C080400, // 0006 CALL R2 2
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
+extern const bclass be_class_Animate_core;
/********************************************************************
** Solidified function: clear
********************************************************************/
-be_local_closure(Leds_animator_clear, /* name */
+be_local_closure(Animate_core_clear, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
@@ -110,54 +40,41 @@ be_local_closure(Leds_animator_clear, /* name */
/********************************************************************
-** Solidified function: add_animator
+** Solidified function: set_strip_bri
********************************************************************/
-be_local_closure(Leds_animator_add_animator, /* name */
+be_local_closure(Animate_core_set_strip_bri, /* name */
be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(animators),
- /* K1 */ be_nested_str_weak(push),
- }),
- be_str_weak(add_animator),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: animate
-********************************************************************/
-be_local_closure(Leds_animator_animate, /* name */
- be_nested_proto(
- 1, /* nstack */
+ 10, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(animate),
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(strip),
+ /* K1 */ be_nested_str_weak(set_bri),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(scale_uint),
+ /* K4 */ be_nested_str_weak(bri),
+ /* K5 */ be_const_int(0),
+ }),
+ be_str_weak(set_strip_bri),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
+ ( &(const binstruction[12]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0xB80E0400, // 0002 GETNGBL R3 K2
+ 0x8C0C0703, // 0003 GETMET R3 R3 K3
+ 0x88140104, // 0004 GETMBR R5 R0 K4
+ 0x58180005, // 0005 LDCONST R6 K5
+ 0x541E0063, // 0006 LDINT R7 100
+ 0x58200005, // 0007 LDCONST R8 K5
+ 0x542600FE, // 0008 LDINT R9 255
+ 0x7C0C0C00, // 0009 CALL R3 6
+ 0x7C040400, // 000A CALL R1 2
+ 0x80000000, // 000B RET 0
})
)
);
@@ -165,11 +82,11 @@ be_local_closure(Leds_animator_animate, /* name */
/********************************************************************
-** Solidified function: get_bri
+** Solidified function: remove_painter
********************************************************************/
-be_local_closure(Leds_animator_get_bri, /* name */
+be_local_closure(Animate_core_remove_painter, /* name */
be_nested_proto(
- 3, /* nstack */
+ 8, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -177,68 +94,28 @@ be_local_closure(Leds_animator_get_bri, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(bri),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(painters),
+ /* K1 */ be_nested_str_weak(remove),
+ /* K2 */ be_nested_str_weak(find),
+ /* K3 */ be_nested_str_weak(clear),
}),
- be_str_weak(get_bri),
+ be_str_weak(remove_painter),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
+ ( &(const binstruction[13]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x80040400, // 0001 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_bri
-********************************************************************/
-be_local_closure(Leds_animator_set_bri, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(bri),
- }),
- be_str_weak(set_bri),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_back_color
-********************************************************************/
-be_local_closure(Leds_animator_set_back_color, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(back_color),
- }),
- be_str_weak(set_back_color),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x200C0203, // 0002 NE R3 R1 R3
+ 0x780E0005, // 0003 JMPF R3 #000A
+ 0x8C0C0501, // 0004 GETMET R3 R2 K1
+ 0x8C140502, // 0005 GETMET R5 R2 K2
+ 0x5C1C0200, // 0006 MOVE R7 R1
+ 0x7C140400, // 0007 CALL R5 2
+ 0x7C0C0400, // 0008 CALL R3 2
+ 0x70020001, // 0009 JMP #000C
+ 0x8C0C0503, // 000A GETMET R3 R2 K3
+ 0x7C0C0200, // 000B CALL R3 1
+ 0x80000000, // 000C RET 0
})
)
);
@@ -248,7 +125,7 @@ be_local_closure(Leds_animator_set_back_color, /* name */
/********************************************************************
** Solidified function: stop
********************************************************************/
-be_local_closure(Leds_animator_stop, /* name */
+be_local_closure(Animate_core_stop, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
@@ -297,28 +174,26 @@ be_local_closure(Leds_animator_stop, /* name */
/********************************************************************
-** Solidified function: set_cb
+** Solidified function: get_bri
********************************************************************/
-be_local_closure(Leds_animator_set_cb, /* name */
+be_local_closure(Animate_core_get_bri, /* name */
be_nested_proto(
3, /* nstack */
- 3, /* argc */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(animate_object),
- /* K1 */ be_nested_str_weak(animate_method),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(bri),
}),
- be_str_weak(set_cb),
+ be_str_weak(get_bri),
&be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x80000000, // 0002 RET 0
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x80040400, // 0001 RET 1 R2
})
)
);
@@ -326,92 +201,29 @@ be_local_closure(Leds_animator_set_cb, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified function: set_bri
********************************************************************/
-be_local_closure(Leds_animator_init, /* name */
+be_local_closure(Animate_core_set_bri, /* name */
be_nested_proto(
- 5, /* nstack */
- 3, /* argc */
+ 4, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 2, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fast_loop),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0x80000000, // 0003 RET 0
- })
- ),
- }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(strip),
- /* K1 */ be_nested_str_weak(bri),
- /* K2 */ be_nested_str_weak(running),
- /* K3 */ be_nested_str_weak(pixel_count),
- /* K4 */ be_nested_str_weak(animators),
- /* K5 */ be_nested_str_weak(painters),
- /* K6 */ be_nested_str_weak(clear),
- /* K7 */ be_nested_str_weak(frame),
- /* K8 */ be_nested_str_weak(Leds_frame),
- /* K9 */ be_nested_str_weak(layer),
- /* K10 */ be_nested_str_weak(fast_loop_cb),
- /* K11 */ be_nested_str_weak(back_color),
- /* K12 */ be_const_int(0),
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(bri),
+ /* K1 */ be_nested_str_weak(set_strip_bri),
}),
- be_str_weak(init),
+ be_str_weak(set_bri),
&be_const_str_solidified,
- ( &(const binstruction[32]) { /* code */
+ ( &(const binstruction[ 4]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
- 0x4C0C0000, // 0001 LDNIL R3
- 0x1C0C0403, // 0002 EQ R3 R2 R3
- 0x780E0000, // 0003 JMPF R3 #0005
- 0x540A0031, // 0004 LDINT R2 50
- 0x90020202, // 0005 SETMBR R0 K1 R2
- 0x500C0000, // 0006 LDBOOL R3 0 0
- 0x90020403, // 0007 SETMBR R0 K2 R3
- 0x8C0C0303, // 0008 GETMET R3 R1 K3
- 0x7C0C0200, // 0009 CALL R3 1
- 0x90020603, // 000A SETMBR R0 K3 R3
- 0x600C0012, // 000B GETGBL R3 G18
- 0x7C0C0000, // 000C CALL R3 0
- 0x90020803, // 000D SETMBR R0 K4 R3
- 0x600C0012, // 000E GETGBL R3 G18
- 0x7C0C0000, // 000F CALL R3 0
- 0x90020A03, // 0010 SETMBR R0 K5 R3
- 0x8C0C0106, // 0011 GETMET R3 R0 K6
- 0x7C0C0200, // 0012 CALL R3 1
- 0xB80E1000, // 0013 GETNGBL R3 K8
- 0x88100103, // 0014 GETMBR R4 R0 K3
- 0x7C0C0200, // 0015 CALL R3 1
- 0x90020E03, // 0016 SETMBR R0 K7 R3
- 0xB80E1000, // 0017 GETNGBL R3 K8
- 0x88100103, // 0018 GETMBR R4 R0 K3
- 0x7C0C0200, // 0019 CALL R3 1
- 0x90021203, // 001A SETMBR R0 K9 R3
- 0x840C0000, // 001B CLOSURE R3 P0
- 0x90021403, // 001C SETMBR R0 K10 R3
- 0x9002170C, // 001D SETMBR R0 K11 K12
- 0xA0000000, // 001E CLOSE R0
- 0x80000000, // 001F RET 0
+ 0x8C080101, // 0001 GETMET R2 R0 K1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x80000000, // 0003 RET 0
})
)
);
@@ -421,7 +233,7 @@ be_local_closure(Leds_animator_init, /* name */
/********************************************************************
** Solidified function: add_painter
********************************************************************/
-be_local_closure(Leds_animator_add_painter, /* name */
+be_local_closure(Animate_core_add_painter, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
@@ -431,18 +243,26 @@ be_local_closure(Leds_animator_add_painter, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
+ ( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(painters),
- /* K1 */ be_nested_str_weak(push),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(push),
}),
be_str_weak(add_painter),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
+ ( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
- 0x80000000, // 0004 RET 0
+ 0x4C0C0000, // 0004 LDNIL R3
+ 0x1C080403, // 0005 EQ R2 R2 R3
+ 0x780A0003, // 0006 JMPF R2 #000B
+ 0x88080100, // 0007 GETMBR R2 R0 K0
+ 0x8C080502, // 0008 GETMET R2 R2 K2
+ 0x5C100200, // 0009 MOVE R4 R1
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000000, // 000B RET 0
})
)
);
@@ -452,9 +272,9 @@ be_local_closure(Leds_animator_add_painter, /* name */
/********************************************************************
** Solidified function: fast_loop
********************************************************************/
-be_local_closure(Leds_animator_fast_loop, /* name */
+be_local_closure(Animate_core_fast_loop, /* name */
be_nested_proto(
- 12, /* nstack */
+ 13, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -483,29 +303,29 @@ be_local_closure(Leds_animator_fast_loop, /* name */
/* K17 */ be_const_int(-16777216),
/* K18 */ be_nested_str_weak(paint),
/* K19 */ be_nested_str_weak(blend_pixels),
- /* K20 */ be_nested_str_weak(animate_object),
- /* K21 */ be_nested_str_weak(animate_method),
+ /* K20 */ be_nested_str_weak(obj),
+ /* K21 */ be_nested_str_weak(mth),
/* K22 */ be_nested_str_weak(paste_pixels),
/* K23 */ be_nested_str_weak(pixels_buffer),
- /* K24 */ be_nested_str_weak(bri),
- /* K25 */ be_nested_str_weak(gamma),
+ /* K24 */ be_nested_str_weak(get_bri),
+ /* K25 */ be_nested_str_weak(get_gamma),
/* K26 */ be_nested_str_weak(dirty),
/* K27 */ be_nested_str_weak(show),
}),
be_str_weak(fast_loop),
&be_const_str_solidified,
- ( &(const binstruction[81]) { /* code */
+ ( &(const binstruction[84]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x7806004D, // 0001 JMPF R1 #0050
+ 0x78060050, // 0001 JMPF R1 #0053
0xB8060200, // 0002 GETNGBL R1 K1
0x8C040302, // 0003 GETMET R1 R1 K2
0x880C0103, // 0004 GETMBR R3 R0 K3
0x7C040400, // 0005 CALL R1 2
- 0x78060048, // 0006 JMPF R1 #0050
+ 0x7806004B, // 0006 JMPF R1 #0053
0x88040104, // 0007 GETMBR R1 R0 K4
0x8C040305, // 0008 GETMET R1 R1 K5
0x7C040200, // 0009 CALL R1 1
- 0x78060044, // 000A JMPF R1 #0050
+ 0x78060047, // 000A JMPF R1 #0053
0x88040106, // 000B GETMBR R1 R0 K6
0x8C040307, // 000C GETMET R1 R1 K7
0x880C0108, // 000D GETMBR R3 R0 K8
@@ -565,17 +385,379 @@ be_local_closure(Leds_animator_fast_loop, /* name */
0x88240104, // 0043 GETMBR R9 R0 K4
0x8C241317, // 0044 GETMET R9 R9 K23
0x7C240200, // 0045 CALL R9 1
- 0x88280118, // 0046 GETMBR R10 R0 K24
- 0x882C0104, // 0047 GETMBR R11 R0 K4
- 0x882C1719, // 0048 GETMBR R11 R11 K25
- 0x7C1C0800, // 0049 CALL R7 4
- 0x881C0104, // 004A GETMBR R7 R0 K4
- 0x8C1C0F1A, // 004B GETMET R7 R7 K26
- 0x7C1C0200, // 004C CALL R7 1
+ 0x88280104, // 0046 GETMBR R10 R0 K4
+ 0x8C281518, // 0047 GETMET R10 R10 K24
+ 0x7C280200, // 0048 CALL R10 1
+ 0x882C0104, // 0049 GETMBR R11 R0 K4
+ 0x8C2C1719, // 004A GETMET R11 R11 K25
+ 0x7C2C0200, // 004B CALL R11 1
+ 0x7C1C0800, // 004C CALL R7 4
0x881C0104, // 004D GETMBR R7 R0 K4
- 0x8C1C0F1B, // 004E GETMET R7 R7 K27
+ 0x8C1C0F1A, // 004E GETMET R7 R7 K26
0x7C1C0200, // 004F CALL R7 1
- 0x80000000, // 0050 RET 0
+ 0x881C0104, // 0050 GETMBR R7 R0 K4
+ 0x8C1C0F1B, // 0051 GETMET R7 R7 K27
+ 0x7C1C0200, // 0052 CALL R7 1
+ 0x80000000, // 0053 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: remove_animator
+********************************************************************/
+be_local_closure(Animate_core_remove_animator, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(animators),
+ /* K1 */ be_nested_str_weak(remove),
+ /* K2 */ be_nested_str_weak(find),
+ /* K3 */ be_nested_str_weak(clear),
+ }),
+ be_str_weak(remove_animator),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x200C0203, // 0002 NE R3 R1 R3
+ 0x780E0005, // 0003 JMPF R3 #000A
+ 0x8C0C0501, // 0004 GETMET R3 R2 K1
+ 0x8C140502, // 0005 GETMET R5 R2 K2
+ 0x5C1C0200, // 0006 MOVE R7 R1
+ 0x7C140400, // 0007 CALL R5 2
+ 0x7C0C0400, // 0008 CALL R3 2
+ 0x70020001, // 0009 JMP #000C
+ 0x8C0C0503, // 000A GETMET R3 R2 K3
+ 0x7C0C0200, // 000B CALL R3 1
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: animate
+********************************************************************/
+be_local_closure(Animate_core_animate, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(animate),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_current
+********************************************************************/
+be_local_closure(Animate_core_set_current, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(global),
+ /* K1 */ be_nested_str_weak(_cur_anim),
+ }),
+ be_str_weak(set_current),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x90060200, // 0001 SETMBR R1 K1 R0
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Animate_core_init, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 2, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(fast_loop),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0x80000000, // 0003 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[15]) { /* constants */
+ /* K0 */ be_nested_str_weak(animate),
+ /* K1 */ be_nested_str_weak(strip),
+ /* K2 */ be_nested_str_weak(bri),
+ /* K3 */ be_nested_str_weak(set_strip_bri),
+ /* K4 */ be_nested_str_weak(running),
+ /* K5 */ be_nested_str_weak(pixel_count),
+ /* K6 */ be_nested_str_weak(animators),
+ /* K7 */ be_nested_str_weak(painters),
+ /* K8 */ be_nested_str_weak(clear),
+ /* K9 */ be_nested_str_weak(frame),
+ /* K10 */ be_nested_str_weak(layer),
+ /* K11 */ be_nested_str_weak(fast_loop_cb),
+ /* K12 */ be_nested_str_weak(back_color),
+ /* K13 */ be_const_int(0),
+ /* K14 */ be_nested_str_weak(set_current),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[37]) { /* code */
+ 0xA40E0000, // 0000 IMPORT R3 K0
+ 0x90020201, // 0001 SETMBR R0 K1 R1
+ 0x4C100000, // 0002 LDNIL R4
+ 0x1C100404, // 0003 EQ R4 R2 R4
+ 0x78120000, // 0004 JMPF R4 #0006
+ 0x540A0031, // 0005 LDINT R2 50
+ 0x90020402, // 0006 SETMBR R0 K2 R2
+ 0x8C100103, // 0007 GETMET R4 R0 K3
+ 0x7C100200, // 0008 CALL R4 1
+ 0x50100000, // 0009 LDBOOL R4 0 0
+ 0x90020804, // 000A SETMBR R0 K4 R4
+ 0x8C100305, // 000B GETMET R4 R1 K5
+ 0x7C100200, // 000C CALL R4 1
+ 0x90020A04, // 000D SETMBR R0 K5 R4
+ 0x60100012, // 000E GETGBL R4 G18
+ 0x7C100000, // 000F CALL R4 0
+ 0x90020C04, // 0010 SETMBR R0 K6 R4
+ 0x60100012, // 0011 GETGBL R4 G18
+ 0x7C100000, // 0012 CALL R4 0
+ 0x90020E04, // 0013 SETMBR R0 K7 R4
+ 0x8C100108, // 0014 GETMET R4 R0 K8
+ 0x7C100200, // 0015 CALL R4 1
+ 0x8C100709, // 0016 GETMET R4 R3 K9
+ 0x88180105, // 0017 GETMBR R6 R0 K5
+ 0x7C100400, // 0018 CALL R4 2
+ 0x90021204, // 0019 SETMBR R0 K9 R4
+ 0x8C100709, // 001A GETMET R4 R3 K9
+ 0x88180105, // 001B GETMBR R6 R0 K5
+ 0x7C100400, // 001C CALL R4 2
+ 0x90021404, // 001D SETMBR R0 K10 R4
+ 0x84100000, // 001E CLOSURE R4 P0
+ 0x90021604, // 001F SETMBR R0 K11 R4
+ 0x9002190D, // 0020 SETMBR R0 K12 K13
+ 0x8C10010E, // 0021 GETMET R4 R0 K14
+ 0x7C100200, // 0022 CALL R4 1
+ 0xA0000000, // 0023 CLOSE R0
+ 0x80000000, // 0024 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_cb
+********************************************************************/
+be_local_closure(Animate_core_set_cb, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(obj),
+ /* K1 */ be_nested_str_weak(mth),
+ }),
+ be_str_weak(set_cb),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_back_color
+********************************************************************/
+be_local_closure(Animate_core_set_back_color, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(back_color),
+ }),
+ be_str_weak(set_back_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_background_animator
+********************************************************************/
+be_local_closure(Animate_core_add_background_animator, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(set_cb),
+ /* K1 */ be_nested_str_weak(set_back_color),
+ /* K2 */ be_nested_str_weak(add_animator),
+ }),
+ be_str_weak(add_background_animator),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x5C100000, // 0001 MOVE R4 R0
+ 0x88140101, // 0002 GETMBR R5 R0 K1
+ 0x7C080600, // 0003 CALL R2 3
+ 0x8C080102, // 0004 GETMET R2 R0 K2
+ 0x5C100200, // 0005 MOVE R4 R1
+ 0x7C080400, // 0006 CALL R2 2
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_animator
+********************************************************************/
+be_local_closure(Animate_core_add_animator, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(animators),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(push),
+ }),
+ be_str_weak(add_animator),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x4C0C0000, // 0004 LDNIL R3
+ 0x1C080403, // 0005 EQ R2 R2 R3
+ 0x780A0003, // 0006 JMPF R2 #000B
+ 0x88080100, // 0007 GETMBR R2 R0 K0
+ 0x8C080502, // 0008 GETMET R2 R2 K2
+ 0x5C100200, // 0009 MOVE R4 R1
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: remove
+********************************************************************/
+be_local_closure(Animate_core_remove, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(clear),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_fast_loop),
+ /* K3 */ be_nested_str_weak(fast_loop_cb),
+ }),
+ be_str_weak(remove),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0xB8060200, // 0002 GETNGBL R1 K1
+ 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x880C0103, // 0004 GETMBR R3 R0 K3
+ 0x7C040400, // 0005 CALL R1 2
+ 0x80000000, // 0006 RET 0
})
)
);
@@ -585,7 +767,7 @@ be_local_closure(Leds_animator_fast_loop, /* name */
/********************************************************************
** Solidified function: start
********************************************************************/
-be_local_closure(Leds_animator_start, /* name */
+be_local_closure(Animate_core_start, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
@@ -636,49 +818,53 @@ be_local_closure(Leds_animator_start, /* name */
/********************************************************************
-** Solidified class: Leds_animator
+** Solidified class: Animate_core
********************************************************************/
-be_local_class(Leds_animator,
+be_local_class(Animate_core,
13,
NULL,
- be_nested_map(28,
+ be_nested_map(32,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(bri, 23), be_const_var(2) },
- { be_const_key_weak(remove, -1), be_const_closure(Leds_animator_remove_closure) },
- { be_const_key_weak(start, 21), be_const_closure(Leds_animator_start_closure) },
- { be_const_key_weak(fast_loop, -1), be_const_closure(Leds_animator_fast_loop_closure) },
- { be_const_key_weak(add_animator, -1), be_const_closure(Leds_animator_add_animator_closure) },
- { be_const_key_weak(FAST_LOOP_MIN, 8), be_const_int(20) },
- { be_const_key_weak(animate, -1), be_const_closure(Leds_animator_animate_closure) },
- { be_const_key_weak(pixel_count, -1), be_const_var(1) },
+ { be_const_key_weak(set_strip_bri, -1), be_const_closure(Animate_core_set_strip_bri_closure) },
{ be_const_key_weak(animators, -1), be_const_var(4) },
- { be_const_key_weak(back_color, 11), be_const_var(12) },
- { be_const_key_weak(fast_loop_cb, 12), be_const_var(6) },
- { be_const_key_weak(frame, -1), be_const_var(10) },
- { be_const_key_weak(animate_object, -1), be_const_var(8) },
- { be_const_key_weak(stop, -1), be_const_closure(Leds_animator_stop_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Leds_animator_init_closure) },
- { be_const_key_weak(set_cb, 13), be_const_closure(Leds_animator_set_cb_closure) },
- { be_const_key_weak(running, -1), be_const_var(3) },
- { be_const_key_weak(strip, 15), be_const_var(0) },
+ { be_const_key_weak(clear, 0), be_const_closure(Animate_core_clear_closure) },
+ { be_const_key_weak(remove, -1), be_const_closure(Animate_core_remove_closure) },
+ { be_const_key_weak(mth, -1), be_const_var(9) },
+ { be_const_key_weak(stop, 1), be_const_closure(Animate_core_stop_closure) },
+ { be_const_key_weak(fast_loop_cb, 30), be_const_var(6) },
+ { be_const_key_weak(get_bri, -1), be_const_closure(Animate_core_get_bri_closure) },
+ { be_const_key_weak(add_animator, -1), be_const_closure(Animate_core_add_animator_closure) },
+ { be_const_key_weak(add_background_animator, -1), be_const_closure(Animate_core_add_background_animator_closure) },
{ be_const_key_weak(fast_loop_next, -1), be_const_var(7) },
- { be_const_key_weak(set_back_color, 14), be_const_closure(Leds_animator_set_back_color_closure) },
- { be_const_key_weak(add_painter, -1), be_const_closure(Leds_animator_add_painter_closure) },
- { be_const_key_weak(set_bri, 24), be_const_closure(Leds_animator_set_bri_closure) },
- { be_const_key_weak(layer, 9), be_const_var(11) },
- { be_const_key_weak(animate_method, 6), be_const_var(9) },
- { be_const_key_weak(get_bri, -1), be_const_closure(Leds_animator_get_bri_closure) },
+ { be_const_key_weak(remove_animator, -1), be_const_closure(Animate_core_remove_animator_closure) },
+ { be_const_key_weak(add_painter, 28), be_const_closure(Animate_core_add_painter_closure) },
+ { be_const_key_weak(FAST_LOOP_MIN, -1), be_const_int(20) },
+ { be_const_key_weak(fast_loop, -1), be_const_closure(Animate_core_fast_loop_closure) },
+ { be_const_key_weak(set_back_color, 11), be_const_closure(Animate_core_set_back_color_closure) },
+ { be_const_key_weak(animate, 8), be_const_closure(Animate_core_animate_closure) },
+ { be_const_key_weak(strip, 24), be_const_var(0) },
+ { be_const_key_weak(layer, -1), be_const_var(11) },
+ { be_const_key_weak(init, -1), be_const_closure(Animate_core_init_closure) },
+ { be_const_key_weak(bri, -1), be_const_var(2) },
+ { be_const_key_weak(set_cb, 13), be_const_closure(Animate_core_set_cb_closure) },
+ { be_const_key_weak(back_color, 18), be_const_var(12) },
+ { be_const_key_weak(pixel_count, 15), be_const_var(1) },
+ { be_const_key_weak(set_current, -1), be_const_closure(Animate_core_set_current_closure) },
{ be_const_key_weak(painters, -1), be_const_var(5) },
- { be_const_key_weak(clear, 3), be_const_closure(Leds_animator_clear_closure) },
- { be_const_key_weak(add_background_animator, 2), be_const_closure(Leds_animator_add_background_animator_closure) },
+ { be_const_key_weak(obj, 10), be_const_var(8) },
+ { be_const_key_weak(set_bri, 9), be_const_closure(Animate_core_set_bri_closure) },
+ { be_const_key_weak(running, -1), be_const_var(3) },
+ { be_const_key_weak(remove_painter, 3), be_const_closure(Animate_core_remove_painter_closure) },
+ { be_const_key_weak(frame, -1), be_const_var(10) },
+ { be_const_key_weak(start, -1), be_const_closure(Animate_core_start_closure) },
})),
- be_str_weak(Leds_animator)
+ be_str_weak(Animate_core)
);
/*******************************************************************/
-void be_load_Leds_animator_class(bvm *vm) {
- be_pushntvclass(vm, &be_class_Leds_animator);
- be_setglobal(vm, "Leds_animator");
+void be_load_Animate_core_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Animate_core);
+ be_setglobal(vm, "Animate_core");
be_pop(vm, 1);
}
/********************************************************************/
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds_1_animate_effects.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h
similarity index 64%
rename from lib/libesp32/berry_tasmota/src/solidify/solidified_leds_1_animate_effects.h
rename to lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h
index 1c2891e5b..360e3d2d8 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds_1_animate_effects.h
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h
@@ -1,15 +1,125 @@
-/* Solidification of leds_1_animate_effects.h */
+/* Solidification of animate_2_animate_effects.h */
/********************************************************************\
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
-extern const bclass be_class_Leds_pulse;
+extern const bclass be_class_Animate_painter;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Animate_painter_init, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(global),
+ /* K1 */ be_nested_str_weak(_cur_anim),
+ /* K2 */ be_nested_str_weak(add_painter),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x4C080000, // 0002 LDNIL R2
+ 0x20080202, // 0003 NE R2 R1 R2
+ 0x780A0002, // 0004 JMPF R2 #0008
+ 0x8C080302, // 0005 GETMET R2 R1 K2
+ 0x5C100000, // 0006 MOVE R4 R0
+ 0x7C080400, // 0007 CALL R2 2
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: paint
+********************************************************************/
+be_local_closure(Animate_painter_paint, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(paint),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Animate_painter
+********************************************************************/
+be_local_class(Animate_painter,
+ 0,
+ NULL,
+ be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(paint, -1), be_const_closure(Animate_painter_paint_closure) },
+ { be_const_key_weak(init, 0), be_const_closure(Animate_painter_init_closure) },
+ })),
+ be_str_weak(Animate_painter)
+);
+/*******************************************************************/
+
+void be_load_Animate_painter_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Animate_painter);
+ be_setglobal(vm, "Animate_painter");
+ be_pop(vm, 1);
+}
+
+extern const bclass be_class_Animate_pulse;
+
+/********************************************************************
+** Solidified function: set_pulse_size
+********************************************************************/
+be_local_closure(Animate_pulse_set_pulse_size, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(pulse_size),
+ }),
+ be_str_weak(set_pulse_size),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
/********************************************************************
** Solidified function: set_slew_size
********************************************************************/
-be_local_closure(Leds_pulse_set_slew_size, /* name */
+be_local_closure(Animate_pulse_set_slew_size, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
@@ -36,7 +146,7 @@ be_local_closure(Leds_pulse_set_slew_size, /* name */
/********************************************************************
** Solidified function: set_back_color
********************************************************************/
-be_local_closure(Leds_pulse_set_back_color, /* name */
+be_local_closure(Animate_pulse_set_back_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
@@ -61,9 +171,9 @@ be_local_closure(Leds_pulse_set_back_color, /* name */
/********************************************************************
-** Solidified function: set_index
+** Solidified function: set_pos
********************************************************************/
-be_local_closure(Leds_pulse_set_index, /* name */
+be_local_closure(Animate_pulse_set_pos, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
@@ -74,9 +184,9 @@ be_local_closure(Leds_pulse_set_index, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(index),
+ /* K0 */ be_nested_str_weak(pos),
}),
- be_str_weak(set_index),
+ be_str_weak(set_pos),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
@@ -87,92 +197,10 @@ be_local_closure(Leds_pulse_set_index, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: set_pulse_size
-********************************************************************/
-be_local_closure(Leds_pulse_set_pulse_size, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(pulse_size),
- }),
- be_str_weak(set_pulse_size),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Leds_pulse_init, /* name */
- be_nested_proto(
- 5, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_const_int(16777215),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(color),
- /* K4 */ be_nested_str_weak(back_color),
- /* K5 */ be_const_int(-16777216),
- /* K6 */ be_nested_str_weak(pulse_size),
- /* K7 */ be_nested_str_weak(slew_size),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[23]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x1C100204, // 0001 EQ R4 R1 R4
- 0x78120000, // 0002 JMPF R4 #0004
- 0x58040000, // 0003 LDCONST R1 K0
- 0x4C100000, // 0004 LDNIL R4
- 0x1C100404, // 0005 EQ R4 R2 R4
- 0x78120000, // 0006 JMPF R4 #0008
- 0x58080001, // 0007 LDCONST R2 K1
- 0x4C100000, // 0008 LDNIL R4
- 0x1C100604, // 0009 EQ R4 R3 R4
- 0x78120000, // 000A JMPF R4 #000C
- 0x580C0002, // 000B LDCONST R3 K2
- 0x90020601, // 000C SETMBR R0 K3 R1
- 0x90020905, // 000D SETMBR R0 K4 K5
- 0x14100502, // 000E LT R4 R2 K2
- 0x78120000, // 000F JMPF R4 #0011
- 0x58080002, // 0010 LDCONST R2 K2
- 0x90020C02, // 0011 SETMBR R0 K6 R2
- 0x14100702, // 0012 LT R4 R3 K2
- 0x78120000, // 0013 JMPF R4 #0015
- 0x580C0002, // 0014 LDCONST R3 K2
- 0x90020E03, // 0015 SETMBR R0 K7 R3
- 0x80000000, // 0016 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: set_color
********************************************************************/
-be_local_closure(Leds_pulse_set_color, /* name */
+be_local_closure(Animate_pulse_set_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
@@ -196,10 +224,73 @@ be_local_closure(Leds_pulse_set_color, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Animate_pulse_init, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_const_int(16777215),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(color),
+ /* K5 */ be_nested_str_weak(back_color),
+ /* K6 */ be_const_int(-16777216),
+ /* K7 */ be_nested_str_weak(pulse_size),
+ /* K8 */ be_nested_str_weak(slew_size),
+ /* K9 */ be_nested_str_weak(pos),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[29]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100900, // 0003 GETMET R4 R4 K0
+ 0x7C100200, // 0004 CALL R4 1
+ 0x4C100000, // 0005 LDNIL R4
+ 0x1C100204, // 0006 EQ R4 R1 R4
+ 0x78120000, // 0007 JMPF R4 #0009
+ 0x58040001, // 0008 LDCONST R1 K1
+ 0x4C100000, // 0009 LDNIL R4
+ 0x1C100404, // 000A EQ R4 R2 R4
+ 0x78120000, // 000B JMPF R4 #000D
+ 0x58080002, // 000C LDCONST R2 K2
+ 0x4C100000, // 000D LDNIL R4
+ 0x1C100604, // 000E EQ R4 R3 R4
+ 0x78120000, // 000F JMPF R4 #0011
+ 0x580C0003, // 0010 LDCONST R3 K3
+ 0x90020801, // 0011 SETMBR R0 K4 R1
+ 0x90020B06, // 0012 SETMBR R0 K5 K6
+ 0x14100503, // 0013 LT R4 R2 K3
+ 0x78120000, // 0014 JMPF R4 #0016
+ 0x58080003, // 0015 LDCONST R2 K3
+ 0x90020E02, // 0016 SETMBR R0 K7 R2
+ 0x14100703, // 0017 LT R4 R3 K3
+ 0x78120000, // 0018 JMPF R4 #001A
+ 0x580C0003, // 0019 LDCONST R3 K3
+ 0x90021003, // 001A SETMBR R0 K8 R3
+ 0x90021303, // 001B SETMBR R0 K9 K3
+ 0x80000000, // 001C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: paint
********************************************************************/
-be_local_closure(Leds_pulse_paint, /* name */
+be_local_closure(Animate_pulse_paint, /* name */
be_nested_proto(
22, /* nstack */
2, /* argc */
@@ -213,7 +304,7 @@ be_local_closure(Leds_pulse_paint, /* name */
/* K0 */ be_nested_str_weak(back_color),
/* K1 */ be_const_int(-16777216),
/* K2 */ be_nested_str_weak(fill_pixels),
- /* K3 */ be_nested_str_weak(index),
+ /* K3 */ be_nested_str_weak(pos),
/* K4 */ be_nested_str_weak(slew_size),
/* K5 */ be_nested_str_weak(pulse_size),
/* K6 */ be_nested_str_weak(color),
@@ -325,33 +416,34 @@ be_local_closure(Leds_pulse_paint, /* name */
/********************************************************************
-** Solidified class: Leds_pulse
+** Solidified class: Animate_pulse
********************************************************************/
-be_local_class(Leds_pulse,
+extern const bclass be_class_Animate_painter;
+be_local_class(Animate_pulse,
5,
- NULL,
+ &be_class_Animate_painter,
be_nested_map(12,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(paint, 9), be_const_closure(Leds_pulse_paint_closure) },
- { be_const_key_weak(set_slew_size, -1), be_const_closure(Leds_pulse_set_slew_size_closure) },
+ { be_const_key_weak(paint, -1), be_const_closure(Animate_pulse_paint_closure) },
+ { be_const_key_weak(set_slew_size, -1), be_const_closure(Animate_pulse_set_slew_size_closure) },
{ be_const_key_weak(pulse_size, -1), be_const_var(4) },
- { be_const_key_weak(set_back_color, 6), be_const_closure(Leds_pulse_set_back_color_closure) },
- { be_const_key_weak(set_index, 7), be_const_closure(Leds_pulse_set_index_closure) },
- { be_const_key_weak(back_color, -1), be_const_var(1) },
- { be_const_key_weak(set_color, 8), be_const_closure(Leds_pulse_set_color_closure) },
+ { be_const_key_weak(set_back_color, 8), be_const_closure(Animate_pulse_set_back_color_closure) },
{ be_const_key_weak(color, -1), be_const_var(0) },
- { be_const_key_weak(init, -1), be_const_closure(Leds_pulse_init_closure) },
- { be_const_key_weak(set_pulse_size, -1), be_const_closure(Leds_pulse_set_pulse_size_closure) },
+ { be_const_key_weak(back_color, -1), be_const_var(1) },
+ { be_const_key_weak(set_pos, -1), be_const_closure(Animate_pulse_set_pos_closure) },
+ { be_const_key_weak(set_color, -1), be_const_closure(Animate_pulse_set_color_closure) },
+ { be_const_key_weak(init, 7), be_const_closure(Animate_pulse_init_closure) },
+ { be_const_key_weak(pos, -1), be_const_var(2) },
{ be_const_key_weak(slew_size, 5), be_const_var(3) },
- { be_const_key_weak(index, 0), be_const_var(2) },
+ { be_const_key_weak(set_pulse_size, 0), be_const_closure(Animate_pulse_set_pulse_size_closure) },
})),
- be_str_weak(Leds_pulse)
+ be_str_weak(Animate_pulse)
);
/*******************************************************************/
-void be_load_Leds_pulse_class(bvm *vm) {
- be_pushntvclass(vm, &be_class_Leds_pulse);
- be_setglobal(vm, "Leds_pulse");
+void be_load_Animate_pulse_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Animate_pulse);
+ be_setglobal(vm, "Animate_pulse");
be_pop(vm, 1);
}
/********************************************************************/
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_animate_module.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h
similarity index 62%
rename from lib/libesp32/berry_tasmota/src/solidify/solidified_animate_module.h
rename to lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h
index 5d0f45c10..e64059188 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_animate_module.h
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h
@@ -1,17 +1,17 @@
-/* Solidification of animate_module.h */
+/* Solidification of animate_9_module.h */
/********************************************************************\
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
-extern const bclass be_class_Animate_palette;
+extern const bclass be_class_Animate_animator;
/********************************************************************
-** Solidified function: to_css_gradient
+** Solidified function: is_running
********************************************************************/
-be_local_closure(Animate_palette_to_css_gradient, /* name */
+be_local_closure(Animate_animator_is_running, /* name */
be_nested_proto(
- 15, /* nstack */
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -19,62 +19,16 @@ be_local_closure(Animate_palette_to_css_gradient, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_palette),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right),
- /* K3 */ be_nested_str_weak(palette),
- /* K4 */ be_nested_str_weak(get),
- /* K5 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25),
- /* K6 */ be_const_real_hex(0x41200000),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(_X29_X3B),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(running),
}),
- be_str_weak(to_css_gradient),
+ be_str_weak(is_running),
&be_const_str_solidified,
- ( &(const binstruction[42]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x541203E7, // 0002 LDINT R4 1000
- 0x7C040600, // 0003 CALL R1 3
- 0x58080002, // 0004 LDCONST R2 K2
- 0x580C0001, // 0005 LDCONST R3 K1
- 0x6010000C, // 0006 GETGBL R4 G12
- 0x5C140200, // 0007 MOVE R5 R1
- 0x7C100200, // 0008 CALL R4 1
- 0x14100604, // 0009 LT R4 R3 R4
- 0x7812001C, // 000A JMPF R4 #0028
- 0x94100203, // 000B GETIDX R4 R1 R3
- 0x88140103, // 000C GETMBR R5 R0 K3
- 0x8C140B04, // 000D GETMET R5 R5 K4
- 0x541E0003, // 000E LDINT R7 4
- 0x081C0607, // 000F MUL R7 R3 R7
- 0x54220003, // 0010 LDINT R8 4
- 0x7C140600, // 0011 CALL R5 3
- 0x541A0007, // 0012 LDINT R6 8
- 0x3C180A06, // 0013 SHR R6 R5 R6
- 0x541E00FE, // 0014 LDINT R7 255
- 0x2C180C07, // 0015 AND R6 R6 R7
- 0x541E000F, // 0016 LDINT R7 16
- 0x3C1C0A07, // 0017 SHR R7 R5 R7
- 0x542200FE, // 0018 LDINT R8 255
- 0x2C1C0E08, // 0019 AND R7 R7 R8
- 0x54220017, // 001A LDINT R8 24
- 0x3C200A08, // 001B SHR R8 R5 R8
- 0x542600FE, // 001C LDINT R9 255
- 0x2C201009, // 001D AND R8 R8 R9
- 0x60240018, // 001E GETGBL R9 G24
- 0x58280005, // 001F LDCONST R10 K5
- 0x5C2C0C00, // 0020 MOVE R11 R6
- 0x5C300E00, // 0021 MOVE R12 R7
- 0x5C341000, // 0022 MOVE R13 R8
- 0x0C380906, // 0023 DIV R14 R4 K6
- 0x7C240A00, // 0024 CALL R9 5
- 0x00080409, // 0025 ADD R2 R2 R9
- 0x000C0707, // 0026 ADD R3 R3 K7
- 0x7001FFDD, // 0027 JMP #0006
- 0x00080508, // 0028 ADD R2 R2 K8
- 0x80040400, // 0029 RET 1 R2
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040017, // 0000 GETGBL R1 G23
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
})
)
);
@@ -82,102 +36,23 @@ be_local_closure(Animate_palette_to_css_gradient, /* name */
/********************************************************************
-** Solidified function: parse_palette
+** Solidified function: beat
********************************************************************/
-be_local_closure(Animate_palette_parse_palette, /* name */
+be_local_closure(Animate_animator_beat, /* name */
be_nested_proto(
- 15, /* nstack */
- 3, /* argc */
+ 1, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(slots),
- /* K1 */ be_nested_str_weak(resize),
- /* K2 */ be_nested_str_weak(palette),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(scale_int),
- }),
- be_str_weak(parse_palette),
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(beat),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
- 0x600C0012, // 0000 GETGBL R3 G18
- 0x7C0C0000, // 0001 CALL R3 0
- 0x88100100, // 0002 GETMBR R4 R0 K0
- 0x8C140701, // 0003 GETMET R5 R3 K1
- 0x5C1C0800, // 0004 MOVE R7 R4
- 0x7C140400, // 0005 CALL R5 2
- 0x88140102, // 0006 GETMBR R5 R0 K2
- 0x8C140B03, // 0007 GETMET R5 R5 K3
- 0x581C0004, // 0008 LDCONST R7 K4
- 0x58200005, // 0009 LDCONST R8 K5
- 0x7C140600, // 000A CALL R5 3
- 0x20140B04, // 000B NE R5 R5 K4
- 0x78160024, // 000C JMPF R5 #0032
- 0x58140004, // 000D LDCONST R5 K4
- 0x58180004, // 000E LDCONST R6 K4
- 0x041C0905, // 000F SUB R7 R4 K5
- 0x141C0C07, // 0010 LT R7 R6 R7
- 0x781E0008, // 0011 JMPF R7 #001B
- 0x881C0102, // 0012 GETMBR R7 R0 K2
- 0x8C1C0F03, // 0013 GETMET R7 R7 K3
- 0x54260003, // 0014 LDINT R9 4
- 0x08240C09, // 0015 MUL R9 R6 R9
- 0x58280005, // 0016 LDCONST R10 K5
- 0x7C1C0600, // 0017 CALL R7 3
- 0x00140A07, // 0018 ADD R5 R5 R7
- 0x00180D05, // 0019 ADD R6 R6 K5
- 0x7001FFF3, // 001A JMP #000F
- 0x581C0004, // 001B LDCONST R7 K4
- 0x58180004, // 001C LDCONST R6 K4
- 0x14200C04, // 001D LT R8 R6 R4
- 0x78220011, // 001E JMPF R8 #0031
- 0xB8220C00, // 001F GETNGBL R8 K6
- 0x8C201107, // 0020 GETMET R8 R8 K7
- 0x5C280E00, // 0021 MOVE R10 R7
- 0x582C0004, // 0022 LDCONST R11 K4
- 0x5C300A00, // 0023 MOVE R12 R5
- 0x5C340200, // 0024 MOVE R13 R1
- 0x5C380400, // 0025 MOVE R14 R2
- 0x7C200C00, // 0026 CALL R8 6
- 0x980C0C08, // 0027 SETIDX R3 R6 R8
- 0x88200102, // 0028 GETMBR R8 R0 K2
- 0x8C201103, // 0029 GETMET R8 R8 K3
- 0x542A0003, // 002A LDINT R10 4
- 0x08280C0A, // 002B MUL R10 R6 R10
- 0x582C0005, // 002C LDCONST R11 K5
- 0x7C200600, // 002D CALL R8 3
- 0x001C0E08, // 002E ADD R7 R7 R8
- 0x00180D05, // 002F ADD R6 R6 K5
- 0x7001FFEB, // 0030 JMP #001D
- 0x70020013, // 0031 JMP #0046
- 0x58140004, // 0032 LDCONST R5 K4
- 0x14180A04, // 0033 LT R6 R5 R4
- 0x781A0010, // 0034 JMPF R6 #0046
- 0x88180102, // 0035 GETMBR R6 R0 K2
- 0x8C180D03, // 0036 GETMET R6 R6 K3
- 0x54220003, // 0037 LDINT R8 4
- 0x08200A08, // 0038 MUL R8 R5 R8
- 0x58240005, // 0039 LDCONST R9 K5
- 0x7C180600, // 003A CALL R6 3
- 0xB81E0C00, // 003B GETNGBL R7 K6
- 0x8C1C0F07, // 003C GETMET R7 R7 K7
- 0x5C240C00, // 003D MOVE R9 R6
- 0x58280004, // 003E LDCONST R10 K4
- 0x542E00FE, // 003F LDINT R11 255
- 0x5C300200, // 0040 MOVE R12 R1
- 0x5C340400, // 0041 MOVE R13 R2
- 0x7C1C0C00, // 0042 CALL R7 6
- 0x980C0A07, // 0043 SETIDX R3 R5 R7
- 0x00140B05, // 0044 ADD R5 R5 K5
- 0x7001FFEC, // 0045 JMP #0033
- 0x80040600, // 0046 RET 1 R3
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -187,84 +62,33 @@ be_local_closure(Animate_palette_parse_palette, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-be_local_closure(Animate_palette_init, /* name */
+be_local_closure(Animate_animator_init, /* name */
be_nested_proto(
- 7, /* nstack */
- 3, /* argc */
+ 5, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- /* K1 */ be_nested_str_weak(palette),
- /* K2 */ be_nested_str_weak(bri),
- /* K3 */ be_nested_str_weak(slots),
- /* K4 */ be_nested_str_weak(set_duration),
- /* K5 */ be_nested_str_weak(color),
- /* K6 */ be_nested_str_weak(light_state),
- /* K7 */ be_nested_str_weak(RGB),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(global),
+ /* K1 */ be_nested_str_weak(_cur_anim),
+ /* K2 */ be_nested_str_weak(add_animator),
}),
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[26]) { /* code */
- 0x500C0000, // 0000 LDBOOL R3 0 0
- 0x90020003, // 0001 SETMBR R0 K0 R3
- 0x90020201, // 0002 SETMBR R0 K1 R1
- 0x540E0063, // 0003 LDINT R3 100
- 0x90020403, // 0004 SETMBR R0 K2 R3
- 0x600C000C, // 0005 GETGBL R3 G12
- 0x5C100200, // 0006 MOVE R4 R1
- 0x7C0C0200, // 0007 CALL R3 1
- 0x54120003, // 0008 LDINT R4 4
- 0x0C0C0604, // 0009 DIV R3 R3 R4
- 0x90020603, // 000A SETMBR R0 K3 R3
- 0x4C0C0000, // 000B LDNIL R3
- 0x200C0403, // 000C NE R3 R2 R3
- 0x780E0005, // 000D JMPF R3 #0014
- 0x8C0C0104, // 000E GETMET R3 R0 K4
- 0x60140009, // 000F GETGBL R5 G9
- 0x541A03E7, // 0010 LDINT R6 1000
- 0x08180406, // 0011 MUL R6 R2 R6
- 0x7C140200, // 0012 CALL R5 1
- 0x7C0C0400, // 0013 CALL R3 2
- 0xB80E0C00, // 0014 GETNGBL R3 K6
- 0xB8120C00, // 0015 GETNGBL R4 K6
- 0x88100907, // 0016 GETMBR R4 R4 K7
- 0x7C0C0200, // 0017 CALL R3 1
- 0x90020A03, // 0018 SETMBR R0 K5 R3
- 0x80000000, // 0019 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_cb
-********************************************************************/
-be_local_closure(Animate_palette_set_cb, /* name */
- be_nested_proto(
- 3, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(animate_obj),
- /* K1 */ be_nested_str_weak(animate_mth),
- }),
- be_str_weak(set_cb),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x80000000, // 0002 RET 0
+ ( &(const binstruction[ 9]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x4C080000, // 0002 LDNIL R2
+ 0x20080202, // 0003 NE R2 R1 R2
+ 0x780A0002, // 0004 JMPF R2 #0008
+ 0x8C080302, // 0005 GETMET R2 R1 K2
+ 0x5C100000, // 0006 MOVE R4 R0
+ 0x7C080400, // 0007 CALL R2 2
+ 0x80000000, // 0008 RET 0
})
)
);
@@ -274,7 +98,7 @@ be_local_closure(Animate_palette_set_cb, /* name */
/********************************************************************
** Solidified function: stop
********************************************************************/
-be_local_closure(Animate_palette_stop, /* name */
+be_local_closure(Animate_animator_stop, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -302,6 +126,213 @@ be_local_closure(Animate_palette_stop, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: set_duration_ms
+********************************************************************/
+be_local_closure(Animate_animator_set_duration_ms, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(duration_ms),
+ }),
+ be_str_weak(set_duration_ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_cb
+********************************************************************/
+be_local_closure(Animate_animator_set_cb, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(obj),
+ /* K1 */ be_nested_str_weak(mth),
+ }),
+ be_str_weak(set_cb),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(Animate_animator_start, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(duration_ms),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(millis),
+ /* K3 */ be_nested_str_weak(origin),
+ /* K4 */ be_nested_str_weak(running),
+ }),
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x1C080403, // 0002 EQ R2 R2 R3
+ 0x780A0000, // 0003 JMPF R2 #0005
+ 0x80000400, // 0004 RET 0
+ 0x4C080000, // 0005 LDNIL R2
+ 0x1C080202, // 0006 EQ R2 R1 R2
+ 0x780A0003, // 0007 JMPF R2 #000C
+ 0xB80A0200, // 0008 GETNGBL R2 K1
+ 0x8C080502, // 0009 GETMET R2 R2 K2
+ 0x7C080200, // 000A CALL R2 1
+ 0x5C040400, // 000B MOVE R1 R2
+ 0x90020601, // 000C SETMBR R0 K3 R1
+ 0x50080200, // 000D LDBOOL R2 1 0
+ 0x90020802, // 000E SETMBR R0 K4 R2
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Animate_animator
+********************************************************************/
+be_local_class(Animate_animator,
+ 5,
+ NULL,
+ be_nested_map(12,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(running, 4), be_const_var(0) },
+ { be_const_key_weak(is_running, 2), be_const_closure(Animate_animator_is_running_closure) },
+ { be_const_key_weak(beat, -1), be_const_closure(Animate_animator_beat_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Animate_animator_init_closure) },
+ { be_const_key_weak(mth, -1), be_const_var(4) },
+ { be_const_key_weak(stop, -1), be_const_closure(Animate_animator_stop_closure) },
+ { be_const_key_weak(duration_ms, -1), be_const_var(1) },
+ { be_const_key_weak(origin, -1), be_const_var(2) },
+ { be_const_key_weak(set_cb, -1), be_const_closure(Animate_animator_set_cb_closure) },
+ { be_const_key_weak(set_duration_ms, 8), be_const_closure(Animate_animator_set_duration_ms_closure) },
+ { be_const_key_weak(obj, -1), be_const_var(3) },
+ { be_const_key_weak(start, -1), be_const_closure(Animate_animator_start_closure) },
+ })),
+ be_str_weak(Animate_animator)
+);
+/*******************************************************************/
+
+void be_load_Animate_animator_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Animate_animator);
+ be_setglobal(vm, "Animate_animator");
+ be_pop(vm, 1);
+}
+
+extern const bclass be_class_Animate_palette;
+
+/********************************************************************
+** Solidified function: ptr_to_palette
+********************************************************************/
+be_local_closure(Animate_palette_ptr_to_palette, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_const_class(be_class_Animate_palette),
+ /* K1 */ be_nested_str_weak(ptr),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_const_int(0),
+ }),
+ be_str_weak(ptr_to_palette),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x60080004, // 0001 GETGBL R2 G4
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C080200, // 0003 CALL R2 1
+ 0x1C080501, // 0004 EQ R2 R2 K1
+ 0x780A0025, // 0005 JMPF R2 #002C
+ 0x60080015, // 0006 GETGBL R2 G21
+ 0x5C0C0000, // 0007 MOVE R3 R0
+ 0x541207CF, // 0008 LDINT R4 2000
+ 0x7C080400, // 0009 CALL R2 2
+ 0x580C0002, // 000A LDCONST R3 K2
+ 0x94100503, // 000B GETIDX R4 R2 K3
+ 0x20100903, // 000C NE R4 R4 K3
+ 0x7812000A, // 000D JMPF R4 #0019
+ 0x50100200, // 000E LDBOOL R4 1 0
+ 0x78120007, // 000F JMPF R4 #0018
+ 0x54120003, // 0010 LDINT R4 4
+ 0x08100604, // 0011 MUL R4 R3 R4
+ 0x94100404, // 0012 GETIDX R4 R2 R4
+ 0x1C100903, // 0013 EQ R4 R4 K3
+ 0x78120000, // 0014 JMPF R4 #0016
+ 0x70020001, // 0015 JMP #0018
+ 0x000C0702, // 0016 ADD R3 R3 K2
+ 0x7001FFF5, // 0017 JMP #000E
+ 0x7002000A, // 0018 JMP #0024
+ 0x50100200, // 0019 LDBOOL R4 1 0
+ 0x78120008, // 001A JMPF R4 #0024
+ 0x54120003, // 001B LDINT R4 4
+ 0x08100604, // 001C MUL R4 R3 R4
+ 0x94100404, // 001D GETIDX R4 R2 R4
+ 0x541600FE, // 001E LDINT R5 255
+ 0x1C100805, // 001F EQ R4 R4 R5
+ 0x78120000, // 0020 JMPF R4 #0022
+ 0x70020001, // 0021 JMP #0024
+ 0x000C0702, // 0022 ADD R3 R3 K2
+ 0x7001FFF4, // 0023 JMP #0019
+ 0x00100702, // 0024 ADD R4 R3 K2
+ 0x54160003, // 0025 LDINT R5 4
+ 0x08100805, // 0026 MUL R4 R4 R5
+ 0x60140015, // 0027 GETGBL R5 G21
+ 0x5C180000, // 0028 MOVE R6 R0
+ 0x5C1C0800, // 0029 MOVE R7 R4
+ 0x7C140400, // 002A CALL R5 2
+ 0x80040A00, // 002B RET 1 R5
+ 0x80000000, // 002C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: animate
********************************************************************/
@@ -335,8 +366,8 @@ be_local_closure(Animate_palette_animate, /* name */
/* K16 */ be_nested_str_weak(r),
/* K17 */ be_nested_str_weak(g),
/* K18 */ be_nested_str_weak(b),
- /* K19 */ be_nested_str_weak(animate_obj),
- /* K20 */ be_nested_str_weak(animate_mth),
+ /* K19 */ be_nested_str_weak(obj),
+ /* K20 */ be_nested_str_weak(mth),
}),
be_str_weak(animate),
&be_const_str_solidified,
@@ -540,6 +571,289 @@ be_local_closure(Animate_palette_animate, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: set_palette
+********************************************************************/
+be_local_closure(Animate_palette_set_palette, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(ptr),
+ /* K1 */ be_nested_str_weak(ptr_to_palette),
+ /* K2 */ be_nested_str_weak(palette),
+ /* K3 */ be_nested_str_weak(slots),
+ /* K4 */ be_nested_str_weak(duration_ms),
+ /* K5 */ be_nested_str_weak(set_duration),
+ /* K6 */ be_nested_str_weak(range_min),
+ /* K7 */ be_nested_str_weak(range_max),
+ /* K8 */ be_nested_str_weak(set_range),
+ }),
+ be_str_weak(set_palette),
+ &be_const_str_solidified,
+ ( &(const binstruction[37]) { /* code */
+ 0x60080004, // 0000 GETGBL R2 G4
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x1C080500, // 0003 EQ R2 R2 K0
+ 0x780A0003, // 0004 JMPF R2 #0009
+ 0x8C080101, // 0005 GETMET R2 R0 K1
+ 0x5C100200, // 0006 MOVE R4 R1
+ 0x7C080400, // 0007 CALL R2 2
+ 0x5C040400, // 0008 MOVE R1 R2
+ 0x90020401, // 0009 SETMBR R0 K2 R1
+ 0x6008000C, // 000A GETGBL R2 G12
+ 0x5C0C0200, // 000B MOVE R3 R1
+ 0x7C080200, // 000C CALL R2 1
+ 0x540E0003, // 000D LDINT R3 4
+ 0x0C080403, // 000E DIV R2 R2 R3
+ 0x90020602, // 000F SETMBR R0 K3 R2
+ 0x88080104, // 0010 GETMBR R2 R0 K4
+ 0x4C0C0000, // 0011 LDNIL R3
+ 0x20080403, // 0012 NE R2 R2 R3
+ 0x780A0003, // 0013 JMPF R2 #0018
+ 0x8C080105, // 0014 GETMET R2 R0 K5
+ 0x88100104, // 0015 GETMBR R4 R0 K4
+ 0x7C080400, // 0016 CALL R2 2
+ 0x7002000B, // 0017 JMP #0024
+ 0x88080106, // 0018 GETMBR R2 R0 K6
+ 0x4C0C0000, // 0019 LDNIL R3
+ 0x20080403, // 001A NE R2 R2 R3
+ 0x780A0007, // 001B JMPF R2 #0024
+ 0x88080107, // 001C GETMBR R2 R0 K7
+ 0x4C0C0000, // 001D LDNIL R3
+ 0x20080403, // 001E NE R2 R2 R3
+ 0x780A0003, // 001F JMPF R2 #0024
+ 0x8C080108, // 0020 GETMET R2 R0 K8
+ 0x88100106, // 0021 GETMBR R4 R0 K6
+ 0x88140107, // 0022 GETMBR R5 R0 K7
+ 0x7C080600, // 0023 CALL R2 3
+ 0x80000000, // 0024 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: to_css_gradient
+********************************************************************/
+be_local_closure(Animate_palette_to_css_gradient, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_const_class(be_class_Animate_palette),
+ /* K1 */ be_nested_str_weak(parse_palette),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right),
+ /* K4 */ be_nested_str_weak(palette),
+ /* K5 */ be_nested_str_weak(get),
+ /* K6 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25),
+ /* K7 */ be_const_real_hex(0x41200000),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(_X29_X3B),
+ }),
+ be_str_weak(to_css_gradient),
+ &be_const_str_solidified,
+ ( &(const binstruction[46]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x5C080200, // 0001 MOVE R2 R1
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C080200, // 0003 CALL R2 1
+ 0x8C0C0501, // 0004 GETMET R3 R2 K1
+ 0x58140002, // 0005 LDCONST R5 K2
+ 0x541A03E7, // 0006 LDINT R6 1000
+ 0x7C0C0600, // 0007 CALL R3 3
+ 0x58100003, // 0008 LDCONST R4 K3
+ 0x58140002, // 0009 LDCONST R5 K2
+ 0x6018000C, // 000A GETGBL R6 G12
+ 0x5C1C0600, // 000B MOVE R7 R3
+ 0x7C180200, // 000C CALL R6 1
+ 0x14180A06, // 000D LT R6 R5 R6
+ 0x781A001C, // 000E JMPF R6 #002C
+ 0x94180605, // 000F GETIDX R6 R3 R5
+ 0x881C0504, // 0010 GETMBR R7 R2 K4
+ 0x8C1C0F05, // 0011 GETMET R7 R7 K5
+ 0x54260003, // 0012 LDINT R9 4
+ 0x08240A09, // 0013 MUL R9 R5 R9
+ 0x542A0003, // 0014 LDINT R10 4
+ 0x7C1C0600, // 0015 CALL R7 3
+ 0x54220007, // 0016 LDINT R8 8
+ 0x3C200E08, // 0017 SHR R8 R7 R8
+ 0x542600FE, // 0018 LDINT R9 255
+ 0x2C201009, // 0019 AND R8 R8 R9
+ 0x5426000F, // 001A LDINT R9 16
+ 0x3C240E09, // 001B SHR R9 R7 R9
+ 0x542A00FE, // 001C LDINT R10 255
+ 0x2C24120A, // 001D AND R9 R9 R10
+ 0x542A0017, // 001E LDINT R10 24
+ 0x3C280E0A, // 001F SHR R10 R7 R10
+ 0x542E00FE, // 0020 LDINT R11 255
+ 0x2C28140B, // 0021 AND R10 R10 R11
+ 0x602C0018, // 0022 GETGBL R11 G24
+ 0x58300006, // 0023 LDCONST R12 K6
+ 0x5C341000, // 0024 MOVE R13 R8
+ 0x5C381200, // 0025 MOVE R14 R9
+ 0x5C3C1400, // 0026 MOVE R15 R10
+ 0x0C400D07, // 0027 DIV R16 R6 K7
+ 0x7C2C0A00, // 0028 CALL R11 5
+ 0x0010080B, // 0029 ADD R4 R4 R11
+ 0x00140B08, // 002A ADD R5 R5 K8
+ 0x7001FFDD, // 002B JMP #000A
+ 0x00100909, // 002C ADD R4 R4 K9
+ 0x80040800, // 002D RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_bri
+********************************************************************/
+be_local_closure(Animate_palette_set_bri, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(bri),
+ }),
+ be_str_weak(set_bri),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_palette
+********************************************************************/
+be_local_closure(Animate_palette_parse_palette, /* name */
+ be_nested_proto(
+ 15, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(slots),
+ /* K1 */ be_nested_str_weak(resize),
+ /* K2 */ be_nested_str_weak(palette),
+ /* K3 */ be_nested_str_weak(get),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_const_int(1),
+ /* K6 */ be_nested_str_weak(tasmota),
+ /* K7 */ be_nested_str_weak(scale_int),
+ }),
+ be_str_weak(parse_palette),
+ &be_const_str_solidified,
+ ( &(const binstruction[71]) { /* code */
+ 0x600C0012, // 0000 GETGBL R3 G18
+ 0x7C0C0000, // 0001 CALL R3 0
+ 0x88100100, // 0002 GETMBR R4 R0 K0
+ 0x8C140701, // 0003 GETMET R5 R3 K1
+ 0x5C1C0800, // 0004 MOVE R7 R4
+ 0x7C140400, // 0005 CALL R5 2
+ 0x88140102, // 0006 GETMBR R5 R0 K2
+ 0x8C140B03, // 0007 GETMET R5 R5 K3
+ 0x581C0004, // 0008 LDCONST R7 K4
+ 0x58200005, // 0009 LDCONST R8 K5
+ 0x7C140600, // 000A CALL R5 3
+ 0x20140B04, // 000B NE R5 R5 K4
+ 0x78160024, // 000C JMPF R5 #0032
+ 0x58140004, // 000D LDCONST R5 K4
+ 0x58180004, // 000E LDCONST R6 K4
+ 0x041C0905, // 000F SUB R7 R4 K5
+ 0x141C0C07, // 0010 LT R7 R6 R7
+ 0x781E0008, // 0011 JMPF R7 #001B
+ 0x881C0102, // 0012 GETMBR R7 R0 K2
+ 0x8C1C0F03, // 0013 GETMET R7 R7 K3
+ 0x54260003, // 0014 LDINT R9 4
+ 0x08240C09, // 0015 MUL R9 R6 R9
+ 0x58280005, // 0016 LDCONST R10 K5
+ 0x7C1C0600, // 0017 CALL R7 3
+ 0x00140A07, // 0018 ADD R5 R5 R7
+ 0x00180D05, // 0019 ADD R6 R6 K5
+ 0x7001FFF3, // 001A JMP #000F
+ 0x581C0004, // 001B LDCONST R7 K4
+ 0x58180004, // 001C LDCONST R6 K4
+ 0x14200C04, // 001D LT R8 R6 R4
+ 0x78220011, // 001E JMPF R8 #0031
+ 0xB8220C00, // 001F GETNGBL R8 K6
+ 0x8C201107, // 0020 GETMET R8 R8 K7
+ 0x5C280E00, // 0021 MOVE R10 R7
+ 0x582C0004, // 0022 LDCONST R11 K4
+ 0x5C300A00, // 0023 MOVE R12 R5
+ 0x5C340200, // 0024 MOVE R13 R1
+ 0x5C380400, // 0025 MOVE R14 R2
+ 0x7C200C00, // 0026 CALL R8 6
+ 0x980C0C08, // 0027 SETIDX R3 R6 R8
+ 0x88200102, // 0028 GETMBR R8 R0 K2
+ 0x8C201103, // 0029 GETMET R8 R8 K3
+ 0x542A0003, // 002A LDINT R10 4
+ 0x08280C0A, // 002B MUL R10 R6 R10
+ 0x582C0005, // 002C LDCONST R11 K5
+ 0x7C200600, // 002D CALL R8 3
+ 0x001C0E08, // 002E ADD R7 R7 R8
+ 0x00180D05, // 002F ADD R6 R6 K5
+ 0x7001FFEB, // 0030 JMP #001D
+ 0x70020013, // 0031 JMP #0046
+ 0x58140004, // 0032 LDCONST R5 K4
+ 0x14180A04, // 0033 LT R6 R5 R4
+ 0x781A0010, // 0034 JMPF R6 #0046
+ 0x88180102, // 0035 GETMBR R6 R0 K2
+ 0x8C180D03, // 0036 GETMET R6 R6 K3
+ 0x54220003, // 0037 LDINT R8 4
+ 0x08200A08, // 0038 MUL R8 R5 R8
+ 0x58240005, // 0039 LDCONST R9 K5
+ 0x7C180600, // 003A CALL R6 3
+ 0xB81E0C00, // 003B GETNGBL R7 K6
+ 0x8C1C0F07, // 003C GETMET R7 R7 K7
+ 0x5C240C00, // 003D MOVE R9 R6
+ 0x58280004, // 003E LDCONST R10 K4
+ 0x542E00FE, // 003F LDINT R11 255
+ 0x5C300200, // 0040 MOVE R12 R1
+ 0x5C340400, // 0041 MOVE R13 R2
+ 0x7C1C0C00, // 0042 CALL R7 6
+ 0x980C0A07, // 0043 SETIDX R3 R5 R7
+ 0x00140B05, // 0044 ADD R5 R5 K5
+ 0x7001FFEC, // 0045 JMP #0033
+ 0x80040600, // 0046 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: set_range
********************************************************************/
@@ -581,110 +895,6 @@ be_local_closure(Animate_palette_set_range, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: set_bri
-********************************************************************/
-be_local_closure(Animate_palette_set_bri, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(bri),
- }),
- be_str_weak(set_bri),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_running
-********************************************************************/
-be_local_closure(Animate_palette_is_running, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- }),
- be_str_weak(is_running),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040017, // 0000 GETGBL R1 G23
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_duration
-********************************************************************/
-be_local_closure(Animate_palette_set_duration, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(value_error),
- /* K2 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive),
- /* K3 */ be_nested_str_weak(duration_ms),
- /* K4 */ be_nested_str_weak(slots_arr),
- /* K5 */ be_nested_str_weak(parse_palette),
- /* K6 */ be_const_int(1),
- }),
- be_str_weak(set_duration),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0000, // 0002 JMPF R2 #0004
- 0x80000400, // 0003 RET 0
- 0x18080300, // 0004 LE R2 R1 K0
- 0x780A0000, // 0005 JMPF R2 #0007
- 0xB0060302, // 0006 RAISE 1 K1 K2
- 0x90020601, // 0007 SETMBR R0 K3 R1
- 0x8C080105, // 0008 GETMET R2 R0 K5
- 0x58100000, // 0009 LDCONST R4 K0
- 0x04140306, // 000A SUB R5 R1 K6
- 0x7C080600, // 000B CALL R2 3
- 0x90020802, // 000C SETMBR R0 K4 R2
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: set_value
********************************************************************/
@@ -710,8 +920,8 @@ be_local_closure(Animate_palette_set_value, /* name */
/* K8 */ be_const_int(1),
/* K9 */ be_nested_str_weak(palette),
/* K10 */ be_nested_str_weak(get),
- /* K11 */ be_nested_str_weak(animate_obj),
- /* K12 */ be_nested_str_weak(animate_mth),
+ /* K11 */ be_nested_str_weak(obj),
+ /* K12 */ be_nested_str_weak(mth),
}),
be_str_weak(set_value),
&be_const_str_solidified,
@@ -819,11 +1029,11 @@ be_local_closure(Animate_palette_set_value, /* name */
/********************************************************************
-** Solidified function: start
+** Solidified function: set_duration
********************************************************************/
-be_local_closure(Animate_palette_start, /* name */
+be_local_closure(Animate_palette_set_duration, /* name */
be_nested_proto(
- 4, /* nstack */
+ 6, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -831,16 +1041,374 @@ be_local_closure(Animate_palette_start, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
+ ( &(const bvalue[ 7]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(value_error),
+ /* K2 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive),
+ /* K3 */ be_nested_str_weak(duration_ms),
+ /* K4 */ be_nested_str_weak(slots_arr),
+ /* K5 */ be_nested_str_weak(parse_palette),
+ /* K6 */ be_const_int(1),
+ }),
+ be_str_weak(set_duration),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x80000400, // 0003 RET 0
+ 0x18080300, // 0004 LE R2 R1 K0
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0xB0060302, // 0006 RAISE 1 K1 K2
+ 0x90020601, // 0007 SETMBR R0 K3 R1
+ 0x8C080105, // 0008 GETMET R2 R0 K5
+ 0x58100000, // 0009 LDCONST R4 K0
+ 0x04140306, // 000A SUB R5 R1 K6
+ 0x7C080600, // 000B CALL R2 3
+ 0x90020802, // 000C SETMBR R0 K4 R2
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Animate_palette_init, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(duration_ms),
+ /* K2 */ be_nested_str_weak(running),
+ /* K3 */ be_nested_str_weak(bri),
+ /* K4 */ be_nested_str_weak(color),
+ /* K5 */ be_nested_str_weak(light_state),
+ /* K6 */ be_nested_str_weak(RGB),
+ /* K7 */ be_nested_str_weak(set_palette),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[19]) { /* code */
+ 0x600C0003, // 0000 GETGBL R3 G3
+ 0x5C100000, // 0001 MOVE R4 R0
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0700, // 0003 GETMET R3 R3 K0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x90020202, // 0005 SETMBR R0 K1 R2
+ 0x500C0000, // 0006 LDBOOL R3 0 0
+ 0x90020403, // 0007 SETMBR R0 K2 R3
+ 0x540E0063, // 0008 LDINT R3 100
+ 0x90020603, // 0009 SETMBR R0 K3 R3
+ 0xB80E0A00, // 000A GETNGBL R3 K5
+ 0xB8120A00, // 000B GETNGBL R4 K5
+ 0x88100906, // 000C GETMBR R4 R4 K6
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x90020803, // 000E SETMBR R0 K4 R3
+ 0x8C0C0107, // 000F GETMET R3 R0 K7
+ 0x5C140200, // 0010 MOVE R5 R1
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0x80000000, // 0012 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Animate_palette
+********************************************************************/
+extern const bclass be_class_Animate_animator;
+be_local_class(Animate_palette,
+ 7,
+ &be_class_Animate_animator,
+ be_nested_map(17,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(color, 13), be_const_var(6) },
+ { be_const_key_weak(slots, -1), be_const_var(2) },
+ { be_const_key_weak(animate, 11), be_const_closure(Animate_palette_animate_closure) },
+ { be_const_key_weak(range_max, 10), be_const_var(4) },
+ { be_const_key_weak(set_palette, -1), be_const_closure(Animate_palette_set_palette_closure) },
+ { be_const_key_weak(set_bri, -1), be_const_closure(Animate_palette_set_bri_closure) },
+ { be_const_key_weak(bri, -1), be_const_var(5) },
+ { be_const_key_weak(to_css_gradient, 12), be_const_static_closure(Animate_palette_to_css_gradient_closure) },
+ { be_const_key_weak(slots_arr, 1), be_const_var(1) },
+ { be_const_key_weak(range_min, 5), be_const_var(3) },
+ { be_const_key_weak(set_value, -1), be_const_closure(Animate_palette_set_value_closure) },
+ { be_const_key_weak(set_range, -1), be_const_closure(Animate_palette_set_range_closure) },
+ { be_const_key_weak(parse_palette, -1), be_const_closure(Animate_palette_parse_palette_closure) },
+ { be_const_key_weak(palette, -1), be_const_var(0) },
+ { be_const_key_weak(set_duration, -1), be_const_closure(Animate_palette_set_duration_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Animate_palette_init_closure) },
+ { be_const_key_weak(ptr_to_palette, 0), be_const_static_closure(Animate_palette_ptr_to_palette_closure) },
+ })),
+ be_str_weak(Animate_palette)
+);
+/*******************************************************************/
+
+void be_load_Animate_palette_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Animate_palette);
+ be_setglobal(vm, "Animate_palette");
+ be_pop(vm, 1);
+}
+
+extern const bclass be_class_Animate_oscillator;
+
+/********************************************************************
+** Solidified function: set_duty_cycle
+********************************************************************/
+be_local_closure(Animate_oscillator_set_duty_cycle, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(duty_cycle),
+ }),
+ be_str_weak(set_duty_cycle),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x14080300, // 0000 LT R2 R1 K0
+ 0x780A0000, // 0001 JMPF R2 #0003
+ 0x58040000, // 0002 LDCONST R1 K0
+ 0x540A0063, // 0003 LDINT R2 100
+ 0x24080202, // 0004 GT R2 R1 R2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x54060063, // 0006 LDINT R1 100
+ 0x90020201, // 0007 SETMBR R0 K1 R1
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_a
+********************************************************************/
+be_local_closure(Animate_oscillator_set_a, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(a),
+ }),
+ be_str_weak(set_a),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_b
+********************************************************************/
+be_local_closure(Animate_oscillator_set_b, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(b),
+ }),
+ be_str_weak(set_b),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_form
+********************************************************************/
+be_local_closure(Animate_oscillator_set_form, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_const_int(1),
+ /* K1 */ be_nested_str_weak(form),
+ }),
+ be_str_weak(set_form),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x58040000, // 0003 LDCONST R1 K0
+ 0x90020201, // 0004 SETMBR R0 K1 R1
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_phase
+********************************************************************/
+be_local_closure(Animate_oscillator_set_phase, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(phase),
+ }),
+ be_str_weak(set_phase),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x14080300, // 0000 LT R2 R1 K0
+ 0x780A0000, // 0001 JMPF R2 #0003
+ 0x58040000, // 0002 LDCONST R1 K0
+ 0x540A0063, // 0003 LDINT R2 100
+ 0x24080202, // 0004 GT R2 R1 R2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x54060063, // 0006 LDINT R1 100
+ 0x90020201, // 0007 SETMBR R0 K1 R1
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Animate_oscillator_init, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(phase),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(duty_cycle),
+ /* K4 */ be_nested_str_weak(a),
+ /* K5 */ be_nested_str_weak(b),
+ /* K6 */ be_nested_str_weak(duration_ms),
+ /* K7 */ be_nested_str_weak(value),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(form),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x60140003, // 0000 GETGBL R5 G3
+ 0x5C180000, // 0001 MOVE R6 R0
+ 0x7C140200, // 0002 CALL R5 1
+ 0x8C140B00, // 0003 GETMET R5 R5 K0
+ 0x7C140200, // 0004 CALL R5 1
+ 0x90020302, // 0005 SETMBR R0 K1 K2
+ 0x54160031, // 0006 LDINT R5 50
+ 0x90020605, // 0007 SETMBR R0 K3 R5
+ 0x90020801, // 0008 SETMBR R0 K4 R1
+ 0x90020A02, // 0009 SETMBR R0 K5 R2
+ 0x90020C03, // 000A SETMBR R0 K6 R3
+ 0x90020E01, // 000B SETMBR R0 K7 R1
+ 0x4C140000, // 000C LDNIL R5
+ 0x1C140805, // 000D EQ R5 R4 R5
+ 0x78160000, // 000E JMPF R5 #0010
+ 0x58100008, // 000F LDCONST R4 K8
+ 0x90021204, // 0010 SETMBR R0 K9 R4
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: animate
+********************************************************************/
+be_local_closure(Animate_oscillator_animate, /* name */
+ be_nested_proto(
+ 18, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[20]) { /* constants */
/* K0 */ be_nested_str_weak(duration_ms),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(millis),
/* K3 */ be_nested_str_weak(origin),
- /* K4 */ be_nested_str_weak(running),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(scale_uint),
+ /* K6 */ be_nested_str_weak(duty_cycle),
+ /* K7 */ be_nested_str_weak(beat),
+ /* K8 */ be_nested_str_weak(a),
+ /* K9 */ be_nested_str_weak(b),
+ /* K10 */ be_nested_str_weak(value),
+ /* K11 */ be_nested_str_weak(phase),
+ /* K12 */ be_nested_str_weak(form),
+ /* K13 */ be_const_int(1),
+ /* K14 */ be_nested_str_weak(scale_int),
+ /* K15 */ be_const_int(2),
+ /* K16 */ be_const_int(3),
+ /* K17 */ be_nested_str_weak(sine_int),
+ /* K18 */ be_nested_str_weak(obj),
+ /* K19 */ be_nested_str_weak(mth),
}),
- be_str_weak(start),
+ be_str_weak(animate),
&be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
+ ( &(const binstruction[141]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3
0x1C080403, // 0002 EQ R2 R2 R3
@@ -853,383 +1421,135 @@ be_local_closure(Animate_palette_start, /* name */
0x8C080502, // 0009 GETMET R2 R2 K2
0x7C080200, // 000A CALL R2 1
0x5C040400, // 000B MOVE R1 R2
- 0x90020601, // 000C SETMBR R0 K3 R1
- 0x50080200, // 000D LDBOOL R2 1 0
- 0x90020802, // 000E SETMBR R0 K4 R2
- 0x80000000, // 000F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Animate_palette
-********************************************************************/
-be_local_class(Animate_palette,
- 12,
- NULL,
- be_nested_map(24,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(start, -1), be_const_closure(Animate_palette_start_closure) },
- { be_const_key_weak(to_css_gradient, -1), be_const_closure(Animate_palette_to_css_gradient_closure) },
- { be_const_key_weak(range_min, -1), be_const_var(6) },
- { be_const_key_weak(init, -1), be_const_closure(Animate_palette_init_closure) },
- { be_const_key_weak(set_value, -1), be_const_closure(Animate_palette_set_value_closure) },
- { be_const_key_weak(stop, -1), be_const_closure(Animate_palette_stop_closure) },
- { be_const_key_weak(slots, 15), be_const_var(2) },
- { be_const_key_weak(origin, -1), be_const_var(5) },
- { be_const_key_weak(animate, 19), be_const_closure(Animate_palette_animate_closure) },
- { be_const_key_weak(set_range, 2), be_const_closure(Animate_palette_set_range_closure) },
- { be_const_key_weak(slots_arr, -1), be_const_var(1) },
- { be_const_key_weak(set_bri, -1), be_const_closure(Animate_palette_set_bri_closure) },
- { be_const_key_weak(bri, 17), be_const_var(10) },
- { be_const_key_weak(is_running, -1), be_const_closure(Animate_palette_is_running_closure) },
- { be_const_key_weak(animate_mth, -1), be_const_var(9) },
- { be_const_key_weak(duration_ms, -1), be_const_var(4) },
- { be_const_key_weak(color, -1), be_const_var(11) },
- { be_const_key_weak(set_duration, 22), be_const_closure(Animate_palette_set_duration_closure) },
- { be_const_key_weak(animate_obj, -1), be_const_var(8) },
- { be_const_key_weak(palette, -1), be_const_var(0) },
- { be_const_key_weak(parse_palette, 14), be_const_closure(Animate_palette_parse_palette_closure) },
- { be_const_key_weak(set_cb, 4), be_const_closure(Animate_palette_set_cb_closure) },
- { be_const_key_weak(running, -1), be_const_var(3) },
- { be_const_key_weak(range_max, 0), be_const_var(7) },
- })),
- be_str_weak(Animate_palette)
-);
-
-extern const bclass be_class_Animate_rotate;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Animate_rotate_init, /* name */
- be_nested_proto(
- 13, /* nstack */
- 6, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(set_cb),
- /* K2 */ be_nested_str_weak(code),
- /* K3 */ be_nested_str_weak(push),
- /* K4 */ be_nested_str_weak(animate),
- /* K5 */ be_nested_str_weak(ins_ramp),
- /* K6 */ be_nested_str_weak(ins_goto),
- /* K7 */ be_const_int(0),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x60180003, // 0000 GETGBL R6 G3
- 0x5C1C0000, // 0001 MOVE R7 R0
- 0x7C180200, // 0002 CALL R6 1
- 0x8C180D00, // 0003 GETMET R6 R6 K0
- 0x7C180200, // 0004 CALL R6 1
- 0x8C180101, // 0005 GETMET R6 R0 K1
- 0x5C200200, // 0006 MOVE R8 R1
- 0x5C240400, // 0007 MOVE R9 R2
- 0x7C180600, // 0008 CALL R6 3
- 0x88180102, // 0009 GETMBR R6 R0 K2
- 0x8C180D03, // 000A GETMET R6 R6 K3
- 0xB8220800, // 000B GETNGBL R8 K4
- 0x8C201105, // 000C GETMET R8 R8 K5
- 0x5C280600, // 000D MOVE R10 R3
- 0x5C2C0800, // 000E MOVE R11 R4
- 0x5C300A00, // 000F MOVE R12 R5
- 0x7C200800, // 0010 CALL R8 4
- 0x7C180400, // 0011 CALL R6 2
- 0x88180102, // 0012 GETMBR R6 R0 K2
- 0x8C180D03, // 0013 GETMET R6 R6 K3
- 0xB8220800, // 0014 GETNGBL R8 K4
- 0x8C201106, // 0015 GETMET R8 R8 K6
- 0x58280007, // 0016 LDCONST R10 K7
- 0x582C0007, // 0017 LDCONST R11 K7
- 0x58300007, // 0018 LDCONST R12 K7
- 0x7C200800, // 0019 CALL R8 4
- 0x7C180400, // 001A CALL R6 2
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Animate_rotate
-********************************************************************/
-extern const bclass be_class_Animate_engine;
-be_local_class(Animate_rotate,
- 0,
- &be_class_Animate_engine,
- be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, -1), be_const_closure(Animate_rotate_init_closure) },
- })),
- be_str_weak(Animate_rotate)
-);
-
-extern const bclass be_class_Animate_ins_goto;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Animate_ins_goto_init, /* name */
- be_nested_proto(
- 4, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(pc_rel),
- /* K1 */ be_nested_str_weak(pc_abs),
- /* K2 */ be_nested_str_weak(duration),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Animate_ins_goto
-********************************************************************/
-be_local_class(Animate_ins_goto,
- 3,
- NULL,
- be_nested_map(4,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(pc_rel, -1), be_const_var(0) },
- { be_const_key_weak(duration, -1), be_const_var(2) },
- { be_const_key_weak(init, -1), be_const_closure(Animate_ins_goto_init_closure) },
- { be_const_key_weak(pc_abs, 2), be_const_var(1) },
- })),
- be_str_weak(Animate_ins_goto)
-);
-
-extern const bclass be_class_Animate_ins_ramp;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Animate_ins_ramp_init, /* name */
- be_nested_proto(
- 4, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(a),
- /* K1 */ be_nested_str_weak(b),
- /* K2 */ be_nested_str_weak(duration),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Animate_ins_ramp
-********************************************************************/
-be_local_class(Animate_ins_ramp,
- 3,
- NULL,
- be_nested_map(4,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(a, -1), be_const_var(0) },
- { be_const_key_weak(b, 2), be_const_var(1) },
- { be_const_key_weak(duration, -1), be_const_var(2) },
- { be_const_key_weak(init, -1), be_const_closure(Animate_ins_ramp_init_closure) },
- })),
- be_str_weak(Animate_ins_ramp)
-);
-
-extern const bclass be_class_Animate_engine;
-
-/********************************************************************
-** Solidified function: animate
-********************************************************************/
-be_local_closure(Animate_engine_animate, /* name */
- be_nested_proto(
- 14, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[24]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(ins_time),
- /* K4 */ be_nested_str_weak(pc),
- /* K5 */ be_nested_str_weak(code),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(internal_error),
- /* K8 */ be_nested_str_weak(Animate_X20pc_X20is_X20out_X20of_X20range),
- /* K9 */ be_nested_str_weak(animate),
- /* K10 */ be_nested_str_weak(ins_ramp),
- /* K11 */ be_nested_str_weak(closure),
- /* K12 */ be_nested_str_weak(animate_obj),
- /* K13 */ be_nested_str_weak(animate_mth),
- /* K14 */ be_nested_str_weak(duration),
- /* K15 */ be_nested_str_weak(value),
- /* K16 */ be_nested_str_weak(scale_uint),
- /* K17 */ be_nested_str_weak(a),
- /* K18 */ be_nested_str_weak(b),
- /* K19 */ be_const_int(1),
- /* K20 */ be_nested_str_weak(ins_goto),
- /* K21 */ be_nested_str_weak(pc_rel),
- /* K22 */ be_nested_str_weak(pc_abs),
- /* K23 */ be_nested_str_weak(unknown_X20instruction),
- }),
- be_str_weak(animate),
- &be_const_str_solidified,
- ( &(const binstruction[113]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0000, // 0001 JMPT R2 #0003
- 0x80000400, // 0002 RET 0
- 0x4C080000, // 0003 LDNIL R2
- 0x1C080202, // 0004 EQ R2 R1 R2
- 0x780A0003, // 0005 JMPF R2 #000A
- 0xB80A0200, // 0006 GETNGBL R2 K1
- 0x8C080502, // 0007 GETMET R2 R2 K2
- 0x7C080200, // 0008 CALL R2 1
- 0x5C040400, // 0009 MOVE R1 R2
- 0x50080200, // 000A LDBOOL R2 1 0
- 0x780A0062, // 000B JMPF R2 #006F
0x88080103, // 000C GETMBR R2 R0 K3
0x04080202, // 000D SUB R2 R1 R2
- 0x880C0104, // 000E GETMBR R3 R0 K4
- 0x6010000C, // 000F GETGBL R4 G12
- 0x88140105, // 0010 GETMBR R5 R0 K5
- 0x7C100200, // 0011 CALL R4 1
- 0x280C0604, // 0012 GE R3 R3 R4
- 0x780E0002, // 0013 JMPF R3 #0017
- 0x500C0000, // 0014 LDBOOL R3 0 0
- 0x90020003, // 0015 SETMBR R0 K0 R3
- 0x70020057, // 0016 JMP #006F
- 0x880C0104, // 0017 GETMBR R3 R0 K4
- 0x140C0706, // 0018 LT R3 R3 K6
- 0x780E0000, // 0019 JMPF R3 #001B
- 0xB0060F08, // 001A RAISE 1 K7 K8
- 0x880C0105, // 001B GETMBR R3 R0 K5
- 0x88100104, // 001C GETMBR R4 R0 K4
- 0x940C0604, // 001D GETIDX R3 R3 R4
- 0x6010000F, // 001E GETGBL R4 G15
- 0x5C140600, // 001F MOVE R5 R3
- 0xB81A1200, // 0020 GETNGBL R6 K9
- 0x88180D0A, // 0021 GETMBR R6 R6 K10
- 0x7C100400, // 0022 CALL R4 2
- 0x7812002E, // 0023 JMPF R4 #0053
- 0x8810010B, // 0024 GETMBR R4 R0 K11
- 0x8814010C, // 0025 GETMBR R5 R0 K12
- 0x8818010D, // 0026 GETMBR R6 R0 K13
- 0x881C070E, // 0027 GETMBR R7 R3 K14
- 0x141C0407, // 0028 LT R7 R2 R7
- 0x781E0014, // 0029 JMPF R7 #003F
- 0xB81E0200, // 002A GETNGBL R7 K1
- 0x8C1C0F10, // 002B GETMET R7 R7 K16
- 0x5C240400, // 002C MOVE R9 R2
- 0x58280006, // 002D LDCONST R10 K6
- 0x882C070E, // 002E GETMBR R11 R3 K14
- 0x88300711, // 002F GETMBR R12 R3 K17
- 0x88340712, // 0030 GETMBR R13 R3 K18
- 0x7C1C0C00, // 0031 CALL R7 6
- 0x90021E07, // 0032 SETMBR R0 K15 R7
- 0x78160004, // 0033 JMPF R5 #0039
- 0x781A0003, // 0034 JMPF R6 #0039
- 0x5C1C0C00, // 0035 MOVE R7 R6
- 0x5C200A00, // 0036 MOVE R8 R5
- 0x8824010F, // 0037 GETMBR R9 R0 K15
- 0x7C1C0400, // 0038 CALL R7 2
- 0x78120002, // 0039 JMPF R4 #003D
- 0x5C1C0800, // 003A MOVE R7 R4
- 0x8820010F, // 003B GETMBR R8 R0 K15
- 0x7C1C0200, // 003C CALL R7 1
- 0x70020030, // 003D JMP #006F
- 0x70020012, // 003E JMP #0052
- 0x881C0712, // 003F GETMBR R7 R3 K18
- 0x90021E07, // 0040 SETMBR R0 K15 R7
- 0x78160004, // 0041 JMPF R5 #0047
- 0x781A0003, // 0042 JMPF R6 #0047
- 0x5C1C0C00, // 0043 MOVE R7 R6
- 0x5C200A00, // 0044 MOVE R8 R5
- 0x8824010F, // 0045 GETMBR R9 R0 K15
- 0x7C1C0400, // 0046 CALL R7 2
- 0x78120002, // 0047 JMPF R4 #004B
- 0x5C1C0800, // 0048 MOVE R7 R4
- 0x8820010F, // 0049 GETMBR R8 R0 K15
- 0x7C1C0200, // 004A CALL R7 1
- 0x881C0104, // 004B GETMBR R7 R0 K4
- 0x001C0F13, // 004C ADD R7 R7 K19
- 0x90020807, // 004D SETMBR R0 K4 R7
- 0x881C070E, // 004E GETMBR R7 R3 K14
- 0x041C0407, // 004F SUB R7 R2 R7
- 0x041C0207, // 0050 SUB R7 R1 R7
- 0x90020607, // 0051 SETMBR R0 K3 R7
- 0x7002001A, // 0052 JMP #006E
- 0x6010000F, // 0053 GETGBL R4 G15
- 0x5C140600, // 0054 MOVE R5 R3
- 0xB81A1200, // 0055 GETNGBL R6 K9
- 0x88180D14, // 0056 GETMBR R6 R6 K20
- 0x7C100400, // 0057 CALL R4 2
- 0x78120013, // 0058 JMPF R4 #006D
- 0x8810070E, // 0059 GETMBR R4 R3 K14
- 0x14100404, // 005A LT R4 R2 R4
- 0x78120001, // 005B JMPF R4 #005E
- 0x70020011, // 005C JMP #006F
- 0x7002000D, // 005D JMP #006C
- 0x88100715, // 005E GETMBR R4 R3 K21
- 0x20100906, // 005F NE R4 R4 K6
- 0x78120004, // 0060 JMPF R4 #0066
- 0x88100104, // 0061 GETMBR R4 R0 K4
- 0x88140715, // 0062 GETMBR R5 R3 K21
- 0x00100805, // 0063 ADD R4 R4 R5
- 0x90020804, // 0064 SETMBR R0 K4 R4
- 0x70020001, // 0065 JMP #0068
- 0x88100716, // 0066 GETMBR R4 R3 K22
- 0x90020804, // 0067 SETMBR R0 K4 R4
- 0x8810070E, // 0068 GETMBR R4 R3 K14
- 0x04100404, // 0069 SUB R4 R2 R4
- 0x04100204, // 006A SUB R4 R1 R4
- 0x90020604, // 006B SETMBR R0 K3 R4
- 0x70020000, // 006C JMP #006E
- 0xB0060F17, // 006D RAISE 1 K7 K23
- 0x7001FF9A, // 006E JMP #000A
- 0x8808010F, // 006F GETMBR R2 R0 K15
- 0x80040400, // 0070 RET 1 R2
+ 0x140C0504, // 000E LT R3 R2 K4
+ 0x780E0001, // 000F JMPF R3 #0012
+ 0x58080004, // 0010 LDCONST R2 K4
+ 0x88040103, // 0011 GETMBR R1 R0 K3
+ 0x880C0100, // 0012 GETMBR R3 R0 K0
+ 0x4C100000, // 0013 LDNIL R4
+ 0xB8160200, // 0014 GETNGBL R5 K1
+ 0x8C140B05, // 0015 GETMET R5 R5 K5
+ 0x881C0106, // 0016 GETMBR R7 R0 K6
+ 0x58200004, // 0017 LDCONST R8 K4
+ 0x54260063, // 0018 LDINT R9 100
+ 0x58280004, // 0019 LDCONST R10 K4
+ 0x5C2C0600, // 001A MOVE R11 R3
+ 0x7C140C00, // 001B CALL R5 6
+ 0x5C100A00, // 001C MOVE R4 R5
+ 0x28140403, // 001D GE R5 R2 R3
+ 0x78160007, // 001E JMPF R5 #0027
+ 0x0C180403, // 001F DIV R6 R2 R3
+ 0x08180C03, // 0020 MUL R6 R6 R3
+ 0x88140103, // 0021 GETMBR R5 R0 K3
+ 0x00140A06, // 0022 ADD R5 R5 R6
+ 0x90020605, // 0023 SETMBR R0 K3 R5
+ 0x10080403, // 0024 MOD R2 R2 R3
+ 0x8C140107, // 0025 GETMET R5 R0 K7
+ 0x7C140200, // 0026 CALL R5 1
+ 0x88140108, // 0027 GETMBR R5 R0 K8
+ 0x88180109, // 0028 GETMBR R6 R0 K9
+ 0x881C010A, // 0029 GETMBR R7 R0 K10
+ 0x5C200400, // 002A MOVE R8 R2
+ 0x8824010B, // 002B GETMBR R9 R0 K11
+ 0x24241304, // 002C GT R9 R9 K4
+ 0x7826000B, // 002D JMPF R9 #003A
+ 0xB8260200, // 002E GETNGBL R9 K1
+ 0x8C241305, // 002F GETMET R9 R9 K5
+ 0x882C010B, // 0030 GETMBR R11 R0 K11
+ 0x58300004, // 0031 LDCONST R12 K4
+ 0x54360063, // 0032 LDINT R13 100
+ 0x58380004, // 0033 LDCONST R14 K4
+ 0x5C3C0600, // 0034 MOVE R15 R3
+ 0x7C240C00, // 0035 CALL R9 6
+ 0x00201009, // 0036 ADD R8 R8 R9
+ 0x24241003, // 0037 GT R9 R8 R3
+ 0x78260000, // 0038 JMPF R9 #003A
+ 0x04201003, // 0039 SUB R8 R8 R3
+ 0x8824010C, // 003A GETMBR R9 R0 K12
+ 0x1C24130D, // 003B EQ R9 R9 K13
+ 0x78260009, // 003C JMPF R9 #0047
+ 0xB8260200, // 003D GETNGBL R9 K1
+ 0x8C24130E, // 003E GETMET R9 R9 K14
+ 0x5C2C1000, // 003F MOVE R11 R8
+ 0x58300004, // 0040 LDCONST R12 K4
+ 0x0434070D, // 0041 SUB R13 R3 K13
+ 0x5C380A00, // 0042 MOVE R14 R5
+ 0x5C3C0C00, // 0043 MOVE R15 R6
+ 0x7C240C00, // 0044 CALL R9 6
+ 0x5C1C1200, // 0045 MOVE R7 R9
+ 0x7002003B, // 0046 JMP #0083
+ 0x8824010C, // 0047 GETMBR R9 R0 K12
+ 0x1C24130F, // 0048 EQ R9 R9 K15
+ 0x78260015, // 0049 JMPF R9 #0060
+ 0x14241004, // 004A LT R9 R8 R4
+ 0x78260009, // 004B JMPF R9 #0056
+ 0xB8260200, // 004C GETNGBL R9 K1
+ 0x8C24130E, // 004D GETMET R9 R9 K14
+ 0x5C2C1000, // 004E MOVE R11 R8
+ 0x58300004, // 004F LDCONST R12 K4
+ 0x0434090D, // 0050 SUB R13 R4 K13
+ 0x5C380A00, // 0051 MOVE R14 R5
+ 0x5C3C0C00, // 0052 MOVE R15 R6
+ 0x7C240C00, // 0053 CALL R9 6
+ 0x5C1C1200, // 0054 MOVE R7 R9
+ 0x70020008, // 0055 JMP #005F
+ 0xB8260200, // 0056 GETNGBL R9 K1
+ 0x8C24130E, // 0057 GETMET R9 R9 K14
+ 0x5C2C1000, // 0058 MOVE R11 R8
+ 0x5C300800, // 0059 MOVE R12 R4
+ 0x0434070D, // 005A SUB R13 R3 K13
+ 0x5C380C00, // 005B MOVE R14 R6
+ 0x5C3C0A00, // 005C MOVE R15 R5
+ 0x7C240C00, // 005D CALL R9 6
+ 0x5C1C1200, // 005E MOVE R7 R9
+ 0x70020022, // 005F JMP #0083
+ 0x8824010C, // 0060 GETMBR R9 R0 K12
+ 0x1C241310, // 0061 EQ R9 R9 K16
+ 0x78260005, // 0062 JMPF R9 #0069
+ 0x14241004, // 0063 LT R9 R8 R4
+ 0x78260001, // 0064 JMPF R9 #0067
+ 0x5C1C0A00, // 0065 MOVE R7 R5
+ 0x70020000, // 0066 JMP #0068
+ 0x5C1C0C00, // 0067 MOVE R7 R6
+ 0x70020019, // 0068 JMP #0083
+ 0x8824010C, // 0069 GETMBR R9 R0 K12
+ 0x542A0003, // 006A LDINT R10 4
+ 0x1C24120A, // 006B EQ R9 R9 R10
+ 0x78260015, // 006C JMPF R9 #0083
+ 0xB8260200, // 006D GETNGBL R9 K1
+ 0x8C24130E, // 006E GETMET R9 R9 K14
+ 0x5C2C1000, // 006F MOVE R11 R8
+ 0x58300004, // 0070 LDCONST R12 K4
+ 0x0434070D, // 0071 SUB R13 R3 K13
+ 0x58380004, // 0072 LDCONST R14 K4
+ 0x543E7FFE, // 0073 LDINT R15 32767
+ 0x7C240C00, // 0074 CALL R9 6
+ 0xB82A0200, // 0075 GETNGBL R10 K1
+ 0x8C281511, // 0076 GETMET R10 R10 K17
+ 0x54321FFF, // 0077 LDINT R12 8192
+ 0x0430120C, // 0078 SUB R12 R9 R12
+ 0x7C280400, // 0079 CALL R10 2
+ 0xB82E0200, // 007A GETNGBL R11 K1
+ 0x8C2C170E, // 007B GETMET R11 R11 K14
+ 0x5C341400, // 007C MOVE R13 R10
+ 0x5439EFFF, // 007D LDINT R14 -4096
+ 0x543E0FFF, // 007E LDINT R15 4096
+ 0x5C400A00, // 007F MOVE R16 R5
+ 0x5C440C00, // 0080 MOVE R17 R6
+ 0x7C2C0C00, // 0081 CALL R11 6
+ 0x5C1C1600, // 0082 MOVE R7 R11
+ 0x90021407, // 0083 SETMBR R0 K10 R7
+ 0x88240112, // 0084 GETMBR R9 R0 K18
+ 0x88280113, // 0085 GETMBR R10 R0 K19
+ 0x78260004, // 0086 JMPF R9 #008C
+ 0x782A0003, // 0087 JMPF R10 #008C
+ 0x5C2C1400, // 0088 MOVE R11 R10
+ 0x5C301200, // 0089 MOVE R12 R9
+ 0x5C340E00, // 008A MOVE R13 R7
+ 0x7C2C0400, // 008B CALL R11 2
+ 0x80040E00, // 008C RET 1 R7
})
)
);
@@ -1237,363 +1557,36 @@ be_local_closure(Animate_engine_animate, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified class: Animate_oscillator
********************************************************************/
-be_local_closure(Animate_engine_init, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(code),
- /* K1 */ be_nested_str_weak(pc),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(ins_time),
- /* K4 */ be_nested_str_weak(running),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x60040012, // 0000 GETGBL R1 G18
- 0x7C040000, // 0001 CALL R1 0
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x90020302, // 0003 SETMBR R0 K1 K2
- 0x90020702, // 0004 SETMBR R0 K3 K2
- 0x50040000, // 0005 LDBOOL R1 0 0
- 0x90020801, // 0006 SETMBR R0 K4 R1
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: stop
-********************************************************************/
-be_local_closure(Animate_engine_stop, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- }),
- be_str_weak(stop),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x50040000, // 0000 LDBOOL R1 0 0
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x80000000, // 0002 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_running
-********************************************************************/
-be_local_closure(Animate_engine_is_running, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- }),
- be_str_weak(is_running),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_cb
-********************************************************************/
-be_local_closure(Animate_engine_set_cb, /* name */
- be_nested_proto(
- 3, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(animate_obj),
- /* K1 */ be_nested_str_weak(animate_mth),
- }),
- be_str_weak(set_cb),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x80000000, // 0002 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start
-********************************************************************/
-be_local_closure(Animate_engine_start, /* name */
- be_nested_proto(
- 5, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(millis),
- /* K2 */ be_nested_str_weak(value),
- /* K3 */ be_nested_str_weak(ins_time),
- /* K4 */ be_nested_str_weak(running),
- }),
- be_str_weak(start),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x4C0C0000, // 0000 LDNIL R3
- 0x1C0C0203, // 0001 EQ R3 R1 R3
- 0x780E0003, // 0002 JMPF R3 #0007
- 0xB80E0000, // 0003 GETNGBL R3 K0
- 0x8C0C0701, // 0004 GETMET R3 R3 K1
- 0x7C0C0200, // 0005 CALL R3 1
- 0x5C040600, // 0006 MOVE R1 R3
- 0x4C0C0000, // 0007 LDNIL R3
- 0x200C0403, // 0008 NE R3 R2 R3
- 0x780E0000, // 0009 JMPF R3 #000B
- 0x90020402, // 000A SETMBR R0 K2 R2
- 0x90020601, // 000B SETMBR R0 K3 R1
- 0x500C0200, // 000C LDBOOL R3 1 0
- 0x90020803, // 000D SETMBR R0 K4 R3
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Animate_engine
-********************************************************************/
-be_local_class(Animate_engine,
- 8,
- NULL,
- be_nested_map(14,
+extern const bclass be_class_Animate_animator;
+be_local_class(Animate_oscillator,
+ 6,
+ &be_class_Animate_animator,
+ be_nested_map(13,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(animate, -1), be_const_closure(Animate_engine_animate_closure) },
- { be_const_key_weak(ins_time, -1), be_const_var(5) },
- { be_const_key_weak(running, 10), be_const_var(6) },
- { be_const_key_weak(stop, 7), be_const_closure(Animate_engine_stop_closure) },
- { be_const_key_weak(closure, -1), be_const_var(1) },
- { be_const_key_weak(init, 1), be_const_closure(Animate_engine_init_closure) },
- { be_const_key_weak(animate_mth, -1), be_const_var(3) },
- { be_const_key_weak(set_cb, -1), be_const_closure(Animate_engine_set_cb_closure) },
- { be_const_key_weak(code, -1), be_const_var(0) },
- { be_const_key_weak(is_running, -1), be_const_closure(Animate_engine_is_running_closure) },
- { be_const_key_weak(animate_obj, 11), be_const_var(2) },
- { be_const_key_weak(pc, -1), be_const_var(4) },
- { be_const_key_weak(value, 6), be_const_var(7) },
- { be_const_key_weak(start, -1), be_const_closure(Animate_engine_start_closure) },
+ { be_const_key_weak(animate, -1), be_const_closure(Animate_oscillator_animate_closure) },
+ { be_const_key_weak(a, -1), be_const_var(2) },
+ { be_const_key_weak(init, 11), be_const_closure(Animate_oscillator_init_closure) },
+ { be_const_key_weak(duty_cycle, 10), be_const_var(1) },
+ { be_const_key_weak(b, -1), be_const_var(3) },
+ { be_const_key_weak(value, -1), be_const_var(5) },
+ { be_const_key_weak(set_duty_cycle, 2), be_const_closure(Animate_oscillator_set_duty_cycle_closure) },
+ { be_const_key_weak(set_a, -1), be_const_closure(Animate_oscillator_set_a_closure) },
+ { be_const_key_weak(set_b, -1), be_const_closure(Animate_oscillator_set_b_closure) },
+ { be_const_key_weak(set_form, -1), be_const_closure(Animate_oscillator_set_form_closure) },
+ { be_const_key_weak(phase, -1), be_const_var(0) },
+ { be_const_key_weak(form, -1), be_const_var(4) },
+ { be_const_key_weak(set_phase, 0), be_const_closure(Animate_oscillator_set_phase_closure) },
})),
- be_str_weak(Animate_engine)
-);
-
-extern const bclass be_class_Animate_back_forth;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Animate_back_forth_init, /* name */
- be_nested_proto(
- 13, /* nstack */
- 6, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(set_cb),
- /* K2 */ be_nested_str_weak(code),
- /* K3 */ be_nested_str_weak(push),
- /* K4 */ be_nested_str_weak(animate),
- /* K5 */ be_nested_str_weak(ins_ramp),
- /* K6 */ be_nested_str_weak(ins_goto),
- /* K7 */ be_const_int(0),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[37]) { /* code */
- 0x60180003, // 0000 GETGBL R6 G3
- 0x5C1C0000, // 0001 MOVE R7 R0
- 0x7C180200, // 0002 CALL R6 1
- 0x8C180D00, // 0003 GETMET R6 R6 K0
- 0x7C180200, // 0004 CALL R6 1
- 0x8C180101, // 0005 GETMET R6 R0 K1
- 0x5C200200, // 0006 MOVE R8 R1
- 0x5C240400, // 0007 MOVE R9 R2
- 0x7C180600, // 0008 CALL R6 3
- 0x88180102, // 0009 GETMBR R6 R0 K2
- 0x8C180D03, // 000A GETMET R6 R6 K3
- 0xB8220800, // 000B GETNGBL R8 K4
- 0x8C201105, // 000C GETMET R8 R8 K5
- 0x5C280600, // 000D MOVE R10 R3
- 0x5C2C0800, // 000E MOVE R11 R4
- 0x5C300A00, // 000F MOVE R12 R5
- 0x7C200800, // 0010 CALL R8 4
- 0x7C180400, // 0011 CALL R6 2
- 0x88180102, // 0012 GETMBR R6 R0 K2
- 0x8C180D03, // 0013 GETMET R6 R6 K3
- 0xB8220800, // 0014 GETNGBL R8 K4
- 0x8C201105, // 0015 GETMET R8 R8 K5
- 0x5C280800, // 0016 MOVE R10 R4
- 0x5C2C0600, // 0017 MOVE R11 R3
- 0x5C300A00, // 0018 MOVE R12 R5
- 0x7C200800, // 0019 CALL R8 4
- 0x7C180400, // 001A CALL R6 2
- 0x88180102, // 001B GETMBR R6 R0 K2
- 0x8C180D03, // 001C GETMET R6 R6 K3
- 0xB8220800, // 001D GETNGBL R8 K4
- 0x8C201106, // 001E GETMET R8 R8 K6
- 0x58280007, // 001F LDCONST R10 K7
- 0x582C0007, // 0020 LDCONST R11 K7
- 0x58300007, // 0021 LDCONST R12 K7
- 0x7C200800, // 0022 CALL R8 4
- 0x7C180400, // 0023 CALL R6 2
- 0x80000000, // 0024 RET 0
- })
- )
+ be_str_weak(Animate_oscillator)
);
/*******************************************************************/
-
-/********************************************************************
-** Solidified class: Animate_back_forth
-********************************************************************/
-extern const bclass be_class_Animate_engine;
-be_local_class(Animate_back_forth,
- 0,
- &be_class_Animate_engine,
- be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, -1), be_const_closure(Animate_back_forth_init_closure) },
- })),
- be_str_weak(Animate_back_forth)
-);
-
-extern const bclass be_class_Animate_from_to;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Animate_from_to_init, /* name */
- be_nested_proto(
- 13, /* nstack */
- 6, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(set_cb),
- /* K2 */ be_nested_str_weak(code),
- /* K3 */ be_nested_str_weak(push),
- /* K4 */ be_nested_str_weak(animate),
- /* K5 */ be_nested_str_weak(ins_ramp),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
- 0x60180003, // 0000 GETGBL R6 G3
- 0x5C1C0000, // 0001 MOVE R7 R0
- 0x7C180200, // 0002 CALL R6 1
- 0x8C180D00, // 0003 GETMET R6 R6 K0
- 0x7C180200, // 0004 CALL R6 1
- 0x8C180101, // 0005 GETMET R6 R0 K1
- 0x5C200200, // 0006 MOVE R8 R1
- 0x5C240400, // 0007 MOVE R9 R2
- 0x7C180600, // 0008 CALL R6 3
- 0x88180102, // 0009 GETMBR R6 R0 K2
- 0x8C180D03, // 000A GETMET R6 R6 K3
- 0xB8220800, // 000B GETNGBL R8 K4
- 0x8C201105, // 000C GETMET R8 R8 K5
- 0x5C280600, // 000D MOVE R10 R3
- 0x5C2C0800, // 000E MOVE R11 R4
- 0x5C300A00, // 000F MOVE R12 R5
- 0x7C200800, // 0010 CALL R8 4
- 0x7C180400, // 0011 CALL R6 2
- 0x80000000, // 0012 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Animate_from_to
-********************************************************************/
-extern const bclass be_class_Animate_engine;
-be_local_class(Animate_from_to,
- 0,
- &be_class_Animate_engine,
- be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, -1), be_const_closure(Animate_from_to_init_closure) },
- })),
- be_str_weak(Animate_from_to)
-);
-
-/********************************************************************
-** Solidified module: animate
-********************************************************************/
-be_local_module(animate,
- "animate",
- be_nested_map(7,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ins_ramp, -1), be_const_class(be_class_Animate_ins_ramp) },
- { be_const_key_weak(from_to, -1), be_const_class(be_class_Animate_from_to) },
- { be_const_key_weak(palette, 3), be_const_class(be_class_Animate_palette) },
- { be_const_key_weak(engine, 5), be_const_class(be_class_Animate_engine) },
- { be_const_key_weak(back_forth, -1), be_const_class(be_class_Animate_back_forth) },
- { be_const_key_weak(rotate, -1), be_const_class(be_class_Animate_rotate) },
- { be_const_key_weak(ins_goto, -1), be_const_class(be_class_Animate_ins_goto) },
- }))
-);
-BE_EXPORT_VARIABLE be_define_const_native_module(animate);
-/********************************************************************/
+void be_load_Animate_oscillator_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Animate_oscillator);
+ be_setglobal(vm, "Animate_oscillator");
+ be_pop(vm, 1);
+}
/********************************************************************/
/* End of solidification */
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds_frame_be_methods.h b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h
similarity index 100%
rename from lib/libesp32/berry_tasmota/src/solidify/solidified_leds_frame_be_methods.h
rename to lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h
diff --git a/lib/libesp32/berry_mapping/src/be_class_wrapper.c b/lib/libesp32/berry_mapping/src/be_class_wrapper.c
index 94cbb9f51..2f29ab95a 100644
--- a/lib/libesp32/berry_mapping/src/be_class_wrapper.c
+++ b/lib/libesp32/berry_mapping/src/be_class_wrapper.c
@@ -360,6 +360,9 @@ int be_check_arg_type(bvm *vm, int arg_start, int argc, const char * arg_type, i
}
}
// berry_log_C(">> be_call_c_func arg %i, type %s", i, arg_type_check ? type_short_name : "");
+ if (arg_type_check && type_short_name[0] == 0) {
+ be_raisef(vm, "value_error", "Too many arguments");
+ }
p[p_idx] = be_convert_single_elt(vm, i + arg_start, arg_type_check ? type_short_name : NULL, (int*)&buf_len);
// berry_log_C("< ret[%i]=%i", p_idx, p[p_idx]);
p_idx++;
@@ -399,7 +402,7 @@ int be_check_arg_type(bvm *vm, int arg_start, int argc, const char * arg_type, i
// `+` forbids any NULL value (raises an exception) while `=` allows a NULL value
static void be_set_ctor_ptr(bvm *vm, void * ptr, const char *name) {
if (name == NULL) return; // do nothing if no name of attribute
- if (name[0] == '+' && ptr == NULL) { be_raise(vm, "value_error", "argument cannot be NULL"); }
+ if (name[0] == '+' && ptr == NULL) { be_raise(vm, "value_error", "native constructor cannot return NULL"); }
if (name[0] == '+' || name[0] == '=') { name++; } // skip prefix '^' if any
if (strlen(name) == 0) return; // do nothing if name is empty
diff --git a/lib/libesp32/berry_mapping/src/be_mapping_utils.c b/lib/libesp32/berry_mapping/src/be_mapping_utils.c
index 51f7388ba..18fad80af 100644
--- a/lib/libesp32/berry_mapping/src/be_mapping_utils.c
+++ b/lib/libesp32/berry_mapping/src/be_mapping_utils.c
@@ -8,61 +8,104 @@
/* Insert an nil to a key */
void be_map_insert_nil(bvm *vm, const char *key)
{
- be_pushstring(vm, key);
- be_pushnil(vm);
- be_data_insert(vm, -3);
- be_pop(vm, 2);
+ if (be_ismap(vm, -1)) {
+ be_pushstring(vm, key);
+ be_pushnil(vm);
+ be_data_insert(vm, -3);
+ be_pop(vm, 2);
+ }
}
/* Insert an int to a key */
+// On stack is either:
+// Case 1; (-2) map instance, (-1) map
+// Case 2; (-2) nil, (-1) string -> if key matches then update (-2)
void be_map_insert_int(bvm *vm, const char *key, bint value)
{
- be_pushstring(vm, key);
- be_pushint(vm, value);
- be_data_insert(vm, -3);
- be_pop(vm, 2);
+ if (be_ismap(vm, -1)) {
+ be_pushstring(vm, key);
+ be_pushint(vm, value);
+ be_data_insert(vm, -3);
+ be_pop(vm, 2);
+ } else if (be_isstring(vm, -1)) {
+ const char * needle = be_tostring(vm, -1);
+ if (strcmp(key, needle) == 0) {
+ be_pushint(vm, value);
+ be_moveto(vm, -1, -3);
+ be_pop(vm, 1);
+ }
+ }
}
/* Insert an bbool to a key */
void be_map_insert_bool(bvm *vm, const char *key, bbool value)
{
- be_pushstring(vm, key);
- be_pushbool(vm, value);
- be_data_insert(vm, -3);
- be_pop(vm, 2);
+ if (be_ismap(vm, -1)) {
+ be_pushstring(vm, key);
+ be_pushbool(vm, value);
+ be_data_insert(vm, -3);
+ be_pop(vm, 2);
+ } else if (be_isstring(vm, -1)) {
+ const char * needle = be_tostring(vm, -1);
+ if (strcmp(key, needle) == 0) {
+ be_pushbool(vm, value);
+ be_moveto(vm, -1, -3);
+ be_pop(vm, 1);
+ }
+ }
}
/* Insert an real to a key */
/* if value == NAN, ignore */
void be_map_insert_real(bvm *vm, const char *key, breal value)
{
- if (!isnan(value)) {
- be_pushstring(vm, key);
- be_pushreal(vm, value);
- be_data_insert(vm, -3);
- be_pop(vm, 2);
+ if (be_ismap(vm, -1)) {
+ if (!isnan(value)) {
+ be_pushstring(vm, key);
+ be_pushreal(vm, value);
+ be_data_insert(vm, -3);
+ be_pop(vm, 2);
+ }
+ } else if (be_isstring(vm, -1)) {
+ const char * needle = be_tostring(vm, -1);
+ if (strcmp(key, needle) == 0) {
+ be_pushreal(vm, value);
+ be_moveto(vm, -1, -3);
+ be_pop(vm, 1);
+ }
}
}
/* Insert an C string to a key */
void be_map_insert_str(bvm *vm, const char *key, const char *value)
{
- be_pushstring(vm, key);
- be_pushstring(vm, value);
- be_data_insert(vm, -3);
- be_pop(vm, 2);
+ if (be_ismap(vm, -1)) {
+ be_pushstring(vm, key);
+ be_pushstring(vm, value);
+ be_data_insert(vm, -3);
+ be_pop(vm, 2);
+ } else if (be_isstring(vm, -1)) {
+ const char * needle = be_tostring(vm, -1);
+ if (strcmp(key, needle) == 0) {
+ be_pushstring(vm, value);
+ be_moveto(vm, -1, -3);
+ be_pop(vm, 1);
+ }
+ }
}
/* Insert list of bytes as individual integers to a key */
void be_map_insert_list_uint8(bvm *vm, const char *key, const uint8_t *value, size_t size)
{
- be_pushstring(vm, key);
+ if (be_ismap(vm, -1)) {
+ be_pushstring(vm, key);
- be_newobject(vm, "list");
- for (uint32_t i=0; i < size; i++) {
- be_pushint(vm, value[i]);
- be_data_push(vm, -2);
- be_pop(vm, 1);
+ be_newobject(vm, "list");
+ for (uint32_t i=0; i < size; i++) {
+ be_pushint(vm, value[i]);
+ be_data_push(vm, -2);
+ be_pop(vm, 1);
+ }
+ be_pop(vm, 1); // now list is on top
+
+ be_data_insert(vm, -3); // insert into map, key/value
+ be_pop(vm, 2); // pop both key and value
}
- be_pop(vm, 1); // now list is on top
-
- be_data_insert(vm, -3); // insert into map, key/value
- be_pop(vm, 2); // pop both key and value
}
/*********************************************************************************************\
diff --git a/lib/libesp32/berry_matter/generate/be_matter_clusters.h b/lib/libesp32/berry_matter/generate/be_matter_clusters.h
index 350d8b9fc..390bd2830 100644
--- a/lib/libesp32/berry_matter/generate/be_matter_clusters.h
+++ b/lib/libesp32/berry_matter/generate/be_matter_clusters.h
@@ -28,11 +28,6 @@ typedef struct {
const matter_attribute_t matter_Attributes_0003[] = {
{ 0x0000, 0, 0x03, "IdentifyTime" },
{ 0x0001, 0, 0x02, "IdentifyType" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -44,11 +39,6 @@ const matter_command_t matter_Commands_0003[] = {
const matter_attribute_t matter_Attributes_0004[] = {
{ 0x0000, 0, 0x02, "NameSupport" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -68,11 +58,6 @@ const matter_attribute_t matter_Attributes_0005[] = {
{ 0x0002, 0, 0x02, "CurrentGroup" },
{ 0x0003, 0, 0x02, "SceneValid" },
{ 0x0004, 0, 0x02, "NameSupport" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -93,11 +78,6 @@ const matter_attribute_t matter_Attributes_0006[] = {
{ 0x4001, 0, 0x03, "OnTime" },
{ 0x4002, 0, 0x03, "OffWaitTime" },
{ 0x4003, 0, 0x03, "StartUpOnOff" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -114,11 +94,6 @@ const matter_command_t matter_Commands_0006[] = {
const matter_attribute_t matter_Attributes_0007[] = {
{ 0x0000, 0, 0x02, "SwitchType" },
{ 0x0010, 0, 0x03, "SwitchActions" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -141,11 +116,6 @@ const matter_attribute_t matter_Attributes_0008[] = {
{ 0x0013, 0, 0x03, "OffTransitionTime" },
{ 0x0014, 0, 0x03, "DefaultMoveRate" },
{ 0x4000, 0, 0x03, "StartUpCurrentLevel" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -165,11 +135,6 @@ const matter_attribute_t matter_Attributes_000F[] = {
{ 0x0051, 0, 0x03, "OutOfService" },
{ 0x0055, 0, 0x03, "PresentValue" },
{ 0x006F, 0, 0x02, "StatusFlags" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -182,11 +147,7 @@ const matter_attribute_t matter_Attributes_001D[] = {
{ 0x0001, 0, 0x02, "ServerList" },
{ 0x0002, 0, 0x02, "ClientList" },
{ 0x0003, 0, 0x02, "PartsList" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
+ { 0x0004, 0, 0x02, "TagList" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -196,11 +157,6 @@ const matter_command_t matter_Commands_001D[] = {
const matter_attribute_t matter_Attributes_001E[] = {
{ 0x0000, 0, 0x03, "Binding" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -214,11 +170,6 @@ const matter_attribute_t matter_Attributes_001F[] = {
{ 0x0002, 0, 0x02, "SubjectsPerAccessControlEntry" },
{ 0x0003, 0, 0x02, "TargetsPerAccessControlEntry" },
{ 0x0004, 0, 0x02, "AccessControlEntriesPerFabric" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -230,11 +181,6 @@ const matter_attribute_t matter_Attributes_0025[] = {
{ 0x0000, 0, 0x02, "ActionList" },
{ 0x0001, 0, 0x02, "EndpointLists" },
{ 0x0002, 0, 0x02, "SetupURL" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -275,11 +221,6 @@ const matter_attribute_t matter_Attributes_0028[] = {
{ 0x0011, 0, 0x02, "Reachable" },
{ 0x0012, 0, 0x02, "UniqueID" },
{ 0x0013, 0, 0x02, "CapabilityMinima" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -320,10 +261,6 @@ const matter_command_t matter_Commands_002A[] = {
const matter_attribute_t matter_Attributes_002B[] = {
{ 0x0000, 0, 0x03, "ActiveLocale" },
{ 0x0001, 0, 0x02, "SupportedLocales" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -335,10 +272,6 @@ const matter_attribute_t matter_Attributes_002C[] = {
{ 0x0000, 0, 0x03, "HourFormat" },
{ 0x0001, 0, 0x03, "ActiveCalendarType" },
{ 0x0002, 0, 0x02, "SupportedCalendarTypes" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -360,11 +293,6 @@ const matter_command_t matter_Commands_002D[] = {
const matter_attribute_t matter_Attributes_002E[] = {
{ 0x0000, 0, 0x02, "Sources" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -404,11 +332,6 @@ const matter_attribute_t matter_Attributes_002F[] = {
{ 0x001C, 0, 0x02, "BatFunctionalWhileCharging" },
{ 0x001D, 0, 0x02, "BatChargingCurrent" },
{ 0x001E, 0, 0x02, "ActiveBatChargeFaults" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -422,11 +345,6 @@ const matter_attribute_t matter_Attributes_0030[] = {
{ 0x0002, 0, 0x02, "RegulatoryConfig" },
{ 0x0003, 0, 0x02, "LocationCapability" },
{ 0x0004, 0, 0x02, "SupportsConcurrentConnection" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -449,10 +367,6 @@ const matter_attribute_t matter_Attributes_0031[] = {
{ 0x0005, 0, 0x02, "LastNetworkingStatus" },
{ 0x0006, 0, 0x02, "LastNetworkID" },
{ 0x0007, 0, 0x02, "LastConnectErrorValue" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -467,11 +381,6 @@ const matter_command_t matter_Commands_0031[] = {
};
const matter_attribute_t matter_Attributes_0032[] = {
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -490,11 +399,6 @@ const matter_attribute_t matter_Attributes_0033[] = {
{ 0x0006, 0, 0x02, "ActiveRadioFaults" },
{ 0x0007, 0, 0x02, "ActiveNetworkFaults" },
{ 0x0008, 0, 0x02, "TestEventTriggersEnabled" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -508,11 +412,6 @@ const matter_attribute_t matter_Attributes_0034[] = {
{ 0x0001, 0, 0x02, "CurrentHeapFree" },
{ 0x0002, 0, 0x02, "CurrentHeapUsed" },
{ 0x0003, 0, 0x02, "CurrentHeapHighWatermark" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -585,11 +484,6 @@ const matter_attribute_t matter_Attributes_0035[] = {
{ 0x003C, 0, 0x02, "ChannelPage0Mask" },
{ 0x003D, 0, 0x02, "OperationalDatasetComponents" },
{ 0x003E, 0, 0x02, "ActiveNetworkFaultsList" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -612,11 +506,6 @@ const matter_attribute_t matter_Attributes_0036[] = {
{ 0x000A, 0, 0x02, "PacketUnicastTxCount" },
{ 0x000B, 0, 0x02, "CurrentMaxRate" },
{ 0x000C, 0, 0x02, "OverrunCount" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -635,11 +524,6 @@ const matter_attribute_t matter_Attributes_0037[] = {
{ 0x0006, 0, 0x02, "OverrunCount" },
{ 0x0007, 0, 0x02, "CarrierDetect" },
{ 0x0008, 0, 0x02, "TimeSinceReset" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -648,6 +532,33 @@ const matter_command_t matter_Commands_0037[] = {
{ 0xFFFF, NULL },
};
+const matter_attribute_t matter_Attributes_0038[] = {
+ { 0x0000, 0, 0x02, "UTCTime" },
+ { 0x0001, 0, 0x02, "Granularity" },
+ { 0x0002, 0, 0x02, "TimeSource" },
+ { 0x0003, 0, 0x02, "TrustedTimeSource" },
+ { 0x0004, 0, 0x02, "DefaultNTP" },
+ { 0x0005, 0, 0x02, "TimeZone" },
+ { 0x0006, 0, 0x02, "DSTOffset" },
+ { 0x0007, 0, 0x02, "LocalTime" },
+ { 0x0008, 0, 0x02, "TimeZoneDatabase" },
+ { 0x0009, 0, 0x02, "NTPServerAvailable" },
+ { 0x000A, 0, 0x02, "TimeZoneListMaxSize" },
+ { 0x000B, 0, 0x02, "DSTOffsetListMaxSize" },
+ { 0x000C, 0, 0x02, "SupportsDNSResolve" },
+ { 0xFFFF, 0, 0x00, NULL },
+};
+
+const matter_command_t matter_Commands_0038[] = {
+ { 0x0000, "SetUTCTime" },
+ { 0x0001, "SetTrustedTimeSource" },
+ { 0x0002, "SetTimeZone" },
+ { 0x0003, "SetTimzZoneResponse" },
+ { 0x0004, "SetDSTOffset" },
+ { 0x0005, "SetDefaultNTP" },
+ { 0xFFFF, NULL },
+};
+
const matter_attribute_t matter_Attributes_0039[] = {
{ 0x0001, 0, 0x02, "VendorName" },
{ 0x0002, 0, 0x02, "VendorID" },
@@ -664,11 +575,6 @@ const matter_attribute_t matter_Attributes_0039[] = {
{ 0x000F, 0, 0x02, "SerialNumber" },
{ 0x0011, 0, 0x02, "Reachable" },
{ 0x0012, 0, 0x02, "UniqueID" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -680,11 +586,6 @@ const matter_attribute_t matter_Attributes_003B[] = {
{ 0x0000, 0, 0x02, "NumberOfPositions" },
{ 0x0001, 0, 0x02, "CurrentPosition" },
{ 0x0002, 0, 0x02, "MultiPressMax" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -696,11 +597,6 @@ const matter_attribute_t matter_Attributes_003C[] = {
{ 0x0000, 0, 0x02, "WindowStatus" },
{ 0x0001, 0, 0x02, "AdminFabricIndex" },
{ 0x0002, 0, 0x02, "AdminVendorId" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -718,11 +614,6 @@ const matter_attribute_t matter_Attributes_003E[] = {
{ 0x0003, 0, 0x02, "CommissionedFabrics" },
{ 0x0004, 0, 0x02, "TrustedRootCertificates" },
{ 0x0005, 0, 0x02, "CurrentFabricIndex" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -747,11 +638,6 @@ const matter_attribute_t matter_Attributes_003F[] = {
{ 0x0001, 0, 0x02, "GroupTable" },
{ 0x0002, 0, 0x02, "MaxGroupsPerFabric" },
{ 0x0003, 0, 0x02, "MaxGroupKeysPerFabric" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -765,11 +651,6 @@ const matter_command_t matter_Commands_003F[] = {
const matter_attribute_t matter_Attributes_0040[] = {
{ 0x0000, 0, 0x02, "LabelList" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -779,10 +660,6 @@ const matter_command_t matter_Commands_0040[] = {
const matter_attribute_t matter_Attributes_0041[] = {
{ 0x0000, 0, 0x03, "LabelList" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -792,11 +669,6 @@ const matter_command_t matter_Commands_0041[] = {
const matter_attribute_t matter_Attributes_0045[] = {
{ 0x0000, 0, 0x02, "StateValue" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -811,11 +683,6 @@ const matter_attribute_t matter_Attributes_0050[] = {
{ 0x0003, 0, 0x02, "CurrentMode" },
{ 0x0004, 0, 0x03, "StartUpMode" },
{ 0x0005, 0, 0x03, "OnMode" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -850,11 +717,6 @@ const matter_attribute_t matter_Attributes_0101[] = {
{ 0x0030, 0, 0x03, "WrongCodeEntryLimit" },
{ 0x0031, 0, 0x03, "UserCodeTemporaryDisableTime" },
{ 0x0033, 0, 0x01, "RequirePINforRemoteOperation" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -903,11 +765,6 @@ const matter_attribute_t matter_Attributes_0102[] = {
{ 0x0013, 0, 0x02, "InstalledClosedLimitTilt" },
{ 0x0017, 0, 0x03, "Mode" },
{ 0x001A, 0, 0x02, "SafetyStatus" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -927,11 +784,6 @@ const matter_attribute_t matter_Attributes_0103[] = {
{ 0x0002, 0, 0x02, "BarrierSafetyStatus" },
{ 0x0003, 0, 0x02, "BarrierCapabilities" },
{ 0x000A, 0, 0x02, "BarrierPosition" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -965,11 +817,6 @@ const matter_attribute_t matter_Attributes_0200[] = {
{ 0x0017, 0, 0x03, "LifetimeEnergyConsumed" },
{ 0x0020, 0, 0x03, "OperationMode" },
{ 0x0021, 0, 0x03, "ControlMode" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1021,11 +868,6 @@ const matter_attribute_t matter_Attributes_0202[] = {
{ 0x0008, 0, 0x03, "RockSetting" },
{ 0x0009, 0, 0x02, "WindSupport" },
{ 0x000A, 0, 0x03, "WindSetting" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1037,11 +879,6 @@ const matter_attribute_t matter_Attributes_0204[] = {
{ 0x0000, 0, 0x03, "TemperatureDisplayMode" },
{ 0x0001, 0, 0x03, "KeypadLockout" },
{ 0x0002, 0, 0x03, "ScheduleProgrammingVisibility" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1102,11 +939,6 @@ const matter_attribute_t matter_Attributes_0300[] = {
{ 0x400C, 0, 0x02, "ColorTempPhysicalMaxMireds" },
{ 0x400D, 0, 0x02, "CoupleColorTempToLevelMinMireds" },
{ 0x4010, 0, 0x03, "StartUpColorTemperatureMireds" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1148,11 +980,6 @@ const matter_attribute_t matter_Attributes_0301[] = {
{ 0x0033, 0, 0x03, "LampBurnHours" },
{ 0x0034, 0, 0x03, "LampAlarmMode" },
{ 0x0035, 0, 0x03, "LampBurnHoursTripPoint" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1166,11 +993,6 @@ const matter_attribute_t matter_Attributes_0400[] = {
{ 0x0002, 0, 0x02, "MaxMeasuredValue" },
{ 0x0003, 0, 0x02, "Tolerance" },
{ 0x0004, 0, 0x02, "LightSensorType" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1218,11 +1040,6 @@ const matter_attribute_t matter_Attributes_0404[] = {
{ 0x0001, 0, 0x02, "MinMeasuredValue" },
{ 0x0002, 0, 0x02, "MaxMeasuredValue" },
{ 0x0003, 0, 0x02, "Tolerance" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1235,11 +1052,6 @@ const matter_attribute_t matter_Attributes_0405[] = {
{ 0x0001, 0, 0x02, "MinMeasuredValue" },
{ 0x0002, 0, 0x02, "MaxMeasuredValue" },
{ 0x0003, 0, 0x02, "Tolerance" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1251,11 +1063,6 @@ const matter_attribute_t matter_Attributes_0406[] = {
{ 0x0000, 0, 0x02, "Occupancy" },
{ 0x0001, 0, 0x02, "OccupancySensorType" },
{ 0x0002, 0, 0x02, "OccupancySensorTypeBitmap" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1265,11 +1072,6 @@ const matter_command_t matter_Commands_0406[] = {
const matter_attribute_t matter_Attributes_0503[] = {
{ 0x0000, 0, 0x02, "MACAddress" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1281,11 +1083,6 @@ const matter_attribute_t matter_Attributes_0504[] = {
{ 0x0000, 0, 0x02, "ChannelList" },
{ 0x0001, 0, 0x02, "Lineup" },
{ 0x0002, 0, 0x02, "CurrentChannel" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1299,11 +1096,6 @@ const matter_command_t matter_Commands_0504[] = {
const matter_attribute_t matter_Attributes_0505[] = {
{ 0x0000, 0, 0x02, "TargetList" },
{ 0x0001, 0, 0x02, "CurrentTarget" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1320,11 +1112,6 @@ const matter_attribute_t matter_Attributes_0506[] = {
{ 0x0004, 0, 0x02, "PlaybackSpeed" },
{ 0x0005, 0, 0x02, "SeekRangeEnd" },
{ 0x0006, 0, 0x02, "SeekRangeStart" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1346,11 +1133,6 @@ const matter_command_t matter_Commands_0506[] = {
const matter_attribute_t matter_Attributes_0507[] = {
{ 0x0000, 0, 0x02, "InputList" },
{ 0x0001, 0, 0x02, "CurrentInput" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1363,11 +1145,6 @@ const matter_command_t matter_Commands_0507[] = {
};
const matter_attribute_t matter_Attributes_0508[] = {
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1377,11 +1154,6 @@ const matter_command_t matter_Commands_0508[] = {
};
const matter_attribute_t matter_Attributes_0509[] = {
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1393,11 +1165,6 @@ const matter_command_t matter_Commands_0509[] = {
const matter_attribute_t matter_Attributes_050A[] = {
{ 0x0000, 0, 0x02, "AcceptHeader" },
{ 0x0001, 0, 0x03, "SupportedStreamingProtocols" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1410,11 +1177,6 @@ const matter_command_t matter_Commands_050A[] = {
const matter_attribute_t matter_Attributes_050B[] = {
{ 0x0000, 0, 0x02, "OutputList" },
{ 0x0001, 0, 0x02, "CurrentOutput" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1427,11 +1189,6 @@ const matter_command_t matter_Commands_050B[] = {
const matter_attribute_t matter_Attributes_050C[] = {
{ 0x0000, 0, 0x02, "CatalogList" },
{ 0x0001, 0, 0x03, "CurrentApp" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1451,11 +1208,6 @@ const matter_attribute_t matter_Attributes_050D[] = {
{ 0x0005, 0, 0x02, "Status" },
{ 0x0006, 0, 0x02, "ApplicationVersion" },
{ 0x0007, 0, 0x02, "AllowedVendorList" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1464,11 +1216,6 @@ const matter_command_t matter_Commands_050D[] = {
};
const matter_attribute_t matter_Attributes_050E[] = {
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1491,11 +1238,6 @@ const matter_attribute_t matter_Attributes_0B04[] = {
{ 0x050B, 0, 0x02, "ActivePower" },
{ 0x050C, 0, 0x02, "ActivePowerMin" },
{ 0x050D, 0, 0x02, "ActivePowerMax" },
- { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
- { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
- { 0xFFFB, 0, 0x02, "AttributeList" },
- { 0xFFFC, 0, 0x02, "FeatureMap" },
- { 0xFFFD, 0, 0x02, "ClusterRevision" },
{ 0xFFFF, 0, 0x00, NULL },
};
@@ -1503,6 +1245,17 @@ const matter_command_t matter_Commands_0B04[] = {
{ 0xFFFF, NULL },
};
+// specifal cluster for attributes common to all clusters
+const matter_attribute_t matter_Attributes_Common[] = {
+ { 0xFFF8, 0, 0x02, "GeneratedCommandList" },
+ { 0xFFF9, 0, 0x02, "AcceptedCommandList" },
+ { 0xFFFA, 0, 0x02, "EventList" },
+ { 0xFFFB, 0, 0x02, "AttributeList" },
+ { 0xFFFC, 0, 0x02, "FeatureMap" },
+ { 0xFFFD, 0, 0x02, "ClusterRevision" },
+ { 0xFFFF, 0, 0x00, NULL },
+};
+
const matter_cluster_t matterAllClusters[] = {
{ 0x0003, "Identify", matter_Attributes_0003, matter_Commands_0003 },
{ 0x0004, "Groups", matter_Attributes_0004, matter_Commands_0004 },
@@ -1531,6 +1284,7 @@ const matter_cluster_t matterAllClusters[] = {
// { 0x0035, "ThreadNetworkDiagnostics", matter_Attributes_0035, matter_Commands_0035 },
{ 0x0036, "WiFiNetworkDiagnostics", matter_Attributes_0036, matter_Commands_0036 },
{ 0x0037, "EthernetNetworkDiagnostics", matter_Attributes_0037, matter_Commands_0037 },
+ { 0x0038, "TimeSync", matter_Attributes_0038, matter_Commands_0038 },
{ 0x0039, "BridgedDeviceBasic", matter_Attributes_0039, matter_Commands_0039 },
{ 0x003B, "Switch", matter_Attributes_003B, matter_Commands_003B },
{ 0x003C, "AdministratorCommissioning", matter_Attributes_003C, matter_Commands_003C },
diff --git a/lib/libesp32/berry_matter/src/be_matter_misc.cpp b/lib/libesp32/berry_matter/src/be_matter_misc.cpp
index 0e57c2aa5..32931d6c7 100644
--- a/lib/libesp32/berry_matter/src/be_matter_misc.cpp
+++ b/lib/libesp32/berry_matter/src/be_matter_misc.cpp
@@ -32,12 +32,14 @@ extern "C" const void* matter_get_ip_bytes(const char* ip_str, size_t* ret_len)
IPAddress ip;
if (ip.fromString(ip_str)) {
#ifdef USE_IPV6
- if (ip.isV4()) {
+ if (ip.type() == IPv4) {
uint32_t ip_32 = ip;
memcpy(ip_bytes, &ip_32, 4);
*ret_len = 4;
} else {
- memcpy(ip_bytes, ip.raw6(), 16);
+ ip_addr_t ip_addr;
+ ip.to_ip_addr_t(&ip_addr);
+ memcpy(ip_bytes, &ip_addr.u_addr.ip6, 16);
*ret_len = 16;
}
#else
diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c
index 994703f8d..693d090de 100644
--- a/lib/libesp32/berry_matter/src/be_matter_module.c
+++ b/lib/libesp32/berry_matter/src/be_matter_module.c
@@ -118,25 +118,35 @@ const char* matter_get_opcode_name(uint16_t opcode) {
BE_FUNC_CTYPE_DECLARE(matter_get_opcode_name, "s", "i")
const char* matter_get_attribute_name(uint16_t cluster, uint16_t attribute) {
- for (const matter_cluster_t * cl = matterAllClusters; cl->id != 0xFFFF; cl++) {
- if (cl->id == cluster) {
- for (const matter_attribute_t * at = cl->attributes; at->id != 0xFFFF; at++) {
- if (at->id == attribute) {
- return at->name;
+ if (attribute < 0xFFF0) {
+ for (const matter_cluster_t * cl = matterAllClusters; cl->id != 0xFFFF; cl++) {
+ if (cl->id == cluster) {
+ for (const matter_attribute_t * at = cl->attributes; at->id != 0xFFFF; at++) {
+ if (at->id == attribute) {
+ return at->name;
+ }
}
}
}
+ } else {
+ for (const matter_attribute_t * at = matter_Attributes_Common; at->id != 0xFFFF; at++) {
+ if (at->id == attribute) {
+ return at->name;
+ }
+ }
}
return NULL;
}
BE_FUNC_CTYPE_DECLARE(matter_get_attribute_name, "s", "ii")
bbool matter_is_attribute_writable(uint16_t cluster, uint16_t attribute) {
- for (const matter_cluster_t * cl = matterAllClusters; cl->id != 0xFFFF; cl++) {
- if (cl->id == cluster) {
- for (const matter_attribute_t * at = cl->attributes; at->id != 0xFFFF; at++) {
- if (at->id == attribute) {
- return (at->flags & 0x01) ? btrue : bfalse;
+ if (attribute < 0xFFF0) {
+ for (const matter_cluster_t * cl = matterAllClusters; cl->id != 0xFFFF; cl++) {
+ if (cl->id == cluster) {
+ for (const matter_attribute_t * at = cl->attributes; at->id != 0xFFFF; at++) {
+ if (at->id == attribute) {
+ return (at->flags & 0x01) ? btrue : bfalse;
+ }
}
}
}
@@ -146,14 +156,18 @@ bbool matter_is_attribute_writable(uint16_t cluster, uint16_t attribute) {
BE_FUNC_CTYPE_DECLARE(matter_is_attribute_writable, "b", "ii")
bbool matter_is_attribute_reportable(uint16_t cluster, uint16_t attribute) {
- for (const matter_cluster_t * cl = matterAllClusters; cl->id != 0xFFFF; cl++) {
- if (cl->id == cluster) {
- for (const matter_attribute_t * at = cl->attributes; at->id != 0xFFFF; at++) {
- if (at->id == attribute) {
- return (at->flags & 0x02) ? btrue : bfalse;
+ if (attribute < 0xFFF0) {
+ for (const matter_cluster_t * cl = matterAllClusters; cl->id != 0xFFFF; cl++) {
+ if (cl->id == cluster) {
+ for (const matter_attribute_t * at = cl->attributes; at->id != 0xFFFF; at++) {
+ if (at->id == attribute) {
+ return (at->flags & 0x02) ? btrue : bfalse;
+ }
}
}
}
+ } else {
+ return btrue;
}
return bfalse;
}
@@ -285,6 +299,8 @@ module matter (scope: global, strings: weak) {
_STYLESHEET, comptr(MATTER_STYLESHEET)
_ADD_ENDPOINT_JS, comptr(MATTER_ADD_ENDPOINT_HINTS_JS)
MATTER_OPTION, int(151) // SetOption151 enables Matter
+ AGGREGATOR_ENDPOINT, int(0x0001) // some controllers require aggregator to be endpoint 1
+ START_ENDPOINT, int(0x0002) // endpoint where to start devices
seconds_to_dhm, ctype_func(matter_seconds_to_dhm)
Verhoeff, class(be_class_Matter_Verhoeff)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be
index 5d6f31de0..acca8d64c 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be
@@ -83,7 +83,7 @@ matter.inspect = inspect
# from the inheritance hierarchy
#@ solidify:matter.consolidate_clusters,weak
def consolidate_clusters(cl, m)
- var cl_parent = super(cl).CLUSTERS
+ var cl_parent = super(cl) != nil ? super(cl).CLUSTERS : {}
var ret = {}
# clone cl_parent
for k: cl_parent.keys()
@@ -98,6 +98,22 @@ def consolidate_clusters(cl, m)
if l == nil l = [] end
ret[k] = l + m[k]
end
+ # add all auto-attribbutes to each cluster
+ var AUTO_ATTRIBUTES = [ # pre-defined auto attributes for every cluster
+ 0xFFF8, # GeneratedCommandList - [] by default
+ 0xFFF9, # AcceptedCommandList - list of defined commands TODO for auto-generated
+ 0xFFFA, # EventList - [] by default
+ 0xFFFB, # AttributeList - list generated from cluster definition
+ 0xFFFC, # FeatureMap - 0 by default unless redefined
+ 0xFFFD, # ClusterRevision - 1 by default unless redefined
+ ]
+ for k: m.keys()
+ for at: AUTO_ATTRIBUTES
+ if ret[k].find(at) == nil
+ ret[k].push(at)
+ end
+ end
+ end
# print(ret)
return ret
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be b/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be
index 83da9d5d4..5186808e4 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be
@@ -142,8 +142,10 @@ class Matter_Expirable_list : list
# remove - override
#
def remove(i)
- if i >= 0 && i < size(self) self[i].before_remove() end
- return super(self).remove(i)
+ if i != nil
+ if i >= 0 && i < size(self) self[i].before_remove() end
+ return super(self).remove(i)
+ end
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
index 2681197f2..a2f3daa00 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
@@ -43,6 +43,7 @@ class Matter_Fabric : Matter_Expirable
var _store # reference back to session store
# timestamp
var created
+ var deleted # timestamp when the deletion of fabric was requested, and deferred
# fabric-index
var fabric_index # index number for fabrics, starts with `1`
var fabric_parent # index of the parent fabric, i.e. the fabric that triggered the provisioning (if nested)
@@ -76,6 +77,7 @@ class Matter_Fabric : Matter_Expirable
self._sessions = matter.Expirable_list()
self.fabric_label = ""
self.created = tasmota.rtc_utc()
+ # self.deleted = nil # no need to actually set to nil
# init group counters
self._counter_group_data_snd_impl = matter.Counter()
self._counter_group_ctrl_snd_impl = matter.Counter()
@@ -95,6 +97,17 @@ class Matter_Fabric : Matter_Expirable
def get_ca() return self.root_ca_certificate end
def get_fabric_index() return self.fabric_index end
+ def get_fabric_id_as_int64()
+ var i64 = int64()
+ i64.frombytes(self.fabric_id)
+ return i64
+ end
+ def get_device_id_as_int64()
+ var i64 = int64()
+ i64.frombytes(self.device_id)
+ return i64
+ end
+
def get_admin_vendor_name()
var vnd = self.admin_vendor
if vnd == nil return "" end
@@ -276,6 +289,16 @@ class Matter_Fabric : Matter_Expirable
return session
end
+ #############################################################
+ # Mark for deleteion in the near future
+ #
+ def mark_for_deletion()
+ self.deleted = tasmota.rtc_utc()
+ end
+ def is_marked_for_deletion()
+ return self.deleted != nil
+ end
+
#############################################################
# Fabric::tojson()
#
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_async.be b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_async.be
index 3d9abbf95..3b2947664 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_async.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_async.be
@@ -31,6 +31,7 @@ class Matter_HTTP_async : Matter_TCP_async
# var tcp # instance of tcpclientasync
# var time_start # timestamp when starting connection
# var tcp_connected # is tcp connected, true/false/nil (nil is in-progress)
+ var auth # web authentication string (Basic Auth) or `nil`, in format `user:password` as bade64
var cmd # GET url command
var response # aggrated response
var response_offset # offset to parse in response
@@ -42,8 +43,16 @@ class Matter_HTTP_async : Matter_TCP_async
var phase # parsing phase: 0/ status line, 1/ headers, 2/ payload chunked
var is_chunked # true if the content is chunked
var chunk_size # nil or int, size of the current chunk
- static var HTTP_GET = "GET %s HTTP/1.1\r\nHost %s:%s\r\nConnection: close\r\n\r\n" # see https://stackoverflow.com/questions/6686261/what-at-the-bare-minimum-is-required-for-an-http-request
+ static var HTTP_GET = "GET %s HTTP/1.1\r\n" # see https://stackoverflow.com/questions/6686261/what-at-the-bare-minimum-is-required-for-an-http-request
+ "Host %s:%s\r\n"
+ "Connection: close\r\n"
+ "\r\n"
+ static var HTTP_GET_AUTH = "GET %s HTTP/1.1\r\n" # same with auth
+ "Host %s:%s\r\n"
+ "Authorization: Basic %s\r\n"
+ "Connection: close\r\n"
+ "\r\n"
static var HTTP_STATUS_REGEX = "HTTP/1\\.[0-1] (\\d+) .*?\r\n" # extract stattus code from first line
static var HTTP_HEADER_REGEX = "([A-Za-z0-9-]+): (.*?)\r\n" # extract a header with its 2 parts
static var HTTP_BODY_REGEX = "\r\n" # end of headers
@@ -53,6 +62,15 @@ class Matter_HTTP_async : Matter_TCP_async
#############################################################
# init
def init(addr, port, timeout, fastloop)
+ # extract auth from add first
+ import string
+ addr = str(addr) # force string
+ var x = string.find(addr, "@")
+ if x >= 0
+ self.auth = bytes().fromstring(addr[0 .. x-1]).tob64()
+ addr = addr[x+1 .. ]
+ end
+ # `addr` is cleaned from authentication information
super(self).init(addr, port, timeout, fastloop)
self.compile_re()
end
@@ -253,7 +271,13 @@ class Matter_HTTP_async : Matter_TCP_async
addr = "[" + addr + "]" # IPv6 must be enclosed in brakets
end
- var req = format(self.HTTP_GET, self.cmd, addr, self.port)
+ var req
+ if (self.auth == nil)
+ req = format(self.HTTP_GET, self.cmd, addr, self.port)
+ else
+ # use AUTH information
+ req = format(self.HTTP_GET_AUTH, self.cmd, addr, self.port, self.auth)
+ end
var ret = self.write(req)
if ret != size(req)
# print("Could not send","size=",size(req),"ret=",ret)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
index 9f4c8613d..628ed5a3c 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
@@ -772,9 +772,10 @@ class Matter_IM
attr_name = attr_name ? " (" + attr_name + ")" : ""
if res != nil
- var res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging
if tasmota.loglevel(3)
+ var res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging
tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
+ # tasmota.log(f"MTR: {res.tlv2raw().tohex()}", 3)
end
# if matter.profiler.active && tasmota.loglevel(3)
# tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be
index 3e7bb9e42..2a53cc501 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be
@@ -36,9 +36,61 @@ class Matter_Plugin
static var VIRTUAL = false # set to true only for virtual devices
var update_next # next timestamp for update
# Configuration of the plugin: clusters and type
- static var CLUSTERS = {
- 0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
- 0x0039: [0x11], # Bridged Device Basic Information 9.13 p.485
+ static var CLUSTERS = matter.consolidate_clusters(_class, {
+ 0x001D: [0,1,2,3], # Descriptor Cluster 9.5 p.453
+ })
+ static var COMMANDS = {
+ 0x001D: nil, # Descriptor Cluster 9.5 p.453
+ }
+ # static var TYPES = { : } # needs to be defined for each endpoint
+ # `FEATURE_MAPS` contains any non-zero value per cluster, if not present default to `0`
+ static var FEATURE_MAPS = { # feature map per cluster
+ 0x0031: 0x04, # Put Eth for now which should work for any on-network
+ 0x0102: 1 + 4, # Lift + PA_LF
+ }
+ # `CLUSTER_REVISIONS` contains revision numbers for each cluster, or `1` if not present
+ static var CLUSTER_REVISIONS = {
+ 0x0003: 4, # New data model format and notation
+ 0x0004: 4, # New data model format and notation
+ 0x0005: 5, # "new data model format and notation"
+ 0x0006: 5, # Addition of Dead Front behavior and associated FeatureMap entry
+ 0x0008: 5, # "new data model format and notation"
+ 0x001D: 2, # Semantic tag list; TagList feature
+ # 0x001F: 1, # Initial Release
+ 0x0028: 2, # Added ProductAppearance attribute
+ # 0x002A: 1, # Initial Release
+ # 0x002B: 1, # Initial Release
+ # 0x002C: 1, # Initial Release
+ # 0x0030: 1, # Initial Release
+ # 0x0031: 1, # Initial Release
+ # 0x0032: 1, # Initial Release
+ # 0x0033: 1, # Initial Release
+ # 0x0034: 1, # Initial Release
+ 0x0038: 2, #
+ # 0x003C: 1, # Initial Release
+ # 0x003E: 1, # Initial Release
+ 0x003F: 2, # Clarify KeySetWrite validation and behavior on invalid epoch key lengths
+ # 0x0040: 1, # Initial Release
+ # 0x0041: 1, # Initial Release
+ # 0x0042: 1, # Initial Release
+ # 0x005B: 1, # Initial Release
+ # 0x005C: 1, # Initial Release
+ 0x0101: 7, # Added support for European door locks (unbolt feature)
+ 0x0102: 5, # New data model format and notation
+ 0x0200: 4, # Added feature map
+ 0x0201: 6, # Introduced the LTNE feature and adapted text (spec issue #5778)
+ 0x0202: 4, # Change conformance for FanModeSe quenceEnum
+ 0x0204: 2, # New data model format and notation, added "Conversion of Temperature Values for Display" section
+ 0x0300: 6, # Added clarifications to Scenes support for Matter
+ 0x0301: 4, # New data model format and notation
+ 0x0400: 3, # New data model format and notation
+ 0x0402: 4, # New data model format and notation
+ 0x0403: 3, # New data model format and notation
+ 0x0404: 3, # New data model format and notation
+ 0x0405: 3, # New data model format and notation
+ 0x0406: 3, # New data model format and notation
+ 0x0407: 3, # New data model format and notation
+ 0x0408: 3, # New data model format and notation
}
# Accepted Update commands for virtual devices
static var UPDATE_COMMANDS = []
@@ -266,17 +318,35 @@ class Matter_Plugin
return tlv_solo.set(TLV.U4, 1) # "Initial Release"
end
- # ====================================================================================================
- elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ==========
-
- if attribute == 0x0011 # ---------- Reachable / bool ----------
- return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
- else
- return super(self).read_attribute(session, ctx, tlv_solo) # rest is handled by 0x0028
- end
- else
- return nil
end
+
+ # Handle attributes 0xFFF8 - 0xFFFD for all clusters
+ if attribute == 0xFFF8 # GeneratedCommandList
+ var gcl = TLV.Matter_TLV_array()
+ return gcl # return empty list
+ elif attribute == 0xFFF9 # AcceptedCommandList
+ var acli = TLV.Matter_TLV_array()
+ var attr_list = self.get_attribute_list(cluster)
+ var idx = 0
+ while idx < size(attr_list)
+ acli.add_TLV(nil, TLV.U2, attr_list[idx])
+ idx += 1
+ end
+ return acli # TODO, empty list for now
+ elif attribute == 0xFFFA # EventList
+ var el = TLV.Matter_TLV_array()
+ return el # return empty list
+ elif attribute == 0xFFFB # AttributeList
+ var al = TLV.Matter_TLV_array()
+ return al # TODO
+ elif attribute == 0xFFFC # FeatureMap
+ var featuremap = self.FEATURE_MAPS.find(cluster, 0)
+ return tlv_solo.set(TLV.U4, featuremap)
+ elif attribute == 0xFFFD # ClusterRevision
+ var clusterrevision = self.CLUSTER_REVISIONS.find(cluster, 1)
+ return tlv_solo.set(TLV.U4, clusterrevision)
+ end
+
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be
index 39dd77cc9..6e8771736 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be
@@ -26,9 +26,10 @@ import matter
class Matter_Plugin_Aggregator : Matter_Plugin
static var TYPE = "aggregator" # name of the plug-in in json
static var DISPLAY_NAME = "Aggregator" # display name of the plug-in
-# static var CLUSTERS = {
-# # 0x001D: inherited # Descriptor Cluster 9.5 p.453
-# }
+ static var CLUSTERS = matter.consolidate_clusters(_class, {
+ # 0x001D: inherited # Descriptor Cluster 9.5 p.453
+ 0x0003: [0,1,], # Identify 1.2 p.16
+ })
static var TYPES = { 0x000E: 1 } # Aggregator
#############################################################
@@ -39,29 +40,69 @@ class Matter_Plugin_Aggregator : Matter_Plugin
var cluster = ctx.cluster
var attribute = ctx.attribute
- if cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
+ # ====================================================================================================
+ if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
+ if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
+ return tlv_solo.set(TLV.U2, 0) # no identification in progress
+ elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
+ return tlv_solo.set(TLV.U1, 0) # IdentifyType = 0x00 None
+ end
+ elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
+ if attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
+ var pl = TLV.Matter_TLV_array()
+ # from connectedhome reference implementation
+ pl.add_TLV(nil, TLV.U2, 0x001E) # Binding
+ return pl
# overwrite PartsList
- if attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
+ elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
var pl = TLV.Matter_TLV_array()
var eps = self.device.get_active_endpoints(true)
for ep: eps
- if ep < 0xFF00
+ if ep != matter.AGGREGATOR_ENDPOINT
pl.add_TLV(nil, TLV.U2, ep) # add each endpoint
end
end
return pl
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
-
end
- # no match found, return that the attribute is unsupported
+ return super(self).read_attribute(session, ctx, tlv_solo)
+ end
+
+ #############################################################
+ # Invoke a command
+ #
+ # returns a TLV object if successful, contains the response
+ # or an `int` to indicate a status
+ def invoke_request(session, val, ctx)
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var command = ctx.command
+
+ # ====================================================================================================
+ if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
+
+ if command == 0x0000 # ---------- Identify ----------
+ # ignore
+ return true
+ elif command == 0x0001 # ---------- IdentifyQuery ----------
+ # create IdentifyQueryResponse
+ # ID=1
+ # 0=Certificate (octstr)
+ var iqr = TLV.Matter_TLV_struct()
+ iqr.add_TLV(0, TLV.U2, 0) # Timeout
+ ctx.command = 0x00 # IdentifyQueryResponse
+ return iqr
+ elif command == 0x0040 # ---------- TriggerEffect ----------
+ # ignore
+ return true
+ end
+
+ else
+ return super(self).invoke_request(session, val, ctx)
+ end
end
end
matter.Plugin_Aggregator = Matter_Plugin_Aggregator
-
\ No newline at end of file
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be
index 411cb2255..619646386 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be
@@ -25,9 +25,9 @@ class Matter_Plugin_Device : Matter_Plugin
static var CLUSTERS = matter.consolidate_clusters(_class, {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485
- 0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16
- 0x0004: [0,0xFFFC,0xFFFD], # Groups 1.3 p.21
- 0x0005: [0,1,2,3,4,5,0xFFFC,0xFFFD], # Scenes 1.4 p.30 - no writable
+ 0x0003: [0,1], # Identify 1.2 p.16
+ 0x0004: [0], # Groups 1.3 p.21
+ 0x0005: [0,1,2,3,4,5], # Scenes 1.4 p.30 - no writable
})
static var TYPES = { 0x0013: 1 } # fake type
static var NON_BRIDGE_VENDOR = [ 0x1217, 0x1381 ] # Fabric VendorID not supporting Bridge mode
@@ -52,29 +52,16 @@ class Matter_Plugin_Device : Matter_Plugin
return tlv_solo.set(TLV.U2, 0) # no identification in progress
elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
return tlv_solo.set(TLV.U1, 0) # IdentifyType = 0x00 None
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # no features
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # "new data model format and notation"
end
# ====================================================================================================
elif cluster == 0x0004 # ========== Groups 1.3 p.21 ==========
if attribute == 0x0000 # ---------- ----------
return nil # TODO
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)#
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4)# "new data model format and notation"
end
# ====================================================================================================
elif cluster == 0x0005 # ========== Scenes 1.4 p.30 - no writable ==========
- if attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
- end
# ====================================================================================================
elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
@@ -96,8 +83,6 @@ class Matter_Plugin_Device : Matter_Plugin
d1.add_TLV(1, TLV.U2, 1) # Revision
end
return dtl
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
# ====================================================================================================
@@ -119,13 +104,10 @@ class Matter_Plugin_Device : Matter_Plugin
return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
elif attribute == 0x0012 # ---------- UniqueID / string 32 max ----------
return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
@@ -180,6 +162,7 @@ class Matter_Plugin_Device : Matter_Plugin
# New values need to be appended with `,"key":value` (including prefix comma)
def append_state_json()
import introspect
+ import json
var ret = ""
# ret: string
@@ -195,6 +178,13 @@ class Matter_Plugin_Device : Matter_Plugin
end
end
+ # If sensor with JSON_NAME using `val`
+ var json_name = introspect.get(self, 'JSON_NAME')
+ if json_name && introspect.contains(self, 'shadow_value')
+ var val = (self.shadow_value != nil) ? json.dump(self.shadow_value) : "null"
+ ret += f',"{json_name}":{val}'
+ end
+
# lights
# print(f'{self=} {type(self)} {introspect.members(self)=}')
_stats_json_inner("shadow_onoff", "Power")
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be
index f02fedadf..87af9396b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be
@@ -34,7 +34,7 @@ class Matter_Plugin_Root : Matter_Plugin
0x002B: [0,1], # Localization Configuration Cluster 11.3 p.580
0x002C: [0,1,2], # Time Format Localization Cluster 11.4 p.581
0x0030: [0,1,2,3,4], # GeneralCommissioning cluster 11.9 p.627
- 0x0031: [3,4,0xFFFC], # Network Commissioning Cluster cluster 11.8 p.606
+ 0x0031: [3,4], # Network Commissioning Cluster cluster 11.8 p.606
0x0032: [], # Diagnostic Logs Cluster 11.10 p.637
0x0033: [0,1,2,8], # General Diagnostics Cluster 11.11 p.642
0x0034: [], # Software Diagnostics Cluster 11.12 p.654
@@ -154,11 +154,12 @@ class Matter_Plugin_Root : Matter_Plugin
var nocl = TLV.Matter_TLV_array() # NOCs, p.711
var fabs = ctx.fabric_filtered ? [session.get_fabric()] : self.device.sessions.active_fabrics()
for loc_fabric: fabs
+ if loc_fabric.is_marked_for_deletion() continue end # fabric is scheduled for deletion
if loc_fabric == nil continue end
var nocs = nocl.add_struct(nil)
nocs.add_TLV(1, TLV.B2, loc_fabric.get_noc()) # NOC
nocs.add_TLV(2, TLV.B2, loc_fabric.get_icac()) # ICAC
- nocs.add_TLV(0xFE, TLV.U2, loc_fabric.get_fabric_index()) # Label
+ nocs.add_TLV(matter.AGGREGATOR_ENDPOINT, TLV.U2, loc_fabric.get_fabric_index()) # Label
end
return nocl
elif attribute == 0x0001 # ---------- Fabrics / list[FabricDescriptorStruct] ----------
@@ -166,12 +167,13 @@ class Matter_Plugin_Root : Matter_Plugin
var fabs = ctx.fabric_filtered ? [session.get_fabric()] : self.device.sessions.active_fabrics()
for loc_fabric: fabs
if loc_fabric == nil continue end
+ if loc_fabric.is_marked_for_deletion() continue end # fabric is scheduled for deletion
var root_ca_tlv = TLV.parse(loc_fabric.get_ca())
var fab = fabrics.add_struct(nil) # encoding see p.303
fab.add_TLV(1, TLV.B2, root_ca_tlv.findsubval(9)) # RootPublicKey
fab.add_TLV(2, TLV.U2, loc_fabric.get_admin_vendor()) # VendorID
- fab.add_TLV(3, TLV.U8, loc_fabric.get_fabric_id()) # FabricID
- fab.add_TLV(4, TLV.U8, loc_fabric.get_device_id()) # NodeID
+ fab.add_TLV(3, TLV.U8, loc_fabric.get_fabric_id_as_int64()) # FabricID
+ fab.add_TLV(4, TLV.U8, loc_fabric.get_device_id_as_int64()) # NodeID
fab.add_TLV(5, TLV.UTF1, loc_fabric.get_fabric_label()) # Label
fab.add_TLV(0xFE, TLV.U2, loc_fabric.get_fabric_index()) # idx
end
@@ -299,33 +301,32 @@ class Matter_Plugin_Root : Matter_Plugin
elif cluster == 0x0031 # ========== Network Commissioning Cluster cluster 11.8 p.606 ==========
if attribute == 0x0003 # ---------- ConnectMaxTimeSeconds / uint8 ----------
return tlv_solo.set(TLV.U1, 30) # 30 - value taking from example in esp-matter
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0x04) # Put Eth for now which should work for any on-network
end
elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
+ # overwrite ClientList
+ if attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
+ var pl = TLV.Matter_TLV_array()
+ # from connectedhome reference implementation
+ pl.add_TLV(nil, TLV.U2, 0x001F) # Access Control Cluster
+ return pl
# overwrite PartsList
- if attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
+ elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
var pl = TLV.Matter_TLV_array()
var eps = self.device.get_active_endpoints(true)
var disable_bridge_mode = self.device.disable_bridge_mode
for ep: eps
# if bridge mode is disabled, don't announce Aggregatore (above 0xFF00)
- if !disable_bridge_mode || ep < 0xFF00
+ if !disable_bridge_mode || ep != matter.AGGREGATOR_ENDPOINT
pl.add_TLV(nil, TLV.U2, ep) # add each endpoint
end
end
return pl
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
-
end
- # no match found, return that the attribute is unsupported
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
@@ -547,13 +548,14 @@ class Matter_Plugin_Root : Matter_Plugin
# tasmota.log("MTR: fabric=" + matter.inspect(session._fabric), 3)
# tasmota.log("MTR: ------------------------------------------", 3)
new_fabric.log_new_fabric() # log that we registered a new fabric
+ new_fabric.assign_fabric_index()
# create NOCResponse
# 0=StatusCode
# 1=FabricIndex (1-254) (opt)
# 2=DebugText (opt)
var nocr = TLV.Matter_TLV_struct()
nocr.add_TLV(0, TLV.U1, matter.SUCCESS) # Status
- nocr.add_TLV(1, TLV.U1, 1) # fabric-index
+ nocr.add_TLV(1, TLV.U1, new_fabric.get_fabric_index()) # fabric-index
ctx.command = 0x08 # NOCResponse
return nocr
@@ -561,8 +563,16 @@ class Matter_Plugin_Root : Matter_Plugin
var label = val.findsubval(0) # Label string max 32
session.set_fabric_label(label)
tasmota.log(format("MTR: . Update fabric '%s' label='%s'", session._fabric.get_fabric_id().copy().reverse().tohex(), str(label)), 3)
- ctx.status = matter.SUCCESS # OK
- return nil # trigger a standalone ack
+
+ # create NOCResponse
+ # 0=StatusCode
+ # 1=FabricIndex (1-254) (opt)
+ # 2=DebugText (opt)
+ var nocr = TLV.Matter_TLV_struct()
+ nocr.add_TLV(0, TLV.U1, matter.SUCCESS) # Status
+ nocr.add_TLV(1, TLV.U1, session.get_fabric().get_fabric_index()) # fabric-index
+ ctx.command = 0x08 # NOCResponse
+ return nocr
elif command == 0x000A # ---------- RemoveFabric ----------
var index = val.findsubval(0) # FabricIndex
@@ -572,8 +582,18 @@ class Matter_Plugin_Root : Matter_Plugin
if fab.get_fabric_index() == index
# tasmota.log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2)
# defer actual removal to send a response
+ fab.mark_for_deletion() # this should not appear anymore in the list
tasmota.set_timer(2000, def () self.device.remove_fabric(fab) end)
- return true # Ok
+
+ # create NOCResponse
+ # 0=StatusCode
+ # 1=FabricIndex (1-254) (opt)
+ # 2=DebugText (opt)
+ var nocr = TLV.Matter_TLV_struct()
+ nocr.add_TLV(0, TLV.U1, matter.SUCCESS) # Status
+ nocr.add_TLV(1, TLV.U1, index) # fabric-index
+ ctx.command = 0x08 # NOCResponse
+ return nocr
end
end
tasmota.log("MTR: RemoveFabric fabric("+str(index)+") not found", 2)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be
index 46087cd4e..75b2316df 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be
@@ -38,7 +38,7 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
# # 0x0003: inherited # Identify 1.2 p.16
# # 0x0004: inherited # Groups 1.3 p.21
# # 0x0005: inherited # Scenes 1.4 p.30 - no writable
- # # 0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
+ # # 0x0006: [0], # On/Off 1.5 p.48
# # 0x0028: [0,1,2,3,4,5,6,7,8,9,0x0A,0x0F,0x12,0x13],# Basic Information Cluster cluster 11.1 p.565
# # 0x0039: [0x11] # Bridged Device Basic Information 9.13 p.485
@@ -207,13 +207,10 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
elif attribute == 0x0011 # ---------- Reachable / bool ----------
# self.is_reachable_lazy_sync() # Not needed anymore
return tlv_solo.set(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be
index 4ba09f081..ab6de67fe 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be
@@ -32,8 +32,8 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
# 0x0003: inherited # Identify 1.2 p.16
# 0x0004: inherited # Groups 1.3 p.21
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
- 0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
- 0x0008: [0,2,3,0x0F,0x11,0xFFFC,0xFFFD], # Level Control 1.6 p.57
+ 0x0006: [0], # On/Off 1.5 p.48
+ 0x0008: [0,2,3,0x0F,0x11], # Level Control 1.6 p.57
})
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power", "Bri")
static var TYPES = { 0x0101: 2 } # Dimmable Light
@@ -137,10 +137,6 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
# ====================================================================================================
@@ -156,15 +152,10 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
return tlv_solo.set(TLV.U1, 0) #
elif attribute == 0x0011 # ---------- OnLevel / u1 ----------
return tlv_solo.set(TLV.U1, self.shadow_bri)
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0X01) # OnOff
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 5) # "new data model format and notation"
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be
index a2966c7c6..89f3a5430 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be
@@ -35,7 +35,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
# 0x0003: inherited # Identify 1.2 p.16
# 0x0004: inherited # Groups 1.3 p.21
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
- 0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
+ 0x0006: [0], # On/Off 1.5 p.48
})
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power")
static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit
@@ -109,15 +109,10 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be
index cdeb53217..a702a11af 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be
@@ -32,6 +32,17 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device
var tasmota_sensor_matcher # Actual matcher object
var shadow_value # Last known value
+ #############################################################
+ # Constructor
+ #
+ # device: contains the root device object so the plugin can "call home"
+ # endpoint: (int) the endpoint number (16 bits)
+ # arguments: (map) the map for all complementary arguments that are plugin specific
+ def init(device, endpoint, config)
+ super(self).init(device, endpoint, config)
+ device.add_read_sensors_schedule(self.UPDATE_TIME)
+ end
+
#############################################################
# parse_configuration
#
@@ -95,15 +106,5 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device
super(self).update_virtual(payload_json)
end
- #############################################################
- # append_state_json
- #
- # Output the current state in JSON
- # New values need to be appended with `,"key":value` (including prefix comma)
- def append_state_json()
- var val = (self.shadow_value != nil) ? self.shadow_value : "null"
- return f',"{self.JSON_NAME}":{val}'
- end
-
end
matter.Plugin_Sensor = Matter_Plugin_Sensor
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be
index 5932b0060..b7d683039 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be
@@ -32,7 +32,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
static var UPDATE_TIME = 750 # update every 750ms
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Contact")
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0045: [0,0xFFFC,0xFFFD], # Boolean State p.70 - no writable
+ 0x0045: [0], # Boolean State p.70 - no writable
})
static var TYPES = { 0x0015: 1 } # Contact Sensor, rev 1
@@ -61,19 +61,17 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
def update_shadow()
super(self).update_shadow()
if !self.VIRTUAL
- import json
- var ret = tasmota.cmd("Status 8", true)
- if ret != nil
- var j = json.load(ret)
- if j != nil
- var state = false
- state = (j.find("Switch" + str(self.tasmota_switch_index)) == "ON")
+ var switch_str = "Switch" + str(self.tasmota_switch_index)
- if self.shadow_contact != state
- self.attribute_updated(0x0045, 0x0000)
- self.shadow_contact = state
- end
+ var j = tasmota.cmd("Status 8", true)
+ if j != nil j = j.find("StatusSNS") end
+ if j != nil && j.contains(switch_str)
+ var state = (j.find(switch_str) == "ON")
+
+ if (self.shadow_contact != state)
+ self.attribute_updated(0x0045, 0x0000)
end
+ self.shadow_contact = state
end
end
end
@@ -94,15 +92,10 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
else
return tlv_solo.set(TLV.NULL, nil)
end
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 1) # 1 = Initial release
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
@@ -121,14 +114,5 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
super(self).update_virtual(payload_json)
end
- #############################################################
- # append_state_json
- #
- # Output the current state in JSON
- # New values need to be appended with `,"key":value` (including prefix comma)
- def append_state_json()
- return f',"Contact":{int(self.shadow_contact)}'
- end
-
end
matter.Plugin_Sensor_Contact = Matter_Plugin_Sensor_Contact
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be
index 8ad690726..2d9f09323 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be
@@ -32,7 +32,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
static var UPDATE_TIME = 750 # update every 750ms
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Occupancy")
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0406: [0,1,2,0xFFFC,0xFFFD], # Occupancy Sensing p.105 - no writable
+ 0x0406: [0,1,2], # Occupancy Sensing p.105 - no writable
})
static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2
@@ -96,15 +96,10 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
return tlv_solo.set(TLV.U1, 3) # physical contact
elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
return tlv_solo.set(TLV.U1, 0) # unknown
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
@@ -123,14 +118,5 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
super(self).update_virtual(payload_json)
end
- #############################################################
- # append_state_json
- #
- # Output the current state in JSON
- # New values need to be appended with `,"key":value` (including prefix comma)
- def append_state_json()
- return f',"Occupancy":{int(self.shadow_occupancy)}'
- end
-
end
matter.Plugin_Sensor_Occupancy = Matter_Plugin_Sensor_Occupancy
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be
index b7b1eb758..a2d2af9e6 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be
@@ -29,7 +29,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 750 # update every 750ms
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
+ 0x0006: [0], # On/Off 1.5 p.48
})
static var TYPES = { 0x0850: 2 } # OnOff Sensor, rev 2
@@ -79,15 +79,10 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
@@ -95,6 +90,8 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
#
# Output the current state in JSON
# New values need to be appended with `,"key":value` (including prefix comma)
+ #
+ # Override the default behavior to use the key `OnOff` instead of `Power`
def append_state_json()
return f',"OnOff":{int(self.shadow_onoff)}'
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be
index 424f74be8..704b2a7b9 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be
@@ -34,7 +34,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
# 0x0003: inherited # Identify 1.2 p.16
# 0x0004: inherited # Groups 1.3 p.21
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
- 0x0102: [0,5,7,0xA,0xB,0xD,0xE,0x17,0xFFFC,0xFFFD], # Window Covering 5.3 p.289
+ 0x0102: [0,5,7,0xA,0xB,0xD,0xE,0x17], # Window Covering 5.3 p.289
})
static var TYPES = { 0x0202: 2 } # New data model format and notation
@@ -129,16 +129,10 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
elif attribute == 0x0017 # ---------- Mode / u8 ----------
return tlv_solo.set(TLV.U1, 0) # normal mode
-
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 1 + 4) # Lift + PA_LF
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 5) # New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be
index fe0bc8a81..87c0e22f9 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be
@@ -36,7 +36,7 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
# 0x0003: inherited # Identify 1.2 p.16
# 0x0004: inherited # Groups 1.3 p.21
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
- 0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
+ 0x0006: [0], # On/Off 1.5 p.48
})
static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff
@@ -97,15 +97,10 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be
index d4f738e26..fe8373987 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be
@@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
static var UPDATE_CMD = "Status 8" # command to send for updates
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0045: [0,0xFFFC,0xFFFD], # Boolean State p.70 - no writable
+ 0x0045: [0], # Boolean State p.70 - no writable
})
static var TYPES = { 0x0015: 1 } # Contact Sensor, rev 1
@@ -81,15 +81,10 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
else
return tlv_solo.set(TLV.NULL, nil)
end
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 1) # 1 = Initial release
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be
index 8279a6088..1ed2c5c59 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be
@@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
static var UPDATE_CMD = "Status 8" # command to send for updates
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0406: [0,1,2,0xFFFC,0xFFFD], # Occupancy Sensing p.105 - no writable
+ 0x0406: [0,1,2], # Occupancy Sensing p.105 - no writable
})
static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2
@@ -85,15 +85,10 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
return tlv_solo.set(TLV.U1, 3) # physical contact
elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
return tlv_solo.set(TLV.U1, 0) # unknown
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be
index 9bc4584d9..265514e29 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be
@@ -33,7 +33,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
# 0x0006: inherited # On/Off 1.5 p.48
# 0x0008: inherited # Level Control 1.6 p.57
- 0x0300: [7,8,0xF,0x400B,0x400C,0xFFFC,0xFFFD], # Color Control 3.2 p.111
+ 0x0300: [7,8,0xF,0x400B,0x400C], # Color Control 3.2 p.111
})
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "CT")
static var TYPES = { 0x010C: 2 } # Color Temperature Light
@@ -132,13 +132,10 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
return tlv_solo.set(TLV.U4, 0x10) # CT
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be
index 8f7dd46fd..a0b77dd21 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be
@@ -33,7 +33,7 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
# 0x0006: inherited # On/Off 1.5 p.48
# 0x0008: inherited # Level Control 1.6 p.57
- 0x0300: [0,1,7,8,0xF,0x4001,0x400A,0xFFFC,0xFFFD],# Color Control 3.2 p.111
+ 0x0300: [0,1,7,8,0xF,0x4001,0x400A], # Color Control 3.2 p.111
})
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Hue", "Sat")
static var TYPES = { 0x010D: 2 } # Extended Color Light
@@ -147,13 +147,10 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
return tlv_solo.set(TLV.U4, 0x01) # HS
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be
index f7a12469d..9e418d453 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be
@@ -29,7 +29,7 @@ class Matter_Plugin_Sensor_Flow : Matter_Plugin_Sensor
static var JSON_NAME = "Flow" # Name of the sensor attribute in JSON payloads
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Flow")
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0404: [0,1,2,0xFFFC,0xFFFD], # Flow Measurement
+ 0x0404: [0,1,2], # Flow Measurement
})
static var TYPES = { 0x0306: 1 } # Flow Sensor, rev 1
@@ -71,15 +71,10 @@ class Matter_Plugin_Sensor_Flow : Matter_Plugin_Sensor
return tlv_solo.set(TLV.U2, 0) # 0 m3/h
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
return tlv_solo.set(TLV.U2, 65534) # 65534 m3/h
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be
index e3ff44184..94c7d4a90 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be
@@ -29,7 +29,7 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
static var JSON_NAME = "Humidity" # Name of the sensor attribute in JSON payloads
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Humidity")
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0405: [0,1,2,0xFFFC,0xFFFD], # Humidity Measurement p.102 - no writable
+ 0x0405: [0,1,2], # Humidity Measurement p.102 - no writable
})
static var TYPES = { 0x0307: 2 } # Humidity Sensor, rev 2
@@ -71,15 +71,10 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
return tlv_solo.set(TLV.U2, 500) # 0%
elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
return tlv_solo.set(TLV.U2, 10000) # 100%
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be
index e49de236d..ac6144b30 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be
@@ -29,7 +29,7 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
static var JSON_NAME = "Illuminance" # Name of the sensor attribute in JSON payloads
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Illuminance")
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0400: [0,1,2,0xFFFC,0xFFFD], # Illuminance Measurement p.95 - no writable
+ 0x0400: [0,1,2], # Illuminance Measurement p.95 - no writable
})
static var TYPES = { 0x0106: 2 } # Illuminance Sensor, rev 2
@@ -78,15 +78,10 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
return tlv_solo.set(TLV.U2, 1) # 1 lux
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
return tlv_solo.set(TLV.U2, 0xFFFE)
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be
index 54a0b7627..b41f21a97 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be
@@ -29,7 +29,7 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
static var JSON_NAME = "Pressure" # Name of the sensor attribute in JSON payloads
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Pressure")
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0403: [0,1,2,0xFFFC,0xFFFD], # Pressure Measurement
+ 0x0403: [0,1,2], # Pressure Measurement
})
static var TYPES = { 0x0305: 2 } # Pressure Sensor, rev 2
@@ -71,15 +71,10 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
return tlv_solo.set(TLV.I2, 500) # 500 hPA
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
return tlv_solo.set(TLV.I2, 1500) # 1500 hPA
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be
index 2b6ac22f7..a6a540595 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be
@@ -29,7 +29,7 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
static var JSON_NAME = "Temperature" # Name of the sensor attribute in JSON payloads
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Temperature")
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0402: [0,1,2,0xFFFC,0xFFFD], # Temperature Measurement p.97 - no writable
+ 0x0402: [0,1,2], # Temperature Measurement p.97 - no writable
})
static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2
@@ -74,15 +74,10 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
return tlv_solo.set(TLV.I2, -5000) # -50 °C
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
return tlv_solo.set(TLV.I2, 15000) # 150 °C
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_ShutterTilt.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_ShutterTilt.be
index f73548f69..f2dc0f44e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_ShutterTilt.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_ShutterTilt.be
@@ -33,7 +33,7 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter
# 0x0003: inherited # Identify 1.2 p.16
# 0x0004: inherited # Groups 1.3 p.21
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
- 0x0102: [7,0xC,0xF,0xFFFC], # Window Covering 5.3 p.289
+ 0x0102: [7,0xC,0xF], # Window Covering 5.3 p.289
})
# inherited static var TYPES = { 0x0202: 2 } # New data model format and notation
@@ -125,7 +125,6 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter
return tlv_solo.set(TLV.U4, 3 + 4 + 16) # Lift + Tilt + PA_LF + PA_TL
end
end
- # else
return super(self).read_attribute(session, ctx, tlv_solo)
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be
index b20d27ff4..e2ada8078 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be
@@ -34,7 +34,7 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
# 0x0004: inherited # Groups 1.3 p.21
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
# 0x0006: inherited # On/Off 1.5 p.48
- 0x0008: [0,2,3,0x0F,0x11,0xFFFC,0xFFFD], # Level Control 1.6 p.57
+ 0x0008: [0,2,3,0x0F,0x11], # Level Control 1.6 p.57
})
static var TYPES = { 0x0101: 2 } # Dimmable Light
@@ -101,15 +101,10 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
else
return tlv_solo.set(TLV.NULL, nil)
end
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0X01) # OnOff
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 5) # "new data model format and notation"
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be
index ddd0bd1e2..24f765768 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be
@@ -28,7 +28,7 @@ class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Bridge_Sensor
static var DISPLAY_NAME = "Flow" # display name of the plug-in
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0404: [0,1,2,0xFFFC,0xFFFD], # Flow Measurement
+ 0x0404: [0,1,2], # Flow Measurement
})
static var TYPES = { 0x0306: 1 } # Flow Sensor, rev 1
@@ -70,15 +70,10 @@ class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Bridge_Sensor
return tlv_solo.set(TLV.U2, 0) # 0 m3/h
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
return tlv_solo.set(TLV.U2, 65534) # 65534 m3/h
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be
index 7e8b62342..05e25437a 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be
@@ -28,7 +28,7 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
static var DISPLAY_NAME = "Humidity" # display name of the plug-in
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0405: [0,1,2,0xFFFC,0xFFFD], # Humidity Measurement p.102 - no writable
+ 0x0405: [0,1,2], # Humidity Measurement p.102 - no writable
})
static var TYPES = { 0x0307: 2 } # Humidity Sensor, rev 2
@@ -70,15 +70,10 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
return tlv_solo.set(TLV.U2, 500) # 0%
elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
return tlv_solo.set(TLV.U2, 10000) # 100%
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be
index 48e0bf8de..88e0e32ee 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be
@@ -28,7 +28,7 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
static var DISPLAY_NAME = "Illuminance" # display name of the plug-in
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0400: [0,1,2,0xFFFC,0xFFFD], # Illuminance Measurement p.95 - no writable
+ 0x0400: [0,1,2], # Illuminance Measurement p.95 - no writable
})
static var TYPES = { 0x0106: 2 } # Illuminance Sensor, rev 2
@@ -77,15 +77,10 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
return tlv_solo.set(TLV.U2, 1) # 1 lux
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
return tlv_solo.set(TLV.U2, 0xFFFE)
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be
index 86dec0081..53b78393a 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be
@@ -28,7 +28,7 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
static var DISPLAY_NAME = "Pressure" # display name of the plug-in
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0403: [0,1,2,0xFFFC,0xFFFD], # Pressure Measurement
+ 0x0403: [0,1,2], # Pressure Measurement
})
static var TYPES = { 0x0305: 2 } # Temperature Sensor, rev 2
@@ -70,15 +70,10 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
return tlv_solo.set(TLV.I2, 500) # 500 hPA
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
return tlv_solo.set(TLV.I2, 1500) # 1500 hPA
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be
index 771c6eb7d..8ee8f73d1 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be
@@ -28,7 +28,7 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
static var DISPLAY_NAME = "Temperature" # display name of the plug-in
static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0402: [0,1,2,0xFFFC,0xFFFD], # Temperature Measurement p.97 - no writable
+ 0x0402: [0,1,2], # Temperature Measurement p.97 - no writable
})
static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2
@@ -73,15 +73,10 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
return tlv_solo.set(TLV.I2, -5000) # -50 °C
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
return tlv_solo.set(TLV.I2, 15000) # 150 °C
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0)
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be
index 56d1d9de6..0c8595885 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be
@@ -35,7 +35,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
# 0x0006: inherited # On/Off 1.5 p.48
# 0x0008: inherited # Level Control 1.6 p.57
- 0x0300: [7,8,0xF,0x400A,0x400B,0x400C,0xFFFC,0xFFFD], # Color Control 3.2 p.111
+ 0x0300: [7,8,0xF,0x400A,0x400B,0x400C], # Color Control 3.2 p.111
})
static var TYPES = { 0x010C: 2 } # Dimmable Light
@@ -117,15 +117,10 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
return tlv_solo.set(TLV.U4, 0x10) # CT
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0x10) # CT
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be
index abb4e9672..5b4f0ab30 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be
@@ -35,7 +35,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
# 0x0006: inherited # On/Off 1.5 p.48
# 0x0008: inherited # Level Control 1.6 p.57
- 0x0300: [0,1,7,8,0xF,0x4001,0x400A,0xFFFC,0xFFFD],# Color Control 3.2 p.111
+ 0x0300: [0,1,7,8,0xF,0x4001,0x400A], # Color Control 3.2 p.111
})
static var TYPES = { 0x010D: 2 } # Extended Color Light
@@ -126,16 +126,10 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
# Defined Primaries Information Attribute Set
elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------
return tlv_solo.set(TLV.U1, 0)
-
- elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return tlv_solo.set(TLV.U4, 0x01) # HS
- elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
- else
- return super(self).read_attribute(session, ctx, tlv_solo)
end
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
index 0c819b906..e59d35770 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
@@ -57,15 +57,19 @@ class Matter_Session_Store
#############################################################
# remove fabric
def remove_fabric(fabric)
- var idx = 0
- while idx < size(self.sessions)
- if self.sessions[idx]._fabric == fabric
- self.sessions.remove(idx)
- else
- idx += 1
+ if (self.sessions != nil)
+ var idx = 0
+ while idx < size(self.sessions)
+ if self.sessions[idx]._fabric == fabric
+ self.sessions.remove(idx)
+ else
+ idx += 1
+ end
end
end
- self.fabrics.remove(self.fabrics.find(fabric)) # fail safe
+ if (self.fabrics != nil)
+ self.fabrics.remove(self.fabrics.find(fabric)) # fail safe
+ end
end
#############################################################
@@ -98,7 +102,11 @@ class Matter_Session_Store
# Count the number of commissionned fabrics, i.e. persisted
def count_active_fabrics()
self.remove_expired() # clean before
- return self.fabrics.count_persistables()
+ if self.fabrics != nil
+ return self.fabrics.count_persistables()
+ else
+ return 0
+ end
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
index a8b372f2c..5064bd3e8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
@@ -36,7 +36,6 @@ class Matter_UI
"|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow"
"|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3"
"|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow"
- # static var _CLASSES_HTTP = "-http"
static var _CLASSES_TYPES2= "|http_relay|http_light0|http_light1|http_light2|http_light3"
"|http_temperature|http_pressure|http_illuminance|http_humidity"
"|http_occupancy|http_contact|http_flow"
@@ -68,7 +67,7 @@ class Matter_UI
# ####################################################################################################
# Init web handlers
# ####################################################################################################
- # Displays a "Autoconf" button on the configuration page
+ # Displays the Configure Matter button on the configuration page
def web_add_config_button()
import webserver
# webserver.content_send("
")
@@ -524,7 +523,8 @@ class Matter_UI
self.show_passcode_form()
self.show_fabric_info()
end
- webserver.content_button(webserver.BUTTON_CONFIGURATION)
+ self.web_add_config_button()
+ #webserver.content_button(webserver.BUTTON_CONFIGURATION)
webserver.content_stop() #- end of web page -#
end
@@ -812,8 +812,8 @@ class Matter_UI
idx += 1
end
end
- #- reload same page -#
- webserver.redirect("/matterc?")
+ #- reload advanced page -#
+ webserver.redirect("/mattera?")
#---------------------------------------------------------------------#
# Reset to default auto-configuration
@@ -1012,6 +1012,7 @@ class Matter_UI
# Show bridge status
#######################################################################
def show_bridge_status()
+ if (self.device.plugins == nil) return end
import webserver
var bridge_plugin_by_host
@@ -1063,7 +1064,7 @@ class Matter_UI
if self.matter_enabled()
# mtc0 = close, mtc1 = open commissioning
- var fabrics_count = self.device.sessions.count_active_fabrics()
+ var fabrics_count = (self.device.sessions != nil) ? self.device.sessions.count_active_fabrics() : 0
if fabrics_count == 0
webserver.content_send(format("%s
", "Matter: No active association"))
else
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be
index b0b01434d..5459b581b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be
@@ -72,6 +72,11 @@ class Matter_Device
var root_salt
var root_w0
var root_L
+ # cron equivalent to call `read_sensors()` regularly and dispatch to all entpoints
+ var probe_sensor_time # number of milliseconds to wait between each `read_sensors()` or `nil` if none active
+ var probe_sensor_timestamp # timestamp for `read_sensors()` probe (in millis())
+ # if timestamp is `0`, this should be scheduled in priority
+
#############################################################
def init()
@@ -132,10 +137,6 @@ class Matter_Device
# autoconfigure other plugins if needed
self.autoconf_device()
- # for now read sensors every 30 seconds
- # TODO still needed?
- tasmota.add_cron("*/30 * * * * *", def () self._trigger_read_sensors() end, "matter_sensors_30s")
-
self._start_udp(self.UDP_PORT)
self.start_mdns_announce_hostnames()
@@ -317,6 +318,8 @@ class Matter_Device
# dispatch every 250ms to all plugins
def every_250ms()
self.message_handler.every_250ms()
+ # call read_sensors if needed
+ self.read_sensors_scheduler()
# call all plugins, use a manual loop to avoid creating a new object
var idx = 0
while idx < size(self.plugins)
@@ -325,12 +328,36 @@ class Matter_Device
end
end
+ #############################################################
+ # add a scheduler for `read_sensors` and update schedule time
+ # if it's more often than previously
+ def add_read_sensors_schedule(update_time)
+ if (self.probe_sensor_time == nil) || (self.probe_sensor_time > update_time)
+ self.probe_sensor_time = update_time
+ self.probe_sensor_timestamp = matter.jitter(update_time)
+ end
+ end
+
+ #############################################################
+ # check if we need to call `read_sensors()`
+ def read_sensors_scheduler()
+ if (self.probe_sensor_time == nil) return end # nothing to schedule
+ if (self.probe_sensor_timestamp == 0) || (tasmota.time_reached(self.probe_sensor_timestamp))
+ self._trigger_read_sensors()
+ # set new next timestamp
+ self.probe_sensor_timestamp = tasmota.millis(self.probe_sensor_time)
+ end
+ end
+
#############################################################
# trigger a read_sensors and dispatch to plugins
# Internally used by cron
def _trigger_read_sensors()
import json
var rs_json = tasmota.read_sensors()
+ if tasmota.loglevel(3)
+ tasmota.log("MTR: read_sensors: "+str(rs_json), 3)
+ end
if rs_json == nil return end
var rs = json.load(rs_json)
if rs != nil
@@ -742,6 +769,7 @@ class Matter_Device
# Load Matter Device parameters
def load_param()
import crypto
+ var dirty = false
try
var f = open(self.FILENAME)
@@ -757,8 +785,9 @@ class Matter_Device
self.next_ep = j.find("nextep", self.next_ep)
self.plugins_config = j.find("config")
if self.plugins_config != nil
- tasmota.log("MTR: load_config = " + str(self.plugins_config), 3)
+ tasmota.log(f"MTR: Load_config = {self.plugins_config}", 3)
self.adjust_next_ep()
+ dirty = self.check_config_ep()
self.plugins_persist = true
end
self.plugins_config_remotes = j.find("remotes", {})
@@ -767,11 +796,10 @@ class Matter_Device
end
except .. as e, m
if e != "io_error"
- tasmota.log("MTR: Session_Store::load Exception:" + str(e) + "|" + str(m), 2)
+ tasmota.log("MTR: load_param Exception:" + str(e) + "|" + str(m), 2)
end
end
- var dirty = false
if self.root_discriminator == nil
self.root_discriminator = crypto.random(2).get(0,2) & 0xFFF
dirty = true
@@ -810,7 +838,8 @@ class Matter_Device
tasmota.log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2)
# always include an aggregator for dynamic endpoints
- self.plugins.push(matter.Plugin_Aggregator(self, 0xFF00, {}))
+ self.plugins.push(matter.Plugin_Aggregator(self, matter.AGGREGATOR_ENDPOINT, {}))
+ tasmota.log(format("MTR: endpoint = %5i type:%s%s", matter.AGGREGATOR_ENDPOINT, 'aggregator', ''), 2)
for ep: endpoints
if ep == 0 continue end # skip endpoint 0
@@ -832,7 +861,6 @@ class Matter_Device
tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
end
end
- tasmota.log(format("MTR: endpoint = %5i type:%s%s", 0xFF00, 'aggregator', ''), 2)
tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter')
end
@@ -1133,7 +1161,7 @@ class Matter_Device
var m = {}
# check if we have a light
- var endpoint = 1
+ var endpoint = matter.START_ENDPOINT
var light_present = false
import light
@@ -1369,7 +1397,32 @@ class Matter_Device
def signal_endpoints_changed()
# mark parts lists as changed
self.attribute_updated(0x0000, 0x001D, 0x0003, false)
- self.attribute_updated(0xFF00, 0x001D, 0x0003, false)
+ self.attribute_updated(matter.AGGREGATOR_ENDPOINT, 0x001D, 0x0003, false)
+ end
+
+ #############################################################
+ # Check that all ep are valid, i.e. don't collied with root or aggregator
+ #
+ # return `true` if configuration was adjusted and needs to be saved
+ def check_config_ep()
+ # copy into list so we can change the map on the fly
+ var dirty = false
+ var keys = []
+ for k: self.plugins_config.keys() keys.push(int(k)) end
+ for ep: keys
+ if ep == 0
+ tasmota.log("MTR: invalid entry with ep '0'", 2)
+ self.plugins_config.remove(str(ep))
+ dirty = true
+ elif ep == matter.AGGREGATOR_ENDPOINT
+ dirty = true
+ tasmota.log(f"MTR: endpoint {ep} collides wit aggregator, relocating to {self.next_ep}", 2)
+ self.plugins_config[str(self.next_ep)] = self.plugins_config[str(ep)]
+ self.plugins_config.remove(str(ep))
+ self.next_ep += 1
+ end
+ end
+ return dirty
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h
index 079f5e775..58bf18064 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h
@@ -233,7 +233,7 @@ be_local_closure(matter_inspect, /* name */
********************************************************************/
be_local_closure(matter_consolidate_clusters, /* name */
be_nested_proto(
- 9, /* nstack */
+ 12, /* nstack */
2, /* argc */
0, /* varg */
0, /* has upvals */
@@ -241,61 +241,117 @@ be_local_closure(matter_consolidate_clusters, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
+ ( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(CLUSTERS),
/* K1 */ be_nested_str_weak(keys),
/* K2 */ be_nested_str_weak(copy),
/* K3 */ be_nested_str_weak(stop_iteration),
/* K4 */ be_nested_str_weak(find),
+ /* K5 */ be_nested_str_weak(push),
}),
be_str_weak(consolidate_clusters),
&be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
+ ( &(const binstruction[100]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x88080500, // 0003 GETMBR R2 R2 K0
- 0x600C0013, // 0004 GETGBL R3 G19
- 0x7C0C0000, // 0005 CALL R3 0
- 0x60100010, // 0006 GETGBL R4 G16
- 0x8C140501, // 0007 GETMET R5 R2 K1
- 0x7C140200, // 0008 CALL R5 1
- 0x7C100200, // 0009 CALL R4 1
- 0xA8020006, // 000A EXBLK 0 #0012
- 0x5C140800, // 000B MOVE R5 R4
- 0x7C140000, // 000C CALL R5 0
- 0x94180405, // 000D GETIDX R6 R2 R5
- 0x8C180D02, // 000E GETMET R6 R6 K2
- 0x7C180200, // 000F CALL R6 1
- 0x980C0A06, // 0010 SETIDX R3 R5 R6
- 0x7001FFF8, // 0011 JMP #000B
- 0x58100003, // 0012 LDCONST R4 K3
- 0xAC100200, // 0013 CATCH R4 1 0
- 0xB0080000, // 0014 RAISE 2 R0 R0
- 0x60100010, // 0015 GETGBL R4 G16
- 0x8C140301, // 0016 GETMET R5 R1 K1
- 0x7C140200, // 0017 CALL R5 1
- 0x7C100200, // 0018 CALL R4 1
- 0xA802000E, // 0019 EXBLK 0 #0029
- 0x5C140800, // 001A MOVE R5 R4
- 0x7C140000, // 001B CALL R5 0
- 0x8C180704, // 001C GETMET R6 R3 K4
- 0x5C200A00, // 001D MOVE R8 R5
- 0x7C180400, // 001E CALL R6 2
- 0x4C1C0000, // 001F LDNIL R7
- 0x1C1C0C07, // 0020 EQ R7 R6 R7
- 0x781E0002, // 0021 JMPF R7 #0025
- 0x601C0012, // 0022 GETGBL R7 G18
- 0x7C1C0000, // 0023 CALL R7 0
- 0x5C180E00, // 0024 MOVE R6 R7
- 0x941C0205, // 0025 GETIDX R7 R1 R5
- 0x001C0C07, // 0026 ADD R7 R6 R7
- 0x980C0A07, // 0027 SETIDX R3 R5 R7
- 0x7001FFF0, // 0028 JMP #001A
- 0x58100003, // 0029 LDCONST R4 K3
- 0xAC100200, // 002A CATCH R4 1 0
- 0xB0080000, // 002B RAISE 2 R0 R0
- 0x80040600, // 002C RET 1 R3
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x20080403, // 0004 NE R2 R2 R3
+ 0x780A0004, // 0005 JMPF R2 #000B
+ 0x60080003, // 0006 GETGBL R2 G3
+ 0x5C0C0000, // 0007 MOVE R3 R0
+ 0x7C080200, // 0008 CALL R2 1
+ 0x88080500, // 0009 GETMBR R2 R2 K0
+ 0x70020001, // 000A JMP #000D
+ 0x60080013, // 000B GETGBL R2 G19
+ 0x7C080000, // 000C CALL R2 0
+ 0x600C0013, // 000D GETGBL R3 G19
+ 0x7C0C0000, // 000E CALL R3 0
+ 0x60100010, // 000F GETGBL R4 G16
+ 0x8C140501, // 0010 GETMET R5 R2 K1
+ 0x7C140200, // 0011 CALL R5 1
+ 0x7C100200, // 0012 CALL R4 1
+ 0xA8020006, // 0013 EXBLK 0 #001B
+ 0x5C140800, // 0014 MOVE R5 R4
+ 0x7C140000, // 0015 CALL R5 0
+ 0x94180405, // 0016 GETIDX R6 R2 R5
+ 0x8C180D02, // 0017 GETMET R6 R6 K2
+ 0x7C180200, // 0018 CALL R6 1
+ 0x980C0A06, // 0019 SETIDX R3 R5 R6
+ 0x7001FFF8, // 001A JMP #0014
+ 0x58100003, // 001B LDCONST R4 K3
+ 0xAC100200, // 001C CATCH R4 1 0
+ 0xB0080000, // 001D RAISE 2 R0 R0
+ 0x60100010, // 001E GETGBL R4 G16
+ 0x8C140301, // 001F GETMET R5 R1 K1
+ 0x7C140200, // 0020 CALL R5 1
+ 0x7C100200, // 0021 CALL R4 1
+ 0xA802000E, // 0022 EXBLK 0 #0032
+ 0x5C140800, // 0023 MOVE R5 R4
+ 0x7C140000, // 0024 CALL R5 0
+ 0x8C180704, // 0025 GETMET R6 R3 K4
+ 0x5C200A00, // 0026 MOVE R8 R5
+ 0x7C180400, // 0027 CALL R6 2
+ 0x4C1C0000, // 0028 LDNIL R7
+ 0x1C1C0C07, // 0029 EQ R7 R6 R7
+ 0x781E0002, // 002A JMPF R7 #002E
+ 0x601C0012, // 002B GETGBL R7 G18
+ 0x7C1C0000, // 002C CALL R7 0
+ 0x5C180E00, // 002D MOVE R6 R7
+ 0x941C0205, // 002E GETIDX R7 R1 R5
+ 0x001C0C07, // 002F ADD R7 R6 R7
+ 0x980C0A07, // 0030 SETIDX R3 R5 R7
+ 0x7001FFF0, // 0031 JMP #0023
+ 0x58100003, // 0032 LDCONST R4 K3
+ 0xAC100200, // 0033 CATCH R4 1 0
+ 0xB0080000, // 0034 RAISE 2 R0 R0
+ 0x60100012, // 0035 GETGBL R4 G18
+ 0x7C100000, // 0036 CALL R4 0
+ 0x5416FFF7, // 0037 LDINT R5 65528
+ 0x40140805, // 0038 CONNECT R5 R4 R5
+ 0x5416FFF8, // 0039 LDINT R5 65529
+ 0x40140805, // 003A CONNECT R5 R4 R5
+ 0x5416FFF9, // 003B LDINT R5 65530
+ 0x40140805, // 003C CONNECT R5 R4 R5
+ 0x5416FFFA, // 003D LDINT R5 65531
+ 0x40140805, // 003E CONNECT R5 R4 R5
+ 0x5416FFFB, // 003F LDINT R5 65532
+ 0x40140805, // 0040 CONNECT R5 R4 R5
+ 0x5416FFFC, // 0041 LDINT R5 65533
+ 0x40140805, // 0042 CONNECT R5 R4 R5
+ 0x60140010, // 0043 GETGBL R5 G16
+ 0x8C180301, // 0044 GETMET R6 R1 K1
+ 0x7C180200, // 0045 CALL R6 1
+ 0x7C140200, // 0046 CALL R5 1
+ 0xA8020017, // 0047 EXBLK 0 #0060
+ 0x5C180A00, // 0048 MOVE R6 R5
+ 0x7C180000, // 0049 CALL R6 0
+ 0x601C0010, // 004A GETGBL R7 G16
+ 0x5C200800, // 004B MOVE R8 R4
+ 0x7C1C0200, // 004C CALL R7 1
+ 0xA802000D, // 004D EXBLK 0 #005C
+ 0x5C200E00, // 004E MOVE R8 R7
+ 0x7C200000, // 004F CALL R8 0
+ 0x94240606, // 0050 GETIDX R9 R3 R6
+ 0x8C241304, // 0051 GETMET R9 R9 K4
+ 0x5C2C1000, // 0052 MOVE R11 R8
+ 0x7C240400, // 0053 CALL R9 2
+ 0x4C280000, // 0054 LDNIL R10
+ 0x1C24120A, // 0055 EQ R9 R9 R10
+ 0x78260003, // 0056 JMPF R9 #005B
+ 0x94240606, // 0057 GETIDX R9 R3 R6
+ 0x8C241305, // 0058 GETMET R9 R9 K5
+ 0x5C2C1000, // 0059 MOVE R11 R8
+ 0x7C240400, // 005A CALL R9 2
+ 0x7001FFF1, // 005B JMP #004E
+ 0x581C0003, // 005C LDCONST R7 K3
+ 0xAC1C0200, // 005D CATCH R7 1 0
+ 0xB0080000, // 005E RAISE 2 R0 R0
+ 0x7001FFE7, // 005F JMP #0048
+ 0x58140003, // 0060 LDCONST R5 K3
+ 0xAC140200, // 0061 CATCH R5 1 0
+ 0xB0080000, // 0062 RAISE 2 R0 R0
+ 0x80040600, // 0063 RET 1 R3
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
index 4888f31a9..8fa5663aa 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
@@ -482,24 +482,28 @@ be_local_closure(Matter_Expirable_list_remove, /* name */
}),
be_str_weak(remove),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x28080300, // 0000 GE R2 R1 K0
- 0x780A0007, // 0001 JMPF R2 #000A
- 0x6008000C, // 0002 GETGBL R2 G12
- 0x5C0C0000, // 0003 MOVE R3 R0
- 0x7C080200, // 0004 CALL R2 1
- 0x14080202, // 0005 LT R2 R1 R2
- 0x780A0002, // 0006 JMPF R2 #000A
- 0x94080001, // 0007 GETIDX R2 R0 R1
- 0x8C080501, // 0008 GETMET R2 R2 K1
- 0x7C080200, // 0009 CALL R2 1
- 0x60080003, // 000A GETGBL R2 G3
- 0x5C0C0000, // 000B MOVE R3 R0
+ ( &(const binstruction[21]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0010, // 0002 JMPF R2 #0014
+ 0x28080300, // 0003 GE R2 R1 K0
+ 0x780A0007, // 0004 JMPF R2 #000D
+ 0x6008000C, // 0005 GETGBL R2 G12
+ 0x5C0C0000, // 0006 MOVE R3 R0
+ 0x7C080200, // 0007 CALL R2 1
+ 0x14080202, // 0008 LT R2 R1 R2
+ 0x780A0002, // 0009 JMPF R2 #000D
+ 0x94080001, // 000A GETIDX R2 R0 R1
+ 0x8C080501, // 000B GETMET R2 R2 K1
0x7C080200, // 000C CALL R2 1
- 0x8C080502, // 000D GETMET R2 R2 K2
- 0x5C100200, // 000E MOVE R4 R1
- 0x7C080400, // 000F CALL R2 2
- 0x80040400, // 0010 RET 1 R2
+ 0x60080003, // 000D GETGBL R2 G3
+ 0x5C0C0000, // 000E MOVE R3 R0
+ 0x7C080200, // 000F CALL R2 1
+ 0x8C080502, // 0010 GETMET R2 R2 K2
+ 0x5C100200, // 0011 MOVE R4 R1
+ 0x7C080400, // 0012 CALL R2 2
+ 0x80040400, // 0013 RET 1 R2
+ 0x80000000, // 0014 RET 0
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
index 046f20836..434360b2f 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
@@ -7,11 +7,11 @@
extern const bclass be_class_Matter_Fabric;
/********************************************************************
-** Solidified function: counter_group_data_snd_next
+** Solidified function: get_device_id_as_int64
********************************************************************/
-be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */
+be_local_closure(Matter_Fabric_get_device_id_as_int64, /* name */
be_nested_proto(
- 7, /* nstack */
+ 5, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -19,51 +19,20 @@ be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl),
- /* K1 */ be_nested_str_weak(next),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(Counter),
- /* K8 */ be_nested_str_weak(is_greater),
- /* K9 */ be_nested_str_weak(counter_group_data_snd),
- /* K10 */ be_nested_str_weak(_GROUP_SND_INCR),
- /* K11 */ be_nested_str_weak(does_persist),
- /* K12 */ be_nested_str_weak(save),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(int64),
+ /* K1 */ be_nested_str_weak(frombytes),
+ /* K2 */ be_nested_str_weak(device_id),
}),
- be_str_weak(counter_group_data_snd_next),
+ be_str_weak(get_device_id_as_int64),
&be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x60100018, // 0005 GETGBL R4 G24
- 0x58140004, // 0006 LDCONST R5 K4
- 0x5C180200, // 0007 MOVE R6 R1
- 0x7C100400, // 0008 CALL R4 2
- 0x58140005, // 0009 LDCONST R5 K5
- 0x7C080600, // 000A CALL R2 3
- 0xB80A0C00, // 000B GETNGBL R2 K6
- 0x88080507, // 000C GETMBR R2 R2 K7
- 0x8C080508, // 000D GETMET R2 R2 K8
- 0x5C100200, // 000E MOVE R4 R1
- 0x88140109, // 000F GETMBR R5 R0 K9
- 0x7C080600, // 0010 CALL R2 3
- 0x780A0007, // 0011 JMPF R2 #001A
- 0x8808010A, // 0012 GETMBR R2 R0 K10
- 0x00080202, // 0013 ADD R2 R1 R2
- 0x90021202, // 0014 SETMBR R0 K9 R2
- 0x8C08010B, // 0015 GETMET R2 R0 K11
- 0x7C080200, // 0016 CALL R2 1
- 0x780A0001, // 0017 JMPF R2 #001A
- 0x8C08010C, // 0018 GETMET R2 R0 K12
- 0x7C080200, // 0019 CALL R2 1
- 0x80040200, // 001A RET 1 R1
+ ( &(const binstruction[ 6]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x7C040000, // 0001 CALL R1 0
+ 0x8C080301, // 0002 GETMET R2 R1 K1
+ 0x88100102, // 0003 GETMBR R4 R0 K2
+ 0x7C080400, // 0004 CALL R2 2
+ 0x80040200, // 0005 RET 1 R1
})
)
);
@@ -71,11 +40,11 @@ be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */
/********************************************************************
-** Solidified function: get_ca_pub
+** Solidified function: fabric_candidate
********************************************************************/
-be_local_closure(Matter_Fabric_get_ca_pub, /* name */
+be_local_closure(Matter_Fabric_fabric_candidate, /* name */
be_nested_proto(
- 6, /* nstack */
+ 4, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -83,28 +52,25 @@ be_local_closure(Matter_Fabric_get_ca_pub, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(root_ca_certificate),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(parse),
- /* K4 */ be_nested_str_weak(findsubval),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(set_expire_in_seconds),
+ /* K1 */ be_nested_str_weak(assign_fabric_index),
+ /* K2 */ be_nested_str_weak(_store),
+ /* K3 */ be_nested_str_weak(add_fabric),
}),
- be_str_weak(get_ca_pub),
+ be_str_weak(fabric_candidate),
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060008, // 0001 JMPF R1 #000B
- 0xB80A0200, // 0002 GETNGBL R2 K1
- 0x88080502, // 0003 GETMBR R2 R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x5C100200, // 0005 MOVE R4 R1
- 0x7C080400, // 0006 CALL R2 2
- 0x8C0C0504, // 0007 GETMET R3 R2 K4
- 0x54160008, // 0008 LDINT R5 9
- 0x7C0C0400, // 0009 CALL R3 2
- 0x80040600, // 000A RET 1 R3
- 0x80000000, // 000B RET 0
+ ( &(const binstruction[10]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x540E0077, // 0001 LDINT R3 120
+ 0x7C040400, // 0002 CALL R1 2
+ 0x8C040101, // 0003 GETMET R1 R0 K1
+ 0x7C040200, // 0004 CALL R1 1
+ 0x88040102, // 0005 GETMBR R1 R0 K2
+ 0x8C040303, // 0006 GETMET R1 R1 K3
+ 0x5C0C0000, // 0007 MOVE R3 R0
+ 0x7C040400, // 0008 CALL R1 2
+ 0x80000000, // 0009 RET 0
})
)
);
@@ -112,12 +78,12 @@ be_local_closure(Matter_Fabric_get_ca_pub, /* name */
/********************************************************************
-** Solidified function: get_device_id
+** Solidified function: set_pk
********************************************************************/
-be_local_closure(Matter_Fabric_get_device_id, /* name */
+be_local_closure(Matter_Fabric_set_pk, /* name */
be_nested_proto(
2, /* nstack */
- 1, /* argc */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -125,13 +91,13 @@ be_local_closure(Matter_Fabric_get_device_id, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(device_id),
+ /* K0 */ be_nested_str_weak(no_private_key),
}),
- be_str_weak(get_device_id),
+ be_str_weak(set_pk),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
})
)
);
@@ -232,117 +198,107 @@ be_local_closure(Matter_Fabric_get_oldest_session, /* name */
/********************************************************************
-** Solidified function: fromjson
+** Solidified function: get_ipk_epoch_key
********************************************************************/
-be_local_closure(Matter_Fabric_fromjson, /* name */
+be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */
be_nested_proto(
- 16, /* nstack */
- 2, /* argc */
- 4, /* varg */
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Fabric),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(introspect),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Fabric),
- /* K5 */ be_nested_str_weak(keys),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(_),
- /* K8 */ be_nested_str_weak(find),
- /* K9 */ be_nested_str_weak(0x),
- /* K10 */ be_nested_str_weak(set),
- /* K11 */ be_nested_str_weak(fromhex),
- /* K12 */ be_const_int(2),
- /* K13 */ be_const_int(2147483647),
- /* K14 */ be_nested_str_weak(_X24_X24),
- /* K15 */ be_nested_str_weak(fromb64),
- /* K16 */ be_nested_str_weak(stop_iteration),
- /* K17 */ be_nested_str_weak(hydrate_post),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(ipk_epoch_key),
}),
- be_str_weak(fromjson),
+ be_str_weak(get_ipk_epoch_key),
&be_const_str_solidified,
- ( &(const binstruction[76]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0xA4120400, // 0002 IMPORT R4 K2
- 0xB8160600, // 0003 GETNGBL R5 K3
- 0x8C140B04, // 0004 GETMET R5 R5 K4
- 0x5C1C0000, // 0005 MOVE R7 R0
- 0x7C140400, // 0006 CALL R5 2
- 0x60180010, // 0007 GETGBL R6 G16
- 0x8C1C0305, // 0008 GETMET R7 R1 K5
- 0x7C1C0200, // 0009 CALL R7 1
- 0x7C180200, // 000A CALL R6 1
- 0xA8020039, // 000B EXBLK 0 #0046
- 0x5C1C0C00, // 000C MOVE R7 R6
- 0x7C1C0000, // 000D CALL R7 0
- 0x94200F06, // 000E GETIDX R8 R7 K6
- 0x1C201107, // 000F EQ R8 R8 K7
- 0x78220000, // 0010 JMPF R8 #0012
- 0x7001FFF9, // 0011 JMP #000C
- 0x94200207, // 0012 GETIDX R8 R1 R7
- 0x60240004, // 0013 GETGBL R9 G4
- 0x5C281000, // 0014 MOVE R10 R8
- 0x7C240200, // 0015 CALL R9 1
- 0x1C241301, // 0016 EQ R9 R9 K1
- 0x78260027, // 0017 JMPF R9 #0040
- 0x8C240708, // 0018 GETMET R9 R3 K8
- 0x5C2C1000, // 0019 MOVE R11 R8
- 0x58300009, // 001A LDCONST R12 K9
- 0x7C240600, // 001B CALL R9 3
- 0x1C241306, // 001C EQ R9 R9 K6
- 0x7826000A, // 001D JMPF R9 #0029
- 0x8C24090A, // 001E GETMET R9 R4 K10
- 0x5C2C0A00, // 001F MOVE R11 R5
- 0x5C300E00, // 0020 MOVE R12 R7
- 0x60340015, // 0021 GETGBL R13 G21
- 0x7C340000, // 0022 CALL R13 0
- 0x8C341B0B, // 0023 GETMET R13 R13 K11
- 0x403E190D, // 0024 CONNECT R15 K12 K13
- 0x943C100F, // 0025 GETIDX R15 R8 R15
- 0x7C340400, // 0026 CALL R13 2
- 0x7C240800, // 0027 CALL R9 4
- 0x70020015, // 0028 JMP #003F
- 0x8C240708, // 0029 GETMET R9 R3 K8
- 0x5C2C1000, // 002A MOVE R11 R8
- 0x5830000E, // 002B LDCONST R12 K14
- 0x7C240600, // 002C CALL R9 3
- 0x1C241306, // 002D EQ R9 R9 K6
- 0x7826000A, // 002E JMPF R9 #003A
- 0x8C24090A, // 002F GETMET R9 R4 K10
- 0x5C2C0A00, // 0030 MOVE R11 R5
- 0x5C300E00, // 0031 MOVE R12 R7
- 0x60340015, // 0032 GETGBL R13 G21
- 0x7C340000, // 0033 CALL R13 0
- 0x8C341B0F, // 0034 GETMET R13 R13 K15
- 0x403E190D, // 0035 CONNECT R15 K12 K13
- 0x943C100F, // 0036 GETIDX R15 R8 R15
- 0x7C340400, // 0037 CALL R13 2
- 0x7C240800, // 0038 CALL R9 4
- 0x70020004, // 0039 JMP #003F
- 0x8C24090A, // 003A GETMET R9 R4 K10
- 0x5C2C0A00, // 003B MOVE R11 R5
- 0x5C300E00, // 003C MOVE R12 R7
- 0x5C341000, // 003D MOVE R13 R8
- 0x7C240800, // 003E CALL R9 4
- 0x70020004, // 003F JMP #0045
- 0x8C24090A, // 0040 GETMET R9 R4 K10
- 0x5C2C0A00, // 0041 MOVE R11 R5
- 0x5C300E00, // 0042 MOVE R12 R7
- 0x5C341000, // 0043 MOVE R13 R8
- 0x7C240800, // 0044 CALL R9 4
- 0x7001FFC5, // 0045 JMP #000C
- 0x58180010, // 0046 LDCONST R6 K16
- 0xAC180200, // 0047 CATCH R6 1 0
- 0xB0080000, // 0048 RAISE 2 R0 R0
- 0x8C180B11, // 0049 GETMET R6 R5 K17
- 0x7C180200, // 004A CALL R6 1
- 0x80040A00, // 004B RET 1 R5
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_noc
+********************************************************************/
+be_local_closure(Matter_Fabric_get_noc, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(noc),
+ }),
+ be_str_weak(get_noc),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_device_id
+********************************************************************/
+be_local_closure(Matter_Fabric_get_device_id, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(device_id),
+ }),
+ be_str_weak(get_device_id),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_icac
+********************************************************************/
+be_local_closure(Matter_Fabric_get_icac, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(icac),
+ }),
+ be_str_weak(get_icac),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
})
)
);
@@ -376,79 +332,6 @@ be_local_closure(Matter_Fabric_set_fabric_index, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Fabric_init, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(_store),
- /* K2 */ be_nested_str_weak(_sessions),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Expirable_list),
- /* K5 */ be_nested_str_weak(fabric_label),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_nested_str_weak(created),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(rtc_utc),
- /* K10 */ be_nested_str_weak(_counter_group_data_snd_impl),
- /* K11 */ be_nested_str_weak(Counter),
- /* K12 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
- /* K13 */ be_nested_str_weak(counter_group_data_snd),
- /* K14 */ be_nested_str_weak(next),
- /* K15 */ be_nested_str_weak(_GROUP_SND_INCR),
- /* K16 */ be_nested_str_weak(counter_group_ctrl_snd),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[32]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0xB80E0600, // 0002 GETNGBL R3 K3
- 0x8C0C0704, // 0003 GETMET R3 R3 K4
- 0x7C0C0200, // 0004 CALL R3 1
- 0x90020403, // 0005 SETMBR R0 K2 R3
- 0x90020B06, // 0006 SETMBR R0 K5 K6
- 0xB80E1000, // 0007 GETNGBL R3 K8
- 0x8C0C0709, // 0008 GETMET R3 R3 K9
- 0x7C0C0200, // 0009 CALL R3 1
- 0x90020E03, // 000A SETMBR R0 K7 R3
- 0xB80E0600, // 000B GETNGBL R3 K3
- 0x8C0C070B, // 000C GETMET R3 R3 K11
- 0x7C0C0200, // 000D CALL R3 1
- 0x90021403, // 000E SETMBR R0 K10 R3
- 0xB80E0600, // 000F GETNGBL R3 K3
- 0x8C0C070B, // 0010 GETMET R3 R3 K11
- 0x7C0C0200, // 0011 CALL R3 1
- 0x90021803, // 0012 SETMBR R0 K12 R3
- 0x880C010A, // 0013 GETMBR R3 R0 K10
- 0x8C0C070E, // 0014 GETMET R3 R3 K14
- 0x7C0C0200, // 0015 CALL R3 1
- 0x8810010F, // 0016 GETMBR R4 R0 K15
- 0x000C0604, // 0017 ADD R3 R3 R4
- 0x90021A03, // 0018 SETMBR R0 K13 R3
- 0x880C010A, // 0019 GETMBR R3 R0 K10
- 0x8C0C070E, // 001A GETMET R3 R3 K14
- 0x7C0C0200, // 001B CALL R3 1
- 0x8810010F, // 001C GETMBR R4 R0 K15
- 0x000C0604, // 001D ADD R3 R3 R4
- 0x90022003, // 001E SETMBR R0 K16 R3
- 0x80000000, // 001F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: fabric_completed
********************************************************************/
@@ -491,73 +374,9 @@ be_local_closure(Matter_Fabric_fabric_completed, /* name */
/********************************************************************
-** Solidified function: counter_group_ctrl_snd_next
+** Solidified function: get_pk
********************************************************************/
-be_local_closure(Matter_Fabric_counter_group_ctrl_snd_next, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
- /* K1 */ be_nested_str_weak(next),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(Counter),
- /* K8 */ be_nested_str_weak(is_greater),
- /* K9 */ be_nested_str_weak(counter_group_ctrl_snd),
- /* K10 */ be_nested_str_weak(_GROUP_SND_INCR),
- /* K11 */ be_nested_str_weak(does_persist),
- /* K12 */ be_nested_str_weak(save),
- }),
- be_str_weak(counter_group_ctrl_snd_next),
- &be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x60100018, // 0005 GETGBL R4 G24
- 0x58140004, // 0006 LDCONST R5 K4
- 0x5C180200, // 0007 MOVE R6 R1
- 0x7C100400, // 0008 CALL R4 2
- 0x58140005, // 0009 LDCONST R5 K5
- 0x7C080600, // 000A CALL R2 3
- 0xB80A0C00, // 000B GETNGBL R2 K6
- 0x88080507, // 000C GETMBR R2 R2 K7
- 0x8C080508, // 000D GETMET R2 R2 K8
- 0x5C100200, // 000E MOVE R4 R1
- 0x88140109, // 000F GETMBR R5 R0 K9
- 0x7C080600, // 0010 CALL R2 3
- 0x780A0007, // 0011 JMPF R2 #001A
- 0x8808010A, // 0012 GETMBR R2 R0 K10
- 0x00080202, // 0013 ADD R2 R1 R2
- 0x90021202, // 0014 SETMBR R0 K9 R2
- 0x8C08010B, // 0015 GETMET R2 R0 K11
- 0x7C080200, // 0016 CALL R2 1
- 0x780A0001, // 0017 JMPF R2 #001A
- 0x8C08010C, // 0018 GETMET R2 R0 K12
- 0x7C080200, // 0019 CALL R2 1
- 0x80040200, // 001A RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_ipk_epoch_key
-********************************************************************/
-be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */
+be_local_closure(Matter_Fabric_get_pk, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -568,9 +387,9 @@ be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(ipk_epoch_key),
+ /* K0 */ be_nested_str_weak(no_private_key),
}),
- be_str_weak(get_ipk_epoch_key),
+ be_str_weak(get_pk),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
@@ -581,6 +400,86 @@ be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: log_new_fabric
+********************************************************************/
+be_local_closure(Matter_Fabric_log_new_fabric, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s),
+ /* K3 */ be_nested_str_weak(get_fabric_id),
+ /* K4 */ be_nested_str_weak(copy),
+ /* K5 */ be_nested_str_weak(reverse),
+ /* K6 */ be_nested_str_weak(tohex),
+ /* K7 */ be_nested_str_weak(get_admin_vendor_name),
+ /* K8 */ be_const_int(3),
+ }),
+ be_str_weak(log_new_fabric),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x600C0018, // 0002 GETGBL R3 G24
+ 0x58100002, // 0003 LDCONST R4 K2
+ 0x8C140103, // 0004 GETMET R5 R0 K3
+ 0x7C140200, // 0005 CALL R5 1
+ 0x8C140B04, // 0006 GETMET R5 R5 K4
+ 0x7C140200, // 0007 CALL R5 1
+ 0x8C140B05, // 0008 GETMET R5 R5 K5
+ 0x7C140200, // 0009 CALL R5 1
+ 0x8C140B06, // 000A GETMET R5 R5 K6
+ 0x7C140200, // 000B CALL R5 1
+ 0x8C180107, // 000C GETMET R6 R0 K7
+ 0x7C180200, // 000D CALL R6 1
+ 0x7C0C0600, // 000E CALL R3 3
+ 0x58100008, // 000F LDCONST R4 K8
+ 0x7C040600, // 0010 CALL R1 3
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_newest_session
+********************************************************************/
+be_local_closure(Matter_Fabric_get_newest_session, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(get_old_recent_session),
+ }),
+ be_str_weak(get_newest_session),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x500C0000, // 0001 LDBOOL R3 0 0
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: tojson
********************************************************************/
@@ -751,222 +650,6 @@ be_local_closure(Matter_Fabric_tojson, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: assign_fabric_index
-********************************************************************/
-be_local_closure(Matter_Fabric_assign_fabric_index, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(get_fabric_index),
- /* K1 */ be_nested_str_weak(set_fabric_index),
- /* K2 */ be_nested_str_weak(_store),
- /* K3 */ be_nested_str_weak(next_fabric_idx),
- }),
- be_str_weak(assign_fabric_index),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x4C080000, // 0002 LDNIL R2
- 0x1C040202, // 0003 EQ R1 R1 R2
- 0x78060004, // 0004 JMPF R1 #000A
- 0x8C040101, // 0005 GETMET R1 R0 K1
- 0x880C0102, // 0006 GETMBR R3 R0 K2
- 0x8C0C0703, // 0007 GETMET R3 R3 K3
- 0x7C0C0200, // 0008 CALL R3 1
- 0x7C040400, // 0009 CALL R1 2
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_admin_subject
-********************************************************************/
-be_local_closure(Matter_Fabric_get_admin_subject, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(admin_subject),
- }),
- be_str_weak(get_admin_subject),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_compressed
-********************************************************************/
-be_local_closure(Matter_Fabric_get_fabric_compressed, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_compressed),
- }),
- be_str_weak(get_fabric_compressed),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: fabric_candidate
-********************************************************************/
-be_local_closure(Matter_Fabric_fabric_candidate, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(set_expire_in_seconds),
- /* K1 */ be_nested_str_weak(assign_fabric_index),
- /* K2 */ be_nested_str_weak(_store),
- /* K3 */ be_nested_str_weak(add_fabric),
- }),
- be_str_weak(fabric_candidate),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0077, // 0001 LDINT R3 120
- 0x7C040400, // 0002 CALL R1 2
- 0x8C040101, // 0003 GETMET R1 R0 K1
- 0x7C040200, // 0004 CALL R1 1
- 0x88040102, // 0005 GETMBR R1 R0 K2
- 0x8C040303, // 0006 GETMET R1 R1 K3
- 0x5C0C0000, // 0007 MOVE R3 R0
- 0x7C040400, // 0008 CALL R1 2
- 0x80000000, // 0009 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_label
-********************************************************************/
-be_local_closure(Matter_Fabric_get_fabric_label, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_label),
- }),
- be_str_weak(get_fabric_label),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_noc_icac
-********************************************************************/
-be_local_closure(Matter_Fabric_set_noc_icac, /* name */
- be_nested_proto(
- 3, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(noc),
- /* K1 */ be_nested_str_weak(icac),
- }),
- be_str_weak(set_noc_icac),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x80000000, // 0002 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_newest_session
-********************************************************************/
-be_local_closure(Matter_Fabric_get_newest_session, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(get_old_recent_session),
- }),
- be_str_weak(get_newest_session),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x500C0000, // 0001 LDBOOL R3 0 0
- 0x7C040400, // 0002 CALL R1 2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: before_remove
********************************************************************/
@@ -1015,6 +698,244 @@ be_local_closure(Matter_Fabric_before_remove, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: fromjson
+********************************************************************/
+be_local_closure(Matter_Fabric_fromjson, /* name */
+ be_nested_proto(
+ 16, /* nstack */
+ 2, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[18]) { /* constants */
+ /* K0 */ be_const_class(be_class_Matter_Fabric),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(introspect),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(Fabric),
+ /* K5 */ be_nested_str_weak(keys),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(_),
+ /* K8 */ be_nested_str_weak(find),
+ /* K9 */ be_nested_str_weak(0x),
+ /* K10 */ be_nested_str_weak(set),
+ /* K11 */ be_nested_str_weak(fromhex),
+ /* K12 */ be_const_int(2),
+ /* K13 */ be_const_int(2147483647),
+ /* K14 */ be_nested_str_weak(_X24_X24),
+ /* K15 */ be_nested_str_weak(fromb64),
+ /* K16 */ be_nested_str_weak(stop_iteration),
+ /* K17 */ be_nested_str_weak(hydrate_post),
+ }),
+ be_str_weak(fromjson),
+ &be_const_str_solidified,
+ ( &(const binstruction[76]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0xA40E0200, // 0001 IMPORT R3 K1
+ 0xA4120400, // 0002 IMPORT R4 K2
+ 0xB8160600, // 0003 GETNGBL R5 K3
+ 0x8C140B04, // 0004 GETMET R5 R5 K4
+ 0x5C1C0000, // 0005 MOVE R7 R0
+ 0x7C140400, // 0006 CALL R5 2
+ 0x60180010, // 0007 GETGBL R6 G16
+ 0x8C1C0305, // 0008 GETMET R7 R1 K5
+ 0x7C1C0200, // 0009 CALL R7 1
+ 0x7C180200, // 000A CALL R6 1
+ 0xA8020039, // 000B EXBLK 0 #0046
+ 0x5C1C0C00, // 000C MOVE R7 R6
+ 0x7C1C0000, // 000D CALL R7 0
+ 0x94200F06, // 000E GETIDX R8 R7 K6
+ 0x1C201107, // 000F EQ R8 R8 K7
+ 0x78220000, // 0010 JMPF R8 #0012
+ 0x7001FFF9, // 0011 JMP #000C
+ 0x94200207, // 0012 GETIDX R8 R1 R7
+ 0x60240004, // 0013 GETGBL R9 G4
+ 0x5C281000, // 0014 MOVE R10 R8
+ 0x7C240200, // 0015 CALL R9 1
+ 0x1C241301, // 0016 EQ R9 R9 K1
+ 0x78260027, // 0017 JMPF R9 #0040
+ 0x8C240708, // 0018 GETMET R9 R3 K8
+ 0x5C2C1000, // 0019 MOVE R11 R8
+ 0x58300009, // 001A LDCONST R12 K9
+ 0x7C240600, // 001B CALL R9 3
+ 0x1C241306, // 001C EQ R9 R9 K6
+ 0x7826000A, // 001D JMPF R9 #0029
+ 0x8C24090A, // 001E GETMET R9 R4 K10
+ 0x5C2C0A00, // 001F MOVE R11 R5
+ 0x5C300E00, // 0020 MOVE R12 R7
+ 0x60340015, // 0021 GETGBL R13 G21
+ 0x7C340000, // 0022 CALL R13 0
+ 0x8C341B0B, // 0023 GETMET R13 R13 K11
+ 0x403E190D, // 0024 CONNECT R15 K12 K13
+ 0x943C100F, // 0025 GETIDX R15 R8 R15
+ 0x7C340400, // 0026 CALL R13 2
+ 0x7C240800, // 0027 CALL R9 4
+ 0x70020015, // 0028 JMP #003F
+ 0x8C240708, // 0029 GETMET R9 R3 K8
+ 0x5C2C1000, // 002A MOVE R11 R8
+ 0x5830000E, // 002B LDCONST R12 K14
+ 0x7C240600, // 002C CALL R9 3
+ 0x1C241306, // 002D EQ R9 R9 K6
+ 0x7826000A, // 002E JMPF R9 #003A
+ 0x8C24090A, // 002F GETMET R9 R4 K10
+ 0x5C2C0A00, // 0030 MOVE R11 R5
+ 0x5C300E00, // 0031 MOVE R12 R7
+ 0x60340015, // 0032 GETGBL R13 G21
+ 0x7C340000, // 0033 CALL R13 0
+ 0x8C341B0F, // 0034 GETMET R13 R13 K15
+ 0x403E190D, // 0035 CONNECT R15 K12 K13
+ 0x943C100F, // 0036 GETIDX R15 R8 R15
+ 0x7C340400, // 0037 CALL R13 2
+ 0x7C240800, // 0038 CALL R9 4
+ 0x70020004, // 0039 JMP #003F
+ 0x8C24090A, // 003A GETMET R9 R4 K10
+ 0x5C2C0A00, // 003B MOVE R11 R5
+ 0x5C300E00, // 003C MOVE R12 R7
+ 0x5C341000, // 003D MOVE R13 R8
+ 0x7C240800, // 003E CALL R9 4
+ 0x70020004, // 003F JMP #0045
+ 0x8C24090A, // 0040 GETMET R9 R4 K10
+ 0x5C2C0A00, // 0041 MOVE R11 R5
+ 0x5C300E00, // 0042 MOVE R12 R7
+ 0x5C341000, // 0043 MOVE R13 R8
+ 0x7C240800, // 0044 CALL R9 4
+ 0x7001FFC5, // 0045 JMP #000C
+ 0x58180010, // 0046 LDCONST R6 K16
+ 0xAC180200, // 0047 CATCH R6 1 0
+ 0xB0080000, // 0048 RAISE 2 R0 R0
+ 0x8C180B11, // 0049 GETMET R6 R5 K17
+ 0x7C180200, // 004A CALL R6 1
+ 0x80040A00, // 004B RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_admin_subject_vendor
+********************************************************************/
+be_local_closure(Matter_Fabric_set_admin_subject_vendor, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(admin_subject),
+ /* K1 */ be_nested_str_weak(admin_vendor),
+ }),
+ be_str_weak(set_admin_subject_vendor),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: counter_group_data_snd_next
+********************************************************************/
+be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl),
+ /* K1 */ be_nested_str_weak(next),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(log),
+ /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i),
+ /* K5 */ be_const_int(3),
+ /* K6 */ be_nested_str_weak(matter),
+ /* K7 */ be_nested_str_weak(Counter),
+ /* K8 */ be_nested_str_weak(is_greater),
+ /* K9 */ be_nested_str_weak(counter_group_data_snd),
+ /* K10 */ be_nested_str_weak(_GROUP_SND_INCR),
+ /* K11 */ be_nested_str_weak(does_persist),
+ /* K12 */ be_nested_str_weak(save),
+ }),
+ be_str_weak(counter_group_data_snd_next),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0xB80A0400, // 0003 GETNGBL R2 K2
+ 0x8C080503, // 0004 GETMET R2 R2 K3
+ 0x60100018, // 0005 GETGBL R4 G24
+ 0x58140004, // 0006 LDCONST R5 K4
+ 0x5C180200, // 0007 MOVE R6 R1
+ 0x7C100400, // 0008 CALL R4 2
+ 0x58140005, // 0009 LDCONST R5 K5
+ 0x7C080600, // 000A CALL R2 3
+ 0xB80A0C00, // 000B GETNGBL R2 K6
+ 0x88080507, // 000C GETMBR R2 R2 K7
+ 0x8C080508, // 000D GETMET R2 R2 K8
+ 0x5C100200, // 000E MOVE R4 R1
+ 0x88140109, // 000F GETMBR R5 R0 K9
+ 0x7C080600, // 0010 CALL R2 3
+ 0x780A0007, // 0011 JMPF R2 #001A
+ 0x8808010A, // 0012 GETMBR R2 R0 K10
+ 0x00080202, // 0013 ADD R2 R1 R2
+ 0x90021202, // 0014 SETMBR R0 K9 R2
+ 0x8C08010B, // 0015 GETMET R2 R0 K11
+ 0x7C080200, // 0016 CALL R2 1
+ 0x780A0001, // 0017 JMPF R2 #001A
+ 0x8C08010C, // 0018 GETMET R2 R0 K12
+ 0x7C080200, // 0019 CALL R2 1
+ 0x80040200, // 001A RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_compressed
+********************************************************************/
+be_local_closure(Matter_Fabric_get_fabric_compressed, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(fabric_compressed),
+ }),
+ be_str_weak(get_fabric_compressed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: set_fabric_device
********************************************************************/
@@ -1140,11 +1061,11 @@ be_local_closure(Matter_Fabric_get_ipk_group_key, /* name */
/********************************************************************
-** Solidified function: hydrate_post
+** Solidified function: get_fabric_id_as_int64
********************************************************************/
-be_local_closure(Matter_Fabric_hydrate_post, /* name */
+be_local_closure(Matter_Fabric_get_fabric_id_as_int64, /* name */
be_nested_proto(
- 4, /* nstack */
+ 5, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1152,34 +1073,246 @@ be_local_closure(Matter_Fabric_hydrate_post, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl),
- /* K1 */ be_nested_str_weak(reset),
- /* K2 */ be_nested_str_weak(counter_group_data_snd),
- /* K3 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
- /* K4 */ be_nested_str_weak(counter_group_ctrl_snd),
- /* K5 */ be_nested_str_weak(val),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(int64),
+ /* K1 */ be_nested_str_weak(frombytes),
+ /* K2 */ be_nested_str_weak(fabric_id),
}),
- be_str_weak(hydrate_post),
+ be_str_weak(get_fabric_id_as_int64),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
+ ( &(const binstruction[ 6]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x7C040000, // 0001 CALL R1 0
+ 0x8C080301, // 0002 GETMET R2 R1 K1
+ 0x88100102, // 0003 GETMBR R4 R0 K2
+ 0x7C080400, // 0004 CALL R2 2
+ 0x80040200, // 0005 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_admin_vendor
+********************************************************************/
+be_local_closure(Matter_Fabric_get_admin_vendor, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(admin_vendor),
+ }),
+ be_str_weak(get_admin_vendor),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x7C040400, // 0003 CALL R1 2
- 0x88040103, // 0004 GETMBR R1 R0 K3
- 0x8C040301, // 0005 GETMET R1 R1 K1
- 0x880C0104, // 0006 GETMBR R3 R0 K4
- 0x7C040400, // 0007 CALL R1 2
- 0x88040100, // 0008 GETMBR R1 R0 K0
- 0x8C040305, // 0009 GETMET R1 R1 K5
- 0x7C040200, // 000A CALL R1 1
- 0x90020401, // 000B SETMBR R0 K2 R1
- 0x88040103, // 000C GETMBR R1 R0 K3
- 0x8C040305, // 000D GETMET R1 R1 K5
- 0x7C040200, // 000E CALL R1 1
- 0x90020801, // 000F SETMBR R0 K4 R1
- 0x80000000, // 0010 RET 0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_ca_pub
+********************************************************************/
+be_local_closure(Matter_Fabric_get_ca_pub, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(root_ca_certificate),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(TLV),
+ /* K3 */ be_nested_str_weak(parse),
+ /* K4 */ be_nested_str_weak(findsubval),
+ }),
+ be_str_weak(get_ca_pub),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060008, // 0001 JMPF R1 #000B
+ 0xB80A0200, // 0002 GETNGBL R2 K1
+ 0x88080502, // 0003 GETMBR R2 R2 K2
+ 0x8C080503, // 0004 GETMET R2 R2 K3
+ 0x5C100200, // 0005 MOVE R4 R1
+ 0x7C080400, // 0006 CALL R2 2
+ 0x8C0C0504, // 0007 GETMET R3 R2 K4
+ 0x54160008, // 0008 LDINT R5 9
+ 0x7C0C0400, // 0009 CALL R3 2
+ 0x80040600, // 000A RET 1 R3
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_marked_for_deletion
+********************************************************************/
+be_local_closure(Matter_Fabric_is_marked_for_deletion, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(deleted),
+ }),
+ be_str_weak(is_marked_for_deletion),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Fabric_init, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[17]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(_store),
+ /* K2 */ be_nested_str_weak(_sessions),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(Expirable_list),
+ /* K5 */ be_nested_str_weak(fabric_label),
+ /* K6 */ be_nested_str_weak(),
+ /* K7 */ be_nested_str_weak(created),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(rtc_utc),
+ /* K10 */ be_nested_str_weak(_counter_group_data_snd_impl),
+ /* K11 */ be_nested_str_weak(Counter),
+ /* K12 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
+ /* K13 */ be_nested_str_weak(counter_group_data_snd),
+ /* K14 */ be_nested_str_weak(next),
+ /* K15 */ be_nested_str_weak(_GROUP_SND_INCR),
+ /* K16 */ be_nested_str_weak(counter_group_ctrl_snd),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x90020201, // 0001 SETMBR R0 K1 R1
+ 0xB80E0600, // 0002 GETNGBL R3 K3
+ 0x8C0C0704, // 0003 GETMET R3 R3 K4
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x90020403, // 0005 SETMBR R0 K2 R3
+ 0x90020B06, // 0006 SETMBR R0 K5 K6
+ 0xB80E1000, // 0007 GETNGBL R3 K8
+ 0x8C0C0709, // 0008 GETMET R3 R3 K9
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x90020E03, // 000A SETMBR R0 K7 R3
+ 0xB80E0600, // 000B GETNGBL R3 K3
+ 0x8C0C070B, // 000C GETMET R3 R3 K11
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x90021403, // 000E SETMBR R0 K10 R3
+ 0xB80E0600, // 000F GETNGBL R3 K3
+ 0x8C0C070B, // 0010 GETMET R3 R3 K11
+ 0x7C0C0200, // 0011 CALL R3 1
+ 0x90021803, // 0012 SETMBR R0 K12 R3
+ 0x880C010A, // 0013 GETMBR R3 R0 K10
+ 0x8C0C070E, // 0014 GETMET R3 R3 K14
+ 0x7C0C0200, // 0015 CALL R3 1
+ 0x8810010F, // 0016 GETMBR R4 R0 K15
+ 0x000C0604, // 0017 ADD R3 R3 R4
+ 0x90021A03, // 0018 SETMBR R0 K13 R3
+ 0x880C010A, // 0019 GETMBR R3 R0 K10
+ 0x8C0C070E, // 001A GETMET R3 R3 K14
+ 0x7C0C0200, // 001B CALL R3 1
+ 0x8810010F, // 001C GETMBR R4 R0 K15
+ 0x000C0604, // 001D ADD R3 R3 R4
+ 0x90022003, // 001E SETMBR R0 K16 R3
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_noc_icac
+********************************************************************/
+be_local_closure(Matter_Fabric_set_noc_icac, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(noc),
+ /* K1 */ be_nested_str_weak(icac),
+ }),
+ be_str_weak(set_noc_icac),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_ca
+********************************************************************/
+be_local_closure(Matter_Fabric_set_ca, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(root_ca_certificate),
+ }),
+ be_str_weak(set_ca),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
})
)
);
@@ -1236,26 +1369,38 @@ be_local_closure(Matter_Fabric_get_admin_vendor_name, /* name */
/********************************************************************
-** Solidified function: set_pk
+** Solidified function: assign_fabric_index
********************************************************************/
-be_local_closure(Matter_Fabric_set_pk, /* name */
+be_local_closure(Matter_Fabric_assign_fabric_index, /* name */
be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
+ 5, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(no_private_key),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(get_fabric_index),
+ /* K1 */ be_nested_str_weak(set_fabric_index),
+ /* K2 */ be_nested_str_weak(_store),
+ /* K3 */ be_nested_str_weak(next_fabric_idx),
}),
- be_str_weak(set_pk),
+ be_str_weak(assign_fabric_index),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
+ ( &(const binstruction[11]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x4C080000, // 0002 LDNIL R2
+ 0x1C040202, // 0003 EQ R1 R1 R2
+ 0x78060004, // 0004 JMPF R1 #000A
+ 0x8C040101, // 0005 GETMET R1 R0 K1
+ 0x880C0102, // 0006 GETMBR R3 R0 K2
+ 0x8C0C0703, // 0007 GETMET R3 R3 K3
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x7C040400, // 0009 CALL R1 2
+ 0x80000000, // 000A RET 0
})
)
);
@@ -1263,9 +1408,9 @@ be_local_closure(Matter_Fabric_set_pk, /* name */
/********************************************************************
-** Solidified function: get_icac
+** Solidified function: get_admin_subject
********************************************************************/
-be_local_closure(Matter_Fabric_get_icac, /* name */
+be_local_closure(Matter_Fabric_get_admin_subject, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -1276,116 +1421,9 @@ be_local_closure(Matter_Fabric_get_icac, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(icac),
- }),
- be_str_weak(get_icac),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_admin_subject_vendor
-********************************************************************/
-be_local_closure(Matter_Fabric_set_admin_subject_vendor, /* name */
- be_nested_proto(
- 3, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(admin_subject),
- /* K1 */ be_nested_str_weak(admin_vendor),
}),
- be_str_weak(set_admin_subject_vendor),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x80000000, // 0002 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: log_new_fabric
-********************************************************************/
-be_local_closure(Matter_Fabric_log_new_fabric, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(copy),
- /* K5 */ be_nested_str_weak(reverse),
- /* K6 */ be_nested_str_weak(tohex),
- /* K7 */ be_nested_str_weak(get_admin_vendor_name),
- /* K8 */ be_const_int(3),
- }),
- be_str_weak(log_new_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x600C0018, // 0002 GETGBL R3 G24
- 0x58100002, // 0003 LDCONST R4 K2
- 0x8C140103, // 0004 GETMET R5 R0 K3
- 0x7C140200, // 0005 CALL R5 1
- 0x8C140B04, // 0006 GETMET R5 R5 K4
- 0x7C140200, // 0007 CALL R5 1
- 0x8C140B05, // 0008 GETMET R5 R5 K5
- 0x7C140200, // 0009 CALL R5 1
- 0x8C140B06, // 000A GETMET R5 R5 K6
- 0x7C140200, // 000B CALL R5 1
- 0x8C180107, // 000C GETMET R6 R0 K7
- 0x7C180200, // 000D CALL R6 1
- 0x7C0C0600, // 000E CALL R3 3
- 0x58100008, // 000F LDCONST R4 K8
- 0x7C040600, // 0010 CALL R1 3
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_pk
-********************************************************************/
-be_local_closure(Matter_Fabric_get_pk, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(no_private_key),
- }),
- be_str_weak(get_pk),
+ be_str_weak(get_admin_subject),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
@@ -1397,9 +1435,9 @@ be_local_closure(Matter_Fabric_get_pk, /* name */
/********************************************************************
-** Solidified function: get_admin_vendor
+** Solidified function: get_fabric_label
********************************************************************/
-be_local_closure(Matter_Fabric_get_admin_vendor, /* name */
+be_local_closure(Matter_Fabric_get_fabric_label, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -1410,144 +1448,9 @@ be_local_closure(Matter_Fabric_get_admin_vendor, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(admin_vendor),
+ /* K0 */ be_nested_str_weak(fabric_label),
}),
- be_str_weak(get_admin_vendor),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_id
-********************************************************************/
-be_local_closure(Matter_Fabric_get_fabric_id, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_id),
- }),
- be_str_weak(get_fabric_id),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_ca
-********************************************************************/
-be_local_closure(Matter_Fabric_set_ca, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(root_ca_certificate),
- }),
- be_str_weak(set_ca),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_noc
-********************************************************************/
-be_local_closure(Matter_Fabric_get_noc, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(noc),
- }),
- be_str_weak(get_noc),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_index
-********************************************************************/
-be_local_closure(Matter_Fabric_get_fabric_index, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_index),
- }),
- be_str_weak(get_fabric_index),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_ca
-********************************************************************/
-be_local_closure(Matter_Fabric_get_ca, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(root_ca_certificate),
- }),
- be_str_weak(get_ca),
+ be_str_weak(get_fabric_label),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
@@ -1616,75 +1519,304 @@ be_local_closure(Matter_Fabric_get_old_recent_session, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: get_ca
+********************************************************************/
+be_local_closure(Matter_Fabric_get_ca, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(root_ca_certificate),
+ }),
+ be_str_weak(get_ca),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mark_for_deletion
+********************************************************************/
+be_local_closure(Matter_Fabric_mark_for_deletion, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(deleted),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(rtc_utc),
+ }),
+ be_str_weak(mark_for_deletion),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x8C040302, // 0001 GETMET R1 R1 K2
+ 0x7C040200, // 0002 CALL R1 1
+ 0x90020001, // 0003 SETMBR R0 K0 R1
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_index
+********************************************************************/
+be_local_closure(Matter_Fabric_get_fabric_index, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(fabric_index),
+ }),
+ be_str_weak(get_fabric_index),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_id
+********************************************************************/
+be_local_closure(Matter_Fabric_get_fabric_id, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(fabric_id),
+ }),
+ be_str_weak(get_fabric_id),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: hydrate_post
+********************************************************************/
+be_local_closure(Matter_Fabric_hydrate_post, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl),
+ /* K1 */ be_nested_str_weak(reset),
+ /* K2 */ be_nested_str_weak(counter_group_data_snd),
+ /* K3 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
+ /* K4 */ be_nested_str_weak(counter_group_ctrl_snd),
+ /* K5 */ be_nested_str_weak(val),
+ }),
+ be_str_weak(hydrate_post),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x880C0102, // 0002 GETMBR R3 R0 K2
+ 0x7C040400, // 0003 CALL R1 2
+ 0x88040103, // 0004 GETMBR R1 R0 K3
+ 0x8C040301, // 0005 GETMET R1 R1 K1
+ 0x880C0104, // 0006 GETMBR R3 R0 K4
+ 0x7C040400, // 0007 CALL R1 2
+ 0x88040100, // 0008 GETMBR R1 R0 K0
+ 0x8C040305, // 0009 GETMET R1 R1 K5
+ 0x7C040200, // 000A CALL R1 1
+ 0x90020401, // 000B SETMBR R0 K2 R1
+ 0x88040103, // 000C GETMBR R1 R0 K3
+ 0x8C040305, // 000D GETMET R1 R1 K5
+ 0x7C040200, // 000E CALL R1 1
+ 0x90020801, // 000F SETMBR R0 K4 R1
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: counter_group_ctrl_snd_next
+********************************************************************/
+be_local_closure(Matter_Fabric_counter_group_ctrl_snd_next, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
+ /* K1 */ be_nested_str_weak(next),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(log),
+ /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i),
+ /* K5 */ be_const_int(3),
+ /* K6 */ be_nested_str_weak(matter),
+ /* K7 */ be_nested_str_weak(Counter),
+ /* K8 */ be_nested_str_weak(is_greater),
+ /* K9 */ be_nested_str_weak(counter_group_ctrl_snd),
+ /* K10 */ be_nested_str_weak(_GROUP_SND_INCR),
+ /* K11 */ be_nested_str_weak(does_persist),
+ /* K12 */ be_nested_str_weak(save),
+ }),
+ be_str_weak(counter_group_ctrl_snd_next),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0xB80A0400, // 0003 GETNGBL R2 K2
+ 0x8C080503, // 0004 GETMET R2 R2 K3
+ 0x60100018, // 0005 GETGBL R4 G24
+ 0x58140004, // 0006 LDCONST R5 K4
+ 0x5C180200, // 0007 MOVE R6 R1
+ 0x7C100400, // 0008 CALL R4 2
+ 0x58140005, // 0009 LDCONST R5 K5
+ 0x7C080600, // 000A CALL R2 3
+ 0xB80A0C00, // 000B GETNGBL R2 K6
+ 0x88080507, // 000C GETMBR R2 R2 K7
+ 0x8C080508, // 000D GETMET R2 R2 K8
+ 0x5C100200, // 000E MOVE R4 R1
+ 0x88140109, // 000F GETMBR R5 R0 K9
+ 0x7C080600, // 0010 CALL R2 3
+ 0x780A0007, // 0011 JMPF R2 #001A
+ 0x8808010A, // 0012 GETMBR R2 R0 K10
+ 0x00080202, // 0013 ADD R2 R1 R2
+ 0x90021202, // 0014 SETMBR R0 K9 R2
+ 0x8C08010B, // 0015 GETMET R2 R0 K11
+ 0x7C080200, // 0016 CALL R2 1
+ 0x780A0001, // 0017 JMPF R2 #001A
+ 0x8C08010C, // 0018 GETMET R2 R0 K12
+ 0x7C080200, // 0019 CALL R2 1
+ 0x80040200, // 001A RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Fabric
********************************************************************/
extern const bclass be_class_Matter_Expirable;
be_local_class(Matter_Fabric,
- 20,
+ 21,
&be_class_Matter_Expirable,
- be_nested_map(60,
+ be_nested_map(65,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(fabric_index, -1), be_const_var(2) },
- { be_const_key_weak(fromjson, -1), be_const_static_closure(Matter_Fabric_fromjson_closure) },
- { be_const_key_weak(root_ca_certificate, -1), be_const_var(6) },
- { be_const_key_weak(ipk_epoch_key, -1), be_const_var(9) },
- { be_const_key_weak(get_ca, 34), be_const_closure(Matter_Fabric_get_ca_closure) },
- { be_const_key_weak(noc, -1), be_const_var(7) },
- { be_const_key_weak(get_device_id, -1), be_const_closure(Matter_Fabric_get_device_id_closure) },
+ { be_const_key_weak(get_device_id_as_int64, -1), be_const_closure(Matter_Fabric_get_device_id_as_int64_closure) },
+ { be_const_key_weak(admin_vendor, -1), be_const_var(20) },
+ { be_const_key_weak(counter_group_ctrl_snd_next, -1), be_const_closure(Matter_Fabric_counter_group_ctrl_snd_next_closure) },
+ { be_const_key_weak(hydrate_post, 12), be_const_closure(Matter_Fabric_hydrate_post_closure) },
+ { be_const_key_weak(admin_subject, 63), be_const_var(19) },
+ { be_const_key_weak(fabric_compressed, 36), be_const_var(12) },
+ { be_const_key_weak(noc, -1), be_const_var(8) },
{ be_const_key_weak(add_session, -1), be_const_closure(Matter_Fabric_add_session_closure) },
- { be_const_key_weak(get_oldest_session, 50), be_const_closure(Matter_Fabric_get_oldest_session_closure) },
- { be_const_key_weak(fabric_parent, -1), be_const_var(3) },
- { be_const_key_weak(no_private_key, -1), be_const_var(5) },
- { be_const_key_weak(admin_vendor, 1), be_const_var(19) },
- { be_const_key_weak(fabric_id, -1), be_const_var(10) },
- { be_const_key_weak(device_id, -1), be_const_var(12) },
+ { be_const_key_weak(get_oldest_session, 22), be_const_closure(Matter_Fabric_get_oldest_session_closure) },
+ { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(Matter_Fabric_get_ipk_epoch_key_closure) },
+ { be_const_key_weak(log_new_fabric, -1), be_const_closure(Matter_Fabric_log_new_fabric_closure) },
+ { be_const_key_weak(fromjson, 64), be_const_static_closure(Matter_Fabric_fromjson_closure) },
+ { be_const_key_weak(get_fabric_index, -1), be_const_closure(Matter_Fabric_get_fabric_index_closure) },
+ { be_const_key_weak(get_icac, -1), be_const_closure(Matter_Fabric_get_icac_closure) },
{ be_const_key_weak(set_fabric_index, -1), be_const_closure(Matter_Fabric_set_fabric_index_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_Fabric_init_closure) },
- { be_const_key_weak(counter_group_ctrl_snd, -1), be_const_var(15) },
- { be_const_key_weak(fabric_label, -1), be_const_var(13) },
+ { be_const_key_weak(counter_group_ctrl_snd, -1), be_const_var(16) },
+ { be_const_key_weak(get_noc, 4), be_const_closure(Matter_Fabric_get_noc_closure) },
+ { be_const_key_weak(_counter_group_data_snd_impl, -1), be_const_var(17) },
{ be_const_key_weak(fabric_completed, -1), be_const_closure(Matter_Fabric_fabric_completed_closure) },
- { be_const_key_weak(created, -1), be_const_var(1) },
- { be_const_key_weak(fabric_compressed, -1), be_const_var(11) },
- { be_const_key_weak(icac, -1), be_const_var(8) },
- { be_const_key_weak(_counter_group_data_snd_impl, 2), be_const_var(16) },
- { be_const_key_weak(_store, 57), be_const_var(0) },
- { be_const_key_weak(get_ca_pub, 32), be_const_closure(Matter_Fabric_get_ca_pub_closure) },
- { be_const_key_weak(_GROUP_KEY, 16), be_nested_str_weak(GroupKey_X20v1_X2E0) },
- { be_const_key_weak(tojson, -1), be_const_closure(Matter_Fabric_tojson_closure) },
+ { be_const_key_weak(_sessions, -1), be_const_var(5) },
+ { be_const_key_weak(get_pk, -1), be_const_closure(Matter_Fabric_get_pk_closure) },
+ { be_const_key_weak(mark_for_deletion, -1), be_const_closure(Matter_Fabric_mark_for_deletion_closure) },
+ { be_const_key_weak(_store, 47), be_const_var(0) },
+ { be_const_key_weak(get_newest_session, 58), be_const_closure(Matter_Fabric_get_newest_session_closure) },
+ { be_const_key_weak(get_fabric_compressed, -1), be_const_closure(Matter_Fabric_get_fabric_compressed_closure) },
+ { be_const_key_weak(before_remove, -1), be_const_closure(Matter_Fabric_before_remove_closure) },
+ { be_const_key_weak(set_pk, 11), be_const_closure(Matter_Fabric_set_pk_closure) },
+ { be_const_key_weak(root_ca_certificate, 37), be_const_var(7) },
+ { be_const_key_weak(set_admin_subject_vendor, 29), be_const_closure(Matter_Fabric_set_admin_subject_vendor_closure) },
+ { be_const_key_weak(get_old_recent_session, 42), be_const_closure(Matter_Fabric_get_old_recent_session_closure) },
+ { be_const_key_weak(get_fabric_label, 10), be_const_closure(Matter_Fabric_get_fabric_label_closure) },
+ { be_const_key_weak(tojson, 57), be_const_closure(Matter_Fabric_tojson_closure) },
+ { be_const_key_weak(fabric_id, -1), be_const_var(11) },
+ { be_const_key_weak(device_id, 24), be_const_var(13) },
+ { be_const_key_weak(_counter_group_ctrl_snd_impl, -1), be_const_var(18) },
+ { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) },
+ { be_const_key_weak(set_ipk_epoch_key, -1), be_const_closure(Matter_Fabric_set_ipk_epoch_key_closure) },
+ { be_const_key_weak(fabric_label, -1), be_const_var(14) },
+ { be_const_key_weak(get_ipk_group_key, 2), be_const_closure(Matter_Fabric_get_ipk_group_key_closure) },
+ { be_const_key_weak(get_fabric_id_as_int64, -1), be_const_closure(Matter_Fabric_get_fabric_id_as_int64_closure) },
+ { be_const_key_weak(no_private_key, -1), be_const_var(6) },
+ { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Fabric_get_admin_vendor_closure) },
+ { be_const_key_weak(_MAX_CASE, -1), be_const_int(5) },
+ { be_const_key_weak(is_marked_for_deletion, -1), be_const_closure(Matter_Fabric_is_marked_for_deletion_closure) },
+ { be_const_key_weak(fabric_index, -1), be_const_var(3) },
+ { be_const_key_weak(init, 21), be_const_closure(Matter_Fabric_init_closure) },
+ { be_const_key_weak(get_admin_vendor_name, -1), be_const_closure(Matter_Fabric_get_admin_vendor_name_closure) },
+ { be_const_key_weak(set_noc_icac, 55), be_const_closure(Matter_Fabric_set_noc_icac_closure) },
+ { be_const_key_weak(set_ca, -1), be_const_closure(Matter_Fabric_set_ca_closure) },
+ { be_const_key_weak(fabric_parent, -1), be_const_var(4) },
+ { be_const_key_weak(fabric_candidate, 46), be_const_closure(Matter_Fabric_fabric_candidate_closure) },
+ { be_const_key_weak(counter_group_data_snd, -1), be_const_var(15) },
{ be_const_key_weak(assign_fabric_index, -1), be_const_closure(Matter_Fabric_assign_fabric_index_closure) },
{ be_const_key_weak(get_admin_subject, -1), be_const_closure(Matter_Fabric_get_admin_subject_closure) },
- { be_const_key_weak(_MAX_CASE, -1), be_const_int(5) },
- { be_const_key_weak(fabric_candidate, -1), be_const_closure(Matter_Fabric_fabric_candidate_closure) },
- { be_const_key_weak(_GROUP_SND_INCR, 36), be_const_int(32) },
- { be_const_key_weak(get_fabric_label, 55), be_const_closure(Matter_Fabric_get_fabric_label_closure) },
- { be_const_key_weak(set_noc_icac, -1), be_const_closure(Matter_Fabric_set_noc_icac_closure) },
- { be_const_key_weak(get_noc, 52), be_const_closure(Matter_Fabric_get_noc_closure) },
- { be_const_key_weak(before_remove, -1), be_const_closure(Matter_Fabric_before_remove_closure) },
- { be_const_key_weak(get_admin_vendor_name, -1), be_const_closure(Matter_Fabric_get_admin_vendor_name_closure) },
- { be_const_key_weak(set_ca, -1), be_const_closure(Matter_Fabric_set_ca_closure) },
- { be_const_key_weak(get_ipk_group_key, -1), be_const_closure(Matter_Fabric_get_ipk_group_key_closure) },
- { be_const_key_weak(hydrate_post, -1), be_const_closure(Matter_Fabric_hydrate_post_closure) },
- { be_const_key_weak(set_ipk_epoch_key, 31), be_const_closure(Matter_Fabric_set_ipk_epoch_key_closure) },
- { be_const_key_weak(set_pk, -1), be_const_closure(Matter_Fabric_set_pk_closure) },
- { be_const_key_weak(set_admin_subject_vendor, -1), be_const_closure(Matter_Fabric_set_admin_subject_vendor_closure) },
- { be_const_key_weak(get_fabric_compressed, 42), be_const_closure(Matter_Fabric_get_fabric_compressed_closure) },
- { be_const_key_weak(log_new_fabric, -1), be_const_closure(Matter_Fabric_log_new_fabric_closure) },
- { be_const_key_weak(get_pk, -1), be_const_closure(Matter_Fabric_get_pk_closure) },
- { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Fabric_get_admin_vendor_closure) },
- { be_const_key_weak(get_fabric_id, -1), be_const_closure(Matter_Fabric_get_fabric_id_closure) },
- { be_const_key_weak(get_icac, 37), be_const_closure(Matter_Fabric_get_icac_closure) },
- { be_const_key_weak(_counter_group_ctrl_snd_impl, -1), be_const_var(17) },
+ { be_const_key_weak(created, 30), be_const_var(1) },
{ be_const_key_weak(set_fabric_device, -1), be_const_closure(Matter_Fabric_set_fabric_device_closure) },
- { be_const_key_weak(admin_subject, 5), be_const_var(18) },
- { be_const_key_weak(counter_group_data_snd, -1), be_const_var(14) },
- { be_const_key_weak(get_newest_session, 29), be_const_closure(Matter_Fabric_get_newest_session_closure) },
- { be_const_key_weak(get_fabric_index, -1), be_const_closure(Matter_Fabric_get_fabric_index_closure) },
- { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(Matter_Fabric_get_ipk_epoch_key_closure) },
- { be_const_key_weak(counter_group_data_snd_next, 4), be_const_closure(Matter_Fabric_counter_group_data_snd_next_closure) },
- { be_const_key_weak(counter_group_ctrl_snd_next, -1), be_const_closure(Matter_Fabric_counter_group_ctrl_snd_next_closure) },
- { be_const_key_weak(get_old_recent_session, -1), be_const_closure(Matter_Fabric_get_old_recent_session_closure) },
- { be_const_key_weak(_sessions, 0), be_const_var(4) },
+ { be_const_key_weak(get_ca, -1), be_const_closure(Matter_Fabric_get_ca_closure) },
+ { be_const_key_weak(counter_group_data_snd_next, -1), be_const_closure(Matter_Fabric_counter_group_data_snd_next_closure) },
+ { be_const_key_weak(ipk_epoch_key, -1), be_const_var(10) },
+ { be_const_key_weak(get_ca_pub, 3), be_const_closure(Matter_Fabric_get_ca_pub_closure) },
+ { be_const_key_weak(_GROUP_SND_INCR, -1), be_const_int(32) },
+ { be_const_key_weak(deleted, -1), be_const_var(2) },
+ { be_const_key_weak(get_fabric_id, -1), be_const_closure(Matter_Fabric_get_fabric_id_closure) },
+ { be_const_key_weak(get_device_id, -1), be_const_closure(Matter_Fabric_get_device_id_closure) },
+ { be_const_key_weak(icac, -1), be_const_var(9) },
})),
be_str_weak(Matter_Fabric)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h
index 49b05e0a9..d55db99f7 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h
@@ -6,375 +6,6 @@
extern const bclass be_class_Matter_HTTP_async;
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_HTTP_async_init, /* name */
- be_nested_proto(
- 11, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(compile_re),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60140003, // 0000 GETGBL R5 G3
- 0x5C180000, // 0001 MOVE R6 R0
- 0x7C140200, // 0002 CALL R5 1
- 0x8C140B00, // 0003 GETMET R5 R5 K0
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x5C240600, // 0006 MOVE R9 R3
- 0x5C280800, // 0007 MOVE R10 R4
- 0x7C140A00, // 0008 CALL R5 5
- 0x8C140101, // 0009 GETMET R5 R0 K1
- 0x7C140200, // 000A CALL R5 1
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_http_failed
-********************************************************************/
-be_local_closure(Matter_HTTP_async_event_http_failed, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(event_http_failed),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: compile_re
-********************************************************************/
-be_local_closure(Matter_HTTP_async_compile_re, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(re),
- /* K1 */ be_nested_str_weak(global),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(_re_http_status),
- /* K4 */ be_nested_str_weak(compile),
- /* K5 */ be_nested_str_weak(HTTP_STATUS_REGEX),
- /* K6 */ be_nested_str_weak(_re_http_header),
- /* K7 */ be_nested_str_weak(HTTP_HEADER_REGEX),
- /* K8 */ be_nested_str_weak(_re_http_body),
- /* K9 */ be_nested_str_weak(HTTP_BODY_REGEX),
- /* K10 */ be_nested_str_weak(_re_http_chunk),
- /* K11 */ be_nested_str_weak(HTTP_CHUNK_REGEX),
- }),
- be_str_weak(compile_re),
- &be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xB80A0200, // 0001 GETNGBL R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x7C080400, // 0004 CALL R2 2
- 0x740A0013, // 0005 JMPT R2 #001A
- 0xB80A0200, // 0006 GETNGBL R2 K1
- 0x8C0C0304, // 0007 GETMET R3 R1 K4
- 0x88140105, // 0008 GETMBR R5 R0 K5
- 0x7C0C0400, // 0009 CALL R3 2
- 0x900A0603, // 000A SETMBR R2 K3 R3
- 0xB80A0200, // 000B GETNGBL R2 K1
- 0x8C0C0304, // 000C GETMET R3 R1 K4
- 0x88140107, // 000D GETMBR R5 R0 K7
- 0x7C0C0400, // 000E CALL R3 2
- 0x900A0C03, // 000F SETMBR R2 K6 R3
- 0xB80A0200, // 0010 GETNGBL R2 K1
- 0x8C0C0304, // 0011 GETMET R3 R1 K4
- 0x88140109, // 0012 GETMBR R5 R0 K9
- 0x7C0C0400, // 0013 CALL R3 2
- 0x900A1003, // 0014 SETMBR R2 K8 R3
- 0xB80A0200, // 0015 GETNGBL R2 K1
- 0x8C0C0304, // 0016 GETMET R3 R1 K4
- 0x8814010B, // 0017 GETMBR R5 R0 K11
- 0x7C0C0400, // 0018 CALL R3 2
- 0x900A1403, // 0019 SETMBR R2 K10 R3
- 0x80000000, // 001A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_http_response
-********************************************************************/
-be_local_closure(Matter_HTTP_async_parse_http_response, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(phase),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(parse_http_status_line),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(parse_http_headers),
- /* K5 */ be_const_int(2),
- /* K6 */ be_nested_str_weak(parse_http_payload),
- }),
- be_str_weak(parse_http_response),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x1C040301, // 0001 EQ R1 R1 K1
- 0x78060002, // 0002 JMPF R1 #0006
- 0x8C040102, // 0003 GETMET R1 R0 K2
- 0x7C040200, // 0004 CALL R1 1
- 0x7002000A, // 0005 JMP #0011
- 0x88040100, // 0006 GETMBR R1 R0 K0
- 0x1C040303, // 0007 EQ R1 R1 K3
- 0x78060002, // 0008 JMPF R1 #000C
- 0x8C040104, // 0009 GETMET R1 R0 K4
- 0x7C040200, // 000A CALL R1 1
- 0x70020004, // 000B JMP #0011
- 0x88040100, // 000C GETMBR R1 R0 K0
- 0x1C040305, // 000D EQ R1 R1 K5
- 0x78060001, // 000E JMPF R1 #0011
- 0x8C040106, // 000F GETMET R1 R0 K6
- 0x7C040200, // 0010 CALL R1 1
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_available
-********************************************************************/
-be_local_closure(Matter_HTTP_async_event_available, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(receive),
- }),
- be_str_weak(event_available),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x80000000, // 0002 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: receive
-********************************************************************/
-be_local_closure(Matter_HTTP_async_receive, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(time_start),
- /* K4 */ be_nested_str_weak(timeout),
- /* K5 */ be_nested_str_weak(status),
- /* K6 */ be_nested_str_weak(close),
- /* K7 */ be_nested_str_weak(http_status),
- /* K8 */ be_nested_str_weak(event_http_timeout),
- /* K9 */ be_nested_str_weak(tcp),
- /* K10 */ be_nested_str_weak(available),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(read),
- /* K13 */ be_nested_str_weak(response),
- /* K14 */ be_nested_str_weak(parse_http_response),
- }),
- be_str_weak(receive),
- &be_const_str_solidified,
- ( &(const binstruction[48]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x50080200, // 0001 LDBOOL R2 1 0
- 0x20040202, // 0002 NE R1 R1 R2
- 0x78060000, // 0003 JMPF R1 #0005
- 0x80000200, // 0004 RET 0
- 0xB8060200, // 0005 GETNGBL R1 K1
- 0x8C040302, // 0006 GETMET R1 R1 K2
- 0x7C040200, // 0007 CALL R1 1
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x04040202, // 0009 SUB R1 R1 R2
- 0x88080104, // 000A GETMBR R2 R0 K4
- 0x24040202, // 000B GT R1 R1 R2
- 0x78060008, // 000C JMPF R1 #0016
- 0x5405FFFC, // 000D LDINT R1 -3
- 0x90020A01, // 000E SETMBR R0 K5 R1
- 0x8C040106, // 000F GETMET R1 R0 K6
- 0x7C040200, // 0010 CALL R1 1
- 0x5405FFFD, // 0011 LDINT R1 -2
- 0x90020E01, // 0012 SETMBR R0 K7 R1
- 0x8C040108, // 0013 GETMET R1 R0 K8
- 0x7C040200, // 0014 CALL R1 1
- 0x70020018, // 0015 JMP #002F
- 0x88040109, // 0016 GETMBR R1 R0 K9
- 0x8C04030A, // 0017 GETMET R1 R1 K10
- 0x7C040200, // 0018 CALL R1 1
- 0x5808000B, // 0019 LDCONST R2 K11
- 0x240C030B, // 001A GT R3 R1 K11
- 0x780E000E, // 001B JMPF R3 #002B
- 0x880C0109, // 001C GETMBR R3 R0 K9
- 0x8C0C070C, // 001D GETMET R3 R3 K12
- 0x7C0C0200, // 001E CALL R3 1
- 0x8810010D, // 001F GETMBR R4 R0 K13
- 0x00100803, // 0020 ADD R4 R4 R3
- 0x90021A04, // 0021 SETMBR R0 K13 R4
- 0x6010000C, // 0022 GETGBL R4 G12
- 0x5C140600, // 0023 MOVE R5 R3
- 0x7C100200, // 0024 CALL R4 1
- 0x00080404, // 0025 ADD R2 R2 R4
- 0x88100109, // 0026 GETMBR R4 R0 K9
- 0x8C10090A, // 0027 GETMET R4 R4 K10
- 0x7C100200, // 0028 CALL R4 1
- 0x5C040800, // 0029 MOVE R1 R4
- 0x7001FFEE, // 002A JMP #001A
- 0x240C050B, // 002B GT R3 R2 K11
- 0x780E0001, // 002C JMPF R3 #002F
- 0x8C0C010E, // 002D GETMET R3 R0 K14
- 0x7C0C0200, // 002E CALL R3 1
- 0x80000000, // 002F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: reset
-********************************************************************/
-be_local_closure(Matter_HTTP_async_reset, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(reset),
- /* K1 */ be_nested_str_weak(cmd),
- /* K2 */ be_nested_str_weak(response),
- /* K3 */ be_nested_str_weak(response_offset),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(payload),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_nested_str_weak(phase),
- /* K8 */ be_nested_str_weak(http_status),
- /* K9 */ be_nested_str_weak(is_chunked),
- /* K10 */ be_nested_str_weak(chunk_size),
- }),
- be_str_weak(reset),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x60040003, // 0000 GETGBL R1 G3
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x7C040200, // 0004 CALL R1 1
- 0x4C040000, // 0005 LDNIL R1
- 0x90020201, // 0006 SETMBR R0 K1 R1
- 0x4C040000, // 0007 LDNIL R1
- 0x90020401, // 0008 SETMBR R0 K2 R1
- 0x90020704, // 0009 SETMBR R0 K3 K4
- 0x90020B06, // 000A SETMBR R0 K5 K6
- 0x90020F04, // 000B SETMBR R0 K7 K4
- 0x90021104, // 000C SETMBR R0 K8 K4
- 0x50040000, // 000D LDBOOL R1 0 0
- 0x90021201, // 000E SETMBR R0 K9 R1
- 0x4C040000, // 000F LDNIL R1
- 0x90021401, // 0010 SETMBR R0 K10 R1
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_http_status_code
-********************************************************************/
-be_local_closure(Matter_HTTP_async_event_http_status_code, /* name */
- be_nested_proto(
- 3, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(status_code),
- }),
- be_str_weak(event_http_status_code),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: parse_http_payload
********************************************************************/
@@ -497,149 +128,6 @@ be_local_closure(Matter_HTTP_async_parse_http_payload, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: send_http
-********************************************************************/
-be_local_closure(Matter_HTTP_async_send_http, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(response),
- /* K2 */ be_nested_str_weak(),
- /* K3 */ be_nested_str_weak(addr),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(_X3A),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(_X5B),
- /* K8 */ be_nested_str_weak(_X5D),
- /* K9 */ be_nested_str_weak(HTTP_GET),
- /* K10 */ be_nested_str_weak(cmd),
- /* K11 */ be_nested_str_weak(port),
- /* K12 */ be_nested_str_weak(write),
- /* K13 */ be_nested_str_weak(close),
- /* K14 */ be_nested_str_weak(status),
- /* K15 */ be_nested_str_weak(http_status),
- /* K16 */ be_nested_str_weak(event_http_failed),
- }),
- be_str_weak(send_http),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x90020302, // 0001 SETMBR R0 K1 K2
- 0x88080103, // 0002 GETMBR R2 R0 K3
- 0x8C0C0304, // 0003 GETMET R3 R1 K4
- 0x5C140400, // 0004 MOVE R5 R2
- 0x58180005, // 0005 LDCONST R6 K5
- 0x7C0C0600, // 0006 CALL R3 3
- 0x280C0706, // 0007 GE R3 R3 K6
- 0x780E0002, // 0008 JMPF R3 #000C
- 0x000E0E02, // 0009 ADD R3 K7 R2
- 0x000C0708, // 000A ADD R3 R3 K8
- 0x5C080600, // 000B MOVE R2 R3
- 0x600C0018, // 000C GETGBL R3 G24
- 0x88100109, // 000D GETMBR R4 R0 K9
- 0x8814010A, // 000E GETMBR R5 R0 K10
- 0x5C180400, // 000F MOVE R6 R2
- 0x881C010B, // 0010 GETMBR R7 R0 K11
- 0x7C0C0800, // 0011 CALL R3 4
- 0x8C10010C, // 0012 GETMET R4 R0 K12
- 0x5C180600, // 0013 MOVE R6 R3
- 0x7C100400, // 0014 CALL R4 2
- 0x6014000C, // 0015 GETGBL R5 G12
- 0x5C180600, // 0016 MOVE R6 R3
- 0x7C140200, // 0017 CALL R5 1
- 0x20140805, // 0018 NE R5 R4 R5
- 0x78160007, // 0019 JMPF R5 #0022
- 0x8C14010D, // 001A GETMET R5 R0 K13
- 0x7C140200, // 001B CALL R5 1
- 0x5415FFFB, // 001C LDINT R5 -4
- 0x90021C05, // 001D SETMBR R0 K14 R5
- 0x5415FFFE, // 001E LDINT R5 -1
- 0x90021E05, // 001F SETMBR R0 K15 R5
- 0x8C140110, // 0020 GETMET R5 R0 K16
- 0x7C140200, // 0021 CALL R5 1
- 0x80000000, // 0022 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: begin_sync
-********************************************************************/
-be_local_closure(Matter_HTTP_async_begin_sync, /* name */
- be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(timeout),
- /* K1 */ be_nested_str_weak(set_timeout),
- /* K2 */ be_nested_str_weak(SPINLOCK),
- /* K3 */ be_nested_str_weak(begin),
- /* K4 */ be_nested_str_weak(http_status),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(loop),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(delay),
- /* K9 */ be_nested_str_weak(payload),
- }),
- be_str_weak(begin_sync),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x4C100000, // 0001 LDNIL R4
- 0x20100404, // 0002 NE R4 R2 R4
- 0x78120002, // 0003 JMPF R4 #0007
- 0x8C100101, // 0004 GETMET R4 R0 K1
- 0x5C180400, // 0005 MOVE R6 R2
- 0x7C100400, // 0006 CALL R4 2
- 0x4C100000, // 0007 LDNIL R4
- 0x88140102, // 0008 GETMBR R5 R0 K2
- 0x8C180103, // 0009 GETMET R6 R0 K3
- 0x5C200200, // 000A MOVE R8 R1
- 0x7C180400, // 000B CALL R6 2
- 0x781A0009, // 000C JMPF R6 #0017
- 0x881C0104, // 000D GETMBR R7 R0 K4
- 0x1C1C0F05, // 000E EQ R7 R7 K5
- 0x781E0006, // 000F JMPF R7 #0017
- 0x8C1C0106, // 0010 GETMET R7 R0 K6
- 0x7C1C0200, // 0011 CALL R7 1
- 0xB81E0E00, // 0012 GETNGBL R7 K7
- 0x8C1C0F08, // 0013 GETMET R7 R7 K8
- 0x5C240A00, // 0014 MOVE R9 R5
- 0x7C1C0400, // 0015 CALL R7 2
- 0x7001FFF5, // 0016 JMP #000D
- 0x8C1C0101, // 0017 GETMET R7 R0 K1
- 0x5C240600, // 0018 MOVE R9 R3
- 0x7C1C0400, // 0019 CALL R7 2
- 0x881C0104, // 001A GETMBR R7 R0 K4
- 0x241C0F05, // 001B GT R7 R7 K5
- 0x781E0001, // 001C JMPF R7 #001F
- 0x881C0109, // 001D GETMBR R7 R0 K9
- 0x70020000, // 001E JMP #0020
- 0x4C1C0000, // 001F LDNIL R7
- 0x80040E00, // 0020 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: event_http_finished
********************************************************************/
@@ -665,30 +153,47 @@ be_local_closure(Matter_HTTP_async_event_http_finished, /* name */
/********************************************************************
-** Solidified function: event_timeout
+** Solidified function: event_http_header
********************************************************************/
-be_local_closure(Matter_HTTP_async_event_timeout, /* name */
+be_local_closure(Matter_HTTP_async_event_http_header, /* name */
be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
+ 7, /* nstack */
+ 3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(http_status),
- /* K1 */ be_nested_str_weak(event_http_timeout),
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(tolower),
+ /* K2 */ be_nested_str_weak(transfer_X2Dencoding),
+ /* K3 */ be_nested_str_weak(chunked),
+ /* K4 */ be_nested_str_weak(is_chunked),
}),
- be_str_weak(event_timeout),
+ be_str_weak(event_http_header),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x5405FFFD, // 0000 LDINT R1 -2
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x8C040101, // 0002 GETMET R1 R0 K1
- 0x7C040200, // 0003 CALL R1 1
- 0x80000000, // 0004 RET 0
+ ( &(const binstruction[19]) { /* code */
+ 0xA40E0000, // 0000 IMPORT R3 K0
+ 0x8C100701, // 0001 GETMET R4 R3 K1
+ 0x5C180200, // 0002 MOVE R6 R1
+ 0x7C100400, // 0003 CALL R4 2
+ 0x5C040800, // 0004 MOVE R1 R4
+ 0x8C100701, // 0005 GETMET R4 R3 K1
+ 0x5C180400, // 0006 MOVE R6 R2
+ 0x7C100400, // 0007 CALL R4 2
+ 0x5C080800, // 0008 MOVE R2 R4
+ 0x1C100302, // 0009 EQ R4 R1 K2
+ 0x78120006, // 000A JMPF R4 #0012
+ 0x8C100701, // 000B GETMET R4 R3 K1
+ 0x5C180400, // 000C MOVE R6 R2
+ 0x7C100400, // 000D CALL R4 2
+ 0x1C100903, // 000E EQ R4 R4 K3
+ 0x78120001, // 000F JMPF R4 #0012
+ 0x50100200, // 0010 LDBOOL R4 1 0
+ 0x90020804, // 0011 SETMBR R0 K4 R4
+ 0x80000000, // 0012 RET 0
})
)
);
@@ -696,9 +201,104 @@ be_local_closure(Matter_HTTP_async_event_timeout, /* name */
/********************************************************************
-** Solidified function: event_established
+** Solidified function: init
********************************************************************/
-be_local_closure(Matter_HTTP_async_event_established, /* name */
+be_local_closure(Matter_HTTP_async_init, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(_X40),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(auth),
+ /* K5 */ be_nested_str_weak(fromstring),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(tob64),
+ /* K8 */ be_const_int(2147483647),
+ /* K9 */ be_nested_str_weak(init),
+ /* K10 */ be_nested_str_weak(compile_re),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[36]) { /* code */
+ 0xA4160000, // 0000 IMPORT R5 K0
+ 0x60180008, // 0001 GETGBL R6 G8
+ 0x5C1C0200, // 0002 MOVE R7 R1
+ 0x7C180200, // 0003 CALL R6 1
+ 0x5C040C00, // 0004 MOVE R1 R6
+ 0x8C180B01, // 0005 GETMET R6 R5 K1
+ 0x5C200200, // 0006 MOVE R8 R1
+ 0x58240002, // 0007 LDCONST R9 K2
+ 0x7C180600, // 0008 CALL R6 3
+ 0x281C0D03, // 0009 GE R7 R6 K3
+ 0x781E000C, // 000A JMPF R7 #0018
+ 0x601C0015, // 000B GETGBL R7 G21
+ 0x7C1C0000, // 000C CALL R7 0
+ 0x8C1C0F05, // 000D GETMET R7 R7 K5
+ 0x04240D06, // 000E SUB R9 R6 K6
+ 0x40260609, // 000F CONNECT R9 K3 R9
+ 0x94240209, // 0010 GETIDX R9 R1 R9
+ 0x7C1C0400, // 0011 CALL R7 2
+ 0x8C1C0F07, // 0012 GETMET R7 R7 K7
+ 0x7C1C0200, // 0013 CALL R7 1
+ 0x90020807, // 0014 SETMBR R0 K4 R7
+ 0x001C0D06, // 0015 ADD R7 R6 K6
+ 0x401C0F08, // 0016 CONNECT R7 R7 K8
+ 0x94040207, // 0017 GETIDX R1 R1 R7
+ 0x601C0003, // 0018 GETGBL R7 G3
+ 0x5C200000, // 0019 MOVE R8 R0
+ 0x7C1C0200, // 001A CALL R7 1
+ 0x8C1C0F09, // 001B GETMET R7 R7 K9
+ 0x5C240200, // 001C MOVE R9 R1
+ 0x5C280400, // 001D MOVE R10 R2
+ 0x5C2C0600, // 001E MOVE R11 R3
+ 0x5C300800, // 001F MOVE R12 R4
+ 0x7C1C0A00, // 0020 CALL R7 5
+ 0x8C1C010A, // 0021 GETMET R7 R0 K10
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0x80000000, // 0023 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_http_failed
+********************************************************************/
+be_local_closure(Matter_HTTP_async_event_http_failed, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(event_http_failed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_http_response
+********************************************************************/
+be_local_closure(Matter_HTTP_async_parse_http_response, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
@@ -708,15 +308,36 @@ be_local_closure(Matter_HTTP_async_event_established, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(send_http),
+ ( &(const bvalue[ 7]) { /* constants */
+ /* K0 */ be_nested_str_weak(phase),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(parse_http_status_line),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_nested_str_weak(parse_http_headers),
+ /* K5 */ be_const_int(2),
+ /* K6 */ be_nested_str_weak(parse_http_payload),
}),
- be_str_weak(event_established),
+ be_str_weak(parse_http_response),
&be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x80000000, // 0002 RET 0
+ ( &(const binstruction[18]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x1C040301, // 0001 EQ R1 R1 K1
+ 0x78060002, // 0002 JMPF R1 #0006
+ 0x8C040102, // 0003 GETMET R1 R0 K2
+ 0x7C040200, // 0004 CALL R1 1
+ 0x7002000A, // 0005 JMP #0011
+ 0x88040100, // 0006 GETMBR R1 R0 K0
+ 0x1C040303, // 0007 EQ R1 R1 K3
+ 0x78060002, // 0008 JMPF R1 #000C
+ 0x8C040104, // 0009 GETMET R1 R0 K4
+ 0x7C040200, // 000A CALL R1 1
+ 0x70020004, // 000B JMP #0011
+ 0x88040100, // 000C GETMBR R1 R0 K0
+ 0x1C040305, // 000D EQ R1 R1 K5
+ 0x78060001, // 000E JMPF R1 #0011
+ 0x8C040106, // 000F GETMET R1 R0 K6
+ 0x7C040200, // 0010 CALL R1 1
+ 0x80000000, // 0011 RET 0
})
)
);
@@ -755,9 +376,9 @@ be_local_closure(Matter_HTTP_async_event_refused, /* name */
/********************************************************************
-** Solidified function: event_closed
+** Solidified function: reset
********************************************************************/
-be_local_closure(Matter_HTTP_async_event_closed, /* name */
+be_local_closure(Matter_HTTP_async_reset, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
@@ -767,22 +388,40 @@ be_local_closure(Matter_HTTP_async_event_closed, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(http_status),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(event_http_finished),
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(reset),
+ /* K1 */ be_nested_str_weak(cmd),
+ /* K2 */ be_nested_str_weak(response),
+ /* K3 */ be_nested_str_weak(response_offset),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(payload),
+ /* K6 */ be_nested_str_weak(),
+ /* K7 */ be_nested_str_weak(phase),
+ /* K8 */ be_nested_str_weak(http_status),
+ /* K9 */ be_nested_str_weak(is_chunked),
+ /* K10 */ be_nested_str_weak(chunk_size),
}),
- be_str_weak(event_closed),
+ be_str_weak(reset),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x1C040301, // 0001 EQ R1 R1 K1
- 0x78060002, // 0002 JMPF R1 #0006
- 0x90020102, // 0003 SETMBR R0 K0 K2
- 0x8C040103, // 0004 GETMET R1 R0 K3
- 0x7C040200, // 0005 CALL R1 1
- 0x80000000, // 0006 RET 0
+ ( &(const binstruction[18]) { /* code */
+ 0x60040003, // 0000 GETGBL R1 G3
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x8C040300, // 0003 GETMET R1 R1 K0
+ 0x7C040200, // 0004 CALL R1 1
+ 0x4C040000, // 0005 LDNIL R1
+ 0x90020201, // 0006 SETMBR R0 K1 R1
+ 0x4C040000, // 0007 LDNIL R1
+ 0x90020401, // 0008 SETMBR R0 K2 R1
+ 0x90020704, // 0009 SETMBR R0 K3 K4
+ 0x90020B06, // 000A SETMBR R0 K5 K6
+ 0x90020F04, // 000B SETMBR R0 K7 K4
+ 0x90021104, // 000C SETMBR R0 K8 K4
+ 0x50040000, // 000D LDBOOL R1 0 0
+ 0x90021201, // 000E SETMBR R0 K9 R1
+ 0x4C040000, // 000F LDNIL R1
+ 0x90021401, // 0010 SETMBR R0 K10 R1
+ 0x80000000, // 0011 RET 0
})
)
);
@@ -790,11 +429,44 @@ be_local_closure(Matter_HTTP_async_event_closed, /* name */
/********************************************************************
-** Solidified function: parse_http_status_line
+** Solidified function: begin
********************************************************************/
-be_local_closure(Matter_HTTP_async_parse_http_status_line, /* name */
+be_local_closure(Matter_HTTP_async_begin, /* name */
be_nested_proto(
- 5, /* nstack */
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(begin),
+ /* K1 */ be_nested_str_weak(cmd),
+ }),
+ be_str_weak(begin),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x60080003, // 0000 GETGBL R2 G3
+ 0x5C0C0000, // 0001 MOVE R3 R0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x7C080200, // 0004 CALL R2 1
+ 0x90020201, // 0005 SETMBR R0 K1 R1
+ 0x80040400, // 0006 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_established
+********************************************************************/
+be_local_closure(Matter_HTTP_async_event_established, /* name */
+ be_nested_proto(
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -802,51 +474,15 @@ be_local_closure(Matter_HTTP_async_parse_http_status_line, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(_re_http_status),
- /* K2 */ be_nested_str_weak(match2),
- /* K3 */ be_nested_str_weak(response),
- /* K4 */ be_nested_str_weak(response_offset),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(status_code),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(phase),
- /* K9 */ be_nested_str_weak(parse_http_headers),
- /* K10 */ be_nested_str_weak(close),
- /* K11 */ be_nested_str_weak(status),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(send_http),
}),
- be_str_weak(parse_http_status_line),
+ be_str_weak(event_established),
&be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C040302, // 0002 GETMET R1 R1 K2
- 0x880C0103, // 0003 GETMBR R3 R0 K3
- 0x88100104, // 0004 GETMBR R4 R0 K4
- 0x7C040600, // 0005 CALL R1 3
- 0x78060009, // 0006 JMPF R1 #0011
- 0x94080305, // 0007 GETIDX R2 R1 K5
- 0x90020802, // 0008 SETMBR R0 K4 R2
- 0x60080009, // 0009 GETGBL R2 G9
- 0x940C0307, // 000A GETIDX R3 R1 K7
- 0x7C080200, // 000B CALL R2 1
- 0x90020C02, // 000C SETMBR R0 K6 R2
- 0x90021107, // 000D SETMBR R0 K8 K7
- 0x8C080109, // 000E GETMET R2 R0 K9
- 0x7C080200, // 000F CALL R2 1
- 0x70020009, // 0010 JMP #001B
- 0x6008000C, // 0011 GETGBL R2 G12
- 0x880C0103, // 0012 GETMBR R3 R0 K3
- 0x7C080200, // 0013 CALL R2 1
- 0x540E0063, // 0014 LDINT R3 100
- 0x24080403, // 0015 GT R2 R2 R3
- 0x780A0003, // 0016 JMPF R2 #001B
- 0x8C08010A, // 0017 GETMET R2 R0 K10
- 0x7C080200, // 0018 CALL R2 1
- 0x5409FFFB, // 0019 LDINT R2 -4
- 0x90021602, // 001A SETMBR R0 K11 R2
- 0x80000000, // 001B RET 0
+ ( &(const binstruction[ 3]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x80000000, // 0002 RET 0
})
)
);
@@ -942,23 +578,316 @@ be_local_closure(Matter_HTTP_async_parse_http_headers, /* name */
/********************************************************************
-** Solidified function: event_http_timeout
+** Solidified function: event_available
********************************************************************/
-be_local_closure(Matter_HTTP_async_event_http_timeout, /* name */
+be_local_closure(Matter_HTTP_async_event_available, /* name */
be_nested_proto(
- 1, /* nstack */
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(event_http_timeout),
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(receive),
+ }),
+ be_str_weak(event_available),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
+ ( &(const binstruction[ 3]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_timeout
+********************************************************************/
+be_local_closure(Matter_HTTP_async_event_timeout, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(http_status),
+ /* K1 */ be_nested_str_weak(event_http_timeout),
+ }),
+ be_str_weak(event_timeout),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x5405FFFD, // 0000 LDINT R1 -2
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x7C040200, // 0003 CALL R1 1
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compile_re
+********************************************************************/
+be_local_closure(Matter_HTTP_async_compile_re, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[12]) { /* constants */
+ /* K0 */ be_nested_str_weak(re),
+ /* K1 */ be_nested_str_weak(global),
+ /* K2 */ be_nested_str_weak(contains),
+ /* K3 */ be_nested_str_weak(_re_http_status),
+ /* K4 */ be_nested_str_weak(compile),
+ /* K5 */ be_nested_str_weak(HTTP_STATUS_REGEX),
+ /* K6 */ be_nested_str_weak(_re_http_header),
+ /* K7 */ be_nested_str_weak(HTTP_HEADER_REGEX),
+ /* K8 */ be_nested_str_weak(_re_http_body),
+ /* K9 */ be_nested_str_weak(HTTP_BODY_REGEX),
+ /* K10 */ be_nested_str_weak(_re_http_chunk),
+ /* K11 */ be_nested_str_weak(HTTP_CHUNK_REGEX),
+ }),
+ be_str_weak(compile_re),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xB80A0200, // 0001 GETNGBL R2 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x58100003, // 0003 LDCONST R4 K3
+ 0x7C080400, // 0004 CALL R2 2
+ 0x740A0013, // 0005 JMPT R2 #001A
+ 0xB80A0200, // 0006 GETNGBL R2 K1
+ 0x8C0C0304, // 0007 GETMET R3 R1 K4
+ 0x88140105, // 0008 GETMBR R5 R0 K5
+ 0x7C0C0400, // 0009 CALL R3 2
+ 0x900A0603, // 000A SETMBR R2 K3 R3
+ 0xB80A0200, // 000B GETNGBL R2 K1
+ 0x8C0C0304, // 000C GETMET R3 R1 K4
+ 0x88140107, // 000D GETMBR R5 R0 K7
+ 0x7C0C0400, // 000E CALL R3 2
+ 0x900A0C03, // 000F SETMBR R2 K6 R3
+ 0xB80A0200, // 0010 GETNGBL R2 K1
+ 0x8C0C0304, // 0011 GETMET R3 R1 K4
+ 0x88140109, // 0012 GETMBR R5 R0 K9
+ 0x7C0C0400, // 0013 CALL R3 2
+ 0x900A1003, // 0014 SETMBR R2 K8 R3
+ 0xB80A0200, // 0015 GETNGBL R2 K1
+ 0x8C0C0304, // 0016 GETMET R3 R1 K4
+ 0x8814010B, // 0017 GETMBR R5 R0 K11
+ 0x7C0C0400, // 0018 CALL R3 2
+ 0x900A1403, // 0019 SETMBR R2 K10 R3
+ 0x80000000, // 001A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_closed
+********************************************************************/
+be_local_closure(Matter_HTTP_async_event_closed, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(http_status),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_nested_str_weak(event_http_finished),
+ }),
+ be_str_weak(event_closed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x1C040301, // 0001 EQ R1 R1 K1
+ 0x78060002, // 0002 JMPF R1 #0006
+ 0x90020102, // 0003 SETMBR R0 K0 K2
+ 0x8C040103, // 0004 GETMET R1 R0 K3
+ 0x7C040200, // 0005 CALL R1 1
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: begin_sync
+********************************************************************/
+be_local_closure(Matter_HTTP_async_begin_sync, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_nested_str_weak(timeout),
+ /* K1 */ be_nested_str_weak(set_timeout),
+ /* K2 */ be_nested_str_weak(SPINLOCK),
+ /* K3 */ be_nested_str_weak(begin),
+ /* K4 */ be_nested_str_weak(http_status),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(loop),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(delay),
+ /* K9 */ be_nested_str_weak(payload),
+ }),
+ be_str_weak(begin_sync),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x4C100000, // 0001 LDNIL R4
+ 0x20100404, // 0002 NE R4 R2 R4
+ 0x78120002, // 0003 JMPF R4 #0007
+ 0x8C100101, // 0004 GETMET R4 R0 K1
+ 0x5C180400, // 0005 MOVE R6 R2
+ 0x7C100400, // 0006 CALL R4 2
+ 0x4C100000, // 0007 LDNIL R4
+ 0x88140102, // 0008 GETMBR R5 R0 K2
+ 0x8C180103, // 0009 GETMET R6 R0 K3
+ 0x5C200200, // 000A MOVE R8 R1
+ 0x7C180400, // 000B CALL R6 2
+ 0x781A0009, // 000C JMPF R6 #0017
+ 0x881C0104, // 000D GETMBR R7 R0 K4
+ 0x1C1C0F05, // 000E EQ R7 R7 K5
+ 0x781E0006, // 000F JMPF R7 #0017
+ 0x8C1C0106, // 0010 GETMET R7 R0 K6
+ 0x7C1C0200, // 0011 CALL R7 1
+ 0xB81E0E00, // 0012 GETNGBL R7 K7
+ 0x8C1C0F08, // 0013 GETMET R7 R7 K8
+ 0x5C240A00, // 0014 MOVE R9 R5
+ 0x7C1C0400, // 0015 CALL R7 2
+ 0x7001FFF5, // 0016 JMP #000D
+ 0x8C1C0101, // 0017 GETMET R7 R0 K1
+ 0x5C240600, // 0018 MOVE R9 R3
+ 0x7C1C0400, // 0019 CALL R7 2
+ 0x881C0104, // 001A GETMBR R7 R0 K4
+ 0x241C0F05, // 001B GT R7 R7 K5
+ 0x781E0001, // 001C JMPF R7 #001F
+ 0x881C0109, // 001D GETMBR R7 R0 K9
+ 0x70020000, // 001E JMP #0020
+ 0x4C1C0000, // 001F LDNIL R7
+ 0x80040E00, // 0020 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_http
+********************************************************************/
+be_local_closure(Matter_HTTP_async_send_http, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[19]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(response),
+ /* K2 */ be_nested_str_weak(),
+ /* K3 */ be_nested_str_weak(addr),
+ /* K4 */ be_nested_str_weak(find),
+ /* K5 */ be_nested_str_weak(_X3A),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(_X5B),
+ /* K8 */ be_nested_str_weak(_X5D),
+ /* K9 */ be_nested_str_weak(auth),
+ /* K10 */ be_nested_str_weak(HTTP_GET),
+ /* K11 */ be_nested_str_weak(cmd),
+ /* K12 */ be_nested_str_weak(port),
+ /* K13 */ be_nested_str_weak(HTTP_GET_AUTH),
+ /* K14 */ be_nested_str_weak(write),
+ /* K15 */ be_nested_str_weak(close),
+ /* K16 */ be_nested_str_weak(status),
+ /* K17 */ be_nested_str_weak(http_status),
+ /* K18 */ be_nested_str_weak(event_http_failed),
+ }),
+ be_str_weak(send_http),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x90020302, // 0001 SETMBR R0 K1 K2
+ 0x88080103, // 0002 GETMBR R2 R0 K3
+ 0x8C0C0304, // 0003 GETMET R3 R1 K4
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x58180005, // 0005 LDCONST R6 K5
+ 0x7C0C0600, // 0006 CALL R3 3
+ 0x280C0706, // 0007 GE R3 R3 K6
+ 0x780E0002, // 0008 JMPF R3 #000C
+ 0x000E0E02, // 0009 ADD R3 K7 R2
+ 0x000C0708, // 000A ADD R3 R3 K8
+ 0x5C080600, // 000B MOVE R2 R3
+ 0x4C0C0000, // 000C LDNIL R3
+ 0x88100109, // 000D GETMBR R4 R0 K9
+ 0x4C140000, // 000E LDNIL R5
+ 0x1C100805, // 000F EQ R4 R4 R5
+ 0x78120007, // 0010 JMPF R4 #0019
+ 0x60100018, // 0011 GETGBL R4 G24
+ 0x8814010A, // 0012 GETMBR R5 R0 K10
+ 0x8818010B, // 0013 GETMBR R6 R0 K11
+ 0x5C1C0400, // 0014 MOVE R7 R2
+ 0x8820010C, // 0015 GETMBR R8 R0 K12
+ 0x7C100800, // 0016 CALL R4 4
+ 0x5C0C0800, // 0017 MOVE R3 R4
+ 0x70020007, // 0018 JMP #0021
+ 0x60100018, // 0019 GETGBL R4 G24
+ 0x8814010D, // 001A GETMBR R5 R0 K13
+ 0x8818010B, // 001B GETMBR R6 R0 K11
+ 0x5C1C0400, // 001C MOVE R7 R2
+ 0x8820010C, // 001D GETMBR R8 R0 K12
+ 0x88240109, // 001E GETMBR R9 R0 K9
+ 0x7C100A00, // 001F CALL R4 5
+ 0x5C0C0800, // 0020 MOVE R3 R4
+ 0x8C10010E, // 0021 GETMET R4 R0 K14
+ 0x5C180600, // 0022 MOVE R6 R3
+ 0x7C100400, // 0023 CALL R4 2
+ 0x6014000C, // 0024 GETGBL R5 G12
+ 0x5C180600, // 0025 MOVE R6 R3
+ 0x7C140200, // 0026 CALL R5 1
+ 0x20140805, // 0027 NE R5 R4 R5
+ 0x78160007, // 0028 JMPF R5 #0031
+ 0x8C14010F, // 0029 GETMET R5 R0 K15
+ 0x7C140200, // 002A CALL R5 1
+ 0x5415FFFB, // 002B LDINT R5 -4
+ 0x90022005, // 002C SETMBR R0 K16 R5
+ 0x5415FFFE, // 002D LDINT R5 -1
+ 0x90022205, // 002E SETMBR R0 K17 R5
+ 0x8C140112, // 002F GETMET R5 R0 K18
+ 0x7C140200, // 0030 CALL R5 1
+ 0x80000000, // 0031 RET 0
})
)
);
@@ -1004,11 +933,11 @@ be_local_closure(Matter_HTTP_async_event_http_headers_end, /* name */
/********************************************************************
-** Solidified function: event_http_header
+** Solidified function: event_http_status_code
********************************************************************/
-be_local_closure(Matter_HTTP_async_event_http_header, /* name */
+be_local_closure(Matter_HTTP_async_event_http_status_code, /* name */
be_nested_proto(
- 7, /* nstack */
+ 3, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1016,35 +945,14 @@ be_local_closure(Matter_HTTP_async_event_http_header, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(tolower),
- /* K2 */ be_nested_str_weak(transfer_X2Dencoding),
- /* K3 */ be_nested_str_weak(chunked),
- /* K4 */ be_nested_str_weak(is_chunked),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(status_code),
}),
- be_str_weak(event_http_header),
+ be_str_weak(event_http_status_code),
&be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x8C100701, // 0001 GETMET R4 R3 K1
- 0x5C180200, // 0002 MOVE R6 R1
- 0x7C100400, // 0003 CALL R4 2
- 0x5C040800, // 0004 MOVE R1 R4
- 0x8C100701, // 0005 GETMET R4 R3 K1
- 0x5C180400, // 0006 MOVE R6 R2
- 0x7C100400, // 0007 CALL R4 2
- 0x5C080800, // 0008 MOVE R2 R4
- 0x1C100302, // 0009 EQ R4 R1 K2
- 0x78120006, // 000A JMPF R4 #0012
- 0x8C100701, // 000B GETMET R4 R3 K1
- 0x5C180400, // 000C MOVE R6 R2
- 0x7C100400, // 000D CALL R4 2
- 0x1C100903, // 000E EQ R4 R4 K3
- 0x78120001, // 000F JMPF R4 #0012
- 0x50100200, // 0010 LDBOOL R4 1 0
- 0x90020804, // 0011 SETMBR R0 K4 R4
- 0x80000000, // 0012 RET 0
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
})
)
);
@@ -1052,32 +960,174 @@ be_local_closure(Matter_HTTP_async_event_http_header, /* name */
/********************************************************************
-** Solidified function: begin
+** Solidified function: parse_http_status_line
********************************************************************/
-be_local_closure(Matter_HTTP_async_begin, /* name */
+be_local_closure(Matter_HTTP_async_parse_http_status_line, /* name */
be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
+ 5, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(begin),
- /* K1 */ be_nested_str_weak(cmd),
+ ( &(const bvalue[12]) { /* constants */
+ /* K0 */ be_nested_str_weak(global),
+ /* K1 */ be_nested_str_weak(_re_http_status),
+ /* K2 */ be_nested_str_weak(match2),
+ /* K3 */ be_nested_str_weak(response),
+ /* K4 */ be_nested_str_weak(response_offset),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(status_code),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str_weak(phase),
+ /* K9 */ be_nested_str_weak(parse_http_headers),
+ /* K10 */ be_nested_str_weak(close),
+ /* K11 */ be_nested_str_weak(status),
}),
- be_str_weak(begin),
+ be_str_weak(parse_http_status_line),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x60080003, // 0000 GETGBL R2 G3
- 0x5C0C0000, // 0001 MOVE R3 R0
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
- 0x7C080200, // 0004 CALL R2 1
- 0x90020201, // 0005 SETMBR R0 K1 R1
- 0x80040400, // 0006 RET 1 R2
+ ( &(const binstruction[28]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x8C040302, // 0002 GETMET R1 R1 K2
+ 0x880C0103, // 0003 GETMBR R3 R0 K3
+ 0x88100104, // 0004 GETMBR R4 R0 K4
+ 0x7C040600, // 0005 CALL R1 3
+ 0x78060009, // 0006 JMPF R1 #0011
+ 0x94080305, // 0007 GETIDX R2 R1 K5
+ 0x90020802, // 0008 SETMBR R0 K4 R2
+ 0x60080009, // 0009 GETGBL R2 G9
+ 0x940C0307, // 000A GETIDX R3 R1 K7
+ 0x7C080200, // 000B CALL R2 1
+ 0x90020C02, // 000C SETMBR R0 K6 R2
+ 0x90021107, // 000D SETMBR R0 K8 K7
+ 0x8C080109, // 000E GETMET R2 R0 K9
+ 0x7C080200, // 000F CALL R2 1
+ 0x70020009, // 0010 JMP #001B
+ 0x6008000C, // 0011 GETGBL R2 G12
+ 0x880C0103, // 0012 GETMBR R3 R0 K3
+ 0x7C080200, // 0013 CALL R2 1
+ 0x540E0063, // 0014 LDINT R3 100
+ 0x24080403, // 0015 GT R2 R2 R3
+ 0x780A0003, // 0016 JMPF R2 #001B
+ 0x8C08010A, // 0017 GETMET R2 R0 K10
+ 0x7C080200, // 0018 CALL R2 1
+ 0x5409FFFB, // 0019 LDINT R2 -4
+ 0x90021602, // 001A SETMBR R0 K11 R2
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_http_timeout
+********************************************************************/
+be_local_closure(Matter_HTTP_async_event_http_timeout, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(event_http_timeout),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: receive
+********************************************************************/
+be_local_closure(Matter_HTTP_async_receive, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[15]) { /* constants */
+ /* K0 */ be_nested_str_weak(tcp_connected),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(millis),
+ /* K3 */ be_nested_str_weak(time_start),
+ /* K4 */ be_nested_str_weak(timeout),
+ /* K5 */ be_nested_str_weak(status),
+ /* K6 */ be_nested_str_weak(close),
+ /* K7 */ be_nested_str_weak(http_status),
+ /* K8 */ be_nested_str_weak(event_http_timeout),
+ /* K9 */ be_nested_str_weak(tcp),
+ /* K10 */ be_nested_str_weak(available),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(read),
+ /* K13 */ be_nested_str_weak(response),
+ /* K14 */ be_nested_str_weak(parse_http_response),
+ }),
+ be_str_weak(receive),
+ &be_const_str_solidified,
+ ( &(const binstruction[48]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x50080200, // 0001 LDBOOL R2 1 0
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060000, // 0003 JMPF R1 #0005
+ 0x80000200, // 0004 RET 0
+ 0xB8060200, // 0005 GETNGBL R1 K1
+ 0x8C040302, // 0006 GETMET R1 R1 K2
+ 0x7C040200, // 0007 CALL R1 1
+ 0x88080103, // 0008 GETMBR R2 R0 K3
+ 0x04040202, // 0009 SUB R1 R1 R2
+ 0x88080104, // 000A GETMBR R2 R0 K4
+ 0x24040202, // 000B GT R1 R1 R2
+ 0x78060008, // 000C JMPF R1 #0016
+ 0x5405FFFC, // 000D LDINT R1 -3
+ 0x90020A01, // 000E SETMBR R0 K5 R1
+ 0x8C040106, // 000F GETMET R1 R0 K6
+ 0x7C040200, // 0010 CALL R1 1
+ 0x5405FFFD, // 0011 LDINT R1 -2
+ 0x90020E01, // 0012 SETMBR R0 K7 R1
+ 0x8C040108, // 0013 GETMET R1 R0 K8
+ 0x7C040200, // 0014 CALL R1 1
+ 0x70020018, // 0015 JMP #002F
+ 0x88040109, // 0016 GETMBR R1 R0 K9
+ 0x8C04030A, // 0017 GETMET R1 R1 K10
+ 0x7C040200, // 0018 CALL R1 1
+ 0x5808000B, // 0019 LDCONST R2 K11
+ 0x240C030B, // 001A GT R3 R1 K11
+ 0x780E000E, // 001B JMPF R3 #002B
+ 0x880C0109, // 001C GETMBR R3 R0 K9
+ 0x8C0C070C, // 001D GETMET R3 R3 K12
+ 0x7C0C0200, // 001E CALL R3 1
+ 0x8810010D, // 001F GETMBR R4 R0 K13
+ 0x00100803, // 0020 ADD R4 R4 R3
+ 0x90021A04, // 0021 SETMBR R0 K13 R4
+ 0x6010000C, // 0022 GETGBL R4 G12
+ 0x5C140600, // 0023 MOVE R5 R3
+ 0x7C100200, // 0024 CALL R4 1
+ 0x00080404, // 0025 ADD R2 R2 R4
+ 0x88100109, // 0026 GETMBR R4 R0 K9
+ 0x8C10090A, // 0027 GETMET R4 R4 K10
+ 0x7C100200, // 0028 CALL R4 1
+ 0x5C040800, // 0029 MOVE R1 R4
+ 0x7001FFEE, // 002A JMP #001A
+ 0x240C050B, // 002B GT R3 R2 K11
+ 0x780E0001, // 002C JMPF R3 #002F
+ 0x8C0C010E, // 002D GETMET R3 R0 K14
+ 0x7C0C0200, // 002E CALL R3 1
+ 0x80000000, // 002F RET 0
})
)
);
@@ -1089,47 +1139,49 @@ be_local_closure(Matter_HTTP_async_begin, /* name */
********************************************************************/
extern const bclass be_class_Matter_TCP_async;
be_local_class(Matter_HTTP_async,
- 9,
+ 10,
&be_class_Matter_TCP_async,
- be_nested_map(37,
+ be_nested_map(39,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, 2), be_const_closure(Matter_HTTP_async_init_closure) },
- { be_const_key_weak(response, 28), be_const_var(1) },
- { be_const_key_weak(http_status, -1), be_const_var(5) },
- { be_const_key_weak(HTTP_STATUS_REGEX, 14), be_nested_str_weak(HTTP_X2F1_X5C_X2E_X5B0_X2D1_X5D_X20_X28_X5Cd_X2B_X29_X20_X2E_X2A_X3F_X0D_X0A) },
- { be_const_key_weak(HTTP_GET, 8), be_nested_str_weak(GET_X20_X25s_X20HTTP_X2F1_X2E1_X0D_X0AHost_X20_X25s_X3A_X25s_X0D_X0AConnection_X3A_X20close_X0D_X0A_X0D_X0A) },
- { be_const_key_weak(response_offset, -1), be_const_var(2) },
- { be_const_key_weak(compile_re, -1), be_const_closure(Matter_HTTP_async_compile_re_closure) },
- { be_const_key_weak(event_http_header, -1), be_const_closure(Matter_HTTP_async_event_http_header_closure) },
- { be_const_key_weak(event_http_status_code, -1), be_const_closure(Matter_HTTP_async_event_http_status_code_closure) },
- { be_const_key_weak(payload, -1), be_const_var(4) },
- { be_const_key_weak(event_available, -1), be_const_closure(Matter_HTTP_async_event_available_closure) },
- { be_const_key_weak(chunk_size, 16), be_const_var(8) },
- { be_const_key_weak(event_http_timeout, -1), be_const_closure(Matter_HTTP_async_event_http_timeout_closure) },
+ { be_const_key_weak(response, -1), be_const_var(2) },
{ be_const_key_weak(parse_http_payload, -1), be_const_closure(Matter_HTTP_async_parse_http_payload_closure) },
- { be_const_key_weak(parse_http_status_line, 29), be_const_closure(Matter_HTTP_async_parse_http_status_line_closure) },
- { be_const_key_weak(begin_sync, -1), be_const_closure(Matter_HTTP_async_begin_sync_closure) },
- { be_const_key_weak(cmd, -1), be_const_var(0) },
- { be_const_key_weak(event_http_failed, 13), be_const_closure(Matter_HTTP_async_event_http_failed_closure) },
- { be_const_key_weak(SPINLOCK, -1), be_const_int(5) },
- { be_const_key_weak(reset, 31), be_const_closure(Matter_HTTP_async_reset_closure) },
- { be_const_key_weak(send_http, -1), be_const_closure(Matter_HTTP_async_send_http_closure) },
- { be_const_key_weak(parse_http_response, 15), be_const_closure(Matter_HTTP_async_parse_http_response_closure) },
- { be_const_key_weak(event_http_finished, -1), be_const_closure(Matter_HTTP_async_event_http_finished_closure) },
+ { be_const_key_weak(receive, 10), be_const_closure(Matter_HTTP_async_receive_closure) },
+ { be_const_key_weak(event_http_finished, 22), be_const_closure(Matter_HTTP_async_event_http_finished_closure) },
{ be_const_key_weak(HTTP_BODY_REGEX, -1), be_nested_str_weak(_X0D_X0A) },
+ { be_const_key_weak(HTTP_GET_AUTH, -1), be_nested_str_weak(GET_X20_X25s_X20HTTP_X2F1_X2E1_X0D_X0AHost_X20_X25s_X3A_X25s_X0D_X0AAuthorization_X3A_X20Basic_X20_X25s_X0D_X0AConnection_X3A_X20close_X0D_X0A_X0D_X0A) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_HTTP_async_init_closure) },
+ { be_const_key_weak(response_offset, 23), be_const_var(3) },
+ { be_const_key_weak(parse_http_response, -1), be_const_closure(Matter_HTTP_async_parse_http_response_closure) },
{ be_const_key_weak(event_refused, -1), be_const_closure(Matter_HTTP_async_event_refused_closure) },
- { be_const_key_weak(HTTP_HEADER_REGEX, -1), be_nested_str_weak(_X28_X5BA_X2DZa_X2Dz0_X2D9_X2D_X5D_X2B_X29_X3A_X20_X28_X2E_X2A_X3F_X29_X0D_X0A) },
- { be_const_key_weak(is_chunked, 25), be_const_var(7) },
- { be_const_key_weak(event_established, 24), be_const_closure(Matter_HTTP_async_event_established_closure) },
- { be_const_key_weak(HTTP_CHUNK_REGEX, -1), be_nested_str_weak(_X0D_X0A_X28_X5BA_X2DFa_X2Df0_X2D9_X5D_X2B_X29_X5B_X20_X09_X5D_X2A_X2E_X2A_X3F_X0D_X0A) },
- { be_const_key_weak(receive, -1), be_const_closure(Matter_HTTP_async_receive_closure) },
- { be_const_key_weak(event_closed, -1), be_const_closure(Matter_HTTP_async_event_closed_closure) },
- { be_const_key_weak(phase, -1), be_const_var(6) },
- { be_const_key_weak(parse_http_headers, -1), be_const_closure(Matter_HTTP_async_parse_http_headers_closure) },
- { be_const_key_weak(event_timeout, 12), be_const_closure(Matter_HTTP_async_event_timeout_closure) },
+ { be_const_key_weak(event_http_timeout, -1), be_const_closure(Matter_HTTP_async_event_http_timeout_closure) },
+ { be_const_key_weak(HTTP_STATUS_REGEX, -1), be_nested_str_weak(HTTP_X2F1_X5C_X2E_X5B0_X2D1_X5D_X20_X28_X5Cd_X2B_X29_X20_X2E_X2A_X3F_X0D_X0A) },
+ { be_const_key_weak(cmd, -1), be_const_var(1) },
+ { be_const_key_weak(event_http_status_code, -1), be_const_closure(Matter_HTTP_async_event_http_status_code_closure) },
+ { be_const_key_weak(payload, -1), be_const_var(5) },
+ { be_const_key_weak(is_chunked, -1), be_const_var(8) },
+ { be_const_key_weak(HTTP_GET, -1), be_nested_str_weak(GET_X20_X25s_X20HTTP_X2F1_X2E1_X0D_X0AHost_X20_X25s_X3A_X25s_X0D_X0AConnection_X3A_X20close_X0D_X0A_X0D_X0A) },
+ { be_const_key_weak(chunk_size, 16), be_const_var(9) },
+ { be_const_key_weak(auth, 35), be_const_var(0) },
+ { be_const_key_weak(parse_http_headers, 26), be_const_closure(Matter_HTTP_async_parse_http_headers_closure) },
+ { be_const_key_weak(event_available, -1), be_const_closure(Matter_HTTP_async_event_available_closure) },
+ { be_const_key_weak(status_code, 11), be_const_var(4) },
+ { be_const_key_weak(phase, 36), be_const_var(7) },
{ be_const_key_weak(event_http_headers_end, -1), be_const_closure(Matter_HTTP_async_event_http_headers_end_closure) },
- { be_const_key_weak(status_code, 7), be_const_var(3) },
- { be_const_key_weak(begin, -1), be_const_closure(Matter_HTTP_async_begin_closure) },
+ { be_const_key_weak(reset, 31), be_const_closure(Matter_HTTP_async_reset_closure) },
+ { be_const_key_weak(begin_sync, -1), be_const_closure(Matter_HTTP_async_begin_sync_closure) },
+ { be_const_key_weak(send_http, -1), be_const_closure(Matter_HTTP_async_send_http_closure) },
+ { be_const_key_weak(event_timeout, 28), be_const_closure(Matter_HTTP_async_event_timeout_closure) },
+ { be_const_key_weak(HTTP_CHUNK_REGEX, -1), be_nested_str_weak(_X0D_X0A_X28_X5BA_X2DFa_X2Df0_X2D9_X5D_X2B_X29_X5B_X20_X09_X5D_X2A_X2E_X2A_X3F_X0D_X0A) },
+ { be_const_key_weak(compile_re, 7), be_const_closure(Matter_HTTP_async_compile_re_closure) },
+ { be_const_key_weak(HTTP_HEADER_REGEX, -1), be_nested_str_weak(_X28_X5BA_X2DZa_X2Dz0_X2D9_X2D_X5D_X2B_X29_X3A_X20_X28_X2E_X2A_X3F_X29_X0D_X0A) },
+ { be_const_key_weak(event_closed, 30), be_const_closure(Matter_HTTP_async_event_closed_closure) },
+ { be_const_key_weak(event_http_header, 14), be_const_closure(Matter_HTTP_async_event_http_header_closure) },
+ { be_const_key_weak(event_http_failed, 13), be_const_closure(Matter_HTTP_async_event_http_failed_closure) },
+ { be_const_key_weak(parse_http_status_line, -1), be_const_closure(Matter_HTTP_async_parse_http_status_line_closure) },
+ { be_const_key_weak(event_established, -1), be_const_closure(Matter_HTTP_async_event_established_closure) },
+ { be_const_key_weak(begin, 4), be_const_closure(Matter_HTTP_async_begin_closure) },
+ { be_const_key_weak(http_status, -1), be_const_var(6) },
+ { be_const_key_weak(SPINLOCK, 2), be_const_int(5) },
})),
be_str_weak(Matter_HTTP_async)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
index 64088807c..ffcbba55c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
@@ -3140,13 +3140,13 @@ be_local_closure(Matter_IM_process_read_request_solo, /* name */
0x4C280000, // 00B3 LDNIL R10
0x2028080A, // 00B4 NE R10 R4 R10
0x782A0013, // 00B5 JMPF R10 #00CA
- 0x8C280933, // 00B6 GETMET R10 R4 K51
- 0x7C280200, // 00B7 CALL R10 1
- 0xB82E2400, // 00B8 GETNGBL R11 K18
- 0x8C2C1726, // 00B9 GETMET R11 R11 K38
- 0x58340014, // 00BA LDCONST R13 K20
- 0x7C2C0400, // 00BB CALL R11 2
- 0x782E000B, // 00BC JMPF R11 #00C9
+ 0xB82A2400, // 00B6 GETNGBL R10 K18
+ 0x8C281526, // 00B7 GETMET R10 R10 K38
+ 0x58300014, // 00B8 LDCONST R12 K20
+ 0x7C280400, // 00B9 CALL R10 2
+ 0x782A000D, // 00BA JMPF R10 #00C9
+ 0x8C280933, // 00BB GETMET R10 R4 K51
+ 0x7C280200, // 00BC CALL R10 1
0xB82E2400, // 00BD GETNGBL R11 K18
0x8C2C170B, // 00BE GETMET R11 R11 K11
0x60340018, // 00BF GETGBL R13 G24
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h
index 6e5811686..6969dce2d 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h
@@ -7,41 +7,61 @@
extern const bclass be_class_Matter_Plugin;
/********************************************************************
-** Solidified function: ack_request
+** Solidified function: every_250ms
********************************************************************/
-be_local_closure(Matter_Plugin_ack_request, /* name */
+be_local_closure(Matter_Plugin_every_250ms, /* name */
be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
+ 4, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(msg),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(message_handler),
- /* K3 */ be_nested_str_weak(im),
- /* K4 */ be_nested_str_weak(send_ack_now),
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_nested_str_weak(update_next),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(jitter),
+ /* K3 */ be_nested_str_weak(UPDATE_TIME),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(time_reached),
+ /* K6 */ be_nested_str_weak(tick),
+ /* K7 */ be_nested_str_weak(device),
+ /* K8 */ be_nested_str_weak(update_shadow),
+ /* K9 */ be_nested_str_weak(millis),
}),
- be_str_weak(ack_request),
+ be_str_weak(every_250ms),
&be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x200C0403, // 0002 NE R3 R2 R3
- 0x780E0005, // 0003 JMPF R3 #000A
- 0x880C0101, // 0004 GETMBR R3 R0 K1
- 0x880C0702, // 0005 GETMBR R3 R3 K2
- 0x880C0703, // 0006 GETMBR R3 R3 K3
- 0x8C0C0704, // 0007 GETMET R3 R3 K4
- 0x5C140400, // 0008 MOVE R5 R2
- 0x7C0C0400, // 0009 CALL R3 2
- 0x4C0C0000, // 000A LDNIL R3
- 0x90060003, // 000B SETMBR R1 K0 R3
- 0x80000000, // 000C RET 0
+ ( &(const binstruction[28]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060005, // 0003 JMPF R1 #000A
+ 0xB8060200, // 0004 GETNGBL R1 K1
+ 0x8C040302, // 0005 GETMET R1 R1 K2
+ 0x880C0103, // 0006 GETMBR R3 R0 K3
+ 0x7C040400, // 0007 CALL R1 2
+ 0x90020001, // 0008 SETMBR R0 K0 R1
+ 0x70020010, // 0009 JMP #001B
+ 0xB8060800, // 000A GETNGBL R1 K4
+ 0x8C040305, // 000B GETMET R1 R1 K5
+ 0x880C0100, // 000C GETMBR R3 R0 K0
+ 0x7C040400, // 000D CALL R1 2
+ 0x7806000B, // 000E JMPF R1 #001B
+ 0x88040106, // 000F GETMBR R1 R0 K6
+ 0x88080107, // 0010 GETMBR R2 R0 K7
+ 0x88080506, // 0011 GETMBR R2 R2 K6
+ 0x20040202, // 0012 NE R1 R1 R2
+ 0x78060001, // 0013 JMPF R1 #0016
+ 0x8C040108, // 0014 GETMET R1 R0 K8
+ 0x7C040200, // 0015 CALL R1 1
+ 0xB8060800, // 0016 GETNGBL R1 K4
+ 0x8C040309, // 0017 GETMET R1 R1 K9
+ 0x880C0103, // 0018 GETMBR R3 R0 K3
+ 0x7C040400, // 0019 CALL R1 2
+ 0x90020001, // 001A SETMBR R0 K0 R1
+ 0x80000000, // 001B RET 0
})
)
);
@@ -76,42 +96,12 @@ be_local_closure(Matter_Plugin_consolidate_clusters, /* name */
/********************************************************************
-** Solidified function: update_shadow
+** Solidified function: subscribe_attribute
********************************************************************/
-be_local_closure(Matter_Plugin_update_shadow, /* name */
+be_local_closure(Matter_Plugin_subscribe_attribute, /* name */
be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tick),
- /* K1 */ be_nested_str_weak(device),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040101, // 0000 GETMBR R1 R0 K1
- 0x88040300, // 0001 GETMBR R1 R1 K0
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_sensors
-********************************************************************/
-be_local_closure(Matter_Plugin_parse_sensors, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
+ 6, /* nstack */
+ 5, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -119,10 +109,11 @@ be_local_closure(Matter_Plugin_parse_sensors, /* name */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
- be_str_weak(parse_sensors),
+ be_str_weak(subscribe_attribute),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x80040A00, // 0001 RET 1 R5
})
)
);
@@ -130,9 +121,116 @@ be_local_closure(Matter_Plugin_parse_sensors, /* name */
/********************************************************************
-** Solidified function: consolidate_update_commands
+** Solidified function: init
********************************************************************/
-be_local_closure(Matter_Plugin_consolidate_update_commands, /* name */
+be_local_closure(Matter_Plugin_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(endpoint),
+ /* K2 */ be_nested_str_weak(clusters),
+ /* K3 */ be_nested_str_weak(consolidate_clusters),
+ /* K4 */ be_nested_str_weak(parse_configuration),
+ /* K5 */ be_nested_str_weak(node_label),
+ /* K6 */ be_nested_str_weak(find),
+ /* K7 */ be_nested_str_weak(name),
+ /* K8 */ be_nested_str_weak(),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x8C100103, // 0002 GETMET R4 R0 K3
+ 0x7C100200, // 0003 CALL R4 1
+ 0x90020404, // 0004 SETMBR R0 K2 R4
+ 0x8C100104, // 0005 GETMET R4 R0 K4
+ 0x5C180600, // 0006 MOVE R6 R3
+ 0x7C100400, // 0007 CALL R4 2
+ 0x8C100706, // 0008 GETMET R4 R3 K6
+ 0x58180007, // 0009 LDCONST R6 K7
+ 0x581C0008, // 000A LDCONST R7 K8
+ 0x7C100600, // 000B CALL R4 3
+ 0x90020A04, // 000C SETMBR R0 K5 R4
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_name
+********************************************************************/
+be_local_closure(Matter_Plugin_set_name, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(node_label),
+ /* K1 */ be_nested_str_weak(attribute_updated),
+ }),
+ be_str_weak(set_name),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0003, // 0002 JMPF R2 #0007
+ 0x8C080101, // 0003 GETMET R2 R0 K1
+ 0x54120038, // 0004 LDINT R4 57
+ 0x54160004, // 0005 LDINT R5 5
+ 0x7C080600, // 0006 CALL R2 3
+ 0x90020001, // 0007 SETMBR R0 K0 R1
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: subscribe_event
+********************************************************************/
+be_local_closure(Matter_Plugin_subscribe_event, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(subscribe_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x80040A00, // 0001 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_name
+********************************************************************/
+be_local_closure(Matter_Plugin_get_name, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -143,9 +241,9 @@ be_local_closure(Matter_Plugin_consolidate_update_commands, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(UPDATE_COMMANDS),
+ /* K0 */ be_nested_str_weak(node_label),
}),
- be_str_weak(consolidate_update_commands),
+ be_str_weak(get_name),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
@@ -236,24 +334,39 @@ be_local_closure(Matter_Plugin_publish_command, /* name */
/********************************************************************
-** Solidified function: subscribe_attribute
+** Solidified function: ui_conf_to_string
********************************************************************/
-be_local_closure(Matter_Plugin_subscribe_attribute, /* name */
+be_local_closure(Matter_Plugin_ui_conf_to_string, /* name */
be_nested_proto(
- 6, /* nstack */
- 5, /* argc */
- 2, /* varg */
+ 9, /* nstack */
+ 2, /* argc */
+ 4, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(subscribe_attribute),
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_const_class(be_class_Matter_Plugin),
+ /* K1 */ be_nested_str_weak(ARG),
+ /* K2 */ be_nested_str_weak(find),
+ /* K3 */ be_nested_str_weak(),
+ }),
+ be_str_weak(ui_conf_to_string),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x80040A00, // 0001 RET 1 R5
+ ( &(const binstruction[12]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0x880C0101, // 0001 GETMBR R3 R0 K1
+ 0x780E0006, // 0002 JMPF R3 #000A
+ 0x60100008, // 0003 GETGBL R4 G8
+ 0x8C140302, // 0004 GETMET R5 R1 K2
+ 0x5C1C0600, // 0005 MOVE R7 R3
+ 0x58200003, // 0006 LDCONST R8 K3
+ 0x7C140600, // 0007 CALL R5 3
+ 0x7C100200, // 0008 CALL R4 1
+ 0x70020000, // 0009 JMP #000B
+ 0x58100003, // 000A LDCONST R4 K3
+ 0x80040800, // 000B RET 1 R4
})
)
);
@@ -273,7 +386,7 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
+ ( &(const bvalue[22]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -292,19 +405,21 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
/* K15 */ be_const_int(2),
/* K16 */ be_const_int(3),
/* K17 */ be_nested_str_weak(set),
- /* K18 */ be_nested_str_weak(BOOL),
- /* K19 */ be_nested_str_weak(read_attribute),
+ /* K18 */ be_nested_str_weak(get_attribute_list),
+ /* K19 */ be_nested_str_weak(FEATURE_MAPS),
+ /* K20 */ be_nested_str_weak(find),
+ /* K21 */ be_nested_str_weak(CLUSTER_REVISIONS),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[114]) { /* code */
+ ( &(const binstruction[160]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E001C, // 0004 LDINT R7 29
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0051, // 0006 JMPF R7 #0059
+ 0x781E0050, // 0006 JMPF R7 #0058
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E001B, // 0008 JMPF R7 #0025
0x8C1C0905, // 0009 GETMET R7 R4 K5
@@ -386,32 +501,78 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
0x5828000B, // 0055 LDCONST R10 K11
0x7C1C0600, // 0056 CALL R7 3
0x80040E00, // 0057 RET 1 R7
- 0x70020017, // 0058 JMP #0071
- 0x541E0038, // 0059 LDINT R7 57
- 0x1C1C0A07, // 005A EQ R7 R5 R7
- 0x781E0012, // 005B JMPF R7 #006F
- 0x541E0010, // 005C LDINT R7 17
- 0x1C1C0C07, // 005D EQ R7 R6 R7
- 0x781E0005, // 005E JMPF R7 #0065
- 0x8C1C0711, // 005F GETMET R7 R3 K17
- 0x88240912, // 0060 GETMBR R9 R4 K18
- 0x5828000B, // 0061 LDCONST R10 K11
- 0x7C1C0600, // 0062 CALL R7 3
- 0x80040E00, // 0063 RET 1 R7
- 0x70020008, // 0064 JMP #006E
- 0x601C0003, // 0065 GETGBL R7 G3
- 0x5C200000, // 0066 MOVE R8 R0
- 0x7C1C0200, // 0067 CALL R7 1
- 0x8C1C0F13, // 0068 GETMET R7 R7 K19
- 0x5C240200, // 0069 MOVE R9 R1
- 0x5C280400, // 006A MOVE R10 R2
- 0x5C2C0600, // 006B MOVE R11 R3
- 0x7C1C0800, // 006C CALL R7 4
- 0x80040E00, // 006D RET 1 R7
- 0x70020001, // 006E JMP #0071
- 0x4C1C0000, // 006F LDNIL R7
- 0x80040E00, // 0070 RET 1 R7
- 0x80000000, // 0071 RET 0
+ 0x541EFFF7, // 0058 LDINT R7 65528
+ 0x1C1C0C07, // 0059 EQ R7 R6 R7
+ 0x781E0003, // 005A JMPF R7 #005F
+ 0x8C1C0905, // 005B GETMET R7 R4 K5
+ 0x7C1C0200, // 005C CALL R7 1
+ 0x80040E00, // 005D RET 1 R7
+ 0x7002003F, // 005E JMP #009F
+ 0x541EFFF8, // 005F LDINT R7 65529
+ 0x1C1C0C07, // 0060 EQ R7 R6 R7
+ 0x781E0013, // 0061 JMPF R7 #0076
+ 0x8C1C0905, // 0062 GETMET R7 R4 K5
+ 0x7C1C0200, // 0063 CALL R7 1
+ 0x8C200112, // 0064 GETMET R8 R0 K18
+ 0x5C280A00, // 0065 MOVE R10 R5
+ 0x7C200400, // 0066 CALL R8 2
+ 0x58240004, // 0067 LDCONST R9 K4
+ 0x6028000C, // 0068 GETGBL R10 G12
+ 0x5C2C1000, // 0069 MOVE R11 R8
+ 0x7C280200, // 006A CALL R10 1
+ 0x1428120A, // 006B LT R10 R9 R10
+ 0x782A0006, // 006C JMPF R10 #0074
+ 0x8C280F09, // 006D GETMET R10 R7 K9
+ 0x4C300000, // 006E LDNIL R12
+ 0x8834090A, // 006F GETMBR R13 R4 K10
+ 0x94381009, // 0070 GETIDX R14 R8 R9
+ 0x7C280800, // 0071 CALL R10 4
+ 0x0024130B, // 0072 ADD R9 R9 K11
+ 0x7001FFF3, // 0073 JMP #0068
+ 0x80040E00, // 0074 RET 1 R7
+ 0x70020028, // 0075 JMP #009F
+ 0x541EFFF9, // 0076 LDINT R7 65530
+ 0x1C1C0C07, // 0077 EQ R7 R6 R7
+ 0x781E0003, // 0078 JMPF R7 #007D
+ 0x8C1C0905, // 0079 GETMET R7 R4 K5
+ 0x7C1C0200, // 007A CALL R7 1
+ 0x80040E00, // 007B RET 1 R7
+ 0x70020021, // 007C JMP #009F
+ 0x541EFFFA, // 007D LDINT R7 65531
+ 0x1C1C0C07, // 007E EQ R7 R6 R7
+ 0x781E0003, // 007F JMPF R7 #0084
+ 0x8C1C0905, // 0080 GETMET R7 R4 K5
+ 0x7C1C0200, // 0081 CALL R7 1
+ 0x80040E00, // 0082 RET 1 R7
+ 0x7002001A, // 0083 JMP #009F
+ 0x541EFFFB, // 0084 LDINT R7 65532
+ 0x1C1C0C07, // 0085 EQ R7 R6 R7
+ 0x781E000A, // 0086 JMPF R7 #0092
+ 0x881C0113, // 0087 GETMBR R7 R0 K19
+ 0x8C1C0F14, // 0088 GETMET R7 R7 K20
+ 0x5C240A00, // 0089 MOVE R9 R5
+ 0x58280004, // 008A LDCONST R10 K4
+ 0x7C1C0600, // 008B CALL R7 3
+ 0x8C200711, // 008C GETMET R8 R3 K17
+ 0x8828090E, // 008D GETMBR R10 R4 K14
+ 0x5C2C0E00, // 008E MOVE R11 R7
+ 0x7C200600, // 008F CALL R8 3
+ 0x80041000, // 0090 RET 1 R8
+ 0x7002000C, // 0091 JMP #009F
+ 0x541EFFFC, // 0092 LDINT R7 65533
+ 0x1C1C0C07, // 0093 EQ R7 R6 R7
+ 0x781E0009, // 0094 JMPF R7 #009F
+ 0x881C0115, // 0095 GETMBR R7 R0 K21
+ 0x8C1C0F14, // 0096 GETMET R7 R7 K20
+ 0x5C240A00, // 0097 MOVE R9 R5
+ 0x5828000B, // 0098 LDCONST R10 K11
+ 0x7C1C0600, // 0099 CALL R7 3
+ 0x8C200711, // 009A GETMET R8 R3 K17
+ 0x8828090E, // 009B GETMBR R10 R4 K14
+ 0x5C2C0E00, // 009C MOVE R11 R7
+ 0x7C200600, // 009D CALL R8 3
+ 0x80041000, // 009E RET 1 R8
+ 0x80000000, // 009F RET 0
})
)
);
@@ -419,34 +580,9 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
/********************************************************************
-** Solidified function: timed_request
+** Solidified function: ack_request
********************************************************************/
-be_local_closure(Matter_Plugin_timed_request, /* name */
- be_nested_proto(
- 5, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(timed_request),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x80040800, // 0001 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_name
-********************************************************************/
-be_local_closure(Matter_Plugin_set_name, /* name */
+be_local_closure(Matter_Plugin_ack_request, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
@@ -456,248 +592,29 @@ be_local_closure(Matter_Plugin_set_name, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(node_label),
- /* K1 */ be_nested_str_weak(attribute_updated),
- }),
- be_str_weak(set_name),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0003, // 0002 JMPF R2 #0007
- 0x8C080101, // 0003 GETMET R2 R0 K1
- 0x54120038, // 0004 LDINT R4 57
- 0x54160004, // 0005 LDINT R5 5
- 0x7C080600, // 0006 CALL R2 3
- 0x90020001, // 0007 SETMBR R0 K0 R1
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_local_device
-********************************************************************/
-be_local_closure(Matter_Plugin_is_local_device, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(is_local_device),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x50040200, // 0000 LDBOOL R1 1 0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_name
-********************************************************************/
-be_local_closure(Matter_Plugin_get_name, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(node_label),
- }),
- be_str_weak(get_name),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Plugin_init, /* name */
- be_nested_proto(
- 8, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_nested_str_weak(clusters),
- /* K3 */ be_nested_str_weak(consolidate_clusters),
- /* K4 */ be_nested_str_weak(parse_configuration),
- /* K5 */ be_nested_str_weak(node_label),
- /* K6 */ be_nested_str_weak(find),
- /* K7 */ be_nested_str_weak(name),
- /* K8 */ be_nested_str_weak(),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x8C100103, // 0002 GETMET R4 R0 K3
- 0x7C100200, // 0003 CALL R4 1
- 0x90020404, // 0004 SETMBR R0 K2 R4
- 0x8C100104, // 0005 GETMET R4 R0 K4
- 0x5C180600, // 0006 MOVE R6 R3
- 0x7C100400, // 0007 CALL R4 2
- 0x8C100706, // 0008 GETMET R4 R3 K6
- 0x58180007, // 0009 LDCONST R6 K7
- 0x581C0008, // 000A LDCONST R7 K8
- 0x7C100600, // 000B CALL R4 3
- 0x90020A04, // 000C SETMBR R0 K5 R4
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow_lazy
-********************************************************************/
-be_local_closure(Matter_Plugin_update_shadow_lazy, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tick),
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(msg),
/* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(update_shadow),
+ /* K2 */ be_nested_str_weak(message_handler),
+ /* K3 */ be_nested_str_weak(im),
+ /* K4 */ be_nested_str_weak(send_ack_now),
}),
- be_str_weak(update_shadow_lazy),
+ be_str_weak(ack_request),
&be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x88080500, // 0002 GETMBR R2 R2 K0
- 0x20040202, // 0003 NE R1 R1 R2
- 0x78060004, // 0004 JMPF R1 #000A
- 0x8C040102, // 0005 GETMET R1 R0 K2
- 0x7C040200, // 0006 CALL R1 1
- 0x88040101, // 0007 GETMBR R1 R0 K1
- 0x88040300, // 0008 GETMBR R1 R1 K0
- 0x90020001, // 0009 SETMBR R0 K0 R1
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-be_local_closure(Matter_Plugin_invoke_request, /* name */
- be_nested_proto(
- 5, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x80040800, // 0001 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: ui_string_to_conf
-********************************************************************/
-be_local_closure(Matter_Plugin_ui_string_to_conf, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Plugin),
- /* K1 */ be_nested_str_weak(ARG),
- /* K2 */ be_nested_str_weak(ARG_TYPE),
- }),
- be_str_weak(ui_string_to_conf),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x580C0000, // 0000 LDCONST R3 K0
- 0x88100101, // 0001 GETMBR R4 R0 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x780A0004, // 0003 JMPF R2 #0009
- 0x78120003, // 0004 JMPF R4 #0009
- 0x5C180A00, // 0005 MOVE R6 R5
- 0x5C1C0400, // 0006 MOVE R7 R2
- 0x7C180200, // 0007 CALL R6 1
- 0x98040806, // 0008 SETIDX R1 R4 R6
- 0x80040200, // 0009 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_endpoint
-********************************************************************/
-be_local_closure(Matter_Plugin_get_endpoint, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- }),
- be_str_weak(get_endpoint),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
+ ( &(const binstruction[13]) { /* code */
+ 0x88080300, // 0000 GETMBR R2 R1 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x200C0403, // 0002 NE R3 R2 R3
+ 0x780E0005, // 0003 JMPF R3 #000A
+ 0x880C0101, // 0004 GETMBR R3 R0 K1
+ 0x880C0702, // 0005 GETMBR R3 R3 K2
+ 0x880C0703, // 0006 GETMBR R3 R3 K3
+ 0x8C0C0704, // 0007 GETMET R3 R3 K4
+ 0x5C140400, // 0008 MOVE R5 R2
+ 0x7C0C0400, // 0009 CALL R3 2
+ 0x4C0C0000, // 000A LDNIL R3
+ 0x90060003, // 000B SETMBR R1 K0 R3
+ 0x80000000, // 000C RET 0
})
)
);
@@ -737,32 +654,6 @@ be_local_closure(Matter_Plugin_get_attribute_list, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: append_state_json
-********************************************************************/
-be_local_closure(Matter_Plugin_append_state_json, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- }),
- be_str_weak(append_state_json),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80060000, // 0000 RET 1 K0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: read_event
********************************************************************/
@@ -812,6 +703,120 @@ be_local_closure(Matter_Plugin_parse_configuration, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: consolidate_update_commands
+********************************************************************/
+be_local_closure(Matter_Plugin_consolidate_update_commands, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(UPDATE_COMMANDS),
+ }),
+ be_str_weak(consolidate_update_commands),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attribute_updated
+********************************************************************/
+be_local_closure(Matter_Plugin_attribute_updated, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(attribute_updated),
+ /* K2 */ be_nested_str_weak(endpoint),
+ }),
+ be_str_weak(attribute_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x88100100, // 0000 GETMBR R4 R0 K0
+ 0x8C100901, // 0001 GETMET R4 R4 K1
+ 0x88180102, // 0002 GETMBR R6 R0 K2
+ 0x5C1C0200, // 0003 MOVE R7 R1
+ 0x5C200400, // 0004 MOVE R8 R2
+ 0x5C240600, // 0005 MOVE R9 R3
+ 0x7C100A00, // 0006 CALL R4 5
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: timed_request
+********************************************************************/
+be_local_closure(Matter_Plugin_timed_request, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(timed_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x80040800, // 0001 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_endpoint
+********************************************************************/
+be_local_closure(Matter_Plugin_get_endpoint, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(endpoint),
+ }),
+ be_str_weak(get_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: state_json
********************************************************************/
@@ -870,12 +875,42 @@ be_local_closure(Matter_Plugin_state_json, /* name */
/********************************************************************
-** Solidified function: subscribe_event
+** Solidified function: update_shadow
********************************************************************/
-be_local_closure(Matter_Plugin_subscribe_event, /* name */
+be_local_closure(Matter_Plugin_update_shadow, /* name */
be_nested_proto(
- 6, /* nstack */
- 5, /* argc */
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(tick),
+ /* K1 */ be_nested_str_weak(device),
+ }),
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x88040300, // 0001 GETMBR R1 R1 K0
+ 0x90020001, // 0002 SETMBR R0 K0 R1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: write_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_write_attribute, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -883,11 +918,11 @@ be_local_closure(Matter_Plugin_subscribe_event, /* name */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
- be_str_weak(subscribe_event),
+ be_str_weak(write_attribute),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x80040A00, // 0001 RET 1 R5
+ 0x4C100000, // 0000 LDNIL R4
+ 0x80040800, // 0001 RET 1 R4
})
)
);
@@ -938,11 +973,36 @@ be_local_closure(Matter_Plugin_has, /* name */
/********************************************************************
-** Solidified function: every_250ms
+** Solidified function: invoke_request
********************************************************************/
-be_local_closure(Matter_Plugin_every_250ms, /* name */
+be_local_closure(Matter_Plugin_invoke_request, /* name */
be_nested_proto(
- 4, /* nstack */
+ 5, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x80040800, // 0001 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow_lazy
+********************************************************************/
+be_local_closure(Matter_Plugin_update_shadow_lazy, /* name */
+ be_nested_proto(
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -950,49 +1010,75 @@ be_local_closure(Matter_Plugin_every_250ms, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(update_next),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(jitter),
- /* K3 */ be_nested_str_weak(UPDATE_TIME),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(time_reached),
- /* K6 */ be_nested_str_weak(tick),
- /* K7 */ be_nested_str_weak(device),
- /* K8 */ be_nested_str_weak(update_shadow),
- /* K9 */ be_nested_str_weak(millis),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(tick),
+ /* K1 */ be_nested_str_weak(device),
+ /* K2 */ be_nested_str_weak(update_shadow),
}),
- be_str_weak(every_250ms),
+ be_str_weak(update_shadow_lazy),
&be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
+ ( &(const binstruction[11]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060005, // 0003 JMPF R1 #000A
- 0xB8060200, // 0004 GETNGBL R1 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
- 0x880C0103, // 0006 GETMBR R3 R0 K3
- 0x7C040400, // 0007 CALL R1 2
- 0x90020001, // 0008 SETMBR R0 K0 R1
- 0x70020010, // 0009 JMP #001B
- 0xB8060800, // 000A GETNGBL R1 K4
- 0x8C040305, // 000B GETMET R1 R1 K5
- 0x880C0100, // 000C GETMBR R3 R0 K0
- 0x7C040400, // 000D CALL R1 2
- 0x7806000B, // 000E JMPF R1 #001B
- 0x88040106, // 000F GETMBR R1 R0 K6
- 0x88080107, // 0010 GETMBR R2 R0 K7
- 0x88080506, // 0011 GETMBR R2 R2 K6
- 0x20040202, // 0012 NE R1 R1 R2
- 0x78060001, // 0013 JMPF R1 #0016
- 0x8C040108, // 0014 GETMET R1 R0 K8
- 0x7C040200, // 0015 CALL R1 1
- 0xB8060800, // 0016 GETNGBL R1 K4
- 0x8C040309, // 0017 GETMET R1 R1 K9
- 0x880C0103, // 0018 GETMBR R3 R0 K3
- 0x7C040400, // 0019 CALL R1 2
- 0x90020001, // 001A SETMBR R0 K0 R1
- 0x80000000, // 001B RET 0
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x88080500, // 0002 GETMBR R2 R2 K0
+ 0x20040202, // 0003 NE R1 R1 R2
+ 0x78060004, // 0004 JMPF R1 #000A
+ 0x8C040102, // 0005 GETMET R1 R0 K2
+ 0x7C040200, // 0006 CALL R1 1
+ 0x88040101, // 0007 GETMBR R1 R0 K1
+ 0x88040300, // 0008 GETMBR R1 R1 K0
+ 0x90020001, // 0009 SETMBR R0 K0 R1
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(Matter_Plugin_update_virtual, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: append_state_json
+********************************************************************/
+be_local_closure(Matter_Plugin_append_state_json, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(),
+ }),
+ be_str_weak(append_state_json),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80060000, // 0000 RET 1 K0
})
)
);
@@ -1050,12 +1136,12 @@ be_local_closure(Matter_Plugin_contains_attribute, /* name */
/********************************************************************
-** Solidified function: write_attribute
+** Solidified function: parse_sensors
********************************************************************/
-be_local_closure(Matter_Plugin_write_attribute, /* name */
+be_local_closure(Matter_Plugin_parse_sensors, /* name */
be_nested_proto(
- 5, /* nstack */
- 4, /* argc */
+ 2, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -1063,46 +1149,10 @@ be_local_closure(Matter_Plugin_write_attribute, /* name */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
- be_str_weak(write_attribute),
+ be_str_weak(parse_sensors),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x80040800, // 0001 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: attribute_updated
-********************************************************************/
-be_local_closure(Matter_Plugin_attribute_updated, /* name */
- be_nested_proto(
- 10, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(attribute_updated),
- /* K2 */ be_nested_str_weak(endpoint),
- }),
- be_str_weak(attribute_updated),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
- 0x88180102, // 0002 GETMBR R6 R0 K2
- 0x5C1C0200, // 0003 MOVE R7 R1
- 0x5C200400, // 0004 MOVE R8 R2
- 0x5C240600, // 0005 MOVE R9 R3
- 0x7C100A00, // 0006 CALL R4 5
- 0x80000000, // 0007 RET 0
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -1137,12 +1187,43 @@ be_local_closure(Matter_Plugin__X3Clambda_X3E, /* name */
/********************************************************************
-** Solidified function: update_virtual
+** Solidified function: contains_cluster
********************************************************************/
-be_local_closure(Matter_Plugin_update_virtual, /* name */
+be_local_closure(Matter_Plugin_contains_cluster, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(clusters),
+ /* K1 */ be_nested_str_weak(contains),
+ }),
+ be_str_weak(contains_cluster),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_local_device
+********************************************************************/
+be_local_closure(Matter_Plugin_is_local_device, /* name */
be_nested_proto(
2, /* nstack */
- 2, /* argc */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -1150,10 +1231,11 @@ be_local_closure(Matter_Plugin_update_virtual, /* name */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
- be_str_weak(update_virtual),
+ be_str_weak(is_local_device),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
+ ( &(const binstruction[ 2]) { /* code */
+ 0x50040200, // 0000 LDBOOL R1 1 0
+ 0x80040200, // 0001 RET 1 R1
})
)
);
@@ -1207,70 +1289,36 @@ be_local_closure(Matter_Plugin_get_cluster_list, /* name */
/********************************************************************
-** Solidified function: ui_conf_to_string
+** Solidified function: ui_string_to_conf
********************************************************************/
-be_local_closure(Matter_Plugin_ui_conf_to_string, /* name */
+be_local_closure(Matter_Plugin_ui_string_to_conf, /* name */
be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
+ 8, /* nstack */
+ 3, /* argc */
4, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
+ ( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_const_class(be_class_Matter_Plugin),
/* K1 */ be_nested_str_weak(ARG),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(),
+ /* K2 */ be_nested_str_weak(ARG_TYPE),
}),
- be_str_weak(ui_conf_to_string),
+ be_str_weak(ui_string_to_conf),
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x780E0006, // 0002 JMPF R3 #000A
- 0x60100008, // 0003 GETGBL R4 G8
- 0x8C140302, // 0004 GETMET R5 R1 K2
- 0x5C1C0600, // 0005 MOVE R7 R3
- 0x58200003, // 0006 LDCONST R8 K3
- 0x7C140600, // 0007 CALL R5 3
- 0x7C100200, // 0008 CALL R4 1
- 0x70020000, // 0009 JMP #000B
- 0x58100003, // 000A LDCONST R4 K3
- 0x80040800, // 000B RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: contains_cluster
-********************************************************************/
-be_local_closure(Matter_Plugin_contains_cluster, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(clusters),
- /* K1 */ be_nested_str_weak(contains),
- }),
- be_str_weak(contains_cluster),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
+ ( &(const binstruction[10]) { /* code */
+ 0x580C0000, // 0000 LDCONST R3 K0
+ 0x88100101, // 0001 GETMBR R4 R0 K1
+ 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0x780A0004, // 0003 JMPF R2 #0009
+ 0x78120003, // 0004 JMPF R4 #0009
+ 0x5C180A00, // 0005 MOVE R6 R5
+ 0x5C1C0400, // 0006 MOVE R7 R2
+ 0x7C180200, // 0007 CALL R6 1
+ 0x98040806, // 0008 SETIDX R1 R4 R6
+ 0x80040200, // 0009 RET 1 R1
})
)
);
@@ -1283,76 +1331,115 @@ be_local_closure(Matter_Plugin_contains_cluster, /* name */
be_local_class(Matter_Plugin,
6,
NULL,
- be_nested_map(47,
+ be_nested_map(50,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ack_request, -1), be_const_closure(Matter_Plugin_ack_request_closure) },
- { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_parse_sensors_closure) },
- { be_const_key_weak(ui_conf_to_string, 45), be_const_static_closure(Matter_Plugin_ui_conf_to_string_closure) },
- { be_const_key_weak(clusters, 27), be_const_var(3) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
- { be_const_key_weak(subscribe_attribute, -1), be_const_closure(Matter_Plugin_subscribe_attribute_closure) },
- { be_const_key_weak(timed_request, -1), be_const_closure(Matter_Plugin_timed_request_closure) },
- { be_const_key_weak(endpoint, -1), be_const_var(2) },
- { be_const_key_weak(DISPLAY_NAME, 1), be_nested_str_weak() },
- { be_const_key_weak(update_shadow, 2), be_const_closure(Matter_Plugin_update_shadow_closure) },
- { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin__X3Clambda_X3E_closure) },
- { be_const_key_weak(publish_command, -1), be_const_closure(Matter_Plugin_publish_command_closure) },
- { be_const_key_weak(consolidate_clusters, 5), be_const_closure(Matter_Plugin_consolidate_clusters_closure) },
- { be_const_key_weak(set_name, 42), be_const_closure(Matter_Plugin_set_name_closure) },
- { be_const_key_weak(write_attribute, 23), be_const_closure(Matter_Plugin_write_attribute_closure) },
- { be_const_key_weak(VIRTUAL, 6), be_const_bool(0) },
- { be_const_key_weak(node_label, 34), be_const_var(5) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Plugin_every_250ms_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak() },
+ { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(258, -1), be_const_int(5) },
+ { be_const_key_int(49, -1), be_const_int(4) },
+ })) ) } )) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) },
+ { be_const_key_weak(subscribe_attribute, 31), be_const_closure(Matter_Plugin_subscribe_attribute_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_init_closure) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(set_name, 36), be_const_closure(Matter_Plugin_set_name_closure) },
+ { be_const_key_weak(endpoint, -1), be_const_var(2) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(0,
+ ( (struct bvalue*) &(const bvalue[]) {
+ })) ) } )) },
+ { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) },
+ { be_const_key_weak(device, -1), be_const_var(1) },
+ { be_const_key_weak(subscribe_event, 3), be_const_closure(Matter_Plugin_subscribe_event_closure) },
+ { be_const_key_weak(read_event, -1), be_const_closure(Matter_Plugin_read_event_closure) },
+ { be_const_key_weak(publish_command, -1), be_const_closure(Matter_Plugin_publish_command_closure) },
+ { be_const_key_weak(is_local_device, 21), be_const_closure(Matter_Plugin_is_local_device_closure) },
+ { be_const_key_weak(CLUSTER_REVISIONS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(25,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(8, -1), be_const_int(5) },
+ { be_const_key_int(1026, -1), be_const_int(4) },
+ { be_const_key_int(1027, -1), be_const_int(3) },
+ { be_const_key_int(3, 20), be_const_int(4) },
+ { be_const_key_int(29, 17), be_const_int(2) },
+ { be_const_key_int(5, 9), be_const_int(5) },
+ { be_const_key_int(56, 11), be_const_int(2) },
+ { be_const_key_int(257, 10), be_const_int(7) },
+ { be_const_key_int(258, 0), be_const_int(5) },
+ { be_const_key_int(1030, -1), be_const_int(3) },
+ { be_const_key_int(1032, -1), be_const_int(3) },
+ { be_const_key_int(1031, 23), be_const_int(3) },
+ { be_const_key_int(512, -1), be_const_int(4) },
+ { be_const_key_int(63, 22), be_const_int(2) },
+ { be_const_key_int(514, -1), be_const_int(4) },
+ { be_const_key_int(40, -1), be_const_int(2) },
+ { be_const_key_int(516, -1), be_const_int(2) },
+ { be_const_key_int(1029, 21), be_const_int(3) },
+ { be_const_key_int(768, -1), be_const_int(6) },
+ { be_const_key_int(769, -1), be_const_int(4) },
+ { be_const_key_int(1028, -1), be_const_int(3) },
+ { be_const_key_int(4, -1), be_const_int(4) },
+ { be_const_key_int(513, -1), be_const_int(6) },
+ { be_const_key_int(6, -1), be_const_int(5) },
+ { be_const_key_int(1024, -1), be_const_int(3) },
+ })) ) } )) },
+ { be_const_key_weak(contains_cluster, -1), be_const_closure(Matter_Plugin_contains_cluster_closure) },
+ { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_parse_configuration_closure) },
+ { be_const_key_weak(get_attribute_list, 33), be_const_closure(Matter_Plugin_get_attribute_list_closure) },
+ { be_const_key_weak(consolidate_clusters, 13), be_const_closure(Matter_Plugin_consolidate_clusters_closure) },
+ { be_const_key_weak(parse_sensors, 23), be_const_closure(Matter_Plugin_parse_sensors_closure) },
+ { be_const_key_weak(contains_attribute, 29), be_const_closure(Matter_Plugin_contains_attribute_closure) },
+ { be_const_key_weak(append_state_json, -1), be_const_closure(Matter_Plugin_append_state_json_closure) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
- { be_const_key_int(57, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
})) ) } )) },
- })) ) } )) },
- { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(Matter_Plugin_update_shadow_lazy_closure) },
- { be_const_key_weak(update_next, 40), be_const_var(0) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_invoke_request_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_init_closure) },
- { be_const_key_weak(ARG, 14), be_nested_str_weak() },
- { be_const_key_weak(get_endpoint, 17), be_const_closure(Matter_Plugin_get_endpoint_closure) },
- { be_const_key_weak(get_name, 20), be_const_closure(Matter_Plugin_get_name_closure) },
- { be_const_key_weak(ui_string_to_conf, 10), be_const_static_closure(Matter_Plugin_ui_string_to_conf_closure) },
- { be_const_key_weak(tick, 18), be_const_var(4) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak() },
- { be_const_key_weak(append_state_json, -1), be_const_closure(Matter_Plugin_append_state_json_closure) },
- { be_const_key_weak(read_event, -1), be_const_closure(Matter_Plugin_read_event_closure) },
- { be_const_key_weak(device, -1), be_const_var(1) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_parse_configuration_closure) },
- { be_const_key_weak(state_json, -1), be_const_closure(Matter_Plugin_state_json_closure) },
- { be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) },
- { be_const_key_weak(get_attribute_list, -1), be_const_closure(Matter_Plugin_get_attribute_list_closure) },
- { be_const_key_weak(read_attribute, 26), be_const_closure(Matter_Plugin_read_attribute_closure) },
- { be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Plugin_every_250ms_closure) },
- { be_const_key_weak(contains_attribute, -1), be_const_closure(Matter_Plugin_contains_attribute_closure) },
- { be_const_key_weak(is_local_device, 13), be_const_closure(Matter_Plugin_is_local_device_closure) },
{ be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Plugin_attribute_updated_closure) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(0,
- ( (struct bvalue*) &(const bvalue[]) {
+ { be_const_key_weak(timed_request, 41), be_const_closure(Matter_Plugin_timed_request_closure) },
+ { be_const_key_weak(get_endpoint, -1), be_const_closure(Matter_Plugin_get_endpoint_closure) },
+ { be_const_key_weak(update_next, 43), be_const_var(0) },
+ { be_const_key_weak(TYPE, 32), be_nested_str_weak() },
+ { be_const_key_weak(ui_conf_to_string, 28), be_const_static_closure(Matter_Plugin_ui_conf_to_string_closure) },
+ { be_const_key_weak(tick, -1), be_const_var(4) },
+ { be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_update_shadow_closure) },
+ { be_const_key_weak(ARG, 18), be_nested_str_weak() },
+ { be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) },
+ { be_const_key_weak(write_attribute, 34), be_const_closure(Matter_Plugin_write_attribute_closure) },
+ { be_const_key_weak(COMMANDS, 42), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(29, -1), be_const_nil() },
})) ) } )) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_invoke_request_closure) },
+ { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(Matter_Plugin_update_shadow_lazy_closure) },
+ { be_const_key_weak(state_json, 22), be_const_closure(Matter_Plugin_state_json_closure) },
{ be_const_key_weak(update_virtual, -1), be_const_closure(Matter_Plugin_update_virtual_closure) },
+ { be_const_key_weak(clusters, -1), be_const_var(3) },
+ { be_const_key_weak(get_name, -1), be_const_closure(Matter_Plugin_get_name_closure) },
+ { be_const_key_weak(node_label, -1), be_const_var(5) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin__X3Clambda_X3E_closure) },
+ { be_const_key_weak(ARG_HINT, 17), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(ack_request, 15), be_const_closure(Matter_Plugin_ack_request_closure) },
{ be_const_key_weak(get_cluster_list, -1), be_const_closure(Matter_Plugin_get_cluster_list_closure) },
- { be_const_key_weak(consolidate_update_commands, -1), be_const_closure(Matter_Plugin_consolidate_update_commands_closure) },
- { be_const_key_weak(contains_cluster, -1), be_const_closure(Matter_Plugin_contains_cluster_closure) },
+ { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(Matter_Plugin_ui_string_to_conf_closure) },
+ { be_const_key_weak(consolidate_update_commands, 2), be_const_closure(Matter_Plugin_consolidate_update_commands_closure) },
})),
be_str_weak(Matter_Plugin)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h
index c9c2db74a..03e9ed0d0 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h
@@ -19,78 +19,176 @@ be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
+ ( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(Matter_TLV_array),
- /* K6 */ be_nested_str_weak(device),
- /* K7 */ be_nested_str_weak(get_active_endpoints),
- /* K8 */ be_nested_str_weak(add_TLV),
- /* K9 */ be_nested_str_weak(U2),
- /* K10 */ be_nested_str_weak(stop_iteration),
- /* K11 */ be_nested_str_weak(read_attribute),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(set),
+ /* K7 */ be_nested_str_weak(U2),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(U1),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_nested_str_weak(Matter_TLV_array),
+ /* K12 */ be_nested_str_weak(add_TLV),
+ /* K13 */ be_nested_str_weak(device),
+ /* K14 */ be_nested_str_weak(get_active_endpoints),
+ /* K15 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K16 */ be_nested_str_weak(stop_iteration),
+ /* K17 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[55]) { /* code */
+ ( &(const binstruction[73]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E001C, // 0004 LDINT R7 29
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0025, // 0006 JMPF R7 #002D
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0019, // 0008 JMPF R7 #0023
- 0x8C1C0905, // 0009 GETMET R7 R4 K5
- 0x7C1C0200, // 000A CALL R7 1
- 0x88200106, // 000B GETMBR R8 R0 K6
- 0x8C201107, // 000C GETMET R8 R8 K7
- 0x50280200, // 000D LDBOOL R10 1 0
- 0x7C200400, // 000E CALL R8 2
- 0x60240010, // 000F GETGBL R9 G16
- 0x5C281000, // 0010 MOVE R10 R8
- 0x7C240200, // 0011 CALL R9 1
- 0xA802000A, // 0012 EXBLK 0 #001E
- 0x5C281200, // 0013 MOVE R10 R9
- 0x7C280000, // 0014 CALL R10 0
- 0x542EFEFF, // 0015 LDINT R11 65280
- 0x142C140B, // 0016 LT R11 R10 R11
- 0x782E0004, // 0017 JMPF R11 #001D
- 0x8C2C0F08, // 0018 GETMET R11 R7 K8
- 0x4C340000, // 0019 LDNIL R13
- 0x88380909, // 001A GETMBR R14 R4 K9
- 0x5C3C1400, // 001B MOVE R15 R10
- 0x7C2C0800, // 001C CALL R11 4
- 0x7001FFF4, // 001D JMP #0013
- 0x5824000A, // 001E LDCONST R9 K10
- 0xAC240200, // 001F CATCH R9 1 0
- 0xB0080000, // 0020 RAISE 2 R0 R0
- 0x80040E00, // 0021 RET 1 R7
- 0x70020008, // 0022 JMP #002C
- 0x601C0003, // 0023 GETGBL R7 G3
- 0x5C200000, // 0024 MOVE R8 R0
- 0x7C1C0200, // 0025 CALL R7 1
- 0x8C1C0F0B, // 0026 GETMET R7 R7 K11
- 0x5C240200, // 0027 MOVE R9 R1
- 0x5C280400, // 0028 MOVE R10 R2
- 0x5C2C0600, // 0029 MOVE R11 R3
- 0x7C1C0800, // 002A CALL R7 4
- 0x80040E00, // 002B RET 1 R7
- 0x70020008, // 002C JMP #0036
- 0x601C0003, // 002D GETGBL R7 G3
- 0x5C200000, // 002E MOVE R8 R0
- 0x7C1C0200, // 002F CALL R7 1
- 0x8C1C0F0B, // 0030 GETMET R7 R7 K11
- 0x5C240200, // 0031 MOVE R9 R1
- 0x5C280400, // 0032 MOVE R10 R2
- 0x5C2C0600, // 0033 MOVE R11 R3
- 0x7C1C0800, // 0034 CALL R7 4
- 0x80040E00, // 0035 RET 1 R7
- 0x80000000, // 0036 RET 0
+ 0x1C1C0B04, // 0004 EQ R7 R5 K4
+ 0x781E000F, // 0005 JMPF R7 #0016
+ 0x1C1C0D05, // 0006 EQ R7 R6 K5
+ 0x781E0005, // 0007 JMPF R7 #000E
+ 0x8C1C0706, // 0008 GETMET R7 R3 K6
+ 0x88240907, // 0009 GETMBR R9 R4 K7
+ 0x58280005, // 000A LDCONST R10 K5
+ 0x7C1C0600, // 000B CALL R7 3
+ 0x80040E00, // 000C RET 1 R7
+ 0x70020006, // 000D JMP #0015
+ 0x1C1C0D08, // 000E EQ R7 R6 K8
+ 0x781E0004, // 000F JMPF R7 #0015
+ 0x8C1C0706, // 0010 GETMET R7 R3 K6
+ 0x88240909, // 0011 GETMBR R9 R4 K9
+ 0x58280005, // 0012 LDCONST R10 K5
+ 0x7C1C0600, // 0013 CALL R7 3
+ 0x80040E00, // 0014 RET 1 R7
+ 0x70020029, // 0015 JMP #0040
+ 0x541E001C, // 0016 LDINT R7 29
+ 0x1C1C0A07, // 0017 EQ R7 R5 R7
+ 0x781E0026, // 0018 JMPF R7 #0040
+ 0x1C1C0D0A, // 0019 EQ R7 R6 K10
+ 0x781E0008, // 001A JMPF R7 #0024
+ 0x8C1C090B, // 001B GETMET R7 R4 K11
+ 0x7C1C0200, // 001C CALL R7 1
+ 0x8C200F0C, // 001D GETMET R8 R7 K12
+ 0x4C280000, // 001E LDNIL R10
+ 0x882C0907, // 001F GETMBR R11 R4 K7
+ 0x5432001D, // 0020 LDINT R12 30
+ 0x7C200800, // 0021 CALL R8 4
+ 0x80040E00, // 0022 RET 1 R7
+ 0x7002001B, // 0023 JMP #0040
+ 0x1C1C0D04, // 0024 EQ R7 R6 K4
+ 0x781E0019, // 0025 JMPF R7 #0040
+ 0x8C1C090B, // 0026 GETMET R7 R4 K11
+ 0x7C1C0200, // 0027 CALL R7 1
+ 0x8820010D, // 0028 GETMBR R8 R0 K13
+ 0x8C20110E, // 0029 GETMET R8 R8 K14
+ 0x50280200, // 002A LDBOOL R10 1 0
+ 0x7C200400, // 002B CALL R8 2
+ 0x60240010, // 002C GETGBL R9 G16
+ 0x5C281000, // 002D MOVE R10 R8
+ 0x7C240200, // 002E CALL R9 1
+ 0xA802000B, // 002F EXBLK 0 #003C
+ 0x5C281200, // 0030 MOVE R10 R9
+ 0x7C280000, // 0031 CALL R10 0
+ 0xB82E0000, // 0032 GETNGBL R11 K0
+ 0x882C170F, // 0033 GETMBR R11 R11 K15
+ 0x202C140B, // 0034 NE R11 R10 R11
+ 0x782E0004, // 0035 JMPF R11 #003B
+ 0x8C2C0F0C, // 0036 GETMET R11 R7 K12
+ 0x4C340000, // 0037 LDNIL R13
+ 0x88380907, // 0038 GETMBR R14 R4 K7
+ 0x5C3C1400, // 0039 MOVE R15 R10
+ 0x7C2C0800, // 003A CALL R11 4
+ 0x7001FFF3, // 003B JMP #0030
+ 0x58240010, // 003C LDCONST R9 K16
+ 0xAC240200, // 003D CATCH R9 1 0
+ 0xB0080000, // 003E RAISE 2 R0 R0
+ 0x80040E00, // 003F RET 1 R7
+ 0x601C0003, // 0040 GETGBL R7 G3
+ 0x5C200000, // 0041 MOVE R8 R0
+ 0x7C1C0200, // 0042 CALL R7 1
+ 0x8C1C0F11, // 0043 GETMET R7 R7 K17
+ 0x5C240200, // 0044 MOVE R9 R1
+ 0x5C280400, // 0045 MOVE R10 R2
+ 0x5C2C0600, // 0046 MOVE R11 R3
+ 0x7C1C0800, // 0047 CALL R7 4
+ 0x80040E00, // 0048 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(Matter_Plugin_Aggregator_invoke_request, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(command),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K8 */ be_nested_str_weak(add_TLV),
+ /* K9 */ be_nested_str_weak(U2),
+ /* K10 */ be_nested_str_weak(invoke_request),
+ }),
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[39]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140702, // 0002 GETMBR R5 R3 K2
+ 0x88180703, // 0003 GETMBR R6 R3 K3
+ 0x1C1C0B04, // 0004 EQ R7 R5 K4
+ 0x781E0016, // 0005 JMPF R7 #001D
+ 0x1C1C0D05, // 0006 EQ R7 R6 K5
+ 0x781E0002, // 0007 JMPF R7 #000B
+ 0x501C0200, // 0008 LDBOOL R7 1 0
+ 0x80040E00, // 0009 RET 1 R7
+ 0x70020010, // 000A JMP #001C
+ 0x1C1C0D06, // 000B EQ R7 R6 K6
+ 0x781E0009, // 000C JMPF R7 #0017
+ 0x8C1C0907, // 000D GETMET R7 R4 K7
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x8C200F08, // 000F GETMET R8 R7 K8
+ 0x58280005, // 0010 LDCONST R10 K5
+ 0x882C0909, // 0011 GETMBR R11 R4 K9
+ 0x58300005, // 0012 LDCONST R12 K5
+ 0x7C200800, // 0013 CALL R8 4
+ 0x900E0705, // 0014 SETMBR R3 K3 K5
+ 0x80040E00, // 0015 RET 1 R7
+ 0x70020004, // 0016 JMP #001C
+ 0x541E003F, // 0017 LDINT R7 64
+ 0x1C1C0C07, // 0018 EQ R7 R6 R7
+ 0x781E0001, // 0019 JMPF R7 #001C
+ 0x501C0200, // 001A LDBOOL R7 1 0
+ 0x80040E00, // 001B RET 1 R7
+ 0x70020008, // 001C JMP #0026
+ 0x601C0003, // 001D GETGBL R7 G3
+ 0x5C200000, // 001E MOVE R8 R0
+ 0x7C1C0200, // 001F CALL R7 1
+ 0x8C1C0F0A, // 0020 GETMET R7 R7 K10
+ 0x5C240200, // 0021 MOVE R9 R1
+ 0x5C280400, // 0022 MOVE R10 R2
+ 0x5C2C0600, // 0023 MOVE R11 R3
+ 0x7C1C0800, // 0024 CALL R7 4
+ 0x80040E00, // 0025 RET 1 R7
+ 0x80000000, // 0026 RET 0
})
)
);
@@ -104,16 +202,47 @@ extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Aggregator,
0,
&be_class_Matter_Plugin,
- be_nested_map(4,
+ be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Aggregator_read_attribute_closure) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(aggregator) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(14, -1), be_const_int(1) },
})) ) } )) },
- { be_const_key_weak(TYPE, 3), be_nested_str_weak(aggregator) },
- { be_const_key_weak(read_attribute, 0), be_const_closure(Matter_Plugin_Aggregator_read_attribute_closure) },
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Aggregator) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(10,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(2),
+ be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(3, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(8,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ })) ) } )) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Aggregator_invoke_request_closure) },
})),
be_str_weak(Matter_Plugin_Aggregator)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h
index b43be5a83..b2ab1687f 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h
@@ -19,7 +19,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[37]) { /* constants */
+ ( &(const bvalue[36]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -30,43 +30,42 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
/* K7 */ be_nested_str_weak(U2),
/* K8 */ be_const_int(1),
/* K9 */ be_nested_str_weak(U1),
- /* K10 */ be_nested_str_weak(U4),
- /* K11 */ be_nested_str_weak(Matter_TLV_array),
- /* K12 */ be_nested_str_weak(TYPES),
- /* K13 */ be_nested_str_weak(keys),
- /* K14 */ be_nested_str_weak(add_struct),
- /* K15 */ be_nested_str_weak(add_TLV),
- /* K16 */ be_nested_str_weak(stop_iteration),
- /* K17 */ be_nested_str_weak(NON_BRIDGE_VENDOR),
- /* K18 */ be_nested_str_weak(find),
- /* K19 */ be_nested_str_weak(get_admin_vendor),
- /* K20 */ be_nested_str_weak(device),
- /* K21 */ be_nested_str_weak(disable_bridge_mode),
- /* K22 */ be_nested_str_weak(read_attribute),
- /* K23 */ be_nested_str_weak(string),
- /* K24 */ be_nested_str_weak(UTF1),
- /* K25 */ be_nested_str_weak(tasmota),
- /* K26 */ be_nested_str_weak(cmd),
- /* K27 */ be_nested_str_weak(DeviceName),
- /* K28 */ be_nested_str_weak(get_name),
- /* K29 */ be_nested_str_weak(Status_X202),
- /* K30 */ be_nested_str_weak(StatusFWR),
- /* K31 */ be_nested_str_weak(Version),
- /* K32 */ be_nested_str_weak(_X28),
- /* K33 */ be_nested_str_weak(wifi),
- /* K34 */ be_nested_str_weak(mac),
- /* K35 */ be_nested_str_weak(),
- /* K36 */ be_nested_str_weak(BOOL),
+ /* K10 */ be_nested_str_weak(Matter_TLV_array),
+ /* K11 */ be_nested_str_weak(TYPES),
+ /* K12 */ be_nested_str_weak(keys),
+ /* K13 */ be_nested_str_weak(add_struct),
+ /* K14 */ be_nested_str_weak(add_TLV),
+ /* K15 */ be_nested_str_weak(stop_iteration),
+ /* K16 */ be_nested_str_weak(NON_BRIDGE_VENDOR),
+ /* K17 */ be_nested_str_weak(find),
+ /* K18 */ be_nested_str_weak(get_admin_vendor),
+ /* K19 */ be_nested_str_weak(device),
+ /* K20 */ be_nested_str_weak(disable_bridge_mode),
+ /* K21 */ be_nested_str_weak(string),
+ /* K22 */ be_nested_str_weak(UTF1),
+ /* K23 */ be_nested_str_weak(tasmota),
+ /* K24 */ be_nested_str_weak(cmd),
+ /* K25 */ be_nested_str_weak(DeviceName),
+ /* K26 */ be_nested_str_weak(get_name),
+ /* K27 */ be_nested_str_weak(Status_X202),
+ /* K28 */ be_nested_str_weak(StatusFWR),
+ /* K29 */ be_nested_str_weak(Version),
+ /* K30 */ be_nested_str_weak(_X28),
+ /* K31 */ be_nested_str_weak(wifi),
+ /* K32 */ be_nested_str_weak(mac),
+ /* K33 */ be_nested_str_weak(),
+ /* K34 */ be_nested_str_weak(BOOL),
+ /* K35 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[264]) { /* code */
+ ( &(const binstruction[189]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x1C1C0B04, // 0004 EQ R7 R5 K4
- 0x781E0021, // 0005 JMPF R7 #0028
+ 0x781E000F, // 0005 JMPF R7 #0016
0x1C1C0D05, // 0006 EQ R7 R6 K5
0x781E0005, // 0007 JMPF R7 #000E
0x8C1C0706, // 0008 GETMET R7 R3 K6
@@ -74,257 +73,182 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x58280005, // 000A LDCONST R10 K5
0x7C1C0600, // 000B CALL R7 3
0x80040E00, // 000C RET 1 R7
- 0x70020018, // 000D JMP #0027
+ 0x70020006, // 000D JMP #0015
0x1C1C0D08, // 000E EQ R7 R6 K8
- 0x781E0005, // 000F JMPF R7 #0016
+ 0x781E0004, // 000F JMPF R7 #0015
0x8C1C0706, // 0010 GETMET R7 R3 K6
0x88240909, // 0011 GETMBR R9 R4 K9
0x58280005, // 0012 LDCONST R10 K5
0x7C1C0600, // 0013 CALL R7 3
0x80040E00, // 0014 RET 1 R7
- 0x70020010, // 0015 JMP #0027
- 0x541EFFFB, // 0016 LDINT R7 65532
- 0x1C1C0C07, // 0017 EQ R7 R6 R7
- 0x781E0005, // 0018 JMPF R7 #001F
- 0x8C1C0706, // 0019 GETMET R7 R3 K6
- 0x8824090A, // 001A GETMBR R9 R4 K10
- 0x58280005, // 001B LDCONST R10 K5
- 0x7C1C0600, // 001C CALL R7 3
- 0x80040E00, // 001D RET 1 R7
- 0x70020007, // 001E JMP #0027
- 0x541EFFFC, // 001F LDINT R7 65533
- 0x1C1C0C07, // 0020 EQ R7 R6 R7
- 0x781E0004, // 0021 JMPF R7 #0027
- 0x8C1C0706, // 0022 GETMET R7 R3 K6
- 0x8824090A, // 0023 GETMBR R9 R4 K10
- 0x542A0003, // 0024 LDINT R10 4
- 0x7C1C0600, // 0025 CALL R7 3
- 0x80040E00, // 0026 RET 1 R7
- 0x700200DE, // 0027 JMP #0107
- 0x541E0003, // 0028 LDINT R7 4
- 0x1C1C0A07, // 0029 EQ R7 R5 R7
- 0x781E0016, // 002A JMPF R7 #0042
- 0x1C1C0D05, // 002B EQ R7 R6 K5
- 0x781E0002, // 002C JMPF R7 #0030
- 0x4C1C0000, // 002D LDNIL R7
- 0x80040E00, // 002E RET 1 R7
- 0x70020010, // 002F JMP #0041
- 0x541EFFFB, // 0030 LDINT R7 65532
- 0x1C1C0C07, // 0031 EQ R7 R6 R7
- 0x781E0005, // 0032 JMPF R7 #0039
- 0x8C1C0706, // 0033 GETMET R7 R3 K6
- 0x8824090A, // 0034 GETMBR R9 R4 K10
- 0x58280005, // 0035 LDCONST R10 K5
- 0x7C1C0600, // 0036 CALL R7 3
- 0x80040E00, // 0037 RET 1 R7
- 0x70020007, // 0038 JMP #0041
- 0x541EFFFC, // 0039 LDINT R7 65533
- 0x1C1C0C07, // 003A EQ R7 R6 R7
- 0x781E0004, // 003B JMPF R7 #0041
- 0x8C1C0706, // 003C GETMET R7 R3 K6
- 0x8824090A, // 003D GETMBR R9 R4 K10
- 0x542A0003, // 003E LDINT R10 4
- 0x7C1C0600, // 003F CALL R7 3
- 0x80040E00, // 0040 RET 1 R7
- 0x700200C4, // 0041 JMP #0107
- 0x541E0004, // 0042 LDINT R7 5
- 0x1C1C0A07, // 0043 EQ R7 R5 R7
- 0x781E0011, // 0044 JMPF R7 #0057
- 0x541EFFFB, // 0045 LDINT R7 65532
- 0x1C1C0C07, // 0046 EQ R7 R6 R7
- 0x781E0005, // 0047 JMPF R7 #004E
- 0x8C1C0706, // 0048 GETMET R7 R3 K6
- 0x8824090A, // 0049 GETMBR R9 R4 K10
- 0x58280005, // 004A LDCONST R10 K5
- 0x7C1C0600, // 004B CALL R7 3
- 0x80040E00, // 004C RET 1 R7
- 0x70020007, // 004D JMP #0056
- 0x541EFFFC, // 004E LDINT R7 65533
- 0x1C1C0C07, // 004F EQ R7 R6 R7
- 0x781E0004, // 0050 JMPF R7 #0056
- 0x8C1C0706, // 0051 GETMET R7 R3 K6
- 0x8824090A, // 0052 GETMBR R9 R4 K10
- 0x542A0003, // 0053 LDINT R10 4
- 0x7C1C0600, // 0054 CALL R7 3
- 0x80040E00, // 0055 RET 1 R7
- 0x700200AF, // 0056 JMP #0107
- 0x541E001C, // 0057 LDINT R7 29
- 0x1C1C0A07, // 0058 EQ R7 R5 R7
- 0x781E003E, // 0059 JMPF R7 #0099
- 0x1C1C0D05, // 005A EQ R7 R6 K5
- 0x781E0032, // 005B JMPF R7 #008F
- 0x8C1C090B, // 005C GETMET R7 R4 K11
- 0x7C1C0200, // 005D CALL R7 1
- 0x8820010C, // 005E GETMBR R8 R0 K12
- 0x60240010, // 005F GETGBL R9 G16
- 0x8C28110D, // 0060 GETMET R10 R8 K13
- 0x7C280200, // 0061 CALL R10 1
- 0x7C240200, // 0062 CALL R9 1
- 0xA802000E, // 0063 EXBLK 0 #0073
- 0x5C281200, // 0064 MOVE R10 R9
- 0x7C280000, // 0065 CALL R10 0
- 0x8C2C0F0E, // 0066 GETMET R11 R7 K14
- 0x7C2C0200, // 0067 CALL R11 1
- 0x8C30170F, // 0068 GETMET R12 R11 K15
- 0x58380005, // 0069 LDCONST R14 K5
- 0x883C0907, // 006A GETMBR R15 R4 K7
- 0x5C401400, // 006B MOVE R16 R10
- 0x7C300800, // 006C CALL R12 4
- 0x8C30170F, // 006D GETMET R12 R11 K15
- 0x58380008, // 006E LDCONST R14 K8
- 0x883C0907, // 006F GETMBR R15 R4 K7
- 0x9440100A, // 0070 GETIDX R16 R8 R10
- 0x7C300800, // 0071 CALL R12 4
- 0x7001FFF0, // 0072 JMP #0064
- 0x58240010, // 0073 LDCONST R9 K16
- 0xAC240200, // 0074 CATCH R9 1 0
- 0xB0080000, // 0075 RAISE 2 R0 R0
- 0x88240111, // 0076 GETMBR R9 R0 K17
- 0x8C241312, // 0077 GETMET R9 R9 K18
- 0x8C2C0313, // 0078 GETMET R11 R1 K19
- 0x7C2C0200, // 0079 CALL R11 1
- 0x7C240400, // 007A CALL R9 2
- 0x4C280000, // 007B LDNIL R10
- 0x1C24120A, // 007C EQ R9 R9 R10
- 0x7826000E, // 007D JMPF R9 #008D
- 0x88240114, // 007E GETMBR R9 R0 K20
- 0x88241315, // 007F GETMBR R9 R9 K21
- 0x7426000B, // 0080 JMPT R9 #008D
- 0x8C240F0E, // 0081 GETMET R9 R7 K14
- 0x7C240200, // 0082 CALL R9 1
- 0x8C28130F, // 0083 GETMET R10 R9 K15
- 0x58300005, // 0084 LDCONST R12 K5
- 0x88340907, // 0085 GETMBR R13 R4 K7
- 0x543A0012, // 0086 LDINT R14 19
- 0x7C280800, // 0087 CALL R10 4
- 0x8C28130F, // 0088 GETMET R10 R9 K15
- 0x58300008, // 0089 LDCONST R12 K8
- 0x88340907, // 008A GETMBR R13 R4 K7
- 0x58380008, // 008B LDCONST R14 K8
- 0x7C280800, // 008C CALL R10 4
- 0x80040E00, // 008D RET 1 R7
- 0x70020008, // 008E JMP #0098
- 0x601C0003, // 008F GETGBL R7 G3
- 0x5C200000, // 0090 MOVE R8 R0
- 0x7C1C0200, // 0091 CALL R7 1
- 0x8C1C0F16, // 0092 GETMET R7 R7 K22
- 0x5C240200, // 0093 MOVE R9 R1
- 0x5C280400, // 0094 MOVE R10 R2
- 0x5C2C0600, // 0095 MOVE R11 R3
- 0x7C1C0800, // 0096 CALL R7 4
- 0x80040E00, // 0097 RET 1 R7
- 0x7002006D, // 0098 JMP #0107
- 0x541E0038, // 0099 LDINT R7 57
- 0x1C1C0A07, // 009A EQ R7 R5 R7
- 0x781E0061, // 009B JMPF R7 #00FE
- 0xA41E2E00, // 009C IMPORT R7 K23
- 0x1C200D04, // 009D EQ R8 R6 K4
- 0x7822000A, // 009E JMPF R8 #00AA
- 0x8C200706, // 009F GETMET R8 R3 K6
- 0x88280918, // 00A0 GETMBR R10 R4 K24
- 0xB82E3200, // 00A1 GETNGBL R11 K25
- 0x8C2C171A, // 00A2 GETMET R11 R11 K26
- 0x5834001B, // 00A3 LDCONST R13 K27
- 0x50380200, // 00A4 LDBOOL R14 1 0
- 0x7C2C0600, // 00A5 CALL R11 3
- 0x942C171B, // 00A6 GETIDX R11 R11 K27
- 0x7C200600, // 00A7 CALL R8 3
- 0x80041000, // 00A8 RET 1 R8
- 0x70020052, // 00A9 JMP #00FD
- 0x54220004, // 00AA LDINT R8 5
- 0x1C200C08, // 00AB EQ R8 R6 R8
- 0x78220006, // 00AC JMPF R8 #00B4
- 0x8C200706, // 00AD GETMET R8 R3 K6
- 0x88280918, // 00AE GETMBR R10 R4 K24
- 0x8C2C011C, // 00AF GETMET R11 R0 K28
- 0x7C2C0200, // 00B0 CALL R11 1
- 0x7C200600, // 00B1 CALL R8 3
- 0x80041000, // 00B2 RET 1 R8
- 0x70020048, // 00B3 JMP #00FD
- 0x54220009, // 00B4 LDINT R8 10
- 0x1C200C08, // 00B5 EQ R8 R6 R8
- 0x78220015, // 00B6 JMPF R8 #00CD
- 0xB8223200, // 00B7 GETNGBL R8 K25
- 0x8C20111A, // 00B8 GETMET R8 R8 K26
- 0x5828001D, // 00B9 LDCONST R10 K29
- 0x502C0200, // 00BA LDBOOL R11 1 0
- 0x7C200600, // 00BB CALL R8 3
- 0x9420111E, // 00BC GETIDX R8 R8 K30
- 0x9420111F, // 00BD GETIDX R8 R8 K31
- 0x8C240F12, // 00BE GETMET R9 R7 K18
- 0x5C2C1000, // 00BF MOVE R11 R8
- 0x58300020, // 00C0 LDCONST R12 K32
- 0x7C240600, // 00C1 CALL R9 3
- 0x24281305, // 00C2 GT R10 R9 K5
- 0x782A0002, // 00C3 JMPF R10 #00C7
- 0x04281308, // 00C4 SUB R10 R9 K8
- 0x402A0A0A, // 00C5 CONNECT R10 K5 R10
- 0x9420100A, // 00C6 GETIDX R8 R8 R10
- 0x8C280706, // 00C7 GETMET R10 R3 K6
- 0x88300918, // 00C8 GETMBR R12 R4 K24
- 0x5C341000, // 00C9 MOVE R13 R8
- 0x7C280600, // 00CA CALL R10 3
- 0x80041400, // 00CB RET 1 R10
- 0x7002002F, // 00CC JMP #00FD
- 0x5422000E, // 00CD LDINT R8 15
- 0x1C200C08, // 00CE EQ R8 R6 R8
- 0x7822000B, // 00CF JMPF R8 #00DC
- 0x8C200706, // 00D0 GETMET R8 R3 K6
- 0x88280918, // 00D1 GETMBR R10 R4 K24
- 0xB82E3200, // 00D2 GETNGBL R11 K25
- 0x8C2C1721, // 00D3 GETMET R11 R11 K33
- 0x7C2C0200, // 00D4 CALL R11 1
- 0x8C2C1712, // 00D5 GETMET R11 R11 K18
- 0x58340022, // 00D6 LDCONST R13 K34
- 0x58380023, // 00D7 LDCONST R14 K35
- 0x7C2C0600, // 00D8 CALL R11 3
- 0x7C200600, // 00D9 CALL R8 3
- 0x80041000, // 00DA RET 1 R8
- 0x70020020, // 00DB JMP #00FD
- 0x54220010, // 00DC LDINT R8 17
- 0x1C200C08, // 00DD EQ R8 R6 R8
- 0x78220005, // 00DE JMPF R8 #00E5
- 0x8C200706, // 00DF GETMET R8 R3 K6
- 0x88280924, // 00E0 GETMBR R10 R4 K36
- 0x582C0008, // 00E1 LDCONST R11 K8
- 0x7C200600, // 00E2 CALL R8 3
- 0x80041000, // 00E3 RET 1 R8
- 0x70020017, // 00E4 JMP #00FD
- 0x54220011, // 00E5 LDINT R8 18
- 0x1C200C08, // 00E6 EQ R8 R6 R8
- 0x7822000B, // 00E7 JMPF R8 #00F4
- 0x8C200706, // 00E8 GETMET R8 R3 K6
- 0x88280918, // 00E9 GETMBR R10 R4 K24
- 0xB82E3200, // 00EA GETNGBL R11 K25
- 0x8C2C1721, // 00EB GETMET R11 R11 K33
- 0x7C2C0200, // 00EC CALL R11 1
- 0x8C2C1712, // 00ED GETMET R11 R11 K18
- 0x58340022, // 00EE LDCONST R13 K34
- 0x58380023, // 00EF LDCONST R14 K35
- 0x7C2C0600, // 00F0 CALL R11 3
- 0x7C200600, // 00F1 CALL R8 3
- 0x80041000, // 00F2 RET 1 R8
- 0x70020008, // 00F3 JMP #00FD
- 0x60200003, // 00F4 GETGBL R8 G3
- 0x5C240000, // 00F5 MOVE R9 R0
- 0x7C200200, // 00F6 CALL R8 1
- 0x8C201116, // 00F7 GETMET R8 R8 K22
- 0x5C280200, // 00F8 MOVE R10 R1
- 0x5C2C0400, // 00F9 MOVE R11 R2
- 0x5C300600, // 00FA MOVE R12 R3
- 0x7C200800, // 00FB CALL R8 4
- 0x80041000, // 00FC RET 1 R8
- 0x70020008, // 00FD JMP #0107
- 0x601C0003, // 00FE GETGBL R7 G3
- 0x5C200000, // 00FF MOVE R8 R0
- 0x7C1C0200, // 0100 CALL R7 1
- 0x8C1C0F16, // 0101 GETMET R7 R7 K22
- 0x5C240200, // 0102 MOVE R9 R1
- 0x5C280400, // 0103 MOVE R10 R2
- 0x5C2C0600, // 0104 MOVE R11 R3
- 0x7C1C0800, // 0105 CALL R7 4
- 0x80040E00, // 0106 RET 1 R7
- 0x80000000, // 0107 RET 0
+ 0x7002009D, // 0015 JMP #00B4
+ 0x541E0003, // 0016 LDINT R7 4
+ 0x1C1C0A07, // 0017 EQ R7 R5 R7
+ 0x781E0004, // 0018 JMPF R7 #001E
+ 0x1C1C0D05, // 0019 EQ R7 R6 K5
+ 0x781E0001, // 001A JMPF R7 #001D
+ 0x4C1C0000, // 001B LDNIL R7
+ 0x80040E00, // 001C RET 1 R7
+ 0x70020095, // 001D JMP #00B4
+ 0x541E0004, // 001E LDINT R7 5
+ 0x1C1C0A07, // 001F EQ R7 R5 R7
+ 0x781E0000, // 0020 JMPF R7 #0022
+ 0x70020091, // 0021 JMP #00B4
+ 0x541E001C, // 0022 LDINT R7 29
+ 0x1C1C0A07, // 0023 EQ R7 R5 R7
+ 0x781E0034, // 0024 JMPF R7 #005A
+ 0x1C1C0D05, // 0025 EQ R7 R6 K5
+ 0x781E0031, // 0026 JMPF R7 #0059
+ 0x8C1C090A, // 0027 GETMET R7 R4 K10
+ 0x7C1C0200, // 0028 CALL R7 1
+ 0x8820010B, // 0029 GETMBR R8 R0 K11
+ 0x60240010, // 002A GETGBL R9 G16
+ 0x8C28110C, // 002B GETMET R10 R8 K12
+ 0x7C280200, // 002C CALL R10 1
+ 0x7C240200, // 002D CALL R9 1
+ 0xA802000E, // 002E EXBLK 0 #003E
+ 0x5C281200, // 002F MOVE R10 R9
+ 0x7C280000, // 0030 CALL R10 0
+ 0x8C2C0F0D, // 0031 GETMET R11 R7 K13
+ 0x7C2C0200, // 0032 CALL R11 1
+ 0x8C30170E, // 0033 GETMET R12 R11 K14
+ 0x58380005, // 0034 LDCONST R14 K5
+ 0x883C0907, // 0035 GETMBR R15 R4 K7
+ 0x5C401400, // 0036 MOVE R16 R10
+ 0x7C300800, // 0037 CALL R12 4
+ 0x8C30170E, // 0038 GETMET R12 R11 K14
+ 0x58380008, // 0039 LDCONST R14 K8
+ 0x883C0907, // 003A GETMBR R15 R4 K7
+ 0x9440100A, // 003B GETIDX R16 R8 R10
+ 0x7C300800, // 003C CALL R12 4
+ 0x7001FFF0, // 003D JMP #002F
+ 0x5824000F, // 003E LDCONST R9 K15
+ 0xAC240200, // 003F CATCH R9 1 0
+ 0xB0080000, // 0040 RAISE 2 R0 R0
+ 0x88240110, // 0041 GETMBR R9 R0 K16
+ 0x8C241311, // 0042 GETMET R9 R9 K17
+ 0x8C2C0312, // 0043 GETMET R11 R1 K18
+ 0x7C2C0200, // 0044 CALL R11 1
+ 0x7C240400, // 0045 CALL R9 2
+ 0x4C280000, // 0046 LDNIL R10
+ 0x1C24120A, // 0047 EQ R9 R9 R10
+ 0x7826000E, // 0048 JMPF R9 #0058
+ 0x88240113, // 0049 GETMBR R9 R0 K19
+ 0x88241314, // 004A GETMBR R9 R9 K20
+ 0x7426000B, // 004B JMPT R9 #0058
+ 0x8C240F0D, // 004C GETMET R9 R7 K13
+ 0x7C240200, // 004D CALL R9 1
+ 0x8C28130E, // 004E GETMET R10 R9 K14
+ 0x58300005, // 004F LDCONST R12 K5
+ 0x88340907, // 0050 GETMBR R13 R4 K7
+ 0x543A0012, // 0051 LDINT R14 19
+ 0x7C280800, // 0052 CALL R10 4
+ 0x8C28130E, // 0053 GETMET R10 R9 K14
+ 0x58300008, // 0054 LDCONST R12 K8
+ 0x88340907, // 0055 GETMBR R13 R4 K7
+ 0x58380008, // 0056 LDCONST R14 K8
+ 0x7C280800, // 0057 CALL R10 4
+ 0x80040E00, // 0058 RET 1 R7
+ 0x70020059, // 0059 JMP #00B4
+ 0x541E0038, // 005A LDINT R7 57
+ 0x1C1C0A07, // 005B EQ R7 R5 R7
+ 0x781E0056, // 005C JMPF R7 #00B4
+ 0xA41E2A00, // 005D IMPORT R7 K21
+ 0x1C200D04, // 005E EQ R8 R6 K4
+ 0x7822000A, // 005F JMPF R8 #006B
+ 0x8C200706, // 0060 GETMET R8 R3 K6
+ 0x88280916, // 0061 GETMBR R10 R4 K22
+ 0xB82E2E00, // 0062 GETNGBL R11 K23
+ 0x8C2C1718, // 0063 GETMET R11 R11 K24
+ 0x58340019, // 0064 LDCONST R13 K25
+ 0x50380200, // 0065 LDBOOL R14 1 0
+ 0x7C2C0600, // 0066 CALL R11 3
+ 0x942C1719, // 0067 GETIDX R11 R11 K25
+ 0x7C200600, // 0068 CALL R8 3
+ 0x80041000, // 0069 RET 1 R8
+ 0x70020048, // 006A JMP #00B4
+ 0x54220004, // 006B LDINT R8 5
+ 0x1C200C08, // 006C EQ R8 R6 R8
+ 0x78220006, // 006D JMPF R8 #0075
+ 0x8C200706, // 006E GETMET R8 R3 K6
+ 0x88280916, // 006F GETMBR R10 R4 K22
+ 0x8C2C011A, // 0070 GETMET R11 R0 K26
+ 0x7C2C0200, // 0071 CALL R11 1
+ 0x7C200600, // 0072 CALL R8 3
+ 0x80041000, // 0073 RET 1 R8
+ 0x7002003E, // 0074 JMP #00B4
+ 0x54220009, // 0075 LDINT R8 10
+ 0x1C200C08, // 0076 EQ R8 R6 R8
+ 0x78220015, // 0077 JMPF R8 #008E
+ 0xB8222E00, // 0078 GETNGBL R8 K23
+ 0x8C201118, // 0079 GETMET R8 R8 K24
+ 0x5828001B, // 007A LDCONST R10 K27
+ 0x502C0200, // 007B LDBOOL R11 1 0
+ 0x7C200600, // 007C CALL R8 3
+ 0x9420111C, // 007D GETIDX R8 R8 K28
+ 0x9420111D, // 007E GETIDX R8 R8 K29
+ 0x8C240F11, // 007F GETMET R9 R7 K17
+ 0x5C2C1000, // 0080 MOVE R11 R8
+ 0x5830001E, // 0081 LDCONST R12 K30
+ 0x7C240600, // 0082 CALL R9 3
+ 0x24281305, // 0083 GT R10 R9 K5
+ 0x782A0002, // 0084 JMPF R10 #0088
+ 0x04281308, // 0085 SUB R10 R9 K8
+ 0x402A0A0A, // 0086 CONNECT R10 K5 R10
+ 0x9420100A, // 0087 GETIDX R8 R8 R10
+ 0x8C280706, // 0088 GETMET R10 R3 K6
+ 0x88300916, // 0089 GETMBR R12 R4 K22
+ 0x5C341000, // 008A MOVE R13 R8
+ 0x7C280600, // 008B CALL R10 3
+ 0x80041400, // 008C RET 1 R10
+ 0x70020025, // 008D JMP #00B4
+ 0x5422000E, // 008E LDINT R8 15
+ 0x1C200C08, // 008F EQ R8 R6 R8
+ 0x7822000B, // 0090 JMPF R8 #009D
+ 0x8C200706, // 0091 GETMET R8 R3 K6
+ 0x88280916, // 0092 GETMBR R10 R4 K22
+ 0xB82E2E00, // 0093 GETNGBL R11 K23
+ 0x8C2C171F, // 0094 GETMET R11 R11 K31
+ 0x7C2C0200, // 0095 CALL R11 1
+ 0x8C2C1711, // 0096 GETMET R11 R11 K17
+ 0x58340020, // 0097 LDCONST R13 K32
+ 0x58380021, // 0098 LDCONST R14 K33
+ 0x7C2C0600, // 0099 CALL R11 3
+ 0x7C200600, // 009A CALL R8 3
+ 0x80041000, // 009B RET 1 R8
+ 0x70020016, // 009C JMP #00B4
+ 0x54220010, // 009D LDINT R8 17
+ 0x1C200C08, // 009E EQ R8 R6 R8
+ 0x78220005, // 009F JMPF R8 #00A6
+ 0x8C200706, // 00A0 GETMET R8 R3 K6
+ 0x88280922, // 00A1 GETMBR R10 R4 K34
+ 0x582C0008, // 00A2 LDCONST R11 K8
+ 0x7C200600, // 00A3 CALL R8 3
+ 0x80041000, // 00A4 RET 1 R8
+ 0x7002000D, // 00A5 JMP #00B4
+ 0x54220011, // 00A6 LDINT R8 18
+ 0x1C200C08, // 00A7 EQ R8 R6 R8
+ 0x7822000A, // 00A8 JMPF R8 #00B4
+ 0x8C200706, // 00A9 GETMET R8 R3 K6
+ 0x88280916, // 00AA GETMBR R10 R4 K22
+ 0xB82E2E00, // 00AB GETNGBL R11 K23
+ 0x8C2C171F, // 00AC GETMET R11 R11 K31
+ 0x7C2C0200, // 00AD CALL R11 1
+ 0x8C2C1711, // 00AE GETMET R11 R11 K17
+ 0x58340020, // 00AF LDCONST R13 K32
+ 0x58380021, // 00B0 LDCONST R14 K33
+ 0x7C2C0600, // 00B1 CALL R11 3
+ 0x7C200600, // 00B2 CALL R8 3
+ 0x80041000, // 00B3 RET 1 R8
+ 0x601C0003, // 00B4 GETGBL R7 G3
+ 0x5C200000, // 00B5 MOVE R8 R0
+ 0x7C1C0200, // 00B6 CALL R7 1
+ 0x8C1C0F23, // 00B7 GETMET R7 R7 K35
+ 0x5C240200, // 00B8 MOVE R9 R1
+ 0x5C280400, // 00B9 MOVE R10 R2
+ 0x5C2C0600, // 00BA MOVE R11 R3
+ 0x7C1C0800, // 00BB CALL R7 4
+ 0x80040E00, // 00BC RET 1 R7
})
)
);
@@ -336,7 +260,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Device_append_state_json, /* name */
be_nested_proto(
- 7, /* nstack */
+ 11, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -350,7 +274,7 @@ be_local_closure(Matter_Plugin_Device_append_state_json, /* name */
1, /* has upvals */
( &(const bupvaldesc[ 2]) { /* upvals */
be_local_const_upval(1, 0),
- be_local_const_upval(1, 2),
+ be_local_const_upval(1, 3),
}),
0, /* has sup protos */
NULL, /* no sub protos */
@@ -401,78 +325,112 @@ be_local_closure(Matter_Plugin_Device_append_state_json, /* name */
),
}),
1, /* has constants */
- ( &(const bvalue[22]) { /* constants */
+ ( &(const bvalue[30]) { /* constants */
/* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(),
- /* K2 */ be_nested_str_weak(shadow_onoff),
- /* K3 */ be_nested_str_weak(Power),
- /* K4 */ be_nested_str_weak(shadow_bri),
- /* K5 */ be_nested_str_weak(Bri),
- /* K6 */ be_nested_str_weak(shadow_ct),
- /* K7 */ be_nested_str_weak(CT),
- /* K8 */ be_nested_str_weak(shadow_hue),
- /* K9 */ be_nested_str_weak(Hue),
- /* K10 */ be_nested_str_weak(shadow_sat),
- /* K11 */ be_nested_str_weak(Sat),
- /* K12 */ be_nested_str_weak(shadow_shutter_pos),
- /* K13 */ be_nested_str_weak(ShutterPos),
- /* K14 */ be_nested_str_weak(shadow_shutter_target),
- /* K15 */ be_nested_str_weak(ShutterTarget),
- /* K16 */ be_nested_str_weak(shadow_shutter_tilt),
- /* K17 */ be_nested_str_weak(ShutterTilt),
- /* K18 */ be_nested_str_weak(shadow_contact),
- /* K19 */ be_nested_str_weak(Contact),
- /* K20 */ be_nested_str_weak(shadow_occupancy),
- /* K21 */ be_nested_str_weak(Occupancy),
+ /* K1 */ be_nested_str_weak(json),
+ /* K2 */ be_nested_str_weak(),
+ /* K3 */ be_nested_str_weak(get),
+ /* K4 */ be_nested_str_weak(JSON_NAME),
+ /* K5 */ be_nested_str_weak(contains),
+ /* K6 */ be_nested_str_weak(shadow_value),
+ /* K7 */ be_nested_str_weak(dump),
+ /* K8 */ be_nested_str_weak(null),
+ /* K9 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s),
+ /* K10 */ be_nested_str_weak(shadow_onoff),
+ /* K11 */ be_nested_str_weak(Power),
+ /* K12 */ be_nested_str_weak(shadow_bri),
+ /* K13 */ be_nested_str_weak(Bri),
+ /* K14 */ be_nested_str_weak(shadow_ct),
+ /* K15 */ be_nested_str_weak(CT),
+ /* K16 */ be_nested_str_weak(shadow_hue),
+ /* K17 */ be_nested_str_weak(Hue),
+ /* K18 */ be_nested_str_weak(shadow_sat),
+ /* K19 */ be_nested_str_weak(Sat),
+ /* K20 */ be_nested_str_weak(shadow_shutter_pos),
+ /* K21 */ be_nested_str_weak(ShutterPos),
+ /* K22 */ be_nested_str_weak(shadow_shutter_target),
+ /* K23 */ be_nested_str_weak(ShutterTarget),
+ /* K24 */ be_nested_str_weak(shadow_shutter_tilt),
+ /* K25 */ be_nested_str_weak(ShutterTilt),
+ /* K26 */ be_nested_str_weak(shadow_contact),
+ /* K27 */ be_nested_str_weak(Contact),
+ /* K28 */ be_nested_str_weak(shadow_occupancy),
+ /* K29 */ be_nested_str_weak(Occupancy),
}),
be_str_weak(append_state_json),
&be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
+ ( &(const binstruction[71]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x58080001, // 0001 LDCONST R2 K1
- 0x840C0000, // 0002 CLOSURE R3 P0
- 0x5C100600, // 0003 MOVE R4 R3
- 0x58140002, // 0004 LDCONST R5 K2
- 0x58180003, // 0005 LDCONST R6 K3
- 0x7C100400, // 0006 CALL R4 2
- 0x5C100600, // 0007 MOVE R4 R3
- 0x58140004, // 0008 LDCONST R5 K4
- 0x58180005, // 0009 LDCONST R6 K5
- 0x7C100400, // 000A CALL R4 2
- 0x5C100600, // 000B MOVE R4 R3
- 0x58140006, // 000C LDCONST R5 K6
- 0x58180007, // 000D LDCONST R6 K7
- 0x7C100400, // 000E CALL R4 2
- 0x5C100600, // 000F MOVE R4 R3
- 0x58140008, // 0010 LDCONST R5 K8
- 0x58180009, // 0011 LDCONST R6 K9
- 0x7C100400, // 0012 CALL R4 2
- 0x5C100600, // 0013 MOVE R4 R3
- 0x5814000A, // 0014 LDCONST R5 K10
- 0x5818000B, // 0015 LDCONST R6 K11
- 0x7C100400, // 0016 CALL R4 2
- 0x5C100600, // 0017 MOVE R4 R3
- 0x5814000C, // 0018 LDCONST R5 K12
- 0x5818000D, // 0019 LDCONST R6 K13
- 0x7C100400, // 001A CALL R4 2
- 0x5C100600, // 001B MOVE R4 R3
- 0x5814000E, // 001C LDCONST R5 K14
- 0x5818000F, // 001D LDCONST R6 K15
- 0x7C100400, // 001E CALL R4 2
- 0x5C100600, // 001F MOVE R4 R3
- 0x58140010, // 0020 LDCONST R5 K16
- 0x58180011, // 0021 LDCONST R6 K17
- 0x7C100400, // 0022 CALL R4 2
- 0x5C100600, // 0023 MOVE R4 R3
- 0x58140012, // 0024 LDCONST R5 K18
- 0x58180013, // 0025 LDCONST R6 K19
- 0x7C100400, // 0026 CALL R4 2
- 0x5C100600, // 0027 MOVE R4 R3
- 0x58140014, // 0028 LDCONST R5 K20
- 0x58180015, // 0029 LDCONST R6 K21
- 0x7C100400, // 002A CALL R4 2
- 0xA0000000, // 002B CLOSE R0
- 0x80040400, // 002C RET 1 R2
+ 0xA40A0200, // 0001 IMPORT R2 K1
+ 0x580C0002, // 0002 LDCONST R3 K2
+ 0x84100000, // 0003 CLOSURE R4 P0
+ 0x8C140303, // 0004 GETMET R5 R1 K3
+ 0x5C1C0000, // 0005 MOVE R7 R0
+ 0x58200004, // 0006 LDCONST R8 K4
+ 0x7C140600, // 0007 CALL R5 3
+ 0x78160013, // 0008 JMPF R5 #001D
+ 0x8C180305, // 0009 GETMET R6 R1 K5
+ 0x5C200000, // 000A MOVE R8 R0
+ 0x58240006, // 000B LDCONST R9 K6
+ 0x7C180600, // 000C CALL R6 3
+ 0x781A000E, // 000D JMPF R6 #001D
+ 0x88180106, // 000E GETMBR R6 R0 K6
+ 0x4C1C0000, // 000F LDNIL R7
+ 0x20180C07, // 0010 NE R6 R6 R7
+ 0x781A0003, // 0011 JMPF R6 #0016
+ 0x8C180507, // 0012 GETMET R6 R2 K7
+ 0x88200106, // 0013 GETMBR R8 R0 K6
+ 0x7C180400, // 0014 CALL R6 2
+ 0x70020000, // 0015 JMP #0017
+ 0x58180008, // 0016 LDCONST R6 K8
+ 0x601C0018, // 0017 GETGBL R7 G24
+ 0x58200009, // 0018 LDCONST R8 K9
+ 0x5C240A00, // 0019 MOVE R9 R5
+ 0x5C280C00, // 001A MOVE R10 R6
+ 0x7C1C0600, // 001B CALL R7 3
+ 0x000C0607, // 001C ADD R3 R3 R7
+ 0x5C180800, // 001D MOVE R6 R4
+ 0x581C000A, // 001E LDCONST R7 K10
+ 0x5820000B, // 001F LDCONST R8 K11
+ 0x7C180400, // 0020 CALL R6 2
+ 0x5C180800, // 0021 MOVE R6 R4
+ 0x581C000C, // 0022 LDCONST R7 K12
+ 0x5820000D, // 0023 LDCONST R8 K13
+ 0x7C180400, // 0024 CALL R6 2
+ 0x5C180800, // 0025 MOVE R6 R4
+ 0x581C000E, // 0026 LDCONST R7 K14
+ 0x5820000F, // 0027 LDCONST R8 K15
+ 0x7C180400, // 0028 CALL R6 2
+ 0x5C180800, // 0029 MOVE R6 R4
+ 0x581C0010, // 002A LDCONST R7 K16
+ 0x58200011, // 002B LDCONST R8 K17
+ 0x7C180400, // 002C CALL R6 2
+ 0x5C180800, // 002D MOVE R6 R4
+ 0x581C0012, // 002E LDCONST R7 K18
+ 0x58200013, // 002F LDCONST R8 K19
+ 0x7C180400, // 0030 CALL R6 2
+ 0x5C180800, // 0031 MOVE R6 R4
+ 0x581C0014, // 0032 LDCONST R7 K20
+ 0x58200015, // 0033 LDCONST R8 K21
+ 0x7C180400, // 0034 CALL R6 2
+ 0x5C180800, // 0035 MOVE R6 R4
+ 0x581C0016, // 0036 LDCONST R7 K22
+ 0x58200017, // 0037 LDCONST R8 K23
+ 0x7C180400, // 0038 CALL R6 2
+ 0x5C180800, // 0039 MOVE R6 R4
+ 0x581C0018, // 003A LDCONST R7 K24
+ 0x58200019, // 003B LDCONST R8 K25
+ 0x7C180400, // 003C CALL R6 2
+ 0x5C180800, // 003D MOVE R6 R4
+ 0x581C001A, // 003E LDCONST R7 K26
+ 0x5820001B, // 003F LDCONST R8 K27
+ 0x7C180400, // 0040 CALL R6 2
+ 0x5C180800, // 0041 MOVE R6 R4
+ 0x581C001C, // 0042 LDCONST R7 K28
+ 0x5820001D, // 0043 LDCONST R8 K29
+ 0x7C180400, // 0044 CALL R6 2
+ 0xA0000000, // 0045 CLOSE R0
+ 0x80040600, // 0046 RET 1 R3
})
)
);
@@ -586,7 +544,7 @@ be_local_class(Matter_Plugin_Device,
be_const_map( * be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -594,42 +552,63 @@ be_local_class(Matter_Plugin_Device,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(1),
+ be_const_int(2),
+ be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
- be_const_int(2),
- be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(4, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(7,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h
index a001bfaa2..81040d471 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h
@@ -19,7 +19,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[92]) { /* constants */
+ ( &(const bvalue[94]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
@@ -77,41 +77,43 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
/* K54 */ be_nested_str_weak(device),
/* K55 */ be_nested_str_weak(sessions),
/* K56 */ be_nested_str_weak(active_fabrics),
- /* K57 */ be_nested_str_weak(B2),
- /* K58 */ be_nested_str_weak(get_noc),
- /* K59 */ be_nested_str_weak(get_icac),
- /* K60 */ be_nested_str_weak(get_fabric_index),
- /* K61 */ be_nested_str_weak(stop_iteration),
- /* K62 */ be_nested_str_weak(parse),
- /* K63 */ be_nested_str_weak(get_ca),
- /* K64 */ be_nested_str_weak(findsubval),
- /* K65 */ be_nested_str_weak(get_admin_vendor),
- /* K66 */ be_nested_str_weak(get_fabric_id),
- /* K67 */ be_nested_str_weak(get_device_id),
- /* K68 */ be_nested_str_weak(get_fabric_label),
- /* K69 */ be_nested_str_weak(Fabric),
- /* K70 */ be_nested_str_weak(_MAX_CASE),
- /* K71 */ be_nested_str_weak(count_active_fabrics),
- /* K72 */ be_nested_str_weak(_fabric),
- /* K73 */ be_nested_str_weak(is_commissioning_open),
- /* K74 */ be_nested_str_weak(is_root_commissioning_open),
- /* K75 */ be_nested_str_weak(commissioning_admin_fabric),
- /* K76 */ be_nested_str_weak(Tasmota),
- /* K77 */ be_nested_str_weak(vendorid),
- /* K78 */ be_nested_str_weak(DeviceName),
- /* K79 */ be_nested_str_weak(FriendlyName),
- /* K80 */ be_nested_str_weak(FriendlyName1),
- /* K81 */ be_nested_str_weak(XX),
- /* K82 */ be_nested_str_weak(Status_X202),
- /* K83 */ be_nested_str_weak(StatusFWR),
- /* K84 */ be_nested_str_weak(Hardware),
- /* K85 */ be_nested_str_weak(Version),
- /* K86 */ be_nested_str_weak(_X28),
- /* K87 */ be_nested_str_weak(locale),
- /* K88 */ be_nested_str_weak(create_TLV),
- /* K89 */ be_nested_str_weak(get_active_endpoints),
- /* K90 */ be_nested_str_weak(disable_bridge_mode),
- /* K91 */ be_nested_str_weak(read_attribute),
+ /* K57 */ be_nested_str_weak(is_marked_for_deletion),
+ /* K58 */ be_nested_str_weak(B2),
+ /* K59 */ be_nested_str_weak(get_noc),
+ /* K60 */ be_nested_str_weak(get_icac),
+ /* K61 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K62 */ be_nested_str_weak(get_fabric_index),
+ /* K63 */ be_nested_str_weak(stop_iteration),
+ /* K64 */ be_nested_str_weak(parse),
+ /* K65 */ be_nested_str_weak(get_ca),
+ /* K66 */ be_nested_str_weak(findsubval),
+ /* K67 */ be_nested_str_weak(get_admin_vendor),
+ /* K68 */ be_nested_str_weak(get_fabric_id_as_int64),
+ /* K69 */ be_nested_str_weak(get_device_id_as_int64),
+ /* K70 */ be_nested_str_weak(get_fabric_label),
+ /* K71 */ be_nested_str_weak(Fabric),
+ /* K72 */ be_nested_str_weak(_MAX_CASE),
+ /* K73 */ be_nested_str_weak(count_active_fabrics),
+ /* K74 */ be_nested_str_weak(_fabric),
+ /* K75 */ be_nested_str_weak(is_commissioning_open),
+ /* K76 */ be_nested_str_weak(is_root_commissioning_open),
+ /* K77 */ be_nested_str_weak(commissioning_admin_fabric),
+ /* K78 */ be_nested_str_weak(Tasmota),
+ /* K79 */ be_nested_str_weak(vendorid),
+ /* K80 */ be_nested_str_weak(DeviceName),
+ /* K81 */ be_nested_str_weak(FriendlyName),
+ /* K82 */ be_nested_str_weak(FriendlyName1),
+ /* K83 */ be_nested_str_weak(XX),
+ /* K84 */ be_nested_str_weak(Status_X202),
+ /* K85 */ be_nested_str_weak(StatusFWR),
+ /* K86 */ be_nested_str_weak(Hardware),
+ /* K87 */ be_nested_str_weak(Version),
+ /* K88 */ be_nested_str_weak(_X28),
+ /* K89 */ be_nested_str_weak(locale),
+ /* K90 */ be_nested_str_weak(create_TLV),
+ /* K91 */ be_nested_str_weak(get_active_endpoints),
+ /* K92 */ be_nested_str_weak(disable_bridge_mode),
+ /* K93 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
@@ -172,11 +174,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x502C0000, // 0035 LDBOOL R11 0 0
0x7C200600, // 0036 CALL R8 3
0x80041000, // 0037 RET 1 R8
- 0x7002036E, // 0038 JMP #03A8
+ 0x70020366, // 0038 JMP #03A0
0x54220031, // 0039 LDINT R8 50
0x1C200C08, // 003A EQ R8 R6 R8
0x78220000, // 003B JMPF R8 #003D
- 0x7002036A, // 003C JMP #03A8
+ 0x70020362, // 003C JMP #03A0
0x54220032, // 003D LDINT R8 51
0x1C200C08, // 003E EQ R8 R6 R8
0x782200DC, // 003F JMPF R8 #011D
@@ -400,11 +402,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x502C0000, // 0119 LDBOOL R11 0 0
0x7C200600, // 011A CALL R8 3
0x80041000, // 011B RET 1 R8
- 0x7002028A, // 011C JMP #03A8
+ 0x70020282, // 011C JMP #03A0
0x54220033, // 011D LDINT R8 52
0x1C200C08, // 011E EQ R8 R6 R8
0x78220000, // 011F JMPF R8 #0121
- 0x70020286, // 0120 JMP #03A8
+ 0x7002027E, // 0120 JMP #03A0
0x54220037, // 0121 LDINT R8 56
0x1C200C08, // 0122 EQ R8 R6 R8
0x7822002B, // 0123 JMPF R8 #0150
@@ -451,15 +453,15 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x5C301000, // 014C MOVE R12 R8
0x7C240600, // 014D CALL R9 3
0x80041200, // 014E RET 1 R9
- 0x70020257, // 014F JMP #03A8
+ 0x7002024F, // 014F JMP #03A0
0x5422003D, // 0150 LDINT R8 62
0x1C200C08, // 0151 EQ R8 R6 R8
- 0x782200AD, // 0152 JMPF R8 #0201
+ 0x782200B6, // 0152 JMPF R8 #020A
0x8C200133, // 0153 GETMET R8 R0 K51
0x5C280400, // 0154 MOVE R10 R2
0x7C200400, // 0155 CALL R8 2
0x1C200F05, // 0156 EQ R8 R7 K5
- 0x78220032, // 0157 JMPF R8 #018B
+ 0x78220037, // 0157 JMPF R8 #0190
0x8C200B11, // 0158 GETMET R8 R5 K17
0x7C200200, // 0159 CALL R8 1
0x88240534, // 015A GETMBR R9 R2 K52
@@ -477,582 +479,582 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x60280010, // 0166 GETGBL R10 G16
0x5C2C1200, // 0167 MOVE R11 R9
0x7C280200, // 0168 CALL R10 1
- 0xA802001B, // 0169 EXBLK 0 #0186
+ 0xA8020020, // 0169 EXBLK 0 #018B
0x5C2C1400, // 016A MOVE R11 R10
0x7C2C0000, // 016B CALL R11 0
- 0x4C300000, // 016C LDNIL R12
- 0x1C30160C, // 016D EQ R12 R11 R12
+ 0x8C301739, // 016C GETMET R12 R11 K57
+ 0x7C300200, // 016D CALL R12 1
0x78320000, // 016E JMPF R12 #0170
0x7001FFF9, // 016F JMP #016A
- 0x8C301115, // 0170 GETMET R12 R8 K21
- 0x4C380000, // 0171 LDNIL R14
- 0x7C300400, // 0172 CALL R12 2
- 0x8C34190B, // 0173 GETMET R13 R12 K11
- 0x583C0009, // 0174 LDCONST R15 K9
- 0x88400B39, // 0175 GETMBR R16 R5 K57
- 0x8C44173A, // 0176 GETMET R17 R11 K58
- 0x7C440200, // 0177 CALL R17 1
- 0x7C340800, // 0178 CALL R13 4
- 0x8C34190B, // 0179 GETMET R13 R12 K11
- 0x583C000D, // 017A LDCONST R15 K13
- 0x88400B39, // 017B GETMBR R16 R5 K57
- 0x8C44173B, // 017C GETMET R17 R11 K59
- 0x7C440200, // 017D CALL R17 1
- 0x7C340800, // 017E CALL R13 4
- 0x8C34190B, // 017F GETMET R13 R12 K11
- 0x543E00FD, // 0180 LDINT R15 254
- 0x88400B0C, // 0181 GETMBR R16 R5 K12
- 0x8C44173C, // 0182 GETMET R17 R11 K60
- 0x7C440200, // 0183 CALL R17 1
- 0x7C340800, // 0184 CALL R13 4
- 0x7001FFE3, // 0185 JMP #016A
- 0x5828003D, // 0186 LDCONST R10 K61
- 0xAC280200, // 0187 CATCH R10 1 0
- 0xB0080000, // 0188 RAISE 2 R0 R0
- 0x80041000, // 0189 RET 1 R8
- 0x70020074, // 018A JMP #0200
- 0x1C200F09, // 018B EQ R8 R7 K9
- 0x78220049, // 018C JMPF R8 #01D7
- 0x8C200B11, // 018D GETMET R8 R5 K17
- 0x7C200200, // 018E CALL R8 1
- 0x88240534, // 018F GETMBR R9 R2 K52
- 0x78260005, // 0190 JMPF R9 #0197
- 0x60240012, // 0191 GETGBL R9 G18
- 0x7C240000, // 0192 CALL R9 0
- 0x8C280335, // 0193 GETMET R10 R1 K53
- 0x7C280200, // 0194 CALL R10 1
- 0x4028120A, // 0195 CONNECT R10 R9 R10
- 0x70020003, // 0196 JMP #019B
- 0x88240136, // 0197 GETMBR R9 R0 K54
- 0x88241337, // 0198 GETMBR R9 R9 K55
- 0x8C241338, // 0199 GETMET R9 R9 K56
- 0x7C240200, // 019A CALL R9 1
- 0x60280010, // 019B GETGBL R10 G16
- 0x5C2C1200, // 019C MOVE R11 R9
- 0x7C280200, // 019D CALL R10 1
- 0xA8020032, // 019E EXBLK 0 #01D2
- 0x5C2C1400, // 019F MOVE R11 R10
- 0x7C2C0000, // 01A0 CALL R11 0
- 0x4C300000, // 01A1 LDNIL R12
- 0x1C30160C, // 01A2 EQ R12 R11 R12
- 0x78320000, // 01A3 JMPF R12 #01A5
- 0x7001FFF9, // 01A4 JMP #019F
- 0x8C300B3E, // 01A5 GETMET R12 R5 K62
- 0x8C38173F, // 01A6 GETMET R14 R11 K63
- 0x7C380200, // 01A7 CALL R14 1
- 0x7C300400, // 01A8 CALL R12 2
- 0x8C341115, // 01A9 GETMET R13 R8 K21
- 0x4C3C0000, // 01AA LDNIL R15
- 0x7C340400, // 01AB CALL R13 2
- 0x8C381B0B, // 01AC GETMET R14 R13 K11
- 0x58400009, // 01AD LDCONST R16 K9
- 0x88440B39, // 01AE GETMBR R17 R5 K57
- 0x8C481940, // 01AF GETMET R18 R12 K64
- 0x54520008, // 01B0 LDINT R20 9
- 0x7C480400, // 01B1 CALL R18 2
- 0x7C380800, // 01B2 CALL R14 4
- 0x8C381B0B, // 01B3 GETMET R14 R13 K11
- 0x5840000D, // 01B4 LDCONST R16 K13
- 0x88440B0C, // 01B5 GETMBR R17 R5 K12
- 0x8C481741, // 01B6 GETMET R18 R11 K65
- 0x7C480200, // 01B7 CALL R18 1
- 0x7C380800, // 01B8 CALL R14 4
- 0x8C381B0B, // 01B9 GETMET R14 R13 K11
- 0x5840000F, // 01BA LDCONST R16 K15
- 0x88440B07, // 01BB GETMBR R17 R5 K7
- 0x8C481742, // 01BC GETMET R18 R11 K66
- 0x7C480200, // 01BD CALL R18 1
- 0x7C380800, // 01BE CALL R14 4
- 0x8C381B0B, // 01BF GETMET R14 R13 K11
- 0x54420003, // 01C0 LDINT R16 4
- 0x88440B07, // 01C1 GETMBR R17 R5 K7
- 0x8C481743, // 01C2 GETMET R18 R11 K67
- 0x7C480200, // 01C3 CALL R18 1
- 0x7C380800, // 01C4 CALL R14 4
- 0x8C381B0B, // 01C5 GETMET R14 R13 K11
- 0x54420004, // 01C6 LDINT R16 5
- 0x88440B16, // 01C7 GETMBR R17 R5 K22
- 0x8C481744, // 01C8 GETMET R18 R11 K68
- 0x7C480200, // 01C9 CALL R18 1
- 0x7C380800, // 01CA CALL R14 4
- 0x8C381B0B, // 01CB GETMET R14 R13 K11
- 0x544200FD, // 01CC LDINT R16 254
- 0x88440B0C, // 01CD GETMBR R17 R5 K12
- 0x8C48173C, // 01CE GETMET R18 R11 K60
- 0x7C480200, // 01CF CALL R18 1
- 0x7C380800, // 01D0 CALL R14 4
- 0x7001FFCC, // 01D1 JMP #019F
- 0x5828003D, // 01D2 LDCONST R10 K61
- 0xAC280200, // 01D3 CATCH R10 1 0
- 0xB0080000, // 01D4 RAISE 2 R0 R0
- 0x80041000, // 01D5 RET 1 R8
- 0x70020028, // 01D6 JMP #0200
- 0x1C200F0D, // 01D7 EQ R8 R7 K13
- 0x78220007, // 01D8 JMPF R8 #01E1
- 0x8C200706, // 01D9 GETMET R8 R3 K6
- 0x88280B0E, // 01DA GETMBR R10 R5 K14
- 0xB82E0200, // 01DB GETNGBL R11 K1
- 0x882C1745, // 01DC GETMBR R11 R11 K69
- 0x882C1746, // 01DD GETMBR R11 R11 K70
- 0x7C200600, // 01DE CALL R8 3
- 0x80041000, // 01DF RET 1 R8
- 0x7002001E, // 01E0 JMP #0200
- 0x1C200F0F, // 01E1 EQ R8 R7 K15
- 0x78220009, // 01E2 JMPF R8 #01ED
- 0x88200136, // 01E3 GETMBR R8 R0 K54
- 0x88201137, // 01E4 GETMBR R8 R8 K55
- 0x8C201147, // 01E5 GETMET R8 R8 K71
- 0x7C200200, // 01E6 CALL R8 1
- 0x8C240706, // 01E7 GETMET R9 R3 K6
- 0x882C0B0E, // 01E8 GETMBR R11 R5 K14
- 0x5C301000, // 01E9 MOVE R12 R8
- 0x7C240600, // 01EA CALL R9 3
- 0x80041200, // 01EB RET 1 R9
- 0x70020012, // 01EC JMP #0200
- 0x54220003, // 01ED LDINT R8 4
- 0x1C200E08, // 01EE EQ R8 R7 R8
- 0x78220000, // 01EF JMPF R8 #01F1
- 0x7002000E, // 01F0 JMP #0200
- 0x54220004, // 01F1 LDINT R8 5
- 0x1C200E08, // 01F2 EQ R8 R7 R8
- 0x7822000B, // 01F3 JMPF R8 #0200
- 0x88200348, // 01F4 GETMBR R8 R1 K72
- 0x8C20113C, // 01F5 GETMET R8 R8 K60
- 0x7C200200, // 01F6 CALL R8 1
- 0x4C240000, // 01F7 LDNIL R9
- 0x1C241009, // 01F8 EQ R9 R8 R9
- 0x78260000, // 01F9 JMPF R9 #01FB
- 0x58200005, // 01FA LDCONST R8 K5
- 0x8C240706, // 01FB GETMET R9 R3 K6
- 0x882C0B0E, // 01FC GETMBR R11 R5 K14
- 0x5C301000, // 01FD MOVE R12 R8
- 0x7C240600, // 01FE CALL R9 3
- 0x80041200, // 01FF RET 1 R9
- 0x700201A6, // 0200 JMP #03A8
- 0x5422003B, // 0201 LDINT R8 60
- 0x1C200C08, // 0202 EQ R8 R6 R8
- 0x7822003C, // 0203 JMPF R8 #0241
- 0x1C200F05, // 0204 EQ R8 R7 K5
- 0x78220012, // 0205 JMPF R8 #0219
- 0x88200136, // 0206 GETMBR R8 R0 K54
- 0x8C201149, // 0207 GETMET R8 R8 K73
- 0x7C200200, // 0208 CALL R8 1
- 0x88240136, // 0209 GETMBR R9 R0 K54
- 0x8C24134A, // 020A GETMET R9 R9 K74
- 0x7C240200, // 020B CALL R9 1
- 0x78220004, // 020C JMPF R8 #0212
- 0x78260001, // 020D JMPF R9 #0210
- 0x5828000D, // 020E LDCONST R10 K13
- 0x70020000, // 020F JMP #0211
- 0x58280009, // 0210 LDCONST R10 K9
- 0x70020000, // 0211 JMP #0213
- 0x58280005, // 0212 LDCONST R10 K5
- 0x8C2C0706, // 0213 GETMET R11 R3 K6
- 0x88340B0E, // 0214 GETMBR R13 R5 K14
- 0x5C381400, // 0215 MOVE R14 R10
- 0x7C2C0600, // 0216 CALL R11 3
- 0x80041600, // 0217 RET 1 R11
- 0x70020026, // 0218 JMP #0240
- 0x1C200F09, // 0219 EQ R8 R7 K9
- 0x78220011, // 021A JMPF R8 #022D
- 0x88200136, // 021B GETMBR R8 R0 K54
- 0x8820114B, // 021C GETMBR R8 R8 K75
- 0x4C240000, // 021D LDNIL R9
- 0x20241009, // 021E NE R9 R8 R9
- 0x78260006, // 021F JMPF R9 #0227
- 0x8C240706, // 0220 GETMET R9 R3 K6
- 0x882C0B0C, // 0221 GETMBR R11 R5 K12
- 0x8C30113C, // 0222 GETMET R12 R8 K60
- 0x7C300200, // 0223 CALL R12 1
- 0x7C240600, // 0224 CALL R9 3
- 0x80041200, // 0225 RET 1 R9
- 0x70020004, // 0226 JMP #022C
- 0x8C240706, // 0227 GETMET R9 R3 K6
- 0x882C0B18, // 0228 GETMBR R11 R5 K24
- 0x4C300000, // 0229 LDNIL R12
- 0x7C240600, // 022A CALL R9 3
- 0x80041200, // 022B RET 1 R9
- 0x70020012, // 022C JMP #0240
- 0x1C200F0D, // 022D EQ R8 R7 K13
- 0x78220010, // 022E JMPF R8 #0240
- 0x88200136, // 022F GETMBR R8 R0 K54
- 0x8820114B, // 0230 GETMBR R8 R8 K75
- 0x4C240000, // 0231 LDNIL R9
- 0x20241009, // 0232 NE R9 R8 R9
- 0x78260006, // 0233 JMPF R9 #023B
- 0x8C240706, // 0234 GETMET R9 R3 K6
- 0x882C0B0C, // 0235 GETMBR R11 R5 K12
- 0x8C301141, // 0236 GETMET R12 R8 K65
- 0x7C300200, // 0237 CALL R12 1
- 0x7C240600, // 0238 CALL R9 3
- 0x80041200, // 0239 RET 1 R9
- 0x70020004, // 023A JMP #0240
- 0x8C240706, // 023B GETMET R9 R3 K6
- 0x882C0B18, // 023C GETMBR R11 R5 K24
- 0x4C300000, // 023D LDNIL R12
- 0x7C240600, // 023E CALL R9 3
- 0x80041200, // 023F RET 1 R9
- 0x70020166, // 0240 JMP #03A8
- 0x54220027, // 0241 LDINT R8 40
- 0x1C200C08, // 0242 EQ R8 R6 R8
- 0x782200BA, // 0243 JMPF R8 #02FF
- 0x8C200133, // 0244 GETMET R8 R0 K51
- 0x5C280400, // 0245 MOVE R10 R2
- 0x7C200400, // 0246 CALL R8 2
- 0x1C200F05, // 0247 EQ R8 R7 K5
- 0x78220005, // 0248 JMPF R8 #024F
- 0x8C200706, // 0249 GETMET R8 R3 K6
- 0x88280B0C, // 024A GETMBR R10 R5 K12
- 0x582C0009, // 024B LDCONST R11 K9
- 0x7C200600, // 024C CALL R8 3
- 0x80041000, // 024D RET 1 R8
- 0x700200AE, // 024E JMP #02FE
- 0x1C200F09, // 024F EQ R8 R7 K9
- 0x78220005, // 0250 JMPF R8 #0257
- 0x8C200706, // 0251 GETMET R8 R3 K6
- 0x88280B16, // 0252 GETMBR R10 R5 K22
- 0x582C004C, // 0253 LDCONST R11 K76
- 0x7C200600, // 0254 CALL R8 3
- 0x80041000, // 0255 RET 1 R8
- 0x700200A6, // 0256 JMP #02FE
- 0x1C200F0D, // 0257 EQ R8 R7 K13
- 0x78220006, // 0258 JMPF R8 #0260
- 0x8C200706, // 0259 GETMET R8 R3 K6
- 0x88280B0C, // 025A GETMBR R10 R5 K12
- 0x882C0136, // 025B GETMBR R11 R0 K54
- 0x882C174D, // 025C GETMBR R11 R11 K77
+ 0x4C300000, // 0170 LDNIL R12
+ 0x1C30160C, // 0171 EQ R12 R11 R12
+ 0x78320000, // 0172 JMPF R12 #0174
+ 0x7001FFF5, // 0173 JMP #016A
+ 0x8C301115, // 0174 GETMET R12 R8 K21
+ 0x4C380000, // 0175 LDNIL R14
+ 0x7C300400, // 0176 CALL R12 2
+ 0x8C34190B, // 0177 GETMET R13 R12 K11
+ 0x583C0009, // 0178 LDCONST R15 K9
+ 0x88400B3A, // 0179 GETMBR R16 R5 K58
+ 0x8C44173B, // 017A GETMET R17 R11 K59
+ 0x7C440200, // 017B CALL R17 1
+ 0x7C340800, // 017C CALL R13 4
+ 0x8C34190B, // 017D GETMET R13 R12 K11
+ 0x583C000D, // 017E LDCONST R15 K13
+ 0x88400B3A, // 017F GETMBR R16 R5 K58
+ 0x8C44173C, // 0180 GETMET R17 R11 K60
+ 0x7C440200, // 0181 CALL R17 1
+ 0x7C340800, // 0182 CALL R13 4
+ 0x8C34190B, // 0183 GETMET R13 R12 K11
+ 0xB83E0200, // 0184 GETNGBL R15 K1
+ 0x883C1F3D, // 0185 GETMBR R15 R15 K61
+ 0x88400B0C, // 0186 GETMBR R16 R5 K12
+ 0x8C44173E, // 0187 GETMET R17 R11 K62
+ 0x7C440200, // 0188 CALL R17 1
+ 0x7C340800, // 0189 CALL R13 4
+ 0x7001FFDE, // 018A JMP #016A
+ 0x5828003F, // 018B LDCONST R10 K63
+ 0xAC280200, // 018C CATCH R10 1 0
+ 0xB0080000, // 018D RAISE 2 R0 R0
+ 0x80041000, // 018E RET 1 R8
+ 0x70020078, // 018F JMP #0209
+ 0x1C200F09, // 0190 EQ R8 R7 K9
+ 0x7822004D, // 0191 JMPF R8 #01E0
+ 0x8C200B11, // 0192 GETMET R8 R5 K17
+ 0x7C200200, // 0193 CALL R8 1
+ 0x88240534, // 0194 GETMBR R9 R2 K52
+ 0x78260005, // 0195 JMPF R9 #019C
+ 0x60240012, // 0196 GETGBL R9 G18
+ 0x7C240000, // 0197 CALL R9 0
+ 0x8C280335, // 0198 GETMET R10 R1 K53
+ 0x7C280200, // 0199 CALL R10 1
+ 0x4028120A, // 019A CONNECT R10 R9 R10
+ 0x70020003, // 019B JMP #01A0
+ 0x88240136, // 019C GETMBR R9 R0 K54
+ 0x88241337, // 019D GETMBR R9 R9 K55
+ 0x8C241338, // 019E GETMET R9 R9 K56
+ 0x7C240200, // 019F CALL R9 1
+ 0x60280010, // 01A0 GETGBL R10 G16
+ 0x5C2C1200, // 01A1 MOVE R11 R9
+ 0x7C280200, // 01A2 CALL R10 1
+ 0xA8020036, // 01A3 EXBLK 0 #01DB
+ 0x5C2C1400, // 01A4 MOVE R11 R10
+ 0x7C2C0000, // 01A5 CALL R11 0
+ 0x4C300000, // 01A6 LDNIL R12
+ 0x1C30160C, // 01A7 EQ R12 R11 R12
+ 0x78320000, // 01A8 JMPF R12 #01AA
+ 0x7001FFF9, // 01A9 JMP #01A4
+ 0x8C301739, // 01AA GETMET R12 R11 K57
+ 0x7C300200, // 01AB CALL R12 1
+ 0x78320000, // 01AC JMPF R12 #01AE
+ 0x7001FFF5, // 01AD JMP #01A4
+ 0x8C300B40, // 01AE GETMET R12 R5 K64
+ 0x8C381741, // 01AF GETMET R14 R11 K65
+ 0x7C380200, // 01B0 CALL R14 1
+ 0x7C300400, // 01B1 CALL R12 2
+ 0x8C341115, // 01B2 GETMET R13 R8 K21
+ 0x4C3C0000, // 01B3 LDNIL R15
+ 0x7C340400, // 01B4 CALL R13 2
+ 0x8C381B0B, // 01B5 GETMET R14 R13 K11
+ 0x58400009, // 01B6 LDCONST R16 K9
+ 0x88440B3A, // 01B7 GETMBR R17 R5 K58
+ 0x8C481942, // 01B8 GETMET R18 R12 K66
+ 0x54520008, // 01B9 LDINT R20 9
+ 0x7C480400, // 01BA CALL R18 2
+ 0x7C380800, // 01BB CALL R14 4
+ 0x8C381B0B, // 01BC GETMET R14 R13 K11
+ 0x5840000D, // 01BD LDCONST R16 K13
+ 0x88440B0C, // 01BE GETMBR R17 R5 K12
+ 0x8C481743, // 01BF GETMET R18 R11 K67
+ 0x7C480200, // 01C0 CALL R18 1
+ 0x7C380800, // 01C1 CALL R14 4
+ 0x8C381B0B, // 01C2 GETMET R14 R13 K11
+ 0x5840000F, // 01C3 LDCONST R16 K15
+ 0x88440B07, // 01C4 GETMBR R17 R5 K7
+ 0x8C481744, // 01C5 GETMET R18 R11 K68
+ 0x7C480200, // 01C6 CALL R18 1
+ 0x7C380800, // 01C7 CALL R14 4
+ 0x8C381B0B, // 01C8 GETMET R14 R13 K11
+ 0x54420003, // 01C9 LDINT R16 4
+ 0x88440B07, // 01CA GETMBR R17 R5 K7
+ 0x8C481745, // 01CB GETMET R18 R11 K69
+ 0x7C480200, // 01CC CALL R18 1
+ 0x7C380800, // 01CD CALL R14 4
+ 0x8C381B0B, // 01CE GETMET R14 R13 K11
+ 0x54420004, // 01CF LDINT R16 5
+ 0x88440B16, // 01D0 GETMBR R17 R5 K22
+ 0x8C481746, // 01D1 GETMET R18 R11 K70
+ 0x7C480200, // 01D2 CALL R18 1
+ 0x7C380800, // 01D3 CALL R14 4
+ 0x8C381B0B, // 01D4 GETMET R14 R13 K11
+ 0x544200FD, // 01D5 LDINT R16 254
+ 0x88440B0C, // 01D6 GETMBR R17 R5 K12
+ 0x8C48173E, // 01D7 GETMET R18 R11 K62
+ 0x7C480200, // 01D8 CALL R18 1
+ 0x7C380800, // 01D9 CALL R14 4
+ 0x7001FFC8, // 01DA JMP #01A4
+ 0x5828003F, // 01DB LDCONST R10 K63
+ 0xAC280200, // 01DC CATCH R10 1 0
+ 0xB0080000, // 01DD RAISE 2 R0 R0
+ 0x80041000, // 01DE RET 1 R8
+ 0x70020028, // 01DF JMP #0209
+ 0x1C200F0D, // 01E0 EQ R8 R7 K13
+ 0x78220007, // 01E1 JMPF R8 #01EA
+ 0x8C200706, // 01E2 GETMET R8 R3 K6
+ 0x88280B0E, // 01E3 GETMBR R10 R5 K14
+ 0xB82E0200, // 01E4 GETNGBL R11 K1
+ 0x882C1747, // 01E5 GETMBR R11 R11 K71
+ 0x882C1748, // 01E6 GETMBR R11 R11 K72
+ 0x7C200600, // 01E7 CALL R8 3
+ 0x80041000, // 01E8 RET 1 R8
+ 0x7002001E, // 01E9 JMP #0209
+ 0x1C200F0F, // 01EA EQ R8 R7 K15
+ 0x78220009, // 01EB JMPF R8 #01F6
+ 0x88200136, // 01EC GETMBR R8 R0 K54
+ 0x88201137, // 01ED GETMBR R8 R8 K55
+ 0x8C201149, // 01EE GETMET R8 R8 K73
+ 0x7C200200, // 01EF CALL R8 1
+ 0x8C240706, // 01F0 GETMET R9 R3 K6
+ 0x882C0B0E, // 01F1 GETMBR R11 R5 K14
+ 0x5C301000, // 01F2 MOVE R12 R8
+ 0x7C240600, // 01F3 CALL R9 3
+ 0x80041200, // 01F4 RET 1 R9
+ 0x70020012, // 01F5 JMP #0209
+ 0x54220003, // 01F6 LDINT R8 4
+ 0x1C200E08, // 01F7 EQ R8 R7 R8
+ 0x78220000, // 01F8 JMPF R8 #01FA
+ 0x7002000E, // 01F9 JMP #0209
+ 0x54220004, // 01FA LDINT R8 5
+ 0x1C200E08, // 01FB EQ R8 R7 R8
+ 0x7822000B, // 01FC JMPF R8 #0209
+ 0x8820034A, // 01FD GETMBR R8 R1 K74
+ 0x8C20113E, // 01FE GETMET R8 R8 K62
+ 0x7C200200, // 01FF CALL R8 1
+ 0x4C240000, // 0200 LDNIL R9
+ 0x1C241009, // 0201 EQ R9 R8 R9
+ 0x78260000, // 0202 JMPF R9 #0204
+ 0x58200005, // 0203 LDCONST R8 K5
+ 0x8C240706, // 0204 GETMET R9 R3 K6
+ 0x882C0B0E, // 0205 GETMBR R11 R5 K14
+ 0x5C301000, // 0206 MOVE R12 R8
+ 0x7C240600, // 0207 CALL R9 3
+ 0x80041200, // 0208 RET 1 R9
+ 0x70020195, // 0209 JMP #03A0
+ 0x5422003B, // 020A LDINT R8 60
+ 0x1C200C08, // 020B EQ R8 R6 R8
+ 0x7822003C, // 020C JMPF R8 #024A
+ 0x1C200F05, // 020D EQ R8 R7 K5
+ 0x78220012, // 020E JMPF R8 #0222
+ 0x88200136, // 020F GETMBR R8 R0 K54
+ 0x8C20114B, // 0210 GETMET R8 R8 K75
+ 0x7C200200, // 0211 CALL R8 1
+ 0x88240136, // 0212 GETMBR R9 R0 K54
+ 0x8C24134C, // 0213 GETMET R9 R9 K76
+ 0x7C240200, // 0214 CALL R9 1
+ 0x78220004, // 0215 JMPF R8 #021B
+ 0x78260001, // 0216 JMPF R9 #0219
+ 0x5828000D, // 0217 LDCONST R10 K13
+ 0x70020000, // 0218 JMP #021A
+ 0x58280009, // 0219 LDCONST R10 K9
+ 0x70020000, // 021A JMP #021C
+ 0x58280005, // 021B LDCONST R10 K5
+ 0x8C2C0706, // 021C GETMET R11 R3 K6
+ 0x88340B0E, // 021D GETMBR R13 R5 K14
+ 0x5C381400, // 021E MOVE R14 R10
+ 0x7C2C0600, // 021F CALL R11 3
+ 0x80041600, // 0220 RET 1 R11
+ 0x70020026, // 0221 JMP #0249
+ 0x1C200F09, // 0222 EQ R8 R7 K9
+ 0x78220011, // 0223 JMPF R8 #0236
+ 0x88200136, // 0224 GETMBR R8 R0 K54
+ 0x8820114D, // 0225 GETMBR R8 R8 K77
+ 0x4C240000, // 0226 LDNIL R9
+ 0x20241009, // 0227 NE R9 R8 R9
+ 0x78260006, // 0228 JMPF R9 #0230
+ 0x8C240706, // 0229 GETMET R9 R3 K6
+ 0x882C0B0C, // 022A GETMBR R11 R5 K12
+ 0x8C30113E, // 022B GETMET R12 R8 K62
+ 0x7C300200, // 022C CALL R12 1
+ 0x7C240600, // 022D CALL R9 3
+ 0x80041200, // 022E RET 1 R9
+ 0x70020004, // 022F JMP #0235
+ 0x8C240706, // 0230 GETMET R9 R3 K6
+ 0x882C0B18, // 0231 GETMBR R11 R5 K24
+ 0x4C300000, // 0232 LDNIL R12
+ 0x7C240600, // 0233 CALL R9 3
+ 0x80041200, // 0234 RET 1 R9
+ 0x70020012, // 0235 JMP #0249
+ 0x1C200F0D, // 0236 EQ R8 R7 K13
+ 0x78220010, // 0237 JMPF R8 #0249
+ 0x88200136, // 0238 GETMBR R8 R0 K54
+ 0x8820114D, // 0239 GETMBR R8 R8 K77
+ 0x4C240000, // 023A LDNIL R9
+ 0x20241009, // 023B NE R9 R8 R9
+ 0x78260006, // 023C JMPF R9 #0244
+ 0x8C240706, // 023D GETMET R9 R3 K6
+ 0x882C0B0C, // 023E GETMBR R11 R5 K12
+ 0x8C301143, // 023F GETMET R12 R8 K67
+ 0x7C300200, // 0240 CALL R12 1
+ 0x7C240600, // 0241 CALL R9 3
+ 0x80041200, // 0242 RET 1 R9
+ 0x70020004, // 0243 JMP #0249
+ 0x8C240706, // 0244 GETMET R9 R3 K6
+ 0x882C0B18, // 0245 GETMBR R11 R5 K24
+ 0x4C300000, // 0246 LDNIL R12
+ 0x7C240600, // 0247 CALL R9 3
+ 0x80041200, // 0248 RET 1 R9
+ 0x70020155, // 0249 JMP #03A0
+ 0x54220027, // 024A LDINT R8 40
+ 0x1C200C08, // 024B EQ R8 R6 R8
+ 0x782200BA, // 024C JMPF R8 #0308
+ 0x8C200133, // 024D GETMET R8 R0 K51
+ 0x5C280400, // 024E MOVE R10 R2
+ 0x7C200400, // 024F CALL R8 2
+ 0x1C200F05, // 0250 EQ R8 R7 K5
+ 0x78220005, // 0251 JMPF R8 #0258
+ 0x8C200706, // 0252 GETMET R8 R3 K6
+ 0x88280B0C, // 0253 GETMBR R10 R5 K12
+ 0x582C0009, // 0254 LDCONST R11 K9
+ 0x7C200600, // 0255 CALL R8 3
+ 0x80041000, // 0256 RET 1 R8
+ 0x700200AE, // 0257 JMP #0307
+ 0x1C200F09, // 0258 EQ R8 R7 K9
+ 0x78220005, // 0259 JMPF R8 #0260
+ 0x8C200706, // 025A GETMET R8 R3 K6
+ 0x88280B16, // 025B GETMBR R10 R5 K22
+ 0x582C004E, // 025C LDCONST R11 K78
0x7C200600, // 025D CALL R8 3
0x80041000, // 025E RET 1 R8
- 0x7002009D, // 025F JMP #02FE
- 0x1C200F0F, // 0260 EQ R8 R7 K15
- 0x7822000A, // 0261 JMPF R8 #026D
+ 0x700200A6, // 025F JMP #0307
+ 0x1C200F0D, // 0260 EQ R8 R7 K13
+ 0x78220006, // 0261 JMPF R8 #0269
0x8C200706, // 0262 GETMET R8 R3 K6
- 0x88280B16, // 0263 GETMBR R10 R5 K22
- 0xB82E2400, // 0264 GETNGBL R11 K18
- 0x8C2C1726, // 0265 GETMET R11 R11 K38
- 0x5834004E, // 0266 LDCONST R13 K78
- 0x50380200, // 0267 LDBOOL R14 1 0
- 0x7C2C0600, // 0268 CALL R11 3
- 0x942C174E, // 0269 GETIDX R11 R11 K78
- 0x7C200600, // 026A CALL R8 3
- 0x80041000, // 026B RET 1 R8
- 0x70020090, // 026C JMP #02FE
- 0x54220003, // 026D LDINT R8 4
- 0x1C200E08, // 026E EQ R8 R7 R8
- 0x78220005, // 026F JMPF R8 #0276
- 0x8C200706, // 0270 GETMET R8 R3 K6
- 0x88280B0C, // 0271 GETMBR R10 R5 K12
- 0x542E7FFF, // 0272 LDINT R11 32768
+ 0x88280B0C, // 0263 GETMBR R10 R5 K12
+ 0x882C0136, // 0264 GETMBR R11 R0 K54
+ 0x882C174F, // 0265 GETMBR R11 R11 K79
+ 0x7C200600, // 0266 CALL R8 3
+ 0x80041000, // 0267 RET 1 R8
+ 0x7002009D, // 0268 JMP #0307
+ 0x1C200F0F, // 0269 EQ R8 R7 K15
+ 0x7822000A, // 026A JMPF R8 #0276
+ 0x8C200706, // 026B GETMET R8 R3 K6
+ 0x88280B16, // 026C GETMBR R10 R5 K22
+ 0xB82E2400, // 026D GETNGBL R11 K18
+ 0x8C2C1726, // 026E GETMET R11 R11 K38
+ 0x58340050, // 026F LDCONST R13 K80
+ 0x50380200, // 0270 LDBOOL R14 1 0
+ 0x7C2C0600, // 0271 CALL R11 3
+ 0x942C1750, // 0272 GETIDX R11 R11 K80
0x7C200600, // 0273 CALL R8 3
0x80041000, // 0274 RET 1 R8
- 0x70020087, // 0275 JMP #02FE
- 0x54220004, // 0276 LDINT R8 5
+ 0x70020090, // 0275 JMP #0307
+ 0x54220003, // 0276 LDINT R8 4
0x1C200E08, // 0277 EQ R8 R7 R8
- 0x7822000A, // 0278 JMPF R8 #0284
+ 0x78220005, // 0278 JMPF R8 #027F
0x8C200706, // 0279 GETMET R8 R3 K6
- 0x88280B16, // 027A GETMBR R10 R5 K22
- 0xB82E2400, // 027B GETNGBL R11 K18
- 0x8C2C1726, // 027C GETMET R11 R11 K38
- 0x5834004F, // 027D LDCONST R13 K79
- 0x50380200, // 027E LDBOOL R14 1 0
- 0x7C2C0600, // 027F CALL R11 3
- 0x942C1750, // 0280 GETIDX R11 R11 K80
- 0x7C200600, // 0281 CALL R8 3
- 0x80041000, // 0282 RET 1 R8
- 0x70020079, // 0283 JMP #02FE
- 0x54220005, // 0284 LDINT R8 6
- 0x1C200E08, // 0285 EQ R8 R7 R8
- 0x78220005, // 0286 JMPF R8 #028D
- 0x8C200706, // 0287 GETMET R8 R3 K6
- 0x88280B16, // 0288 GETMBR R10 R5 K22
- 0x582C0051, // 0289 LDCONST R11 K81
+ 0x88280B0C, // 027A GETMBR R10 R5 K12
+ 0x542E7FFF, // 027B LDINT R11 32768
+ 0x7C200600, // 027C CALL R8 3
+ 0x80041000, // 027D RET 1 R8
+ 0x70020087, // 027E JMP #0307
+ 0x54220004, // 027F LDINT R8 5
+ 0x1C200E08, // 0280 EQ R8 R7 R8
+ 0x7822000A, // 0281 JMPF R8 #028D
+ 0x8C200706, // 0282 GETMET R8 R3 K6
+ 0x88280B16, // 0283 GETMBR R10 R5 K22
+ 0xB82E2400, // 0284 GETNGBL R11 K18
+ 0x8C2C1726, // 0285 GETMET R11 R11 K38
+ 0x58340051, // 0286 LDCONST R13 K81
+ 0x50380200, // 0287 LDBOOL R14 1 0
+ 0x7C2C0600, // 0288 CALL R11 3
+ 0x942C1752, // 0289 GETIDX R11 R11 K82
0x7C200600, // 028A CALL R8 3
0x80041000, // 028B RET 1 R8
- 0x70020070, // 028C JMP #02FE
- 0x54220006, // 028D LDINT R8 7
+ 0x70020079, // 028C JMP #0307
+ 0x54220005, // 028D LDINT R8 6
0x1C200E08, // 028E EQ R8 R7 R8
0x78220005, // 028F JMPF R8 #0296
0x8C200706, // 0290 GETMET R8 R3 K6
- 0x88280B0C, // 0291 GETMBR R10 R5 K12
- 0x582C0005, // 0292 LDCONST R11 K5
+ 0x88280B16, // 0291 GETMBR R10 R5 K22
+ 0x582C0053, // 0292 LDCONST R11 K83
0x7C200600, // 0293 CALL R8 3
0x80041000, // 0294 RET 1 R8
- 0x70020067, // 0295 JMP #02FE
- 0x54220007, // 0296 LDINT R8 8
+ 0x70020070, // 0295 JMP #0307
+ 0x54220006, // 0296 LDINT R8 7
0x1C200E08, // 0297 EQ R8 R7 R8
- 0x7822000B, // 0298 JMPF R8 #02A5
+ 0x78220005, // 0298 JMPF R8 #029F
0x8C200706, // 0299 GETMET R8 R3 K6
- 0x88280B16, // 029A GETMBR R10 R5 K22
- 0xB82E2400, // 029B GETNGBL R11 K18
- 0x8C2C1726, // 029C GETMET R11 R11 K38
- 0x58340052, // 029D LDCONST R13 K82
- 0x50380200, // 029E LDBOOL R14 1 0
- 0x7C2C0600, // 029F CALL R11 3
- 0x942C1753, // 02A0 GETIDX R11 R11 K83
- 0x942C1754, // 02A1 GETIDX R11 R11 K84
- 0x7C200600, // 02A2 CALL R8 3
- 0x80041000, // 02A3 RET 1 R8
- 0x70020058, // 02A4 JMP #02FE
- 0x54220008, // 02A5 LDINT R8 9
- 0x1C200E08, // 02A6 EQ R8 R7 R8
- 0x78220005, // 02A7 JMPF R8 #02AE
- 0x8C200706, // 02A8 GETMET R8 R3 K6
- 0x88280B0C, // 02A9 GETMBR R10 R5 K12
- 0x582C0009, // 02AA LDCONST R11 K9
+ 0x88280B0C, // 029A GETMBR R10 R5 K12
+ 0x582C0005, // 029B LDCONST R11 K5
+ 0x7C200600, // 029C CALL R8 3
+ 0x80041000, // 029D RET 1 R8
+ 0x70020067, // 029E JMP #0307
+ 0x54220007, // 029F LDINT R8 8
+ 0x1C200E08, // 02A0 EQ R8 R7 R8
+ 0x7822000B, // 02A1 JMPF R8 #02AE
+ 0x8C200706, // 02A2 GETMET R8 R3 K6
+ 0x88280B16, // 02A3 GETMBR R10 R5 K22
+ 0xB82E2400, // 02A4 GETNGBL R11 K18
+ 0x8C2C1726, // 02A5 GETMET R11 R11 K38
+ 0x58340054, // 02A6 LDCONST R13 K84
+ 0x50380200, // 02A7 LDBOOL R14 1 0
+ 0x7C2C0600, // 02A8 CALL R11 3
+ 0x942C1755, // 02A9 GETIDX R11 R11 K85
+ 0x942C1756, // 02AA GETIDX R11 R11 K86
0x7C200600, // 02AB CALL R8 3
0x80041000, // 02AC RET 1 R8
- 0x7002004F, // 02AD JMP #02FE
- 0x54220009, // 02AE LDINT R8 10
+ 0x70020058, // 02AD JMP #0307
+ 0x54220008, // 02AE LDINT R8 9
0x1C200E08, // 02AF EQ R8 R7 R8
- 0x78220015, // 02B0 JMPF R8 #02C7
- 0xB8222400, // 02B1 GETNGBL R8 K18
- 0x8C201126, // 02B2 GETMET R8 R8 K38
- 0x58280052, // 02B3 LDCONST R10 K82
- 0x502C0200, // 02B4 LDBOOL R11 1 0
- 0x7C200600, // 02B5 CALL R8 3
- 0x94201153, // 02B6 GETIDX R8 R8 K83
- 0x94201155, // 02B7 GETIDX R8 R8 K85
- 0x8C24091B, // 02B8 GETMET R9 R4 K27
- 0x5C2C1000, // 02B9 MOVE R11 R8
- 0x58300056, // 02BA LDCONST R12 K86
- 0x7C240600, // 02BB CALL R9 3
- 0x24281305, // 02BC GT R10 R9 K5
- 0x782A0002, // 02BD JMPF R10 #02C1
- 0x04281309, // 02BE SUB R10 R9 K9
- 0x402A0A0A, // 02BF CONNECT R10 K5 R10
- 0x9420100A, // 02C0 GETIDX R8 R8 R10
- 0x8C280706, // 02C1 GETMET R10 R3 K6
- 0x88300B16, // 02C2 GETMBR R12 R5 K22
- 0x5C341000, // 02C3 MOVE R13 R8
- 0x7C280600, // 02C4 CALL R10 3
- 0x80041400, // 02C5 RET 1 R10
- 0x70020036, // 02C6 JMP #02FE
- 0x5422000E, // 02C7 LDINT R8 15
- 0x1C200E08, // 02C8 EQ R8 R7 R8
- 0x7822000B, // 02C9 JMPF R8 #02D6
- 0x8C200706, // 02CA GETMET R8 R3 K6
- 0x88280B16, // 02CB GETMBR R10 R5 K22
- 0xB82E2400, // 02CC GETNGBL R11 K18
- 0x8C2C1725, // 02CD GETMET R11 R11 K37
- 0x7C2C0200, // 02CE CALL R11 1
- 0x8C2C171B, // 02CF GETMET R11 R11 K27
- 0x5834001C, // 02D0 LDCONST R13 K28
- 0x5838001D, // 02D1 LDCONST R14 K29
- 0x7C2C0600, // 02D2 CALL R11 3
- 0x7C200600, // 02D3 CALL R8 3
- 0x80041000, // 02D4 RET 1 R8
- 0x70020027, // 02D5 JMP #02FE
- 0x54220010, // 02D6 LDINT R8 17
- 0x1C200E08, // 02D7 EQ R8 R7 R8
- 0x78220005, // 02D8 JMPF R8 #02DF
- 0x8C200706, // 02D9 GETMET R8 R3 K6
- 0x88280B10, // 02DA GETMBR R10 R5 K16
- 0x582C0009, // 02DB LDCONST R11 K9
+ 0x78220005, // 02B0 JMPF R8 #02B7
+ 0x8C200706, // 02B1 GETMET R8 R3 K6
+ 0x88280B0C, // 02B2 GETMBR R10 R5 K12
+ 0x582C0009, // 02B3 LDCONST R11 K9
+ 0x7C200600, // 02B4 CALL R8 3
+ 0x80041000, // 02B5 RET 1 R8
+ 0x7002004F, // 02B6 JMP #0307
+ 0x54220009, // 02B7 LDINT R8 10
+ 0x1C200E08, // 02B8 EQ R8 R7 R8
+ 0x78220015, // 02B9 JMPF R8 #02D0
+ 0xB8222400, // 02BA GETNGBL R8 K18
+ 0x8C201126, // 02BB GETMET R8 R8 K38
+ 0x58280054, // 02BC LDCONST R10 K84
+ 0x502C0200, // 02BD LDBOOL R11 1 0
+ 0x7C200600, // 02BE CALL R8 3
+ 0x94201155, // 02BF GETIDX R8 R8 K85
+ 0x94201157, // 02C0 GETIDX R8 R8 K87
+ 0x8C24091B, // 02C1 GETMET R9 R4 K27
+ 0x5C2C1000, // 02C2 MOVE R11 R8
+ 0x58300058, // 02C3 LDCONST R12 K88
+ 0x7C240600, // 02C4 CALL R9 3
+ 0x24281305, // 02C5 GT R10 R9 K5
+ 0x782A0002, // 02C6 JMPF R10 #02CA
+ 0x04281309, // 02C7 SUB R10 R9 K9
+ 0x402A0A0A, // 02C8 CONNECT R10 K5 R10
+ 0x9420100A, // 02C9 GETIDX R8 R8 R10
+ 0x8C280706, // 02CA GETMET R10 R3 K6
+ 0x88300B16, // 02CB GETMBR R12 R5 K22
+ 0x5C341000, // 02CC MOVE R13 R8
+ 0x7C280600, // 02CD CALL R10 3
+ 0x80041400, // 02CE RET 1 R10
+ 0x70020036, // 02CF JMP #0307
+ 0x5422000E, // 02D0 LDINT R8 15
+ 0x1C200E08, // 02D1 EQ R8 R7 R8
+ 0x7822000B, // 02D2 JMPF R8 #02DF
+ 0x8C200706, // 02D3 GETMET R8 R3 K6
+ 0x88280B16, // 02D4 GETMBR R10 R5 K22
+ 0xB82E2400, // 02D5 GETNGBL R11 K18
+ 0x8C2C1725, // 02D6 GETMET R11 R11 K37
+ 0x7C2C0200, // 02D7 CALL R11 1
+ 0x8C2C171B, // 02D8 GETMET R11 R11 K27
+ 0x5834001C, // 02D9 LDCONST R13 K28
+ 0x5838001D, // 02DA LDCONST R14 K29
+ 0x7C2C0600, // 02DB CALL R11 3
0x7C200600, // 02DC CALL R8 3
0x80041000, // 02DD RET 1 R8
- 0x7002001E, // 02DE JMP #02FE
- 0x54220011, // 02DF LDINT R8 18
+ 0x70020027, // 02DE JMP #0307
+ 0x54220010, // 02DF LDINT R8 17
0x1C200E08, // 02E0 EQ R8 R7 R8
- 0x7822000B, // 02E1 JMPF R8 #02EE
+ 0x78220005, // 02E1 JMPF R8 #02E8
0x8C200706, // 02E2 GETMET R8 R3 K6
- 0x88280B16, // 02E3 GETMBR R10 R5 K22
- 0xB82E2400, // 02E4 GETNGBL R11 K18
- 0x8C2C1725, // 02E5 GETMET R11 R11 K37
- 0x7C2C0200, // 02E6 CALL R11 1
- 0x8C2C171B, // 02E7 GETMET R11 R11 K27
- 0x5834001C, // 02E8 LDCONST R13 K28
- 0x5838001D, // 02E9 LDCONST R14 K29
- 0x7C2C0600, // 02EA CALL R11 3
- 0x7C200600, // 02EB CALL R8 3
- 0x80041000, // 02EC RET 1 R8
- 0x7002000F, // 02ED JMP #02FE
- 0x54220012, // 02EE LDINT R8 19
- 0x1C200E08, // 02EF EQ R8 R7 R8
- 0x7822000C, // 02F0 JMPF R8 #02FE
- 0x8C200B0A, // 02F1 GETMET R8 R5 K10
- 0x7C200200, // 02F2 CALL R8 1
- 0x8C24110B, // 02F3 GETMET R9 R8 K11
- 0x582C0005, // 02F4 LDCONST R11 K5
- 0x88300B0C, // 02F5 GETMBR R12 R5 K12
- 0x5834000F, // 02F6 LDCONST R13 K15
- 0x7C240800, // 02F7 CALL R9 4
- 0x8C24110B, // 02F8 GETMET R9 R8 K11
- 0x582C0009, // 02F9 LDCONST R11 K9
- 0x88300B0C, // 02FA GETMBR R12 R5 K12
- 0x5834000F, // 02FB LDCONST R13 K15
- 0x7C240800, // 02FC CALL R9 4
- 0x80041000, // 02FD RET 1 R8
- 0x700200A8, // 02FE JMP #03A8
- 0x5422003E, // 02FF LDINT R8 63
- 0x1C200C08, // 0300 EQ R8 R6 R8
- 0x78220000, // 0301 JMPF R8 #0303
- 0x700200A4, // 0302 JMP #03A8
- 0x54220029, // 0303 LDINT R8 42
- 0x1C200C08, // 0304 EQ R8 R6 R8
- 0x7822001D, // 0305 JMPF R8 #0324
- 0x1C200F05, // 0306 EQ R8 R7 K5
- 0x78220003, // 0307 JMPF R8 #030C
- 0x8C200B11, // 0308 GETMET R8 R5 K17
- 0x7C200200, // 0309 CALL R8 1
- 0x80041000, // 030A RET 1 R8
- 0x70020016, // 030B JMP #0323
- 0x1C200F09, // 030C EQ R8 R7 K9
- 0x78220005, // 030D JMPF R8 #0314
- 0x8C200706, // 030E GETMET R8 R3 K6
- 0x88280B10, // 030F GETMBR R10 R5 K16
- 0x582C0005, // 0310 LDCONST R11 K5
- 0x7C200600, // 0311 CALL R8 3
- 0x80041000, // 0312 RET 1 R8
- 0x7002000E, // 0313 JMP #0323
- 0x1C200F0D, // 0314 EQ R8 R7 K13
- 0x78220005, // 0315 JMPF R8 #031C
- 0x8C200706, // 0316 GETMET R8 R3 K6
- 0x88280B0E, // 0317 GETMBR R10 R5 K14
- 0x582C0009, // 0318 LDCONST R11 K9
- 0x7C200600, // 0319 CALL R8 3
- 0x80041000, // 031A RET 1 R8
- 0x70020006, // 031B JMP #0323
- 0x1C200F0F, // 031C EQ R8 R7 K15
- 0x78220004, // 031D JMPF R8 #0323
- 0x8C200706, // 031E GETMET R8 R3 K6
- 0x88280B18, // 031F GETMBR R10 R5 K24
- 0x4C2C0000, // 0320 LDNIL R11
- 0x7C200600, // 0321 CALL R8 3
- 0x80041000, // 0322 RET 1 R8
- 0x70020083, // 0323 JMP #03A8
- 0x5422002A, // 0324 LDINT R8 43
- 0x1C200C08, // 0325 EQ R8 R6 R8
- 0x78220016, // 0326 JMPF R8 #033E
- 0x1C200F05, // 0327 EQ R8 R7 K5
- 0x78220007, // 0328 JMPF R8 #0331
- 0x8C200706, // 0329 GETMET R8 R3 K6
- 0x88280B16, // 032A GETMBR R10 R5 K22
- 0xB82E2400, // 032B GETNGBL R11 K18
- 0x8C2C1757, // 032C GETMET R11 R11 K87
- 0x7C2C0200, // 032D CALL R11 1
- 0x7C200600, // 032E CALL R8 3
- 0x80041000, // 032F RET 1 R8
- 0x7002000B, // 0330 JMP #033D
- 0x1C200F09, // 0331 EQ R8 R7 K9
- 0x78220009, // 0332 JMPF R8 #033D
- 0x8C200B11, // 0333 GETMET R8 R5 K17
- 0x7C200200, // 0334 CALL R8 1
- 0x8C24110B, // 0335 GETMET R9 R8 K11
- 0x4C2C0000, // 0336 LDNIL R11
- 0x88300B16, // 0337 GETMBR R12 R5 K22
- 0xB8362400, // 0338 GETNGBL R13 K18
- 0x8C341B57, // 0339 GETMET R13 R13 K87
- 0x7C340200, // 033A CALL R13 1
- 0x7C240800, // 033B CALL R9 4
- 0x80041000, // 033C RET 1 R8
- 0x70020069, // 033D JMP #03A8
- 0x5422002B, // 033E LDINT R8 44
- 0x1C200C08, // 033F EQ R8 R6 R8
- 0x7822001C, // 0340 JMPF R8 #035E
- 0x1C200F05, // 0341 EQ R8 R7 K5
- 0x78220005, // 0342 JMPF R8 #0349
- 0x8C200706, // 0343 GETMET R8 R3 K6
- 0x88280B0E, // 0344 GETMBR R10 R5 K14
- 0x582C0009, // 0345 LDCONST R11 K9
- 0x7C200600, // 0346 CALL R8 3
- 0x80041000, // 0347 RET 1 R8
- 0x70020013, // 0348 JMP #035D
- 0x1C200F09, // 0349 EQ R8 R7 K9
- 0x78220005, // 034A JMPF R8 #0351
- 0x8C200706, // 034B GETMET R8 R3 K6
- 0x88280B0E, // 034C GETMBR R10 R5 K14
- 0x542E0003, // 034D LDINT R11 4
- 0x7C200600, // 034E CALL R8 3
- 0x80041000, // 034F RET 1 R8
- 0x7002000B, // 0350 JMP #035D
- 0x1C200F0D, // 0351 EQ R8 R7 K13
- 0x78220009, // 0352 JMPF R8 #035D
- 0x8C200B11, // 0353 GETMET R8 R5 K17
- 0x7C200200, // 0354 CALL R8 1
- 0x8C24110B, // 0355 GETMET R9 R8 K11
- 0x4C2C0000, // 0356 LDNIL R11
- 0x8C300B58, // 0357 GETMET R12 R5 K88
- 0x88380B0E, // 0358 GETMBR R14 R5 K14
- 0x543E0003, // 0359 LDINT R15 4
- 0x7C300600, // 035A CALL R12 3
- 0x7C240600, // 035B CALL R9 3
- 0x80041000, // 035C RET 1 R8
- 0x70020049, // 035D JMP #03A8
- 0x54220030, // 035E LDINT R8 49
- 0x1C200C08, // 035F EQ R8 R6 R8
- 0x78220010, // 0360 JMPF R8 #0372
- 0x1C200F0F, // 0361 EQ R8 R7 K15
- 0x78220005, // 0362 JMPF R8 #0369
- 0x8C200706, // 0363 GETMET R8 R3 K6
- 0x88280B0E, // 0364 GETMBR R10 R5 K14
- 0x542E001D, // 0365 LDINT R11 30
- 0x7C200600, // 0366 CALL R8 3
- 0x80041000, // 0367 RET 1 R8
- 0x70020007, // 0368 JMP #0371
- 0x5422FFFB, // 0369 LDINT R8 65532
- 0x1C200E08, // 036A EQ R8 R7 R8
+ 0x88280B10, // 02E3 GETMBR R10 R5 K16
+ 0x582C0009, // 02E4 LDCONST R11 K9
+ 0x7C200600, // 02E5 CALL R8 3
+ 0x80041000, // 02E6 RET 1 R8
+ 0x7002001E, // 02E7 JMP #0307
+ 0x54220011, // 02E8 LDINT R8 18
+ 0x1C200E08, // 02E9 EQ R8 R7 R8
+ 0x7822000B, // 02EA JMPF R8 #02F7
+ 0x8C200706, // 02EB GETMET R8 R3 K6
+ 0x88280B16, // 02EC GETMBR R10 R5 K22
+ 0xB82E2400, // 02ED GETNGBL R11 K18
+ 0x8C2C1725, // 02EE GETMET R11 R11 K37
+ 0x7C2C0200, // 02EF CALL R11 1
+ 0x8C2C171B, // 02F0 GETMET R11 R11 K27
+ 0x5834001C, // 02F1 LDCONST R13 K28
+ 0x5838001D, // 02F2 LDCONST R14 K29
+ 0x7C2C0600, // 02F3 CALL R11 3
+ 0x7C200600, // 02F4 CALL R8 3
+ 0x80041000, // 02F5 RET 1 R8
+ 0x7002000F, // 02F6 JMP #0307
+ 0x54220012, // 02F7 LDINT R8 19
+ 0x1C200E08, // 02F8 EQ R8 R7 R8
+ 0x7822000C, // 02F9 JMPF R8 #0307
+ 0x8C200B0A, // 02FA GETMET R8 R5 K10
+ 0x7C200200, // 02FB CALL R8 1
+ 0x8C24110B, // 02FC GETMET R9 R8 K11
+ 0x582C0005, // 02FD LDCONST R11 K5
+ 0x88300B0C, // 02FE GETMBR R12 R5 K12
+ 0x5834000F, // 02FF LDCONST R13 K15
+ 0x7C240800, // 0300 CALL R9 4
+ 0x8C24110B, // 0301 GETMET R9 R8 K11
+ 0x582C0009, // 0302 LDCONST R11 K9
+ 0x88300B0C, // 0303 GETMBR R12 R5 K12
+ 0x5834000F, // 0304 LDCONST R13 K15
+ 0x7C240800, // 0305 CALL R9 4
+ 0x80041000, // 0306 RET 1 R8
+ 0x70020097, // 0307 JMP #03A0
+ 0x5422003E, // 0308 LDINT R8 63
+ 0x1C200C08, // 0309 EQ R8 R6 R8
+ 0x78220000, // 030A JMPF R8 #030C
+ 0x70020093, // 030B JMP #03A0
+ 0x54220029, // 030C LDINT R8 42
+ 0x1C200C08, // 030D EQ R8 R6 R8
+ 0x7822001D, // 030E JMPF R8 #032D
+ 0x1C200F05, // 030F EQ R8 R7 K5
+ 0x78220003, // 0310 JMPF R8 #0315
+ 0x8C200B11, // 0311 GETMET R8 R5 K17
+ 0x7C200200, // 0312 CALL R8 1
+ 0x80041000, // 0313 RET 1 R8
+ 0x70020016, // 0314 JMP #032C
+ 0x1C200F09, // 0315 EQ R8 R7 K9
+ 0x78220005, // 0316 JMPF R8 #031D
+ 0x8C200706, // 0317 GETMET R8 R3 K6
+ 0x88280B10, // 0318 GETMBR R10 R5 K16
+ 0x582C0005, // 0319 LDCONST R11 K5
+ 0x7C200600, // 031A CALL R8 3
+ 0x80041000, // 031B RET 1 R8
+ 0x7002000E, // 031C JMP #032C
+ 0x1C200F0D, // 031D EQ R8 R7 K13
+ 0x78220005, // 031E JMPF R8 #0325
+ 0x8C200706, // 031F GETMET R8 R3 K6
+ 0x88280B0E, // 0320 GETMBR R10 R5 K14
+ 0x582C0009, // 0321 LDCONST R11 K9
+ 0x7C200600, // 0322 CALL R8 3
+ 0x80041000, // 0323 RET 1 R8
+ 0x70020006, // 0324 JMP #032C
+ 0x1C200F0F, // 0325 EQ R8 R7 K15
+ 0x78220004, // 0326 JMPF R8 #032C
+ 0x8C200706, // 0327 GETMET R8 R3 K6
+ 0x88280B18, // 0328 GETMBR R10 R5 K24
+ 0x4C2C0000, // 0329 LDNIL R11
+ 0x7C200600, // 032A CALL R8 3
+ 0x80041000, // 032B RET 1 R8
+ 0x70020072, // 032C JMP #03A0
+ 0x5422002A, // 032D LDINT R8 43
+ 0x1C200C08, // 032E EQ R8 R6 R8
+ 0x78220016, // 032F JMPF R8 #0347
+ 0x1C200F05, // 0330 EQ R8 R7 K5
+ 0x78220007, // 0331 JMPF R8 #033A
+ 0x8C200706, // 0332 GETMET R8 R3 K6
+ 0x88280B16, // 0333 GETMBR R10 R5 K22
+ 0xB82E2400, // 0334 GETNGBL R11 K18
+ 0x8C2C1759, // 0335 GETMET R11 R11 K89
+ 0x7C2C0200, // 0336 CALL R11 1
+ 0x7C200600, // 0337 CALL R8 3
+ 0x80041000, // 0338 RET 1 R8
+ 0x7002000B, // 0339 JMP #0346
+ 0x1C200F09, // 033A EQ R8 R7 K9
+ 0x78220009, // 033B JMPF R8 #0346
+ 0x8C200B11, // 033C GETMET R8 R5 K17
+ 0x7C200200, // 033D CALL R8 1
+ 0x8C24110B, // 033E GETMET R9 R8 K11
+ 0x4C2C0000, // 033F LDNIL R11
+ 0x88300B16, // 0340 GETMBR R12 R5 K22
+ 0xB8362400, // 0341 GETNGBL R13 K18
+ 0x8C341B59, // 0342 GETMET R13 R13 K89
+ 0x7C340200, // 0343 CALL R13 1
+ 0x7C240800, // 0344 CALL R9 4
+ 0x80041000, // 0345 RET 1 R8
+ 0x70020058, // 0346 JMP #03A0
+ 0x5422002B, // 0347 LDINT R8 44
+ 0x1C200C08, // 0348 EQ R8 R6 R8
+ 0x7822001C, // 0349 JMPF R8 #0367
+ 0x1C200F05, // 034A EQ R8 R7 K5
+ 0x78220005, // 034B JMPF R8 #0352
+ 0x8C200706, // 034C GETMET R8 R3 K6
+ 0x88280B0E, // 034D GETMBR R10 R5 K14
+ 0x582C0009, // 034E LDCONST R11 K9
+ 0x7C200600, // 034F CALL R8 3
+ 0x80041000, // 0350 RET 1 R8
+ 0x70020013, // 0351 JMP #0366
+ 0x1C200F09, // 0352 EQ R8 R7 K9
+ 0x78220005, // 0353 JMPF R8 #035A
+ 0x8C200706, // 0354 GETMET R8 R3 K6
+ 0x88280B0E, // 0355 GETMBR R10 R5 K14
+ 0x542E0003, // 0356 LDINT R11 4
+ 0x7C200600, // 0357 CALL R8 3
+ 0x80041000, // 0358 RET 1 R8
+ 0x7002000B, // 0359 JMP #0366
+ 0x1C200F0D, // 035A EQ R8 R7 K13
+ 0x78220009, // 035B JMPF R8 #0366
+ 0x8C200B11, // 035C GETMET R8 R5 K17
+ 0x7C200200, // 035D CALL R8 1
+ 0x8C24110B, // 035E GETMET R9 R8 K11
+ 0x4C2C0000, // 035F LDNIL R11
+ 0x8C300B5A, // 0360 GETMET R12 R5 K90
+ 0x88380B0E, // 0361 GETMBR R14 R5 K14
+ 0x543E0003, // 0362 LDINT R15 4
+ 0x7C300600, // 0363 CALL R12 3
+ 0x7C240600, // 0364 CALL R9 3
+ 0x80041000, // 0365 RET 1 R8
+ 0x70020038, // 0366 JMP #03A0
+ 0x54220030, // 0367 LDINT R8 49
+ 0x1C200C08, // 0368 EQ R8 R6 R8
+ 0x78220007, // 0369 JMPF R8 #0372
+ 0x1C200F0F, // 036A EQ R8 R7 K15
0x78220004, // 036B JMPF R8 #0371
0x8C200706, // 036C GETMET R8 R3 K6
- 0x88280B2A, // 036D GETMBR R10 R5 K42
- 0x542E0003, // 036E LDINT R11 4
+ 0x88280B0E, // 036D GETMBR R10 R5 K14
+ 0x542E001D, // 036E LDINT R11 30
0x7C200600, // 036F CALL R8 3
0x80041000, // 0370 RET 1 R8
- 0x70020035, // 0371 JMP #03A8
+ 0x7002002D, // 0371 JMP #03A0
0x5422001C, // 0372 LDINT R8 29
0x1C200C08, // 0373 EQ R8 R6 R8
- 0x78220029, // 0374 JMPF R8 #039F
- 0x1C200F0F, // 0375 EQ R8 R7 K15
- 0x7822001D, // 0376 JMPF R8 #0395
+ 0x7822002A, // 0374 JMPF R8 #03A0
+ 0x1C200F0D, // 0375 EQ R8 R7 K13
+ 0x78220008, // 0376 JMPF R8 #0380
0x8C200B11, // 0377 GETMET R8 R5 K17
0x7C200200, // 0378 CALL R8 1
- 0x88240136, // 0379 GETMBR R9 R0 K54
- 0x8C241359, // 037A GETMET R9 R9 K89
- 0x502C0200, // 037B LDBOOL R11 1 0
- 0x7C240400, // 037C CALL R9 2
- 0x88280136, // 037D GETMBR R10 R0 K54
- 0x8828155A, // 037E GETMBR R10 R10 K90
- 0x602C0010, // 037F GETGBL R11 G16
- 0x5C301200, // 0380 MOVE R12 R9
- 0x7C2C0200, // 0381 CALL R11 1
- 0xA802000C, // 0382 EXBLK 0 #0390
- 0x5C301600, // 0383 MOVE R12 R11
- 0x7C300000, // 0384 CALL R12 0
- 0x5C341400, // 0385 MOVE R13 R10
- 0x78360002, // 0386 JMPF R13 #038A
- 0x5436FEFF, // 0387 LDINT R13 65280
- 0x1434180D, // 0388 LT R13 R12 R13
- 0x78360004, // 0389 JMPF R13 #038F
- 0x8C34110B, // 038A GETMET R13 R8 K11
- 0x4C3C0000, // 038B LDNIL R15
- 0x88400B0C, // 038C GETMBR R16 R5 K12
- 0x5C441800, // 038D MOVE R17 R12
- 0x7C340800, // 038E CALL R13 4
- 0x7001FFF2, // 038F JMP #0383
- 0x582C003D, // 0390 LDCONST R11 K61
- 0xAC2C0200, // 0391 CATCH R11 1 0
- 0xB0080000, // 0392 RAISE 2 R0 R0
- 0x80041000, // 0393 RET 1 R8
- 0x70020008, // 0394 JMP #039E
- 0x60200003, // 0395 GETGBL R8 G3
- 0x5C240000, // 0396 MOVE R9 R0
- 0x7C200200, // 0397 CALL R8 1
- 0x8C20115B, // 0398 GETMET R8 R8 K91
- 0x5C280200, // 0399 MOVE R10 R1
- 0x5C2C0400, // 039A MOVE R11 R2
- 0x5C300600, // 039B MOVE R12 R3
- 0x7C200800, // 039C CALL R8 4
- 0x80041000, // 039D RET 1 R8
- 0x70020008, // 039E JMP #03A8
- 0x60200003, // 039F GETGBL R8 G3
- 0x5C240000, // 03A0 MOVE R9 R0
- 0x7C200200, // 03A1 CALL R8 1
- 0x8C20115B, // 03A2 GETMET R8 R8 K91
- 0x5C280200, // 03A3 MOVE R10 R1
- 0x5C2C0400, // 03A4 MOVE R11 R2
- 0x5C300600, // 03A5 MOVE R12 R3
- 0x7C200800, // 03A6 CALL R8 4
- 0x80041000, // 03A7 RET 1 R8
- 0x80000000, // 03A8 RET 0
+ 0x8C24110B, // 0379 GETMET R9 R8 K11
+ 0x4C2C0000, // 037A LDNIL R11
+ 0x88300B0C, // 037B GETMBR R12 R5 K12
+ 0x5436001E, // 037C LDINT R13 31
+ 0x7C240800, // 037D CALL R9 4
+ 0x80041000, // 037E RET 1 R8
+ 0x7002001F, // 037F JMP #03A0
+ 0x1C200F0F, // 0380 EQ R8 R7 K15
+ 0x7822001D, // 0381 JMPF R8 #03A0
+ 0x8C200B11, // 0382 GETMET R8 R5 K17
+ 0x7C200200, // 0383 CALL R8 1
+ 0x88240136, // 0384 GETMBR R9 R0 K54
+ 0x8C24135B, // 0385 GETMET R9 R9 K91
+ 0x502C0200, // 0386 LDBOOL R11 1 0
+ 0x7C240400, // 0387 CALL R9 2
+ 0x88280136, // 0388 GETMBR R10 R0 K54
+ 0x8828155C, // 0389 GETMBR R10 R10 K92
+ 0x602C0010, // 038A GETGBL R11 G16
+ 0x5C301200, // 038B MOVE R12 R9
+ 0x7C2C0200, // 038C CALL R11 1
+ 0xA802000D, // 038D EXBLK 0 #039C
+ 0x5C301600, // 038E MOVE R12 R11
+ 0x7C300000, // 038F CALL R12 0
+ 0x5C341400, // 0390 MOVE R13 R10
+ 0x78360003, // 0391 JMPF R13 #0396
+ 0xB8360200, // 0392 GETNGBL R13 K1
+ 0x88341B3D, // 0393 GETMBR R13 R13 K61
+ 0x2034180D, // 0394 NE R13 R12 R13
+ 0x78360004, // 0395 JMPF R13 #039B
+ 0x8C34110B, // 0396 GETMET R13 R8 K11
+ 0x4C3C0000, // 0397 LDNIL R15
+ 0x88400B0C, // 0398 GETMBR R16 R5 K12
+ 0x5C441800, // 0399 MOVE R17 R12
+ 0x7C340800, // 039A CALL R13 4
+ 0x7001FFF1, // 039B JMP #038E
+ 0x582C003F, // 039C LDCONST R11 K63
+ 0xAC2C0200, // 039D CATCH R11 1 0
+ 0xB0080000, // 039E RAISE 2 R0 R0
+ 0x80041000, // 039F RET 1 R8
+ 0x60200003, // 03A0 GETGBL R8 G3
+ 0x5C240000, // 03A1 MOVE R9 R0
+ 0x7C200200, // 03A2 CALL R8 1
+ 0x8C20115D, // 03A3 GETMET R8 R8 K93
+ 0x5C280200, // 03A4 MOVE R10 R1
+ 0x5C2C0400, // 03A5 MOVE R11 R2
+ 0x5C300600, // 03A6 MOVE R12 R3
+ 0x7C200800, // 03A7 CALL R8 4
+ 0x80041000, // 03A8 RET 1 R8
})
)
);
@@ -1201,7 +1203,7 @@ be_local_closure(Matter_Plugin_Root_write_attribute, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
be_nested_proto(
- 30, /* nstack */
+ 31, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1237,7 +1239,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
),
}),
1, /* has constants */
- ( &(const bvalue[100]) { /* constants */
+ ( &(const bvalue[102]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
@@ -1316,32 +1318,34 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
/* K75 */ be_nested_str_weak(is_PASE),
/* K76 */ be_nested_str_weak(set_expire_in_seconds),
/* K77 */ be_nested_str_weak(log_new_fabric),
- /* K78 */ be_nested_str_weak(set_fabric_label),
- /* K79 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27),
- /* K80 */ be_nested_str_weak(get_fabric_id),
- /* K81 */ be_nested_str_weak(tohex),
- /* K82 */ be_nested_str_weak(fabric_index_X3A),
- /* K83 */ be_nested_str_weak(active_fabrics),
- /* K84 */ be_nested_str_weak(get_fabric_index),
- /* K85 */ be_nested_str_weak(set_timer),
- /* K86 */ be_nested_str_weak(stop_iteration),
- /* K87 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28),
- /* K88 */ be_nested_str_weak(_X29_X20not_X20found),
- /* K89 */ be_nested_str_weak(INVALID_ACTION),
- /* K90 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29),
- /* K91 */ be_nested_str_weak(INVALID_DATA_TYPE),
- /* K92 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters),
- /* K93 */ be_nested_str_weak(CONSTRAINT_ERROR),
- /* K94 */ be_nested_str_weak(start_basic_commissioning),
- /* K95 */ be_nested_str_weak(get_fabric),
- /* K96 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D),
- /* K97 */ be_nested_str_weak(start_root_basic_commissioning),
- /* K98 */ be_nested_str_weak(stop_basic_commissioning),
- /* K99 */ be_nested_str_weak(invoke_request),
+ /* K78 */ be_nested_str_weak(assign_fabric_index),
+ /* K79 */ be_nested_str_weak(get_fabric_index),
+ /* K80 */ be_nested_str_weak(set_fabric_label),
+ /* K81 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27),
+ /* K82 */ be_nested_str_weak(get_fabric_id),
+ /* K83 */ be_nested_str_weak(tohex),
+ /* K84 */ be_nested_str_weak(get_fabric),
+ /* K85 */ be_nested_str_weak(fabric_index_X3A),
+ /* K86 */ be_nested_str_weak(active_fabrics),
+ /* K87 */ be_nested_str_weak(mark_for_deletion),
+ /* K88 */ be_nested_str_weak(set_timer),
+ /* K89 */ be_nested_str_weak(stop_iteration),
+ /* K90 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28),
+ /* K91 */ be_nested_str_weak(_X29_X20not_X20found),
+ /* K92 */ be_nested_str_weak(INVALID_ACTION),
+ /* K93 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29),
+ /* K94 */ be_nested_str_weak(INVALID_DATA_TYPE),
+ /* K95 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters),
+ /* K96 */ be_nested_str_weak(CONSTRAINT_ERROR),
+ /* K97 */ be_nested_str_weak(start_basic_commissioning),
+ /* K98 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D),
+ /* K99 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K100 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K101 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[712]) { /* code */
+ ( &(const binstruction[745]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0xB8160200, // 0001 GETNGBL R5 K1
0x88140B02, // 0002 GETMBR R5 R5 K2
@@ -1442,10 +1446,10 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x80041000, // 0061 RET 1 R8
0x70020000, // 0062 JMP #0064
0xB0063119, // 0063 RAISE 1 K24 K25
- 0x70020260, // 0064 JMP #02C6
+ 0x70020281, // 0064 JMP #02E7
0x5422003D, // 0065 LDINT R8 62
0x1C200C08, // 0066 EQ R8 R6 R8
- 0x782201C1, // 0067 JMPF R8 #022A
+ 0x782201E2, // 0067 JMPF R8 #024B
0x1C200F0E, // 0068 EQ R8 R7 K14
0x7822001D, // 0069 JMPF R8 #0088
0x8C200506, // 006A GETMET R8 R2 K6
@@ -1477,7 +1481,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x7C280800, // 0084 CALL R10 4
0x900E0910, // 0085 SETMBR R3 K4 K16
0x80041200, // 0086 RET 1 R9
- 0x700201A0, // 0087 JMP #0229
+ 0x700201C1, // 0087 JMP #024A
0x1C200F05, // 0088 EQ R8 R7 K5
0x7822003C, // 0089 JMPF R8 #00C7
0x8C200506, // 008A GETMET R8 R2 K6
@@ -1540,7 +1544,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x7C3C0800, // 00C3 CALL R15 4
0x900E0907, // 00C4 SETMBR R3 K4 K7
0x80041C00, // 00C5 RET 1 R14
- 0x70020161, // 00C6 JMP #0229
+ 0x70020182, // 00C6 JMP #024A
0x54220003, // 00C7 LDINT R8 4
0x1C200E08, // 00C8 EQ R8 R7 R8
0x7822003C, // 00C9 JMPF R8 #0107
@@ -1604,7 +1608,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x54420004, // 0103 LDINT R16 5
0x900E0810, // 0104 SETMBR R3 K4 R16
0x80041E00, // 0105 RET 1 R15
- 0x70020121, // 0106 JMP #0229
+ 0x70020142, // 0106 JMP #024A
0x5422000A, // 0107 LDINT R8 11
0x1C200E08, // 0108 EQ R8 R7 R8
0x7822000B, // 0109 JMPF R8 #0116
@@ -1619,10 +1623,10 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x900E3409, // 0112 SETMBR R3 K26 R9
0x4C240000, // 0113 LDNIL R9
0x80041200, // 0114 RET 1 R9
- 0x70020112, // 0115 JMP #0229
+ 0x70020133, // 0115 JMP #024A
0x54220005, // 0116 LDINT R8 6
0x1C200E08, // 0117 EQ R8 R7 R8
- 0x782200B8, // 0118 JMPF R8 #01D2
+ 0x782200BB, // 0118 JMPF R8 #01D5
0xB8224400, // 0119 GETNGBL R8 K34
0x8C20112C, // 011A GETMET R8 R8 K44
0x60280008, // 011B GETGBL R10 G8
@@ -1791,269 +1795,302 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x7C600400, // 01BE CALL R24 2
0x8C601B4D, // 01BF GETMET R24 R13 K77
0x7C600200, // 01C0 CALL R24 1
- 0x8C600B09, // 01C1 GETMET R24 R5 K9
+ 0x8C601B4E, // 01C1 GETMET R24 R13 K78
0x7C600200, // 01C2 CALL R24 1
- 0x8C64310A, // 01C3 GETMET R25 R24 K10
- 0x586C0005, // 01C4 LDCONST R27 K5
- 0x88700B0B, // 01C5 GETMBR R28 R5 K11
- 0xB8760200, // 01C6 GETNGBL R29 K1
- 0x88743B2B, // 01C7 GETMBR R29 R29 K43
- 0x7C640800, // 01C8 CALL R25 4
- 0x8C64310A, // 01C9 GETMET R25 R24 K10
- 0x586C0007, // 01CA LDCONST R27 K7
- 0x88700B0B, // 01CB GETMBR R28 R5 K11
- 0x58740007, // 01CC LDCONST R29 K7
- 0x7C640800, // 01CD CALL R25 4
- 0x54660007, // 01CE LDINT R25 8
- 0x900E0819, // 01CF SETMBR R3 K4 R25
- 0x80043000, // 01D0 RET 1 R24
- 0x70020056, // 01D1 JMP #0229
- 0x54220008, // 01D2 LDINT R8 9
- 0x1C200E08, // 01D3 EQ R8 R7 R8
- 0x7822001E, // 01D4 JMPF R8 #01F4
- 0x8C200506, // 01D5 GETMET R8 R2 K6
- 0x58280005, // 01D6 LDCONST R10 K5
- 0x7C200400, // 01D7 CALL R8 2
- 0x8C24034E, // 01D8 GETMET R9 R1 K78
- 0x5C2C1000, // 01D9 MOVE R11 R8
- 0x7C240400, // 01DA CALL R9 2
- 0xB8264400, // 01DB GETNGBL R9 K34
- 0x8C24132C, // 01DC GETMET R9 R9 K44
- 0x602C0018, // 01DD GETGBL R11 G24
- 0x5830004F, // 01DE LDCONST R12 K79
- 0x88340312, // 01DF GETMBR R13 R1 K18
- 0x8C341B50, // 01E0 GETMET R13 R13 K80
- 0x7C340200, // 01E1 CALL R13 1
- 0x8C341B44, // 01E2 GETMET R13 R13 K68
- 0x7C340200, // 01E3 CALL R13 1
- 0x8C341B45, // 01E4 GETMET R13 R13 K69
- 0x7C340200, // 01E5 CALL R13 1
- 0x8C341B51, // 01E6 GETMET R13 R13 K81
- 0x7C340200, // 01E7 CALL R13 1
- 0x60380008, // 01E8 GETGBL R14 G8
- 0x5C3C1000, // 01E9 MOVE R15 R8
- 0x7C380200, // 01EA CALL R14 1
- 0x7C2C0600, // 01EB CALL R11 3
- 0x58300010, // 01EC LDCONST R12 K16
- 0x7C240600, // 01ED CALL R9 3
- 0xB8260200, // 01EE GETNGBL R9 K1
- 0x8824132B, // 01EF GETMBR R9 R9 K43
- 0x900E3409, // 01F0 SETMBR R3 K26 R9
- 0x4C240000, // 01F1 LDNIL R9
- 0x80041200, // 01F2 RET 1 R9
- 0x70020034, // 01F3 JMP #0229
- 0x54220009, // 01F4 LDINT R8 10
- 0x1C200E08, // 01F5 EQ R8 R7 R8
- 0x78220031, // 01F6 JMPF R8 #0229
- 0x8C200506, // 01F7 GETMET R8 R2 K6
- 0x58280005, // 01F8 LDCONST R10 K5
- 0x7C200400, // 01F9 CALL R8 2
- 0x60240008, // 01FA GETGBL R9 G8
- 0x5C281000, // 01FB MOVE R10 R8
- 0x7C240200, // 01FC CALL R9 1
- 0x0026A409, // 01FD ADD R9 K82 R9
- 0x900E5809, // 01FE SETMBR R3 K44 R9
- 0x60240010, // 01FF GETGBL R9 G16
- 0x88280116, // 0200 GETMBR R10 R0 K22
- 0x88281530, // 0201 GETMBR R10 R10 K48
- 0x8C281553, // 0202 GETMET R10 R10 K83
- 0x7C280200, // 0203 CALL R10 1
- 0x7C240200, // 0204 CALL R9 1
- 0xA8020010, // 0205 EXBLK 0 #0217
- 0x5C281200, // 0206 MOVE R10 R9
- 0x7C280000, // 0207 CALL R10 0
- 0x8C2C1554, // 0208 GETMET R11 R10 K84
- 0x7C2C0200, // 0209 CALL R11 1
- 0x1C2C1608, // 020A EQ R11 R11 R8
- 0x782E0008, // 020B JMPF R11 #0215
- 0xB82E4400, // 020C GETNGBL R11 K34
- 0x8C2C1755, // 020D GETMET R11 R11 K85
- 0x543607CF, // 020E LDINT R13 2000
- 0x84380000, // 020F CLOSURE R14 P0
- 0x7C2C0600, // 0210 CALL R11 3
- 0x502C0200, // 0211 LDBOOL R11 1 0
- 0xA0000000, // 0212 CLOSE R0
- 0xA8040001, // 0213 EXBLK 1 1
- 0x80041600, // 0214 RET 1 R11
- 0xA0240000, // 0215 CLOSE R9
- 0x7001FFEE, // 0216 JMP #0206
- 0x58240056, // 0217 LDCONST R9 K86
- 0xAC240200, // 0218 CATCH R9 1 0
- 0xB0080000, // 0219 RAISE 2 R0 R0
- 0xB8264400, // 021A GETNGBL R9 K34
- 0x8C24132C, // 021B GETMET R9 R9 K44
- 0x602C0008, // 021C GETGBL R11 G8
- 0x5C301000, // 021D MOVE R12 R8
+ 0x8C600B09, // 01C3 GETMET R24 R5 K9
+ 0x7C600200, // 01C4 CALL R24 1
+ 0x8C64310A, // 01C5 GETMET R25 R24 K10
+ 0x586C0005, // 01C6 LDCONST R27 K5
+ 0x88700B0B, // 01C7 GETMBR R28 R5 K11
+ 0xB8760200, // 01C8 GETNGBL R29 K1
+ 0x88743B2B, // 01C9 GETMBR R29 R29 K43
+ 0x7C640800, // 01CA CALL R25 4
+ 0x8C64310A, // 01CB GETMET R25 R24 K10
+ 0x586C0007, // 01CC LDCONST R27 K7
+ 0x88700B0B, // 01CD GETMBR R28 R5 K11
+ 0x8C741B4F, // 01CE GETMET R29 R13 K79
+ 0x7C740200, // 01CF CALL R29 1
+ 0x7C640800, // 01D0 CALL R25 4
+ 0x54660007, // 01D1 LDINT R25 8
+ 0x900E0819, // 01D2 SETMBR R3 K4 R25
+ 0x80043000, // 01D3 RET 1 R24
+ 0x70020074, // 01D4 JMP #024A
+ 0x54220008, // 01D5 LDINT R8 9
+ 0x1C200E08, // 01D6 EQ R8 R7 R8
+ 0x7822002C, // 01D7 JMPF R8 #0205
+ 0x8C200506, // 01D8 GETMET R8 R2 K6
+ 0x58280005, // 01D9 LDCONST R10 K5
+ 0x7C200400, // 01DA CALL R8 2
+ 0x8C240350, // 01DB GETMET R9 R1 K80
+ 0x5C2C1000, // 01DC MOVE R11 R8
+ 0x7C240400, // 01DD CALL R9 2
+ 0xB8264400, // 01DE GETNGBL R9 K34
+ 0x8C24132C, // 01DF GETMET R9 R9 K44
+ 0x602C0018, // 01E0 GETGBL R11 G24
+ 0x58300051, // 01E1 LDCONST R12 K81
+ 0x88340312, // 01E2 GETMBR R13 R1 K18
+ 0x8C341B52, // 01E3 GETMET R13 R13 K82
+ 0x7C340200, // 01E4 CALL R13 1
+ 0x8C341B44, // 01E5 GETMET R13 R13 K68
+ 0x7C340200, // 01E6 CALL R13 1
+ 0x8C341B45, // 01E7 GETMET R13 R13 K69
+ 0x7C340200, // 01E8 CALL R13 1
+ 0x8C341B53, // 01E9 GETMET R13 R13 K83
+ 0x7C340200, // 01EA CALL R13 1
+ 0x60380008, // 01EB GETGBL R14 G8
+ 0x5C3C1000, // 01EC MOVE R15 R8
+ 0x7C380200, // 01ED CALL R14 1
+ 0x7C2C0600, // 01EE CALL R11 3
+ 0x58300010, // 01EF LDCONST R12 K16
+ 0x7C240600, // 01F0 CALL R9 3
+ 0x8C240B09, // 01F1 GETMET R9 R5 K9
+ 0x7C240200, // 01F2 CALL R9 1
+ 0x8C28130A, // 01F3 GETMET R10 R9 K10
+ 0x58300005, // 01F4 LDCONST R12 K5
+ 0x88340B0B, // 01F5 GETMBR R13 R5 K11
+ 0xB83A0200, // 01F6 GETNGBL R14 K1
+ 0x88381D2B, // 01F7 GETMBR R14 R14 K43
+ 0x7C280800, // 01F8 CALL R10 4
+ 0x8C28130A, // 01F9 GETMET R10 R9 K10
+ 0x58300007, // 01FA LDCONST R12 K7
+ 0x88340B0B, // 01FB GETMBR R13 R5 K11
+ 0x8C380354, // 01FC GETMET R14 R1 K84
+ 0x7C380200, // 01FD CALL R14 1
+ 0x8C381D4F, // 01FE GETMET R14 R14 K79
+ 0x7C380200, // 01FF CALL R14 1
+ 0x7C280800, // 0200 CALL R10 4
+ 0x542A0007, // 0201 LDINT R10 8
+ 0x900E080A, // 0202 SETMBR R3 K4 R10
+ 0x80041200, // 0203 RET 1 R9
+ 0x70020044, // 0204 JMP #024A
+ 0x54220009, // 0205 LDINT R8 10
+ 0x1C200E08, // 0206 EQ R8 R7 R8
+ 0x78220041, // 0207 JMPF R8 #024A
+ 0x8C200506, // 0208 GETMET R8 R2 K6
+ 0x58280005, // 0209 LDCONST R10 K5
+ 0x7C200400, // 020A CALL R8 2
+ 0x60240008, // 020B GETGBL R9 G8
+ 0x5C281000, // 020C MOVE R10 R8
+ 0x7C240200, // 020D CALL R9 1
+ 0x0026AA09, // 020E ADD R9 K85 R9
+ 0x900E5809, // 020F SETMBR R3 K44 R9
+ 0x60240010, // 0210 GETGBL R9 G16
+ 0x88280116, // 0211 GETMBR R10 R0 K22
+ 0x88281530, // 0212 GETMBR R10 R10 K48
+ 0x8C281556, // 0213 GETMET R10 R10 K86
+ 0x7C280200, // 0214 CALL R10 1
+ 0x7C240200, // 0215 CALL R9 1
+ 0xA8020020, // 0216 EXBLK 0 #0238
+ 0x5C281200, // 0217 MOVE R10 R9
+ 0x7C280000, // 0218 CALL R10 0
+ 0x8C2C154F, // 0219 GETMET R11 R10 K79
+ 0x7C2C0200, // 021A CALL R11 1
+ 0x1C2C1608, // 021B EQ R11 R11 R8
+ 0x782E0018, // 021C JMPF R11 #0236
+ 0x8C2C1557, // 021D GETMET R11 R10 K87
0x7C2C0200, // 021E CALL R11 1
- 0x002EAE0B, // 021F ADD R11 K87 R11
- 0x002C1758, // 0220 ADD R11 R11 K88
- 0x5830000E, // 0221 LDCONST R12 K14
- 0x7C240600, // 0222 CALL R9 3
- 0xB8260200, // 0223 GETNGBL R9 K1
- 0x88241359, // 0224 GETMBR R9 R9 K89
- 0x900E3409, // 0225 SETMBR R3 K26 R9
- 0x4C240000, // 0226 LDNIL R9
- 0xA0000000, // 0227 CLOSE R0
- 0x80041200, // 0228 RET 1 R9
- 0x7002009B, // 0229 JMP #02C6
- 0x5422003B, // 022A LDINT R8 60
- 0x1C200C08, // 022B EQ R8 R6 R8
- 0x78220085, // 022C JMPF R8 #02B3
- 0x1C200F05, // 022D EQ R8 R7 K5
- 0x78220065, // 022E JMPF R8 #0295
- 0x8C200506, // 022F GETMET R8 R2 K6
- 0x58280005, // 0230 LDCONST R10 K5
- 0x7C200400, // 0231 CALL R8 2
- 0x8C240506, // 0232 GETMET R9 R2 K6
- 0x582C0007, // 0233 LDCONST R11 K7
- 0x7C240400, // 0234 CALL R9 2
- 0x8C280506, // 0235 GETMET R10 R2 K6
- 0x5830000E, // 0236 LDCONST R12 K14
- 0x7C280400, // 0237 CALL R10 2
- 0x8C2C0506, // 0238 GETMET R11 R2 K6
- 0x58340010, // 0239 LDCONST R13 K16
- 0x7C2C0400, // 023A CALL R11 2
- 0x8C300506, // 023B GETMET R12 R2 K6
- 0x543A0003, // 023C LDINT R14 4
- 0x7C300400, // 023D CALL R12 2
- 0xB8364400, // 023E GETNGBL R13 K34
- 0x8C341B2C, // 023F GETMET R13 R13 K44
- 0x603C0018, // 0240 GETGBL R15 G24
- 0x5840005A, // 0241 LDCONST R16 K90
- 0x5C441000, // 0242 MOVE R17 R8
- 0x8C481351, // 0243 GETMET R18 R9 K81
- 0x7C480200, // 0244 CALL R18 1
- 0x5C4C1400, // 0245 MOVE R19 R10
- 0x5C501600, // 0246 MOVE R20 R11
- 0x8C541951, // 0247 GETMET R21 R12 K81
- 0x7C540200, // 0248 CALL R21 1
- 0x7C3C0C00, // 0249 CALL R15 6
- 0x54420003, // 024A LDINT R16 4
- 0x7C340600, // 024B CALL R13 3
- 0x4C340000, // 024C LDNIL R13
- 0x1C34100D, // 024D EQ R13 R8 R13
- 0x7436000B, // 024E JMPT R13 #025B
- 0x4C340000, // 024F LDNIL R13
- 0x1C34120D, // 0250 EQ R13 R9 R13
- 0x74360008, // 0251 JMPT R13 #025B
- 0x4C340000, // 0252 LDNIL R13
- 0x1C34140D, // 0253 EQ R13 R10 R13
- 0x74360005, // 0254 JMPT R13 #025B
- 0x4C340000, // 0255 LDNIL R13
- 0x1C34160D, // 0256 EQ R13 R11 R13
- 0x74360002, // 0257 JMPT R13 #025B
- 0x4C340000, // 0258 LDNIL R13
- 0x1C34180D, // 0259 EQ R13 R12 R13
- 0x78360005, // 025A JMPF R13 #0261
- 0xB8360200, // 025B GETNGBL R13 K1
- 0x88341B5B, // 025C GETMBR R13 R13 K91
- 0x900E340D, // 025D SETMBR R3 K26 R13
- 0x4C340000, // 025E LDNIL R13
- 0xA0000000, // 025F CLOSE R0
- 0x80041A00, // 0260 RET 1 R13
- 0x6034000C, // 0261 GETGBL R13 G12
- 0x5C381200, // 0262 MOVE R14 R9
- 0x7C340200, // 0263 CALL R13 1
- 0x543A001F, // 0264 LDINT R14 32
- 0x543E0040, // 0265 LDINT R15 65
- 0x00381C0F, // 0266 ADD R14 R14 R15
- 0x20341A0E, // 0267 NE R13 R13 R14
- 0x7436000B, // 0268 JMPT R13 #0275
- 0x6034000C, // 0269 GETGBL R13 G12
- 0x5C381800, // 026A MOVE R14 R12
- 0x7C340200, // 026B CALL R13 1
- 0x543A000F, // 026C LDINT R14 16
- 0x14341A0E, // 026D LT R13 R13 R14
- 0x74360005, // 026E JMPT R13 #0275
- 0x6034000C, // 026F GETGBL R13 G12
- 0x5C381800, // 0270 MOVE R14 R12
- 0x7C340200, // 0271 CALL R13 1
- 0x543A001F, // 0272 LDINT R14 32
- 0x24341A0E, // 0273 GT R13 R13 R14
- 0x7836000A, // 0274 JMPF R13 #0280
- 0xB8364400, // 0275 GETNGBL R13 K34
- 0x8C341B2C, // 0276 GETMET R13 R13 K44
- 0x583C005C, // 0277 LDCONST R15 K92
- 0x5840000E, // 0278 LDCONST R16 K14
- 0x7C340600, // 0279 CALL R13 3
- 0xB8360200, // 027A GETNGBL R13 K1
- 0x88341B5D, // 027B GETMBR R13 R13 K93
- 0x900E340D, // 027C SETMBR R3 K26 R13
- 0x4C340000, // 027D LDNIL R13
- 0xA0000000, // 027E CLOSE R0
- 0x80041A00, // 027F RET 1 R13
- 0x5436001E, // 0280 LDINT R13 31
- 0x40360A0D, // 0281 CONNECT R13 K5 R13
- 0x9434120D, // 0282 GETIDX R13 R9 R13
- 0x543A001F, // 0283 LDINT R14 32
- 0x40381D40, // 0284 CONNECT R14 R14 K64
- 0x9438120E, // 0285 GETIDX R14 R9 R14
- 0x883C0116, // 0286 GETMBR R15 R0 K22
- 0x8C3C1F5E, // 0287 GETMET R15 R15 K94
- 0x5C441000, // 0288 MOVE R17 R8
- 0x5C481600, // 0289 MOVE R18 R11
- 0x5C4C1400, // 028A MOVE R19 R10
- 0x5C501800, // 028B MOVE R20 R12
- 0x5C541A00, // 028C MOVE R21 R13
- 0x5C581C00, // 028D MOVE R22 R14
- 0x8C5C035F, // 028E GETMET R23 R1 K95
- 0x7C5C0200, // 028F CALL R23 1
- 0x7C3C1000, // 0290 CALL R15 8
- 0x503C0200, // 0291 LDBOOL R15 1 0
- 0xA0000000, // 0292 CLOSE R0
- 0x80041E00, // 0293 RET 1 R15
- 0x7002001C, // 0294 JMP #02B2
- 0x1C200F07, // 0295 EQ R8 R7 K7
- 0x78220012, // 0296 JMPF R8 #02AA
- 0x8C200506, // 0297 GETMET R8 R2 K6
- 0x58280005, // 0298 LDCONST R10 K5
- 0x7C200400, // 0299 CALL R8 2
- 0xB8264400, // 029A GETNGBL R9 K34
- 0x8C24132C, // 029B GETMET R9 R9 K44
- 0x602C0008, // 029C GETGBL R11 G8
- 0x5C301000, // 029D MOVE R12 R8
- 0x7C2C0200, // 029E CALL R11 1
- 0x002EC00B, // 029F ADD R11 K96 R11
- 0x58300010, // 02A0 LDCONST R12 K16
- 0x7C240600, // 02A1 CALL R9 3
- 0x88240116, // 02A2 GETMBR R9 R0 K22
- 0x8C241361, // 02A3 GETMET R9 R9 K97
- 0x5C2C1000, // 02A4 MOVE R11 R8
- 0x7C240400, // 02A5 CALL R9 2
- 0x50240200, // 02A6 LDBOOL R9 1 0
- 0xA0000000, // 02A7 CLOSE R0
- 0x80041200, // 02A8 RET 1 R9
- 0x70020007, // 02A9 JMP #02B2
- 0x1C200F0E, // 02AA EQ R8 R7 K14
- 0x78220005, // 02AB JMPF R8 #02B2
- 0x88200116, // 02AC GETMBR R8 R0 K22
- 0x8C201162, // 02AD GETMET R8 R8 K98
- 0x7C200200, // 02AE CALL R8 1
- 0x50200200, // 02AF LDBOOL R8 1 0
- 0xA0000000, // 02B0 CLOSE R0
- 0x80041000, // 02B1 RET 1 R8
- 0x70020012, // 02B2 JMP #02C6
- 0x54220029, // 02B3 LDINT R8 42
- 0x1C200C08, // 02B4 EQ R8 R6 R8
- 0x78220005, // 02B5 JMPF R8 #02BC
- 0x1C200F05, // 02B6 EQ R8 R7 K5
- 0x78220002, // 02B7 JMPF R8 #02BB
- 0x50200200, // 02B8 LDBOOL R8 1 0
- 0xA0000000, // 02B9 CLOSE R0
- 0x80041000, // 02BA RET 1 R8
- 0x70020009, // 02BB JMP #02C6
- 0x60200003, // 02BC GETGBL R8 G3
- 0x5C240000, // 02BD MOVE R9 R0
- 0x7C200200, // 02BE CALL R8 1
- 0x8C201163, // 02BF GETMET R8 R8 K99
- 0x5C280200, // 02C0 MOVE R10 R1
- 0x5C2C0400, // 02C1 MOVE R11 R2
- 0x5C300600, // 02C2 MOVE R12 R3
- 0x7C200800, // 02C3 CALL R8 4
- 0xA0000000, // 02C4 CLOSE R0
- 0x80041000, // 02C5 RET 1 R8
- 0xA0000000, // 02C6 CLOSE R0
- 0x80000000, // 02C7 RET 0
+ 0xB82E4400, // 021F GETNGBL R11 K34
+ 0x8C2C1758, // 0220 GETMET R11 R11 K88
+ 0x543607CF, // 0221 LDINT R13 2000
+ 0x84380000, // 0222 CLOSURE R14 P0
+ 0x7C2C0600, // 0223 CALL R11 3
+ 0x8C2C0B09, // 0224 GETMET R11 R5 K9
+ 0x7C2C0200, // 0225 CALL R11 1
+ 0x8C30170A, // 0226 GETMET R12 R11 K10
+ 0x58380005, // 0227 LDCONST R14 K5
+ 0x883C0B0B, // 0228 GETMBR R15 R5 K11
+ 0xB8420200, // 0229 GETNGBL R16 K1
+ 0x8840212B, // 022A GETMBR R16 R16 K43
+ 0x7C300800, // 022B CALL R12 4
+ 0x8C30170A, // 022C GETMET R12 R11 K10
+ 0x58380007, // 022D LDCONST R14 K7
+ 0x883C0B0B, // 022E GETMBR R15 R5 K11
+ 0x5C401000, // 022F MOVE R16 R8
+ 0x7C300800, // 0230 CALL R12 4
+ 0x54320007, // 0231 LDINT R12 8
+ 0x900E080C, // 0232 SETMBR R3 K4 R12
+ 0xA0000000, // 0233 CLOSE R0
+ 0xA8040001, // 0234 EXBLK 1 1
+ 0x80041600, // 0235 RET 1 R11
+ 0xA0240000, // 0236 CLOSE R9
+ 0x7001FFDE, // 0237 JMP #0217
+ 0x58240059, // 0238 LDCONST R9 K89
+ 0xAC240200, // 0239 CATCH R9 1 0
+ 0xB0080000, // 023A RAISE 2 R0 R0
+ 0xB8264400, // 023B GETNGBL R9 K34
+ 0x8C24132C, // 023C GETMET R9 R9 K44
+ 0x602C0008, // 023D GETGBL R11 G8
+ 0x5C301000, // 023E MOVE R12 R8
+ 0x7C2C0200, // 023F CALL R11 1
+ 0x002EB40B, // 0240 ADD R11 K90 R11
+ 0x002C175B, // 0241 ADD R11 R11 K91
+ 0x5830000E, // 0242 LDCONST R12 K14
+ 0x7C240600, // 0243 CALL R9 3
+ 0xB8260200, // 0244 GETNGBL R9 K1
+ 0x8824135C, // 0245 GETMBR R9 R9 K92
+ 0x900E3409, // 0246 SETMBR R3 K26 R9
+ 0x4C240000, // 0247 LDNIL R9
+ 0xA0000000, // 0248 CLOSE R0
+ 0x80041200, // 0249 RET 1 R9
+ 0x7002009B, // 024A JMP #02E7
+ 0x5422003B, // 024B LDINT R8 60
+ 0x1C200C08, // 024C EQ R8 R6 R8
+ 0x78220085, // 024D JMPF R8 #02D4
+ 0x1C200F05, // 024E EQ R8 R7 K5
+ 0x78220065, // 024F JMPF R8 #02B6
+ 0x8C200506, // 0250 GETMET R8 R2 K6
+ 0x58280005, // 0251 LDCONST R10 K5
+ 0x7C200400, // 0252 CALL R8 2
+ 0x8C240506, // 0253 GETMET R9 R2 K6
+ 0x582C0007, // 0254 LDCONST R11 K7
+ 0x7C240400, // 0255 CALL R9 2
+ 0x8C280506, // 0256 GETMET R10 R2 K6
+ 0x5830000E, // 0257 LDCONST R12 K14
+ 0x7C280400, // 0258 CALL R10 2
+ 0x8C2C0506, // 0259 GETMET R11 R2 K6
+ 0x58340010, // 025A LDCONST R13 K16
+ 0x7C2C0400, // 025B CALL R11 2
+ 0x8C300506, // 025C GETMET R12 R2 K6
+ 0x543A0003, // 025D LDINT R14 4
+ 0x7C300400, // 025E CALL R12 2
+ 0xB8364400, // 025F GETNGBL R13 K34
+ 0x8C341B2C, // 0260 GETMET R13 R13 K44
+ 0x603C0018, // 0261 GETGBL R15 G24
+ 0x5840005D, // 0262 LDCONST R16 K93
+ 0x5C441000, // 0263 MOVE R17 R8
+ 0x8C481353, // 0264 GETMET R18 R9 K83
+ 0x7C480200, // 0265 CALL R18 1
+ 0x5C4C1400, // 0266 MOVE R19 R10
+ 0x5C501600, // 0267 MOVE R20 R11
+ 0x8C541953, // 0268 GETMET R21 R12 K83
+ 0x7C540200, // 0269 CALL R21 1
+ 0x7C3C0C00, // 026A CALL R15 6
+ 0x54420003, // 026B LDINT R16 4
+ 0x7C340600, // 026C CALL R13 3
+ 0x4C340000, // 026D LDNIL R13
+ 0x1C34100D, // 026E EQ R13 R8 R13
+ 0x7436000B, // 026F JMPT R13 #027C
+ 0x4C340000, // 0270 LDNIL R13
+ 0x1C34120D, // 0271 EQ R13 R9 R13
+ 0x74360008, // 0272 JMPT R13 #027C
+ 0x4C340000, // 0273 LDNIL R13
+ 0x1C34140D, // 0274 EQ R13 R10 R13
+ 0x74360005, // 0275 JMPT R13 #027C
+ 0x4C340000, // 0276 LDNIL R13
+ 0x1C34160D, // 0277 EQ R13 R11 R13
+ 0x74360002, // 0278 JMPT R13 #027C
+ 0x4C340000, // 0279 LDNIL R13
+ 0x1C34180D, // 027A EQ R13 R12 R13
+ 0x78360005, // 027B JMPF R13 #0282
+ 0xB8360200, // 027C GETNGBL R13 K1
+ 0x88341B5E, // 027D GETMBR R13 R13 K94
+ 0x900E340D, // 027E SETMBR R3 K26 R13
+ 0x4C340000, // 027F LDNIL R13
+ 0xA0000000, // 0280 CLOSE R0
+ 0x80041A00, // 0281 RET 1 R13
+ 0x6034000C, // 0282 GETGBL R13 G12
+ 0x5C381200, // 0283 MOVE R14 R9
+ 0x7C340200, // 0284 CALL R13 1
+ 0x543A001F, // 0285 LDINT R14 32
+ 0x543E0040, // 0286 LDINT R15 65
+ 0x00381C0F, // 0287 ADD R14 R14 R15
+ 0x20341A0E, // 0288 NE R13 R13 R14
+ 0x7436000B, // 0289 JMPT R13 #0296
+ 0x6034000C, // 028A GETGBL R13 G12
+ 0x5C381800, // 028B MOVE R14 R12
+ 0x7C340200, // 028C CALL R13 1
+ 0x543A000F, // 028D LDINT R14 16
+ 0x14341A0E, // 028E LT R13 R13 R14
+ 0x74360005, // 028F JMPT R13 #0296
+ 0x6034000C, // 0290 GETGBL R13 G12
+ 0x5C381800, // 0291 MOVE R14 R12
+ 0x7C340200, // 0292 CALL R13 1
+ 0x543A001F, // 0293 LDINT R14 32
+ 0x24341A0E, // 0294 GT R13 R13 R14
+ 0x7836000A, // 0295 JMPF R13 #02A1
+ 0xB8364400, // 0296 GETNGBL R13 K34
+ 0x8C341B2C, // 0297 GETMET R13 R13 K44
+ 0x583C005F, // 0298 LDCONST R15 K95
+ 0x5840000E, // 0299 LDCONST R16 K14
+ 0x7C340600, // 029A CALL R13 3
+ 0xB8360200, // 029B GETNGBL R13 K1
+ 0x88341B60, // 029C GETMBR R13 R13 K96
+ 0x900E340D, // 029D SETMBR R3 K26 R13
+ 0x4C340000, // 029E LDNIL R13
+ 0xA0000000, // 029F CLOSE R0
+ 0x80041A00, // 02A0 RET 1 R13
+ 0x5436001E, // 02A1 LDINT R13 31
+ 0x40360A0D, // 02A2 CONNECT R13 K5 R13
+ 0x9434120D, // 02A3 GETIDX R13 R9 R13
+ 0x543A001F, // 02A4 LDINT R14 32
+ 0x40381D40, // 02A5 CONNECT R14 R14 K64
+ 0x9438120E, // 02A6 GETIDX R14 R9 R14
+ 0x883C0116, // 02A7 GETMBR R15 R0 K22
+ 0x8C3C1F61, // 02A8 GETMET R15 R15 K97
+ 0x5C441000, // 02A9 MOVE R17 R8
+ 0x5C481600, // 02AA MOVE R18 R11
+ 0x5C4C1400, // 02AB MOVE R19 R10
+ 0x5C501800, // 02AC MOVE R20 R12
+ 0x5C541A00, // 02AD MOVE R21 R13
+ 0x5C581C00, // 02AE MOVE R22 R14
+ 0x8C5C0354, // 02AF GETMET R23 R1 K84
+ 0x7C5C0200, // 02B0 CALL R23 1
+ 0x7C3C1000, // 02B1 CALL R15 8
+ 0x503C0200, // 02B2 LDBOOL R15 1 0
+ 0xA0000000, // 02B3 CLOSE R0
+ 0x80041E00, // 02B4 RET 1 R15
+ 0x7002001C, // 02B5 JMP #02D3
+ 0x1C200F07, // 02B6 EQ R8 R7 K7
+ 0x78220012, // 02B7 JMPF R8 #02CB
+ 0x8C200506, // 02B8 GETMET R8 R2 K6
+ 0x58280005, // 02B9 LDCONST R10 K5
+ 0x7C200400, // 02BA CALL R8 2
+ 0xB8264400, // 02BB GETNGBL R9 K34
+ 0x8C24132C, // 02BC GETMET R9 R9 K44
+ 0x602C0008, // 02BD GETGBL R11 G8
+ 0x5C301000, // 02BE MOVE R12 R8
+ 0x7C2C0200, // 02BF CALL R11 1
+ 0x002EC40B, // 02C0 ADD R11 K98 R11
+ 0x58300010, // 02C1 LDCONST R12 K16
+ 0x7C240600, // 02C2 CALL R9 3
+ 0x88240116, // 02C3 GETMBR R9 R0 K22
+ 0x8C241363, // 02C4 GETMET R9 R9 K99
+ 0x5C2C1000, // 02C5 MOVE R11 R8
+ 0x7C240400, // 02C6 CALL R9 2
+ 0x50240200, // 02C7 LDBOOL R9 1 0
+ 0xA0000000, // 02C8 CLOSE R0
+ 0x80041200, // 02C9 RET 1 R9
+ 0x70020007, // 02CA JMP #02D3
+ 0x1C200F0E, // 02CB EQ R8 R7 K14
+ 0x78220005, // 02CC JMPF R8 #02D3
+ 0x88200116, // 02CD GETMBR R8 R0 K22
+ 0x8C201164, // 02CE GETMET R8 R8 K100
+ 0x7C200200, // 02CF CALL R8 1
+ 0x50200200, // 02D0 LDBOOL R8 1 0
+ 0xA0000000, // 02D1 CLOSE R0
+ 0x80041000, // 02D2 RET 1 R8
+ 0x70020012, // 02D3 JMP #02E7
+ 0x54220029, // 02D4 LDINT R8 42
+ 0x1C200C08, // 02D5 EQ R8 R6 R8
+ 0x78220005, // 02D6 JMPF R8 #02DD
+ 0x1C200F05, // 02D7 EQ R8 R7 K5
+ 0x78220002, // 02D8 JMPF R8 #02DC
+ 0x50200200, // 02D9 LDBOOL R8 1 0
+ 0xA0000000, // 02DA CLOSE R0
+ 0x80041000, // 02DB RET 1 R8
+ 0x70020009, // 02DC JMP #02E7
+ 0x60200003, // 02DD GETGBL R8 G3
+ 0x5C240000, // 02DE MOVE R9 R0
+ 0x7C200200, // 02DF CALL R8 1
+ 0x8C201165, // 02E0 GETMET R8 R8 K101
+ 0x5C280200, // 02E1 MOVE R10 R1
+ 0x5C2C0400, // 02E2 MOVE R11 R2
+ 0x5C300600, // 02E3 MOVE R12 R3
+ 0x7C200800, // 02E4 CALL R8 4
+ 0xA0000000, // 02E5 CLOSE R0
+ 0x80041000, // 02E6 RET 1 R8
+ 0xA0000000, // 02E7 CLOSE R0
+ 0x80000000, // 02E8 RET 0
})
)
);
@@ -2080,25 +2117,87 @@ be_local_class(Matter_Plugin_Root,
{ be_const_key_weak(write_attribute, -1), be_const_closure(Matter_Plugin_Root_write_attribute_closure) },
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Root_X20node) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(15,
+ be_const_map( * be_nested_map(14,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(60, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ { be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(9,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(7),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(29, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(44, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(9,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(31, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(4),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
- { be_const_key_int(62, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ { be_const_key_int(60, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(9,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(63, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(6,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(62, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -2106,55 +2205,73 @@ be_local_class(Matter_Plugin_Root,
be_const_int(3),
be_const_int(4),
be_const_int(5),
- })) ) } )) },
- { be_const_key_int(48, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- })) ) } )) },
- { be_const_key_int(49, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(4),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(49, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(8,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(3),
+ be_const_int(4),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(50, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(0,
+ be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(51, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(8),
- })) ) } )) },
- { be_const_key_int(52, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(0,
- ( (struct bvalue*) &(const bvalue[]) {
- })) ) } )) },
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
- { be_const_key_int(63, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(0,
+ { be_const_key_int(52, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(43, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(8,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(40, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(15,
+ be_const_list( * be_nested_list(21,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -2171,31 +2288,27 @@ be_local_class(Matter_Plugin_Root,
be_const_int(17),
be_const_int(18),
be_const_int(19),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
- { be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(7),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
- })) ) } )) },
- { be_const_key_int(43, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(2,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- })) ) } )) },
- { be_const_key_int(44, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ { be_const_key_int(48, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(3),
+ be_const_int(4),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
})) ) } )) },
})),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h
index 418f03eae..01c1452de 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h
@@ -596,14 +596,14 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[115]) { /* code */
+ ( &(const binstruction[103]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0038, // 0004 LDINT R7 57
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0061, // 0006 JMPF R7 #0069
+ 0x781E0056, // 0006 JMPF R7 #005E
0xA41E0800, // 0007 IMPORT R7 K4
0x1C200D05, // 0008 EQ R8 R6 K5
0x78220012, // 0009 JMPF R8 #001D
@@ -625,7 +625,7 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
0x4C300000, // 0019 LDNIL R12
0x7C240600, // 001A CALL R9 3
0x80041200, // 001B RET 1 R9
- 0x7002004A, // 001C JMP #0068
+ 0x70020040, // 001C JMP #005E
0x54220009, // 001D LDINT R8 10
0x1C200C08, // 001E EQ R8 R6 R8
0x7822001B, // 001F JMPF R8 #003C
@@ -656,7 +656,7 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
0x4C300000, // 0038 LDNIL R12
0x7C240600, // 0039 CALL R9 3
0x80041200, // 003A RET 1 R9
- 0x7002002B, // 003B JMP #0068
+ 0x70020021, // 003B JMP #005E
0x5422000E, // 003C LDINT R8 15
0x1C200C08, // 003D EQ R8 R6 R8
0x74220002, // 003E JMPT R8 #0042
@@ -681,37 +681,25 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
0x4C300000, // 0051 LDNIL R12
0x7C240600, // 0052 CALL R9 3
0x80041200, // 0053 RET 1 R9
- 0x70020012, // 0054 JMP #0068
+ 0x70020008, // 0054 JMP #005E
0x54220010, // 0055 LDINT R8 17
0x1C200C08, // 0056 EQ R8 R6 R8
- 0x78220006, // 0057 JMPF R8 #005F
+ 0x78220005, // 0057 JMPF R8 #005E
0x8C20070A, // 0058 GETMET R8 R3 K10
0x88280912, // 0059 GETMBR R10 R4 K18
0x882C0106, // 005A GETMBR R11 R0 K6
0x882C1713, // 005B GETMBR R11 R11 K19
0x7C200600, // 005C CALL R8 3
0x80041000, // 005D RET 1 R8
- 0x70020008, // 005E JMP #0068
- 0x60200003, // 005F GETGBL R8 G3
- 0x5C240000, // 0060 MOVE R9 R0
- 0x7C200200, // 0061 CALL R8 1
- 0x8C201114, // 0062 GETMET R8 R8 K20
- 0x5C280200, // 0063 MOVE R10 R1
- 0x5C2C0400, // 0064 MOVE R11 R2
- 0x5C300600, // 0065 MOVE R12 R3
- 0x7C200800, // 0066 CALL R8 4
- 0x80041000, // 0067 RET 1 R8
- 0x70020008, // 0068 JMP #0072
- 0x601C0003, // 0069 GETGBL R7 G3
- 0x5C200000, // 006A MOVE R8 R0
- 0x7C1C0200, // 006B CALL R7 1
- 0x8C1C0F14, // 006C GETMET R7 R7 K20
- 0x5C240200, // 006D MOVE R9 R1
- 0x5C280400, // 006E MOVE R10 R2
- 0x5C2C0600, // 006F MOVE R11 R3
- 0x7C1C0800, // 0070 CALL R7 4
- 0x80040E00, // 0071 RET 1 R7
- 0x80000000, // 0072 RET 0
+ 0x601C0003, // 005E GETGBL R7 G3
+ 0x5C200000, // 005F MOVE R8 R0
+ 0x7C1C0200, // 0060 CALL R7 1
+ 0x8C1C0F14, // 0061 GETMET R7 R7 K20
+ 0x5C240200, // 0062 MOVE R9 R1
+ 0x5C280400, // 0063 MOVE R10 R2
+ 0x5C2C0600, // 0064 MOVE R11 R3
+ 0x7C1C0800, // 0065 CALL R7 4
+ 0x80040E00, // 0066 RET 1 R7
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h
index d802a1c5f..eb7e8a61b 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h
@@ -474,7 +474,7 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
+ ( &(const bvalue[14]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -484,127 +484,87 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
/* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(U4),
- /* K10 */ be_nested_str_weak(U1),
- /* K11 */ be_nested_str_weak(shadow_bri),
- /* K12 */ be_const_int(2),
- /* K13 */ be_const_int(3),
- /* K14 */ be_const_int(1),
- /* K15 */ be_nested_str_weak(read_attribute),
+ /* K9 */ be_nested_str_weak(U1),
+ /* K10 */ be_nested_str_weak(shadow_bri),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_const_int(3),
+ /* K13 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[110]) { /* code */
+ ( &(const binstruction[72]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E001B, // 0006 JMPF R7 #0023
+ 0x781E0009, // 0006 JMPF R7 #0011
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0005, // 000A JMPF R7 #0011
+ 0x781E0004, // 000A JMPF R7 #0010
0x8C1C0706, // 000B GETMET R7 R3 K6
0x88240907, // 000C GETMBR R9 R4 K7
0x88280108, // 000D GETMBR R10 R0 K8
0x7C1C0600, // 000E CALL R7 3
0x80040E00, // 000F RET 1 R7
- 0x70020010, // 0010 JMP #0022
- 0x541EFFFB, // 0011 LDINT R7 65532
- 0x1C1C0C07, // 0012 EQ R7 R6 R7
- 0x781E0005, // 0013 JMPF R7 #001A
- 0x8C1C0706, // 0014 GETMET R7 R3 K6
- 0x88240909, // 0015 GETMBR R9 R4 K9
- 0x58280005, // 0016 LDCONST R10 K5
- 0x7C1C0600, // 0017 CALL R7 3
- 0x80040E00, // 0018 RET 1 R7
- 0x70020007, // 0019 JMP #0022
- 0x541EFFFC, // 001A LDINT R7 65533
- 0x1C1C0C07, // 001B EQ R7 R6 R7
- 0x781E0004, // 001C JMPF R7 #0022
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240909, // 001E GETMBR R9 R4 K9
- 0x542A0003, // 001F LDINT R10 4
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020049, // 0022 JMP #006D
- 0x541E0007, // 0023 LDINT R7 8
- 0x1C1C0A07, // 0024 EQ R7 R5 R7
- 0x781E003D, // 0025 JMPF R7 #0064
- 0x8C1C0104, // 0026 GETMET R7 R0 K4
- 0x7C1C0200, // 0027 CALL R7 1
- 0x1C1C0D05, // 0028 EQ R7 R6 K5
- 0x781E0005, // 0029 JMPF R7 #0030
- 0x8C1C0706, // 002A GETMET R7 R3 K6
- 0x8824090A, // 002B GETMBR R9 R4 K10
- 0x8828010B, // 002C GETMBR R10 R0 K11
- 0x7C1C0600, // 002D CALL R7 3
- 0x80040E00, // 002E RET 1 R7
- 0x70020032, // 002F JMP #0063
- 0x1C1C0D0C, // 0030 EQ R7 R6 K12
- 0x781E0005, // 0031 JMPF R7 #0038
- 0x8C1C0706, // 0032 GETMET R7 R3 K6
- 0x8824090A, // 0033 GETMBR R9 R4 K10
- 0x58280005, // 0034 LDCONST R10 K5
- 0x7C1C0600, // 0035 CALL R7 3
- 0x80040E00, // 0036 RET 1 R7
- 0x7002002A, // 0037 JMP #0063
- 0x1C1C0D0D, // 0038 EQ R7 R6 K13
- 0x781E0005, // 0039 JMPF R7 #0040
+ 0x7002002D, // 0010 JMP #003F
+ 0x541E0007, // 0011 LDINT R7 8
+ 0x1C1C0A07, // 0012 EQ R7 R5 R7
+ 0x781E002A, // 0013 JMPF R7 #003F
+ 0x8C1C0104, // 0014 GETMET R7 R0 K4
+ 0x7C1C0200, // 0015 CALL R7 1
+ 0x1C1C0D05, // 0016 EQ R7 R6 K5
+ 0x781E0005, // 0017 JMPF R7 #001E
+ 0x8C1C0706, // 0018 GETMET R7 R3 K6
+ 0x88240909, // 0019 GETMBR R9 R4 K9
+ 0x8828010A, // 001A GETMBR R10 R0 K10
+ 0x7C1C0600, // 001B CALL R7 3
+ 0x80040E00, // 001C RET 1 R7
+ 0x70020020, // 001D JMP #003F
+ 0x1C1C0D0B, // 001E EQ R7 R6 K11
+ 0x781E0005, // 001F JMPF R7 #0026
+ 0x8C1C0706, // 0020 GETMET R7 R3 K6
+ 0x88240909, // 0021 GETMBR R9 R4 K9
+ 0x58280005, // 0022 LDCONST R10 K5
+ 0x7C1C0600, // 0023 CALL R7 3
+ 0x80040E00, // 0024 RET 1 R7
+ 0x70020018, // 0025 JMP #003F
+ 0x1C1C0D0C, // 0026 EQ R7 R6 K12
+ 0x781E0005, // 0027 JMPF R7 #002E
+ 0x8C1C0706, // 0028 GETMET R7 R3 K6
+ 0x88240909, // 0029 GETMBR R9 R4 K9
+ 0x542A00FD, // 002A LDINT R10 254
+ 0x7C1C0600, // 002B CALL R7 3
+ 0x80040E00, // 002C RET 1 R7
+ 0x70020010, // 002D JMP #003F
+ 0x541E000E, // 002E LDINT R7 15
+ 0x1C1C0C07, // 002F EQ R7 R6 R7
+ 0x781E0005, // 0030 JMPF R7 #0037
+ 0x8C1C0706, // 0031 GETMET R7 R3 K6
+ 0x88240909, // 0032 GETMBR R9 R4 K9
+ 0x58280005, // 0033 LDCONST R10 K5
+ 0x7C1C0600, // 0034 CALL R7 3
+ 0x80040E00, // 0035 RET 1 R7
+ 0x70020007, // 0036 JMP #003F
+ 0x541E0010, // 0037 LDINT R7 17
+ 0x1C1C0C07, // 0038 EQ R7 R6 R7
+ 0x781E0004, // 0039 JMPF R7 #003F
0x8C1C0706, // 003A GETMET R7 R3 K6
- 0x8824090A, // 003B GETMBR R9 R4 K10
- 0x542A00FD, // 003C LDINT R10 254
+ 0x88240909, // 003B GETMBR R9 R4 K9
+ 0x8828010A, // 003C GETMBR R10 R0 K10
0x7C1C0600, // 003D CALL R7 3
0x80040E00, // 003E RET 1 R7
- 0x70020022, // 003F JMP #0063
- 0x541E000E, // 0040 LDINT R7 15
- 0x1C1C0C07, // 0041 EQ R7 R6 R7
- 0x781E0005, // 0042 JMPF R7 #0049
- 0x8C1C0706, // 0043 GETMET R7 R3 K6
- 0x8824090A, // 0044 GETMBR R9 R4 K10
- 0x58280005, // 0045 LDCONST R10 K5
- 0x7C1C0600, // 0046 CALL R7 3
+ 0x601C0003, // 003F GETGBL R7 G3
+ 0x5C200000, // 0040 MOVE R8 R0
+ 0x7C1C0200, // 0041 CALL R7 1
+ 0x8C1C0F0D, // 0042 GETMET R7 R7 K13
+ 0x5C240200, // 0043 MOVE R9 R1
+ 0x5C280400, // 0044 MOVE R10 R2
+ 0x5C2C0600, // 0045 MOVE R11 R3
+ 0x7C1C0800, // 0046 CALL R7 4
0x80040E00, // 0047 RET 1 R7
- 0x70020019, // 0048 JMP #0063
- 0x541E0010, // 0049 LDINT R7 17
- 0x1C1C0C07, // 004A EQ R7 R6 R7
- 0x781E0005, // 004B JMPF R7 #0052
- 0x8C1C0706, // 004C GETMET R7 R3 K6
- 0x8824090A, // 004D GETMBR R9 R4 K10
- 0x8828010B, // 004E GETMBR R10 R0 K11
- 0x7C1C0600, // 004F CALL R7 3
- 0x80040E00, // 0050 RET 1 R7
- 0x70020010, // 0051 JMP #0063
- 0x541EFFFB, // 0052 LDINT R7 65532
- 0x1C1C0C07, // 0053 EQ R7 R6 R7
- 0x781E0005, // 0054 JMPF R7 #005B
- 0x8C1C0706, // 0055 GETMET R7 R3 K6
- 0x88240909, // 0056 GETMBR R9 R4 K9
- 0x5828000E, // 0057 LDCONST R10 K14
- 0x7C1C0600, // 0058 CALL R7 3
- 0x80040E00, // 0059 RET 1 R7
- 0x70020007, // 005A JMP #0063
- 0x541EFFFC, // 005B LDINT R7 65533
- 0x1C1C0C07, // 005C EQ R7 R6 R7
- 0x781E0004, // 005D JMPF R7 #0063
- 0x8C1C0706, // 005E GETMET R7 R3 K6
- 0x88240909, // 005F GETMBR R9 R4 K9
- 0x542A0004, // 0060 LDINT R10 5
- 0x7C1C0600, // 0061 CALL R7 3
- 0x80040E00, // 0062 RET 1 R7
- 0x70020008, // 0063 JMP #006D
- 0x601C0003, // 0064 GETGBL R7 G3
- 0x5C200000, // 0065 MOVE R8 R0
- 0x7C1C0200, // 0066 CALL R7 1
- 0x8C1C0F0F, // 0067 GETMET R7 R7 K15
- 0x5C240200, // 0068 MOVE R9 R1
- 0x5C280400, // 0069 MOVE R10 R2
- 0x5C2C0600, // 006A MOVE R11 R3
- 0x7C1C0800, // 006B CALL R7 4
- 0x80040E00, // 006C RET 1 R7
- 0x80000000, // 006D RET 0
})
)
);
@@ -740,54 +700,75 @@ be_local_class(Matter_Plugin_Light1,
be_const_map( * be_nested_map(7,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(15),
be_const_int(17),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -795,13 +776,21 @@ be_local_class(Matter_Plugin_Light1,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h
index 20ce2d258..968917d0b 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h
@@ -107,7 +107,7 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -117,57 +117,36 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
/* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(U4),
- /* K10 */ be_nested_str_weak(read_attribute),
+ /* K9 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
+ ( &(const binstruction[25]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E001B, // 0006 JMPF R7 #0023
+ 0x781E0008, // 0006 JMPF R7 #0010
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0005, // 000A JMPF R7 #0011
+ 0x781E0004, // 000A JMPF R7 #0010
0x8C1C0706, // 000B GETMET R7 R3 K6
0x88240907, // 000C GETMBR R9 R4 K7
0x88280108, // 000D GETMBR R10 R0 K8
0x7C1C0600, // 000E CALL R7 3
0x80040E00, // 000F RET 1 R7
- 0x70020010, // 0010 JMP #0022
- 0x541EFFFB, // 0011 LDINT R7 65532
- 0x1C1C0C07, // 0012 EQ R7 R6 R7
- 0x781E0005, // 0013 JMPF R7 #001A
- 0x8C1C0706, // 0014 GETMET R7 R3 K6
- 0x88240909, // 0015 GETMBR R9 R4 K9
- 0x58280005, // 0016 LDCONST R10 K5
- 0x7C1C0600, // 0017 CALL R7 3
+ 0x601C0003, // 0010 GETGBL R7 G3
+ 0x5C200000, // 0011 MOVE R8 R0
+ 0x7C1C0200, // 0012 CALL R7 1
+ 0x8C1C0F09, // 0013 GETMET R7 R7 K9
+ 0x5C240200, // 0014 MOVE R9 R1
+ 0x5C280400, // 0015 MOVE R10 R2
+ 0x5C2C0600, // 0016 MOVE R11 R3
+ 0x7C1C0800, // 0017 CALL R7 4
0x80040E00, // 0018 RET 1 R7
- 0x70020007, // 0019 JMP #0022
- 0x541EFFFC, // 001A LDINT R7 65533
- 0x1C1C0C07, // 001B EQ R7 R6 R7
- 0x781E0004, // 001C JMPF R7 #0022
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240909, // 001E GETMBR R9 R4 K9
- 0x542A0003, // 001F LDINT R10 4
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020008, // 0022 JMP #002C
- 0x601C0003, // 0023 GETGBL R7 G3
- 0x5C200000, // 0024 MOVE R8 R0
- 0x7C1C0200, // 0025 CALL R7 1
- 0x8C1C0F0A, // 0026 GETMET R7 R7 K10
- 0x5C240200, // 0027 MOVE R9 R1
- 0x5C280400, // 0028 MOVE R10 R2
- 0x5C2C0600, // 0029 MOVE R11 R3
- 0x7C1C0800, // 002A CALL R7 4
- 0x80040E00, // 002B RET 1 R7
- 0x80000000, // 002C RET 0
})
)
);
@@ -465,14 +444,18 @@ be_local_class(Matter_Plugin_OnOff,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -480,42 +463,63 @@ be_local_class(Matter_Plugin_OnOff,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h
index 2a86d3ae8..ee3304726 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h
@@ -160,6 +160,45 @@ be_local_closure(Matter_Plugin_Sensor_parse_configuration, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(add_read_sensors_schedule),
+ /* K2 */ be_nested_str_weak(UPDATE_TIME),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100900, // 0003 GETMET R4 R4 K0
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x8C100301, // 0008 GETMET R4 R1 K1
+ 0x88180102, // 0009 GETMBR R6 R0 K2
+ 0x7C100400, // 000A CALL R4 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: pre_value
********************************************************************/
@@ -184,47 +223,6 @@ be_local_closure(Matter_Plugin_Sensor_pre_value, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: append_state_json
-********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_append_state_json, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(shadow_value),
- /* K1 */ be_nested_str_weak(null),
- /* K2 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s),
- /* K3 */ be_nested_str_weak(JSON_NAME),
- }),
- be_str_weak(append_state_json),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x78060001, // 0003 JMPF R1 #0006
- 0x88040100, // 0004 GETMBR R1 R0 K0
- 0x70020000, // 0005 JMP #0007
- 0x58040001, // 0006 LDCONST R1 K1
- 0x60080018, // 0007 GETGBL R2 G24
- 0x580C0002, // 0008 LDCONST R3 K2
- 0x88100103, // 0009 GETMBR R4 R0 K3
- 0x5C140200, // 000A MOVE R5 R1
- 0x7C080600, // 000B CALL R2 3
- 0x80040400, // 000C RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: value_changed
********************************************************************/
@@ -261,14 +259,14 @@ be_local_class(Matter_Plugin_Sensor,
{ be_const_key_weak(ARG, 1), be_nested_str_weak(filter) },
{ be_const_key_weak(value_changed, -1), be_const_closure(Matter_Plugin_Sensor_value_changed_closure) },
{ be_const_key_weak(update_virtual, -1), be_const_closure(Matter_Plugin_Sensor_update_virtual_closure) },
- { be_const_key_weak(ARG_HINT, 8), be_nested_str_weak(Filter_X20pattern) },
+ { be_const_key_weak(ARG_HINT, 9), be_nested_str_weak(Filter_X20pattern) },
{ be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
{ be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_Sensor_parse_sensors_closure) },
- { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak() },
+ { be_const_key_weak(JSON_NAME, 8), be_nested_str_weak() },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_parse_configuration_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Sensor_init_closure) },
{ be_const_key_weak(pre_value, 12), be_const_closure(Matter_Plugin_Sensor_pre_value_closure) },
- { be_const_key_weak(append_state_json, -1), be_const_closure(Matter_Plugin_Sensor_append_state_json_closure) },
- { be_const_key_weak(shadow_value, 9), be_const_var(2) },
+ { be_const_key_weak(shadow_value, -1), be_const_var(2) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) },
})),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h
index d097a5ba3..8900284a9 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h
@@ -6,213 +6,6 @@
extern const bclass be_class_Matter_Plugin_Sensor_Contact;
-/********************************************************************
-** Solidified function: append_state_json
-********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Contact_append_state_json, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_X2C_X22Contact_X22_X3A_X25s),
- /* K1 */ be_nested_str_weak(shadow_contact),
- }),
- be_str_weak(append_state_json),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x60040018, // 0000 GETGBL R1 G24
- 0x58080000, // 0001 LDCONST R2 K0
- 0x600C0009, // 0002 GETGBL R3 G9
- 0x88100101, // 0003 GETMBR R4 R0 K1
- 0x7C0C0200, // 0004 CALL R3 1
- 0x7C040400, // 0005 CALL R1 2
- 0x80040200, // 0006 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Contact_parse_configuration, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_switch_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0301, // 0001 GETMET R3 R1 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x58180003, // 0003 LDCONST R6 K3
- 0x7C0C0600, // 0004 CALL R3 3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x18080504, // 0008 LE R2 R2 K4
- 0x780A0000, // 0009 JMPF R2 #000B
- 0x90020103, // 000A SETMBR R0 K0 K3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Contact_update_shadow, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(update_shadow),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(json),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(cmd),
- /* K5 */ be_nested_str_weak(Status_X208),
- /* K6 */ be_nested_str_weak(load),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(Switch),
- /* K9 */ be_nested_str_weak(tasmota_switch_index),
- /* K10 */ be_nested_str_weak(ON),
- /* K11 */ be_nested_str_weak(shadow_contact),
- /* K12 */ be_nested_str_weak(attribute_updated),
- /* K13 */ be_const_int(0),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0x60040003, // 0000 GETGBL R1 G3
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x7C040200, // 0004 CALL R1 1
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x7406001F, // 0006 JMPT R1 #0027
- 0xA4060400, // 0007 IMPORT R1 K2
- 0xB80A0600, // 0008 GETNGBL R2 K3
- 0x8C080504, // 0009 GETMET R2 R2 K4
- 0x58100005, // 000A LDCONST R4 K5
- 0x50140200, // 000B LDBOOL R5 1 0
- 0x7C080600, // 000C CALL R2 3
- 0x4C0C0000, // 000D LDNIL R3
- 0x200C0403, // 000E NE R3 R2 R3
- 0x780E0016, // 000F JMPF R3 #0027
- 0x8C0C0306, // 0010 GETMET R3 R1 K6
- 0x5C140400, // 0011 MOVE R5 R2
- 0x7C0C0400, // 0012 CALL R3 2
- 0x4C100000, // 0013 LDNIL R4
- 0x20100604, // 0014 NE R4 R3 R4
- 0x78120010, // 0015 JMPF R4 #0027
- 0x50100000, // 0016 LDBOOL R4 0 0
- 0x8C140707, // 0017 GETMET R5 R3 K7
- 0x601C0008, // 0018 GETGBL R7 G8
- 0x88200109, // 0019 GETMBR R8 R0 K9
- 0x7C1C0200, // 001A CALL R7 1
- 0x001E1007, // 001B ADD R7 K8 R7
- 0x7C140400, // 001C CALL R5 2
- 0x1C140B0A, // 001D EQ R5 R5 K10
- 0x5C100A00, // 001E MOVE R4 R5
- 0x8814010B, // 001F GETMBR R5 R0 K11
- 0x20140A04, // 0020 NE R5 R5 R4
- 0x78160004, // 0021 JMPF R5 #0027
- 0x8C14010C, // 0022 GETMET R5 R0 K12
- 0x541E0044, // 0023 LDINT R7 69
- 0x5820000D, // 0024 LDCONST R8 K13
- 0x7C140600, // 0025 CALL R5 3
- 0x90021604, // 0026 SETMBR R0 K11 R4
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Contact_update_virtual, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Contact),
- /* K2 */ be_nested_str_weak(shadow_contact),
- /* K3 */ be_nested_str_weak(attribute_updated),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E000B, // 0005 JMPF R3 #0012
- 0x600C0017, // 0006 GETGBL R3 G23
- 0x5C100400, // 0007 MOVE R4 R2
- 0x7C0C0200, // 0008 CALL R3 1
- 0x5C080600, // 0009 MOVE R2 R3
- 0x880C0102, // 000A GETMBR R3 R0 K2
- 0x200C0602, // 000B NE R3 R3 R2
- 0x780E0004, // 000C JMPF R3 #0012
- 0x8C0C0103, // 000D GETMET R3 R0 K3
- 0x54160044, // 000E LDINT R5 69
- 0x58180004, // 000F LDCONST R6 K4
- 0x7C0C0600, // 0010 CALL R3 3
- 0x90020402, // 0011 SETMBR R0 K2 R2
- 0x600C0003, // 0012 GETGBL R3 G3
- 0x5C100000, // 0013 MOVE R4 R0
- 0x7C0C0200, // 0014 CALL R3 1
- 0x8C0C0705, // 0015 GETMET R3 R3 K5
- 0x5C140200, // 0016 MOVE R5 R1
- 0x7C0C0400, // 0017 CALL R3 2
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function:
********************************************************************/
@@ -277,6 +70,128 @@ be_local_closure(Matter_Plugin_Sensor_Contact_init, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Contact_update_shadow, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[14]) { /* constants */
+ /* K0 */ be_nested_str_weak(update_shadow),
+ /* K1 */ be_nested_str_weak(VIRTUAL),
+ /* K2 */ be_nested_str_weak(Switch),
+ /* K3 */ be_nested_str_weak(tasmota_switch_index),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(cmd),
+ /* K6 */ be_nested_str_weak(Status_X208),
+ /* K7 */ be_nested_str_weak(find),
+ /* K8 */ be_nested_str_weak(StatusSNS),
+ /* K9 */ be_nested_str_weak(contains),
+ /* K10 */ be_nested_str_weak(ON),
+ /* K11 */ be_nested_str_weak(shadow_contact),
+ /* K12 */ be_nested_str_weak(attribute_updated),
+ /* K13 */ be_const_int(0),
+ }),
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[43]) { /* code */
+ 0x60040003, // 0000 GETGBL R1 G3
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x8C040300, // 0003 GETMET R1 R1 K0
+ 0x7C040200, // 0004 CALL R1 1
+ 0x88040101, // 0005 GETMBR R1 R0 K1
+ 0x74060022, // 0006 JMPT R1 #002A
+ 0x60040008, // 0007 GETGBL R1 G8
+ 0x88080103, // 0008 GETMBR R2 R0 K3
+ 0x7C040200, // 0009 CALL R1 1
+ 0x00060401, // 000A ADD R1 K2 R1
+ 0xB80A0800, // 000B GETNGBL R2 K4
+ 0x8C080505, // 000C GETMET R2 R2 K5
+ 0x58100006, // 000D LDCONST R4 K6
+ 0x50140200, // 000E LDBOOL R5 1 0
+ 0x7C080600, // 000F CALL R2 3
+ 0x4C0C0000, // 0010 LDNIL R3
+ 0x200C0403, // 0011 NE R3 R2 R3
+ 0x780E0003, // 0012 JMPF R3 #0017
+ 0x8C0C0507, // 0013 GETMET R3 R2 K7
+ 0x58140008, // 0014 LDCONST R5 K8
+ 0x7C0C0400, // 0015 CALL R3 2
+ 0x5C080600, // 0016 MOVE R2 R3
+ 0x4C0C0000, // 0017 LDNIL R3
+ 0x200C0403, // 0018 NE R3 R2 R3
+ 0x780E000F, // 0019 JMPF R3 #002A
+ 0x8C0C0509, // 001A GETMET R3 R2 K9
+ 0x5C140200, // 001B MOVE R5 R1
+ 0x7C0C0400, // 001C CALL R3 2
+ 0x780E000B, // 001D JMPF R3 #002A
+ 0x8C0C0507, // 001E GETMET R3 R2 K7
+ 0x5C140200, // 001F MOVE R5 R1
+ 0x7C0C0400, // 0020 CALL R3 2
+ 0x1C0C070A, // 0021 EQ R3 R3 K10
+ 0x8810010B, // 0022 GETMBR R4 R0 K11
+ 0x20100803, // 0023 NE R4 R4 R3
+ 0x78120003, // 0024 JMPF R4 #0029
+ 0x8C10010C, // 0025 GETMET R4 R0 K12
+ 0x541A0044, // 0026 LDINT R6 69
+ 0x581C000D, // 0027 LDCONST R7 K13
+ 0x7C100600, // 0028 CALL R4 3
+ 0x90021603, // 0029 SETMBR R0 K11 R3
+ 0x80000000, // 002A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Contact_parse_configuration, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota_switch_index),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(ARG),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_const_int(0),
+ }),
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x8C0C0301, // 0001 GETMET R3 R1 K1
+ 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0x58180003, // 0003 LDCONST R6 K3
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x7C080200, // 0005 CALL R2 1
+ 0x90020002, // 0006 SETMBR R0 K0 R2
+ 0x88080100, // 0007 GETMBR R2 R0 K0
+ 0x18080504, // 0008 LE R2 R2 K4
+ 0x780A0000, // 0009 JMPF R2 #000B
+ 0x90020103, // 000A SETMBR R0 K0 K3
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
@@ -290,7 +205,7 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -300,22 +215,20 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
/* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_nested_str_weak(U4),
- /* K10 */ be_const_int(1),
- /* K11 */ be_nested_str_weak(read_attribute),
+ /* K9 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
+ ( &(const binstruction[33]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0044, // 0004 LDINT R7 69
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0023, // 0006 JMPF R7 #002B
+ 0x781E0010, // 0006 JMPF R7 #0018
0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000F, // 0008 JMPF R7 #0019
+ 0x781E000E, // 0008 JMPF R7 #0018
0x881C0105, // 0009 GETMBR R7 R0 K5
0x4C200000, // 000A LDNIL R8
0x201C0E08, // 000B NE R7 R7 R8
@@ -331,35 +244,70 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
0x4C280000, // 0015 LDNIL R10
0x7C1C0600, // 0016 CALL R7 3
0x80040E00, // 0017 RET 1 R7
- 0x70020010, // 0018 JMP #002A
- 0x541EFFFB, // 0019 LDINT R7 65532
- 0x1C1C0C07, // 001A EQ R7 R6 R7
- 0x781E0005, // 001B JMPF R7 #0022
- 0x8C1C0706, // 001C GETMET R7 R3 K6
- 0x88240909, // 001D GETMBR R9 R4 K9
- 0x58280004, // 001E LDCONST R10 K4
- 0x7C1C0600, // 001F CALL R7 3
+ 0x601C0003, // 0018 GETGBL R7 G3
+ 0x5C200000, // 0019 MOVE R8 R0
+ 0x7C1C0200, // 001A CALL R7 1
+ 0x8C1C0F09, // 001B GETMET R7 R7 K9
+ 0x5C240200, // 001C MOVE R9 R1
+ 0x5C280400, // 001D MOVE R10 R2
+ 0x5C2C0600, // 001E MOVE R11 R3
+ 0x7C1C0800, // 001F CALL R7 4
0x80040E00, // 0020 RET 1 R7
- 0x70020007, // 0021 JMP #002A
- 0x541EFFFC, // 0022 LDINT R7 65533
- 0x1C1C0C07, // 0023 EQ R7 R6 R7
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240909, // 0026 GETMBR R9 R4 K9
- 0x5828000A, // 0027 LDCONST R10 K10
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x70020008, // 002A JMP #0034
- 0x601C0003, // 002B GETGBL R7 G3
- 0x5C200000, // 002C MOVE R8 R0
- 0x7C1C0200, // 002D CALL R7 1
- 0x8C1C0F0B, // 002E GETMET R7 R7 K11
- 0x5C240200, // 002F MOVE R9 R1
- 0x5C280400, // 0030 MOVE R10 R2
- 0x5C2C0600, // 0031 MOVE R11 R3
- 0x7C1C0800, // 0032 CALL R7 4
- 0x80040E00, // 0033 RET 1 R7
- 0x80000000, // 0034 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Contact_update_virtual, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(find),
+ /* K1 */ be_nested_str_weak(Contact),
+ /* K2 */ be_nested_str_weak(shadow_contact),
+ /* K3 */ be_nested_str_weak(attribute_updated),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(update_virtual),
+ }),
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x58100001, // 0001 LDCONST R4 K1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x200C0403, // 0004 NE R3 R2 R3
+ 0x780E000B, // 0005 JMPF R3 #0012
+ 0x600C0017, // 0006 GETGBL R3 G23
+ 0x5C100400, // 0007 MOVE R4 R2
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x5C080600, // 0009 MOVE R2 R3
+ 0x880C0102, // 000A GETMBR R3 R0 K2
+ 0x200C0602, // 000B NE R3 R3 R2
+ 0x780E0004, // 000C JMPF R3 #0012
+ 0x8C0C0103, // 000D GETMET R3 R0 K3
+ 0x54160044, // 000E LDINT R5 69
+ 0x58180004, // 000F LDCONST R6 K4
+ 0x7C0C0600, // 0010 CALL R3 3
+ 0x90020402, // 0011 SETMBR R0 K2 R2
+ 0x600C0003, // 0012 GETGBL R3 G3
+ 0x5C100000, // 0013 MOVE R4 R0
+ 0x7C0C0200, // 0014 CALL R3 1
+ 0x8C0C0705, // 0015 GETMET R3 R3 K5
+ 0x5C140200, // 0016 MOVE R5 R1
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x80000000, // 0018 RET 0
})
)
);
@@ -373,26 +321,33 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Sensor_Contact,
2,
&be_class_Matter_Plugin_Device,
- be_nested_map(17,
+ be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(read_attribute, 12), be_const_closure(Matter_Plugin_Sensor_Contact_read_attribute_closure) },
- { be_const_key_weak(append_state_json, -1), be_const_closure(Matter_Plugin_Sensor_Contact_append_state_json_closure) },
+ { be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(Matter_Plugin_Sensor_Contact__X3Clambda_X3E_closure) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(shadow_contact, -1), be_const_var(1) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Sensor_Contact_init_closure) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(update_virtual, -1), be_const_closure(Matter_Plugin_Sensor_Contact_update_virtual_closure) },
+ { be_const_key_weak(update_shadow, 15), be_const_closure(Matter_Plugin_Sensor_Contact_update_shadow_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(1,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Contact),
+ })) ) } )) },
+ { be_const_key_weak(ARG, 6), be_nested_str_weak(switch) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Contact) },
+ { be_const_key_weak(tasmota_switch_index, 11), be_const_var(0) },
+ { be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(21, -1), be_const_int(1) },
})) ) } )) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_Contact_parse_configuration_closure) },
- { be_const_key_weak(shadow_contact, 16), be_const_var(1) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(Matter_Plugin_Sensor_Contact_update_virtual_closure) },
- { be_const_key_weak(ARG, 7), be_nested_str_weak(switch) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -400,64 +355,81 @@ be_local_class(Matter_Plugin_Sensor_Contact,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
})) ) } )) },
- { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
- { be_const_key_weak(DISPLAY_NAME, 0), be_nested_str_weak(Contact) },
- { be_const_key_weak(ARG_TYPE, 13), be_const_static_closure(Matter_Plugin_Sensor_Contact__X3Clambda_X3E_closure) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(contact) },
- { be_const_key_weak(UPDATE_COMMANDS, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Contact),
- })) ) } )) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Sensor_Contact_update_shadow_closure) },
+ { be_const_key_weak(TYPE, 9), be_nested_str_weak(contact) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Sensor_Contact_read_attribute_closure) },
+ { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_Contact_parse_configuration_closure) },
})),
be_str_weak(Matter_Plugin_Sensor_Contact)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h
index d49d927cc..a423b4a6f 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h
@@ -7,32 +7,26 @@
extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
/********************************************************************
-** Solidified function: append_state_json
+** Solidified function:
********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Occupancy_append_state_json, /* name */
+be_local_closure(Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */
be_nested_proto(
- 5, /* nstack */
+ 3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_X2C_X22Occupancy_X22_X3A_X25s),
- /* K1 */ be_nested_str_weak(shadow_occupancy),
- }),
- be_str_weak(append_state_json),
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x60040018, // 0000 GETGBL R1 G24
- 0x58080000, // 0001 LDCONST R2 K0
- 0x600C0009, // 0002 GETGBL R3 G9
- 0x88100101, // 0003 GETMBR R4 R0 K1
- 0x7C0C0200, // 0004 CALL R3 1
- 0x7C040400, // 0005 CALL R1 2
- 0x80040200, // 0006 RET 1 R1
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040009, // 0000 GETGBL R1 G9
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
})
)
);
@@ -40,9 +34,9 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_append_state_json, /* name */
/********************************************************************
-** Solidified function: parse_configuration
+** Solidified function: update_virtual
********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name */
+be_local_closure(Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
@@ -52,28 +46,79 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name *
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_switch_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(1),
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(find),
+ /* K1 */ be_nested_str_weak(Occupancy),
+ /* K2 */ be_nested_str_weak(shadow_occupancy),
+ /* K3 */ be_nested_str_weak(attribute_updated),
/* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(update_virtual),
}),
- be_str_weak(parse_configuration),
+ be_str_weak(update_virtual),
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0301, // 0001 GETMET R3 R1 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x58180003, // 0003 LDCONST R6 K3
- 0x7C0C0600, // 0004 CALL R3 3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x18080504, // 0008 LE R2 R2 K4
- 0x780A0000, // 0009 JMPF R2 #000B
- 0x90020103, // 000A SETMBR R0 K0 K3
- 0x80000000, // 000B RET 0
+ ( &(const binstruction[25]) { /* code */
+ 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x58100001, // 0001 LDCONST R4 K1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x200C0403, // 0004 NE R3 R2 R3
+ 0x780E000B, // 0005 JMPF R3 #0012
+ 0x600C0017, // 0006 GETGBL R3 G23
+ 0x5C100400, // 0007 MOVE R4 R2
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x5C080600, // 0009 MOVE R2 R3
+ 0x880C0102, // 000A GETMBR R3 R0 K2
+ 0x200C0602, // 000B NE R3 R3 R2
+ 0x780E0004, // 000C JMPF R3 #0012
+ 0x8C0C0103, // 000D GETMET R3 R0 K3
+ 0x54160405, // 000E LDINT R5 1030
+ 0x58180004, // 000F LDCONST R6 K4
+ 0x7C0C0600, // 0010 CALL R3 3
+ 0x90020402, // 0011 SETMBR R0 K2 R2
+ 0x600C0003, // 0012 GETGBL R3 G3
+ 0x5C100000, // 0013 MOVE R4 R0
+ 0x7C0C0200, // 0014 CALL R3 1
+ 0x8C0C0705, // 0015 GETMET R3 R3 K5
+ 0x5C140200, // 0016 MOVE R5 R1
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x80000000, // 0018 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Occupancy_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(shadow_occupancy),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100900, // 0003 GETMET R4 R4 K0
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x50100000, // 0008 LDBOOL R4 0 0
+ 0x90020204, // 0009 SETMBR R0 K1 R4
+ 0x80000000, // 000A RET 0
})
)
);
@@ -162,9 +207,9 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_update_shadow, /* name */
/********************************************************************
-** Solidified function: update_virtual
+** Solidified function: parse_configuration
********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */
+be_local_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
@@ -174,106 +219,28 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Occupancy),
- /* K2 */ be_nested_str_weak(shadow_occupancy),
- /* K3 */ be_nested_str_weak(attribute_updated),
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota_switch_index),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(ARG),
+ /* K3 */ be_const_int(1),
/* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(update_virtual),
}),
- be_str_weak(update_virtual),
+ be_str_weak(parse_configuration),
&be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E000B, // 0005 JMPF R3 #0012
- 0x600C0017, // 0006 GETGBL R3 G23
- 0x5C100400, // 0007 MOVE R4 R2
- 0x7C0C0200, // 0008 CALL R3 1
- 0x5C080600, // 0009 MOVE R2 R3
- 0x880C0102, // 000A GETMBR R3 R0 K2
- 0x200C0602, // 000B NE R3 R3 R2
- 0x780E0004, // 000C JMPF R3 #0012
- 0x8C0C0103, // 000D GETMET R3 R0 K3
- 0x54160405, // 000E LDINT R5 1030
- 0x58180004, // 000F LDCONST R6 K4
- 0x7C0C0600, // 0010 CALL R3 3
- 0x90020402, // 0011 SETMBR R0 K2 R2
- 0x600C0003, // 0012 GETGBL R3 G3
- 0x5C100000, // 0013 MOVE R4 R0
- 0x7C0C0200, // 0014 CALL R3 1
- 0x8C0C0705, // 0015 GETMET R3 R3 K5
- 0x5C140200, // 0016 MOVE R5 R1
- 0x7C0C0400, // 0017 CALL R3 2
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Plugin_Sensor_Occupancy_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_occupancy),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x50100000, // 0008 LDBOOL R4 0 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x80000000, // 000A RET 0
+ ( &(const binstruction[12]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x8C0C0301, // 0001 GETMET R3 R1 K1
+ 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0x58180003, // 0003 LDCONST R6 K3
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x7C080200, // 0005 CALL R2 1
+ 0x90020002, // 0006 SETMBR R0 K0 R2
+ 0x88080100, // 0007 GETMBR R2 R0 K0
+ 0x18080504, // 0008 LE R2 R2 K4
+ 0x780A0000, // 0009 JMPF R2 #000B
+ 0x90020103, // 000A SETMBR R0 K0 K3
+ 0x80000000, // 000B RET 0
})
)
);
@@ -293,7 +260,7 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[13]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -306,19 +273,18 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(3),
/* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(U4),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K12 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[69]) { /* code */
+ ( &(const binstruction[49]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0405, // 0004 LDINT R7 1030
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0033, // 0006 JMPF R7 #003B
+ 0x781E0020, // 0006 JMPF R7 #0028
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E000F, // 0008 JMPF R7 #0019
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -336,7 +302,7 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
0x4C280000, // 0015 LDNIL R10
0x7C1C0600, // 0016 CALL R7 3
0x80040E00, // 0017 RET 1 R7
- 0x70020020, // 0018 JMP #003A
+ 0x7002000E, // 0018 JMP #0028
0x1C1C0D09, // 0019 EQ R7 R6 K9
0x781E0005, // 001A JMPF R7 #0021
0x8C1C0706, // 001B GETMET R7 R3 K6
@@ -344,43 +310,23 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
0x5828000A, // 001D LDCONST R10 K10
0x7C1C0600, // 001E CALL R7 3
0x80040E00, // 001F RET 1 R7
- 0x70020018, // 0020 JMP #003A
+ 0x70020006, // 0020 JMP #0028
0x1C1C0D0B, // 0021 EQ R7 R6 K11
- 0x781E0005, // 0022 JMPF R7 #0029
+ 0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0706, // 0023 GETMET R7 R3 K6
0x88240907, // 0024 GETMBR R9 R4 K7
0x58280004, // 0025 LDCONST R10 K4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
- 0x70020010, // 0028 JMP #003A
- 0x541EFFFB, // 0029 LDINT R7 65532
- 0x1C1C0C07, // 002A EQ R7 R6 R7
- 0x781E0005, // 002B JMPF R7 #0032
- 0x8C1C0706, // 002C GETMET R7 R3 K6
- 0x8824090C, // 002D GETMBR R9 R4 K12
- 0x58280004, // 002E LDCONST R10 K4
- 0x7C1C0600, // 002F CALL R7 3
+ 0x601C0003, // 0028 GETGBL R7 G3
+ 0x5C200000, // 0029 MOVE R8 R0
+ 0x7C1C0200, // 002A CALL R7 1
+ 0x8C1C0F0C, // 002B GETMET R7 R7 K12
+ 0x5C240200, // 002C MOVE R9 R1
+ 0x5C280400, // 002D MOVE R10 R2
+ 0x5C2C0600, // 002E MOVE R11 R3
+ 0x7C1C0800, // 002F CALL R7 4
0x80040E00, // 0030 RET 1 R7
- 0x70020007, // 0031 JMP #003A
- 0x541EFFFC, // 0032 LDINT R7 65533
- 0x1C1C0C07, // 0033 EQ R7 R6 R7
- 0x781E0004, // 0034 JMPF R7 #003A
- 0x8C1C0706, // 0035 GETMET R7 R3 K6
- 0x8824090C, // 0036 GETMBR R9 R4 K12
- 0x5828000A, // 0037 LDCONST R10 K10
- 0x7C1C0600, // 0038 CALL R7 3
- 0x80040E00, // 0039 RET 1 R7
- 0x70020008, // 003A JMP #0044
- 0x601C0003, // 003B GETGBL R7 G3
- 0x5C200000, // 003C MOVE R8 R0
- 0x7C1C0200, // 003D CALL R7 1
- 0x8C1C0F0D, // 003E GETMET R7 R7 K13
- 0x5C240200, // 003F MOVE R9 R1
- 0x5C280400, // 0040 MOVE R10 R2
- 0x5C2C0600, // 0041 MOVE R11 R3
- 0x7C1C0800, // 0042 CALL R7 4
- 0x80040E00, // 0043 RET 1 R7
- 0x80000000, // 0044 RET 0
})
)
);
@@ -394,26 +340,22 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Sensor_Occupancy,
2,
&be_class_Matter_Plugin_Device,
- be_nested_map(17,
+ be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(read_attribute, 12), be_const_closure(Matter_Plugin_Sensor_Occupancy_read_attribute_closure) },
- { be_const_key_weak(append_state_json, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_append_state_json_closure) },
+ { be_const_key_weak(ARG_TYPE, 2), be_const_static_closure(Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E_closure) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(update_virtual, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_update_virtual_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_init_closure) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(263, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_update_shadow_closure) },
+ { be_const_key_weak(tasmota_switch_index, 9), be_const_var(0) },
+ { be_const_key_weak(update_shadow, 14), be_const_closure(Matter_Plugin_Sensor_Occupancy_update_shadow_closure) },
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Occupancy) },
- { be_const_key_weak(ARG, 16), be_nested_str_weak(switch) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
+ { be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -421,66 +363,94 @@ be_local_class(Matter_Plugin_Sensor_Occupancy,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1030, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
})) ) } )) },
- { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
- { be_const_key_weak(UPDATE_TIME, 0), be_const_int(750) },
- { be_const_key_weak(shadow_occupancy, 13), be_const_var(1) },
- { be_const_key_weak(ARG_TYPE, 7), be_const_static_closure(Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E_closure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(occupancy) },
- { be_const_key_weak(UPDATE_COMMANDS, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ { be_const_key_weak(read_attribute, 4), be_const_closure(Matter_Plugin_Sensor_Occupancy_read_attribute_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(263, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_nested_str_weak(Occupancy),
})) ) } )) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_update_virtual_closure) },
+ { be_const_key_weak(TYPE, 6), be_nested_str_weak(occupancy) },
+ { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) },
+ { be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
})),
be_str_weak(Matter_Plugin_Sensor_Occupancy)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h
index b0847cd19..8f8f8c192 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h
@@ -168,7 +168,7 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -178,57 +178,36 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
/* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(U4),
- /* K10 */ be_nested_str_weak(read_attribute),
+ /* K9 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
+ ( &(const binstruction[25]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E001B, // 0006 JMPF R7 #0023
+ 0x781E0008, // 0006 JMPF R7 #0010
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0005, // 000A JMPF R7 #0011
+ 0x781E0004, // 000A JMPF R7 #0010
0x8C1C0706, // 000B GETMET R7 R3 K6
0x88240907, // 000C GETMBR R9 R4 K7
0x88280108, // 000D GETMBR R10 R0 K8
0x7C1C0600, // 000E CALL R7 3
0x80040E00, // 000F RET 1 R7
- 0x70020010, // 0010 JMP #0022
- 0x541EFFFB, // 0011 LDINT R7 65532
- 0x1C1C0C07, // 0012 EQ R7 R6 R7
- 0x781E0005, // 0013 JMPF R7 #001A
- 0x8C1C0706, // 0014 GETMET R7 R3 K6
- 0x88240909, // 0015 GETMBR R9 R4 K9
- 0x58280005, // 0016 LDCONST R10 K5
- 0x7C1C0600, // 0017 CALL R7 3
+ 0x601C0003, // 0010 GETGBL R7 G3
+ 0x5C200000, // 0011 MOVE R8 R0
+ 0x7C1C0200, // 0012 CALL R7 1
+ 0x8C1C0F09, // 0013 GETMET R7 R7 K9
+ 0x5C240200, // 0014 MOVE R9 R1
+ 0x5C280400, // 0015 MOVE R10 R2
+ 0x5C2C0600, // 0016 MOVE R11 R3
+ 0x7C1C0800, // 0017 CALL R7 4
0x80040E00, // 0018 RET 1 R7
- 0x70020007, // 0019 JMP #0022
- 0x541EFFFC, // 001A LDINT R7 65533
- 0x1C1C0C07, // 001B EQ R7 R6 R7
- 0x781E0004, // 001C JMPF R7 #0022
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240909, // 001E GETMBR R9 R4 K9
- 0x542A0003, // 001F LDINT R10 4
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020008, // 0022 JMP #002C
- 0x601C0003, // 0023 GETGBL R7 G3
- 0x5C200000, // 0024 MOVE R8 R0
- 0x7C1C0200, // 0025 CALL R7 1
- 0x8C1C0F0A, // 0026 GETMET R7 R7 K10
- 0x5C240200, // 0027 MOVE R9 R1
- 0x5C280400, // 0028 MOVE R10 R2
- 0x5C2C0600, // 0029 MOVE R11 R3
- 0x7C1C0800, // 002A CALL R7 4
- 0x80040E00, // 002B RET 1 R7
- 0x80000000, // 002C RET 0
})
)
);
@@ -281,14 +260,18 @@ be_local_class(Matter_Plugin_Sensor_OnOff,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -296,42 +279,63 @@ be_local_class(Matter_Plugin_Sensor_OnOff,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h
index 16c73a9ed..eb73d03f8 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h
@@ -224,7 +224,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
+ ( &(const bvalue[17]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -241,12 +241,11 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
/* K13 */ be_nested_str_weak(shadow_shutter_direction),
/* K14 */ be_const_int(2),
/* K15 */ be_nested_str_weak(shadow_shutter_target),
- /* K16 */ be_nested_str_weak(U4),
- /* K17 */ be_nested_str_weak(read_attribute),
+ /* K16 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[152]) { /* code */
+ ( &(const binstruction[131]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
@@ -254,7 +253,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x4C1C0000, // 0004 LDNIL R7
0x54220101, // 0005 LDINT R8 258
0x1C200A08, // 0006 EQ R8 R5 R8
- 0x78220085, // 0007 JMPF R8 #008E
+ 0x78220071, // 0007 JMPF R8 #007A
0x8C200104, // 0008 GETMET R8 R0 K4
0x7C200200, // 0009 CALL R8 1
0x8C200105, // 000A GETMET R8 R0 K5
@@ -266,7 +265,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x542E00FE, // 0010 LDINT R11 255
0x7C200600, // 0011 CALL R8 3
0x80041000, // 0012 RET 1 R8
- 0x70020078, // 0013 JMP #008D
+ 0x70020065, // 0013 JMP #007A
0x54220004, // 0014 LDINT R8 5
0x1C200C08, // 0015 EQ R8 R6 R8
0x78220005, // 0016 JMPF R8 #001D
@@ -275,7 +274,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x582C0006, // 0019 LDCONST R11 K6
0x7C200600, // 001A CALL R8 3
0x80041000, // 001B RET 1 R8
- 0x7002006F, // 001C JMP #008D
+ 0x7002005C, // 001C JMP #007A
0x54220006, // 001D LDINT R8 7
0x1C200C08, // 001E EQ R8 R6 R8
0x78220006, // 001F JMPF R8 #0027
@@ -285,7 +284,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x002E140B, // 0023 ADD R11 K10 R11
0x7C200600, // 0024 CALL R8 3
0x80041000, // 0025 RET 1 R8
- 0x70020065, // 0026 JMP #008D
+ 0x70020052, // 0026 JMP #007A
0x5422000C, // 0027 LDINT R8 13
0x1C200C08, // 0028 EQ R8 R6 R8
0x78220005, // 0029 JMPF R8 #0030
@@ -294,7 +293,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x542E00FE, // 002C LDINT R11 255
0x7C200600, // 002D CALL R8 3
0x80041000, // 002E RET 1 R8
- 0x7002005C, // 002F JMP #008D
+ 0x70020049, // 002F JMP #007A
0x5422000D, // 0030 LDINT R8 14
0x1C200C08, // 0031 EQ R8 R6 R8
0x78220013, // 0032 JMPF R8 #0047
@@ -317,7 +316,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x5C2C0E00, // 0043 MOVE R11 R7
0x7C200600, // 0044 CALL R8 3
0x80041000, // 0045 RET 1 R8
- 0x70020045, // 0046 JMP #008D
+ 0x70020032, // 0046 JMP #007A
0x54220009, // 0047 LDINT R8 10
0x1C200C08, // 0048 EQ R8 R6 R8
0x78220010, // 0049 JMPF R8 #005B
@@ -337,7 +336,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x5C301000, // 0057 MOVE R12 R8
0x7C240600, // 0058 CALL R9 3
0x80041200, // 0059 RET 1 R9
- 0x70020031, // 005A JMP #008D
+ 0x7002001E, // 005A JMP #007A
0x5422000A, // 005B LDINT R8 11
0x1C200C08, // 005C EQ R8 R6 R8
0x78220013, // 005D JMPF R8 #0072
@@ -360,45 +359,24 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
0x5C2C0E00, // 006E MOVE R11 R7
0x7C200600, // 006F CALL R8 3
0x80041000, // 0070 RET 1 R8
- 0x7002001A, // 0071 JMP #008D
+ 0x70020007, // 0071 JMP #007A
0x54220016, // 0072 LDINT R8 23
0x1C200C08, // 0073 EQ R8 R6 R8
- 0x78220005, // 0074 JMPF R8 #007B
+ 0x78220004, // 0074 JMPF R8 #007A
0x8C200707, // 0075 GETMET R8 R3 K7
0x88280908, // 0076 GETMBR R10 R4 K8
0x582C0006, // 0077 LDCONST R11 K6
0x7C200600, // 0078 CALL R8 3
0x80041000, // 0079 RET 1 R8
- 0x70020011, // 007A JMP #008D
- 0x5422FFFB, // 007B LDINT R8 65532
- 0x1C200C08, // 007C EQ R8 R6 R8
- 0x78220006, // 007D JMPF R8 #0085
- 0x8C200707, // 007E GETMET R8 R3 K7
- 0x88280910, // 007F GETMBR R10 R4 K16
- 0x542E0003, // 0080 LDINT R11 4
- 0x002E140B, // 0081 ADD R11 K10 R11
- 0x7C200600, // 0082 CALL R8 3
- 0x80041000, // 0083 RET 1 R8
- 0x70020007, // 0084 JMP #008D
- 0x5422FFFC, // 0085 LDINT R8 65533
- 0x1C200C08, // 0086 EQ R8 R6 R8
- 0x78220004, // 0087 JMPF R8 #008D
- 0x8C200707, // 0088 GETMET R8 R3 K7
- 0x88280910, // 0089 GETMBR R10 R4 K16
- 0x542E0004, // 008A LDINT R11 5
- 0x7C200600, // 008B CALL R8 3
- 0x80041000, // 008C RET 1 R8
- 0x70020008, // 008D JMP #0097
- 0x60200003, // 008E GETGBL R8 G3
- 0x5C240000, // 008F MOVE R9 R0
- 0x7C200200, // 0090 CALL R8 1
- 0x8C201111, // 0091 GETMET R8 R8 K17
- 0x5C280200, // 0092 MOVE R10 R1
- 0x5C2C0400, // 0093 MOVE R11 R2
- 0x5C300600, // 0094 MOVE R12 R3
- 0x7C200800, // 0095 CALL R8 4
- 0x80041000, // 0096 RET 1 R8
- 0x80000000, // 0097 RET 0
+ 0x60200003, // 007A GETGBL R8 G3
+ 0x5C240000, // 007B MOVE R9 R0
+ 0x7C200200, // 007C CALL R8 1
+ 0x8C201110, // 007D GETMET R8 R8 K16
+ 0x5C280200, // 007E MOVE R10 R1
+ 0x5C2C0400, // 007F MOVE R11 R2
+ 0x5C300600, // 0080 MOVE R12 R3
+ 0x7C200800, // 0081 CALL R8 4
+ 0x80041000, // 0082 RET 1 R8
})
)
);
@@ -670,7 +648,7 @@ be_local_class(Matter_Plugin_Shutter,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(258, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
+ be_const_list( * be_nested_list(14,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(5),
@@ -680,11 +658,15 @@ be_local_class(Matter_Plugin_Shutter,
be_const_int(13),
be_const_int(14),
be_const_int(23),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -692,42 +674,63 @@ be_local_class(Matter_Plugin_Shutter,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h
index c0eb08bcd..e4a9b75dd 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h
@@ -120,7 +120,7 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -130,57 +130,36 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
/* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(U4),
- /* K10 */ be_nested_str_weak(read_attribute),
+ /* K9 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
+ ( &(const binstruction[25]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E001B, // 0006 JMPF R7 #0023
+ 0x781E0008, // 0006 JMPF R7 #0010
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0005, // 000A JMPF R7 #0011
+ 0x781E0004, // 000A JMPF R7 #0010
0x8C1C0706, // 000B GETMET R7 R3 K6
0x88240907, // 000C GETMBR R9 R4 K7
0x88280108, // 000D GETMBR R10 R0 K8
0x7C1C0600, // 000E CALL R7 3
0x80040E00, // 000F RET 1 R7
- 0x70020010, // 0010 JMP #0022
- 0x541EFFFB, // 0011 LDINT R7 65532
- 0x1C1C0C07, // 0012 EQ R7 R6 R7
- 0x781E0005, // 0013 JMPF R7 #001A
- 0x8C1C0706, // 0014 GETMET R7 R3 K6
- 0x88240909, // 0015 GETMBR R9 R4 K9
- 0x58280005, // 0016 LDCONST R10 K5
- 0x7C1C0600, // 0017 CALL R7 3
+ 0x601C0003, // 0010 GETGBL R7 G3
+ 0x5C200000, // 0011 MOVE R8 R0
+ 0x7C1C0200, // 0012 CALL R7 1
+ 0x8C1C0F09, // 0013 GETMET R7 R7 K9
+ 0x5C240200, // 0014 MOVE R9 R1
+ 0x5C280400, // 0015 MOVE R10 R2
+ 0x5C2C0600, // 0016 MOVE R11 R3
+ 0x7C1C0800, // 0017 CALL R7 4
0x80040E00, // 0018 RET 1 R7
- 0x70020007, // 0019 JMP #0022
- 0x541EFFFC, // 001A LDINT R7 65533
- 0x1C1C0C07, // 001B EQ R7 R6 R7
- 0x781E0004, // 001C JMPF R7 #0022
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240909, // 001E GETMBR R9 R4 K9
- 0x542A0003, // 001F LDINT R10 4
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020008, // 0022 JMP #002C
- 0x601C0003, // 0023 GETGBL R7 G3
- 0x5C200000, // 0024 MOVE R8 R0
- 0x7C1C0200, // 0025 CALL R7 1
- 0x8C1C0F0A, // 0026 GETMET R7 R7 K10
- 0x5C240200, // 0027 MOVE R9 R1
- 0x5C280400, // 0028 MOVE R10 R2
- 0x5C2C0600, // 0029 MOVE R11 R3
- 0x7C1C0800, // 002A CALL R7 4
- 0x80040E00, // 002B RET 1 R7
- 0x80000000, // 002C RET 0
})
)
);
@@ -494,14 +473,18 @@ be_local_class(Matter_Plugin_Bridge_Light0,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -509,42 +492,63 @@ be_local_class(Matter_Plugin_Bridge_Light0,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h
index 5f072e844..e39b2ffa0 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h
@@ -209,7 +209,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -219,22 +219,20 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
/* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_nested_str_weak(U4),
- /* K10 */ be_const_int(1),
- /* K11 */ be_nested_str_weak(read_attribute),
+ /* K9 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
+ ( &(const binstruction[33]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0044, // 0004 LDINT R7 69
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0023, // 0006 JMPF R7 #002B
+ 0x781E0010, // 0006 JMPF R7 #0018
0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000F, // 0008 JMPF R7 #0019
+ 0x781E000E, // 0008 JMPF R7 #0018
0x881C0105, // 0009 GETMBR R7 R0 K5
0x4C200000, // 000A LDNIL R8
0x201C0E08, // 000B NE R7 R7 R8
@@ -250,35 +248,15 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
0x4C280000, // 0015 LDNIL R10
0x7C1C0600, // 0016 CALL R7 3
0x80040E00, // 0017 RET 1 R7
- 0x70020010, // 0018 JMP #002A
- 0x541EFFFB, // 0019 LDINT R7 65532
- 0x1C1C0C07, // 001A EQ R7 R6 R7
- 0x781E0005, // 001B JMPF R7 #0022
- 0x8C1C0706, // 001C GETMET R7 R3 K6
- 0x88240909, // 001D GETMBR R9 R4 K9
- 0x58280004, // 001E LDCONST R10 K4
- 0x7C1C0600, // 001F CALL R7 3
+ 0x601C0003, // 0018 GETGBL R7 G3
+ 0x5C200000, // 0019 MOVE R8 R0
+ 0x7C1C0200, // 001A CALL R7 1
+ 0x8C1C0F09, // 001B GETMET R7 R7 K9
+ 0x5C240200, // 001C MOVE R9 R1
+ 0x5C280400, // 001D MOVE R10 R2
+ 0x5C2C0600, // 001E MOVE R11 R3
+ 0x7C1C0800, // 001F CALL R7 4
0x80040E00, // 0020 RET 1 R7
- 0x70020007, // 0021 JMP #002A
- 0x541EFFFC, // 0022 LDINT R7 65533
- 0x1C1C0C07, // 0023 EQ R7 R6 R7
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240909, // 0026 GETMBR R9 R4 K9
- 0x5828000A, // 0027 LDCONST R10 K10
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x70020008, // 002A JMP #0034
- 0x601C0003, // 002B GETGBL R7 G3
- 0x5C200000, // 002C MOVE R8 R0
- 0x7C1C0200, // 002D CALL R7 1
- 0x8C1C0F0B, // 002E GETMET R7 R7 K11
- 0x5C240200, // 002F MOVE R9 R1
- 0x5C280400, // 0030 MOVE R10 R2
- 0x5C2C0600, // 0031 MOVE R11 R3
- 0x7C1C0800, // 0032 CALL R7 4
- 0x80040E00, // 0033 RET 1 R7
- 0x80000000, // 0034 RET 0
})
)
);
@@ -352,7 +330,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -360,49 +338,74 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h
index f79147599..20fbfe3b6 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h
@@ -209,7 +209,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[13]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -222,19 +222,18 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(3),
/* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(U4),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K12 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[69]) { /* code */
+ ( &(const binstruction[49]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0405, // 0004 LDINT R7 1030
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0033, // 0006 JMPF R7 #003B
+ 0x781E0020, // 0006 JMPF R7 #0028
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E000F, // 0008 JMPF R7 #0019
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -252,7 +251,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
0x4C280000, // 0015 LDNIL R10
0x7C1C0600, // 0016 CALL R7 3
0x80040E00, // 0017 RET 1 R7
- 0x70020020, // 0018 JMP #003A
+ 0x7002000E, // 0018 JMP #0028
0x1C1C0D09, // 0019 EQ R7 R6 K9
0x781E0005, // 001A JMPF R7 #0021
0x8C1C0706, // 001B GETMET R7 R3 K6
@@ -260,43 +259,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
0x5828000A, // 001D LDCONST R10 K10
0x7C1C0600, // 001E CALL R7 3
0x80040E00, // 001F RET 1 R7
- 0x70020018, // 0020 JMP #003A
+ 0x70020006, // 0020 JMP #0028
0x1C1C0D0B, // 0021 EQ R7 R6 K11
- 0x781E0005, // 0022 JMPF R7 #0029
+ 0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0706, // 0023 GETMET R7 R3 K6
0x88240907, // 0024 GETMBR R9 R4 K7
0x58280004, // 0025 LDCONST R10 K4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
- 0x70020010, // 0028 JMP #003A
- 0x541EFFFB, // 0029 LDINT R7 65532
- 0x1C1C0C07, // 002A EQ R7 R6 R7
- 0x781E0005, // 002B JMPF R7 #0032
- 0x8C1C0706, // 002C GETMET R7 R3 K6
- 0x8824090C, // 002D GETMBR R9 R4 K12
- 0x58280004, // 002E LDCONST R10 K4
- 0x7C1C0600, // 002F CALL R7 3
+ 0x601C0003, // 0028 GETGBL R7 G3
+ 0x5C200000, // 0029 MOVE R8 R0
+ 0x7C1C0200, // 002A CALL R7 1
+ 0x8C1C0F0C, // 002B GETMET R7 R7 K12
+ 0x5C240200, // 002C MOVE R9 R1
+ 0x5C280400, // 002D MOVE R10 R2
+ 0x5C2C0600, // 002E MOVE R11 R3
+ 0x7C1C0800, // 002F CALL R7 4
0x80040E00, // 0030 RET 1 R7
- 0x70020007, // 0031 JMP #003A
- 0x541EFFFC, // 0032 LDINT R7 65533
- 0x1C1C0C07, // 0033 EQ R7 R6 R7
- 0x781E0004, // 0034 JMPF R7 #003A
- 0x8C1C0706, // 0035 GETMET R7 R3 K6
- 0x8824090C, // 0036 GETMBR R9 R4 K12
- 0x5828000A, // 0037 LDCONST R10 K10
- 0x7C1C0600, // 0038 CALL R7 3
- 0x80040E00, // 0039 RET 1 R7
- 0x70020008, // 003A JMP #0044
- 0x601C0003, // 003B GETGBL R7 G3
- 0x5C200000, // 003C MOVE R8 R0
- 0x7C1C0200, // 003D CALL R7 1
- 0x8C1C0F0D, // 003E GETMET R7 R7 K13
- 0x5C240200, // 003F MOVE R9 R1
- 0x5C280400, // 0040 MOVE R10 R2
- 0x5C2C0600, // 0041 MOVE R11 R3
- 0x7C1C0800, // 0042 CALL R7 4
- 0x80040E00, // 0043 RET 1 R7
- 0x80000000, // 0044 RET 0
})
)
);
@@ -373,7 +352,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -381,51 +360,76 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1030, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h
index 8f157b0f3..f52fc8830 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h
@@ -352,14 +352,14 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[82]) { /* code */
+ ( &(const binstruction[71]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E02FF, // 0004 LDINT R7 768
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0040, // 0006 JMPF R7 #0048
+ 0x781E0036, // 0006 JMPF R7 #003E
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x541E0006, // 0009 LDINT R7 7
@@ -370,7 +370,7 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
0x88280107, // 000E GETMBR R10 R0 K7
0x7C1C0600, // 000F CALL R7 3
0x80040E00, // 0010 RET 1 R7
- 0x70020034, // 0011 JMP #0047
+ 0x7002002B, // 0011 JMP #003E
0x541E0007, // 0012 LDINT R7 8
0x1C1C0C07, // 0013 EQ R7 R6 R7
0x781E0005, // 0014 JMPF R7 #001B
@@ -379,7 +379,7 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
0x58280008, // 0017 LDCONST R10 K8
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x7002002B, // 001A JMP #0047
+ 0x70020022, // 001A JMP #003E
0x541E000E, // 001B LDINT R7 15
0x1C1C0C07, // 001C EQ R7 R6 R7
0x781E0005, // 001D JMPF R7 #0024
@@ -388,7 +388,7 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
0x58280009, // 0020 LDCONST R10 K9
0x7C1C0600, // 0021 CALL R7 3
0x80040E00, // 0022 RET 1 R7
- 0x70020022, // 0023 JMP #0047
+ 0x70020019, // 0023 JMP #003E
0x541E400A, // 0024 LDINT R7 16395
0x1C1C0C07, // 0025 EQ R7 R6 R7
0x781E0005, // 0026 JMPF R7 #002D
@@ -397,7 +397,7 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
0x8828010A, // 0029 GETMBR R10 R0 K10
0x7C1C0600, // 002A CALL R7 3
0x80040E00, // 002B RET 1 R7
- 0x70020019, // 002C JMP #0047
+ 0x70020010, // 002C JMP #003E
0x541E400B, // 002D LDINT R7 16396
0x1C1C0C07, // 002E EQ R7 R6 R7
0x781E0005, // 002F JMPF R7 #0036
@@ -406,35 +406,24 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
0x8828010B, // 0032 GETMBR R10 R0 K11
0x7C1C0600, // 0033 CALL R7 3
0x80040E00, // 0034 RET 1 R7
- 0x70020010, // 0035 JMP #0047
+ 0x70020007, // 0035 JMP #003E
0x541EFFFB, // 0036 LDINT R7 65532
0x1C1C0C07, // 0037 EQ R7 R6 R7
- 0x781E0005, // 0038 JMPF R7 #003F
+ 0x781E0004, // 0038 JMPF R7 #003E
0x8C1C0705, // 0039 GETMET R7 R3 K5
0x8824090C, // 003A GETMBR R9 R4 K12
0x542A000F, // 003B LDINT R10 16
0x7C1C0600, // 003C CALL R7 3
0x80040E00, // 003D RET 1 R7
- 0x70020007, // 003E JMP #0047
- 0x541EFFFC, // 003F LDINT R7 65533
- 0x1C1C0C07, // 0040 EQ R7 R6 R7
- 0x781E0004, // 0041 JMPF R7 #0047
- 0x8C1C0705, // 0042 GETMET R7 R3 K5
- 0x8824090C, // 0043 GETMBR R9 R4 K12
- 0x542A0004, // 0044 LDINT R10 5
- 0x7C1C0600, // 0045 CALL R7 3
+ 0x601C0003, // 003E GETGBL R7 G3
+ 0x5C200000, // 003F MOVE R8 R0
+ 0x7C1C0200, // 0040 CALL R7 1
+ 0x8C1C0F0D, // 0041 GETMET R7 R7 K13
+ 0x5C240200, // 0042 MOVE R9 R1
+ 0x5C280400, // 0043 MOVE R10 R2
+ 0x5C2C0600, // 0044 MOVE R11 R3
+ 0x7C1C0800, // 0045 CALL R7 4
0x80040E00, // 0046 RET 1 R7
- 0x70020008, // 0047 JMP #0051
- 0x601C0003, // 0048 GETGBL R7 G3
- 0x5C200000, // 0049 MOVE R8 R0
- 0x7C1C0200, // 004A CALL R7 1
- 0x8C1C0F0D, // 004B GETMET R7 R7 K13
- 0x5C240200, // 004C MOVE R9 R1
- 0x5C280400, // 004D MOVE R10 R2
- 0x5C2C0600, // 004E MOVE R11 R3
- 0x7C1C0800, // 004F CALL R7 4
- 0x80040E00, // 0050 RET 1 R7
- 0x80000000, // 0051 RET 0
})
)
);
@@ -517,54 +506,75 @@ be_local_class(Matter_Plugin_Light2,
be_const_map( * be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(15),
be_const_int(17),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -572,24 +582,36 @@ be_local_class(Matter_Plugin_Light2,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(7),
be_const_int(8),
be_const_int(15),
be_const_int(16395),
be_const_int(16396),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h
index 8d3ee8ad0..db81f7d67 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h
@@ -542,14 +542,14 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[107]) { /* code */
+ ( &(const binstruction[96]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E02FF, // 0004 LDINT R7 768
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0059, // 0006 JMPF R7 #0061
+ 0x781E004F, // 0006 JMPF R7 #0057
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
@@ -559,7 +559,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x88280108, // 000D GETMBR R10 R0 K8
0x7C1C0600, // 000E CALL R7 3
0x80040E00, // 000F RET 1 R7
- 0x7002004E, // 0010 JMP #0060
+ 0x70020045, // 0010 JMP #0057
0x1C1C0D09, // 0011 EQ R7 R6 K9
0x781E0005, // 0012 JMPF R7 #0019
0x8C1C0706, // 0013 GETMET R7 R3 K6
@@ -567,7 +567,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x8828010A, // 0015 GETMBR R10 R0 K10
0x7C1C0600, // 0016 CALL R7 3
0x80040E00, // 0017 RET 1 R7
- 0x70020046, // 0018 JMP #0060
+ 0x7002003D, // 0018 JMP #0057
0x541E0006, // 0019 LDINT R7 7
0x1C1C0C07, // 001A EQ R7 R6 R7
0x781E0005, // 001B JMPF R7 #0022
@@ -576,7 +576,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x58280005, // 001E LDCONST R10 K5
0x7C1C0600, // 001F CALL R7 3
0x80040E00, // 0020 RET 1 R7
- 0x7002003D, // 0021 JMP #0060
+ 0x70020034, // 0021 JMP #0057
0x541E0007, // 0022 LDINT R7 8
0x1C1C0C07, // 0023 EQ R7 R6 R7
0x781E0005, // 0024 JMPF R7 #002B
@@ -585,7 +585,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x58280005, // 0027 LDCONST R10 K5
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020034, // 002A JMP #0060
+ 0x7002002B, // 002A JMP #0057
0x541E000E, // 002B LDINT R7 15
0x1C1C0C07, // 002C EQ R7 R6 R7
0x781E0005, // 002D JMPF R7 #0034
@@ -594,7 +594,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x58280005, // 0030 LDCONST R10 K5
0x7C1C0600, // 0031 CALL R7 3
0x80040E00, // 0032 RET 1 R7
- 0x7002002B, // 0033 JMP #0060
+ 0x70020022, // 0033 JMP #0057
0x541E4000, // 0034 LDINT R7 16385
0x1C1C0C07, // 0035 EQ R7 R6 R7
0x781E0005, // 0036 JMPF R7 #003D
@@ -603,7 +603,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x58280005, // 0039 LDCONST R10 K5
0x7C1C0600, // 003A CALL R7 3
0x80040E00, // 003B RET 1 R7
- 0x70020022, // 003C JMP #0060
+ 0x70020019, // 003C JMP #0057
0x541E4009, // 003D LDINT R7 16394
0x1C1C0C07, // 003E EQ R7 R6 R7
0x781E0005, // 003F JMPF R7 #0046
@@ -612,7 +612,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x58280009, // 0042 LDCONST R10 K9
0x7C1C0600, // 0043 CALL R7 3
0x80040E00, // 0044 RET 1 R7
- 0x70020019, // 0045 JMP #0060
+ 0x70020010, // 0045 JMP #0057
0x541E000F, // 0046 LDINT R7 16
0x1C1C0C07, // 0047 EQ R7 R6 R7
0x781E0005, // 0048 JMPF R7 #004F
@@ -621,35 +621,24 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x58280005, // 004B LDCONST R10 K5
0x7C1C0600, // 004C CALL R7 3
0x80040E00, // 004D RET 1 R7
- 0x70020010, // 004E JMP #0060
+ 0x70020007, // 004E JMP #0057
0x541EFFFB, // 004F LDINT R7 65532
0x1C1C0C07, // 0050 EQ R7 R6 R7
- 0x781E0005, // 0051 JMPF R7 #0058
+ 0x781E0004, // 0051 JMPF R7 #0057
0x8C1C0706, // 0052 GETMET R7 R3 K6
0x8824090B, // 0053 GETMBR R9 R4 K11
0x58280009, // 0054 LDCONST R10 K9
0x7C1C0600, // 0055 CALL R7 3
0x80040E00, // 0056 RET 1 R7
- 0x70020007, // 0057 JMP #0060
- 0x541EFFFC, // 0058 LDINT R7 65533
- 0x1C1C0C07, // 0059 EQ R7 R6 R7
- 0x781E0004, // 005A JMPF R7 #0060
- 0x8C1C0706, // 005B GETMET R7 R3 K6
- 0x8824090B, // 005C GETMBR R9 R4 K11
- 0x542A0004, // 005D LDINT R10 5
- 0x7C1C0600, // 005E CALL R7 3
+ 0x601C0003, // 0057 GETGBL R7 G3
+ 0x5C200000, // 0058 MOVE R8 R0
+ 0x7C1C0200, // 0059 CALL R7 1
+ 0x8C1C0F0C, // 005A GETMET R7 R7 K12
+ 0x5C240200, // 005B MOVE R9 R1
+ 0x5C280400, // 005C MOVE R10 R2
+ 0x5C2C0600, // 005D MOVE R11 R3
+ 0x7C1C0800, // 005E CALL R7 4
0x80040E00, // 005F RET 1 R7
- 0x70020008, // 0060 JMP #006A
- 0x601C0003, // 0061 GETGBL R7 G3
- 0x5C200000, // 0062 MOVE R8 R0
- 0x7C1C0200, // 0063 CALL R7 1
- 0x8C1C0F0C, // 0064 GETMET R7 R7 K12
- 0x5C240200, // 0065 MOVE R9 R1
- 0x5C280400, // 0066 MOVE R10 R2
- 0x5C2C0600, // 0067 MOVE R11 R3
- 0x7C1C0800, // 0068 CALL R7 4
- 0x80040E00, // 0069 RET 1 R7
- 0x80000000, // 006A RET 0
})
)
);
@@ -679,54 +668,75 @@ be_local_class(Matter_Plugin_Light3,
be_const_map( * be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(15),
be_const_int(17),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -734,18 +744,26 @@ be_local_class(Matter_Plugin_Light3,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
+ be_const_list( * be_nested_list(13,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -754,6 +772,10 @@ be_local_class(Matter_Plugin_Light3,
be_const_int(15),
be_const_int(16385),
be_const_int(16394),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h
index 30208cb57..77de122bf 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h
@@ -50,7 +50,7 @@ be_local_closure(Matter_Plugin_Sensor_Flow_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -62,20 +62,18 @@ be_local_closure(Matter_Plugin_Sensor_Flow_read_attribute, /* name */
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0403, // 0004 LDINT R7 1028
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -95,7 +93,7 @@ be_local_closure(Matter_Plugin_Sensor_Flow_read_attribute, /* name */
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -103,43 +101,23 @@ be_local_closure(Matter_Plugin_Sensor_Flow_read_attribute, /* name */
0x58280004, // 001F LDCONST R10 K4
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542AFFFD, // 0027 LDINT R10 65534
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -207,7 +185,7 @@ be_local_class(Matter_Plugin_Sensor_Flow,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -215,51 +193,76 @@ be_local_class(Matter_Plugin_Sensor_Flow,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h
index f4e9ebc3a..c0472c631 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h
@@ -50,7 +50,7 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -62,20 +62,18 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0404, // 0004 LDINT R7 1029
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -95,7 +93,7 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -103,43 +101,23 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
0x542A01F3, // 001F LDINT R10 500
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542A270F, // 0027 LDINT R10 10000
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -207,7 +185,7 @@ be_local_class(Matter_Plugin_Sensor_Humidity,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -215,51 +193,76 @@ be_local_class(Matter_Plugin_Sensor_Humidity,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1029, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h
index 17b96ce22..eef1f845b 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h
@@ -50,7 +50,7 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -62,20 +62,18 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E03FF, // 0004 LDINT R7 1024
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -95,7 +93,7 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -103,43 +101,23 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
0x58280009, // 001F LDCONST R10 K9
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542AFFFD, // 0027 LDINT R10 65534
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -219,7 +197,7 @@ be_local_class(Matter_Plugin_Sensor_Illuminance,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -227,51 +205,76 @@ be_local_class(Matter_Plugin_Sensor_Illuminance,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1024, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h
index bcd8a036f..b64f251ac 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h
@@ -50,7 +50,7 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -62,20 +62,18 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0402, // 0004 LDINT R7 1027
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -95,7 +93,7 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -103,43 +101,23 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
0x542A01F3, // 001F LDINT R10 500
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542A05DB, // 0027 LDINT R10 1500
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -206,7 +184,7 @@ be_local_class(Matter_Plugin_Sensor_Pressure,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -214,51 +192,76 @@ be_local_class(Matter_Plugin_Sensor_Pressure,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1027, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h
index a28ac1196..7294dfc88 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h
@@ -50,7 +50,7 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -62,19 +62,18 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[69]) { /* code */
+ ( &(const binstruction[49]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0401, // 0004 LDINT R7 1026
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0033, // 0006 JMPF R7 #003B
+ 0x781E0020, // 0006 JMPF R7 #0028
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E000F, // 0008 JMPF R7 #0019
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -92,7 +91,7 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
0x4C280000, // 0015 LDNIL R10
0x7C1C0600, // 0016 CALL R7 3
0x80040E00, // 0017 RET 1 R7
- 0x70020020, // 0018 JMP #003A
+ 0x7002000E, // 0018 JMP #0028
0x1C1C0D09, // 0019 EQ R7 R6 K9
0x781E0005, // 001A JMPF R7 #0021
0x8C1C0706, // 001B GETMET R7 R3 K6
@@ -100,43 +99,23 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
0x5429EC77, // 001D LDINT R10 -5000
0x7C1C0600, // 001E CALL R7 3
0x80040E00, // 001F RET 1 R7
- 0x70020018, // 0020 JMP #003A
+ 0x70020006, // 0020 JMP #0028
0x1C1C0D0A, // 0021 EQ R7 R6 K10
- 0x781E0005, // 0022 JMPF R7 #0029
+ 0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0706, // 0023 GETMET R7 R3 K6
0x88240907, // 0024 GETMBR R9 R4 K7
0x542A3A97, // 0025 LDINT R10 15000
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
- 0x70020010, // 0028 JMP #003A
- 0x541EFFFB, // 0029 LDINT R7 65532
- 0x1C1C0C07, // 002A EQ R7 R6 R7
- 0x781E0005, // 002B JMPF R7 #0032
- 0x8C1C0706, // 002C GETMET R7 R3 K6
- 0x8824090B, // 002D GETMBR R9 R4 K11
- 0x58280004, // 002E LDCONST R10 K4
- 0x7C1C0600, // 002F CALL R7 3
+ 0x601C0003, // 0028 GETGBL R7 G3
+ 0x5C200000, // 0029 MOVE R8 R0
+ 0x7C1C0200, // 002A CALL R7 1
+ 0x8C1C0F0B, // 002B GETMET R7 R7 K11
+ 0x5C240200, // 002C MOVE R9 R1
+ 0x5C280400, // 002D MOVE R10 R2
+ 0x5C2C0600, // 002E MOVE R11 R3
+ 0x7C1C0800, // 002F CALL R7 4
0x80040E00, // 0030 RET 1 R7
- 0x70020007, // 0031 JMP #003A
- 0x541EFFFC, // 0032 LDINT R7 65533
- 0x1C1C0C07, // 0033 EQ R7 R6 R7
- 0x781E0004, // 0034 JMPF R7 #003A
- 0x8C1C0706, // 0035 GETMET R7 R3 K6
- 0x8824090B, // 0036 GETMBR R9 R4 K11
- 0x542A0003, // 0037 LDINT R10 4
- 0x7C1C0600, // 0038 CALL R7 3
- 0x80040E00, // 0039 RET 1 R7
- 0x70020008, // 003A JMP #0044
- 0x601C0003, // 003B GETGBL R7 G3
- 0x5C200000, // 003C MOVE R8 R0
- 0x7C1C0200, // 003D CALL R7 1
- 0x8C1C0F0C, // 003E GETMET R7 R7 K12
- 0x5C240200, // 003F MOVE R9 R1
- 0x5C280400, // 0040 MOVE R10 R2
- 0x5C2C0600, // 0041 MOVE R11 R3
- 0x7C1C0800, // 0042 CALL R7 4
- 0x80040E00, // 0043 RET 1 R7
- 0x80000000, // 0044 RET 0
})
)
);
@@ -219,16 +198,20 @@ be_local_class(Matter_Plugin_Sensor_Temp,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(1026, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -236,42 +219,63 @@ be_local_class(Matter_Plugin_Sensor_Temp,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h
index c661121a9..3914bb053 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h
@@ -440,7 +440,7 @@ be_local_class(Matter_Plugin_ShutterTilt,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(258, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(14,
+ be_const_list( * be_nested_list(17,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(5),
@@ -450,15 +450,18 @@ be_local_class(Matter_Plugin_ShutterTilt,
be_const_int(13),
be_const_int(14),
be_const_int(23),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
be_const_int(7),
be_const_int(12),
be_const_int(15),
- be_const_int(65532),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -466,42 +469,63 @@ be_local_class(Matter_Plugin_ShutterTilt,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h
index 8cdf671bf..2c40875ff 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h
@@ -195,7 +195,7 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
+ ( &(const bvalue[13]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -208,20 +208,18 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
/* K9 */ be_nested_str_weak(NULL),
/* K10 */ be_const_int(2),
/* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(U4),
- /* K13 */ be_const_int(1),
- /* K14 */ be_nested_str_weak(read_attribute),
+ /* K12 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[99]) { /* code */
+ ( &(const binstruction[79]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0007, // 0004 LDINT R7 8
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0051, // 0006 JMPF R7 #0059
+ 0x781E003E, // 0006 JMPF R7 #0046
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
@@ -241,7 +239,7 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x7002003C, // 001A JMP #0058
+ 0x7002002A, // 001A JMP #0046
0x1C1C0D0A, // 001B EQ R7 R6 K10
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0707, // 001D GETMET R7 R3 K7
@@ -249,7 +247,7 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
0x58280005, // 001F LDCONST R10 K5
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020034, // 0022 JMP #0058
+ 0x70020022, // 0022 JMP #0046
0x1C1C0D0B, // 0023 EQ R7 R6 K11
0x781E0005, // 0024 JMPF R7 #002B
0x8C1C0707, // 0025 GETMET R7 R3 K7
@@ -257,7 +255,7 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
0x542A00FD, // 0027 LDINT R10 254
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x7002002C, // 002A JMP #0058
+ 0x7002001A, // 002A JMP #0046
0x541E000E, // 002B LDINT R7 15
0x1C1C0C07, // 002C EQ R7 R6 R7
0x781E0005, // 002D JMPF R7 #0034
@@ -266,10 +264,10 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
0x58280005, // 0030 LDCONST R10 K5
0x7C1C0600, // 0031 CALL R7 3
0x80040E00, // 0032 RET 1 R7
- 0x70020023, // 0033 JMP #0058
+ 0x70020011, // 0033 JMP #0046
0x541E0010, // 0034 LDINT R7 17
0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E000F, // 0036 JMPF R7 #0047
+ 0x781E000E, // 0036 JMPF R7 #0046
0x881C0106, // 0037 GETMBR R7 R0 K6
0x4C200000, // 0038 LDNIL R8
0x201C0E08, // 0039 NE R7 R7 R8
@@ -285,35 +283,15 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
0x4C280000, // 0043 LDNIL R10
0x7C1C0600, // 0044 CALL R7 3
0x80040E00, // 0045 RET 1 R7
- 0x70020010, // 0046 JMP #0058
- 0x541EFFFB, // 0047 LDINT R7 65532
- 0x1C1C0C07, // 0048 EQ R7 R6 R7
- 0x781E0005, // 0049 JMPF R7 #0050
- 0x8C1C0707, // 004A GETMET R7 R3 K7
- 0x8824090C, // 004B GETMBR R9 R4 K12
- 0x5828000D, // 004C LDCONST R10 K13
- 0x7C1C0600, // 004D CALL R7 3
+ 0x601C0003, // 0046 GETGBL R7 G3
+ 0x5C200000, // 0047 MOVE R8 R0
+ 0x7C1C0200, // 0048 CALL R7 1
+ 0x8C1C0F0C, // 0049 GETMET R7 R7 K12
+ 0x5C240200, // 004A MOVE R9 R1
+ 0x5C280400, // 004B MOVE R10 R2
+ 0x5C2C0600, // 004C MOVE R11 R3
+ 0x7C1C0800, // 004D CALL R7 4
0x80040E00, // 004E RET 1 R7
- 0x70020007, // 004F JMP #0058
- 0x541EFFFC, // 0050 LDINT R7 65533
- 0x1C1C0C07, // 0051 EQ R7 R6 R7
- 0x781E0004, // 0052 JMPF R7 #0058
- 0x8C1C0707, // 0053 GETMET R7 R3 K7
- 0x8824090C, // 0054 GETMBR R9 R4 K12
- 0x542A0004, // 0055 LDINT R10 5
- 0x7C1C0600, // 0056 CALL R7 3
- 0x80040E00, // 0057 RET 1 R7
- 0x70020008, // 0058 JMP #0062
- 0x601C0003, // 0059 GETGBL R7 G3
- 0x5C200000, // 005A MOVE R8 R0
- 0x7C1C0200, // 005B CALL R7 1
- 0x8C1C0F0E, // 005C GETMET R7 R7 K14
- 0x5C240200, // 005D MOVE R9 R1
- 0x5C280400, // 005E MOVE R10 R2
- 0x5C2C0600, // 005F MOVE R11 R3
- 0x7C1C0800, // 0060 CALL R7 4
- 0x80040E00, // 0061 RET 1 R7
- 0x80000000, // 0062 RET 0
})
)
);
@@ -558,54 +536,75 @@ be_local_class(Matter_Plugin_Bridge_Light1,
be_const_map( * be_nested_map(7,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(15),
be_const_int(17),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -613,13 +612,21 @@ be_local_class(Matter_Plugin_Bridge_Light1,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h
index fb56e9907..538581fca 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h
@@ -83,7 +83,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -95,20 +95,18 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_read_attribute, /* name */
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0403, // 0004 LDINT R7 1028
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -128,7 +126,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_read_attribute, /* name */
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -136,43 +134,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_read_attribute, /* name */
0x58280004, // 001F LDCONST R10 K4
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542AFFFD, // 0027 LDINT R10 65534
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -244,7 +222,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Flow,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -252,51 +230,76 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Flow,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h
index 6a2032b50..32bfb71ad 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h
@@ -83,7 +83,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -95,20 +95,18 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0404, // 0004 LDINT R7 1029
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -128,7 +126,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -136,43 +134,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
0x542A01F3, // 001F LDINT R10 500
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542A270F, // 0027 LDINT R10 10000
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -252,7 +230,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Humidity,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -260,51 +238,76 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Humidity,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1029, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h
index 739e203bf..563e3eb59 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h
@@ -95,7 +95,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -107,20 +107,18 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E03FF, // 0004 LDINT R7 1024
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -140,7 +138,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -148,43 +146,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
0x58280009, // 001F LDCONST R10 K9
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542AFFFD, // 0027 LDINT R10 65534
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -256,7 +234,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -264,51 +242,76 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1024, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h
index 63f96dae4..6632731e9 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h
@@ -82,7 +82,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -94,20 +94,18 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[51]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0402, // 0004 LDINT R7 1027
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0035, // 0006 JMPF R7 #003D
+ 0x781E0022, // 0006 JMPF R7 #002A
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E0011, // 0008 JMPF R7 #001B
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -127,7 +125,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020020, // 001A JMP #003C
+ 0x7002000E, // 001A JMP #002A
0x1C1C0D09, // 001B EQ R7 R6 K9
0x781E0005, // 001C JMPF R7 #0023
0x8C1C0706, // 001D GETMET R7 R3 K6
@@ -135,43 +133,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
0x542A01F3, // 001F LDINT R10 500
0x7C1C0600, // 0020 CALL R7 3
0x80040E00, // 0021 RET 1 R7
- 0x70020018, // 0022 JMP #003C
+ 0x70020006, // 0022 JMP #002A
0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0005, // 0024 JMPF R7 #002B
+ 0x781E0004, // 0024 JMPF R7 #002A
0x8C1C0706, // 0025 GETMET R7 R3 K6
0x88240907, // 0026 GETMBR R9 R4 K7
0x542A05DB, // 0027 LDINT R10 1500
0x7C1C0600, // 0028 CALL R7 3
0x80040E00, // 0029 RET 1 R7
- 0x70020010, // 002A JMP #003C
- 0x541EFFFB, // 002B LDINT R7 65532
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x8824090B, // 002F GETMBR R9 R4 K11
- 0x58280004, // 0030 LDCONST R10 K4
- 0x7C1C0600, // 0031 CALL R7 3
+ 0x601C0003, // 002A GETGBL R7 G3
+ 0x5C200000, // 002B MOVE R8 R0
+ 0x7C1C0200, // 002C CALL R7 1
+ 0x8C1C0F0B, // 002D GETMET R7 R7 K11
+ 0x5C240200, // 002E MOVE R9 R1
+ 0x5C280400, // 002F MOVE R10 R2
+ 0x5C2C0600, // 0030 MOVE R11 R3
+ 0x7C1C0800, // 0031 CALL R7 4
0x80040E00, // 0032 RET 1 R7
- 0x70020007, // 0033 JMP #003C
- 0x541EFFFC, // 0034 LDINT R7 65533
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0004, // 0036 JMPF R7 #003C
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x8824090B, // 0038 GETMBR R9 R4 K11
- 0x5828000C, // 0039 LDCONST R10 K12
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020008, // 003C JMP #0046
- 0x601C0003, // 003D GETGBL R7 G3
- 0x5C200000, // 003E MOVE R8 R0
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C1C0F0D, // 0040 GETMET R7 R7 K13
- 0x5C240200, // 0041 MOVE R9 R1
- 0x5C280400, // 0042 MOVE R10 R2
- 0x5C2C0600, // 0043 MOVE R11 R3
- 0x7C1C0800, // 0044 CALL R7 4
- 0x80040E00, // 0045 RET 1 R7
- 0x80000000, // 0046 RET 0
})
)
);
@@ -243,7 +221,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Pressure,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -251,51 +229,76 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Pressure,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(1027, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h
index 44b133271..d257139a0 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h
@@ -95,7 +95,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@@ -107,19 +107,18 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_nested_str_weak(read_attribute),
+ /* K11 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[69]) { /* code */
+ ( &(const binstruction[49]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E0401, // 0004 LDINT R7 1026
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0033, // 0006 JMPF R7 #003B
+ 0x781E0020, // 0006 JMPF R7 #0028
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E000F, // 0008 JMPF R7 #0019
0x881C0105, // 0009 GETMBR R7 R0 K5
@@ -137,7 +136,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
0x4C280000, // 0015 LDNIL R10
0x7C1C0600, // 0016 CALL R7 3
0x80040E00, // 0017 RET 1 R7
- 0x70020020, // 0018 JMP #003A
+ 0x7002000E, // 0018 JMP #0028
0x1C1C0D09, // 0019 EQ R7 R6 K9
0x781E0005, // 001A JMPF R7 #0021
0x8C1C0706, // 001B GETMET R7 R3 K6
@@ -145,43 +144,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
0x5429EC77, // 001D LDINT R10 -5000
0x7C1C0600, // 001E CALL R7 3
0x80040E00, // 001F RET 1 R7
- 0x70020018, // 0020 JMP #003A
+ 0x70020006, // 0020 JMP #0028
0x1C1C0D0A, // 0021 EQ R7 R6 K10
- 0x781E0005, // 0022 JMPF R7 #0029
+ 0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0706, // 0023 GETMET R7 R3 K6
0x88240907, // 0024 GETMBR R9 R4 K7
0x542A3A97, // 0025 LDINT R10 15000
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
- 0x70020010, // 0028 JMP #003A
- 0x541EFFFB, // 0029 LDINT R7 65532
- 0x1C1C0C07, // 002A EQ R7 R6 R7
- 0x781E0005, // 002B JMPF R7 #0032
- 0x8C1C0706, // 002C GETMET R7 R3 K6
- 0x8824090B, // 002D GETMBR R9 R4 K11
- 0x58280004, // 002E LDCONST R10 K4
- 0x7C1C0600, // 002F CALL R7 3
+ 0x601C0003, // 0028 GETGBL R7 G3
+ 0x5C200000, // 0029 MOVE R8 R0
+ 0x7C1C0200, // 002A CALL R7 1
+ 0x8C1C0F0B, // 002B GETMET R7 R7 K11
+ 0x5C240200, // 002C MOVE R9 R1
+ 0x5C280400, // 002D MOVE R10 R2
+ 0x5C2C0600, // 002E MOVE R11 R3
+ 0x7C1C0800, // 002F CALL R7 4
0x80040E00, // 0030 RET 1 R7
- 0x70020007, // 0031 JMP #003A
- 0x541EFFFC, // 0032 LDINT R7 65533
- 0x1C1C0C07, // 0033 EQ R7 R6 R7
- 0x781E0004, // 0034 JMPF R7 #003A
- 0x8C1C0706, // 0035 GETMET R7 R3 K6
- 0x8824090B, // 0036 GETMBR R9 R4 K11
- 0x542A0003, // 0037 LDINT R10 4
- 0x7C1C0600, // 0038 CALL R7 3
- 0x80040E00, // 0039 RET 1 R7
- 0x70020008, // 003A JMP #0044
- 0x601C0003, // 003B GETGBL R7 G3
- 0x5C200000, // 003C MOVE R8 R0
- 0x7C1C0200, // 003D CALL R7 1
- 0x8C1C0F0C, // 003E GETMET R7 R7 K12
- 0x5C240200, // 003F MOVE R9 R1
- 0x5C280400, // 0040 MOVE R10 R2
- 0x5C2C0600, // 0041 MOVE R11 R3
- 0x7C1C0800, // 0042 CALL R7 4
- 0x80040E00, // 0043 RET 1 R7
- 0x80000000, // 0044 RET 0
})
)
);
@@ -261,16 +240,20 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Temp,
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(1026, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(5,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -278,42 +261,63 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Temp,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h
index 712aa9f6d..4e7688159 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h
@@ -381,14 +381,14 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[101]) { /* code */
+ ( &(const binstruction[81]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E02FF, // 0004 LDINT R7 768
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0053, // 0006 JMPF R7 #005B
+ 0x781E0040, // 0006 JMPF R7 #0048
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x541E0006, // 0009 LDINT R7 7
@@ -409,7 +409,7 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
0x4C280000, // 0018 LDNIL R10
0x7C1C0600, // 0019 CALL R7 3
0x80040E00, // 001A RET 1 R7
- 0x7002003D, // 001B JMP #005A
+ 0x7002002B, // 001B JMP #0048
0x541E0007, // 001C LDINT R7 8
0x1C1C0C07, // 001D EQ R7 R6 R7
0x781E0005, // 001E JMPF R7 #0025
@@ -418,7 +418,7 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
0x58280009, // 0021 LDCONST R10 K9
0x7C1C0600, // 0022 CALL R7 3
0x80040E00, // 0023 RET 1 R7
- 0x70020034, // 0024 JMP #005A
+ 0x70020022, // 0024 JMP #0048
0x541E000E, // 0025 LDINT R7 15
0x1C1C0C07, // 0026 EQ R7 R6 R7
0x781E0005, // 0027 JMPF R7 #002E
@@ -427,7 +427,7 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
0x5828000A, // 002A LDCONST R10 K10
0x7C1C0600, // 002B CALL R7 3
0x80040E00, // 002C RET 1 R7
- 0x7002002B, // 002D JMP #005A
+ 0x70020019, // 002D JMP #0048
0x541E400A, // 002E LDINT R7 16395
0x1C1C0C07, // 002F EQ R7 R6 R7
0x781E0005, // 0030 JMPF R7 #0037
@@ -436,7 +436,7 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
0x8828010B, // 0033 GETMBR R10 R0 K11
0x7C1C0600, // 0034 CALL R7 3
0x80040E00, // 0035 RET 1 R7
- 0x70020022, // 0036 JMP #005A
+ 0x70020010, // 0036 JMP #0048
0x541E400B, // 0037 LDINT R7 16396
0x1C1C0C07, // 0038 EQ R7 R6 R7
0x781E0005, // 0039 JMPF R7 #0040
@@ -445,44 +445,24 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
0x8828010C, // 003C GETMBR R10 R0 K12
0x7C1C0600, // 003D CALL R7 3
0x80040E00, // 003E RET 1 R7
- 0x70020019, // 003F JMP #005A
+ 0x70020007, // 003F JMP #0048
0x541E4009, // 0040 LDINT R7 16394
0x1C1C0C07, // 0041 EQ R7 R6 R7
- 0x781E0005, // 0042 JMPF R7 #0049
+ 0x781E0004, // 0042 JMPF R7 #0048
0x8C1C0706, // 0043 GETMET R7 R3 K6
0x8824090D, // 0044 GETMBR R9 R4 K13
0x542A000F, // 0045 LDINT R10 16
0x7C1C0600, // 0046 CALL R7 3
0x80040E00, // 0047 RET 1 R7
- 0x70020010, // 0048 JMP #005A
- 0x541EFFFB, // 0049 LDINT R7 65532
- 0x1C1C0C07, // 004A EQ R7 R6 R7
- 0x781E0005, // 004B JMPF R7 #0052
- 0x8C1C0706, // 004C GETMET R7 R3 K6
- 0x8824090D, // 004D GETMBR R9 R4 K13
- 0x542A000F, // 004E LDINT R10 16
- 0x7C1C0600, // 004F CALL R7 3
+ 0x601C0003, // 0048 GETGBL R7 G3
+ 0x5C200000, // 0049 MOVE R8 R0
+ 0x7C1C0200, // 004A CALL R7 1
+ 0x8C1C0F0E, // 004B GETMET R7 R7 K14
+ 0x5C240200, // 004C MOVE R9 R1
+ 0x5C280400, // 004D MOVE R10 R2
+ 0x5C2C0600, // 004E MOVE R11 R3
+ 0x7C1C0800, // 004F CALL R7 4
0x80040E00, // 0050 RET 1 R7
- 0x70020007, // 0051 JMP #005A
- 0x541EFFFC, // 0052 LDINT R7 65533
- 0x1C1C0C07, // 0053 EQ R7 R6 R7
- 0x781E0004, // 0054 JMPF R7 #005A
- 0x8C1C0706, // 0055 GETMET R7 R3 K6
- 0x8824090D, // 0056 GETMBR R9 R4 K13
- 0x542A0004, // 0057 LDINT R10 5
- 0x7C1C0600, // 0058 CALL R7 3
- 0x80040E00, // 0059 RET 1 R7
- 0x70020008, // 005A JMP #0064
- 0x601C0003, // 005B GETGBL R7 G3
- 0x5C200000, // 005C MOVE R8 R0
- 0x7C1C0200, // 005D CALL R7 1
- 0x8C1C0F0E, // 005E GETMET R7 R7 K14
- 0x5C240200, // 005F MOVE R9 R1
- 0x5C280400, // 0060 MOVE R10 R2
- 0x5C2C0600, // 0061 MOVE R11 R3
- 0x7C1C0800, // 0062 CALL R7 4
- 0x80040E00, // 0063 RET 1 R7
- 0x80000000, // 0064 RET 0
})
)
);
@@ -549,54 +529,75 @@ be_local_class(Matter_Plugin_Bridge_Light2,
be_const_map( * be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(15),
be_const_int(17),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -604,18 +605,26 @@ be_local_class(Matter_Plugin_Bridge_Light2,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(7),
be_const_int(8),
@@ -623,6 +632,10 @@ be_local_class(Matter_Plugin_Bridge_Light2,
be_const_int(16394),
be_const_int(16395),
be_const_int(16396),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h
index 18cd5c467..bed876797 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h
@@ -326,14 +326,14 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[127]) { /* code */
+ ( &(const binstruction[107]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E02FF, // 0004 LDINT R7 768
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E006D, // 0006 JMPF R7 #0075
+ 0x781E005A, // 0006 JMPF R7 #0062
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
@@ -353,7 +353,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x4C280000, // 0017 LDNIL R10
0x7C1C0600, // 0018 CALL R7 3
0x80040E00, // 0019 RET 1 R7
- 0x70020058, // 001A JMP #0074
+ 0x70020046, // 001A JMP #0062
0x1C1C0D0A, // 001B EQ R7 R6 K10
0x781E000F, // 001C JMPF R7 #002D
0x881C010B, // 001D GETMBR R7 R0 K11
@@ -371,7 +371,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x4C280000, // 0029 LDNIL R10
0x7C1C0600, // 002A CALL R7 3
0x80040E00, // 002B RET 1 R7
- 0x70020046, // 002C JMP #0074
+ 0x70020034, // 002C JMP #0062
0x541E0006, // 002D LDINT R7 7
0x1C1C0C07, // 002E EQ R7 R6 R7
0x781E0005, // 002F JMPF R7 #0036
@@ -380,7 +380,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x58280005, // 0032 LDCONST R10 K5
0x7C1C0600, // 0033 CALL R7 3
0x80040E00, // 0034 RET 1 R7
- 0x7002003D, // 0035 JMP #0074
+ 0x7002002B, // 0035 JMP #0062
0x541E0007, // 0036 LDINT R7 8
0x1C1C0C07, // 0037 EQ R7 R6 R7
0x781E0005, // 0038 JMPF R7 #003F
@@ -389,7 +389,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x58280005, // 003B LDCONST R10 K5
0x7C1C0600, // 003C CALL R7 3
0x80040E00, // 003D RET 1 R7
- 0x70020034, // 003E JMP #0074
+ 0x70020022, // 003E JMP #0062
0x541E000E, // 003F LDINT R7 15
0x1C1C0C07, // 0040 EQ R7 R6 R7
0x781E0005, // 0041 JMPF R7 #0048
@@ -398,7 +398,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x58280005, // 0044 LDCONST R10 K5
0x7C1C0600, // 0045 CALL R7 3
0x80040E00, // 0046 RET 1 R7
- 0x7002002B, // 0047 JMP #0074
+ 0x70020019, // 0047 JMP #0062
0x541E4000, // 0048 LDINT R7 16385
0x1C1C0C07, // 0049 EQ R7 R6 R7
0x781E0005, // 004A JMPF R7 #0051
@@ -407,7 +407,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x58280005, // 004D LDCONST R10 K5
0x7C1C0600, // 004E CALL R7 3
0x80040E00, // 004F RET 1 R7
- 0x70020022, // 0050 JMP #0074
+ 0x70020010, // 0050 JMP #0062
0x541E4009, // 0051 LDINT R7 16394
0x1C1C0C07, // 0052 EQ R7 R6 R7
0x781E0005, // 0053 JMPF R7 #005A
@@ -416,44 +416,24 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x5828000A, // 0056 LDCONST R10 K10
0x7C1C0600, // 0057 CALL R7 3
0x80040E00, // 0058 RET 1 R7
- 0x70020019, // 0059 JMP #0074
+ 0x70020007, // 0059 JMP #0062
0x541E000F, // 005A LDINT R7 16
0x1C1C0C07, // 005B EQ R7 R6 R7
- 0x781E0005, // 005C JMPF R7 #0063
+ 0x781E0004, // 005C JMPF R7 #0062
0x8C1C0707, // 005D GETMET R7 R3 K7
0x88240908, // 005E GETMBR R9 R4 K8
0x58280005, // 005F LDCONST R10 K5
0x7C1C0600, // 0060 CALL R7 3
0x80040E00, // 0061 RET 1 R7
- 0x70020010, // 0062 JMP #0074
- 0x541EFFFB, // 0063 LDINT R7 65532
- 0x1C1C0C07, // 0064 EQ R7 R6 R7
- 0x781E0005, // 0065 JMPF R7 #006C
- 0x8C1C0707, // 0066 GETMET R7 R3 K7
- 0x8824090C, // 0067 GETMBR R9 R4 K12
- 0x5828000A, // 0068 LDCONST R10 K10
- 0x7C1C0600, // 0069 CALL R7 3
+ 0x601C0003, // 0062 GETGBL R7 G3
+ 0x5C200000, // 0063 MOVE R8 R0
+ 0x7C1C0200, // 0064 CALL R7 1
+ 0x8C1C0F0D, // 0065 GETMET R7 R7 K13
+ 0x5C240200, // 0066 MOVE R9 R1
+ 0x5C280400, // 0067 MOVE R10 R2
+ 0x5C2C0600, // 0068 MOVE R11 R3
+ 0x7C1C0800, // 0069 CALL R7 4
0x80040E00, // 006A RET 1 R7
- 0x70020007, // 006B JMP #0074
- 0x541EFFFC, // 006C LDINT R7 65533
- 0x1C1C0C07, // 006D EQ R7 R6 R7
- 0x781E0004, // 006E JMPF R7 #0074
- 0x8C1C0707, // 006F GETMET R7 R3 K7
- 0x8824090C, // 0070 GETMBR R9 R4 K12
- 0x542A0004, // 0071 LDINT R10 5
- 0x7C1C0600, // 0072 CALL R7 3
- 0x80040E00, // 0073 RET 1 R7
- 0x70020008, // 0074 JMP #007E
- 0x601C0003, // 0075 GETGBL R7 G3
- 0x5C200000, // 0076 MOVE R8 R0
- 0x7C1C0200, // 0077 CALL R7 1
- 0x8C1C0F0D, // 0078 GETMET R7 R7 K13
- 0x5C240200, // 0079 MOVE R9 R1
- 0x5C280400, // 007A MOVE R10 R2
- 0x5C2C0600, // 007B MOVE R11 R3
- 0x7C1C0800, // 007C CALL R7 4
- 0x80040E00, // 007D RET 1 R7
- 0x80000000, // 007E RET 0
})
)
);
@@ -725,54 +705,75 @@ be_local_class(Matter_Plugin_Bridge_Light3,
be_const_map( * be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(11,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(15),
be_const_int(17),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
- be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
be_const_int(15),
be_const_int(17),
be_const_int(18),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
+ be_const_int(65532),
+ be_const_int(65533),
})) ) } )) },
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
+ be_const_list( * be_nested_list(10,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(2),
be_const_int(3),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
+ be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
+ be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -780,18 +781,26 @@ be_local_class(Matter_Plugin_Bridge_Light3,
be_const_int(3),
be_const_int(4),
be_const_int(5),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
+ be_const_list( * be_nested_list(7,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
+ be_const_list( * be_nested_list(13,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -800,6 +809,10 @@ be_local_class(Matter_Plugin_Bridge_Light3,
be_const_int(15),
be_const_int(16385),
be_const_int(16394),
+ be_const_int(65528),
+ be_const_int(65529),
+ be_const_int(65530),
+ be_const_int(65531),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h
index e4ccf468a..4747ddfb1 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h
@@ -508,20 +508,28 @@ be_local_closure(Matter_Session_Store_count_active_fabrics, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
+ ( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(remove_expired),
/* K1 */ be_nested_str_weak(fabrics),
/* K2 */ be_nested_str_weak(count_persistables),
+ /* K3 */ be_const_int(0),
}),
be_str_weak(count_active_fabrics),
&be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
+ ( &(const binstruction[13]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0
0x7C040200, // 0001 CALL R1 1
0x88040101, // 0002 GETMBR R1 R0 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
- 0x7C040200, // 0004 CALL R1 1
- 0x80040200, // 0005 RET 1 R1
+ 0x4C080000, // 0003 LDNIL R2
+ 0x20040202, // 0004 NE R1 R1 R2
+ 0x78060004, // 0005 JMPF R1 #000B
+ 0x88040101, // 0006 GETMBR R1 R0 K1
+ 0x8C040302, // 0007 GETMET R1 R1 K2
+ 0x7C040200, // 0008 CALL R1 1
+ 0x80040200, // 0009 RET 1 R1
+ 0x70020000, // 000A JMP #000C
+ 0x80060600, // 000B RET 1 K3
+ 0x80000000, // 000C RET 0
})
)
);
@@ -533,7 +541,7 @@ be_local_closure(Matter_Session_Store_count_active_fabrics, /* name */
********************************************************************/
be_local_closure(Matter_Session_Store_remove_fabric, /* name */
be_nested_proto(
- 8, /* nstack */
+ 7, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -542,8 +550,8 @@ be_local_closure(Matter_Session_Store_remove_fabric, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(sessions),
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_const_int(0),
/* K2 */ be_nested_str_weak(_fabric),
/* K3 */ be_nested_str_weak(remove),
/* K4 */ be_const_int(1),
@@ -552,33 +560,41 @@ be_local_closure(Matter_Session_Store_remove_fabric, /* name */
}),
be_str_weak(remove_fabric),
&be_const_str_solidified,
- ( &(const binstruction[26]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x600C000C, // 0001 GETGBL R3 G12
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x140C0403, // 0004 LT R3 R2 R3
- 0x780E000B, // 0005 JMPF R3 #0012
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x940C0602, // 0007 GETIDX R3 R3 R2
- 0x880C0702, // 0008 GETMBR R3 R3 K2
- 0x1C0C0601, // 0009 EQ R3 R3 R1
- 0x780E0004, // 000A JMPF R3 #0010
- 0x880C0101, // 000B GETMBR R3 R0 K1
- 0x8C0C0703, // 000C GETMET R3 R3 K3
- 0x5C140400, // 000D MOVE R5 R2
- 0x7C0C0400, // 000E CALL R3 2
- 0x70020000, // 000F JMP #0011
- 0x00080504, // 0010 ADD R2 R2 K4
- 0x7001FFEE, // 0011 JMP #0001
- 0x880C0105, // 0012 GETMBR R3 R0 K5
- 0x8C0C0703, // 0013 GETMET R3 R3 K3
- 0x88140105, // 0014 GETMBR R5 R0 K5
- 0x8C140B06, // 0015 GETMET R5 R5 K6
- 0x5C1C0200, // 0016 MOVE R7 R1
- 0x7C140400, // 0017 CALL R5 2
- 0x7C0C0400, // 0018 CALL R3 2
- 0x80000000, // 0019 RET 0
+ ( &(const binstruction[34]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x20080403, // 0002 NE R2 R2 R3
+ 0x780A0011, // 0003 JMPF R2 #0016
+ 0x58080001, // 0004 LDCONST R2 K1
+ 0x600C000C, // 0005 GETGBL R3 G12
+ 0x88100100, // 0006 GETMBR R4 R0 K0
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x140C0403, // 0008 LT R3 R2 R3
+ 0x780E000B, // 0009 JMPF R3 #0016
+ 0x880C0100, // 000A GETMBR R3 R0 K0
+ 0x940C0602, // 000B GETIDX R3 R3 R2
+ 0x880C0702, // 000C GETMBR R3 R3 K2
+ 0x1C0C0601, // 000D EQ R3 R3 R1
+ 0x780E0004, // 000E JMPF R3 #0014
+ 0x880C0100, // 000F GETMBR R3 R0 K0
+ 0x8C0C0703, // 0010 GETMET R3 R3 K3
+ 0x5C140400, // 0011 MOVE R5 R2
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0x70020000, // 0013 JMP #0015
+ 0x00080504, // 0014 ADD R2 R2 K4
+ 0x7001FFEE, // 0015 JMP #0005
+ 0x88080105, // 0016 GETMBR R2 R0 K5
+ 0x4C0C0000, // 0017 LDNIL R3
+ 0x20080403, // 0018 NE R2 R2 R3
+ 0x780A0006, // 0019 JMPF R2 #0021
+ 0x88080105, // 001A GETMBR R2 R0 K5
+ 0x8C080503, // 001B GETMET R2 R2 K3
+ 0x88100105, // 001C GETMBR R4 R0 K5
+ 0x8C100906, // 001D GETMET R4 R4 K6
+ 0x5C180200, // 001E MOVE R6 R1
+ 0x7C100400, // 001F CALL R4 2
+ 0x7C080400, // 0020 CALL R2 2
+ 0x80000000, // 0021 RET 0
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
index 58097a058..0a3b31927 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
@@ -100,7 +100,7 @@ be_local_closure(Matter_UI_page_part_mgr_adv, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(check_privileged_access),
/* K2 */ be_nested_str_weak(content_start),
@@ -109,13 +109,12 @@ be_local_closure(Matter_UI_page_part_mgr_adv, /* name */
/* K5 */ be_nested_str_weak(matter_enabled),
/* K6 */ be_nested_str_weak(show_passcode_form),
/* K7 */ be_nested_str_weak(show_fabric_info),
- /* K8 */ be_nested_str_weak(content_button),
- /* K9 */ be_nested_str_weak(BUTTON_CONFIGURATION),
- /* K10 */ be_nested_str_weak(content_stop),
+ /* K8 */ be_nested_str_weak(web_add_config_button),
+ /* K9 */ be_nested_str_weak(content_stop),
}),
be_str_weak(page_part_mgr_adv),
&be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
+ ( &(const binstruction[23]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1
0x7C080200, // 0002 CALL R2 1
@@ -134,12 +133,11 @@ be_local_closure(Matter_UI_page_part_mgr_adv, /* name */
0x7C080200, // 000F CALL R2 1
0x8C080107, // 0010 GETMET R2 R0 K7
0x7C080200, // 0011 CALL R2 1
- 0x8C080308, // 0012 GETMET R2 R1 K8
- 0x88100309, // 0013 GETMBR R4 R1 K9
- 0x7C080400, // 0014 CALL R2 2
- 0x8C08030A, // 0015 GETMET R2 R1 K10
- 0x7C080200, // 0016 CALL R2 1
- 0x80000000, // 0017 RET 0
+ 0x8C080108, // 0012 GETMET R2 R0 K8
+ 0x7C080200, // 0013 CALL R2 1
+ 0x8C080309, // 0014 GETMET R2 R1 K9
+ 0x7C080200, // 0015 CALL R2 1
+ 0x80000000, // 0016 RET 0
})
)
);
@@ -456,49 +454,56 @@ be_local_closure(Matter_UI_web_sensor, /* name */
}),
be_str_weak(web_sensor),
&be_const_str_solidified,
- ( &(const binstruction[42]) { /* code */
+ ( &(const binstruction[49]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080101, // 0001 GETMET R2 R0 K1
0x7C080200, // 0002 CALL R2 1
- 0x780A0024, // 0003 JMPF R2 #0029
+ 0x780A002B, // 0003 JMPF R2 #0030
0x88080102, // 0004 GETMBR R2 R0 K2
0x88080503, // 0005 GETMBR R2 R2 K3
- 0x8C080504, // 0006 GETMET R2 R2 K4
- 0x7C080200, // 0007 CALL R2 1
- 0x1C0C0505, // 0008 EQ R3 R2 K5
- 0x780E0006, // 0009 JMPF R3 #0011
- 0x8C0C0306, // 000A GETMET R3 R1 K6
- 0x60140018, // 000B GETGBL R5 G24
- 0x58180007, // 000C LDCONST R6 K7
- 0x581C0008, // 000D LDCONST R7 K8
- 0x7C140400, // 000E CALL R5 2
- 0x7C0C0400, // 000F CALL R3 2
- 0x7002000F, // 0010 JMP #0021
- 0x240C0509, // 0011 GT R3 R2 K9
- 0x8C100306, // 0012 GETMET R4 R1 K6
- 0x60180018, // 0013 GETGBL R6 G24
- 0x581C0007, // 0014 LDCONST R7 K7
- 0x60200008, // 0015 GETGBL R8 G8
- 0x5C240400, // 0016 MOVE R9 R2
- 0x7C200200, // 0017 CALL R8 1
- 0x00221408, // 0018 ADD R8 K10 R8
- 0x0020110B, // 0019 ADD R8 R8 K11
- 0x780E0001, // 001A JMPF R3 #001D
- 0x5824000C, // 001B LDCONST R9 K12
- 0x70020000, // 001C JMP #001E
- 0x5824000D, // 001D LDCONST R9 K13
- 0x00201009, // 001E ADD R8 R8 R9
- 0x7C180400, // 001F CALL R6 2
- 0x7C100400, // 0020 CALL R4 2
- 0x8C0C010E, // 0021 GETMET R3 R0 K14
- 0x7C0C0200, // 0022 CALL R3 1
- 0x880C0102, // 0023 GETMBR R3 R0 K2
- 0x8C0C070F, // 0024 GETMET R3 R3 K15
- 0x7C0C0200, // 0025 CALL R3 1
- 0x780E0001, // 0026 JMPF R3 #0029
- 0x8C0C0110, // 0027 GETMET R3 R0 K16
- 0x7C0C0200, // 0028 CALL R3 1
- 0x80000000, // 0029 RET 0
+ 0x4C0C0000, // 0006 LDNIL R3
+ 0x20080403, // 0007 NE R2 R2 R3
+ 0x780A0004, // 0008 JMPF R2 #000E
+ 0x88080102, // 0009 GETMBR R2 R0 K2
+ 0x88080503, // 000A GETMBR R2 R2 K3
+ 0x8C080504, // 000B GETMET R2 R2 K4
+ 0x7C080200, // 000C CALL R2 1
+ 0x70020000, // 000D JMP #000F
+ 0x58080005, // 000E LDCONST R2 K5
+ 0x1C0C0505, // 000F EQ R3 R2 K5
+ 0x780E0006, // 0010 JMPF R3 #0018
+ 0x8C0C0306, // 0011 GETMET R3 R1 K6
+ 0x60140018, // 0012 GETGBL R5 G24
+ 0x58180007, // 0013 LDCONST R6 K7
+ 0x581C0008, // 0014 LDCONST R7 K8
+ 0x7C140400, // 0015 CALL R5 2
+ 0x7C0C0400, // 0016 CALL R3 2
+ 0x7002000F, // 0017 JMP #0028
+ 0x240C0509, // 0018 GT R3 R2 K9
+ 0x8C100306, // 0019 GETMET R4 R1 K6
+ 0x60180018, // 001A GETGBL R6 G24
+ 0x581C0007, // 001B LDCONST R7 K7
+ 0x60200008, // 001C GETGBL R8 G8
+ 0x5C240400, // 001D MOVE R9 R2
+ 0x7C200200, // 001E CALL R8 1
+ 0x00221408, // 001F ADD R8 K10 R8
+ 0x0020110B, // 0020 ADD R8 R8 K11
+ 0x780E0001, // 0021 JMPF R3 #0024
+ 0x5824000C, // 0022 LDCONST R9 K12
+ 0x70020000, // 0023 JMP #0025
+ 0x5824000D, // 0024 LDCONST R9 K13
+ 0x00201009, // 0025 ADD R8 R8 R9
+ 0x7C180400, // 0026 CALL R6 2
+ 0x7C100400, // 0027 CALL R4 2
+ 0x8C0C010E, // 0028 GETMET R3 R0 K14
+ 0x7C0C0200, // 0029 CALL R3 1
+ 0x880C0102, // 002A GETMBR R3 R0 K2
+ 0x8C0C070F, // 002B GETMET R3 R3 K15
+ 0x7C0C0200, // 002C CALL R3 1
+ 0x780E0001, // 002D JMPF R3 #0030
+ 0x8C0C0110, // 002E GETMET R3 R0 K16
+ 0x7C0C0200, // 002F CALL R3 1
+ 0x80000000, // 0030 RET 0
})
)
);
@@ -1790,10 +1795,10 @@ be_local_closure(Matter_UI_show_bridge_status, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(device),
- /* K3 */ be_nested_str_weak(plugins),
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(plugins),
+ /* K2 */ be_nested_str_weak(webserver),
+ /* K3 */ be_const_int(0),
/* K4 */ be_nested_str_weak(matter),
/* K5 */ be_nested_str_weak(Plugin_Bridge_HTTP),
/* K6 */ be_nested_str_weak(http_remote),
@@ -1820,123 +1825,129 @@ be_local_closure(Matter_UI_show_bridge_status, /* name */
}),
be_str_weak(show_bridge_status),
&be_const_str_solidified,
- ( &(const binstruction[116]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x580C0001, // 0002 LDCONST R3 K1
- 0x6010000C, // 0003 GETGBL R4 G12
- 0x88140102, // 0004 GETMBR R5 R0 K2
- 0x88140B03, // 0005 GETMBR R5 R5 K3
- 0x7C100200, // 0006 CALL R4 1
- 0x14100604, // 0007 LT R4 R3 R4
- 0x7812001D, // 0008 JMPF R4 #0027
- 0x88100102, // 0009 GETMBR R4 R0 K2
- 0x88100903, // 000A GETMBR R4 R4 K3
- 0x94100803, // 000B GETIDX R4 R4 R3
- 0x6014000F, // 000C GETGBL R5 G15
- 0x5C180800, // 000D MOVE R6 R4
- 0xB81E0800, // 000E GETNGBL R7 K4
- 0x881C0F05, // 000F GETMBR R7 R7 K5
- 0x7C140400, // 0010 CALL R5 2
- 0x78160012, // 0011 JMPF R5 #0025
- 0x4C140000, // 0012 LDNIL R5
- 0x1C140405, // 0013 EQ R5 R2 R5
- 0x78160002, // 0014 JMPF R5 #0018
- 0x60140013, // 0015 GETGBL R5 G19
- 0x7C140000, // 0016 CALL R5 0
- 0x5C080A00, // 0017 MOVE R2 R5
- 0x88140906, // 0018 GETMBR R5 R4 K6
- 0x88140B07, // 0019 GETMBR R5 R5 K7
- 0x8C180508, // 001A GETMET R6 R2 K8
- 0x5C200A00, // 001B MOVE R8 R5
- 0x7C180400, // 001C CALL R6 2
- 0x741A0002, // 001D JMPT R6 #0021
- 0x60180012, // 001E GETGBL R6 G18
- 0x7C180000, // 001F CALL R6 0
- 0x98080A06, // 0020 SETIDX R2 R5 R6
- 0x94180405, // 0021 GETIDX R6 R2 R5
- 0x8C180D09, // 0022 GETMET R6 R6 K9
- 0x5C200800, // 0023 MOVE R8 R4
- 0x7C180400, // 0024 CALL R6 2
- 0x000C070A, // 0025 ADD R3 R3 K10
- 0x7001FFDB, // 0026 JMP #0003
- 0x4C100000, // 0027 LDNIL R4
- 0x1C100404, // 0028 EQ R4 R2 R4
- 0x78120000, // 0029 JMPF R4 #002B
- 0x80000800, // 002A RET 0
- 0x8C10030B, // 002B GETMET R4 R1 K11
- 0x5818000C, // 002C LDCONST R6 K12
- 0x7C100400, // 002D CALL R4 2
- 0x8C10030B, // 002E GETMET R4 R1 K11
- 0x5818000D, // 002F LDCONST R6 K13
- 0x7C100400, // 0030 CALL R4 2
+ ( &(const binstruction[122]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x4C080000, // 0002 LDNIL R2
+ 0x1C040202, // 0003 EQ R1 R1 R2
+ 0x78060000, // 0004 JMPF R1 #0006
+ 0x80000200, // 0005 RET 0
+ 0xA4060400, // 0006 IMPORT R1 K2
+ 0x4C080000, // 0007 LDNIL R2
+ 0x580C0003, // 0008 LDCONST R3 K3
+ 0x6010000C, // 0009 GETGBL R4 G12
+ 0x88140100, // 000A GETMBR R5 R0 K0
+ 0x88140B01, // 000B GETMBR R5 R5 K1
+ 0x7C100200, // 000C CALL R4 1
+ 0x14100604, // 000D LT R4 R3 R4
+ 0x7812001D, // 000E JMPF R4 #002D
+ 0x88100100, // 000F GETMBR R4 R0 K0
+ 0x88100901, // 0010 GETMBR R4 R4 K1
+ 0x94100803, // 0011 GETIDX R4 R4 R3
+ 0x6014000F, // 0012 GETGBL R5 G15
+ 0x5C180800, // 0013 MOVE R6 R4
+ 0xB81E0800, // 0014 GETNGBL R7 K4
+ 0x881C0F05, // 0015 GETMBR R7 R7 K5
+ 0x7C140400, // 0016 CALL R5 2
+ 0x78160012, // 0017 JMPF R5 #002B
+ 0x4C140000, // 0018 LDNIL R5
+ 0x1C140405, // 0019 EQ R5 R2 R5
+ 0x78160002, // 001A JMPF R5 #001E
+ 0x60140013, // 001B GETGBL R5 G19
+ 0x7C140000, // 001C CALL R5 0
+ 0x5C080A00, // 001D MOVE R2 R5
+ 0x88140906, // 001E GETMBR R5 R4 K6
+ 0x88140B07, // 001F GETMBR R5 R5 K7
+ 0x8C180508, // 0020 GETMET R6 R2 K8
+ 0x5C200A00, // 0021 MOVE R8 R5
+ 0x7C180400, // 0022 CALL R6 2
+ 0x741A0002, // 0023 JMPT R6 #0027
+ 0x60180012, // 0024 GETGBL R6 G18
+ 0x7C180000, // 0025 CALL R6 0
+ 0x98080A06, // 0026 SETIDX R2 R5 R6
+ 0x94180405, // 0027 GETIDX R6 R2 R5
+ 0x8C180D09, // 0028 GETMET R6 R6 K9
+ 0x5C200800, // 0029 MOVE R8 R4
+ 0x7C180400, // 002A CALL R6 2
+ 0x000C070A, // 002B ADD R3 R3 K10
+ 0x7001FFDB, // 002C JMP #0009
+ 0x4C100000, // 002D LDNIL R4
+ 0x1C100404, // 002E EQ R4 R2 R4
+ 0x78120000, // 002F JMPF R4 #0031
+ 0x80000800, // 0030 RET 0
0x8C10030B, // 0031 GETMET R4 R1 K11
- 0xB81A0800, // 0032 GETNGBL R6 K4
- 0x88180D0E, // 0033 GETMBR R6 R6 K14
- 0x7C100400, // 0034 CALL R4 2
- 0x60100010, // 0035 GETGBL R4 G16
- 0x88140102, // 0036 GETMBR R5 R0 K2
- 0x8C140B0F, // 0037 GETMET R5 R5 K15
- 0x5C1C0400, // 0038 MOVE R7 R2
- 0x7C140400, // 0039 CALL R5 2
- 0x7C100200, // 003A CALL R4 1
- 0xA8020030, // 003B EXBLK 0 #006D
- 0x5C140800, // 003C MOVE R5 R4
- 0x7C140000, // 003D CALL R5 0
- 0x8C180310, // 003E GETMET R6 R1 K16
- 0x5C200A00, // 003F MOVE R8 R5
- 0x7C180400, // 0040 CALL R6 2
- 0x8C1C0310, // 0041 GETMET R7 R1 K16
- 0x88240102, // 0042 GETMBR R9 R0 K2
- 0x8C241311, // 0043 GETMET R9 R9 K17
- 0x5C2C0A00, // 0044 MOVE R11 R5
- 0x7C240400, // 0045 CALL R9 2
- 0x8C241312, // 0046 GETMET R9 R9 K18
- 0x582C0013, // 0047 LDCONST R11 K19
- 0x5C300A00, // 0048 MOVE R12 R5
- 0x7C240600, // 0049 CALL R9 3
- 0x7C1C0400, // 004A CALL R7 2
- 0x8C20030B, // 004B GETMET R8 R1 K11
- 0x60280018, // 004C GETGBL R10 G24
- 0x582C0014, // 004D LDCONST R11 K20
- 0x5C300C00, // 004E MOVE R12 R6
- 0x5C340C00, // 004F MOVE R13 R6
- 0x5C380E00, // 0050 MOVE R14 R7
- 0x7C280800, // 0051 CALL R10 4
- 0x7C200400, // 0052 CALL R8 2
- 0x94200405, // 0053 GETIDX R8 R2 R5
- 0x94201101, // 0054 GETIDX R8 R8 K1
- 0x88201106, // 0055 GETMBR R8 R8 K6
- 0x8C24030B, // 0056 GETMET R9 R1 K11
- 0x8C2C1115, // 0057 GETMET R11 R8 K21
- 0x7C2C0200, // 0058 CALL R11 1
- 0x7C240400, // 0059 CALL R9 2
- 0x60240010, // 005A GETGBL R9 G16
- 0x94280405, // 005B GETIDX R10 R2 R5
- 0x7C240200, // 005C CALL R9 1
- 0xA802000A, // 005D EXBLK 0 #0069
- 0x5C281200, // 005E MOVE R10 R9
- 0x7C280000, // 005F CALL R10 0
- 0x8C2C030B, // 0060 GETMET R11 R1 K11
- 0x58340016, // 0061 LDCONST R13 K22
- 0x7C2C0400, // 0062 CALL R11 2
- 0x8C2C1517, // 0063 GETMET R11 R10 K23
- 0x7C2C0200, // 0064 CALL R11 1
- 0x8C2C030B, // 0065 GETMET R11 R1 K11
- 0x58340018, // 0066 LDCONST R13 K24
- 0x7C2C0400, // 0067 CALL R11 2
- 0x7001FFF4, // 0068 JMP #005E
- 0x58240019, // 0069 LDCONST R9 K25
- 0xAC240200, // 006A CATCH R9 1 0
- 0xB0080000, // 006B RAISE 2 R0 R0
- 0x7001FFCE, // 006C JMP #003C
- 0x58100019, // 006D LDCONST R4 K25
- 0xAC100200, // 006E CATCH R4 1 0
- 0xB0080000, // 006F RAISE 2 R0 R0
- 0x8C10030B, // 0070 GETMET R4 R1 K11
- 0x5818001A, // 0071 LDCONST R6 K26
- 0x7C100400, // 0072 CALL R4 2
- 0x80000000, // 0073 RET 0
+ 0x5818000C, // 0032 LDCONST R6 K12
+ 0x7C100400, // 0033 CALL R4 2
+ 0x8C10030B, // 0034 GETMET R4 R1 K11
+ 0x5818000D, // 0035 LDCONST R6 K13
+ 0x7C100400, // 0036 CALL R4 2
+ 0x8C10030B, // 0037 GETMET R4 R1 K11
+ 0xB81A0800, // 0038 GETNGBL R6 K4
+ 0x88180D0E, // 0039 GETMBR R6 R6 K14
+ 0x7C100400, // 003A CALL R4 2
+ 0x60100010, // 003B GETGBL R4 G16
+ 0x88140100, // 003C GETMBR R5 R0 K0
+ 0x8C140B0F, // 003D GETMET R5 R5 K15
+ 0x5C1C0400, // 003E MOVE R7 R2
+ 0x7C140400, // 003F CALL R5 2
+ 0x7C100200, // 0040 CALL R4 1
+ 0xA8020030, // 0041 EXBLK 0 #0073
+ 0x5C140800, // 0042 MOVE R5 R4
+ 0x7C140000, // 0043 CALL R5 0
+ 0x8C180310, // 0044 GETMET R6 R1 K16
+ 0x5C200A00, // 0045 MOVE R8 R5
+ 0x7C180400, // 0046 CALL R6 2
+ 0x8C1C0310, // 0047 GETMET R7 R1 K16
+ 0x88240100, // 0048 GETMBR R9 R0 K0
+ 0x8C241311, // 0049 GETMET R9 R9 K17
+ 0x5C2C0A00, // 004A MOVE R11 R5
+ 0x7C240400, // 004B CALL R9 2
+ 0x8C241312, // 004C GETMET R9 R9 K18
+ 0x582C0013, // 004D LDCONST R11 K19
+ 0x5C300A00, // 004E MOVE R12 R5
+ 0x7C240600, // 004F CALL R9 3
+ 0x7C1C0400, // 0050 CALL R7 2
+ 0x8C20030B, // 0051 GETMET R8 R1 K11
+ 0x60280018, // 0052 GETGBL R10 G24
+ 0x582C0014, // 0053 LDCONST R11 K20
+ 0x5C300C00, // 0054 MOVE R12 R6
+ 0x5C340C00, // 0055 MOVE R13 R6
+ 0x5C380E00, // 0056 MOVE R14 R7
+ 0x7C280800, // 0057 CALL R10 4
+ 0x7C200400, // 0058 CALL R8 2
+ 0x94200405, // 0059 GETIDX R8 R2 R5
+ 0x94201103, // 005A GETIDX R8 R8 K3
+ 0x88201106, // 005B GETMBR R8 R8 K6
+ 0x8C24030B, // 005C GETMET R9 R1 K11
+ 0x8C2C1115, // 005D GETMET R11 R8 K21
+ 0x7C2C0200, // 005E CALL R11 1
+ 0x7C240400, // 005F CALL R9 2
+ 0x60240010, // 0060 GETGBL R9 G16
+ 0x94280405, // 0061 GETIDX R10 R2 R5
+ 0x7C240200, // 0062 CALL R9 1
+ 0xA802000A, // 0063 EXBLK 0 #006F
+ 0x5C281200, // 0064 MOVE R10 R9
+ 0x7C280000, // 0065 CALL R10 0
+ 0x8C2C030B, // 0066 GETMET R11 R1 K11
+ 0x58340016, // 0067 LDCONST R13 K22
+ 0x7C2C0400, // 0068 CALL R11 2
+ 0x8C2C1517, // 0069 GETMET R11 R10 K23
+ 0x7C2C0200, // 006A CALL R11 1
+ 0x8C2C030B, // 006B GETMET R11 R1 K11
+ 0x58340018, // 006C LDCONST R13 K24
+ 0x7C2C0400, // 006D CALL R11 2
+ 0x7001FFF4, // 006E JMP #0064
+ 0x58240019, // 006F LDCONST R9 K25
+ 0xAC240200, // 0070 CATCH R9 1 0
+ 0xB0080000, // 0071 RAISE 2 R0 R0
+ 0x7001FFCE, // 0072 JMP #0042
+ 0x58100019, // 0073 LDCONST R4 K25
+ 0xAC100200, // 0074 CATCH R4 1 0
+ 0xB0080000, // 0075 RAISE 2 R0 R0
+ 0x8C10030B, // 0076 GETMET R4 R1 K11
+ 0x5818001A, // 0077 LDCONST R6 K26
+ 0x7C100400, // 0078 CALL R4 2
+ 0x80000000, // 0079 RET 0
})
)
);
@@ -2182,7 +2193,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[100]) { /* constants */
+ ( &(const bvalue[101]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(check_privileged_access),
/* K2 */ be_nested_str_weak(string),
@@ -2230,7 +2241,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
/* K44 */ be_nested_str_weak(get_fabric_index),
/* K45 */ be_nested_str_weak(remove_fabric),
/* K46 */ be_const_int(1),
- /* K47 */ be_nested_str_weak(_X2Fmatterc_X3F),
+ /* K47 */ be_nested_str_weak(_X2Fmattera_X3F),
/* K48 */ be_nested_str_weak(auto),
/* K49 */ be_nested_str_weak(plugins_persist),
/* K50 */ be_nested_str_weak(config),
@@ -2259,30 +2270,31 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
/* K73 */ be_nested_str_weak(stop_iteration),
/* K74 */ be_nested_str_weak(MTR_X3A_X20config_X20_X3D_X20_X25s),
/* K75 */ be_nested_str_weak(MTR_X3A_X20config_X20error_X20_X3D_X20_X25s),
- /* K76 */ be_nested_str_weak(addep),
- /* K77 */ be_nested_str_weak(pi),
- /* K78 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
- /* K79 */ be_nested_str_weak(bridge_add_endpoint),
- /* K80 */ be_nested_str_weak(addrem),
- /* K81 */ be_nested_str_weak(url),
- /* K82 */ be_nested_str_weak(value_error),
- /* K83 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null),
- /* K84 */ be_nested_str_weak(equal_map),
- /* K85 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
- /* K86 */ be_nested_str_weak(del),
- /* K87 */ be_nested_str_weak(bridge_remove_endpoint),
- /* K88 */ be_nested_str_weak(content_start),
- /* K89 */ be_nested_str_weak(Parameter_X20error),
- /* K90 */ be_nested_str_weak(content_send_style),
- /* K91 */ be_nested_str_weak(content_send),
- /* K92 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E),
- /* K93 */ be_nested_str_weak(html_escape),
- /* K94 */ be_nested_str_weak(content_button),
- /* K95 */ be_nested_str_weak(BUTTON_CONFIGURATION),
- /* K96 */ be_nested_str_weak(content_stop),
- /* K97 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K98 */ be_const_int(2),
- /* K99 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E),
+ /* K76 */ be_nested_str_weak(_X2Fmatterc_X3F),
+ /* K77 */ be_nested_str_weak(addep),
+ /* K78 */ be_nested_str_weak(pi),
+ /* K79 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
+ /* K80 */ be_nested_str_weak(bridge_add_endpoint),
+ /* K81 */ be_nested_str_weak(addrem),
+ /* K82 */ be_nested_str_weak(url),
+ /* K83 */ be_nested_str_weak(value_error),
+ /* K84 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null),
+ /* K85 */ be_nested_str_weak(equal_map),
+ /* K86 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
+ /* K87 */ be_nested_str_weak(del),
+ /* K88 */ be_nested_str_weak(bridge_remove_endpoint),
+ /* K89 */ be_nested_str_weak(content_start),
+ /* K90 */ be_nested_str_weak(Parameter_X20error),
+ /* K91 */ be_nested_str_weak(content_send_style),
+ /* K92 */ be_nested_str_weak(content_send),
+ /* K93 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E),
+ /* K94 */ be_nested_str_weak(html_escape),
+ /* K95 */ be_nested_str_weak(content_button),
+ /* K96 */ be_nested_str_weak(BUTTON_CONFIGURATION),
+ /* K97 */ be_nested_str_weak(content_stop),
+ /* K98 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K99 */ be_const_int(2),
+ /* K100 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E),
}),
be_str_weak(page_part_ctl),
&be_const_str_solidified,
@@ -2719,15 +2731,15 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0x8C1C0F13, // 01AD GETMET R7 R7 K19
0x7C1C0200, // 01AE CALL R7 1
0x8C1C0314, // 01AF GETMET R7 R1 K20
- 0x5824002F, // 01B0 LDCONST R9 K47
+ 0x5824004C, // 01B0 LDCONST R9 K76
0x7C1C0400, // 01B1 CALL R7 2
0x700200BB, // 01B2 JMP #026F
0x8C180305, // 01B3 GETMET R6 R1 K5
- 0x5820004C, // 01B4 LDCONST R8 K76
+ 0x5820004D, // 01B4 LDCONST R8 K77
0x7C180400, // 01B5 CALL R6 2
0x781A002B, // 01B6 JMPF R6 #01E3
0x8C18030E, // 01B7 GETMET R6 R1 K14
- 0x5820004D, // 01B8 LDCONST R8 K77
+ 0x5820004E, // 01B8 LDCONST R8 K78
0x7C180400, // 01B9 CALL R6 2
0x8C1C030E, // 01BA GETMET R7 R1 K14
0x5824000E, // 01BB LDCONST R9 K14
@@ -2738,7 +2750,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0xB8261000, // 01C0 GETNGBL R9 K8
0x8C241309, // 01C1 GETMET R9 R9 K9
0x602C0018, // 01C2 GETGBL R11 G24
- 0x5830004E, // 01C3 LDCONST R12 K78
+ 0x5830004F, // 01C3 LDCONST R12 K79
0x5C340C00, // 01C4 MOVE R13 R6
0x5C380E00, // 01C5 MOVE R14 R7
0x7C2C0600, // 01C6 CALL R11 3
@@ -2762,37 +2774,37 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0x5C3C0E00, // 01D8 MOVE R15 R7
0x7C2C0800, // 01D9 CALL R11 4
0x882C010C, // 01DA GETMBR R11 R0 K12
- 0x8C2C174F, // 01DB GETMET R11 R11 K79
+ 0x8C2C1750, // 01DB GETMET R11 R11 K80
0x5C340C00, // 01DC MOVE R13 R6
0x5C381400, // 01DD MOVE R14 R10
0x7C2C0600, // 01DE CALL R11 3
0x8C280314, // 01DF GETMET R10 R1 K20
- 0x5830002F, // 01E0 LDCONST R12 K47
+ 0x5830004C, // 01E0 LDCONST R12 K76
0x7C280400, // 01E1 CALL R10 2
0x7002008B, // 01E2 JMP #026F
0x8C180305, // 01E3 GETMET R6 R1 K5
- 0x58200050, // 01E4 LDCONST R8 K80
+ 0x58200051, // 01E4 LDCONST R8 K81
0x7C180400, // 01E5 CALL R6 2
0x781A005E, // 01E6 JMPF R6 #0246
0x8C18030E, // 01E7 GETMET R6 R1 K14
- 0x58200051, // 01E8 LDCONST R8 K81
+ 0x58200052, // 01E8 LDCONST R8 K82
0x7C180400, // 01E9 CALL R6 2
0x4C1C0000, // 01EA LDNIL R7
0x1C1C0C07, // 01EB EQ R7 R6 R7
0x741E0001, // 01EC JMPT R7 #01EF
0x1C1C0D3A, // 01ED EQ R7 R6 K58
0x781E0000, // 01EE JMPF R7 #01F0
- 0xB006A553, // 01EF RAISE 1 K82 K83
+ 0xB006A754, // 01EF RAISE 1 K83 K84
0x581C0029, // 01F0 LDCONST R7 K41
0x60200008, // 01F1 GETGBL R8 G8
0x5C240E00, // 01F2 MOVE R9 R7
0x7C200200, // 01F3 CALL R8 1
0x8C240305, // 01F4 GETMET R9 R1 K5
- 0x002E9A08, // 01F5 ADD R11 K77 R8
+ 0x002E9C08, // 01F5 ADD R11 K78 R8
0x7C240400, // 01F6 CALL R9 2
0x78260049, // 01F7 JMPF R9 #0242
0x8C24030E, // 01F8 GETMET R9 R1 K14
- 0x002E9A08, // 01F9 ADD R11 K77 R8
+ 0x002E9C08, // 01F9 ADD R11 K78 R8
0x7C240400, // 01FA CALL R9 2
0x8C28030E, // 01FB GETMET R10 R1 K14
0x00321C08, // 01FC ADD R12 K14 R8
@@ -2812,7 +2824,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0x78360030, // 020A JMPF R13 #023C
0x60340013, // 020B GETGBL R13 G19
0x7C340000, // 020C CALL R13 0
- 0x9836A206, // 020D SETIDX R13 K81 R6
+ 0x9836A406, // 020D SETIDX R13 K82 R6
0x98367209, // 020E SETIDX R13 K57 R9
0x782E0000, // 020F JMPF R11 #0211
0x98368A0B, // 0210 SETIDX R13 K69 R11
@@ -2829,7 +2841,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0xA802000B, // 021B EXBLK 0 #0228
0x5C401E00, // 021C MOVE R16 R15
0x7C400000, // 021D CALL R16 0
- 0x8C440154, // 021E GETMET R17 R0 K84
+ 0x8C440155, // 021E GETMET R17 R0 K85
0x5C4C2000, // 021F MOVE R19 R16
0x5C501A00, // 0220 MOVE R20 R13
0x7C440600, // 0221 CALL R17 3
@@ -2847,7 +2859,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0xB83E1000, // 022D GETNGBL R15 K8
0x8C3C1F09, // 022E GETMET R15 R15 K9
0x60440018, // 022F GETGBL R17 G24
- 0x58480055, // 0230 LDCONST R18 K85
+ 0x58480056, // 0230 LDCONST R18 K86
0x5C4C0C00, // 0231 MOVE R19 R6
0x5C501200, // 0232 MOVE R20 R9
0x5C541400, // 0233 MOVE R21 R10
@@ -2855,7 +2867,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0x5848000B, // 0235 LDCONST R18 K11
0x7C3C0600, // 0236 CALL R15 3
0x883C010C, // 0237 GETMBR R15 R0 K12
- 0x8C3C1F4F, // 0238 GETMET R15 R15 K79
+ 0x8C3C1F50, // 0238 GETMET R15 R15 K80
0x5C441200, // 0239 MOVE R17 R9
0x5C481A00, // 023A MOVE R18 R13
0x7C3C0600, // 023B CALL R15 3
@@ -2866,7 +2878,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0x5C201800, // 0240 MOVE R8 R12
0x7001FFB1, // 0241 JMP #01F4
0x8C240314, // 0242 GETMET R9 R1 K20
- 0x582C002F, // 0243 LDCONST R11 K47
+ 0x582C004C, // 0243 LDCONST R11 K76
0x7C240400, // 0244 CALL R9 2
0x70020028, // 0245 JMP #026F
0x4C180000, // 0246 LDNIL R6
@@ -2884,7 +2896,7 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0x7C240400, // 0252 CALL R9 2
0x8C280535, // 0253 GETMET R10 R2 K53
0x5C301200, // 0254 MOVE R12 R9
- 0x58340056, // 0255 LDCONST R13 K86
+ 0x58340057, // 0255 LDCONST R13 K87
0x7C280600, // 0256 CALL R10 3
0x1C281529, // 0257 EQ R10 R10 K41
0x782A0005, // 0258 JMPF R10 #025F
@@ -2904,30 +2916,30 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0x201C0C07, // 0266 NE R7 R6 R7
0x781E0006, // 0267 JMPF R7 #026F
0x881C010C, // 0268 GETMBR R7 R0 K12
- 0x8C1C0F57, // 0269 GETMET R7 R7 K87
+ 0x8C1C0F58, // 0269 GETMET R7 R7 K88
0x5C240C00, // 026A MOVE R9 R6
0x7C1C0400, // 026B CALL R7 2
0x8C1C0314, // 026C GETMET R7 R1 K20
- 0x5824002F, // 026D LDCONST R9 K47
+ 0x5824004C, // 026D LDCONST R9 K76
0x7C1C0400, // 026E CALL R7 2
0x78160011, // 026F JMPF R5 #0282
- 0x8C180358, // 0270 GETMET R6 R1 K88
- 0x58200059, // 0271 LDCONST R8 K89
+ 0x8C180359, // 0270 GETMET R6 R1 K89
+ 0x5820005A, // 0271 LDCONST R8 K90
0x7C180400, // 0272 CALL R6 2
- 0x8C18035A, // 0273 GETMET R6 R1 K90
+ 0x8C18035B, // 0273 GETMET R6 R1 K91
0x7C180200, // 0274 CALL R6 1
- 0x8C18035B, // 0275 GETMET R6 R1 K91
+ 0x8C18035C, // 0275 GETMET R6 R1 K92
0x60200018, // 0276 GETGBL R8 G24
- 0x5824005C, // 0277 LDCONST R9 K92
- 0x8C28035D, // 0278 GETMET R10 R1 K93
+ 0x5824005D, // 0277 LDCONST R9 K93
+ 0x8C28035E, // 0278 GETMET R10 R1 K94
0x5C300A00, // 0279 MOVE R12 R5
0x7C280400, // 027A CALL R10 2
0x7C200400, // 027B CALL R8 2
0x7C180400, // 027C CALL R6 2
- 0x8C18035E, // 027D GETMET R6 R1 K94
- 0x8820035F, // 027E GETMBR R8 R1 K95
+ 0x8C18035F, // 027D GETMET R6 R1 K95
+ 0x88200360, // 027E GETMBR R8 R1 K96
0x7C180400, // 027F CALL R6 2
- 0x8C180360, // 0280 GETMET R6 R1 K96
+ 0x8C180361, // 0280 GETMET R6 R1 K97
0x7C180200, // 0281 CALL R6 1
0xA8040001, // 0282 EXBLK 1 1
0x7002001D, // 0283 JMP #02A2
@@ -2936,28 +2948,28 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0xB8221000, // 0286 GETNGBL R8 K8
0x8C201109, // 0287 GETMET R8 R8 K9
0x60280018, // 0288 GETGBL R10 G24
- 0x582C0061, // 0289 LDCONST R11 K97
+ 0x582C0062, // 0289 LDCONST R11 K98
0x5C300C00, // 028A MOVE R12 R6
0x5C340E00, // 028B MOVE R13 R7
0x7C280600, // 028C CALL R10 3
- 0x582C0062, // 028D LDCONST R11 K98
+ 0x582C0063, // 028D LDCONST R11 K99
0x7C200600, // 028E CALL R8 3
- 0x8C200358, // 028F GETMET R8 R1 K88
- 0x58280059, // 0290 LDCONST R10 K89
+ 0x8C200359, // 028F GETMET R8 R1 K89
+ 0x5828005A, // 0290 LDCONST R10 K90
0x7C200400, // 0291 CALL R8 2
- 0x8C20035A, // 0292 GETMET R8 R1 K90
+ 0x8C20035B, // 0292 GETMET R8 R1 K91
0x7C200200, // 0293 CALL R8 1
- 0x8C20035B, // 0294 GETMET R8 R1 K91
+ 0x8C20035C, // 0294 GETMET R8 R1 K92
0x60280018, // 0295 GETGBL R10 G24
- 0x582C0063, // 0296 LDCONST R11 K99
+ 0x582C0064, // 0296 LDCONST R11 K100
0x5C300C00, // 0297 MOVE R12 R6
0x5C340E00, // 0298 MOVE R13 R7
0x7C280600, // 0299 CALL R10 3
0x7C200400, // 029A CALL R8 2
- 0x8C20035E, // 029B GETMET R8 R1 K94
- 0x8828035F, // 029C GETMBR R10 R1 K95
+ 0x8C20035F, // 029B GETMET R8 R1 K95
+ 0x88280360, // 029C GETMBR R10 R1 K96
0x7C200400, // 029D CALL R8 2
- 0x8C200360, // 029E GETMET R8 R1 K96
+ 0x8C200361, // 029E GETMET R8 R1 K97
0x7C200200, // 029F CALL R8 1
0x70020000, // 02A0 JMP #02A2
0xB0080000, // 02A1 RAISE 2 R0 R0
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h
index a008118ea..d5af95655 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h
@@ -7,9 +7,9 @@
extern const bclass be_class_Matter_Device;
/********************************************************************
-** Solidified function: save_before_restart
+** Solidified function: is_commissioning_open
********************************************************************/
-be_local_closure(Matter_Device_save_before_restart, /* name */
+be_local_closure(Matter_Device_is_commissioning_open, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
@@ -19,18 +19,16 @@ be_local_closure(Matter_Device_save_before_restart, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(stop_basic_commissioning),
- /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
}),
- be_str_weak(save_before_restart),
+ be_str_weak(is_commissioning_open),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x8C040101, // 0002 GETMET R1 R0 K1
- 0x7C040200, // 0003 CALL R1 1
- 0x80000000, // 0004 RET 0
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
})
)
);
@@ -38,11 +36,11 @@ be_local_closure(Matter_Device_save_before_restart, /* name */
/********************************************************************
-** Solidified function: msg_send
+** Solidified function: MtrInfo_one
********************************************************************/
-be_local_closure(Matter_Device_msg_send, /* name */
+be_local_closure(Matter_Device_MtrInfo_one, /* name */
be_nested_proto(
- 5, /* nstack */
+ 9, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -50,18 +48,237 @@ be_local_closure(Matter_Device_msg_send, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(send_UDP),
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(find_plugin_by_endpoint),
+ /* K1 */ be_nested_str_weak(state_json),
+ /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(publish_result),
+ /* K5 */ be_nested_str_weak(),
}),
- be_str_weak(msg_send),
+ be_str_weak(MtrInfo_one),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ ( &(const binstruction[20]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0403, // 0004 EQ R3 R2 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x80000600, // 0006 RET 0
+ 0x8C0C0501, // 0007 GETMET R3 R2 K1
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x780E0008, // 0009 JMPF R3 #0013
+ 0x60100018, // 000A GETGBL R4 G24
+ 0x58140002, // 000B LDCONST R5 K2
+ 0x5C180600, // 000C MOVE R6 R3
+ 0x7C100400, // 000D CALL R4 2
+ 0xB8160600, // 000E GETNGBL R5 K3
+ 0x8C140B04, // 000F GETMET R5 R5 K4
+ 0x5C1C0800, // 0010 MOVE R7 R4
+ 0x58200005, // 0011 LDCONST R8 K5
+ 0x7C140600, // 0012 CALL R5 3
+ 0x80000000, // 0013 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_fabrics_saved
+********************************************************************/
+be_local_closure(Matter_Device_event_fabrics_saved, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_nested_str_weak(count_active_fabrics),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(plugins_persist),
+ /* K4 */ be_nested_str_weak(save_param),
+ }),
+ be_str_weak(event_fabrics_saved),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x24040302, // 0003 GT R1 R1 K2
+ 0x78060005, // 0004 JMPF R1 #000B
+ 0x88040103, // 0005 GETMBR R1 R0 K3
+ 0x74060003, // 0006 JMPT R1 #000B
+ 0x50040200, // 0007 LDBOOL R1 1 0
+ 0x90020601, // 0008 SETMBR R0 K3 R1
+ 0x8C040104, // 0009 GETMET R1 R0 K4
+ 0x7C040200, // 000A CALL R1 1
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_commissioning_complete
+********************************************************************/
+be_local_closure(Matter_Device_start_commissioning_complete, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(get_fabric),
+ /* K1 */ be_nested_str_weak(get_fabric_id),
+ /* K2 */ be_nested_str_weak(copy),
+ /* K3 */ be_nested_str_weak(reverse),
+ /* K4 */ be_nested_str_weak(tohex),
+ /* K5 */ be_nested_str_weak(get_admin_vendor_name),
+ /* K6 */ be_nested_str_weak(tasmota),
+ /* K7 */ be_nested_str_weak(log),
+ /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D),
+ /* K9 */ be_const_int(2),
+ /* K10 */ be_nested_str_weak(stop_basic_commissioning),
+ }),
+ be_str_weak(start_commissioning_complete),
+ &be_const_str_solidified,
+ ( &(const binstruction[24]) { /* code */
+ 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x7C080200, // 0001 CALL R2 1
+ 0x8C0C0501, // 0002 GETMET R3 R2 K1
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0702, // 0004 GETMET R3 R3 K2
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C0C0703, // 0006 GETMET R3 R3 K3
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C0C0704, // 0008 GETMET R3 R3 K4
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x8C100505, // 000A GETMET R4 R2 K5
+ 0x7C100200, // 000B CALL R4 1
+ 0xB8160C00, // 000C GETNGBL R5 K6
+ 0x8C140B07, // 000D GETMET R5 R5 K7
+ 0x601C0018, // 000E GETGBL R7 G24
+ 0x58200008, // 000F LDCONST R8 K8
+ 0x5C240600, // 0010 MOVE R9 R3
+ 0x5C280800, // 0011 MOVE R10 R4
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x58200009, // 0013 LDCONST R8 K9
+ 0x7C140600, // 0014 CALL R5 3
+ 0x8C14010A, // 0015 GETMET R5 R0 K10
+ 0x7C140200, // 0016 CALL R5 1
+ 0x80000000, // 0017 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: bridge_remove_endpoint
+********************************************************************/
+be_local_closure(Matter_Device_bridge_remove_endpoint, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[18]) { /* constants */
+ /* K0 */ be_nested_str_weak(json),
+ /* K1 */ be_nested_str_weak(plugins_config),
+ /* K2 */ be_nested_str_weak(contains),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(log),
+ /* K5 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20),
+ /* K6 */ be_const_int(3),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(remove),
+ /* K10 */ be_nested_str_weak(plugins_persist),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(plugins),
+ /* K13 */ be_nested_str_weak(get_endpoint),
+ /* K14 */ be_const_int(1),
+ /* K15 */ be_nested_str_weak(clean_remotes),
+ /* K16 */ be_nested_str_weak(save_param),
+ /* K17 */ be_nested_str_weak(signal_endpoints_changed),
+ }),
+ be_str_weak(bridge_remove_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[58]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x600C0008, // 0001 GETGBL R3 G8
0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x4C100000, // 0004 LDNIL R4
+ 0x4C140000, // 0005 LDNIL R5
+ 0x88180101, // 0006 GETMBR R6 R0 K1
+ 0x8C180D02, // 0007 GETMET R6 R6 K2
+ 0x5C200600, // 0008 MOVE R8 R3
+ 0x7C180400, // 0009 CALL R6 2
+ 0x741A0005, // 000A JMPT R6 #0011
+ 0xB81A0600, // 000B GETNGBL R6 K3
+ 0x8C180D04, // 000C GETMET R6 R6 K4
+ 0x00220A03, // 000D ADD R8 K5 R3
+ 0x58240006, // 000E LDCONST R9 K6
+ 0x7C180600, // 000F CALL R6 3
+ 0x80000C00, // 0010 RET 0
+ 0xB81A0600, // 0011 GETNGBL R6 K3
+ 0x8C180D04, // 0012 GETMET R6 R6 K4
+ 0x60200018, // 0013 GETGBL R8 G24
+ 0x58240007, // 0014 LDCONST R9 K7
+ 0x5C280200, // 0015 MOVE R10 R1
+ 0x7C200400, // 0016 CALL R8 2
+ 0x58240008, // 0017 LDCONST R9 K8
+ 0x7C180600, // 0018 CALL R6 3
+ 0x88180101, // 0019 GETMBR R6 R0 K1
+ 0x8C180D09, // 001A GETMET R6 R6 K9
+ 0x5C200600, // 001B MOVE R8 R3
+ 0x7C180400, // 001C CALL R6 2
+ 0x50180200, // 001D LDBOOL R6 1 0
+ 0x90021406, // 001E SETMBR R0 K10 R6
+ 0x5818000B, // 001F LDCONST R6 K11
+ 0x601C000C, // 0020 GETGBL R7 G12
+ 0x8820010C, // 0021 GETMBR R8 R0 K12
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0x141C0C07, // 0023 LT R7 R6 R7
+ 0x781E000D, // 0024 JMPF R7 #0033
+ 0x881C010C, // 0025 GETMBR R7 R0 K12
+ 0x941C0E06, // 0026 GETIDX R7 R7 R6
+ 0x8C1C0F0D, // 0027 GETMET R7 R7 K13
+ 0x7C1C0200, // 0028 CALL R7 1
+ 0x1C1C0207, // 0029 EQ R7 R1 R7
+ 0x781E0005, // 002A JMPF R7 #0031
+ 0x881C010C, // 002B GETMBR R7 R0 K12
+ 0x8C1C0F09, // 002C GETMET R7 R7 K9
+ 0x5C240C00, // 002D MOVE R9 R6
+ 0x7C1C0400, // 002E CALL R7 2
+ 0x70020002, // 002F JMP #0033
+ 0x70020000, // 0030 JMP #0032
+ 0x00180D0E, // 0031 ADD R6 R6 K14
+ 0x7001FFEC, // 0032 JMP #0020
+ 0x8C1C010F, // 0033 GETMET R7 R0 K15
+ 0x7C1C0200, // 0034 CALL R7 1
+ 0x8C1C0110, // 0035 GETMET R7 R0 K16
+ 0x7C1C0200, // 0036 CALL R7 1
+ 0x8C1C0111, // 0037 GETMET R7 R0 K17
+ 0x7C1C0200, // 0038 CALL R7 1
+ 0x80000000, // 0039 RET 0
})
)
);
@@ -194,645 +411,6 @@ be_local_closure(Matter_Device_mdns_remove_PASE, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: compute_qrcode_content
-********************************************************************/
-be_local_closure(Matter_Device_compute_qrcode_content, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(resize),
- /* K1 */ be_nested_str_weak(setbits),
- /* K2 */ be_const_int(3),
- /* K3 */ be_nested_str_weak(vendorid),
- /* K4 */ be_nested_str_weak(productid),
- /* K5 */ be_nested_str_weak(root_discriminator),
- /* K6 */ be_nested_str_weak(root_passcode),
- /* K7 */ be_const_int(134217727),
- /* K8 */ be_nested_str_weak(MT_X3A),
- /* K9 */ be_nested_str_weak(matter),
- /* K10 */ be_nested_str_weak(Base38),
- /* K11 */ be_nested_str_weak(encode),
- }),
- be_str_weak(compute_qrcode_content),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0x60040015, // 0000 GETGBL R1 G21
- 0x7C040000, // 0001 CALL R1 0
- 0x8C040300, // 0002 GETMET R1 R1 K0
- 0x540E000A, // 0003 LDINT R3 11
- 0x7C040400, // 0004 CALL R1 2
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x58100002, // 0006 LDCONST R4 K2
- 0x5416000F, // 0007 LDINT R5 16
- 0x88180103, // 0008 GETMBR R6 R0 K3
- 0x7C080800, // 0009 CALL R2 4
- 0x8C080301, // 000A GETMET R2 R1 K1
- 0x54120012, // 000B LDINT R4 19
- 0x5416000F, // 000C LDINT R5 16
- 0x88180104, // 000D GETMBR R6 R0 K4
- 0x7C080800, // 000E CALL R2 4
- 0x8C080301, // 000F GETMET R2 R1 K1
- 0x54120024, // 0010 LDINT R4 37
- 0x54160007, // 0011 LDINT R5 8
- 0x541A0003, // 0012 LDINT R6 4
- 0x7C080800, // 0013 CALL R2 4
- 0x8C080301, // 0014 GETMET R2 R1 K1
- 0x5412002C, // 0015 LDINT R4 45
- 0x5416000B, // 0016 LDINT R5 12
- 0x88180105, // 0017 GETMBR R6 R0 K5
- 0x541E0FFE, // 0018 LDINT R7 4095
- 0x2C180C07, // 0019 AND R6 R6 R7
- 0x7C080800, // 001A CALL R2 4
- 0x8C080301, // 001B GETMET R2 R1 K1
- 0x54120038, // 001C LDINT R4 57
- 0x5416001A, // 001D LDINT R5 27
- 0x88180106, // 001E GETMBR R6 R0 K6
- 0x2C180D07, // 001F AND R6 R6 K7
- 0x7C080800, // 0020 CALL R2 4
- 0xB80A1200, // 0021 GETNGBL R2 K9
- 0x8808050A, // 0022 GETMBR R2 R2 K10
- 0x8C08050B, // 0023 GETMET R2 R2 K11
- 0x5C100200, // 0024 MOVE R4 R1
- 0x7C080400, // 0025 CALL R2 2
- 0x000A1002, // 0026 ADD R2 K8 R2
- 0x80040400, // 0027 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _init_basic_commissioning
-********************************************************************/
-be_local_closure(Matter_Device__init_basic_commissioning, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(count_active_fabrics),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(start_root_basic_commissioning),
- }),
- be_str_weak(_init_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x1C040302, // 0003 EQ R1 R1 K2
- 0x78060001, // 0004 JMPF R1 #0007
- 0x8C040103, // 0005 GETMET R1 R0 K3
- 0x7C040200, // 0006 CALL R1 1
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_250ms
-********************************************************************/
-be_local_closure(Matter_Device_every_250ms, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(every_250ms),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(plugins),
- /* K4 */ be_const_int(1),
- }),
- be_str_weak(every_250ms),
- &be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x58040002, // 0003 LDCONST R1 K2
- 0x6008000C, // 0004 GETGBL R2 G12
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x7C080200, // 0006 CALL R2 1
- 0x14080202, // 0007 LT R2 R1 R2
- 0x780A0005, // 0008 JMPF R2 #000F
- 0x88080103, // 0009 GETMBR R2 R0 K3
- 0x94080401, // 000A GETIDX R2 R2 R1
- 0x8C080501, // 000B GETMET R2 R2 K1
- 0x7C080200, // 000C CALL R2 1
- 0x00040304, // 000D ADD R1 R1 K4
- 0x7001FFF4, // 000E JMP #0004
- 0x80000000, // 000F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-be_local_closure(Matter_Device_invoke_request, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_nested_str_weak(plugins),
- /* K3 */ be_nested_str_weak(invoke_request),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(status),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x58100000, // 0000 LDCONST R4 K0
- 0x88140701, // 0001 GETMBR R5 R3 K1
- 0x6018000C, // 0002 GETGBL R6 G12
- 0x881C0102, // 0003 GETMBR R7 R0 K2
- 0x7C180200, // 0004 CALL R6 1
- 0x14180806, // 0005 LT R6 R4 R6
- 0x781A000C, // 0006 JMPF R6 #0014
- 0x88180102, // 0007 GETMBR R6 R0 K2
- 0x94180C04, // 0008 GETIDX R6 R6 R4
- 0x881C0D01, // 0009 GETMBR R7 R6 K1
- 0x1C1C0E05, // 000A EQ R7 R7 R5
- 0x781E0005, // 000B JMPF R7 #0012
- 0x8C1C0D03, // 000C GETMET R7 R6 K3
- 0x5C240200, // 000D MOVE R9 R1
- 0x5C280400, // 000E MOVE R10 R2
- 0x5C2C0600, // 000F MOVE R11 R3
- 0x7C1C0800, // 0010 CALL R7 4
- 0x80040E00, // 0011 RET 1 R7
- 0x00100904, // 0012 ADD R4 R4 K4
- 0x7001FFED, // 0013 JMP #0002
- 0xB81A0C00, // 0014 GETNGBL R6 K6
- 0x88180D07, // 0015 GETMBR R6 R6 K7
- 0x900E0A06, // 0016 SETMBR R3 K5 R6
- 0x80000000, // 0017 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_operational_discovery_deferred
-********************************************************************/
-be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 3, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 0),
- be_local_const_upval(1, 1),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(start_operational_discovery),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x68080001, // 0002 GETUPV R2 U1
- 0x7C000400, // 0003 CALL R0 2
- 0x80040000, // 0004 RET 1 R0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(set_timer),
- /* K2 */ be_const_int(0),
- }),
- be_str_weak(start_operational_discovery_deferred),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x58100002, // 0002 LDCONST R4 K2
- 0x84140000, // 0003 CLOSURE R5 P0
- 0x7C080600, // 0004 CALL R2 3
- 0xA0000000, // 0005 CLOSE R0
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_active_endpoints
-********************************************************************/
-be_local_closure(Matter_Device_get_active_endpoints, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins),
- /* K1 */ be_nested_str_weak(get_endpoint),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(find),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(get_active_endpoints),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x60080012, // 0000 GETGBL R2 G18
- 0x7C080000, // 0001 CALL R2 0
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x88100100, // 0003 GETMBR R4 R0 K0
- 0x7C0C0200, // 0004 CALL R3 1
- 0xA8020011, // 0005 EXBLK 0 #0018
- 0x5C100600, // 0006 MOVE R4 R3
- 0x7C100000, // 0007 CALL R4 0
- 0x8C140901, // 0008 GETMET R5 R4 K1
- 0x7C140200, // 0009 CALL R5 1
- 0x78060002, // 000A JMPF R1 #000E
- 0x1C180B02, // 000B EQ R6 R5 K2
- 0x781A0000, // 000C JMPF R6 #000E
- 0x7001FFF7, // 000D JMP #0006
- 0x8C180503, // 000E GETMET R6 R2 K3
- 0x5C200A00, // 000F MOVE R8 R5
- 0x7C180400, // 0010 CALL R6 2
- 0x4C1C0000, // 0011 LDNIL R7
- 0x1C180C07, // 0012 EQ R6 R6 R7
- 0x781A0002, // 0013 JMPF R6 #0017
- 0x8C180504, // 0014 GETMET R6 R2 K4
- 0x5C200A00, // 0015 MOVE R8 R5
- 0x7C180400, // 0016 CALL R6 2
- 0x7001FFED, // 0017 JMP #0006
- 0x580C0005, // 0018 LDCONST R3 K5
- 0xAC0C0200, // 0019 CATCH R3 1 0
- 0xB0080000, // 001A RAISE 2 R0 R0
- 0x80040400, // 001B RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_commissioning_complete_deferred
-********************************************************************/
-be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 3, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 0),
- be_local_const_upval(1, 1),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(start_commissioning_complete),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x68080001, // 0002 GETUPV R2 U1
- 0x7C000400, // 0003 CALL R0 2
- 0x80040000, // 0004 RET 1 R0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(set_timer),
- /* K2 */ be_const_int(0),
- }),
- be_str_weak(start_commissioning_complete_deferred),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x58100002, // 0002 LDCONST R4 K2
- 0x84140000, // 0003 CLOSURE R5 P0
- 0x7C080600, // 0004 CALL R2 3
- 0xA0000000, // 0005 CLOSE R0
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _instantiate_plugins_from_config
-********************************************************************/
-be_local_closure(Matter_Device__instantiate_plugins_from_config, /* name */
- be_nested_proto(
- 18, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(k2l_num),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str_weak(plugins),
- /* K6 */ be_nested_str_weak(push),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(Plugin_Root),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s),
- /* K11 */ be_nested_str_weak(root),
- /* K12 */ be_nested_str_weak(),
- /* K13 */ be_nested_str_weak(Plugin_Aggregator),
- /* K14 */ be_nested_str_weak(find),
- /* K15 */ be_nested_str_weak(type),
- /* K16 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping),
- /* K17 */ be_const_int(3),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed),
- /* K19 */ be_nested_str_weak(plugins_classes),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
- /* K21 */ be_nested_str_weak(_X27_X20skipping),
- /* K22 */ be_nested_str_weak(conf_to_log),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K24 */ be_nested_str_weak(_X7C),
- /* K25 */ be_nested_str_weak(stop_iteration),
- /* K26 */ be_nested_str_weak(aggregator),
- /* K27 */ be_nested_str_weak(publish_result),
- /* K28 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D),
- /* K29 */ be_nested_str_weak(Matter),
- }),
- be_str_weak(_instantiate_plugins_from_config),
- &be_const_str_solidified,
- ( &(const binstruction[152]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5C100200, // 0001 MOVE R4 R1
- 0x7C080400, // 0002 CALL R2 2
- 0xB80E0200, // 0003 GETNGBL R3 K1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x58140003, // 0005 LDCONST R5 K3
- 0x58180004, // 0006 LDCONST R6 K4
- 0x7C0C0600, // 0007 CALL R3 3
- 0x880C0105, // 0008 GETMBR R3 R0 K5
- 0x8C0C0706, // 0009 GETMET R3 R3 K6
- 0xB8160E00, // 000A GETNGBL R5 K7
- 0x8C140B08, // 000B GETMET R5 R5 K8
- 0x5C1C0000, // 000C MOVE R7 R0
- 0x58200009, // 000D LDCONST R8 K9
- 0x60240013, // 000E GETGBL R9 G19
- 0x7C240000, // 000F CALL R9 0
- 0x7C140800, // 0010 CALL R5 4
- 0x7C0C0400, // 0011 CALL R3 2
- 0xB80E0200, // 0012 GETNGBL R3 K1
- 0x8C0C0702, // 0013 GETMET R3 R3 K2
- 0x60140018, // 0014 GETGBL R5 G24
- 0x5818000A, // 0015 LDCONST R6 K10
- 0x581C0009, // 0016 LDCONST R7 K9
- 0x5820000B, // 0017 LDCONST R8 K11
- 0x5824000C, // 0018 LDCONST R9 K12
- 0x7C140800, // 0019 CALL R5 4
- 0x58180004, // 001A LDCONST R6 K4
- 0x7C0C0600, // 001B CALL R3 3
- 0x880C0105, // 001C GETMBR R3 R0 K5
- 0x8C0C0706, // 001D GETMET R3 R3 K6
- 0xB8160E00, // 001E GETNGBL R5 K7
- 0x8C140B0D, // 001F GETMET R5 R5 K13
- 0x5C1C0000, // 0020 MOVE R7 R0
- 0x5422FEFF, // 0021 LDINT R8 65280
- 0x60240013, // 0022 GETGBL R9 G19
- 0x7C240000, // 0023 CALL R9 0
- 0x7C140800, // 0024 CALL R5 4
- 0x7C0C0400, // 0025 CALL R3 2
- 0x600C0010, // 0026 GETGBL R3 G16
- 0x5C100400, // 0027 MOVE R4 R2
- 0x7C0C0200, // 0028 CALL R3 1
- 0xA802005A, // 0029 EXBLK 0 #0085
- 0x5C100600, // 002A MOVE R4 R3
- 0x7C100000, // 002B CALL R4 0
- 0x1C140909, // 002C EQ R5 R4 K9
- 0x78160000, // 002D JMPF R5 #002F
- 0x7001FFFA, // 002E JMP #002A
- 0xA8020042, // 002F EXBLK 0 #0073
- 0x60140008, // 0030 GETGBL R5 G8
- 0x5C180800, // 0031 MOVE R6 R4
- 0x7C140200, // 0032 CALL R5 1
- 0x94140205, // 0033 GETIDX R5 R1 R5
- 0x8C180B0E, // 0034 GETMET R6 R5 K14
- 0x5820000F, // 0035 LDCONST R8 K15
- 0x7C180400, // 0036 CALL R6 2
- 0x4C1C0000, // 0037 LDNIL R7
- 0x1C1C0C07, // 0038 EQ R7 R6 R7
- 0x781E0006, // 0039 JMPF R7 #0041
- 0xB81E0200, // 003A GETNGBL R7 K1
- 0x8C1C0F02, // 003B GETMET R7 R7 K2
- 0x58240010, // 003C LDCONST R9 K16
- 0x58280011, // 003D LDCONST R10 K17
- 0x7C1C0600, // 003E CALL R7 3
- 0xA8040001, // 003F EXBLK 1 1
- 0x7001FFE8, // 0040 JMP #002A
- 0x1C1C0D0B, // 0041 EQ R7 R6 K11
- 0x781E0006, // 0042 JMPF R7 #004A
- 0xB81E0200, // 0043 GETNGBL R7 K1
- 0x8C1C0F02, // 0044 GETMET R7 R7 K2
- 0x58240012, // 0045 LDCONST R9 K18
- 0x58280011, // 0046 LDCONST R10 K17
- 0x7C1C0600, // 0047 CALL R7 3
- 0xA8040001, // 0048 EXBLK 1 1
- 0x7001FFDF, // 0049 JMP #002A
- 0x881C0113, // 004A GETMBR R7 R0 K19
- 0x8C1C0F0E, // 004B GETMET R7 R7 K14
- 0x5C240C00, // 004C MOVE R9 R6
- 0x7C1C0400, // 004D CALL R7 2
- 0x4C200000, // 004E LDNIL R8
- 0x1C200E08, // 004F EQ R8 R7 R8
- 0x7822000A, // 0050 JMPF R8 #005C
- 0xB8220200, // 0051 GETNGBL R8 K1
- 0x8C201102, // 0052 GETMET R8 R8 K2
- 0x60280008, // 0053 GETGBL R10 G8
- 0x5C2C0C00, // 0054 MOVE R11 R6
- 0x7C280200, // 0055 CALL R10 1
- 0x002A280A, // 0056 ADD R10 K20 R10
- 0x00281515, // 0057 ADD R10 R10 K21
- 0x582C0004, // 0058 LDCONST R11 K4
- 0x7C200600, // 0059 CALL R8 3
- 0xA8040001, // 005A EXBLK 1 1
- 0x7001FFCD, // 005B JMP #002A
- 0x5C200E00, // 005C MOVE R8 R7
- 0x5C240000, // 005D MOVE R9 R0
- 0x5C280800, // 005E MOVE R10 R4
- 0x5C2C0A00, // 005F MOVE R11 R5
- 0x7C200600, // 0060 CALL R8 3
- 0x88240105, // 0061 GETMBR R9 R0 K5
- 0x8C241306, // 0062 GETMET R9 R9 K6
- 0x5C2C1000, // 0063 MOVE R11 R8
- 0x7C240400, // 0064 CALL R9 2
- 0xB8260200, // 0065 GETNGBL R9 K1
- 0x8C241302, // 0066 GETMET R9 R9 K2
- 0x602C0018, // 0067 GETGBL R11 G24
- 0x5830000A, // 0068 LDCONST R12 K10
- 0x5C340800, // 0069 MOVE R13 R4
- 0x5C380C00, // 006A MOVE R14 R6
- 0x8C3C0116, // 006B GETMET R15 R0 K22
- 0x5C440A00, // 006C MOVE R17 R5
- 0x7C3C0400, // 006D CALL R15 2
- 0x7C2C0800, // 006E CALL R11 4
- 0x58300004, // 006F LDCONST R12 K4
- 0x7C240600, // 0070 CALL R9 3
- 0xA8040001, // 0071 EXBLK 1 1
- 0x70020010, // 0072 JMP #0084
- 0xAC140002, // 0073 CATCH R5 0 2
- 0x7002000D, // 0074 JMP #0083
- 0xB81E0200, // 0075 GETNGBL R7 K1
- 0x8C1C0F02, // 0076 GETMET R7 R7 K2
- 0x60240008, // 0077 GETGBL R9 G8
- 0x5C280A00, // 0078 MOVE R10 R5
- 0x7C240200, // 0079 CALL R9 1
- 0x00262E09, // 007A ADD R9 K23 R9
- 0x00241318, // 007B ADD R9 R9 K24
- 0x60280008, // 007C GETGBL R10 G8
- 0x5C2C0C00, // 007D MOVE R11 R6
- 0x7C280200, // 007E CALL R10 1
- 0x0024120A, // 007F ADD R9 R9 R10
- 0x58280004, // 0080 LDCONST R10 K4
- 0x7C1C0600, // 0081 CALL R7 3
- 0x70020000, // 0082 JMP #0084
- 0xB0080000, // 0083 RAISE 2 R0 R0
- 0x7001FFA4, // 0084 JMP #002A
- 0x580C0019, // 0085 LDCONST R3 K25
- 0xAC0C0200, // 0086 CATCH R3 1 0
- 0xB0080000, // 0087 RAISE 2 R0 R0
- 0xB80E0200, // 0088 GETNGBL R3 K1
- 0x8C0C0702, // 0089 GETMET R3 R3 K2
- 0x60140018, // 008A GETGBL R5 G24
- 0x5818000A, // 008B LDCONST R6 K10
- 0x541EFEFF, // 008C LDINT R7 65280
- 0x5820001A, // 008D LDCONST R8 K26
- 0x5824000C, // 008E LDCONST R9 K12
- 0x7C140800, // 008F CALL R5 4
- 0x58180004, // 0090 LDCONST R6 K4
- 0x7C0C0600, // 0091 CALL R3 3
- 0xB80E0200, // 0092 GETNGBL R3 K1
- 0x8C0C071B, // 0093 GETMET R3 R3 K27
- 0x5814001C, // 0094 LDCONST R5 K28
- 0x5818001D, // 0095 LDCONST R6 K29
- 0x7C0C0600, // 0096 CALL R3 3
- 0x80000000, // 0097 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_operational_discovery
-********************************************************************/
-be_local_closure(Matter_Device_start_operational_discovery, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(mdns),
- /* K2 */ be_nested_str_weak(stop_basic_commissioning),
- /* K3 */ be_nested_str_weak(root_w0),
- /* K4 */ be_nested_str_weak(root_L),
- /* K5 */ be_nested_str_weak(mdns_announce_op_discovery),
- }),
- be_str_weak(start_operational_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
- 0x7C100200, // 0003 CALL R4 1
- 0x4C100000, // 0004 LDNIL R4
- 0x90020604, // 0005 SETMBR R0 K3 R4
- 0x4C100000, // 0006 LDNIL R4
- 0x90020804, // 0007 SETMBR R0 K4 R4
- 0x8C100105, // 0008 GETMET R4 R0 K5
- 0x5C180200, // 0009 MOVE R6 R1
- 0x7C100400, // 000A CALL R4 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: _mdns_announce_hostname
********************************************************************/
@@ -1033,99 +611,53 @@ be_local_closure(Matter_Device__mdns_announce_hostname, /* name */
/********************************************************************
-** Solidified function: bridge_remove_endpoint
+** Solidified function: conf_to_log
********************************************************************/
-be_local_closure(Matter_Device_bridge_remove_endpoint, /* name */
+be_local_closure(Matter_Device_conf_to_log, /* name */
be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
- 2, /* varg */
+ 9, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(plugins_config),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(log),
- /* K5 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20),
- /* K6 */ be_const_int(3),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(remove),
- /* K10 */ be_nested_str_weak(plugins_persist),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(plugins),
- /* K13 */ be_nested_str_weak(get_endpoint),
- /* K14 */ be_const_int(1),
- /* K15 */ be_nested_str_weak(clean_remotes),
- /* K16 */ be_nested_str_weak(save_param),
- /* K17 */ be_nested_str_weak(signal_endpoints_changed),
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_const_class(be_class_Matter_Device),
+ /* K1 */ be_nested_str_weak(),
+ /* K2 */ be_nested_str_weak(k2l),
+ /* K3 */ be_nested_str_weak(type),
+ /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s),
+ /* K5 */ be_nested_str_weak(stop_iteration),
}),
- be_str_weak(bridge_remove_endpoint),
+ be_str_weak(conf_to_log),
&be_const_str_solidified,
- ( &(const binstruction[58]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x600C0008, // 0001 GETGBL R3 G8
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x4C100000, // 0004 LDNIL R4
- 0x4C140000, // 0005 LDNIL R5
- 0x88180101, // 0006 GETMBR R6 R0 K1
- 0x8C180D02, // 0007 GETMET R6 R6 K2
- 0x5C200600, // 0008 MOVE R8 R3
- 0x7C180400, // 0009 CALL R6 2
- 0x741A0005, // 000A JMPT R6 #0011
- 0xB81A0600, // 000B GETNGBL R6 K3
- 0x8C180D04, // 000C GETMET R6 R6 K4
- 0x00220A03, // 000D ADD R8 K5 R3
- 0x58240006, // 000E LDCONST R9 K6
- 0x7C180600, // 000F CALL R6 3
- 0x80000C00, // 0010 RET 0
- 0xB81A0600, // 0011 GETNGBL R6 K3
- 0x8C180D04, // 0012 GETMET R6 R6 K4
- 0x60200018, // 0013 GETGBL R8 G24
- 0x58240007, // 0014 LDCONST R9 K7
- 0x5C280200, // 0015 MOVE R10 R1
- 0x7C200400, // 0016 CALL R8 2
- 0x58240008, // 0017 LDCONST R9 K8
- 0x7C180600, // 0018 CALL R6 3
- 0x88180101, // 0019 GETMBR R6 R0 K1
- 0x8C180D09, // 001A GETMET R6 R6 K9
- 0x5C200600, // 001B MOVE R8 R3
- 0x7C180400, // 001C CALL R6 2
- 0x50180200, // 001D LDBOOL R6 1 0
- 0x90021406, // 001E SETMBR R0 K10 R6
- 0x5818000B, // 001F LDCONST R6 K11
- 0x601C000C, // 0020 GETGBL R7 G12
- 0x8820010C, // 0021 GETMBR R8 R0 K12
- 0x7C1C0200, // 0022 CALL R7 1
- 0x141C0C07, // 0023 LT R7 R6 R7
- 0x781E000D, // 0024 JMPF R7 #0033
- 0x881C010C, // 0025 GETMBR R7 R0 K12
- 0x941C0E06, // 0026 GETIDX R7 R7 R6
- 0x8C1C0F0D, // 0027 GETMET R7 R7 K13
- 0x7C1C0200, // 0028 CALL R7 1
- 0x1C1C0207, // 0029 EQ R7 R1 R7
- 0x781E0005, // 002A JMPF R7 #0031
- 0x881C010C, // 002B GETMBR R7 R0 K12
- 0x8C1C0F09, // 002C GETMET R7 R7 K9
- 0x5C240C00, // 002D MOVE R9 R6
- 0x7C1C0400, // 002E CALL R7 2
- 0x70020002, // 002F JMP #0033
- 0x70020000, // 0030 JMP #0032
- 0x00180D0E, // 0031 ADD R6 R6 K14
- 0x7001FFEC, // 0032 JMP #0020
- 0x8C1C010F, // 0033 GETMET R7 R0 K15
- 0x7C1C0200, // 0034 CALL R7 1
- 0x8C1C0110, // 0035 GETMET R7 R0 K16
- 0x7C1C0200, // 0036 CALL R7 1
- 0x8C1C0111, // 0037 GETMET R7 R0 K17
- 0x7C1C0200, // 0038 CALL R7 1
- 0x80000000, // 0039 RET 0
+ ( &(const binstruction[24]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x58080001, // 0001 LDCONST R2 K1
+ 0x600C0010, // 0002 GETGBL R3 G16
+ 0x8C100302, // 0003 GETMET R4 R1 K2
+ 0x5C180000, // 0004 MOVE R6 R0
+ 0x7C100400, // 0005 CALL R4 2
+ 0x7C0C0200, // 0006 CALL R3 1
+ 0xA802000B, // 0007 EXBLK 0 #0014
+ 0x5C100600, // 0008 MOVE R4 R3
+ 0x7C100000, // 0009 CALL R4 0
+ 0x1C140903, // 000A EQ R5 R4 K3
+ 0x78160000, // 000B JMPF R5 #000D
+ 0x7001FFFA, // 000C JMP #0008
+ 0x60140018, // 000D GETGBL R5 G24
+ 0x58180004, // 000E LDCONST R6 K4
+ 0x5C1C0800, // 000F MOVE R7 R4
+ 0x94200004, // 0010 GETIDX R8 R0 R4
+ 0x7C140600, // 0011 CALL R5 3
+ 0x00080405, // 0012 ADD R2 R2 R5
+ 0x7001FFF3, // 0013 JMP #0008
+ 0x580C0005, // 0014 LDCONST R3 K5
+ 0xAC0C0200, // 0015 CATCH R3 1 0
+ 0xB0080000, // 0016 RAISE 2 R0 R0
+ 0x80040400, // 0017 RET 1 R2
})
)
);
@@ -1133,11 +665,140 @@ be_local_closure(Matter_Device_bridge_remove_endpoint, /* name */
/********************************************************************
-** Solidified function: find_plugin_by_endpoint
+** Solidified function: invoke_request
********************************************************************/
-be_local_closure(Matter_Device_find_plugin_by_endpoint, /* name */
+be_local_closure(Matter_Device_invoke_request, /* name */
be_nested_proto(
- 6, /* nstack */
+ 12, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(endpoint),
+ /* K2 */ be_nested_str_weak(plugins),
+ /* K3 */ be_nested_str_weak(invoke_request),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(status),
+ /* K6 */ be_nested_str_weak(matter),
+ /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
+ }),
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[24]) { /* code */
+ 0x58100000, // 0000 LDCONST R4 K0
+ 0x88140701, // 0001 GETMBR R5 R3 K1
+ 0x6018000C, // 0002 GETGBL R6 G12
+ 0x881C0102, // 0003 GETMBR R7 R0 K2
+ 0x7C180200, // 0004 CALL R6 1
+ 0x14180806, // 0005 LT R6 R4 R6
+ 0x781A000C, // 0006 JMPF R6 #0014
+ 0x88180102, // 0007 GETMBR R6 R0 K2
+ 0x94180C04, // 0008 GETIDX R6 R6 R4
+ 0x881C0D01, // 0009 GETMBR R7 R6 K1
+ 0x1C1C0E05, // 000A EQ R7 R7 R5
+ 0x781E0005, // 000B JMPF R7 #0012
+ 0x8C1C0D03, // 000C GETMET R7 R6 K3
+ 0x5C240200, // 000D MOVE R9 R1
+ 0x5C280400, // 000E MOVE R10 R2
+ 0x5C2C0600, // 000F MOVE R11 R3
+ 0x7C1C0800, // 0010 CALL R7 4
+ 0x80040E00, // 0011 RET 1 R7
+ 0x00100904, // 0012 ADD R4 R4 K4
+ 0x7001FFED, // 0013 JMP #0002
+ 0xB81A0C00, // 0014 GETNGBL R6 K6
+ 0x88180D07, // 0015 GETMBR R6 R6 K7
+ 0x900E0A06, // 0016 SETMBR R3 K5 R6
+ 0x80000000, // 0017 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: MtrInfo
+********************************************************************/
+be_local_closure(Matter_Device_MtrInfo, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(),
+ /* K1 */ be_nested_str_weak(plugins),
+ /* K2 */ be_nested_str_weak(MtrInfo_one),
+ /* K3 */ be_nested_str_weak(endpoint),
+ /* K4 */ be_nested_str_weak(stop_iteration),
+ /* K5 */ be_nested_str_weak(int),
+ /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(resp_cmnd_done),
+ }),
+ be_str_weak(MtrInfo),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0x1C140700, // 0000 EQ R5 R3 K0
+ 0x7815FFFF, // 0001 JMPF R5 #0002
+ 0x1C140700, // 0002 EQ R5 R3 K0
+ 0x7816000D, // 0003 JMPF R5 #0012
+ 0x60140010, // 0004 GETGBL R5 G16
+ 0x88180101, // 0005 GETMBR R6 R0 K1
+ 0x7C140200, // 0006 CALL R5 1
+ 0xA8020005, // 0007 EXBLK 0 #000E
+ 0x5C180A00, // 0008 MOVE R6 R5
+ 0x7C180000, // 0009 CALL R6 0
+ 0x8C1C0102, // 000A GETMET R7 R0 K2
+ 0x88240D03, // 000B GETMBR R9 R6 K3
+ 0x7C1C0400, // 000C CALL R7 2
+ 0x7001FFF9, // 000D JMP #0008
+ 0x58140004, // 000E LDCONST R5 K4
+ 0xAC140200, // 000F CATCH R5 1 0
+ 0xB0080000, // 0010 RAISE 2 R0 R0
+ 0x70020011, // 0011 JMP #0024
+ 0x60140004, // 0012 GETGBL R5 G4
+ 0x5C180800, // 0013 MOVE R6 R4
+ 0x7C140200, // 0014 CALL R5 1
+ 0x1C140B05, // 0015 EQ R5 R5 K5
+ 0x78160003, // 0016 JMPF R5 #001B
+ 0x8C140102, // 0017 GETMET R5 R0 K2
+ 0x5C1C0800, // 0018 MOVE R7 R4
+ 0x7C140400, // 0019 CALL R5 2
+ 0x70020008, // 001A JMP #0024
+ 0x8C140106, // 001B GETMET R5 R0 K6
+ 0x5C1C0600, // 001C MOVE R7 R3
+ 0x7C140400, // 001D CALL R5 2
+ 0x4C180000, // 001E LDNIL R6
+ 0x20180A06, // 001F NE R6 R5 R6
+ 0x781A0002, // 0020 JMPF R6 #0024
+ 0x8C180102, // 0021 GETMET R6 R0 K2
+ 0x88200B03, // 0022 GETMBR R8 R5 K3
+ 0x7C180400, // 0023 CALL R6 2
+ 0xB8160E00, // 0024 GETNGBL R5 K7
+ 0x8C140B08, // 0025 GETMET R5 R5 K8
+ 0x7C140200, // 0026 CALL R5 1
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_plugin_class_displayname
+********************************************************************/
+be_local_closure(Matter_Device_get_plugin_class_displayname, /* name */
+ be_nested_proto(
+ 5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1146,484 +807,23 @@ be_local_closure(Matter_Device_find_plugin_by_endpoint, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_nested_str_weak(get_endpoint),
- /* K3 */ be_const_int(1),
+ /* K0 */ be_nested_str_weak(plugins_classes),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(DISPLAY_NAME),
+ /* K3 */ be_nested_str_weak(),
}),
- be_str_weak(find_plugin_by_endpoint),
+ be_str_weak(get_plugin_class_displayname),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x600C000C, // 0001 GETGBL R3 G12
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x140C0403, // 0004 LT R3 R2 R3
- 0x780E0008, // 0005 JMPF R3 #000F
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x940C0602, // 0007 GETIDX R3 R3 R2
- 0x8C100702, // 0008 GETMET R4 R3 K2
- 0x7C100200, // 0009 CALL R4 1
- 0x1C100801, // 000A EQ R4 R4 R1
- 0x78120000, // 000B JMPF R4 #000D
- 0x80040600, // 000C RET 1 R3
- 0x00080503, // 000D ADD R2 R2 K3
- 0x7001FFF1, // 000E JMP #0001
- 0x4C0C0000, // 000F LDNIL R3
- 0x80040600, // 0010 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_mdns_announce_hostnames
-********************************************************************/
-be_local_closure(Matter_Device_start_mdns_announce_hostnames, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Wifi_X23Connected),
- /* K4 */ be_nested_str_weak(matter_mdns_host),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x7C000400, // 0003 CALL R0 2
- 0xB8020200, // 0004 GETNGBL R0 K1
- 0x8C000102, // 0005 GETMET R0 R0 K2
- 0x58080003, // 0006 LDCONST R2 K3
- 0x580C0004, // 0007 LDCONST R3 K4
- 0x7C000600, // 0008 CALL R0 3
- 0x80000000, // 0009 RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Eth_X23Connected),
- /* K4 */ be_nested_str_weak(matter_mdns_host),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x50080200, // 0002 LDBOOL R2 1 0
- 0x7C000400, // 0003 CALL R0 2
- 0xB8020200, // 0004 GETNGBL R0 K1
- 0x8C000102, // 0005 GETMET R0 R0 K2
- 0x58080003, // 0006 LDCONST R2 K3
- 0x580C0004, // 0007 LDCONST R3 K4
- 0x7C000600, // 0008 CALL R0 3
- 0x80000000, // 0009 RET 0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(wifi),
- /* K2 */ be_nested_str_weak(up),
- /* K3 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K4 */ be_nested_str_weak(add_rule),
- /* K5 */ be_nested_str_weak(Wifi_X23Connected),
- /* K6 */ be_nested_str_weak(matter_mdns_host),
- /* K7 */ be_nested_str_weak(eth),
- /* K8 */ be_nested_str_weak(Eth_X23Connected),
- }),
- be_str_weak(start_mdns_announce_hostnames),
- &be_const_str_solidified,
- ( &(const binstruction[32]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x94040302, // 0003 GETIDX R1 R1 K2
- 0x78060003, // 0004 JMPF R1 #0009
- 0x8C040103, // 0005 GETMET R1 R0 K3
- 0x500C0000, // 0006 LDBOOL R3 0 0
- 0x7C040400, // 0007 CALL R1 2
- 0x70020005, // 0008 JMP #000F
- 0xB8060000, // 0009 GETNGBL R1 K0
- 0x8C040304, // 000A GETMET R1 R1 K4
- 0x580C0005, // 000B LDCONST R3 K5
- 0x84100000, // 000C CLOSURE R4 P0
- 0x58140006, // 000D LDCONST R5 K6
- 0x7C040800, // 000E CALL R1 4
- 0xB8060000, // 000F GETNGBL R1 K0
- 0x8C040307, // 0010 GETMET R1 R1 K7
- 0x7C040200, // 0011 CALL R1 1
- 0x94040302, // 0012 GETIDX R1 R1 K2
- 0x78060003, // 0013 JMPF R1 #0018
- 0x8C040103, // 0014 GETMET R1 R0 K3
- 0x500C0200, // 0015 LDBOOL R3 1 0
- 0x7C040400, // 0016 CALL R1 2
- 0x70020005, // 0017 JMP #001E
- 0xB8060000, // 0018 GETNGBL R1 K0
- 0x8C040304, // 0019 GETMET R1 R1 K4
- 0x580C0008, // 001A LDCONST R3 K8
- 0x84100001, // 001B CLOSURE R4 P1
- 0x58140006, // 001C LDCONST R5 K6
- 0x7C040800, // 001D CALL R1 4
- 0xA0000000, // 001E CLOSE R0
- 0x80000000, // 001F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _start_udp
-********************************************************************/
-be_local_closure(Matter_Device__start_udp, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(msg_received),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x8C0C0700, // 0001 GETMET R3 R3 K0
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(UDPServer),
- /* K7 */ be_nested_str_weak(),
- /* K8 */ be_nested_str_weak(start),
- }),
- be_str_weak(_start_udp),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
+ ( &(const binstruction[ 9]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x780A0000, // 0001 JMPF R2 #0003
- 0x80000400, // 0002 RET 0
- 0x4C080000, // 0003 LDNIL R2
- 0x1C080202, // 0004 EQ R2 R1 R2
- 0x780A0000, // 0005 JMPF R2 #0007
- 0x540615A3, // 0006 LDINT R1 5540
- 0xB80A0200, // 0007 GETNGBL R2 K1
- 0x8C080502, // 0008 GETMET R2 R2 K2
- 0x60100008, // 0009 GETGBL R4 G8
- 0x5C140200, // 000A MOVE R5 R1
- 0x7C100200, // 000B CALL R4 1
- 0x00120604, // 000C ADD R4 K3 R4
- 0x58140004, // 000D LDCONST R5 K4
- 0x7C080600, // 000E CALL R2 3
- 0xB80A0A00, // 000F GETNGBL R2 K5
- 0x8C080506, // 0010 GETMET R2 R2 K6
- 0x5C100000, // 0011 MOVE R4 R0
- 0x58140007, // 0012 LDCONST R5 K7
- 0x5C180200, // 0013 MOVE R6 R1
- 0x7C080800, // 0014 CALL R2 4
- 0x90020002, // 0015 SETMBR R0 K0 R2
- 0x88080100, // 0016 GETMBR R2 R0 K0
- 0x8C080508, // 0017 GETMET R2 R2 K8
- 0x84100000, // 0018 CLOSURE R4 P0
- 0x7C080400, // 0019 CALL R2 2
- 0xA0000000, // 001A CLOSE R0
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: signal_endpoints_changed
-********************************************************************/
-be_local_closure(Matter_Device_signal_endpoints_changed, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(3),
- }),
- be_str_weak(signal_endpoints_changed),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x5412001C, // 0002 LDINT R4 29
- 0x58140002, // 0003 LDCONST R5 K2
- 0x50180000, // 0004 LDBOOL R6 0 0
- 0x7C040A00, // 0005 CALL R1 5
- 0x8C040100, // 0006 GETMET R1 R0 K0
- 0x540EFEFF, // 0007 LDINT R3 65280
- 0x5412001C, // 0008 LDINT R4 29
- 0x58140002, // 0009 LDCONST R5 K2
- 0x50180000, // 000A LDBOOL R6 0 0
- 0x7C040A00, // 000B CALL R1 5
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: sort_distinct
-********************************************************************/
-be_local_closure(Matter_Device_sort_distinct, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_nested_str_weak(remove),
- }),
- be_str_weak(sort_distinct),
- &be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080010, // 0001 GETGBL R2 G16
- 0x600C000C, // 0002 GETGBL R3 G12
- 0x5C100000, // 0003 MOVE R4 R0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x040C0701, // 0005 SUB R3 R3 K1
- 0x400E0203, // 0006 CONNECT R3 K1 R3
- 0x7C080200, // 0007 CALL R2 1
- 0xA8020010, // 0008 EXBLK 0 #001A
- 0x5C0C0400, // 0009 MOVE R3 R2
- 0x7C0C0000, // 000A CALL R3 0
- 0x94100003, // 000B GETIDX R4 R0 R3
- 0x5C140600, // 000C MOVE R5 R3
- 0x24180B02, // 000D GT R6 R5 K2
- 0x781A0008, // 000E JMPF R6 #0018
- 0x04180B01, // 000F SUB R6 R5 K1
- 0x94180006, // 0010 GETIDX R6 R0 R6
- 0x24180C04, // 0011 GT R6 R6 R4
- 0x781A0004, // 0012 JMPF R6 #0018
- 0x04180B01, // 0013 SUB R6 R5 K1
- 0x94180006, // 0014 GETIDX R6 R0 R6
- 0x98000A06, // 0015 SETIDX R0 R5 R6
- 0x04140B01, // 0016 SUB R5 R5 K1
- 0x7001FFF4, // 0017 JMP #000D
- 0x98000A04, // 0018 SETIDX R0 R5 R4
- 0x7001FFEE, // 0019 JMP #0009
- 0x58080003, // 001A LDCONST R2 K3
- 0xAC080200, // 001B CATCH R2 1 0
- 0xB0080000, // 001C RAISE 2 R0 R0
- 0x58080001, // 001D LDCONST R2 K1
- 0x600C000C, // 001E GETGBL R3 G12
- 0x5C100000, // 001F MOVE R4 R0
- 0x7C0C0200, // 0020 CALL R3 1
- 0x180C0701, // 0021 LE R3 R3 K1
- 0x780E0000, // 0022 JMPF R3 #0024
- 0x80040000, // 0023 RET 1 R0
- 0x940C0102, // 0024 GETIDX R3 R0 K2
- 0x6010000C, // 0025 GETGBL R4 G12
- 0x5C140000, // 0026 MOVE R5 R0
- 0x7C100200, // 0027 CALL R4 1
- 0x14100404, // 0028 LT R4 R2 R4
- 0x78120009, // 0029 JMPF R4 #0034
- 0x94100002, // 002A GETIDX R4 R0 R2
- 0x1C100803, // 002B EQ R4 R4 R3
- 0x78120003, // 002C JMPF R4 #0031
- 0x8C100104, // 002D GETMET R4 R0 K4
- 0x5C180400, // 002E MOVE R6 R2
- 0x7C100400, // 002F CALL R4 2
- 0x70020001, // 0030 JMP #0033
- 0x940C0002, // 0031 GETIDX R3 R0 R2
- 0x00080501, // 0032 ADD R2 R2 K1
- 0x7001FFF0, // 0033 JMP #0025
- 0x80040000, // 0034 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_root_commissioning_open
-********************************************************************/
-be_local_closure(Matter_Device_is_root_commissioning_open, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(commissioning_admin_fabric),
- }),
- be_str_weak(is_root_commissioning_open),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x78060003, // 0003 JMPF R1 #0008
- 0x88040101, // 0004 GETMBR R1 R0 K1
- 0x4C080000, // 0005 LDNIL R2
- 0x1C040202, // 0006 EQ R1 R1 R2
- 0x74060000, // 0007 JMPT R1 #0009
- 0x50040001, // 0008 LDBOOL R1 0 1
- 0x50040200, // 0009 LDBOOL R1 1 0
- 0x80040200, // 000A RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: register_http_remote
-********************************************************************/
-be_local_closure(Matter_Device_register_http_remote, /* name */
- be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(http_remotes),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(get_timeout),
- /* K3 */ be_nested_str_weak(set_timeout),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(HTTP_remote),
- /* K6 */ be_nested_str_weak(plugins_config_remotes),
- /* K7 */ be_nested_str_weak(set_info),
- }),
- be_str_weak(register_http_remote),
- &be_const_str_solidified,
- ( &(const binstruction[42]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x4C100000, // 0001 LDNIL R4
- 0x1C0C0604, // 0002 EQ R3 R3 R4
- 0x780E0002, // 0003 JMPF R3 #0007
- 0x600C0013, // 0004 GETGBL R3 G19
- 0x7C0C0000, // 0005 CALL R3 0
- 0x90020003, // 0006 SETMBR R0 K0 R3
- 0x4C0C0000, // 0007 LDNIL R3
- 0x88100100, // 0008 GETMBR R4 R0 K0
- 0x8C100901, // 0009 GETMET R4 R4 K1
- 0x5C180200, // 000A MOVE R6 R1
- 0x7C100400, // 000B CALL R4 2
- 0x78120009, // 000C JMPF R4 #0017
- 0x88100100, // 000D GETMBR R4 R0 K0
- 0x940C0801, // 000E GETIDX R3 R4 R1
- 0x8C140702, // 000F GETMET R5 R3 K2
- 0x7C140200, // 0010 CALL R5 1
- 0x14140405, // 0011 LT R5 R2 R5
- 0x78160002, // 0012 JMPF R5 #0016
- 0x8C140703, // 0013 GETMET R5 R3 K3
- 0x5C1C0400, // 0014 MOVE R7 R2
- 0x7C140400, // 0015 CALL R5 2
- 0x70020011, // 0016 JMP #0029
- 0xB8120800, // 0017 GETNGBL R4 K4
- 0x8C100905, // 0018 GETMET R4 R4 K5
- 0x5C180000, // 0019 MOVE R6 R0
- 0x5C1C0200, // 001A MOVE R7 R1
- 0x5C200400, // 001B MOVE R8 R2
- 0x7C100800, // 001C CALL R4 4
- 0x5C0C0800, // 001D MOVE R3 R4
- 0x88100106, // 001E GETMBR R4 R0 K6
- 0x8C100901, // 001F GETMET R4 R4 K1
- 0x5C180200, // 0020 MOVE R6 R1
- 0x7C100400, // 0021 CALL R4 2
- 0x78120003, // 0022 JMPF R4 #0027
- 0x8C100707, // 0023 GETMET R4 R3 K7
- 0x88180106, // 0024 GETMBR R6 R0 K6
- 0x94180C01, // 0025 GETIDX R6 R6 R1
- 0x7C100400, // 0026 CALL R4 2
- 0x88100100, // 0027 GETMBR R4 R0 K0
- 0x98100203, // 0028 SETIDX R4 R1 R3
- 0x80040600, // 0029 RET 1 R3
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x780A0001, // 0004 JMPF R2 #0007
+ 0x880C0502, // 0005 GETMBR R3 R2 K2
+ 0x70020000, // 0006 JMP #0008
+ 0x580C0003, // 0007 LDCONST R3 K3
+ 0x80040600, // 0008 RET 1 R3
})
)
);
@@ -1746,944 +946,73 @@ be_local_closure(Matter_Device_bridge_add_endpoint, /* name */
/********************************************************************
-** Solidified function: mdns_remove_op_discovery_all_fabrics
+** Solidified function: register_http_remote
********************************************************************/
-be_local_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(active_fabrics),
- /* K2 */ be_nested_str_weak(get_device_id),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(mdns_remove_op_discovery),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(mdns_remove_op_discovery_all_fabrics),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0x60040010, // 0000 GETGBL R1 G16
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x7C040200, // 0004 CALL R1 1
- 0xA802000B, // 0005 EXBLK 0 #0012
- 0x5C080200, // 0006 MOVE R2 R1
- 0x7C080000, // 0007 CALL R2 0
- 0x8C0C0502, // 0008 GETMET R3 R2 K2
- 0x7C0C0200, // 0009 CALL R3 1
- 0x780E0005, // 000A JMPF R3 #0011
- 0x8C0C0503, // 000B GETMET R3 R2 K3
- 0x7C0C0200, // 000C CALL R3 1
- 0x780E0002, // 000D JMPF R3 #0011
- 0x8C0C0104, // 000E GETMET R3 R0 K4
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x7001FFF3, // 0011 JMP #0006
- 0x58040005, // 0012 LDCONST R1 K5
- 0xAC040200, // 0013 CATCH R1 1 0
- 0xB0080000, // 0014 RAISE 2 R0 R0
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: load_param
-********************************************************************/
-be_local_closure(Matter_Device_load_param, /* name */
- be_nested_proto(
- 11, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[35]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(FILENAME),
- /* K2 */ be_nested_str_weak(read),
- /* K3 */ be_nested_str_weak(close),
- /* K4 */ be_nested_str_weak(json),
- /* K5 */ be_nested_str_weak(load),
- /* K6 */ be_nested_str_weak(root_discriminator),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(distinguish),
- /* K9 */ be_nested_str_weak(root_passcode),
- /* K10 */ be_nested_str_weak(passcode),
- /* K11 */ be_nested_str_weak(ipv4only),
- /* K12 */ be_nested_str_weak(disable_bridge_mode),
- /* K13 */ be_nested_str_weak(next_ep),
- /* K14 */ be_nested_str_weak(nextep),
- /* K15 */ be_nested_str_weak(plugins_config),
- /* K16 */ be_nested_str_weak(config),
- /* K17 */ be_nested_str_weak(tasmota),
- /* K18 */ be_nested_str_weak(log),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20load_config_X20_X3D_X20),
- /* K20 */ be_const_int(3),
- /* K21 */ be_nested_str_weak(adjust_next_ep),
- /* K22 */ be_nested_str_weak(plugins_persist),
- /* K23 */ be_nested_str_weak(plugins_config_remotes),
- /* K24 */ be_nested_str_weak(remotes),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20),
- /* K26 */ be_nested_str_weak(io_error),
- /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A),
- /* K28 */ be_nested_str_weak(_X7C),
- /* K29 */ be_const_int(2),
- /* K30 */ be_nested_str_weak(random),
- /* K31 */ be_nested_str_weak(get),
- /* K32 */ be_const_int(0),
- /* K33 */ be_nested_str_weak(generate_random_passcode),
- /* K34 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(load_param),
- &be_const_str_solidified,
- ( &(const binstruction[127]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA802004D, // 0001 EXBLK 0 #0050
- 0x60080011, // 0002 GETGBL R2 G17
- 0x880C0101, // 0003 GETMBR R3 R0 K1
- 0x7C080200, // 0004 CALL R2 1
- 0x8C0C0502, // 0005 GETMET R3 R2 K2
- 0x7C0C0200, // 0006 CALL R3 1
- 0x8C100503, // 0007 GETMET R4 R2 K3
- 0x7C100200, // 0008 CALL R4 1
- 0xA4120800, // 0009 IMPORT R4 K4
- 0x8C140905, // 000A GETMET R5 R4 K5
- 0x5C1C0600, // 000B MOVE R7 R3
- 0x7C140400, // 000C CALL R5 2
- 0x8C180B07, // 000D GETMET R6 R5 K7
- 0x58200008, // 000E LDCONST R8 K8
- 0x88240106, // 000F GETMBR R9 R0 K6
- 0x7C180600, // 0010 CALL R6 3
- 0x90020C06, // 0011 SETMBR R0 K6 R6
- 0x8C180B07, // 0012 GETMET R6 R5 K7
- 0x5820000A, // 0013 LDCONST R8 K10
- 0x88240109, // 0014 GETMBR R9 R0 K9
- 0x7C180600, // 0015 CALL R6 3
- 0x90021206, // 0016 SETMBR R0 K9 R6
- 0x60180017, // 0017 GETGBL R6 G23
- 0x8C1C0B07, // 0018 GETMET R7 R5 K7
- 0x5824000B, // 0019 LDCONST R9 K11
- 0x50280000, // 001A LDBOOL R10 0 0
- 0x7C1C0600, // 001B CALL R7 3
- 0x7C180200, // 001C CALL R6 1
- 0x90021606, // 001D SETMBR R0 K11 R6
- 0x60180017, // 001E GETGBL R6 G23
- 0x8C1C0B07, // 001F GETMET R7 R5 K7
- 0x5824000C, // 0020 LDCONST R9 K12
- 0x50280000, // 0021 LDBOOL R10 0 0
- 0x7C1C0600, // 0022 CALL R7 3
- 0x7C180200, // 0023 CALL R6 1
- 0x90021806, // 0024 SETMBR R0 K12 R6
- 0x8C180B07, // 0025 GETMET R6 R5 K7
- 0x5820000E, // 0026 LDCONST R8 K14
- 0x8824010D, // 0027 GETMBR R9 R0 K13
- 0x7C180600, // 0028 CALL R6 3
- 0x90021A06, // 0029 SETMBR R0 K13 R6
- 0x8C180B07, // 002A GETMET R6 R5 K7
- 0x58200010, // 002B LDCONST R8 K16
- 0x7C180400, // 002C CALL R6 2
- 0x90021E06, // 002D SETMBR R0 K15 R6
- 0x8818010F, // 002E GETMBR R6 R0 K15
- 0x4C1C0000, // 002F LDNIL R7
- 0x20180C07, // 0030 NE R6 R6 R7
- 0x781A000B, // 0031 JMPF R6 #003E
- 0xB81A2200, // 0032 GETNGBL R6 K17
- 0x8C180D12, // 0033 GETMET R6 R6 K18
- 0x60200008, // 0034 GETGBL R8 G8
- 0x8824010F, // 0035 GETMBR R9 R0 K15
- 0x7C200200, // 0036 CALL R8 1
- 0x00222608, // 0037 ADD R8 K19 R8
- 0x58240014, // 0038 LDCONST R9 K20
- 0x7C180600, // 0039 CALL R6 3
- 0x8C180115, // 003A GETMET R6 R0 K21
- 0x7C180200, // 003B CALL R6 1
- 0x50180200, // 003C LDBOOL R6 1 0
- 0x90022C06, // 003D SETMBR R0 K22 R6
- 0x8C180B07, // 003E GETMET R6 R5 K7
- 0x58200018, // 003F LDCONST R8 K24
- 0x60240013, // 0040 GETGBL R9 G19
- 0x7C240000, // 0041 CALL R9 0
- 0x7C180600, // 0042 CALL R6 3
- 0x90022E06, // 0043 SETMBR R0 K23 R6
- 0x88180117, // 0044 GETMBR R6 R0 K23
- 0x781A0007, // 0045 JMPF R6 #004E
- 0xB81A2200, // 0046 GETNGBL R6 K17
- 0x8C180D12, // 0047 GETMET R6 R6 K18
- 0x60200008, // 0048 GETGBL R8 G8
- 0x88240117, // 0049 GETMBR R9 R0 K23
- 0x7C200200, // 004A CALL R8 1
- 0x00223208, // 004B ADD R8 K25 R8
- 0x58240014, // 004C LDCONST R9 K20
- 0x7C180600, // 004D CALL R6 3
- 0xA8040001, // 004E EXBLK 1 1
- 0x70020012, // 004F JMP #0063
- 0xAC080002, // 0050 CATCH R2 0 2
- 0x7002000F, // 0051 JMP #0062
- 0x2010051A, // 0052 NE R4 R2 K26
- 0x7812000C, // 0053 JMPF R4 #0061
- 0xB8122200, // 0054 GETNGBL R4 K17
- 0x8C100912, // 0055 GETMET R4 R4 K18
- 0x60180008, // 0056 GETGBL R6 G8
- 0x5C1C0400, // 0057 MOVE R7 R2
- 0x7C180200, // 0058 CALL R6 1
- 0x001A3606, // 0059 ADD R6 K27 R6
- 0x00180D1C, // 005A ADD R6 R6 K28
- 0x601C0008, // 005B GETGBL R7 G8
- 0x5C200600, // 005C MOVE R8 R3
- 0x7C1C0200, // 005D CALL R7 1
- 0x00180C07, // 005E ADD R6 R6 R7
- 0x581C001D, // 005F LDCONST R7 K29
- 0x7C100600, // 0060 CALL R4 3
- 0x70020000, // 0061 JMP #0063
- 0xB0080000, // 0062 RAISE 2 R0 R0
- 0x50080000, // 0063 LDBOOL R2 0 0
- 0x880C0106, // 0064 GETMBR R3 R0 K6
- 0x4C100000, // 0065 LDNIL R4
- 0x1C0C0604, // 0066 EQ R3 R3 R4
- 0x780E000A, // 0067 JMPF R3 #0073
- 0x8C0C031E, // 0068 GETMET R3 R1 K30
- 0x5814001D, // 0069 LDCONST R5 K29
- 0x7C0C0400, // 006A CALL R3 2
- 0x8C0C071F, // 006B GETMET R3 R3 K31
- 0x58140020, // 006C LDCONST R5 K32
- 0x5818001D, // 006D LDCONST R6 K29
- 0x7C0C0600, // 006E CALL R3 3
- 0x54120FFE, // 006F LDINT R4 4095
- 0x2C0C0604, // 0070 AND R3 R3 R4
- 0x90020C03, // 0071 SETMBR R0 K6 R3
- 0x50080200, // 0072 LDBOOL R2 1 0
- 0x880C0109, // 0073 GETMBR R3 R0 K9
- 0x4C100000, // 0074 LDNIL R4
- 0x1C0C0604, // 0075 EQ R3 R3 R4
- 0x780E0003, // 0076 JMPF R3 #007B
- 0x8C0C0121, // 0077 GETMET R3 R0 K33
- 0x7C0C0200, // 0078 CALL R3 1
- 0x90021203, // 0079 SETMBR R0 K9 R3
- 0x50080200, // 007A LDBOOL R2 1 0
- 0x780A0001, // 007B JMPF R2 #007E
- 0x8C0C0122, // 007C GETMET R3 R0 K34
- 0x7C0C0200, // 007D CALL R3 1
- 0x80000000, // 007E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: attribute_updated
-********************************************************************/
-be_local_closure(Matter_Device_attribute_updated, /* name */
- be_nested_proto(
- 10, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Path),
- /* K2 */ be_nested_str_weak(endpoint),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_nested_str_weak(message_handler),
- /* K6 */ be_nested_str_weak(im),
- /* K7 */ be_nested_str_weak(subs_shop),
- /* K8 */ be_nested_str_weak(attribute_updated_ctx),
- }),
- be_str_weak(attribute_updated),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x1C140805, // 0001 EQ R5 R4 R5
- 0x78160000, // 0002 JMPF R5 #0004
- 0x50100000, // 0003 LDBOOL R4 0 0
- 0xB8160000, // 0004 GETNGBL R5 K0
- 0x8C140B01, // 0005 GETMET R5 R5 K1
- 0x7C140200, // 0006 CALL R5 1
- 0x90160401, // 0007 SETMBR R5 K2 R1
- 0x90160602, // 0008 SETMBR R5 K3 R2
- 0x90160803, // 0009 SETMBR R5 K4 R3
- 0x88180105, // 000A GETMBR R6 R0 K5
- 0x88180D06, // 000B GETMBR R6 R6 K6
- 0x88180D07, // 000C GETMBR R6 R6 K7
- 0x8C180D08, // 000D GETMET R6 R6 K8
- 0x5C200A00, // 000E MOVE R8 R5
- 0x5C240800, // 000F MOVE R9 R4
- 0x7C180600, // 0010 CALL R6 3
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: k2l
-********************************************************************/
-be_local_closure(Matter_Device_k2l, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(push),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(0),
- }),
- be_str_weak(k2l),
- &be_const_str_solidified,
- ( &(const binstruction[50]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0003, // 0004 EQ R3 R0 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x80040400, // 0006 RET 1 R2
- 0x600C0010, // 0007 GETGBL R3 G16
- 0x8C100101, // 0008 GETMET R4 R0 K1
- 0x7C100200, // 0009 CALL R4 1
- 0x7C0C0200, // 000A CALL R3 1
- 0xA8020005, // 000B EXBLK 0 #0012
- 0x5C100600, // 000C MOVE R4 R3
- 0x7C100000, // 000D CALL R4 0
- 0x8C140502, // 000E GETMET R5 R2 K2
- 0x5C1C0800, // 000F MOVE R7 R4
- 0x7C140400, // 0010 CALL R5 2
- 0x7001FFF9, // 0011 JMP #000C
- 0x580C0003, // 0012 LDCONST R3 K3
- 0xAC0C0200, // 0013 CATCH R3 1 0
- 0xB0080000, // 0014 RAISE 2 R0 R0
- 0x600C0010, // 0015 GETGBL R3 G16
- 0x6010000C, // 0016 GETGBL R4 G12
- 0x5C140400, // 0017 MOVE R5 R2
- 0x7C100200, // 0018 CALL R4 1
- 0x04100904, // 0019 SUB R4 R4 K4
- 0x40120804, // 001A CONNECT R4 K4 R4
- 0x7C0C0200, // 001B CALL R3 1
- 0xA8020010, // 001C EXBLK 0 #002E
- 0x5C100600, // 001D MOVE R4 R3
- 0x7C100000, // 001E CALL R4 0
- 0x94140404, // 001F GETIDX R5 R2 R4
- 0x5C180800, // 0020 MOVE R6 R4
- 0x241C0D05, // 0021 GT R7 R6 K5
- 0x781E0008, // 0022 JMPF R7 #002C
- 0x041C0D04, // 0023 SUB R7 R6 K4
- 0x941C0407, // 0024 GETIDX R7 R2 R7
- 0x241C0E05, // 0025 GT R7 R7 R5
- 0x781E0004, // 0026 JMPF R7 #002C
- 0x041C0D04, // 0027 SUB R7 R6 K4
- 0x941C0407, // 0028 GETIDX R7 R2 R7
- 0x98080C07, // 0029 SETIDX R2 R6 R7
- 0x04180D04, // 002A SUB R6 R6 K4
- 0x7001FFF4, // 002B JMP #0021
- 0x98080C05, // 002C SETIDX R2 R6 R5
- 0x7001FFEE, // 002D JMP #001D
- 0x580C0003, // 002E LDCONST R3 K3
- 0xAC0C0200, // 002F CATCH R3 1 0
- 0xB0080000, // 0030 RAISE 2 R0 R0
- 0x80040400, // 0031 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _compute_pbkdf
-********************************************************************/
-be_local_closure(Matter_Device__compute_pbkdf, /* name */
- be_nested_proto(
- 13, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(add),
- /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256),
- /* K3 */ be_nested_str_weak(derive),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(root_w0),
- /* K6 */ be_nested_str_weak(EC_P256),
- /* K7 */ be_nested_str_weak(mod),
- /* K8 */ be_nested_str_weak(root_L),
- /* K9 */ be_nested_str_weak(public_key),
- }),
- be_str_weak(_compute_pbkdf),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0x60140015, // 0001 GETGBL R5 G21
- 0x7C140000, // 0002 CALL R5 0
- 0x8C140B01, // 0003 GETMET R5 R5 K1
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x54220003, // 0005 LDINT R8 4
- 0x7C140600, // 0006 CALL R5 3
- 0x8C180902, // 0007 GETMET R6 R4 K2
- 0x7C180200, // 0008 CALL R6 1
- 0x8C180D03, // 0009 GETMET R6 R6 K3
- 0x5C200A00, // 000A MOVE R8 R5
- 0x5C240600, // 000B MOVE R9 R3
- 0x5C280400, // 000C MOVE R10 R2
- 0x542E004F, // 000D LDINT R11 80
- 0x7C180A00, // 000E CALL R6 5
- 0x541E0026, // 000F LDINT R7 39
- 0x401E0807, // 0010 CONNECT R7 K4 R7
- 0x941C0C07, // 0011 GETIDX R7 R6 R7
- 0x54220027, // 0012 LDINT R8 40
- 0x5426004E, // 0013 LDINT R9 79
- 0x40201009, // 0014 CONNECT R8 R8 R9
- 0x94200C08, // 0015 GETIDX R8 R6 R8
- 0x8C240906, // 0016 GETMET R9 R4 K6
- 0x7C240200, // 0017 CALL R9 1
- 0x8C241307, // 0018 GETMET R9 R9 K7
- 0x5C2C0E00, // 0019 MOVE R11 R7
- 0x7C240400, // 001A CALL R9 2
- 0x90020A09, // 001B SETMBR R0 K5 R9
- 0x8C240906, // 001C GETMET R9 R4 K6
- 0x7C240200, // 001D CALL R9 1
- 0x8C241307, // 001E GETMET R9 R9 K7
- 0x5C2C1000, // 001F MOVE R11 R8
- 0x7C240400, // 0020 CALL R9 2
- 0x8C280906, // 0021 GETMET R10 R4 K6
- 0x7C280200, // 0022 CALL R10 1
- 0x8C281509, // 0023 GETMET R10 R10 K9
- 0x5C301200, // 0024 MOVE R12 R9
- 0x7C280400, // 0025 CALL R10 2
- 0x9002100A, // 0026 SETMBR R0 K8 R10
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: register_commands
-********************************************************************/
-be_local_closure(Matter_Device_register_commands, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
- be_nested_proto(
- 10, /* nstack */
- 4, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(MtrJoin),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x68100000, // 0000 GETUPV R4 U0
- 0x8C100900, // 0001 GETMET R4 R4 K0
- 0x5C180000, // 0002 MOVE R6 R0
- 0x5C1C0200, // 0003 MOVE R7 R1
- 0x5C200400, // 0004 MOVE R8 R2
- 0x5C240600, // 0005 MOVE R9 R3
- 0x7C100A00, // 0006 CALL R4 5
- 0x80040800, // 0007 RET 1 R4
- })
- ),
- be_nested_proto(
- 10, /* nstack */
- 4, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(MtrUpdate),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x68100000, // 0000 GETUPV R4 U0
- 0x8C100900, // 0001 GETMET R4 R4 K0
- 0x5C180000, // 0002 MOVE R6 R0
- 0x5C1C0200, // 0003 MOVE R7 R1
- 0x5C200400, // 0004 MOVE R8 R2
- 0x5C240600, // 0005 MOVE R9 R3
- 0x7C100A00, // 0006 CALL R4 5
- 0x80040800, // 0007 RET 1 R4
- })
- ),
- be_nested_proto(
- 10, /* nstack */
- 4, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(MtrInfo),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x68100000, // 0000 GETUPV R4 U0
- 0x8C100900, // 0001 GETMET R4 R4 K0
- 0x5C180000, // 0002 MOVE R6 R0
- 0x5C1C0200, // 0003 MOVE R7 R1
- 0x5C200400, // 0004 MOVE R8 R2
- 0x5C240600, // 0005 MOVE R9 R3
- 0x7C100A00, // 0006 CALL R4 5
- 0x80040800, // 0007 RET 1 R4
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(add_cmd),
- /* K2 */ be_nested_str_weak(MtrJoin),
- /* K3 */ be_nested_str_weak(MtrUpdate),
- /* K4 */ be_nested_str_weak(MtrInfo),
- }),
- be_str_weak(register_commands),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x580C0002, // 0002 LDCONST R3 K2
- 0x84100000, // 0003 CLOSURE R4 P0
- 0x7C040600, // 0004 CALL R1 3
- 0xB8060000, // 0005 GETNGBL R1 K0
- 0x8C040301, // 0006 GETMET R1 R1 K1
- 0x580C0003, // 0007 LDCONST R3 K3
- 0x84100001, // 0008 CLOSURE R4 P1
- 0x7C040600, // 0009 CALL R1 3
- 0xB8060000, // 000A GETNGBL R1 K0
- 0x8C040301, // 000B GETMET R1 R1 K1
- 0x580C0004, // 000C LDCONST R3 K4
- 0x84100002, // 000D CLOSURE R4 P2
- 0x7C040600, // 000E CALL R1 3
- 0xA0000000, // 000F CLOSE R0
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Device_init, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(start),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Wifi_X23Connected),
- /* K4 */ be_nested_str_weak(matter_start),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0004, // 0006 LDCONST R3 K4
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(start),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Eth_X23Connected),
- /* K4 */ be_nested_str_weak(matter_start),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0004, // 0006 LDCONST R3 K4
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[44]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(get_option),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(MATTER_OPTION),
- /* K5 */ be_nested_str_weak(UI),
- /* K6 */ be_nested_str_weak(profiler),
- /* K7 */ be_nested_str_weak(Profiler),
- /* K8 */ be_nested_str_weak(started),
- /* K9 */ be_nested_str_weak(tick),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(plugins),
- /* K12 */ be_nested_str_weak(plugins_persist),
- /* K13 */ be_nested_str_weak(plugins_config_remotes),
- /* K14 */ be_nested_str_weak(vendorid),
- /* K15 */ be_nested_str_weak(VENDOR_ID),
- /* K16 */ be_nested_str_weak(productid),
- /* K17 */ be_nested_str_weak(PRODUCT_ID),
- /* K18 */ be_nested_str_weak(root_iterations),
- /* K19 */ be_nested_str_weak(PBKDF_ITERATIONS),
- /* K20 */ be_nested_str_weak(next_ep),
- /* K21 */ be_const_int(1),
- /* K22 */ be_nested_str_weak(root_salt),
- /* K23 */ be_nested_str_weak(random),
- /* K24 */ be_nested_str_weak(ipv4only),
- /* K25 */ be_nested_str_weak(disable_bridge_mode),
- /* K26 */ be_nested_str_weak(load_param),
- /* K27 */ be_nested_str_weak(sessions),
- /* K28 */ be_nested_str_weak(Session_Store),
- /* K29 */ be_nested_str_weak(load_fabrics),
- /* K30 */ be_nested_str_weak(message_handler),
- /* K31 */ be_nested_str_weak(MessageHandler),
- /* K32 */ be_nested_str_weak(ui),
- /* K33 */ be_nested_str_weak(wifi),
- /* K34 */ be_nested_str_weak(up),
- /* K35 */ be_nested_str_weak(eth),
- /* K36 */ be_nested_str_weak(start),
- /* K37 */ be_nested_str_weak(add_rule),
- /* K38 */ be_nested_str_weak(Wifi_X23Connected),
- /* K39 */ be_nested_str_weak(matter_start),
- /* K40 */ be_nested_str_weak(Eth_X23Connected),
- /* K41 */ be_nested_str_weak(_init_basic_commissioning),
- /* K42 */ be_nested_str_weak(add_driver),
- /* K43 */ be_nested_str_weak(register_commands),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[107]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xB80A0200, // 0001 GETNGBL R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0xB8120600, // 0003 GETNGBL R4 K3
- 0x88100904, // 0004 GETMBR R4 R4 K4
- 0x7C080400, // 0005 CALL R2 2
- 0x740A0004, // 0006 JMPT R2 #000C
- 0xB80A0600, // 0007 GETNGBL R2 K3
- 0x8C080505, // 0008 GETMET R2 R2 K5
- 0x5C100000, // 0009 MOVE R4 R0
- 0x7C080400, // 000A CALL R2 2
- 0x80000400, // 000B RET 0
- 0xB80A0600, // 000C GETNGBL R2 K3
- 0xB80E0600, // 000D GETNGBL R3 K3
- 0x8C0C0707, // 000E GETMET R3 R3 K7
- 0x7C0C0200, // 000F CALL R3 1
- 0x900A0C03, // 0010 SETMBR R2 K6 R3
- 0x50080000, // 0011 LDBOOL R2 0 0
- 0x90021002, // 0012 SETMBR R0 K8 R2
- 0x9002130A, // 0013 SETMBR R0 K9 K10
- 0x60080012, // 0014 GETGBL R2 G18
- 0x7C080000, // 0015 CALL R2 0
- 0x90021602, // 0016 SETMBR R0 K11 R2
- 0x50080000, // 0017 LDBOOL R2 0 0
- 0x90021802, // 0018 SETMBR R0 K12 R2
- 0x60080013, // 0019 GETGBL R2 G19
- 0x7C080000, // 001A CALL R2 0
- 0x90021A02, // 001B SETMBR R0 K13 R2
- 0x8808010F, // 001C GETMBR R2 R0 K15
- 0x90021C02, // 001D SETMBR R0 K14 R2
- 0x88080111, // 001E GETMBR R2 R0 K17
- 0x90022002, // 001F SETMBR R0 K16 R2
- 0x88080113, // 0020 GETMBR R2 R0 K19
- 0x90022402, // 0021 SETMBR R0 K18 R2
- 0x90022915, // 0022 SETMBR R0 K20 K21
- 0x8C080317, // 0023 GETMET R2 R1 K23
- 0x5412000F, // 0024 LDINT R4 16
- 0x7C080400, // 0025 CALL R2 2
- 0x90022C02, // 0026 SETMBR R0 K22 R2
- 0x50080000, // 0027 LDBOOL R2 0 0
- 0x90023002, // 0028 SETMBR R0 K24 R2
- 0x50080000, // 0029 LDBOOL R2 0 0
- 0x90023202, // 002A SETMBR R0 K25 R2
- 0x8C08011A, // 002B GETMET R2 R0 K26
- 0x7C080200, // 002C CALL R2 1
- 0xB80A0600, // 002D GETNGBL R2 K3
- 0x8C08051C, // 002E GETMET R2 R2 K28
- 0x5C100000, // 002F MOVE R4 R0
- 0x7C080400, // 0030 CALL R2 2
- 0x90023602, // 0031 SETMBR R0 K27 R2
- 0x8808011B, // 0032 GETMBR R2 R0 K27
- 0x8C08051D, // 0033 GETMET R2 R2 K29
- 0x7C080200, // 0034 CALL R2 1
- 0xB80A0600, // 0035 GETNGBL R2 K3
- 0x8C08051F, // 0036 GETMET R2 R2 K31
- 0x5C100000, // 0037 MOVE R4 R0
- 0x7C080400, // 0038 CALL R2 2
- 0x90023C02, // 0039 SETMBR R0 K30 R2
- 0xB80A0600, // 003A GETNGBL R2 K3
- 0x8C080505, // 003B GETMET R2 R2 K5
- 0x5C100000, // 003C MOVE R4 R0
- 0x7C080400, // 003D CALL R2 2
- 0x90024002, // 003E SETMBR R0 K32 R2
- 0xB80A0200, // 003F GETNGBL R2 K1
- 0x8C080521, // 0040 GETMET R2 R2 K33
- 0x7C080200, // 0041 CALL R2 1
- 0x94080522, // 0042 GETIDX R2 R2 K34
- 0x740A0004, // 0043 JMPT R2 #0049
- 0xB80A0200, // 0044 GETNGBL R2 K1
- 0x8C080523, // 0045 GETMET R2 R2 K35
- 0x7C080200, // 0046 CALL R2 1
- 0x94080522, // 0047 GETIDX R2 R2 K34
- 0x780A0001, // 0048 JMPF R2 #004B
- 0x8C080124, // 0049 GETMET R2 R0 K36
- 0x7C080200, // 004A CALL R2 1
- 0xB80A0200, // 004B GETNGBL R2 K1
- 0x8C080521, // 004C GETMET R2 R2 K33
- 0x7C080200, // 004D CALL R2 1
- 0x94080522, // 004E GETIDX R2 R2 K34
- 0x740A0005, // 004F JMPT R2 #0056
- 0xB80A0200, // 0050 GETNGBL R2 K1
- 0x8C080525, // 0051 GETMET R2 R2 K37
- 0x58100026, // 0052 LDCONST R4 K38
- 0x84140000, // 0053 CLOSURE R5 P0
- 0x58180027, // 0054 LDCONST R6 K39
- 0x7C080800, // 0055 CALL R2 4
- 0xB80A0200, // 0056 GETNGBL R2 K1
- 0x8C080523, // 0057 GETMET R2 R2 K35
- 0x7C080200, // 0058 CALL R2 1
- 0x94080522, // 0059 GETIDX R2 R2 K34
- 0x740A0005, // 005A JMPT R2 #0061
- 0xB80A0200, // 005B GETNGBL R2 K1
- 0x8C080525, // 005C GETMET R2 R2 K37
- 0x58100028, // 005D LDCONST R4 K40
- 0x84140001, // 005E CLOSURE R5 P1
- 0x58180027, // 005F LDCONST R6 K39
- 0x7C080800, // 0060 CALL R2 4
- 0x8C080129, // 0061 GETMET R2 R0 K41
- 0x7C080200, // 0062 CALL R2 1
- 0xB80A0200, // 0063 GETNGBL R2 K1
- 0x8C08052A, // 0064 GETMET R2 R2 K42
- 0x5C100000, // 0065 MOVE R4 R0
- 0x7C080400, // 0066 CALL R2 2
- 0x8C08012B, // 0067 GETMET R2 R0 K43
- 0x7C080200, // 0068 CALL R2 1
- 0xA0000000, // 0069 CLOSE R0
- 0x80000000, // 006A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: adjust_next_ep
-********************************************************************/
-be_local_closure(Matter_Device_adjust_next_ep, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_config),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(next_ep),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(adjust_next_ep),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x60040010, // 0000 GETGBL R1 G16
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x7C040200, // 0004 CALL R1 1
- 0xA802000A, // 0005 EXBLK 0 #0011
- 0x5C080200, // 0006 MOVE R2 R1
- 0x7C080000, // 0007 CALL R2 0
- 0x600C0009, // 0008 GETGBL R3 G9
- 0x5C100400, // 0009 MOVE R4 R2
- 0x7C0C0200, // 000A CALL R3 1
- 0x88100102, // 000B GETMBR R4 R0 K2
- 0x28100604, // 000C GE R4 R3 R4
- 0x78120001, // 000D JMPF R4 #0010
- 0x00100703, // 000E ADD R4 R3 K3
- 0x90020404, // 000F SETMBR R0 K2 R4
- 0x7001FFF4, // 0010 JMP #0006
- 0x58040004, // 0011 LDCONST R1 K4
- 0xAC040200, // 0012 CATCH R1 1 0
- 0xB0080000, // 0013 RAISE 2 R0 R0
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: conf_to_log
-********************************************************************/
-be_local_closure(Matter_Device_conf_to_log, /* name */
+be_local_closure(Matter_Device_register_http_remote, /* name */
be_nested_proto(
9, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_nested_str_weak(),
- /* K2 */ be_nested_str_weak(k2l),
- /* K3 */ be_nested_str_weak(type),
- /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(conf_to_log),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x58080001, // 0001 LDCONST R2 K1
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x8C100302, // 0003 GETMET R4 R1 K2
- 0x5C180000, // 0004 MOVE R6 R0
- 0x7C100400, // 0005 CALL R4 2
- 0x7C0C0200, // 0006 CALL R3 1
- 0xA802000B, // 0007 EXBLK 0 #0014
- 0x5C100600, // 0008 MOVE R4 R3
- 0x7C100000, // 0009 CALL R4 0
- 0x1C140903, // 000A EQ R5 R4 K3
- 0x78160000, // 000B JMPF R5 #000D
- 0x7001FFFA, // 000C JMP #0008
- 0x60140018, // 000D GETGBL R5 G24
- 0x58180004, // 000E LDCONST R6 K4
- 0x5C1C0800, // 000F MOVE R7 R4
- 0x94200004, // 0010 GETIDX R8 R0 R4
- 0x7C140600, // 0011 CALL R5 3
- 0x00080405, // 0012 ADD R2 R2 R5
- 0x7001FFF3, // 0013 JMP #0008
- 0x580C0005, // 0014 LDCONST R3 K5
- 0xAC0C0200, // 0015 CATCH R3 1 0
- 0xB0080000, // 0016 RAISE 2 R0 R0
- 0x80040400, // 0017 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_50ms
-********************************************************************/
-be_local_closure(Matter_Device_every_50ms, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
+ 3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tick),
- /* K1 */ be_const_int(1),
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(http_remotes),
+ /* K1 */ be_nested_str_weak(contains),
+ /* K2 */ be_nested_str_weak(get_timeout),
+ /* K3 */ be_nested_str_weak(set_timeout),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(HTTP_remote),
+ /* K6 */ be_nested_str_weak(plugins_config_remotes),
+ /* K7 */ be_nested_str_weak(set_info),
}),
- be_str_weak(every_50ms),
+ be_str_weak(register_http_remote),
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x00040301, // 0001 ADD R1 R1 K1
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x80000000, // 0003 RET 0
+ ( &(const binstruction[42]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x4C100000, // 0001 LDNIL R4
+ 0x1C0C0604, // 0002 EQ R3 R3 R4
+ 0x780E0002, // 0003 JMPF R3 #0007
+ 0x600C0013, // 0004 GETGBL R3 G19
+ 0x7C0C0000, // 0005 CALL R3 0
+ 0x90020003, // 0006 SETMBR R0 K0 R3
+ 0x4C0C0000, // 0007 LDNIL R3
+ 0x88100100, // 0008 GETMBR R4 R0 K0
+ 0x8C100901, // 0009 GETMET R4 R4 K1
+ 0x5C180200, // 000A MOVE R6 R1
+ 0x7C100400, // 000B CALL R4 2
+ 0x78120009, // 000C JMPF R4 #0017
+ 0x88100100, // 000D GETMBR R4 R0 K0
+ 0x940C0801, // 000E GETIDX R3 R4 R1
+ 0x8C140702, // 000F GETMET R5 R3 K2
+ 0x7C140200, // 0010 CALL R5 1
+ 0x14140405, // 0011 LT R5 R2 R5
+ 0x78160002, // 0012 JMPF R5 #0016
+ 0x8C140703, // 0013 GETMET R5 R3 K3
+ 0x5C1C0400, // 0014 MOVE R7 R2
+ 0x7C140400, // 0015 CALL R5 2
+ 0x70020011, // 0016 JMP #0029
+ 0xB8120800, // 0017 GETNGBL R4 K4
+ 0x8C100905, // 0018 GETMET R4 R4 K5
+ 0x5C180000, // 0019 MOVE R6 R0
+ 0x5C1C0200, // 001A MOVE R7 R1
+ 0x5C200400, // 001B MOVE R8 R2
+ 0x7C100800, // 001C CALL R4 4
+ 0x5C0C0800, // 001D MOVE R3 R4
+ 0x88100106, // 001E GETMBR R4 R0 K6
+ 0x8C100901, // 001F GETMET R4 R4 K1
+ 0x5C180200, // 0020 MOVE R6 R1
+ 0x7C100400, // 0021 CALL R4 2
+ 0x78120003, // 0022 JMPF R4 #0027
+ 0x8C100707, // 0023 GETMET R4 R3 K7
+ 0x88180106, // 0024 GETMBR R6 R0 K6
+ 0x94180C01, // 0025 GETIDX R6 R6 R1
+ 0x7C100400, // 0026 CALL R4 2
+ 0x88100100, // 0027 GETMBR R4 R0 K0
+ 0x98100203, // 0028 SETIDX R4 R1 R3
+ 0x80040600, // 0029 RET 1 R3
})
)
);
@@ -2691,91 +1020,9 @@ be_local_closure(Matter_Device_every_50ms, /* name */
/********************************************************************
-** Solidified function: k2l_num
+** Solidified function: add_read_sensors_schedule
********************************************************************/
-be_local_closure(Matter_Device_k2l_num, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(push),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(0),
- }),
- be_str_weak(k2l_num),
- &be_const_str_solidified,
- ( &(const binstruction[52]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0003, // 0004 EQ R3 R0 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x80040400, // 0006 RET 1 R2
- 0x600C0010, // 0007 GETGBL R3 G16
- 0x8C100101, // 0008 GETMET R4 R0 K1
- 0x7C100200, // 0009 CALL R4 1
- 0x7C0C0200, // 000A CALL R3 1
- 0xA8020007, // 000B EXBLK 0 #0014
- 0x5C100600, // 000C MOVE R4 R3
- 0x7C100000, // 000D CALL R4 0
- 0x8C140502, // 000E GETMET R5 R2 K2
- 0x601C0009, // 000F GETGBL R7 G9
- 0x5C200800, // 0010 MOVE R8 R4
- 0x7C1C0200, // 0011 CALL R7 1
- 0x7C140400, // 0012 CALL R5 2
- 0x7001FFF7, // 0013 JMP #000C
- 0x580C0003, // 0014 LDCONST R3 K3
- 0xAC0C0200, // 0015 CATCH R3 1 0
- 0xB0080000, // 0016 RAISE 2 R0 R0
- 0x600C0010, // 0017 GETGBL R3 G16
- 0x6010000C, // 0018 GETGBL R4 G12
- 0x5C140400, // 0019 MOVE R5 R2
- 0x7C100200, // 001A CALL R4 1
- 0x04100904, // 001B SUB R4 R4 K4
- 0x40120804, // 001C CONNECT R4 K4 R4
- 0x7C0C0200, // 001D CALL R3 1
- 0xA8020010, // 001E EXBLK 0 #0030
- 0x5C100600, // 001F MOVE R4 R3
- 0x7C100000, // 0020 CALL R4 0
- 0x94140404, // 0021 GETIDX R5 R2 R4
- 0x5C180800, // 0022 MOVE R6 R4
- 0x241C0D05, // 0023 GT R7 R6 K5
- 0x781E0008, // 0024 JMPF R7 #002E
- 0x041C0D04, // 0025 SUB R7 R6 K4
- 0x941C0407, // 0026 GETIDX R7 R2 R7
- 0x241C0E05, // 0027 GT R7 R7 R5
- 0x781E0004, // 0028 JMPF R7 #002E
- 0x041C0D04, // 0029 SUB R7 R6 K4
- 0x941C0407, // 002A GETIDX R7 R2 R7
- 0x98080C07, // 002B SETIDX R2 R6 R7
- 0x04180D04, // 002C SUB R6 R6 K4
- 0x7001FFF4, // 002D JMP #0023
- 0x98080C05, // 002E SETIDX R2 R6 R5
- 0x7001FFEE, // 002F JMP #001F
- 0x580C0003, // 0030 LDCONST R3 K3
- 0xAC0C0200, // 0031 CATCH R3 1 0
- 0xB0080000, // 0032 RAISE 2 R0 R0
- 0x80040400, // 0033 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_plugin_class_arg
-********************************************************************/
-be_local_closure(Matter_Device_get_plugin_class_arg, /* name */
+be_local_closure(Matter_Device_add_read_sensors_schedule, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
@@ -2786,23 +1033,137 @@ be_local_closure(Matter_Device_get_plugin_class_arg, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_classes),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_nested_str_weak(),
+ /* K0 */ be_nested_str_weak(probe_sensor_time),
+ /* K1 */ be_nested_str_weak(probe_sensor_timestamp),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(jitter),
}),
- be_str_weak(get_plugin_class_arg),
+ be_str_weak(add_read_sensors_schedule),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
+ ( &(const binstruction[14]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x780A0001, // 0004 JMPF R2 #0007
- 0x880C0502, // 0005 GETMBR R3 R2 K2
- 0x70020000, // 0006 JMP #0008
- 0x580C0003, // 0007 LDCONST R3 K3
- 0x80040600, // 0008 RET 1 R3
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x1C080403, // 0002 EQ R2 R2 R3
+ 0x740A0002, // 0003 JMPT R2 #0007
+ 0x88080100, // 0004 GETMBR R2 R0 K0
+ 0x24080401, // 0005 GT R2 R2 R1
+ 0x780A0005, // 0006 JMPF R2 #000D
+ 0x90020001, // 0007 SETMBR R0 K0 R1
+ 0xB80A0400, // 0008 GETNGBL R2 K2
+ 0x8C080503, // 0009 GETMET R2 R2 K3
+ 0x5C100200, // 000A MOVE R4 R1
+ 0x7C080400, // 000B CALL R2 2
+ 0x90020202, // 000C SETMBR R0 K1 R2
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: msg_received
+********************************************************************/
+be_local_closure(Matter_Device_msg_received, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(message_handler),
+ /* K1 */ be_nested_str_weak(msg_received),
+ }),
+ be_str_weak(msg_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88100100, // 0000 GETMBR R4 R0 K0
+ 0x8C100901, // 0001 GETMET R4 R4 K1
+ 0x5C180200, // 0002 MOVE R6 R1
+ 0x5C1C0400, // 0003 MOVE R7 R2
+ 0x5C200600, // 0004 MOVE R8 R3
+ 0x7C100800, // 0005 CALL R4 4
+ 0x80040800, // 0006 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compute_qrcode_content
+********************************************************************/
+be_local_closure(Matter_Device_compute_qrcode_content, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[12]) { /* constants */
+ /* K0 */ be_nested_str_weak(resize),
+ /* K1 */ be_nested_str_weak(setbits),
+ /* K2 */ be_const_int(3),
+ /* K3 */ be_nested_str_weak(vendorid),
+ /* K4 */ be_nested_str_weak(productid),
+ /* K5 */ be_nested_str_weak(root_discriminator),
+ /* K6 */ be_nested_str_weak(root_passcode),
+ /* K7 */ be_const_int(134217727),
+ /* K8 */ be_nested_str_weak(MT_X3A),
+ /* K9 */ be_nested_str_weak(matter),
+ /* K10 */ be_nested_str_weak(Base38),
+ /* K11 */ be_nested_str_weak(encode),
+ }),
+ be_str_weak(compute_qrcode_content),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0x60040015, // 0000 GETGBL R1 G21
+ 0x7C040000, // 0001 CALL R1 0
+ 0x8C040300, // 0002 GETMET R1 R1 K0
+ 0x540E000A, // 0003 LDINT R3 11
+ 0x7C040400, // 0004 CALL R1 2
+ 0x8C080301, // 0005 GETMET R2 R1 K1
+ 0x58100002, // 0006 LDCONST R4 K2
+ 0x5416000F, // 0007 LDINT R5 16
+ 0x88180103, // 0008 GETMBR R6 R0 K3
+ 0x7C080800, // 0009 CALL R2 4
+ 0x8C080301, // 000A GETMET R2 R1 K1
+ 0x54120012, // 000B LDINT R4 19
+ 0x5416000F, // 000C LDINT R5 16
+ 0x88180104, // 000D GETMBR R6 R0 K4
+ 0x7C080800, // 000E CALL R2 4
+ 0x8C080301, // 000F GETMET R2 R1 K1
+ 0x54120024, // 0010 LDINT R4 37
+ 0x54160007, // 0011 LDINT R5 8
+ 0x541A0003, // 0012 LDINT R6 4
+ 0x7C080800, // 0013 CALL R2 4
+ 0x8C080301, // 0014 GETMET R2 R1 K1
+ 0x5412002C, // 0015 LDINT R4 45
+ 0x5416000B, // 0016 LDINT R5 12
+ 0x88180105, // 0017 GETMBR R6 R0 K5
+ 0x541E0FFE, // 0018 LDINT R7 4095
+ 0x2C180C07, // 0019 AND R6 R6 R7
+ 0x7C080800, // 001A CALL R2 4
+ 0x8C080301, // 001B GETMET R2 R1 K1
+ 0x54120038, // 001C LDINT R4 57
+ 0x5416001A, // 001D LDINT R5 27
+ 0x88180106, // 001E GETMBR R6 R0 K6
+ 0x2C180D07, // 001F AND R6 R6 K7
+ 0x7C080800, // 0020 CALL R2 4
+ 0xB80A1200, // 0021 GETNGBL R2 K9
+ 0x8808050A, // 0022 GETMBR R2 R2 K10
+ 0x8C08050B, // 0023 GETMET R2 R2 K11
+ 0x5C100200, // 0024 MOVE R4 R1
+ 0x7C080400, // 0025 CALL R2 2
+ 0x000A1002, // 0026 ADD R2 K8 R2
+ 0x80040400, // 0027 RET 1 R2
})
)
);
@@ -2822,1644 +1183,248 @@ be_local_closure(Matter_Device_autoconf_device_map, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[36]) { /* constants */
+ ( &(const bvalue[38]) { /* constants */
/* K0 */ be_nested_str_weak(json),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(light),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(channels),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(type),
- /* K9 */ be_nested_str_weak(light1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(light2),
- /* K12 */ be_nested_str_weak(light3),
- /* K13 */ be_nested_str_weak(tasmota),
- /* K14 */ be_nested_str_weak(cmd),
- /* K15 */ be_nested_str_weak(Status_X2013),
- /* K16 */ be_nested_str_weak(log),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20),
- /* K18 */ be_const_int(3),
- /* K19 */ be_nested_str_weak(contains),
- /* K20 */ be_nested_str_weak(StatusSHT),
- /* K21 */ be_nested_str_weak(SHT),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s),
- /* K23 */ be_nested_str_weak(Relay1),
- /* K24 */ be_nested_str_weak(Relay2),
- /* K25 */ be_nested_str_weak(push),
- /* K26 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s),
- /* K27 */ be_nested_str_weak(TiltConfig),
- /* K28 */ be_nested_str_weak(shutter_X2Btilt),
- /* K29 */ be_nested_str_weak(shutter),
- /* K30 */ be_nested_str_weak(get_power),
- /* K31 */ be_nested_str_weak(relay),
- /* K32 */ be_nested_str_weak(load),
- /* K33 */ be_nested_str_weak(read_sensors),
- /* K34 */ be_nested_str_weak(autoconf_sensors_list),
- /* K35 */ be_nested_str_weak(stop_iteration),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(START_ENDPOINT),
+ /* K3 */ be_nested_str_weak(light),
+ /* K4 */ be_nested_str_weak(get),
+ /* K5 */ be_nested_str_weak(find),
+ /* K6 */ be_nested_str_weak(channels),
+ /* K7 */ be_nested_str_weak(),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(type),
+ /* K11 */ be_nested_str_weak(light1),
+ /* K12 */ be_const_int(2),
+ /* K13 */ be_nested_str_weak(light2),
+ /* K14 */ be_nested_str_weak(light3),
+ /* K15 */ be_nested_str_weak(tasmota),
+ /* K16 */ be_nested_str_weak(cmd),
+ /* K17 */ be_nested_str_weak(Status_X2013),
+ /* K18 */ be_nested_str_weak(log),
+ /* K19 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20),
+ /* K20 */ be_const_int(3),
+ /* K21 */ be_nested_str_weak(contains),
+ /* K22 */ be_nested_str_weak(StatusSHT),
+ /* K23 */ be_nested_str_weak(SHT),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s),
+ /* K25 */ be_nested_str_weak(Relay1),
+ /* K26 */ be_nested_str_weak(Relay2),
+ /* K27 */ be_nested_str_weak(push),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s),
+ /* K29 */ be_nested_str_weak(TiltConfig),
+ /* K30 */ be_nested_str_weak(shutter_X2Btilt),
+ /* K31 */ be_nested_str_weak(shutter),
+ /* K32 */ be_nested_str_weak(get_power),
+ /* K33 */ be_nested_str_weak(relay),
+ /* K34 */ be_nested_str_weak(load),
+ /* K35 */ be_nested_str_weak(read_sensors),
+ /* K36 */ be_nested_str_weak(autoconf_sensors_list),
+ /* K37 */ be_nested_str_weak(stop_iteration),
}),
be_str_weak(autoconf_device_map),
&be_const_str_solidified,
- ( &(const binstruction[198]) { /* code */
+ ( &(const binstruction[199]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x60080013, // 0001 GETGBL R2 G19
0x7C080000, // 0002 CALL R2 0
- 0x580C0001, // 0003 LDCONST R3 K1
- 0x50100000, // 0004 LDBOOL R4 0 0
- 0xA4160400, // 0005 IMPORT R5 K2
- 0x8C180B03, // 0006 GETMET R6 R5 K3
- 0x7C180200, // 0007 CALL R6 1
- 0x4C1C0000, // 0008 LDNIL R7
- 0x201C0C07, // 0009 NE R7 R6 R7
- 0x781E0024, // 000A JMPF R7 #0030
- 0x601C000C, // 000B GETGBL R7 G12
- 0x8C200D04, // 000C GETMET R8 R6 K4
- 0x58280005, // 000D LDCONST R10 K5
- 0x582C0006, // 000E LDCONST R11 K6
- 0x7C200600, // 000F CALL R8 3
- 0x7C1C0200, // 0010 CALL R7 1
- 0x24200F07, // 0011 GT R8 R7 K7
- 0x7822001C, // 0012 JMPF R8 #0030
- 0x1C200F01, // 0013 EQ R8 R7 K1
- 0x78220007, // 0014 JMPF R8 #001D
- 0x60200008, // 0015 GETGBL R8 G8
- 0x5C240600, // 0016 MOVE R9 R3
- 0x7C200200, // 0017 CALL R8 1
- 0x60240013, // 0018 GETGBL R9 G19
- 0x7C240000, // 0019 CALL R9 0
- 0x98261109, // 001A SETIDX R9 K8 K9
- 0x98081009, // 001B SETIDX R2 R8 R9
- 0x70020010, // 001C JMP #002E
- 0x1C200F0A, // 001D EQ R8 R7 K10
- 0x78220007, // 001E JMPF R8 #0027
- 0x60200008, // 001F GETGBL R8 G8
- 0x5C240600, // 0020 MOVE R9 R3
- 0x7C200200, // 0021 CALL R8 1
- 0x60240013, // 0022 GETGBL R9 G19
- 0x7C240000, // 0023 CALL R9 0
- 0x9826110B, // 0024 SETIDX R9 K8 K11
- 0x98081009, // 0025 SETIDX R2 R8 R9
- 0x70020006, // 0026 JMP #002E
- 0x60200008, // 0027 GETGBL R8 G8
- 0x5C240600, // 0028 MOVE R9 R3
- 0x7C200200, // 0029 CALL R8 1
- 0x60240013, // 002A GETGBL R9 G19
- 0x7C240000, // 002B CALL R9 0
- 0x9826110C, // 002C SETIDX R9 K8 K12
- 0x98081009, // 002D SETIDX R2 R8 R9
- 0x50100200, // 002E LDBOOL R4 1 0
- 0x000C0701, // 002F ADD R3 R3 K1
- 0xB81E1A00, // 0030 GETNGBL R7 K13
- 0x8C1C0F0E, // 0031 GETMET R7 R7 K14
- 0x5824000F, // 0032 LDCONST R9 K15
- 0x50280200, // 0033 LDBOOL R10 1 0
- 0x7C1C0600, // 0034 CALL R7 3
- 0x60200012, // 0035 GETGBL R8 G18
- 0x7C200000, // 0036 CALL R8 0
- 0xB8261A00, // 0037 GETNGBL R9 K13
- 0x8C241310, // 0038 GETMET R9 R9 K16
- 0x602C0008, // 0039 GETGBL R11 G8
- 0x5C300E00, // 003A MOVE R12 R7
- 0x7C2C0200, // 003B CALL R11 1
- 0x002E220B, // 003C ADD R11 K17 R11
- 0x58300012, // 003D LDCONST R12 K18
- 0x7C240600, // 003E CALL R9 3
- 0x4C240000, // 003F LDNIL R9
- 0x20240E09, // 0040 NE R9 R7 R9
- 0x7826004F, // 0041 JMPF R9 #0092
- 0x8C240F13, // 0042 GETMET R9 R7 K19
- 0x582C0014, // 0043 LDCONST R11 K20
- 0x7C240400, // 0044 CALL R9 2
- 0x7826004B, // 0045 JMPF R9 #0092
- 0x941C0F14, // 0046 GETIDX R7 R7 K20
- 0x58240007, // 0047 LDCONST R9 K7
- 0x50280200, // 0048 LDBOOL R10 1 0
- 0x782A0047, // 0049 JMPF R10 #0092
- 0x60280008, // 004A GETGBL R10 G8
- 0x5C2C1200, // 004B MOVE R11 R9
- 0x7C280200, // 004C CALL R10 1
- 0x002A2A0A, // 004D ADD R10 K21 R10
- 0x8C2C0F13, // 004E GETMET R11 R7 K19
- 0x5C341400, // 004F MOVE R13 R10
- 0x7C2C0400, // 0050 CALL R11 2
- 0x742E0000, // 0051 JMPT R11 #0053
- 0x7002003E, // 0052 JMP #0092
- 0x942C0E0A, // 0053 GETIDX R11 R7 R10
- 0xB8321A00, // 0054 GETNGBL R12 K13
- 0x8C301910, // 0055 GETMET R12 R12 K16
- 0x60380018, // 0056 GETGBL R14 G24
- 0x583C0016, // 0057 LDCONST R15 K22
- 0x5C401400, // 0058 MOVE R16 R10
- 0x60440008, // 0059 GETGBL R17 G8
- 0x5C481600, // 005A MOVE R18 R11
- 0x7C440200, // 005B CALL R17 1
- 0x7C380600, // 005C CALL R14 3
- 0x583C0012, // 005D LDCONST R15 K18
- 0x7C300600, // 005E CALL R12 3
- 0x8C301704, // 005F GETMET R12 R11 K4
- 0x58380017, // 0060 LDCONST R14 K23
- 0x543DFFFE, // 0061 LDINT R15 -1
- 0x7C300600, // 0062 CALL R12 3
- 0x8C341704, // 0063 GETMET R13 R11 K4
- 0x583C0018, // 0064 LDCONST R15 K24
- 0x5441FFFE, // 0065 LDINT R16 -1
- 0x7C340600, // 0066 CALL R13 3
- 0x24381907, // 0067 GT R14 R12 K7
- 0x783A0002, // 0068 JMPF R14 #006C
- 0x8C381119, // 0069 GETMET R14 R8 K25
- 0x04401901, // 006A SUB R16 R12 K1
- 0x7C380400, // 006B CALL R14 2
- 0x24381B07, // 006C GT R14 R13 K7
- 0x783A0002, // 006D JMPF R14 #0071
- 0x8C381119, // 006E GETMET R14 R8 K25
- 0x04401B01, // 006F SUB R16 R13 K1
- 0x7C380400, // 0070 CALL R14 2
- 0xB83A1A00, // 0071 GETNGBL R14 K13
- 0x8C381D10, // 0072 GETMET R14 R14 K16
- 0x60400018, // 0073 GETGBL R16 G24
- 0x5844001A, // 0074 LDCONST R17 K26
- 0x5C481800, // 0075 MOVE R18 R12
- 0x5C4C1A00, // 0076 MOVE R19 R13
- 0x7C400600, // 0077 CALL R16 3
- 0x58440012, // 0078 LDCONST R17 K18
- 0x7C380600, // 0079 CALL R14 3
- 0x8C381704, // 007A GETMET R14 R11 K4
- 0x5840001B, // 007B LDCONST R16 K27
- 0x7C380400, // 007C CALL R14 2
- 0x783A0002, // 007D JMPF R14 #0081
- 0x943C1D0A, // 007E GETIDX R15 R14 K10
- 0x243C1F07, // 007F GT R15 R15 K7
- 0x743E0000, // 0080 JMPT R15 #0082
- 0x503C0001, // 0081 LDBOOL R15 0 1
- 0x503C0200, // 0082 LDBOOL R15 1 0
- 0x60400008, // 0083 GETGBL R16 G8
- 0x5C440600, // 0084 MOVE R17 R3
- 0x7C400200, // 0085 CALL R16 1
- 0x60440013, // 0086 GETGBL R17 G19
- 0x7C440000, // 0087 CALL R17 0
- 0x783E0001, // 0088 JMPF R15 #008B
- 0x5848001C, // 0089 LDCONST R18 K28
- 0x70020000, // 008A JMP #008C
- 0x5848001D, // 008B LDCONST R18 K29
- 0x98461012, // 008C SETIDX R17 K8 R18
- 0x98463A09, // 008D SETIDX R17 K29 R9
- 0x98082011, // 008E SETIDX R2 R16 R17
- 0x000C0701, // 008F ADD R3 R3 K1
- 0x00241301, // 0090 ADD R9 R9 K1
- 0x7001FFB5, // 0091 JMP #0048
- 0x6024000C, // 0092 GETGBL R9 G12
- 0xB82A1A00, // 0093 GETNGBL R10 K13
- 0x8C28151E, // 0094 GETMET R10 R10 K30
- 0x7C280200, // 0095 CALL R10 1
- 0x7C240200, // 0096 CALL R9 1
- 0x58280007, // 0097 LDCONST R10 K7
- 0x78120000, // 0098 JMPF R4 #009A
- 0x04241301, // 0099 SUB R9 R9 K1
- 0x142C1409, // 009A LT R11 R10 R9
- 0x782E0011, // 009B JMPF R11 #00AE
- 0x8C2C1104, // 009C GETMET R11 R8 K4
- 0x5C341400, // 009D MOVE R13 R10
- 0x7C2C0400, // 009E CALL R11 2
- 0x4C300000, // 009F LDNIL R12
- 0x1C2C160C, // 00A0 EQ R11 R11 R12
- 0x782E0009, // 00A1 JMPF R11 #00AC
- 0x602C0008, // 00A2 GETGBL R11 G8
- 0x5C300600, // 00A3 MOVE R12 R3
- 0x7C2C0200, // 00A4 CALL R11 1
- 0x60300013, // 00A5 GETGBL R12 G19
- 0x7C300000, // 00A6 CALL R12 0
- 0x9832111F, // 00A7 SETIDX R12 K8 K31
- 0x00341501, // 00A8 ADD R13 R10 K1
- 0x98323E0D, // 00A9 SETIDX R12 K31 R13
- 0x9808160C, // 00AA SETIDX R2 R11 R12
- 0x000C0701, // 00AB ADD R3 R3 K1
- 0x00281501, // 00AC ADD R10 R10 K1
- 0x7001FFEB, // 00AD JMP #009A
- 0x8C2C0320, // 00AE GETMET R11 R1 K32
- 0xB8361A00, // 00AF GETNGBL R13 K13
- 0x8C341B21, // 00B0 GETMET R13 R13 K33
- 0x7C340200, // 00B1 CALL R13 1
- 0x7C2C0400, // 00B2 CALL R11 2
- 0x8C300122, // 00B3 GETMET R12 R0 K34
- 0x5C381600, // 00B4 MOVE R14 R11
- 0x7C300400, // 00B5 CALL R12 2
- 0x60340010, // 00B6 GETGBL R13 G16
- 0x5C381800, // 00B7 MOVE R14 R12
- 0x7C340200, // 00B8 CALL R13 1
- 0xA8020007, // 00B9 EXBLK 0 #00C2
- 0x5C381A00, // 00BA MOVE R14 R13
- 0x7C380000, // 00BB CALL R14 0
- 0x603C0008, // 00BC GETGBL R15 G8
- 0x5C400600, // 00BD MOVE R16 R3
- 0x7C3C0200, // 00BE CALL R15 1
- 0x98081E0E, // 00BF SETIDX R2 R15 R14
- 0x000C0701, // 00C0 ADD R3 R3 K1
- 0x7001FFF7, // 00C1 JMP #00BA
- 0x58340023, // 00C2 LDCONST R13 K35
- 0xAC340200, // 00C3 CATCH R13 1 0
- 0xB0080000, // 00C4 RAISE 2 R0 R0
- 0x80040400, // 00C5 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: remove_fabric
-********************************************************************/
-be_local_closure(Matter_Device_remove_fabric, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(copy),
- /* K5 */ be_nested_str_weak(reverse),
- /* K6 */ be_nested_str_weak(tohex),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str_weak(message_handler),
- /* K9 */ be_nested_str_weak(im),
- /* K10 */ be_nested_str_weak(subs_shop),
- /* K11 */ be_nested_str_weak(remove_by_fabric),
- /* K12 */ be_nested_str_weak(mdns_remove_op_discovery),
- /* K13 */ be_nested_str_weak(sessions),
- /* K14 */ be_nested_str_weak(remove_fabric),
- /* K15 */ be_nested_str_weak(save_fabrics),
- }),
- be_str_weak(remove_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0019, // 0002 JMPF R2 #001D
- 0xB80A0000, // 0003 GETNGBL R2 K0
- 0x8C080501, // 0004 GETMET R2 R2 K1
- 0x8C100303, // 0005 GETMET R4 R1 K3
- 0x7C100200, // 0006 CALL R4 1
- 0x8C100904, // 0007 GETMET R4 R4 K4
- 0x7C100200, // 0008 CALL R4 1
- 0x8C100905, // 0009 GETMET R4 R4 K5
- 0x7C100200, // 000A CALL R4 1
- 0x8C100906, // 000B GETMET R4 R4 K6
- 0x7C100200, // 000C CALL R4 1
- 0x00120404, // 000D ADD R4 K2 R4
- 0x58140007, // 000E LDCONST R5 K7
- 0x7C080600, // 000F CALL R2 3
- 0x88080108, // 0010 GETMBR R2 R0 K8
- 0x88080509, // 0011 GETMBR R2 R2 K9
- 0x8808050A, // 0012 GETMBR R2 R2 K10
- 0x8C08050B, // 0013 GETMET R2 R2 K11
- 0x5C100200, // 0014 MOVE R4 R1
- 0x7C080400, // 0015 CALL R2 2
- 0x8C08010C, // 0016 GETMET R2 R0 K12
- 0x5C100200, // 0017 MOVE R4 R1
- 0x7C080400, // 0018 CALL R2 2
- 0x8808010D, // 0019 GETMBR R2 R0 K13
- 0x8C08050E, // 001A GETMET R2 R2 K14
- 0x5C100200, // 001B MOVE R4 R1
- 0x7C080400, // 001C CALL R2 2
- 0x8808010D, // 001D GETMBR R2 R0 K13
- 0x8C08050F, // 001E GETMET R2 R2 K15
- 0x7C080200, // 001F CALL R2 1
- 0x80000000, // 0020 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: stop
-********************************************************************/
-be_local_closure(Matter_Device_stop, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(remove_driver),
- /* K2 */ be_nested_str_weak(udp_server),
- /* K3 */ be_nested_str_weak(stop),
- }),
- be_str_weak(stop),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x5C0C0000, // 0002 MOVE R3 R0
- 0x7C040400, // 0003 CALL R1 2
- 0x88040102, // 0004 GETMBR R1 R0 K2
- 0x78060002, // 0005 JMPF R1 #0009
- 0x88040102, // 0006 GETMBR R1 R0 K2
- 0x8C040303, // 0007 GETMET R1 R1 K3
- 0x7C040200, // 0008 CALL R1 1
- 0x80000000, // 0009 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_announce_op_discovery
-********************************************************************/
-be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */
- be_nested_proto(
- 14, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(get_device_id),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(reverse),
- /* K4 */ be_nested_str_weak(get_fabric_compressed),
- /* K5 */ be_nested_str_weak(tohex),
- /* K6 */ be_nested_str_weak(_X2D),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20),
- /* K10 */ be_const_int(3),
- /* K11 */ be_nested_str_weak(eth),
- /* K12 */ be_nested_str_weak(find),
- /* K13 */ be_nested_str_weak(up),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K15 */ be_nested_str_weak(hostname_eth),
- /* K16 */ be_nested_str_weak(add_service),
- /* K17 */ be_nested_str_weak(_matter),
- /* K18 */ be_nested_str_weak(_tcp),
- /* K19 */ be_nested_str_weak(_I),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
- /* K21 */ be_nested_str_weak(add_subtype),
- /* K22 */ be_nested_str_weak(wifi),
- /* K23 */ be_nested_str_weak(hostname_wifi),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K25 */ be_nested_str_weak(_X7C),
- /* K26 */ be_const_int(2),
- }),
- be_str_weak(mdns_announce_op_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[121]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA8020064, // 0001 EXBLK 0 #0067
- 0x8C0C0301, // 0002 GETMET R3 R1 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C100304, // 0008 GETMET R4 R1 K4
- 0x7C100200, // 0009 CALL R4 1
- 0x8C140905, // 000A GETMET R5 R4 K5
- 0x7C140200, // 000B CALL R5 1
- 0x00140B06, // 000C ADD R5 R5 K6
- 0x8C180705, // 000D GETMET R6 R3 K5
- 0x7C180200, // 000E CALL R6 1
- 0x00140A06, // 000F ADD R5 R5 R6
- 0xB81A0E00, // 0010 GETNGBL R6 K7
- 0x8C180D08, // 0011 GETMET R6 R6 K8
- 0x00221205, // 0012 ADD R8 K9 R5
- 0x5824000A, // 0013 LDCONST R9 K10
- 0x7C180600, // 0014 CALL R6 3
- 0xB81A0E00, // 0015 GETNGBL R6 K7
- 0x8C180D0B, // 0016 GETMET R6 R6 K11
- 0x7C180200, // 0017 CALL R6 1
- 0x8C180D0C, // 0018 GETMET R6 R6 K12
- 0x5820000D, // 0019 LDCONST R8 K13
- 0x7C180400, // 001A CALL R6 2
- 0x781A0020, // 001B JMPF R6 #003D
- 0xB81A0E00, // 001C GETNGBL R6 K7
- 0x8C180D08, // 001D GETMET R6 R6 K8
- 0x60200018, // 001E GETGBL R8 G24
- 0x5824000E, // 001F LDCONST R9 K14
- 0x5828000B, // 0020 LDCONST R10 K11
- 0x5C2C0A00, // 0021 MOVE R11 R5
- 0x8830010F, // 0022 GETMBR R12 R0 K15
- 0x7C200800, // 0023 CALL R8 4
- 0x5824000A, // 0024 LDCONST R9 K10
- 0x7C180600, // 0025 CALL R6 3
- 0x8C180510, // 0026 GETMET R6 R2 K16
- 0x58200011, // 0027 LDCONST R8 K17
- 0x58240012, // 0028 LDCONST R9 K18
- 0x542A15A3, // 0029 LDINT R10 5540
- 0x4C2C0000, // 002A LDNIL R11
- 0x5C300A00, // 002B MOVE R12 R5
- 0x8834010F, // 002C GETMBR R13 R0 K15
- 0x7C180E00, // 002D CALL R6 7
- 0x8C180905, // 002E GETMET R6 R4 K5
- 0x7C180200, // 002F CALL R6 1
- 0x001A2606, // 0030 ADD R6 K19 R6
- 0xB81E0E00, // 0031 GETNGBL R7 K7
- 0x8C1C0F08, // 0032 GETMET R7 R7 K8
- 0x00262806, // 0033 ADD R9 K20 R6
- 0x5828000A, // 0034 LDCONST R10 K10
- 0x7C1C0600, // 0035 CALL R7 3
- 0x8C1C0515, // 0036 GETMET R7 R2 K21
- 0x58240011, // 0037 LDCONST R9 K17
- 0x58280012, // 0038 LDCONST R10 K18
- 0x5C2C0A00, // 0039 MOVE R11 R5
- 0x8830010F, // 003A GETMBR R12 R0 K15
- 0x5C340C00, // 003B MOVE R13 R6
- 0x7C1C0C00, // 003C CALL R7 6
- 0xB81A0E00, // 003D GETNGBL R6 K7
- 0x8C180D16, // 003E GETMET R6 R6 K22
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0C, // 0040 GETMET R6 R6 K12
- 0x5820000D, // 0041 LDCONST R8 K13
- 0x7C180400, // 0042 CALL R6 2
- 0x781A0020, // 0043 JMPF R6 #0065
- 0xB81A0E00, // 0044 GETNGBL R6 K7
- 0x8C180D08, // 0045 GETMET R6 R6 K8
- 0x60200018, // 0046 GETGBL R8 G24
- 0x5824000E, // 0047 LDCONST R9 K14
- 0x58280016, // 0048 LDCONST R10 K22
- 0x5C2C0A00, // 0049 MOVE R11 R5
- 0x88300117, // 004A GETMBR R12 R0 K23
- 0x7C200800, // 004B CALL R8 4
- 0x5824000A, // 004C LDCONST R9 K10
- 0x7C180600, // 004D CALL R6 3
- 0x8C180510, // 004E GETMET R6 R2 K16
- 0x58200011, // 004F LDCONST R8 K17
- 0x58240012, // 0050 LDCONST R9 K18
- 0x542A15A3, // 0051 LDINT R10 5540
- 0x4C2C0000, // 0052 LDNIL R11
- 0x5C300A00, // 0053 MOVE R12 R5
- 0x88340117, // 0054 GETMBR R13 R0 K23
- 0x7C180E00, // 0055 CALL R6 7
- 0x8C180905, // 0056 GETMET R6 R4 K5
- 0x7C180200, // 0057 CALL R6 1
- 0x001A2606, // 0058 ADD R6 K19 R6
- 0xB81E0E00, // 0059 GETNGBL R7 K7
- 0x8C1C0F08, // 005A GETMET R7 R7 K8
- 0x00262806, // 005B ADD R9 K20 R6
- 0x5828000A, // 005C LDCONST R10 K10
- 0x7C1C0600, // 005D CALL R7 3
- 0x8C1C0515, // 005E GETMET R7 R2 K21
- 0x58240011, // 005F LDCONST R9 K17
- 0x58280012, // 0060 LDCONST R10 K18
- 0x5C2C0A00, // 0061 MOVE R11 R5
- 0x88300117, // 0062 GETMBR R12 R0 K23
- 0x5C340C00, // 0063 MOVE R13 R6
- 0x7C1C0C00, // 0064 CALL R7 6
- 0xA8040001, // 0065 EXBLK 1 1
- 0x70020010, // 0066 JMP #0078
- 0xAC0C0002, // 0067 CATCH R3 0 2
- 0x7002000D, // 0068 JMP #0077
- 0xB8160E00, // 0069 GETNGBL R5 K7
- 0x8C140B08, // 006A GETMET R5 R5 K8
- 0x601C0008, // 006B GETGBL R7 G8
- 0x5C200600, // 006C MOVE R8 R3
- 0x7C1C0200, // 006D CALL R7 1
- 0x001E3007, // 006E ADD R7 K24 R7
- 0x001C0F19, // 006F ADD R7 R7 K25
- 0x60200008, // 0070 GETGBL R8 G8
- 0x5C240800, // 0071 MOVE R9 R4
- 0x7C200200, // 0072 CALL R8 1
- 0x001C0E08, // 0073 ADD R7 R7 R8
- 0x5820001A, // 0074 LDCONST R8 K26
- 0x7C140600, // 0075 CALL R5 3
- 0x70020000, // 0076 JMP #0078
- 0xB0080000, // 0077 RAISE 2 R0 R0
- 0x80000000, // 0078 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: stop_basic_commissioning
-********************************************************************/
-be_local_closure(Matter_Device_stop_basic_commissioning, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(is_root_commissioning_open),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(publish_result),
- /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D),
- /* K4 */ be_nested_str_weak(Matter),
- /* K5 */ be_nested_str_weak(commissioning_open),
- /* K6 */ be_nested_str_weak(mdns_remove_PASE),
- /* K7 */ be_nested_str_weak(commissioning_iterations),
- /* K8 */ be_nested_str_weak(commissioning_discriminator),
- /* K9 */ be_nested_str_weak(commissioning_salt),
- /* K10 */ be_nested_str_weak(commissioning_w0),
- /* K11 */ be_nested_str_weak(commissioning_L),
- /* K12 */ be_nested_str_weak(commissioning_admin_fabric),
- }),
- be_str_weak(stop_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x78060004, // 0002 JMPF R1 #0008
- 0xB8060200, // 0003 GETNGBL R1 K1
- 0x8C040302, // 0004 GETMET R1 R1 K2
- 0x580C0003, // 0005 LDCONST R3 K3
- 0x58100004, // 0006 LDCONST R4 K4
- 0x7C040600, // 0007 CALL R1 3
- 0x4C040000, // 0008 LDNIL R1
- 0x90020A01, // 0009 SETMBR R0 K5 R1
- 0x8C040106, // 000A GETMET R1 R0 K6
- 0x7C040200, // 000B CALL R1 1
- 0x4C040000, // 000C LDNIL R1
- 0x90020E01, // 000D SETMBR R0 K7 R1
- 0x4C040000, // 000E LDNIL R1
- 0x90021001, // 000F SETMBR R0 K8 R1
- 0x4C040000, // 0010 LDNIL R1
- 0x90021201, // 0011 SETMBR R0 K9 R1
- 0x4C040000, // 0012 LDNIL R1
- 0x90021401, // 0013 SETMBR R0 K10 R1
- 0x4C040000, // 0014 LDNIL R1
- 0x90021601, // 0015 SETMBR R0 K11 R1
- 0x4C040000, // 0016 LDNIL R1
- 0x90021801, // 0017 SETMBR R0 K12 R1
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: autoconf_sensors_list
-********************************************************************/
-be_local_closure(Matter_Device_autoconf_sensors_list, /* name */
- be_nested_proto(
- 10, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(k2l),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(Temperature),
- /* K3 */ be_nested_str_weak(_X23Temperature),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_nested_str_weak(type),
- /* K6 */ be_nested_str_weak(temperature),
- /* K7 */ be_nested_str_weak(filter),
- /* K8 */ be_nested_str_weak(stop_iteration),
- /* K9 */ be_nested_str_weak(Pressure),
- /* K10 */ be_nested_str_weak(_X23Pressure),
- /* K11 */ be_nested_str_weak(pressure),
- /* K12 */ be_nested_str_weak(Illuminance),
- /* K13 */ be_nested_str_weak(_X23Illuminance),
- /* K14 */ be_nested_str_weak(illuminance),
- /* K15 */ be_nested_str_weak(Humidity),
- /* K16 */ be_nested_str_weak(_X23Humidity),
- /* K17 */ be_nested_str_weak(humidity),
- }),
- be_str_weak(autoconf_sensors_list),
- &be_const_str_solidified,
- ( &(const binstruction[119]) { /* code */
- 0x60080012, // 0000 GETGBL R2 G18
- 0x7C080000, // 0001 CALL R2 0
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x8C100100, // 0003 GETMET R4 R0 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x7C100400, // 0005 CALL R4 2
- 0x7C0C0200, // 0006 CALL R3 1
- 0xA8020013, // 0007 EXBLK 0 #001C
- 0x5C100600, // 0008 MOVE R4 R3
- 0x7C100000, // 0009 CALL R4 0
- 0x94140204, // 000A GETIDX R5 R1 R4
- 0x6018000F, // 000B GETGBL R6 G15
- 0x5C1C0A00, // 000C MOVE R7 R5
- 0x60200013, // 000D GETGBL R8 G19
- 0x7C180400, // 000E CALL R6 2
- 0x781A000A, // 000F JMPF R6 #001B
- 0x8C180B01, // 0010 GETMET R6 R5 K1
- 0x58200002, // 0011 LDCONST R8 K2
- 0x7C180400, // 0012 CALL R6 2
- 0x781A0006, // 0013 JMPF R6 #001B
- 0x00180903, // 0014 ADD R6 R4 K3
- 0x8C1C0504, // 0015 GETMET R7 R2 K4
- 0x60240013, // 0016 GETGBL R9 G19
- 0x7C240000, // 0017 CALL R9 0
- 0x98260B06, // 0018 SETIDX R9 K5 K6
- 0x98260E06, // 0019 SETIDX R9 K7 R6
- 0x7C1C0400, // 001A CALL R7 2
- 0x7001FFEB, // 001B JMP #0008
- 0x580C0008, // 001C LDCONST R3 K8
- 0xAC0C0200, // 001D CATCH R3 1 0
- 0xB0080000, // 001E RAISE 2 R0 R0
- 0x600C0010, // 001F GETGBL R3 G16
- 0x8C100100, // 0020 GETMET R4 R0 K0
- 0x5C180200, // 0021 MOVE R6 R1
- 0x7C100400, // 0022 CALL R4 2
- 0x7C0C0200, // 0023 CALL R3 1
- 0xA8020013, // 0024 EXBLK 0 #0039
- 0x5C100600, // 0025 MOVE R4 R3
- 0x7C100000, // 0026 CALL R4 0
- 0x94140204, // 0027 GETIDX R5 R1 R4
- 0x6018000F, // 0028 GETGBL R6 G15
- 0x5C1C0A00, // 0029 MOVE R7 R5
- 0x60200013, // 002A GETGBL R8 G19
- 0x7C180400, // 002B CALL R6 2
- 0x781A000A, // 002C JMPF R6 #0038
- 0x8C180B01, // 002D GETMET R6 R5 K1
- 0x58200009, // 002E LDCONST R8 K9
- 0x7C180400, // 002F CALL R6 2
- 0x781A0006, // 0030 JMPF R6 #0038
- 0x0018090A, // 0031 ADD R6 R4 K10
- 0x8C1C0504, // 0032 GETMET R7 R2 K4
- 0x60240013, // 0033 GETGBL R9 G19
- 0x7C240000, // 0034 CALL R9 0
- 0x98260B0B, // 0035 SETIDX R9 K5 K11
- 0x98260E06, // 0036 SETIDX R9 K7 R6
- 0x7C1C0400, // 0037 CALL R7 2
- 0x7001FFEB, // 0038 JMP #0025
- 0x580C0008, // 0039 LDCONST R3 K8
- 0xAC0C0200, // 003A CATCH R3 1 0
- 0xB0080000, // 003B RAISE 2 R0 R0
- 0x600C0010, // 003C GETGBL R3 G16
- 0x8C100100, // 003D GETMET R4 R0 K0
- 0x5C180200, // 003E MOVE R6 R1
- 0x7C100400, // 003F CALL R4 2
- 0x7C0C0200, // 0040 CALL R3 1
- 0xA8020013, // 0041 EXBLK 0 #0056
- 0x5C100600, // 0042 MOVE R4 R3
- 0x7C100000, // 0043 CALL R4 0
- 0x94140204, // 0044 GETIDX R5 R1 R4
- 0x6018000F, // 0045 GETGBL R6 G15
- 0x5C1C0A00, // 0046 MOVE R7 R5
- 0x60200013, // 0047 GETGBL R8 G19
- 0x7C180400, // 0048 CALL R6 2
- 0x781A000A, // 0049 JMPF R6 #0055
- 0x8C180B01, // 004A GETMET R6 R5 K1
- 0x5820000C, // 004B LDCONST R8 K12
- 0x7C180400, // 004C CALL R6 2
- 0x781A0006, // 004D JMPF R6 #0055
- 0x0018090D, // 004E ADD R6 R4 K13
- 0x8C1C0504, // 004F GETMET R7 R2 K4
- 0x60240013, // 0050 GETGBL R9 G19
- 0x7C240000, // 0051 CALL R9 0
- 0x98260B0E, // 0052 SETIDX R9 K5 K14
- 0x98260E06, // 0053 SETIDX R9 K7 R6
- 0x7C1C0400, // 0054 CALL R7 2
- 0x7001FFEB, // 0055 JMP #0042
- 0x580C0008, // 0056 LDCONST R3 K8
- 0xAC0C0200, // 0057 CATCH R3 1 0
- 0xB0080000, // 0058 RAISE 2 R0 R0
- 0x600C0010, // 0059 GETGBL R3 G16
- 0x8C100100, // 005A GETMET R4 R0 K0
- 0x5C180200, // 005B MOVE R6 R1
- 0x7C100400, // 005C CALL R4 2
- 0x7C0C0200, // 005D CALL R3 1
- 0xA8020013, // 005E EXBLK 0 #0073
- 0x5C100600, // 005F MOVE R4 R3
- 0x7C100000, // 0060 CALL R4 0
- 0x94140204, // 0061 GETIDX R5 R1 R4
- 0x6018000F, // 0062 GETGBL R6 G15
- 0x5C1C0A00, // 0063 MOVE R7 R5
- 0x60200013, // 0064 GETGBL R8 G19
- 0x7C180400, // 0065 CALL R6 2
- 0x781A000A, // 0066 JMPF R6 #0072
- 0x8C180B01, // 0067 GETMET R6 R5 K1
- 0x5820000F, // 0068 LDCONST R8 K15
- 0x7C180400, // 0069 CALL R6 2
- 0x781A0006, // 006A JMPF R6 #0072
- 0x00180910, // 006B ADD R6 R4 K16
- 0x8C1C0504, // 006C GETMET R7 R2 K4
- 0x60240013, // 006D GETGBL R9 G19
- 0x7C240000, // 006E CALL R9 0
- 0x98260B11, // 006F SETIDX R9 K5 K17
- 0x98260E06, // 0070 SETIDX R9 K7 R6
- 0x7C1C0400, // 0071 CALL R7 2
- 0x7001FFEB, // 0072 JMP #005F
- 0x580C0008, // 0073 LDCONST R3 K8
- 0xAC0C0200, // 0074 CATCH R3 1 0
- 0xB0080000, // 0075 RAISE 2 R0 R0
- 0x80040400, // 0076 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: clean_remotes
-********************************************************************/
-be_local_closure(Matter_Device_clean_remotes, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(http_remotes),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_nested_str_weak(plugins),
- /* K5 */ be_nested_str_weak(get),
- /* K6 */ be_nested_str_weak(http_remote),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(keys),
- /* K10 */ be_nested_str_weak(push),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(log),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20),
- /* K14 */ be_nested_str_weak(addr),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str_weak(close),
- /* K17 */ be_nested_str_weak(remove),
- }),
- be_str_weak(clean_remotes),
- &be_const_str_solidified,
- ( &(const binstruction[81]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x780A004C, // 0002 JMPF R2 #0050
- 0x60080013, // 0003 GETGBL R2 G19
- 0x7C080000, // 0004 CALL R2 0
- 0x600C0010, // 0005 GETGBL R3 G16
- 0x88100101, // 0006 GETMBR R4 R0 K1
- 0x7C0C0200, // 0007 CALL R3 1
- 0xA8020003, // 0008 EXBLK 0 #000D
- 0x5C100600, // 0009 MOVE R4 R3
- 0x7C100000, // 000A CALL R4 0
- 0x98080902, // 000B SETIDX R2 R4 K2
- 0x7001FFFB, // 000C JMP #0009
- 0x580C0003, // 000D LDCONST R3 K3
- 0xAC0C0200, // 000E CATCH R3 1 0
- 0xB0080000, // 000F RAISE 2 R0 R0
- 0x600C0010, // 0010 GETGBL R3 G16
- 0x88100104, // 0011 GETMBR R4 R0 K4
- 0x7C0C0200, // 0012 CALL R3 1
- 0xA802000F, // 0013 EXBLK 0 #0024
- 0x5C100600, // 0014 MOVE R4 R3
- 0x7C100000, // 0015 CALL R4 0
- 0x8C140305, // 0016 GETMET R5 R1 K5
- 0x5C1C0800, // 0017 MOVE R7 R4
- 0x58200006, // 0018 LDCONST R8 K6
- 0x7C140600, // 0019 CALL R5 3
- 0x4C180000, // 001A LDNIL R6
- 0x20180A06, // 001B NE R6 R5 R6
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180507, // 001D GETMET R6 R2 K7
- 0x5C200A00, // 001E MOVE R8 R5
- 0x58240002, // 001F LDCONST R9 K2
- 0x7C180600, // 0020 CALL R6 3
- 0x00180D08, // 0021 ADD R6 R6 K8
- 0x98080A06, // 0022 SETIDX R2 R5 R6
- 0x7001FFEF, // 0023 JMP #0014
- 0x580C0003, // 0024 LDCONST R3 K3
- 0xAC0C0200, // 0025 CATCH R3 1 0
- 0xB0080000, // 0026 RAISE 2 R0 R0
- 0x600C0012, // 0027 GETGBL R3 G18
- 0x7C0C0000, // 0028 CALL R3 0
- 0x60100010, // 0029 GETGBL R4 G16
- 0x8C140509, // 002A GETMET R5 R2 K9
- 0x7C140200, // 002B CALL R5 1
- 0x7C100200, // 002C CALL R4 1
- 0xA8020008, // 002D EXBLK 0 #0037
- 0x5C140800, // 002E MOVE R5 R4
- 0x7C140000, // 002F CALL R5 0
- 0x94180405, // 0030 GETIDX R6 R2 R5
- 0x1C180D02, // 0031 EQ R6 R6 K2
- 0x781A0002, // 0032 JMPF R6 #0036
- 0x8C18070A, // 0033 GETMET R6 R3 K10
- 0x5C200A00, // 0034 MOVE R8 R5
- 0x7C180400, // 0035 CALL R6 2
- 0x7001FFF6, // 0036 JMP #002E
- 0x58100003, // 0037 LDCONST R4 K3
- 0xAC100200, // 0038 CATCH R4 1 0
- 0xB0080000, // 0039 RAISE 2 R0 R0
- 0x60100010, // 003A GETGBL R4 G16
- 0x5C140600, // 003B MOVE R5 R3
- 0x7C100200, // 003C CALL R4 1
- 0xA802000E, // 003D EXBLK 0 #004D
- 0x5C140800, // 003E MOVE R5 R4
- 0x7C140000, // 003F CALL R5 0
- 0xB81A1600, // 0040 GETNGBL R6 K11
- 0x8C180D0C, // 0041 GETMET R6 R6 K12
- 0x88200B0E, // 0042 GETMBR R8 R5 K14
- 0x00221A08, // 0043 ADD R8 K13 R8
- 0x5824000F, // 0044 LDCONST R9 K15
- 0x7C180600, // 0045 CALL R6 3
- 0x8C180B10, // 0046 GETMET R6 R5 K16
- 0x7C180200, // 0047 CALL R6 1
- 0x88180101, // 0048 GETMBR R6 R0 K1
- 0x8C180D11, // 0049 GETMET R6 R6 K17
- 0x88200B0E, // 004A GETMBR R8 R5 K14
- 0x7C180400, // 004B CALL R6 2
- 0x7001FFF0, // 004C JMP #003E
- 0x58100003, // 004D LDCONST R4 K3
- 0xAC100200, // 004E CATCH R4 1 0
- 0xB0080000, // 004F RAISE 2 R0 R0
- 0x80000000, // 0050 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_remotes_info
-********************************************************************/
-be_local_closure(Matter_Device_update_remotes_info, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(http_remotes),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(get_info),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(stop_iteration),
- /* K5 */ be_nested_str_weak(plugins_config_remotes),
- }),
- be_str_weak(update_remotes_info),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0x60040013, // 0000 GETGBL R1 G19
- 0x7C040000, // 0001 CALL R1 0
- 0x88080100, // 0002 GETMBR R2 R0 K0
- 0x4C0C0000, // 0003 LDNIL R3
- 0x20080403, // 0004 NE R2 R2 R3
- 0x780A0018, // 0005 JMPF R2 #001F
- 0x60080010, // 0006 GETGBL R2 G16
- 0x880C0100, // 0007 GETMBR R3 R0 K0
- 0x8C0C0701, // 0008 GETMET R3 R3 K1
- 0x7C0C0200, // 0009 CALL R3 1
- 0x7C080200, // 000A CALL R2 1
- 0xA802000F, // 000B EXBLK 0 #001C
- 0x5C0C0400, // 000C MOVE R3 R2
- 0x7C0C0000, // 000D CALL R3 0
- 0x88100100, // 000E GETMBR R4 R0 K0
- 0x94100803, // 000F GETIDX R4 R4 R3
- 0x8C100902, // 0010 GETMET R4 R4 K2
- 0x7C100200, // 0011 CALL R4 1
- 0x4C140000, // 0012 LDNIL R5
- 0x20140805, // 0013 NE R5 R4 R5
- 0x78160005, // 0014 JMPF R5 #001B
- 0x6014000C, // 0015 GETGBL R5 G12
- 0x5C180800, // 0016 MOVE R6 R4
- 0x7C140200, // 0017 CALL R5 1
- 0x24140B03, // 0018 GT R5 R5 K3
- 0x78160000, // 0019 JMPF R5 #001B
- 0x98040604, // 001A SETIDX R1 R3 R4
- 0x7001FFEF, // 001B JMP #000C
- 0x58080004, // 001C LDCONST R2 K4
- 0xAC080200, // 001D CATCH R2 1 0
- 0xB0080000, // 001E RAISE 2 R0 R0
- 0x90020A01, // 001F SETMBR R0 K5 R1
- 0x80040200, // 0020 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_plugin_class_displayname
-********************************************************************/
-be_local_closure(Matter_Device_get_plugin_class_displayname, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_classes),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(DISPLAY_NAME),
- /* K3 */ be_nested_str_weak(),
- }),
- be_str_weak(get_plugin_class_displayname),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x780A0001, // 0004 JMPF R2 #0007
- 0x880C0502, // 0005 GETMBR R3 R2 K2
- 0x70020000, // 0006 JMP #0008
- 0x580C0003, // 0007 LDCONST R3 K3
- 0x80040600, // 0008 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_attribute_read_solo
-********************************************************************/
-be_local_closure(Matter_Device_process_attribute_read_solo, /* name */
- be_nested_proto(
- 10, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- /* K1 */ be_nested_str_weak(cluster),
- /* K2 */ be_nested_str_weak(attribute),
- /* K3 */ be_nested_str_weak(find_plugin_by_endpoint),
- /* K4 */ be_nested_str_weak(status),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
- /* K7 */ be_nested_str_weak(contains_cluster),
- /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
- /* K9 */ be_nested_str_weak(contains_attribute),
- /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- }),
- be_str_weak(process_attribute_read_solo),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
- 0x4C140000, // 0003 LDNIL R5
- 0x1C140405, // 0004 EQ R5 R2 R5
- 0x74160005, // 0005 JMPT R5 #000C
- 0x4C140000, // 0006 LDNIL R5
- 0x1C140605, // 0007 EQ R5 R3 R5
- 0x74160002, // 0008 JMPT R5 #000C
- 0x4C140000, // 0009 LDNIL R5
- 0x1C140805, // 000A EQ R5 R4 R5
- 0x78160001, // 000B JMPF R5 #000E
- 0x4C140000, // 000C LDNIL R5
- 0x80040A00, // 000D RET 1 R5
- 0x8C140103, // 000E GETMET R5 R0 K3
- 0x5C1C0400, // 000F MOVE R7 R2
- 0x7C140400, // 0010 CALL R5 2
- 0x4C180000, // 0011 LDNIL R6
- 0x1C180A06, // 0012 EQ R6 R5 R6
- 0x781A0004, // 0013 JMPF R6 #0019
- 0xB81A0A00, // 0014 GETNGBL R6 K5
- 0x88180D06, // 0015 GETMBR R6 R6 K6
- 0x90060806, // 0016 SETMBR R1 K4 R6
- 0x4C180000, // 0017 LDNIL R6
- 0x80040C00, // 0018 RET 1 R6
- 0x8C180B07, // 0019 GETMET R6 R5 K7
- 0x5C200600, // 001A MOVE R8 R3
- 0x7C180400, // 001B CALL R6 2
- 0x741A0004, // 001C JMPT R6 #0022
- 0xB81A0A00, // 001D GETNGBL R6 K5
- 0x88180D08, // 001E GETMBR R6 R6 K8
- 0x90060806, // 001F SETMBR R1 K4 R6
- 0x4C180000, // 0020 LDNIL R6
- 0x80040C00, // 0021 RET 1 R6
- 0x8C180B09, // 0022 GETMET R6 R5 K9
- 0x5C200600, // 0023 MOVE R8 R3
- 0x5C240800, // 0024 MOVE R9 R4
- 0x7C180600, // 0025 CALL R6 3
- 0x741A0004, // 0026 JMPT R6 #002C
- 0xB81A0A00, // 0027 GETNGBL R6 K5
- 0x88180D0A, // 0028 GETMBR R6 R6 K10
- 0x90060806, // 0029 SETMBR R1 K4 R6
- 0x4C180000, // 002A LDNIL R6
- 0x80040C00, // 002B RET 1 R6
- 0x80040A00, // 002C RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _trigger_read_sensors
-********************************************************************/
-be_local_closure(Matter_Device__trigger_read_sensors, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(read_sensors),
- /* K3 */ be_nested_str_weak(load),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(plugins),
- /* K6 */ be_nested_str_weak(parse_sensors),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20),
- /* K10 */ be_const_int(3),
- }),
- be_str_weak(_trigger_read_sensors),
- &be_const_str_solidified,
- ( &(const binstruction[37]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xB80A0200, // 0001 GETNGBL R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x4C0C0000, // 0004 LDNIL R3
- 0x1C0C0403, // 0005 EQ R3 R2 R3
- 0x780E0000, // 0006 JMPF R3 #0008
- 0x80000600, // 0007 RET 0
- 0x8C0C0303, // 0008 GETMET R3 R1 K3
- 0x5C140400, // 0009 MOVE R5 R2
- 0x7C0C0400, // 000A CALL R3 2
- 0x4C100000, // 000B LDNIL R4
- 0x20100604, // 000C NE R4 R3 R4
- 0x7812000D, // 000D JMPF R4 #001C
- 0x58100004, // 000E LDCONST R4 K4
- 0x6014000C, // 000F GETGBL R5 G12
- 0x88180105, // 0010 GETMBR R6 R0 K5
- 0x7C140200, // 0011 CALL R5 1
- 0x14140805, // 0012 LT R5 R4 R5
- 0x78160006, // 0013 JMPF R5 #001B
- 0x88140105, // 0014 GETMBR R5 R0 K5
- 0x94140A04, // 0015 GETIDX R5 R5 R4
- 0x8C140B06, // 0016 GETMET R5 R5 K6
- 0x5C1C0600, // 0017 MOVE R7 R3
- 0x7C140400, // 0018 CALL R5 2
- 0x00100907, // 0019 ADD R4 R4 K7
- 0x7001FFF3, // 001A JMP #000F
- 0x70020007, // 001B JMP #0024
- 0xB8120200, // 001C GETNGBL R4 K1
- 0x8C100908, // 001D GETMET R4 R4 K8
- 0x60180008, // 001E GETGBL R6 G8
- 0x5C1C0400, // 001F MOVE R7 R2
- 0x7C180200, // 0020 CALL R6 1
- 0x001A1206, // 0021 ADD R6 K9 R6
- 0x581C000A, // 0022 LDCONST R7 K10
- 0x7C100600, // 0023 CALL R4 3
- 0x80000000, // 0024 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: received_ack
-********************************************************************/
-be_local_closure(Matter_Device_received_ack, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(received_ack),
- }),
- be_str_weak(received_ack),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_second
-********************************************************************/
-be_local_closure(Matter_Device_every_second, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(every_second),
- /* K2 */ be_nested_str_weak(message_handler),
- /* K3 */ be_nested_str_weak(commissioning_open),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(time_reached),
- }),
- be_str_weak(every_second),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x88040102, // 0003 GETMBR R1 R0 K2
- 0x8C040301, // 0004 GETMET R1 R1 K1
- 0x7C040200, // 0005 CALL R1 1
- 0x88040103, // 0006 GETMBR R1 R0 K3
- 0x4C080000, // 0007 LDNIL R2
- 0x20040202, // 0008 NE R1 R1 R2
- 0x78060006, // 0009 JMPF R1 #0011
- 0xB8060800, // 000A GETNGBL R1 K4
- 0x8C040305, // 000B GETMET R1 R1 K5
- 0x880C0103, // 000C GETMBR R3 R0 K3
- 0x7C040400, // 000D CALL R1 2
- 0x78060001, // 000E JMPF R1 #0011
- 0x4C040000, // 000F LDNIL R1
- 0x90020601, // 0010 SETMBR R0 K3 R1
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_basic_commissioning
-********************************************************************/
-be_local_closure(Matter_Device_start_basic_commissioning, /* name */
- be_nested_proto(
- 13, /* nstack */
- 8, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns_announce_PASE),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Wifi_X23Connected),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0000, // 0006 LDCONST R3 K0
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns_announce_PASE),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Eth_X23Connected),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0000, // 0006 LDCONST R3 K0
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(commissioning_iterations),
- /* K4 */ be_nested_str_weak(commissioning_discriminator),
- /* K5 */ be_nested_str_weak(commissioning_salt),
- /* K6 */ be_nested_str_weak(commissioning_w0),
- /* K7 */ be_nested_str_weak(commissioning_L),
- /* K8 */ be_nested_str_weak(commissioning_admin_fabric),
- /* K9 */ be_nested_str_weak(wifi),
- /* K10 */ be_nested_str_weak(up),
- /* K11 */ be_nested_str_weak(eth),
- /* K12 */ be_nested_str_weak(mdns_announce_PASE),
- /* K13 */ be_nested_str_weak(add_rule),
- /* K14 */ be_nested_str_weak(Wifi_X23Connected),
- /* K15 */ be_nested_str_weak(Eth_X23Connected),
- }),
- be_str_weak(start_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xB8220200, // 0000 GETNGBL R8 K1
- 0x8C201102, // 0001 GETMET R8 R8 K2
- 0x7C200200, // 0002 CALL R8 1
- 0x542603E7, // 0003 LDINT R9 1000
- 0x08240209, // 0004 MUL R9 R1 R9
- 0x00201009, // 0005 ADD R8 R8 R9
- 0x90020008, // 0006 SETMBR R0 K0 R8
- 0x90020602, // 0007 SETMBR R0 K3 R2
- 0x90020803, // 0008 SETMBR R0 K4 R3
- 0x90020A04, // 0009 SETMBR R0 K5 R4
- 0x90020C05, // 000A SETMBR R0 K6 R5
- 0x90020E06, // 000B SETMBR R0 K7 R6
- 0x90021007, // 000C SETMBR R0 K8 R7
- 0xB8220200, // 000D GETNGBL R8 K1
- 0x8C201109, // 000E GETMET R8 R8 K9
- 0x7C200200, // 000F CALL R8 1
- 0x9420110A, // 0010 GETIDX R8 R8 K10
- 0x74220004, // 0011 JMPT R8 #0017
- 0xB8220200, // 0012 GETNGBL R8 K1
- 0x8C20110B, // 0013 GETMET R8 R8 K11
- 0x7C200200, // 0014 CALL R8 1
- 0x9420110A, // 0015 GETIDX R8 R8 K10
- 0x78220002, // 0016 JMPF R8 #001A
- 0x8C20010C, // 0017 GETMET R8 R0 K12
+ 0xB80E0200, // 0003 GETNGBL R3 K1
+ 0x880C0702, // 0004 GETMBR R3 R3 K2
+ 0x50100000, // 0005 LDBOOL R4 0 0
+ 0xA4160600, // 0006 IMPORT R5 K3
+ 0x8C180B04, // 0007 GETMET R6 R5 K4
+ 0x7C180200, // 0008 CALL R6 1
+ 0x4C1C0000, // 0009 LDNIL R7
+ 0x201C0C07, // 000A NE R7 R6 R7
+ 0x781E0024, // 000B JMPF R7 #0031
+ 0x601C000C, // 000C GETGBL R7 G12
+ 0x8C200D05, // 000D GETMET R8 R6 K5
+ 0x58280006, // 000E LDCONST R10 K6
+ 0x582C0007, // 000F LDCONST R11 K7
+ 0x7C200600, // 0010 CALL R8 3
+ 0x7C1C0200, // 0011 CALL R7 1
+ 0x24200F08, // 0012 GT R8 R7 K8
+ 0x7822001C, // 0013 JMPF R8 #0031
+ 0x1C200F09, // 0014 EQ R8 R7 K9
+ 0x78220007, // 0015 JMPF R8 #001E
+ 0x60200008, // 0016 GETGBL R8 G8
+ 0x5C240600, // 0017 MOVE R9 R3
0x7C200200, // 0018 CALL R8 1
- 0x7002000B, // 0019 JMP #0026
- 0xB8220200, // 001A GETNGBL R8 K1
- 0x8C20110D, // 001B GETMET R8 R8 K13
- 0x5828000E, // 001C LDCONST R10 K14
- 0x842C0000, // 001D CLOSURE R11 P0
- 0x5830000C, // 001E LDCONST R12 K12
- 0x7C200800, // 001F CALL R8 4
- 0xB8220200, // 0020 GETNGBL R8 K1
- 0x8C20110D, // 0021 GETMET R8 R8 K13
- 0x5828000F, // 0022 LDCONST R10 K15
- 0x842C0001, // 0023 CLOSURE R11 P1
- 0x5830000C, // 0024 LDCONST R12 K12
- 0x7C200800, // 0025 CALL R8 4
- 0xA0000000, // 0026 CLOSE R0
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: compute_manual_pairing_code
-********************************************************************/
-be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(root_discriminator),
- /* K1 */ be_nested_str_weak(root_passcode),
- /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Verhoeff),
- /* K5 */ be_nested_str_weak(checksum),
- }),
- be_str_weak(compute_manual_pairing_code),
- &be_const_str_solidified,
- ( &(const binstruction[30]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x540A0FFE, // 0001 LDINT R2 4095
- 0x2C040202, // 0002 AND R1 R1 R2
- 0x540A0009, // 0003 LDINT R2 10
- 0x3C040202, // 0004 SHR R1 R1 R2
- 0x88080100, // 0005 GETMBR R2 R0 K0
- 0x540E02FF, // 0006 LDINT R3 768
- 0x2C080403, // 0007 AND R2 R2 R3
- 0x540E0005, // 0008 LDINT R3 6
- 0x38080403, // 0009 SHL R2 R2 R3
- 0x880C0101, // 000A GETMBR R3 R0 K1
- 0x54123FFE, // 000B LDINT R4 16383
- 0x2C0C0604, // 000C AND R3 R3 R4
- 0x30080403, // 000D OR R2 R2 R3
- 0x880C0101, // 000E GETMBR R3 R0 K1
- 0x5412000D, // 000F LDINT R4 14
- 0x3C0C0604, // 0010 SHR R3 R3 R4
- 0x60100018, // 0011 GETGBL R4 G24
- 0x58140002, // 0012 LDCONST R5 K2
- 0x5C180200, // 0013 MOVE R6 R1
- 0x5C1C0400, // 0014 MOVE R7 R2
- 0x5C200600, // 0015 MOVE R8 R3
- 0x7C100800, // 0016 CALL R4 4
- 0xB8160600, // 0017 GETNGBL R5 K3
- 0x88140B04, // 0018 GETMBR R5 R5 K4
- 0x8C140B05, // 0019 GETMET R5 R5 K5
- 0x5C1C0800, // 001A MOVE R7 R4
- 0x7C140400, // 001B CALL R5 2
- 0x00100805, // 001C ADD R4 R4 R5
- 0x80040800, // 001D RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_plugin_remote_info
-********************************************************************/
-be_local_closure(Matter_Device_get_plugin_remote_info, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_config_remotes),
- /* K1 */ be_nested_str_weak(find),
- }),
- be_str_weak(get_plugin_remote_info),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x60140013, // 0003 GETGBL R5 G19
- 0x7C140000, // 0004 CALL R5 0
- 0x7C080600, // 0005 CALL R2 3
- 0x80040400, // 0006 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_fabrics_saved
-********************************************************************/
-be_local_closure(Matter_Device_event_fabrics_saved, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(count_active_fabrics),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(plugins_persist),
- /* K4 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(event_fabrics_saved),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x24040302, // 0003 GT R1 R1 K2
- 0x78060005, // 0004 JMPF R1 #000B
- 0x88040103, // 0005 GETMBR R1 R0 K3
- 0x74060003, // 0006 JMPT R1 #000B
- 0x50040200, // 0007 LDBOOL R1 1 0
- 0x90020601, // 0008 SETMBR R0 K3 R1
- 0x8C040104, // 0009 GETMET R1 R0 K4
- 0x7C040200, // 000A CALL R1 1
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: autoconf_device
-********************************************************************/
-be_local_closure(Matter_Device_autoconf_device, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(plugins_persist),
- /* K4 */ be_nested_str_weak(plugins_config),
- /* K5 */ be_nested_str_weak(autoconf_device_map),
- /* K6 */ be_nested_str_weak(plugins_config_remotes),
- /* K7 */ be_nested_str_weak(adjust_next_ep),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(_instantiate_plugins_from_config),
- /* K13 */ be_nested_str_weak(sessions),
- /* K14 */ be_nested_str_weak(count_active_fabrics),
- /* K15 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(autoconf_device),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x6008000C, // 0001 GETGBL R2 G12
- 0x880C0101, // 0002 GETMBR R3 R0 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x24080502, // 0004 GT R2 R2 K2
- 0x780A0000, // 0005 JMPF R2 #0007
- 0x80000400, // 0006 RET 0
- 0x88080103, // 0007 GETMBR R2 R0 K3
- 0x740A000F, // 0008 JMPT R2 #0019
- 0x8C080105, // 0009 GETMET R2 R0 K5
- 0x7C080200, // 000A CALL R2 1
- 0x90020802, // 000B SETMBR R0 K4 R2
- 0x60080013, // 000C GETGBL R2 G19
- 0x7C080000, // 000D CALL R2 0
- 0x90020C02, // 000E SETMBR R0 K6 R2
- 0x8C080107, // 000F GETMET R2 R0 K7
- 0x7C080200, // 0010 CALL R2 1
- 0xB80A1000, // 0011 GETNGBL R2 K8
- 0x8C080509, // 0012 GETMET R2 R2 K9
- 0x60100008, // 0013 GETGBL R4 G8
- 0x88140104, // 0014 GETMBR R5 R0 K4
- 0x7C100200, // 0015 CALL R4 1
- 0x00121404, // 0016 ADD R4 K10 R4
- 0x5814000B, // 0017 LDCONST R5 K11
- 0x7C080600, // 0018 CALL R2 3
- 0x8C08010C, // 0019 GETMET R2 R0 K12
- 0x88100104, // 001A GETMBR R4 R0 K4
- 0x7C080400, // 001B CALL R2 2
- 0x88080103, // 001C GETMBR R2 R0 K3
- 0x740A0008, // 001D JMPT R2 #0027
- 0x8808010D, // 001E GETMBR R2 R0 K13
- 0x8C08050E, // 001F GETMET R2 R2 K14
- 0x7C080200, // 0020 CALL R2 1
- 0x24080502, // 0021 GT R2 R2 K2
- 0x780A0003, // 0022 JMPF R2 #0027
- 0x50080200, // 0023 LDBOOL R2 1 0
- 0x90020602, // 0024 SETMBR R0 K3 R2
- 0x8C08010F, // 0025 GETMET R2 R0 K15
- 0x7C080200, // 0026 CALL R2 1
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_root_basic_commissioning
-********************************************************************/
-be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
- be_nested_proto(
- 13, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(PASE_TIMEOUT),
- /* K1 */ be_nested_str_weak(compute_manual_pairing_code),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s),
- /* K5 */ be_const_int(2),
- /* K6 */ be_nested_str_weak(compute_qrcode_content),
- /* K7 */ be_nested_str_weak(publish_result),
- /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D),
- /* K9 */ be_nested_str_weak(Matter),
- /* K10 */ be_nested_str_weak(_compute_pbkdf),
- /* K11 */ be_nested_str_weak(root_passcode),
- /* K12 */ be_nested_str_weak(root_iterations),
- /* K13 */ be_nested_str_weak(root_salt),
- /* K14 */ be_nested_str_weak(start_basic_commissioning),
- /* K15 */ be_nested_str_weak(root_discriminator),
- /* K16 */ be_nested_str_weak(root_w0),
- /* K17 */ be_nested_str_weak(root_L),
- }),
- be_str_weak(start_root_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0000, // 0002 JMPF R2 #0004
- 0x88040100, // 0003 GETMBR R1 R0 K0
- 0x8C080101, // 0004 GETMET R2 R0 K1
- 0x7C080200, // 0005 CALL R2 1
- 0xB80E0400, // 0006 GETNGBL R3 K2
- 0x8C0C0703, // 0007 GETMET R3 R3 K3
- 0x60140018, // 0008 GETGBL R5 G24
- 0x58180004, // 0009 LDCONST R6 K4
- 0x5C1C0400, // 000A MOVE R7 R2
- 0x7C140400, // 000B CALL R5 2
- 0x58180005, // 000C LDCONST R6 K5
- 0x7C0C0600, // 000D CALL R3 3
- 0x8C0C0106, // 000E GETMET R3 R0 K6
- 0x7C0C0200, // 000F CALL R3 1
- 0xB8120400, // 0010 GETNGBL R4 K2
- 0x8C100907, // 0011 GETMET R4 R4 K7
- 0x60180018, // 0012 GETGBL R6 G24
- 0x581C0008, // 0013 LDCONST R7 K8
- 0x5C200400, // 0014 MOVE R8 R2
- 0x5C240600, // 0015 MOVE R9 R3
- 0x7C180600, // 0016 CALL R6 3
- 0x581C0009, // 0017 LDCONST R7 K9
- 0x7C100600, // 0018 CALL R4 3
- 0x8C10010A, // 0019 GETMET R4 R0 K10
- 0x8818010B, // 001A GETMBR R6 R0 K11
- 0x881C010C, // 001B GETMBR R7 R0 K12
- 0x8820010D, // 001C GETMBR R8 R0 K13
- 0x7C100800, // 001D CALL R4 4
- 0x8C10010E, // 001E GETMET R4 R0 K14
- 0x5C180200, // 001F MOVE R6 R1
- 0x881C010C, // 0020 GETMBR R7 R0 K12
- 0x8820010F, // 0021 GETMBR R8 R0 K15
- 0x8824010D, // 0022 GETMBR R9 R0 K13
- 0x88280110, // 0023 GETMBR R10 R0 K16
- 0x882C0111, // 0024 GETMBR R11 R0 K17
- 0x4C300000, // 0025 LDNIL R12
- 0x7C101000, // 0026 CALL R4 8
- 0x80000000, // 0027 RET 0
+ 0x60240013, // 0019 GETGBL R9 G19
+ 0x7C240000, // 001A CALL R9 0
+ 0x9826150B, // 001B SETIDX R9 K10 K11
+ 0x98081009, // 001C SETIDX R2 R8 R9
+ 0x70020010, // 001D JMP #002F
+ 0x1C200F0C, // 001E EQ R8 R7 K12
+ 0x78220007, // 001F JMPF R8 #0028
+ 0x60200008, // 0020 GETGBL R8 G8
+ 0x5C240600, // 0021 MOVE R9 R3
+ 0x7C200200, // 0022 CALL R8 1
+ 0x60240013, // 0023 GETGBL R9 G19
+ 0x7C240000, // 0024 CALL R9 0
+ 0x9826150D, // 0025 SETIDX R9 K10 K13
+ 0x98081009, // 0026 SETIDX R2 R8 R9
+ 0x70020006, // 0027 JMP #002F
+ 0x60200008, // 0028 GETGBL R8 G8
+ 0x5C240600, // 0029 MOVE R9 R3
+ 0x7C200200, // 002A CALL R8 1
+ 0x60240013, // 002B GETGBL R9 G19
+ 0x7C240000, // 002C CALL R9 0
+ 0x9826150E, // 002D SETIDX R9 K10 K14
+ 0x98081009, // 002E SETIDX R2 R8 R9
+ 0x50100200, // 002F LDBOOL R4 1 0
+ 0x000C0709, // 0030 ADD R3 R3 K9
+ 0xB81E1E00, // 0031 GETNGBL R7 K15
+ 0x8C1C0F10, // 0032 GETMET R7 R7 K16
+ 0x58240011, // 0033 LDCONST R9 K17
+ 0x50280200, // 0034 LDBOOL R10 1 0
+ 0x7C1C0600, // 0035 CALL R7 3
+ 0x60200012, // 0036 GETGBL R8 G18
+ 0x7C200000, // 0037 CALL R8 0
+ 0xB8261E00, // 0038 GETNGBL R9 K15
+ 0x8C241312, // 0039 GETMET R9 R9 K18
+ 0x602C0008, // 003A GETGBL R11 G8
+ 0x5C300E00, // 003B MOVE R12 R7
+ 0x7C2C0200, // 003C CALL R11 1
+ 0x002E260B, // 003D ADD R11 K19 R11
+ 0x58300014, // 003E LDCONST R12 K20
+ 0x7C240600, // 003F CALL R9 3
+ 0x4C240000, // 0040 LDNIL R9
+ 0x20240E09, // 0041 NE R9 R7 R9
+ 0x7826004F, // 0042 JMPF R9 #0093
+ 0x8C240F15, // 0043 GETMET R9 R7 K21
+ 0x582C0016, // 0044 LDCONST R11 K22
+ 0x7C240400, // 0045 CALL R9 2
+ 0x7826004B, // 0046 JMPF R9 #0093
+ 0x941C0F16, // 0047 GETIDX R7 R7 K22
+ 0x58240008, // 0048 LDCONST R9 K8
+ 0x50280200, // 0049 LDBOOL R10 1 0
+ 0x782A0047, // 004A JMPF R10 #0093
+ 0x60280008, // 004B GETGBL R10 G8
+ 0x5C2C1200, // 004C MOVE R11 R9
+ 0x7C280200, // 004D CALL R10 1
+ 0x002A2E0A, // 004E ADD R10 K23 R10
+ 0x8C2C0F15, // 004F GETMET R11 R7 K21
+ 0x5C341400, // 0050 MOVE R13 R10
+ 0x7C2C0400, // 0051 CALL R11 2
+ 0x742E0000, // 0052 JMPT R11 #0054
+ 0x7002003E, // 0053 JMP #0093
+ 0x942C0E0A, // 0054 GETIDX R11 R7 R10
+ 0xB8321E00, // 0055 GETNGBL R12 K15
+ 0x8C301912, // 0056 GETMET R12 R12 K18
+ 0x60380018, // 0057 GETGBL R14 G24
+ 0x583C0018, // 0058 LDCONST R15 K24
+ 0x5C401400, // 0059 MOVE R16 R10
+ 0x60440008, // 005A GETGBL R17 G8
+ 0x5C481600, // 005B MOVE R18 R11
+ 0x7C440200, // 005C CALL R17 1
+ 0x7C380600, // 005D CALL R14 3
+ 0x583C0014, // 005E LDCONST R15 K20
+ 0x7C300600, // 005F CALL R12 3
+ 0x8C301705, // 0060 GETMET R12 R11 K5
+ 0x58380019, // 0061 LDCONST R14 K25
+ 0x543DFFFE, // 0062 LDINT R15 -1
+ 0x7C300600, // 0063 CALL R12 3
+ 0x8C341705, // 0064 GETMET R13 R11 K5
+ 0x583C001A, // 0065 LDCONST R15 K26
+ 0x5441FFFE, // 0066 LDINT R16 -1
+ 0x7C340600, // 0067 CALL R13 3
+ 0x24381908, // 0068 GT R14 R12 K8
+ 0x783A0002, // 0069 JMPF R14 #006D
+ 0x8C38111B, // 006A GETMET R14 R8 K27
+ 0x04401909, // 006B SUB R16 R12 K9
+ 0x7C380400, // 006C CALL R14 2
+ 0x24381B08, // 006D GT R14 R13 K8
+ 0x783A0002, // 006E JMPF R14 #0072
+ 0x8C38111B, // 006F GETMET R14 R8 K27
+ 0x04401B09, // 0070 SUB R16 R13 K9
+ 0x7C380400, // 0071 CALL R14 2
+ 0xB83A1E00, // 0072 GETNGBL R14 K15
+ 0x8C381D12, // 0073 GETMET R14 R14 K18
+ 0x60400018, // 0074 GETGBL R16 G24
+ 0x5844001C, // 0075 LDCONST R17 K28
+ 0x5C481800, // 0076 MOVE R18 R12
+ 0x5C4C1A00, // 0077 MOVE R19 R13
+ 0x7C400600, // 0078 CALL R16 3
+ 0x58440014, // 0079 LDCONST R17 K20
+ 0x7C380600, // 007A CALL R14 3
+ 0x8C381705, // 007B GETMET R14 R11 K5
+ 0x5840001D, // 007C LDCONST R16 K29
+ 0x7C380400, // 007D CALL R14 2
+ 0x783A0002, // 007E JMPF R14 #0082
+ 0x943C1D0C, // 007F GETIDX R15 R14 K12
+ 0x243C1F08, // 0080 GT R15 R15 K8
+ 0x743E0000, // 0081 JMPT R15 #0083
+ 0x503C0001, // 0082 LDBOOL R15 0 1
+ 0x503C0200, // 0083 LDBOOL R15 1 0
+ 0x60400008, // 0084 GETGBL R16 G8
+ 0x5C440600, // 0085 MOVE R17 R3
+ 0x7C400200, // 0086 CALL R16 1
+ 0x60440013, // 0087 GETGBL R17 G19
+ 0x7C440000, // 0088 CALL R17 0
+ 0x783E0001, // 0089 JMPF R15 #008C
+ 0x5848001E, // 008A LDCONST R18 K30
+ 0x70020000, // 008B JMP #008D
+ 0x5848001F, // 008C LDCONST R18 K31
+ 0x98461412, // 008D SETIDX R17 K10 R18
+ 0x98463E09, // 008E SETIDX R17 K31 R9
+ 0x98082011, // 008F SETIDX R2 R16 R17
+ 0x000C0709, // 0090 ADD R3 R3 K9
+ 0x00241309, // 0091 ADD R9 R9 K9
+ 0x7001FFB5, // 0092 JMP #0049
+ 0x6024000C, // 0093 GETGBL R9 G12
+ 0xB82A1E00, // 0094 GETNGBL R10 K15
+ 0x8C281520, // 0095 GETMET R10 R10 K32
+ 0x7C280200, // 0096 CALL R10 1
+ 0x7C240200, // 0097 CALL R9 1
+ 0x58280008, // 0098 LDCONST R10 K8
+ 0x78120000, // 0099 JMPF R4 #009B
+ 0x04241309, // 009A SUB R9 R9 K9
+ 0x142C1409, // 009B LT R11 R10 R9
+ 0x782E0011, // 009C JMPF R11 #00AF
+ 0x8C2C1105, // 009D GETMET R11 R8 K5
+ 0x5C341400, // 009E MOVE R13 R10
+ 0x7C2C0400, // 009F CALL R11 2
+ 0x4C300000, // 00A0 LDNIL R12
+ 0x1C2C160C, // 00A1 EQ R11 R11 R12
+ 0x782E0009, // 00A2 JMPF R11 #00AD
+ 0x602C0008, // 00A3 GETGBL R11 G8
+ 0x5C300600, // 00A4 MOVE R12 R3
+ 0x7C2C0200, // 00A5 CALL R11 1
+ 0x60300013, // 00A6 GETGBL R12 G19
+ 0x7C300000, // 00A7 CALL R12 0
+ 0x98321521, // 00A8 SETIDX R12 K10 K33
+ 0x00341509, // 00A9 ADD R13 R10 K9
+ 0x9832420D, // 00AA SETIDX R12 K33 R13
+ 0x9808160C, // 00AB SETIDX R2 R11 R12
+ 0x000C0709, // 00AC ADD R3 R3 K9
+ 0x00281509, // 00AD ADD R10 R10 K9
+ 0x7001FFEB, // 00AE JMP #009B
+ 0x8C2C0322, // 00AF GETMET R11 R1 K34
+ 0xB8361E00, // 00B0 GETNGBL R13 K15
+ 0x8C341B23, // 00B1 GETMET R13 R13 K35
+ 0x7C340200, // 00B2 CALL R13 1
+ 0x7C2C0400, // 00B3 CALL R11 2
+ 0x8C300124, // 00B4 GETMET R12 R0 K36
+ 0x5C381600, // 00B5 MOVE R14 R11
+ 0x7C300400, // 00B6 CALL R12 2
+ 0x60340010, // 00B7 GETGBL R13 G16
+ 0x5C381800, // 00B8 MOVE R14 R12
+ 0x7C340200, // 00B9 CALL R13 1
+ 0xA8020007, // 00BA EXBLK 0 #00C3
+ 0x5C381A00, // 00BB MOVE R14 R13
+ 0x7C380000, // 00BC CALL R14 0
+ 0x603C0008, // 00BD GETGBL R15 G8
+ 0x5C400600, // 00BE MOVE R16 R3
+ 0x7C3C0200, // 00BF CALL R15 1
+ 0x98081E0E, // 00C0 SETIDX R2 R15 R14
+ 0x000C0709, // 00C1 ADD R3 R3 K9
+ 0x7001FFF7, // 00C2 JMP #00BB
+ 0x58340025, // 00C3 LDCONST R13 K37
+ 0xAC340200, // 00C4 CATCH R13 1 0
+ 0xB0080000, // 00C5 RAISE 2 R0 R0
+ 0x80040400, // 00C6 RET 1 R2
})
)
);
@@ -4518,782 +1483,6 @@ be_local_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name
/*******************************************************************/
-/********************************************************************
-** Solidified function: mdns_remove_op_discovery
-********************************************************************/
-be_local_closure(Matter_Device_mdns_remove_op_discovery, /* name */
- be_nested_proto(
- 12, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(get_device_id),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(reverse),
- /* K4 */ be_nested_str_weak(get_fabric_compressed),
- /* K5 */ be_nested_str_weak(tohex),
- /* K6 */ be_nested_str_weak(_X2D),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(eth),
- /* K9 */ be_nested_str_weak(find),
- /* K10 */ be_nested_str_weak(up),
- /* K11 */ be_nested_str_weak(log),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(remove_service),
- /* K15 */ be_nested_str_weak(_matter),
- /* K16 */ be_nested_str_weak(_tcp),
- /* K17 */ be_nested_str_weak(hostname_eth),
- /* K18 */ be_nested_str_weak(wifi),
- /* K19 */ be_nested_str_weak(hostname_wifi),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K21 */ be_nested_str_weak(_X7C),
- /* K22 */ be_const_int(2),
- }),
- be_str_weak(mdns_remove_op_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[80]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA802003B, // 0001 EXBLK 0 #003E
- 0x8C0C0301, // 0002 GETMET R3 R1 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C100304, // 0008 GETMET R4 R1 K4
- 0x7C100200, // 0009 CALL R4 1
- 0x8C140905, // 000A GETMET R5 R4 K5
- 0x7C140200, // 000B CALL R5 1
- 0x00140B06, // 000C ADD R5 R5 K6
- 0x8C180705, // 000D GETMET R6 R3 K5
- 0x7C180200, // 000E CALL R6 1
- 0x00140A06, // 000F ADD R5 R5 R6
- 0xB81A0E00, // 0010 GETNGBL R6 K7
- 0x8C180D08, // 0011 GETMET R6 R6 K8
- 0x7C180200, // 0012 CALL R6 1
- 0x8C180D09, // 0013 GETMET R6 R6 K9
- 0x5820000A, // 0014 LDCONST R8 K10
- 0x7C180400, // 0015 CALL R6 2
- 0x781A000E, // 0016 JMPF R6 #0026
- 0xB81A0E00, // 0017 GETNGBL R6 K7
- 0x8C180D0B, // 0018 GETMET R6 R6 K11
- 0x60200018, // 0019 GETGBL R8 G24
- 0x5824000C, // 001A LDCONST R9 K12
- 0x58280008, // 001B LDCONST R10 K8
- 0x5C2C0A00, // 001C MOVE R11 R5
- 0x7C200600, // 001D CALL R8 3
- 0x5824000D, // 001E LDCONST R9 K13
- 0x7C180600, // 001F CALL R6 3
- 0x8C18050E, // 0020 GETMET R6 R2 K14
- 0x5820000F, // 0021 LDCONST R8 K15
- 0x58240010, // 0022 LDCONST R9 K16
- 0x5C280A00, // 0023 MOVE R10 R5
- 0x882C0111, // 0024 GETMBR R11 R0 K17
- 0x7C180A00, // 0025 CALL R6 5
- 0xB81A0E00, // 0026 GETNGBL R6 K7
- 0x8C180D12, // 0027 GETMET R6 R6 K18
- 0x7C180200, // 0028 CALL R6 1
- 0x8C180D09, // 0029 GETMET R6 R6 K9
- 0x5820000A, // 002A LDCONST R8 K10
- 0x7C180400, // 002B CALL R6 2
- 0x781A000E, // 002C JMPF R6 #003C
- 0xB81A0E00, // 002D GETNGBL R6 K7
- 0x8C180D0B, // 002E GETMET R6 R6 K11
- 0x60200018, // 002F GETGBL R8 G24
- 0x5824000C, // 0030 LDCONST R9 K12
- 0x58280012, // 0031 LDCONST R10 K18
- 0x5C2C0A00, // 0032 MOVE R11 R5
- 0x7C200600, // 0033 CALL R8 3
- 0x5824000D, // 0034 LDCONST R9 K13
- 0x7C180600, // 0035 CALL R6 3
- 0x8C18050E, // 0036 GETMET R6 R2 K14
- 0x5820000F, // 0037 LDCONST R8 K15
- 0x58240010, // 0038 LDCONST R9 K16
- 0x5C280A00, // 0039 MOVE R10 R5
- 0x882C0113, // 003A GETMBR R11 R0 K19
- 0x7C180A00, // 003B CALL R6 5
- 0xA8040001, // 003C EXBLK 1 1
- 0x70020010, // 003D JMP #004F
- 0xAC0C0002, // 003E CATCH R3 0 2
- 0x7002000D, // 003F JMP #004E
- 0xB8160E00, // 0040 GETNGBL R5 K7
- 0x8C140B0B, // 0041 GETMET R5 R5 K11
- 0x601C0008, // 0042 GETGBL R7 G8
- 0x5C200600, // 0043 MOVE R8 R3
- 0x7C1C0200, // 0044 CALL R7 1
- 0x001E2807, // 0045 ADD R7 K20 R7
- 0x001C0F15, // 0046 ADD R7 R7 K21
- 0x60200008, // 0047 GETGBL R8 G8
- 0x5C240800, // 0048 MOVE R9 R4
- 0x7C200200, // 0049 CALL R8 1
- 0x001C0E08, // 004A ADD R7 R7 R8
- 0x58200016, // 004B LDCONST R8 K22
- 0x7C140600, // 004C CALL R5 3
- 0x70020000, // 004D JMP #004F
- 0xB0080000, // 004E RAISE 2 R0 R0
- 0x80000000, // 004F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_announce_PASE
-********************************************************************/
-be_local_closure(Matter_Device_mdns_announce_PASE, /* name */
- be_nested_proto(
- 12, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[41]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(crypto),
- /* K2 */ be_nested_str_weak(VP),
- /* K3 */ be_nested_str_weak(vendorid),
- /* K4 */ be_nested_str_weak(_X2B),
- /* K5 */ be_nested_str_weak(productid),
- /* K6 */ be_nested_str_weak(D),
- /* K7 */ be_nested_str_weak(commissioning_discriminator),
- /* K8 */ be_nested_str_weak(CM),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(T),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(SII),
- /* K13 */ be_nested_str_weak(SAI),
- /* K14 */ be_nested_str_weak(commissioning_instance_wifi),
- /* K15 */ be_nested_str_weak(random),
- /* K16 */ be_nested_str_weak(tohex),
- /* K17 */ be_nested_str_weak(commissioning_instance_eth),
- /* K18 */ be_nested_str_weak(hostname_eth),
- /* K19 */ be_nested_str_weak(add_service),
- /* K20 */ be_nested_str_weak(_matterc),
- /* K21 */ be_nested_str_weak(_udp),
- /* K22 */ be_nested_str_weak(mdns_pase_eth),
- /* K23 */ be_nested_str_weak(tasmota),
- /* K24 */ be_nested_str_weak(log),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K26 */ be_nested_str_weak(eth),
- /* K27 */ be_const_int(2),
- /* K28 */ be_nested_str_weak(_L),
- /* K29 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
- /* K30 */ be_const_int(3),
- /* K31 */ be_nested_str_weak(add_subtype),
- /* K32 */ be_nested_str_weak(_S),
- /* K33 */ be_nested_str_weak(_V),
- /* K34 */ be_nested_str_weak(_CM1),
- /* K35 */ be_nested_str_weak(hostname_wifi),
- /* K36 */ be_nested_str_weak(mdns_pase_wifi),
- /* K37 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K38 */ be_nested_str_weak(wifi),
- /* K39 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K40 */ be_nested_str_weak(_X7C),
- }),
- be_str_weak(mdns_announce_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[236]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x600C0013, // 0002 GETGBL R3 G19
- 0x7C0C0000, // 0003 CALL R3 0
- 0x60100008, // 0004 GETGBL R4 G8
- 0x88140103, // 0005 GETMBR R5 R0 K3
- 0x7C100200, // 0006 CALL R4 1
- 0x00100904, // 0007 ADD R4 R4 K4
- 0x60140008, // 0008 GETGBL R5 G8
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x7C140200, // 000A CALL R5 1
- 0x00100805, // 000B ADD R4 R4 R5
- 0x980E0404, // 000C SETIDX R3 K2 R4
- 0x88100107, // 000D GETMBR R4 R0 K7
- 0x980E0C04, // 000E SETIDX R3 K6 R4
- 0x980E1109, // 000F SETIDX R3 K8 K9
- 0x980E150B, // 0010 SETIDX R3 K10 K11
- 0x54121387, // 0011 LDINT R4 5000
- 0x980E1804, // 0012 SETIDX R3 K12 R4
- 0x5412012B, // 0013 LDINT R4 300
- 0x980E1A04, // 0014 SETIDX R3 K13 R4
- 0x8C10050F, // 0015 GETMET R4 R2 K15
- 0x541A0007, // 0016 LDINT R6 8
- 0x7C100400, // 0017 CALL R4 2
- 0x8C100910, // 0018 GETMET R4 R4 K16
- 0x7C100200, // 0019 CALL R4 1
- 0x90021C04, // 001A SETMBR R0 K14 R4
- 0x8C10050F, // 001B GETMET R4 R2 K15
- 0x541A0007, // 001C LDINT R6 8
- 0x7C100400, // 001D CALL R4 2
- 0x8C100910, // 001E GETMET R4 R4 K16
- 0x7C100200, // 001F CALL R4 1
- 0x90022204, // 0020 SETMBR R0 K17 R4
- 0xA80200B7, // 0021 EXBLK 0 #00DA
- 0x88100112, // 0022 GETMBR R4 R0 K18
- 0x78120058, // 0023 JMPF R4 #007D
- 0x8C100313, // 0024 GETMET R4 R1 K19
- 0x58180014, // 0025 LDCONST R6 K20
- 0x581C0015, // 0026 LDCONST R7 K21
- 0x542215A3, // 0027 LDINT R8 5540
- 0x5C240600, // 0028 MOVE R9 R3
- 0x88280111, // 0029 GETMBR R10 R0 K17
- 0x882C0112, // 002A GETMBR R11 R0 K18
- 0x7C100E00, // 002B CALL R4 7
- 0x50100200, // 002C LDBOOL R4 1 0
- 0x90022C04, // 002D SETMBR R0 K22 R4
- 0xB8122E00, // 002E GETNGBL R4 K23
- 0x8C100918, // 002F GETMET R4 R4 K24
- 0x60180018, // 0030 GETGBL R6 G24
- 0x581C0019, // 0031 LDCONST R7 K25
- 0x5820001A, // 0032 LDCONST R8 K26
- 0x88240111, // 0033 GETMBR R9 R0 K17
- 0x88280112, // 0034 GETMBR R10 R0 K18
- 0x7C180800, // 0035 CALL R6 4
- 0x581C001B, // 0036 LDCONST R7 K27
- 0x7C100600, // 0037 CALL R4 3
- 0x60100008, // 0038 GETGBL R4 G8
- 0x88140107, // 0039 GETMBR R5 R0 K7
- 0x541A0FFE, // 003A LDINT R6 4095
- 0x2C140A06, // 003B AND R5 R5 R6
- 0x7C100200, // 003C CALL R4 1
- 0x00123804, // 003D ADD R4 K28 R4
- 0xB8162E00, // 003E GETNGBL R5 K23
- 0x8C140B18, // 003F GETMET R5 R5 K24
- 0x001E3A04, // 0040 ADD R7 K29 R4
- 0x5820001E, // 0041 LDCONST R8 K30
- 0x7C140600, // 0042 CALL R5 3
- 0x8C14031F, // 0043 GETMET R5 R1 K31
- 0x581C0014, // 0044 LDCONST R7 K20
- 0x58200015, // 0045 LDCONST R8 K21
- 0x88240111, // 0046 GETMBR R9 R0 K17
- 0x88280112, // 0047 GETMBR R10 R0 K18
- 0x5C2C0800, // 0048 MOVE R11 R4
- 0x7C140C00, // 0049 CALL R5 6
- 0x60140008, // 004A GETGBL R5 G8
- 0x88180107, // 004B GETMBR R6 R0 K7
- 0x541E0EFF, // 004C LDINT R7 3840
- 0x2C180C07, // 004D AND R6 R6 R7
- 0x541E0007, // 004E LDINT R7 8
- 0x3C180C07, // 004F SHR R6 R6 R7
- 0x7C140200, // 0050 CALL R5 1
- 0x00164005, // 0051 ADD R5 K32 R5
- 0x5C100A00, // 0052 MOVE R4 R5
- 0xB8162E00, // 0053 GETNGBL R5 K23
- 0x8C140B18, // 0054 GETMET R5 R5 K24
- 0x001E3A04, // 0055 ADD R7 K29 R4
- 0x5820001E, // 0056 LDCONST R8 K30
- 0x7C140600, // 0057 CALL R5 3
- 0x8C14031F, // 0058 GETMET R5 R1 K31
- 0x581C0014, // 0059 LDCONST R7 K20
- 0x58200015, // 005A LDCONST R8 K21
- 0x88240111, // 005B GETMBR R9 R0 K17
- 0x88280112, // 005C GETMBR R10 R0 K18
- 0x5C2C0800, // 005D MOVE R11 R4
- 0x7C140C00, // 005E CALL R5 6
- 0x60140008, // 005F GETGBL R5 G8
- 0x88180103, // 0060 GETMBR R6 R0 K3
- 0x7C140200, // 0061 CALL R5 1
- 0x00164205, // 0062 ADD R5 K33 R5
- 0x5C100A00, // 0063 MOVE R4 R5
- 0xB8162E00, // 0064 GETNGBL R5 K23
- 0x8C140B18, // 0065 GETMET R5 R5 K24
- 0x001E3A04, // 0066 ADD R7 K29 R4
- 0x5820001E, // 0067 LDCONST R8 K30
- 0x7C140600, // 0068 CALL R5 3
- 0x8C14031F, // 0069 GETMET R5 R1 K31
- 0x581C0014, // 006A LDCONST R7 K20
- 0x58200015, // 006B LDCONST R8 K21
- 0x88240111, // 006C GETMBR R9 R0 K17
- 0x88280112, // 006D GETMBR R10 R0 K18
- 0x5C2C0800, // 006E MOVE R11 R4
- 0x7C140C00, // 006F CALL R5 6
- 0x58100022, // 0070 LDCONST R4 K34
- 0xB8162E00, // 0071 GETNGBL R5 K23
- 0x8C140B18, // 0072 GETMET R5 R5 K24
- 0x001E3A04, // 0073 ADD R7 K29 R4
- 0x5820001E, // 0074 LDCONST R8 K30
- 0x7C140600, // 0075 CALL R5 3
- 0x8C14031F, // 0076 GETMET R5 R1 K31
- 0x581C0014, // 0077 LDCONST R7 K20
- 0x58200015, // 0078 LDCONST R8 K21
- 0x88240111, // 0079 GETMBR R9 R0 K17
- 0x88280112, // 007A GETMBR R10 R0 K18
- 0x5C2C0800, // 007B MOVE R11 R4
- 0x7C140C00, // 007C CALL R5 6
- 0x88100123, // 007D GETMBR R4 R0 K35
- 0x78120058, // 007E JMPF R4 #00D8
- 0x8C100313, // 007F GETMET R4 R1 K19
- 0x58180014, // 0080 LDCONST R6 K20
- 0x581C0015, // 0081 LDCONST R7 K21
- 0x542215A3, // 0082 LDINT R8 5540
- 0x5C240600, // 0083 MOVE R9 R3
- 0x8828010E, // 0084 GETMBR R10 R0 K14
- 0x882C0123, // 0085 GETMBR R11 R0 K35
- 0x7C100E00, // 0086 CALL R4 7
- 0x50100200, // 0087 LDBOOL R4 1 0
- 0x90024804, // 0088 SETMBR R0 K36 R4
- 0xB8122E00, // 0089 GETNGBL R4 K23
- 0x8C100918, // 008A GETMET R4 R4 K24
- 0x60180018, // 008B GETGBL R6 G24
- 0x581C0025, // 008C LDCONST R7 K37
- 0x58200026, // 008D LDCONST R8 K38
- 0x8824010E, // 008E GETMBR R9 R0 K14
- 0x88280123, // 008F GETMBR R10 R0 K35
- 0x7C180800, // 0090 CALL R6 4
- 0x581C001E, // 0091 LDCONST R7 K30
- 0x7C100600, // 0092 CALL R4 3
- 0x60100008, // 0093 GETGBL R4 G8
- 0x88140107, // 0094 GETMBR R5 R0 K7
- 0x541A0FFE, // 0095 LDINT R6 4095
- 0x2C140A06, // 0096 AND R5 R5 R6
- 0x7C100200, // 0097 CALL R4 1
- 0x00123804, // 0098 ADD R4 K28 R4
- 0xB8162E00, // 0099 GETNGBL R5 K23
- 0x8C140B18, // 009A GETMET R5 R5 K24
- 0x001E3A04, // 009B ADD R7 K29 R4
- 0x5820001E, // 009C LDCONST R8 K30
- 0x7C140600, // 009D CALL R5 3
- 0x8C14031F, // 009E GETMET R5 R1 K31
- 0x581C0014, // 009F LDCONST R7 K20
- 0x58200015, // 00A0 LDCONST R8 K21
- 0x8824010E, // 00A1 GETMBR R9 R0 K14
- 0x88280123, // 00A2 GETMBR R10 R0 K35
- 0x5C2C0800, // 00A3 MOVE R11 R4
- 0x7C140C00, // 00A4 CALL R5 6
- 0x60140008, // 00A5 GETGBL R5 G8
- 0x88180107, // 00A6 GETMBR R6 R0 K7
- 0x541E0EFF, // 00A7 LDINT R7 3840
- 0x2C180C07, // 00A8 AND R6 R6 R7
- 0x541E0007, // 00A9 LDINT R7 8
- 0x3C180C07, // 00AA SHR R6 R6 R7
- 0x7C140200, // 00AB CALL R5 1
- 0x00164005, // 00AC ADD R5 K32 R5
- 0x5C100A00, // 00AD MOVE R4 R5
- 0xB8162E00, // 00AE GETNGBL R5 K23
- 0x8C140B18, // 00AF GETMET R5 R5 K24
- 0x001E3A04, // 00B0 ADD R7 K29 R4
- 0x5820001E, // 00B1 LDCONST R8 K30
- 0x7C140600, // 00B2 CALL R5 3
- 0x8C14031F, // 00B3 GETMET R5 R1 K31
- 0x581C0014, // 00B4 LDCONST R7 K20
- 0x58200015, // 00B5 LDCONST R8 K21
- 0x8824010E, // 00B6 GETMBR R9 R0 K14
- 0x88280123, // 00B7 GETMBR R10 R0 K35
- 0x5C2C0800, // 00B8 MOVE R11 R4
- 0x7C140C00, // 00B9 CALL R5 6
- 0x60140008, // 00BA GETGBL R5 G8
- 0x88180103, // 00BB GETMBR R6 R0 K3
- 0x7C140200, // 00BC CALL R5 1
- 0x00164205, // 00BD ADD R5 K33 R5
- 0x5C100A00, // 00BE MOVE R4 R5
- 0xB8162E00, // 00BF GETNGBL R5 K23
- 0x8C140B18, // 00C0 GETMET R5 R5 K24
- 0x001E3A04, // 00C1 ADD R7 K29 R4
- 0x5820001E, // 00C2 LDCONST R8 K30
- 0x7C140600, // 00C3 CALL R5 3
- 0x8C14031F, // 00C4 GETMET R5 R1 K31
- 0x581C0014, // 00C5 LDCONST R7 K20
- 0x58200015, // 00C6 LDCONST R8 K21
- 0x8824010E, // 00C7 GETMBR R9 R0 K14
- 0x88280123, // 00C8 GETMBR R10 R0 K35
- 0x5C2C0800, // 00C9 MOVE R11 R4
- 0x7C140C00, // 00CA CALL R5 6
- 0x58100022, // 00CB LDCONST R4 K34
- 0xB8162E00, // 00CC GETNGBL R5 K23
- 0x8C140B18, // 00CD GETMET R5 R5 K24
- 0x001E3A04, // 00CE ADD R7 K29 R4
- 0x5820001E, // 00CF LDCONST R8 K30
- 0x7C140600, // 00D0 CALL R5 3
- 0x8C14031F, // 00D1 GETMET R5 R1 K31
- 0x581C0014, // 00D2 LDCONST R7 K20
- 0x58200015, // 00D3 LDCONST R8 K21
- 0x8824010E, // 00D4 GETMBR R9 R0 K14
- 0x88280123, // 00D5 GETMBR R10 R0 K35
- 0x5C2C0800, // 00D6 MOVE R11 R4
- 0x7C140C00, // 00D7 CALL R5 6
- 0xA8040001, // 00D8 EXBLK 1 1
- 0x70020010, // 00D9 JMP #00EB
- 0xAC100002, // 00DA CATCH R4 0 2
- 0x7002000D, // 00DB JMP #00EA
- 0xB81A2E00, // 00DC GETNGBL R6 K23
- 0x8C180D18, // 00DD GETMET R6 R6 K24
- 0x60200008, // 00DE GETGBL R8 G8
- 0x5C240800, // 00DF MOVE R9 R4
- 0x7C200200, // 00E0 CALL R8 1
- 0x00224E08, // 00E1 ADD R8 K39 R8
- 0x00201128, // 00E2 ADD R8 R8 K40
- 0x60240008, // 00E3 GETGBL R9 G8
- 0x5C280A00, // 00E4 MOVE R10 R5
- 0x7C240200, // 00E5 CALL R9 1
- 0x00201009, // 00E6 ADD R8 R8 R9
- 0x5824001B, // 00E7 LDCONST R9 K27
- 0x7C180600, // 00E8 CALL R6 3
- 0x70020000, // 00E9 JMP #00EB
- 0xB0080000, // 00EA RAISE 2 R0 R0
- 0x80000000, // 00EB RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_commissioning_complete
-********************************************************************/
-be_local_closure(Matter_Device_start_commissioning_complete, /* name */
- be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(get_fabric),
- /* K1 */ be_nested_str_weak(get_fabric_id),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(reverse),
- /* K4 */ be_nested_str_weak(tohex),
- /* K5 */ be_nested_str_weak(get_admin_vendor_name),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(stop_basic_commissioning),
- }),
- be_str_weak(start_commissioning_complete),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x7C080200, // 0001 CALL R2 1
- 0x8C0C0501, // 0002 GETMET R3 R2 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C0C0704, // 0008 GETMET R3 R3 K4
- 0x7C0C0200, // 0009 CALL R3 1
- 0x8C100505, // 000A GETMET R4 R2 K5
- 0x7C100200, // 000B CALL R4 1
- 0xB8160C00, // 000C GETNGBL R5 K6
- 0x8C140B07, // 000D GETMET R5 R5 K7
- 0x601C0018, // 000E GETGBL R7 G24
- 0x58200008, // 000F LDCONST R8 K8
- 0x5C240600, // 0010 MOVE R9 R3
- 0x5C280800, // 0011 MOVE R10 R4
- 0x7C1C0600, // 0012 CALL R7 3
- 0x58200009, // 0013 LDCONST R8 K9
- 0x7C140600, // 0014 CALL R5 3
- 0x8C14010A, // 0015 GETMET R5 R0 K10
- 0x7C140200, // 0016 CALL R5 1
- 0x80000000, // 0017 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: MtrInfo
-********************************************************************/
-be_local_closure(Matter_Device_MtrInfo, /* name */
- be_nested_proto(
- 10, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_nested_str_weak(MtrInfo_one),
- /* K3 */ be_nested_str_weak(endpoint),
- /* K4 */ be_nested_str_weak(stop_iteration),
- /* K5 */ be_nested_str_weak(int),
- /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(resp_cmnd_done),
- }),
- be_str_weak(MtrInfo),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0x1C140700, // 0000 EQ R5 R3 K0
- 0x7815FFFF, // 0001 JMPF R5 #0002
- 0x1C140700, // 0002 EQ R5 R3 K0
- 0x7816000D, // 0003 JMPF R5 #0012
- 0x60140010, // 0004 GETGBL R5 G16
- 0x88180101, // 0005 GETMBR R6 R0 K1
- 0x7C140200, // 0006 CALL R5 1
- 0xA8020005, // 0007 EXBLK 0 #000E
- 0x5C180A00, // 0008 MOVE R6 R5
- 0x7C180000, // 0009 CALL R6 0
- 0x8C1C0102, // 000A GETMET R7 R0 K2
- 0x88240D03, // 000B GETMBR R9 R6 K3
- 0x7C1C0400, // 000C CALL R7 2
- 0x7001FFF9, // 000D JMP #0008
- 0x58140004, // 000E LDCONST R5 K4
- 0xAC140200, // 000F CATCH R5 1 0
- 0xB0080000, // 0010 RAISE 2 R0 R0
- 0x70020011, // 0011 JMP #0024
- 0x60140004, // 0012 GETGBL R5 G4
- 0x5C180800, // 0013 MOVE R6 R4
- 0x7C140200, // 0014 CALL R5 1
- 0x1C140B05, // 0015 EQ R5 R5 K5
- 0x78160003, // 0016 JMPF R5 #001B
- 0x8C140102, // 0017 GETMET R5 R0 K2
- 0x5C1C0800, // 0018 MOVE R7 R4
- 0x7C140400, // 0019 CALL R5 2
- 0x70020008, // 001A JMP #0024
- 0x8C140106, // 001B GETMET R5 R0 K6
- 0x5C1C0600, // 001C MOVE R7 R3
- 0x7C140400, // 001D CALL R5 2
- 0x4C180000, // 001E LDNIL R6
- 0x20180A06, // 001F NE R6 R5 R6
- 0x781A0002, // 0020 JMPF R6 #0024
- 0x8C180102, // 0021 GETMET R6 R0 K2
- 0x88200B03, // 0022 GETMBR R8 R5 K3
- 0x7C180400, // 0023 CALL R6 2
- 0xB8160E00, // 0024 GETNGBL R5 K7
- 0x8C140B08, // 0025 GETMET R5 R5 K8
- 0x7C140200, // 0026 CALL R5 1
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: MtrUpdate
-********************************************************************/
-be_local_closure(Matter_Device_MtrUpdate, /* name */
- be_nested_proto(
- 18, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(resp_cmnd_str),
- /* K2 */ be_nested_str_weak(Invalid_X20JSON),
- /* K3 */ be_nested_str_weak(find_key_i),
- /* K4 */ be_nested_str_weak(Ep),
- /* K5 */ be_nested_str_weak(Name),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute),
- /* K8 */ be_nested_str_weak(find_plugin_by_endpoint),
- /* K9 */ be_nested_str_weak(remove),
- /* K10 */ be_nested_str_weak(find_plugin_by_friendly_name),
- /* K11 */ be_nested_str_weak(Invalid_X20Device),
- /* K12 */ be_nested_str_weak(VIRTUAL),
- /* K13 */ be_nested_str_weak(Device_X20is_X20not_X20virtual),
- /* K14 */ be_nested_str_weak(consolidate_update_commands),
- /* K15 */ be_nested_str_weak(keys),
- /* K16 */ be_nested_str_weak(find_list_i),
- /* K17 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27),
- /* K18 */ be_nested_str_weak(stop_iteration),
- /* K19 */ be_nested_str_weak(update_virtual),
- /* K20 */ be_nested_str_weak(state_json),
- /* K21 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D),
- /* K22 */ be_nested_str_weak(resp_cmnd),
- /* K23 */ be_nested_str_weak(resp_cmnd_done),
- /* K24 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute),
- }),
- be_str_weak(MtrUpdate),
- &be_const_str_solidified,
- ( &(const binstruction[126]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x1C140805, // 0001 EQ R5 R4 R5
- 0x78160004, // 0002 JMPF R5 #0008
- 0xB8160000, // 0003 GETNGBL R5 K0
- 0x8C140B01, // 0004 GETMET R5 R5 K1
- 0x581C0002, // 0005 LDCONST R7 K2
- 0x7C140400, // 0006 CALL R5 2
- 0x80040A00, // 0007 RET 1 R5
- 0xB8160000, // 0008 GETNGBL R5 K0
- 0x8C140B03, // 0009 GETMET R5 R5 K3
- 0x5C1C0800, // 000A MOVE R7 R4
- 0x58200004, // 000B LDCONST R8 K4
- 0x7C140600, // 000C CALL R5 3
- 0xB81A0000, // 000D GETNGBL R6 K0
- 0x8C180D03, // 000E GETMET R6 R6 K3
- 0x5C200800, // 000F MOVE R8 R4
- 0x58240005, // 0010 LDCONST R9 K5
- 0x7C180600, // 0011 CALL R6 3
- 0x74160000, // 0012 JMPT R5 #0014
- 0x781A0064, // 0013 JMPF R6 #0079
- 0x4C1C0000, // 0014 LDNIL R7
- 0x78160010, // 0015 JMPF R5 #0027
- 0x60200009, // 0016 GETGBL R8 G9
- 0x94240805, // 0017 GETIDX R9 R4 R5
- 0x7C200200, // 0018 CALL R8 1
- 0x18241106, // 0019 LE R9 R8 K6
- 0x78260004, // 001A JMPF R9 #0020
- 0xB8260000, // 001B GETNGBL R9 K0
- 0x8C241301, // 001C GETMET R9 R9 K1
- 0x582C0007, // 001D LDCONST R11 K7
- 0x7C240400, // 001E CALL R9 2
- 0x80041200, // 001F RET 1 R9
- 0x8C240108, // 0020 GETMET R9 R0 K8
- 0x5C2C1000, // 0021 MOVE R11 R8
- 0x7C240400, // 0022 CALL R9 2
- 0x5C1C1200, // 0023 MOVE R7 R9
- 0x8C240909, // 0024 GETMET R9 R4 K9
- 0x5C2C0A00, // 0025 MOVE R11 R5
- 0x7C240400, // 0026 CALL R9 2
- 0x781A0009, // 0027 JMPF R6 #0032
- 0x4C200000, // 0028 LDNIL R8
- 0x1C200E08, // 0029 EQ R8 R7 R8
- 0x78220003, // 002A JMPF R8 #002F
- 0x8C20010A, // 002B GETMET R8 R0 K10
- 0x94280806, // 002C GETIDX R10 R4 R6
- 0x7C200400, // 002D CALL R8 2
- 0x5C1C1000, // 002E MOVE R7 R8
- 0x8C200909, // 002F GETMET R8 R4 K9
- 0x5C280C00, // 0030 MOVE R10 R6
- 0x7C200400, // 0031 CALL R8 2
- 0x4C200000, // 0032 LDNIL R8
- 0x1C200E08, // 0033 EQ R8 R7 R8
- 0x78220004, // 0034 JMPF R8 #003A
- 0xB8220000, // 0035 GETNGBL R8 K0
- 0x8C201101, // 0036 GETMET R8 R8 K1
- 0x5828000B, // 0037 LDCONST R10 K11
- 0x7C200400, // 0038 CALL R8 2
- 0x80041000, // 0039 RET 1 R8
- 0x88200F0C, // 003A GETMBR R8 R7 K12
- 0x74220004, // 003B JMPT R8 #0041
- 0xB8220000, // 003C GETNGBL R8 K0
- 0x8C201101, // 003D GETMET R8 R8 K1
- 0x5828000D, // 003E LDCONST R10 K13
- 0x7C200400, // 003F CALL R8 2
- 0x80041000, // 0040 RET 1 R8
- 0x8C200F0E, // 0041 GETMET R8 R7 K14
- 0x7C200200, // 0042 CALL R8 1
- 0x60240013, // 0043 GETGBL R9 G19
- 0x7C240000, // 0044 CALL R9 0
- 0x60280010, // 0045 GETGBL R10 G16
- 0x8C2C090F, // 0046 GETMET R11 R4 K15
- 0x7C2C0200, // 0047 CALL R11 1
- 0x7C280200, // 0048 CALL R10 1
- 0xA8020016, // 0049 EXBLK 0 #0061
- 0x5C2C1400, // 004A MOVE R11 R10
- 0x7C2C0000, // 004B CALL R11 0
- 0xB8320000, // 004C GETNGBL R12 K0
- 0x8C301910, // 004D GETMET R12 R12 K16
- 0x5C381000, // 004E MOVE R14 R8
- 0x5C3C1600, // 004F MOVE R15 R11
- 0x7C300600, // 0050 CALL R12 3
- 0x4C340000, // 0051 LDNIL R13
- 0x1C34180D, // 0052 EQ R13 R12 R13
- 0x78360008, // 0053 JMPF R13 #005D
- 0xB8360000, // 0054 GETNGBL R13 K0
- 0x8C341B01, // 0055 GETMET R13 R13 K1
- 0x603C0018, // 0056 GETGBL R15 G24
- 0x58400011, // 0057 LDCONST R16 K17
- 0x5C441600, // 0058 MOVE R17 R11
- 0x7C3C0400, // 0059 CALL R15 2
- 0x7C340400, // 005A CALL R13 2
- 0xA8040001, // 005B EXBLK 1 1
- 0x80001A00, // 005C RET 0
- 0x9434100C, // 005D GETIDX R13 R8 R12
- 0x9438080B, // 005E GETIDX R14 R4 R11
- 0x98241A0E, // 005F SETIDX R9 R13 R14
- 0x7001FFE8, // 0060 JMP #004A
- 0x58280012, // 0061 LDCONST R10 K18
- 0xAC280200, // 0062 CATCH R10 1 0
- 0xB0080000, // 0063 RAISE 2 R0 R0
- 0x8C280F13, // 0064 GETMET R10 R7 K19
- 0x5C301200, // 0065 MOVE R12 R9
- 0x7C280400, // 0066 CALL R10 2
- 0x8C280F14, // 0067 GETMET R10 R7 K20
- 0x7C280200, // 0068 CALL R10 1
- 0x782A000A, // 0069 JMPF R10 #0075
- 0x602C0018, // 006A GETGBL R11 G24
- 0x58300015, // 006B LDCONST R12 K21
- 0x5C340200, // 006C MOVE R13 R1
- 0x5C381400, // 006D MOVE R14 R10
- 0x7C2C0600, // 006E CALL R11 3
- 0xB8320000, // 006F GETNGBL R12 K0
- 0x8C301916, // 0070 GETMET R12 R12 K22
- 0x5C381600, // 0071 MOVE R14 R11
- 0x7C300400, // 0072 CALL R12 2
- 0x80041800, // 0073 RET 1 R12
- 0x70020003, // 0074 JMP #0079
- 0xB82E0000, // 0075 GETNGBL R11 K0
- 0x8C2C1717, // 0076 GETMET R11 R11 K23
- 0x7C2C0200, // 0077 CALL R11 1
- 0x80041600, // 0078 RET 1 R11
- 0xB81E0000, // 0079 GETNGBL R7 K0
- 0x8C1C0F01, // 007A GETMET R7 R7 K1
- 0x58240018, // 007B LDCONST R9 K24
- 0x7C1C0400, // 007C CALL R7 2
- 0x80000000, // 007D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: MtrJoin
-********************************************************************/
-be_local_closure(Matter_Device_MtrJoin, /* name */
- be_nested_proto(
- 8, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(start_root_basic_commissioning),
- /* K1 */ be_nested_str_weak(stop_basic_commissioning),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(resp_cmnd_done),
- }),
- be_str_weak(MtrJoin),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x60140009, // 0000 GETGBL R5 G9
- 0x5C180600, // 0001 MOVE R6 R3
- 0x7C140200, // 0002 CALL R5 1
- 0x78160002, // 0003 JMPF R5 #0007
- 0x8C180100, // 0004 GETMET R6 R0 K0
- 0x7C180200, // 0005 CALL R6 1
- 0x70020001, // 0006 JMP #0009
- 0x8C180101, // 0007 GETMET R6 R0 K1
- 0x7C180200, // 0008 CALL R6 1
- 0xB81A0400, // 0009 GETNGBL R6 K2
- 0x8C180D03, // 000A GETMET R6 R6 K3
- 0x7C180200, // 000B CALL R6 1
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: process_attribute_expansion
********************************************************************/
@@ -5604,6 +1793,271 @@ be_local_closure(Matter_Device_process_attribute_expansion, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: register_commands
+********************************************************************/
+be_local_closure(Matter_Device_register_commands, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 3]) {
+ be_nested_proto(
+ 10, /* nstack */
+ 4, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(MtrJoin),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x68100000, // 0000 GETUPV R4 U0
+ 0x8C100900, // 0001 GETMET R4 R4 K0
+ 0x5C180000, // 0002 MOVE R6 R0
+ 0x5C1C0200, // 0003 MOVE R7 R1
+ 0x5C200400, // 0004 MOVE R8 R2
+ 0x5C240600, // 0005 MOVE R9 R3
+ 0x7C100A00, // 0006 CALL R4 5
+ 0x80040800, // 0007 RET 1 R4
+ })
+ ),
+ be_nested_proto(
+ 10, /* nstack */
+ 4, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(MtrUpdate),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x68100000, // 0000 GETUPV R4 U0
+ 0x8C100900, // 0001 GETMET R4 R4 K0
+ 0x5C180000, // 0002 MOVE R6 R0
+ 0x5C1C0200, // 0003 MOVE R7 R1
+ 0x5C200400, // 0004 MOVE R8 R2
+ 0x5C240600, // 0005 MOVE R9 R3
+ 0x7C100A00, // 0006 CALL R4 5
+ 0x80040800, // 0007 RET 1 R4
+ })
+ ),
+ be_nested_proto(
+ 10, /* nstack */
+ 4, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(MtrInfo),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x68100000, // 0000 GETUPV R4 U0
+ 0x8C100900, // 0001 GETMET R4 R4 K0
+ 0x5C180000, // 0002 MOVE R6 R0
+ 0x5C1C0200, // 0003 MOVE R7 R1
+ 0x5C200400, // 0004 MOVE R8 R2
+ 0x5C240600, // 0005 MOVE R9 R3
+ 0x7C100A00, // 0006 CALL R4 5
+ 0x80040800, // 0007 RET 1 R4
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(add_cmd),
+ /* K2 */ be_nested_str_weak(MtrJoin),
+ /* K3 */ be_nested_str_weak(MtrUpdate),
+ /* K4 */ be_nested_str_weak(MtrInfo),
+ }),
+ be_str_weak(register_commands),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x580C0002, // 0002 LDCONST R3 K2
+ 0x84100000, // 0003 CLOSURE R4 P0
+ 0x7C040600, // 0004 CALL R1 3
+ 0xB8060000, // 0005 GETNGBL R1 K0
+ 0x8C040301, // 0006 GETMET R1 R1 K1
+ 0x580C0003, // 0007 LDCONST R3 K3
+ 0x84100001, // 0008 CLOSURE R4 P1
+ 0x7C040600, // 0009 CALL R1 3
+ 0xB8060000, // 000A GETNGBL R1 K0
+ 0x8C040301, // 000B GETMET R1 R1 K1
+ 0x580C0004, // 000C LDCONST R3 K4
+ 0x84100002, // 000D CLOSURE R4 P2
+ 0x7C040600, // 000E CALL R1 3
+ 0xA0000000, // 000F CLOSE R0
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_remotes_info
+********************************************************************/
+be_local_closure(Matter_Device_update_remotes_info, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(http_remotes),
+ /* K1 */ be_nested_str_weak(keys),
+ /* K2 */ be_nested_str_weak(get_info),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(stop_iteration),
+ /* K5 */ be_nested_str_weak(plugins_config_remotes),
+ }),
+ be_str_weak(update_remotes_info),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0x60040013, // 0000 GETGBL R1 G19
+ 0x7C040000, // 0001 CALL R1 0
+ 0x88080100, // 0002 GETMBR R2 R0 K0
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x20080403, // 0004 NE R2 R2 R3
+ 0x780A0018, // 0005 JMPF R2 #001F
+ 0x60080010, // 0006 GETGBL R2 G16
+ 0x880C0100, // 0007 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0008 GETMET R3 R3 K1
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x7C080200, // 000A CALL R2 1
+ 0xA802000F, // 000B EXBLK 0 #001C
+ 0x5C0C0400, // 000C MOVE R3 R2
+ 0x7C0C0000, // 000D CALL R3 0
+ 0x88100100, // 000E GETMBR R4 R0 K0
+ 0x94100803, // 000F GETIDX R4 R4 R3
+ 0x8C100902, // 0010 GETMET R4 R4 K2
+ 0x7C100200, // 0011 CALL R4 1
+ 0x4C140000, // 0012 LDNIL R5
+ 0x20140805, // 0013 NE R5 R4 R5
+ 0x78160005, // 0014 JMPF R5 #001B
+ 0x6014000C, // 0015 GETGBL R5 G12
+ 0x5C180800, // 0016 MOVE R6 R4
+ 0x7C140200, // 0017 CALL R5 1
+ 0x24140B03, // 0018 GT R5 R5 K3
+ 0x78160000, // 0019 JMPF R5 #001B
+ 0x98040604, // 001A SETIDX R1 R3 R4
+ 0x7001FFEF, // 001B JMP #000C
+ 0x58080004, // 001C LDCONST R2 K4
+ 0xAC080200, // 001D CATCH R2 1 0
+ 0xB0080000, // 001E RAISE 2 R0 R0
+ 0x90020A01, // 001F SETMBR R0 K5 R1
+ 0x80040200, // 0020 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _compute_pbkdf
+********************************************************************/
+be_local_closure(Matter_Device__compute_pbkdf, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(add),
+ /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256),
+ /* K3 */ be_nested_str_weak(derive),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(root_w0),
+ /* K6 */ be_nested_str_weak(EC_P256),
+ /* K7 */ be_nested_str_weak(mod),
+ /* K8 */ be_nested_str_weak(root_L),
+ /* K9 */ be_nested_str_weak(public_key),
+ }),
+ be_str_weak(_compute_pbkdf),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0xA4120000, // 0000 IMPORT R4 K0
+ 0x60140015, // 0001 GETGBL R5 G21
+ 0x7C140000, // 0002 CALL R5 0
+ 0x8C140B01, // 0003 GETMET R5 R5 K1
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x54220003, // 0005 LDINT R8 4
+ 0x7C140600, // 0006 CALL R5 3
+ 0x8C180902, // 0007 GETMET R6 R4 K2
+ 0x7C180200, // 0008 CALL R6 1
+ 0x8C180D03, // 0009 GETMET R6 R6 K3
+ 0x5C200A00, // 000A MOVE R8 R5
+ 0x5C240600, // 000B MOVE R9 R3
+ 0x5C280400, // 000C MOVE R10 R2
+ 0x542E004F, // 000D LDINT R11 80
+ 0x7C180A00, // 000E CALL R6 5
+ 0x541E0026, // 000F LDINT R7 39
+ 0x401E0807, // 0010 CONNECT R7 K4 R7
+ 0x941C0C07, // 0011 GETIDX R7 R6 R7
+ 0x54220027, // 0012 LDINT R8 40
+ 0x5426004E, // 0013 LDINT R9 79
+ 0x40201009, // 0014 CONNECT R8 R8 R9
+ 0x94200C08, // 0015 GETIDX R8 R6 R8
+ 0x8C240906, // 0016 GETMET R9 R4 K6
+ 0x7C240200, // 0017 CALL R9 1
+ 0x8C241307, // 0018 GETMET R9 R9 K7
+ 0x5C2C0E00, // 0019 MOVE R11 R7
+ 0x7C240400, // 001A CALL R9 2
+ 0x90020A09, // 001B SETMBR R0 K5 R9
+ 0x8C240906, // 001C GETMET R9 R4 K6
+ 0x7C240200, // 001D CALL R9 1
+ 0x8C241307, // 001E GETMET R9 R9 K7
+ 0x5C2C1000, // 001F MOVE R11 R8
+ 0x7C240400, // 0020 CALL R9 2
+ 0x8C280906, // 0021 GETMET R10 R4 K6
+ 0x7C280200, // 0022 CALL R10 1
+ 0x8C281509, // 0023 GETMET R10 R10 K9
+ 0x5C301200, // 0024 MOVE R12 R9
+ 0x7C280400, // 0025 CALL R10 2
+ 0x9002100A, // 0026 SETMBR R0 K8 R10
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: find_plugin_by_friendly_name
********************************************************************/
@@ -5667,6 +2121,3185 @@ be_local_closure(Matter_Device_find_plugin_by_friendly_name, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: clean_remotes
+********************************************************************/
+be_local_closure(Matter_Device_clean_remotes, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[18]) { /* constants */
+ /* K0 */ be_nested_str_weak(introspect),
+ /* K1 */ be_nested_str_weak(http_remotes),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(stop_iteration),
+ /* K4 */ be_nested_str_weak(plugins),
+ /* K5 */ be_nested_str_weak(get),
+ /* K6 */ be_nested_str_weak(http_remote),
+ /* K7 */ be_nested_str_weak(find),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(keys),
+ /* K10 */ be_nested_str_weak(push),
+ /* K11 */ be_nested_str_weak(tasmota),
+ /* K12 */ be_nested_str_weak(log),
+ /* K13 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20),
+ /* K14 */ be_nested_str_weak(addr),
+ /* K15 */ be_const_int(3),
+ /* K16 */ be_nested_str_weak(close),
+ /* K17 */ be_nested_str_weak(remove),
+ }),
+ be_str_weak(clean_remotes),
+ &be_const_str_solidified,
+ ( &(const binstruction[81]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x780A004C, // 0002 JMPF R2 #0050
+ 0x60080013, // 0003 GETGBL R2 G19
+ 0x7C080000, // 0004 CALL R2 0
+ 0x600C0010, // 0005 GETGBL R3 G16
+ 0x88100101, // 0006 GETMBR R4 R0 K1
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0xA8020003, // 0008 EXBLK 0 #000D
+ 0x5C100600, // 0009 MOVE R4 R3
+ 0x7C100000, // 000A CALL R4 0
+ 0x98080902, // 000B SETIDX R2 R4 K2
+ 0x7001FFFB, // 000C JMP #0009
+ 0x580C0003, // 000D LDCONST R3 K3
+ 0xAC0C0200, // 000E CATCH R3 1 0
+ 0xB0080000, // 000F RAISE 2 R0 R0
+ 0x600C0010, // 0010 GETGBL R3 G16
+ 0x88100104, // 0011 GETMBR R4 R0 K4
+ 0x7C0C0200, // 0012 CALL R3 1
+ 0xA802000F, // 0013 EXBLK 0 #0024
+ 0x5C100600, // 0014 MOVE R4 R3
+ 0x7C100000, // 0015 CALL R4 0
+ 0x8C140305, // 0016 GETMET R5 R1 K5
+ 0x5C1C0800, // 0017 MOVE R7 R4
+ 0x58200006, // 0018 LDCONST R8 K6
+ 0x7C140600, // 0019 CALL R5 3
+ 0x4C180000, // 001A LDNIL R6
+ 0x20180A06, // 001B NE R6 R5 R6
+ 0x781A0005, // 001C JMPF R6 #0023
+ 0x8C180507, // 001D GETMET R6 R2 K7
+ 0x5C200A00, // 001E MOVE R8 R5
+ 0x58240002, // 001F LDCONST R9 K2
+ 0x7C180600, // 0020 CALL R6 3
+ 0x00180D08, // 0021 ADD R6 R6 K8
+ 0x98080A06, // 0022 SETIDX R2 R5 R6
+ 0x7001FFEF, // 0023 JMP #0014
+ 0x580C0003, // 0024 LDCONST R3 K3
+ 0xAC0C0200, // 0025 CATCH R3 1 0
+ 0xB0080000, // 0026 RAISE 2 R0 R0
+ 0x600C0012, // 0027 GETGBL R3 G18
+ 0x7C0C0000, // 0028 CALL R3 0
+ 0x60100010, // 0029 GETGBL R4 G16
+ 0x8C140509, // 002A GETMET R5 R2 K9
+ 0x7C140200, // 002B CALL R5 1
+ 0x7C100200, // 002C CALL R4 1
+ 0xA8020008, // 002D EXBLK 0 #0037
+ 0x5C140800, // 002E MOVE R5 R4
+ 0x7C140000, // 002F CALL R5 0
+ 0x94180405, // 0030 GETIDX R6 R2 R5
+ 0x1C180D02, // 0031 EQ R6 R6 K2
+ 0x781A0002, // 0032 JMPF R6 #0036
+ 0x8C18070A, // 0033 GETMET R6 R3 K10
+ 0x5C200A00, // 0034 MOVE R8 R5
+ 0x7C180400, // 0035 CALL R6 2
+ 0x7001FFF6, // 0036 JMP #002E
+ 0x58100003, // 0037 LDCONST R4 K3
+ 0xAC100200, // 0038 CATCH R4 1 0
+ 0xB0080000, // 0039 RAISE 2 R0 R0
+ 0x60100010, // 003A GETGBL R4 G16
+ 0x5C140600, // 003B MOVE R5 R3
+ 0x7C100200, // 003C CALL R4 1
+ 0xA802000E, // 003D EXBLK 0 #004D
+ 0x5C140800, // 003E MOVE R5 R4
+ 0x7C140000, // 003F CALL R5 0
+ 0xB81A1600, // 0040 GETNGBL R6 K11
+ 0x8C180D0C, // 0041 GETMET R6 R6 K12
+ 0x88200B0E, // 0042 GETMBR R8 R5 K14
+ 0x00221A08, // 0043 ADD R8 K13 R8
+ 0x5824000F, // 0044 LDCONST R9 K15
+ 0x7C180600, // 0045 CALL R6 3
+ 0x8C180B10, // 0046 GETMET R6 R5 K16
+ 0x7C180200, // 0047 CALL R6 1
+ 0x88180101, // 0048 GETMBR R6 R0 K1
+ 0x8C180D11, // 0049 GETMET R6 R6 K17
+ 0x88200B0E, // 004A GETMBR R8 R5 K14
+ 0x7C180400, // 004B CALL R6 2
+ 0x7001FFF0, // 004C JMP #003E
+ 0x58100003, // 004D LDCONST R4 K3
+ 0xAC100200, // 004E CATCH R4 1 0
+ 0xB0080000, // 004F RAISE 2 R0 R0
+ 0x80000000, // 0050 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compute_manual_pairing_code
+********************************************************************/
+be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(root_discriminator),
+ /* K1 */ be_nested_str_weak(root_passcode),
+ /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(Verhoeff),
+ /* K5 */ be_nested_str_weak(checksum),
+ }),
+ be_str_weak(compute_manual_pairing_code),
+ &be_const_str_solidified,
+ ( &(const binstruction[30]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x540A0FFE, // 0001 LDINT R2 4095
+ 0x2C040202, // 0002 AND R1 R1 R2
+ 0x540A0009, // 0003 LDINT R2 10
+ 0x3C040202, // 0004 SHR R1 R1 R2
+ 0x88080100, // 0005 GETMBR R2 R0 K0
+ 0x540E02FF, // 0006 LDINT R3 768
+ 0x2C080403, // 0007 AND R2 R2 R3
+ 0x540E0005, // 0008 LDINT R3 6
+ 0x38080403, // 0009 SHL R2 R2 R3
+ 0x880C0101, // 000A GETMBR R3 R0 K1
+ 0x54123FFE, // 000B LDINT R4 16383
+ 0x2C0C0604, // 000C AND R3 R3 R4
+ 0x30080403, // 000D OR R2 R2 R3
+ 0x880C0101, // 000E GETMBR R3 R0 K1
+ 0x5412000D, // 000F LDINT R4 14
+ 0x3C0C0604, // 0010 SHR R3 R3 R4
+ 0x60100018, // 0011 GETGBL R4 G24
+ 0x58140002, // 0012 LDCONST R5 K2
+ 0x5C180200, // 0013 MOVE R6 R1
+ 0x5C1C0400, // 0014 MOVE R7 R2
+ 0x5C200600, // 0015 MOVE R8 R3
+ 0x7C100800, // 0016 CALL R4 4
+ 0xB8160600, // 0017 GETNGBL R5 K3
+ 0x88140B04, // 0018 GETMBR R5 R5 K4
+ 0x8C140B05, // 0019 GETMET R5 R5 K5
+ 0x5C1C0800, // 001A MOVE R7 R4
+ 0x7C140400, // 001B CALL R5 2
+ 0x00100805, // 001C ADD R4 R4 R5
+ 0x80040800, // 001D RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: autoconf_device
+********************************************************************/
+be_local_closure(Matter_Device_autoconf_device, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[16]) { /* constants */
+ /* K0 */ be_nested_str_weak(json),
+ /* K1 */ be_nested_str_weak(plugins),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(plugins_persist),
+ /* K4 */ be_nested_str_weak(plugins_config),
+ /* K5 */ be_nested_str_weak(autoconf_device_map),
+ /* K6 */ be_nested_str_weak(plugins_config_remotes),
+ /* K7 */ be_nested_str_weak(adjust_next_ep),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(log),
+ /* K10 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20),
+ /* K11 */ be_const_int(3),
+ /* K12 */ be_nested_str_weak(_instantiate_plugins_from_config),
+ /* K13 */ be_nested_str_weak(sessions),
+ /* K14 */ be_nested_str_weak(count_active_fabrics),
+ /* K15 */ be_nested_str_weak(save_param),
+ }),
+ be_str_weak(autoconf_device),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x6008000C, // 0001 GETGBL R2 G12
+ 0x880C0101, // 0002 GETMBR R3 R0 K1
+ 0x7C080200, // 0003 CALL R2 1
+ 0x24080502, // 0004 GT R2 R2 K2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x80000400, // 0006 RET 0
+ 0x88080103, // 0007 GETMBR R2 R0 K3
+ 0x740A000F, // 0008 JMPT R2 #0019
+ 0x8C080105, // 0009 GETMET R2 R0 K5
+ 0x7C080200, // 000A CALL R2 1
+ 0x90020802, // 000B SETMBR R0 K4 R2
+ 0x60080013, // 000C GETGBL R2 G19
+ 0x7C080000, // 000D CALL R2 0
+ 0x90020C02, // 000E SETMBR R0 K6 R2
+ 0x8C080107, // 000F GETMET R2 R0 K7
+ 0x7C080200, // 0010 CALL R2 1
+ 0xB80A1000, // 0011 GETNGBL R2 K8
+ 0x8C080509, // 0012 GETMET R2 R2 K9
+ 0x60100008, // 0013 GETGBL R4 G8
+ 0x88140104, // 0014 GETMBR R5 R0 K4
+ 0x7C100200, // 0015 CALL R4 1
+ 0x00121404, // 0016 ADD R4 K10 R4
+ 0x5814000B, // 0017 LDCONST R5 K11
+ 0x7C080600, // 0018 CALL R2 3
+ 0x8C08010C, // 0019 GETMET R2 R0 K12
+ 0x88100104, // 001A GETMBR R4 R0 K4
+ 0x7C080400, // 001B CALL R2 2
+ 0x88080103, // 001C GETMBR R2 R0 K3
+ 0x740A0008, // 001D JMPT R2 #0027
+ 0x8808010D, // 001E GETMBR R2 R0 K13
+ 0x8C08050E, // 001F GETMET R2 R2 K14
+ 0x7C080200, // 0020 CALL R2 1
+ 0x24080502, // 0021 GT R2 R2 K2
+ 0x780A0003, // 0022 JMPF R2 #0027
+ 0x50080200, // 0023 LDBOOL R2 1 0
+ 0x90020602, // 0024 SETMBR R0 K3 R2
+ 0x8C08010F, // 0025 GETMET R2 R0 K15
+ 0x7C080200, // 0026 CALL R2 1
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attribute_updated
+********************************************************************/
+be_local_closure(Matter_Device_attribute_updated, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(Path),
+ /* K2 */ be_nested_str_weak(endpoint),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(attribute),
+ /* K5 */ be_nested_str_weak(message_handler),
+ /* K6 */ be_nested_str_weak(im),
+ /* K7 */ be_nested_str_weak(subs_shop),
+ /* K8 */ be_nested_str_weak(attribute_updated_ctx),
+ }),
+ be_str_weak(attribute_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x1C140805, // 0001 EQ R5 R4 R5
+ 0x78160000, // 0002 JMPF R5 #0004
+ 0x50100000, // 0003 LDBOOL R4 0 0
+ 0xB8160000, // 0004 GETNGBL R5 K0
+ 0x8C140B01, // 0005 GETMET R5 R5 K1
+ 0x7C140200, // 0006 CALL R5 1
+ 0x90160401, // 0007 SETMBR R5 K2 R1
+ 0x90160602, // 0008 SETMBR R5 K3 R2
+ 0x90160803, // 0009 SETMBR R5 K4 R3
+ 0x88180105, // 000A GETMBR R6 R0 K5
+ 0x88180D06, // 000B GETMBR R6 R6 K6
+ 0x88180D07, // 000C GETMBR R6 R6 K7
+ 0x8C180D08, // 000D GETMET R6 R6 K8
+ 0x5C200A00, // 000E MOVE R8 R5
+ 0x5C240800, // 000F MOVE R9 R4
+ 0x7C180600, // 0010 CALL R6 3
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: save_before_restart
+********************************************************************/
+be_local_closure(Matter_Device_save_before_restart, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics),
+ }),
+ be_str_weak(save_before_restart),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x7C040200, // 0003 CALL R1 1
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_root_commissioning_open
+********************************************************************/
+be_local_closure(Matter_Device_is_root_commissioning_open, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
+ /* K1 */ be_nested_str_weak(commissioning_admin_fabric),
+ }),
+ be_str_weak(is_root_commissioning_open),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060003, // 0003 JMPF R1 #0008
+ 0x88040101, // 0004 GETMBR R1 R0 K1
+ 0x4C080000, // 0005 LDNIL R2
+ 0x1C040202, // 0006 EQ R1 R1 R2
+ 0x74060000, // 0007 JMPT R1 #0009
+ 0x50040001, // 0008 LDBOOL R1 0 1
+ 0x50040200, // 0009 LDBOOL R1 1 0
+ 0x80040200, // 000A RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_commissioning_complete_deferred
+********************************************************************/
+be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 3, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 2]) { /* upvals */
+ be_local_const_upval(1, 0),
+ be_local_const_upval(1, 1),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_commissioning_complete),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x68080001, // 0002 GETUPV R2 U1
+ 0x7C000400, // 0003 CALL R0 2
+ 0x80040000, // 0004 RET 1 R0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(set_timer),
+ /* K2 */ be_const_int(0),
+ }),
+ be_str_weak(start_commissioning_complete_deferred),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x58100002, // 0002 LDCONST R4 K2
+ 0x84140000, // 0003 CLOSURE R5 P0
+ 0x7C080600, // 0004 CALL R2 3
+ 0xA0000000, // 0005 CLOSE R0
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: adjust_next_ep
+********************************************************************/
+be_local_closure(Matter_Device_adjust_next_ep, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(plugins_config),
+ /* K1 */ be_nested_str_weak(keys),
+ /* K2 */ be_nested_str_weak(next_ep),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(adjust_next_ep),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x60040010, // 0000 GETGBL R1 G16
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0x7C080200, // 0003 CALL R2 1
+ 0x7C040200, // 0004 CALL R1 1
+ 0xA802000A, // 0005 EXBLK 0 #0011
+ 0x5C080200, // 0006 MOVE R2 R1
+ 0x7C080000, // 0007 CALL R2 0
+ 0x600C0009, // 0008 GETGBL R3 G9
+ 0x5C100400, // 0009 MOVE R4 R2
+ 0x7C0C0200, // 000A CALL R3 1
+ 0x88100102, // 000B GETMBR R4 R0 K2
+ 0x28100604, // 000C GE R4 R3 R4
+ 0x78120001, // 000D JMPF R4 #0010
+ 0x00100703, // 000E ADD R4 R3 K3
+ 0x90020404, // 000F SETMBR R0 K2 R4
+ 0x7001FFF4, // 0010 JMP #0006
+ 0x58040004, // 0011 LDCONST R1 K4
+ 0xAC040200, // 0012 CATCH R1 1 0
+ 0xB0080000, // 0013 RAISE 2 R0 R0
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(Matter_Device_start, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(started),
+ /* K1 */ be_nested_str_weak(autoconf_device),
+ /* K2 */ be_nested_str_weak(_start_udp),
+ /* K3 */ be_nested_str_weak(UDP_PORT),
+ /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames),
+ }),
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060000, // 0001 JMPF R1 #0003
+ 0x80000200, // 0002 RET 0
+ 0x8C040101, // 0003 GETMET R1 R0 K1
+ 0x7C040200, // 0004 CALL R1 1
+ 0x8C040102, // 0005 GETMET R1 R0 K2
+ 0x880C0103, // 0006 GETMBR R3 R0 K3
+ 0x7C040400, // 0007 CALL R1 2
+ 0x8C040104, // 0008 GETMET R1 R0 K4
+ 0x7C040200, // 0009 CALL R1 1
+ 0x50040200, // 000A LDBOOL R1 1 0
+ 0x90020001, // 000B SETMBR R0 K0 R1
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(Matter_Device_every_second, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_nested_str_weak(every_second),
+ /* K2 */ be_nested_str_weak(message_handler),
+ /* K3 */ be_nested_str_weak(commissioning_open),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(time_reached),
+ }),
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x88040102, // 0003 GETMBR R1 R0 K2
+ 0x8C040301, // 0004 GETMET R1 R1 K1
+ 0x7C040200, // 0005 CALL R1 1
+ 0x88040103, // 0006 GETMBR R1 R0 K3
+ 0x4C080000, // 0007 LDNIL R2
+ 0x20040202, // 0008 NE R1 R1 R2
+ 0x78060006, // 0009 JMPF R1 #0011
+ 0xB8060800, // 000A GETNGBL R1 K4
+ 0x8C040305, // 000B GETMET R1 R1 K5
+ 0x880C0103, // 000C GETMBR R3 R0 K3
+ 0x7C040400, // 000D CALL R1 2
+ 0x78060001, // 000E JMPF R1 #0011
+ 0x4C040000, // 000F LDNIL R1
+ 0x90020601, // 0010 SETMBR R0 K3 R1
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: remove_fabric
+********************************************************************/
+be_local_closure(Matter_Device_remove_fabric, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[16]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20),
+ /* K3 */ be_nested_str_weak(get_fabric_id),
+ /* K4 */ be_nested_str_weak(copy),
+ /* K5 */ be_nested_str_weak(reverse),
+ /* K6 */ be_nested_str_weak(tohex),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_nested_str_weak(message_handler),
+ /* K9 */ be_nested_str_weak(im),
+ /* K10 */ be_nested_str_weak(subs_shop),
+ /* K11 */ be_nested_str_weak(remove_by_fabric),
+ /* K12 */ be_nested_str_weak(mdns_remove_op_discovery),
+ /* K13 */ be_nested_str_weak(sessions),
+ /* K14 */ be_nested_str_weak(remove_fabric),
+ /* K15 */ be_nested_str_weak(save_fabrics),
+ }),
+ be_str_weak(remove_fabric),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0019, // 0002 JMPF R2 #001D
+ 0xB80A0000, // 0003 GETNGBL R2 K0
+ 0x8C080501, // 0004 GETMET R2 R2 K1
+ 0x8C100303, // 0005 GETMET R4 R1 K3
+ 0x7C100200, // 0006 CALL R4 1
+ 0x8C100904, // 0007 GETMET R4 R4 K4
+ 0x7C100200, // 0008 CALL R4 1
+ 0x8C100905, // 0009 GETMET R4 R4 K5
+ 0x7C100200, // 000A CALL R4 1
+ 0x8C100906, // 000B GETMET R4 R4 K6
+ 0x7C100200, // 000C CALL R4 1
+ 0x00120404, // 000D ADD R4 K2 R4
+ 0x58140007, // 000E LDCONST R5 K7
+ 0x7C080600, // 000F CALL R2 3
+ 0x88080108, // 0010 GETMBR R2 R0 K8
+ 0x88080509, // 0011 GETMBR R2 R2 K9
+ 0x8808050A, // 0012 GETMBR R2 R2 K10
+ 0x8C08050B, // 0013 GETMET R2 R2 K11
+ 0x5C100200, // 0014 MOVE R4 R1
+ 0x7C080400, // 0015 CALL R2 2
+ 0x8C08010C, // 0016 GETMET R2 R0 K12
+ 0x5C100200, // 0017 MOVE R4 R1
+ 0x7C080400, // 0018 CALL R2 2
+ 0x8808010D, // 0019 GETMBR R2 R0 K13
+ 0x8C08050E, // 001A GETMET R2 R2 K14
+ 0x5C100200, // 001B MOVE R4 R1
+ 0x7C080400, // 001C CALL R2 2
+ 0x8808010D, // 001D GETMBR R2 R0 K13
+ 0x8C08050F, // 001E GETMET R2 R2 K15
+ 0x7C080200, // 001F CALL R2 1
+ 0x80000000, // 0020 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: sort_distinct
+********************************************************************/
+be_local_closure(Matter_Device_sort_distinct, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_const_class(be_class_Matter_Device),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(stop_iteration),
+ /* K4 */ be_nested_str_weak(remove),
+ }),
+ be_str_weak(sort_distinct),
+ &be_const_str_solidified,
+ ( &(const binstruction[53]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x60080010, // 0001 GETGBL R2 G16
+ 0x600C000C, // 0002 GETGBL R3 G12
+ 0x5C100000, // 0003 MOVE R4 R0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x040C0701, // 0005 SUB R3 R3 K1
+ 0x400E0203, // 0006 CONNECT R3 K1 R3
+ 0x7C080200, // 0007 CALL R2 1
+ 0xA8020010, // 0008 EXBLK 0 #001A
+ 0x5C0C0400, // 0009 MOVE R3 R2
+ 0x7C0C0000, // 000A CALL R3 0
+ 0x94100003, // 000B GETIDX R4 R0 R3
+ 0x5C140600, // 000C MOVE R5 R3
+ 0x24180B02, // 000D GT R6 R5 K2
+ 0x781A0008, // 000E JMPF R6 #0018
+ 0x04180B01, // 000F SUB R6 R5 K1
+ 0x94180006, // 0010 GETIDX R6 R0 R6
+ 0x24180C04, // 0011 GT R6 R6 R4
+ 0x781A0004, // 0012 JMPF R6 #0018
+ 0x04180B01, // 0013 SUB R6 R5 K1
+ 0x94180006, // 0014 GETIDX R6 R0 R6
+ 0x98000A06, // 0015 SETIDX R0 R5 R6
+ 0x04140B01, // 0016 SUB R5 R5 K1
+ 0x7001FFF4, // 0017 JMP #000D
+ 0x98000A04, // 0018 SETIDX R0 R5 R4
+ 0x7001FFEE, // 0019 JMP #0009
+ 0x58080003, // 001A LDCONST R2 K3
+ 0xAC080200, // 001B CATCH R2 1 0
+ 0xB0080000, // 001C RAISE 2 R0 R0
+ 0x58080001, // 001D LDCONST R2 K1
+ 0x600C000C, // 001E GETGBL R3 G12
+ 0x5C100000, // 001F MOVE R4 R0
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x180C0701, // 0021 LE R3 R3 K1
+ 0x780E0000, // 0022 JMPF R3 #0024
+ 0x80040000, // 0023 RET 1 R0
+ 0x940C0102, // 0024 GETIDX R3 R0 K2
+ 0x6010000C, // 0025 GETGBL R4 G12
+ 0x5C140000, // 0026 MOVE R5 R0
+ 0x7C100200, // 0027 CALL R4 1
+ 0x14100404, // 0028 LT R4 R2 R4
+ 0x78120009, // 0029 JMPF R4 #0034
+ 0x94100002, // 002A GETIDX R4 R0 R2
+ 0x1C100803, // 002B EQ R4 R4 R3
+ 0x78120003, // 002C JMPF R4 #0031
+ 0x8C100104, // 002D GETMET R4 R0 K4
+ 0x5C180400, // 002E MOVE R6 R2
+ 0x7C100400, // 002F CALL R4 2
+ 0x70020001, // 0030 JMP #0033
+ 0x940C0002, // 0031 GETIDX R3 R0 R2
+ 0x00080501, // 0032 ADD R2 R2 K1
+ 0x7001FFF0, // 0033 JMP #0025
+ 0x80040000, // 0034 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _init_basic_commissioning
+********************************************************************/
+be_local_closure(Matter_Device__init_basic_commissioning, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_nested_str_weak(count_active_fabrics),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(start_root_basic_commissioning),
+ }),
+ be_str_weak(_init_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x1C040302, // 0003 EQ R1 R1 K2
+ 0x78060001, // 0004 JMPF R1 #0007
+ 0x8C040103, // 0005 GETMET R1 R0 K3
+ 0x7C040200, // 0006 CALL R1 1
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: stop
+********************************************************************/
+be_local_closure(Matter_Device_stop, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(remove_driver),
+ /* K2 */ be_nested_str_weak(udp_server),
+ /* K3 */ be_nested_str_weak(stop),
+ }),
+ be_str_weak(stop),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C040400, // 0003 CALL R1 2
+ 0x88040102, // 0004 GETMBR R1 R0 K2
+ 0x78060002, // 0005 JMPF R1 #0009
+ 0x88040102, // 0006 GETMBR R1 R0 K2
+ 0x8C040303, // 0007 GETMET R1 R1 K3
+ 0x7C040200, // 0008 CALL R1 1
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _trigger_read_sensors
+********************************************************************/
+be_local_closure(Matter_Device__trigger_read_sensors, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(json),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(read_sensors),
+ /* K3 */ be_nested_str_weak(loglevel),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_nested_str_weak(log),
+ /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20),
+ /* K7 */ be_nested_str_weak(load),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str_weak(plugins),
+ /* K10 */ be_nested_str_weak(parse_sensors),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20),
+ }),
+ be_str_weak(_trigger_read_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xB80A0200, // 0001 GETNGBL R2 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x7C080200, // 0003 CALL R2 1
+ 0xB80E0200, // 0004 GETNGBL R3 K1
+ 0x8C0C0703, // 0005 GETMET R3 R3 K3
+ 0x58140004, // 0006 LDCONST R5 K4
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x780E0007, // 0008 JMPF R3 #0011
+ 0xB80E0200, // 0009 GETNGBL R3 K1
+ 0x8C0C0705, // 000A GETMET R3 R3 K5
+ 0x60140008, // 000B GETGBL R5 G8
+ 0x5C180400, // 000C MOVE R6 R2
+ 0x7C140200, // 000D CALL R5 1
+ 0x00160C05, // 000E ADD R5 K6 R5
+ 0x58180004, // 000F LDCONST R6 K4
+ 0x7C0C0600, // 0010 CALL R3 3
+ 0x4C0C0000, // 0011 LDNIL R3
+ 0x1C0C0403, // 0012 EQ R3 R2 R3
+ 0x780E0000, // 0013 JMPF R3 #0015
+ 0x80000600, // 0014 RET 0
+ 0x8C0C0307, // 0015 GETMET R3 R1 K7
+ 0x5C140400, // 0016 MOVE R5 R2
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x4C100000, // 0018 LDNIL R4
+ 0x20100604, // 0019 NE R4 R3 R4
+ 0x7812000D, // 001A JMPF R4 #0029
+ 0x58100008, // 001B LDCONST R4 K8
+ 0x6014000C, // 001C GETGBL R5 G12
+ 0x88180109, // 001D GETMBR R6 R0 K9
+ 0x7C140200, // 001E CALL R5 1
+ 0x14140805, // 001F LT R5 R4 R5
+ 0x78160006, // 0020 JMPF R5 #0028
+ 0x88140109, // 0021 GETMBR R5 R0 K9
+ 0x94140A04, // 0022 GETIDX R5 R5 R4
+ 0x8C140B0A, // 0023 GETMET R5 R5 K10
+ 0x5C1C0600, // 0024 MOVE R7 R3
+ 0x7C140400, // 0025 CALL R5 2
+ 0x0010090B, // 0026 ADD R4 R4 K11
+ 0x7001FFF3, // 0027 JMP #001C
+ 0x70020007, // 0028 JMP #0031
+ 0xB8120200, // 0029 GETNGBL R4 K1
+ 0x8C100905, // 002A GETMET R4 R4 K5
+ 0x60180008, // 002B GETGBL R6 G8
+ 0x5C1C0400, // 002C MOVE R7 R2
+ 0x7C180200, // 002D CALL R6 1
+ 0x001A1806, // 002E ADD R6 K12 R6
+ 0x581C0004, // 002F LDCONST R7 K4
+ 0x7C100600, // 0030 CALL R4 3
+ 0x80000000, // 0031 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _instantiate_plugins_from_config
+********************************************************************/
+be_local_closure(Matter_Device__instantiate_plugins_from_config, /* name */
+ be_nested_proto(
+ 18, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[31]) { /* constants */
+ /* K0 */ be_nested_str_weak(k2l_num),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_nested_str_weak(plugins),
+ /* K6 */ be_nested_str_weak(push),
+ /* K7 */ be_nested_str_weak(matter),
+ /* K8 */ be_nested_str_weak(Plugin_Root),
+ /* K9 */ be_const_int(0),
+ /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s),
+ /* K11 */ be_nested_str_weak(root),
+ /* K12 */ be_nested_str_weak(),
+ /* K13 */ be_nested_str_weak(Plugin_Aggregator),
+ /* K14 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K15 */ be_nested_str_weak(aggregator),
+ /* K16 */ be_nested_str_weak(find),
+ /* K17 */ be_nested_str_weak(type),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping),
+ /* K19 */ be_const_int(3),
+ /* K20 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed),
+ /* K21 */ be_nested_str_weak(plugins_classes),
+ /* K22 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
+ /* K23 */ be_nested_str_weak(_X27_X20skipping),
+ /* K24 */ be_nested_str_weak(conf_to_log),
+ /* K25 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K26 */ be_nested_str_weak(_X7C),
+ /* K27 */ be_nested_str_weak(stop_iteration),
+ /* K28 */ be_nested_str_weak(publish_result),
+ /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D),
+ /* K30 */ be_nested_str_weak(Matter),
+ }),
+ be_str_weak(_instantiate_plugins_from_config),
+ &be_const_str_solidified,
+ ( &(const binstruction[154]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C080400, // 0002 CALL R2 2
+ 0xB80E0200, // 0003 GETNGBL R3 K1
+ 0x8C0C0702, // 0004 GETMET R3 R3 K2
+ 0x58140003, // 0005 LDCONST R5 K3
+ 0x58180004, // 0006 LDCONST R6 K4
+ 0x7C0C0600, // 0007 CALL R3 3
+ 0x880C0105, // 0008 GETMBR R3 R0 K5
+ 0x8C0C0706, // 0009 GETMET R3 R3 K6
+ 0xB8160E00, // 000A GETNGBL R5 K7
+ 0x8C140B08, // 000B GETMET R5 R5 K8
+ 0x5C1C0000, // 000C MOVE R7 R0
+ 0x58200009, // 000D LDCONST R8 K9
+ 0x60240013, // 000E GETGBL R9 G19
+ 0x7C240000, // 000F CALL R9 0
+ 0x7C140800, // 0010 CALL R5 4
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0xB80E0200, // 0012 GETNGBL R3 K1
+ 0x8C0C0702, // 0013 GETMET R3 R3 K2
+ 0x60140018, // 0014 GETGBL R5 G24
+ 0x5818000A, // 0015 LDCONST R6 K10
+ 0x581C0009, // 0016 LDCONST R7 K9
+ 0x5820000B, // 0017 LDCONST R8 K11
+ 0x5824000C, // 0018 LDCONST R9 K12
+ 0x7C140800, // 0019 CALL R5 4
+ 0x58180004, // 001A LDCONST R6 K4
+ 0x7C0C0600, // 001B CALL R3 3
+ 0x880C0105, // 001C GETMBR R3 R0 K5
+ 0x8C0C0706, // 001D GETMET R3 R3 K6
+ 0xB8160E00, // 001E GETNGBL R5 K7
+ 0x8C140B0D, // 001F GETMET R5 R5 K13
+ 0x5C1C0000, // 0020 MOVE R7 R0
+ 0xB8220E00, // 0021 GETNGBL R8 K7
+ 0x8820110E, // 0022 GETMBR R8 R8 K14
+ 0x60240013, // 0023 GETGBL R9 G19
+ 0x7C240000, // 0024 CALL R9 0
+ 0x7C140800, // 0025 CALL R5 4
+ 0x7C0C0400, // 0026 CALL R3 2
+ 0xB80E0200, // 0027 GETNGBL R3 K1
+ 0x8C0C0702, // 0028 GETMET R3 R3 K2
+ 0x60140018, // 0029 GETGBL R5 G24
+ 0x5818000A, // 002A LDCONST R6 K10
+ 0xB81E0E00, // 002B GETNGBL R7 K7
+ 0x881C0F0E, // 002C GETMBR R7 R7 K14
+ 0x5820000F, // 002D LDCONST R8 K15
+ 0x5824000C, // 002E LDCONST R9 K12
+ 0x7C140800, // 002F CALL R5 4
+ 0x58180004, // 0030 LDCONST R6 K4
+ 0x7C0C0600, // 0031 CALL R3 3
+ 0x600C0010, // 0032 GETGBL R3 G16
+ 0x5C100400, // 0033 MOVE R4 R2
+ 0x7C0C0200, // 0034 CALL R3 1
+ 0xA802005A, // 0035 EXBLK 0 #0091
+ 0x5C100600, // 0036 MOVE R4 R3
+ 0x7C100000, // 0037 CALL R4 0
+ 0x1C140909, // 0038 EQ R5 R4 K9
+ 0x78160000, // 0039 JMPF R5 #003B
+ 0x7001FFFA, // 003A JMP #0036
+ 0xA8020042, // 003B EXBLK 0 #007F
+ 0x60140008, // 003C GETGBL R5 G8
+ 0x5C180800, // 003D MOVE R6 R4
+ 0x7C140200, // 003E CALL R5 1
+ 0x94140205, // 003F GETIDX R5 R1 R5
+ 0x8C180B10, // 0040 GETMET R6 R5 K16
+ 0x58200011, // 0041 LDCONST R8 K17
+ 0x7C180400, // 0042 CALL R6 2
+ 0x4C1C0000, // 0043 LDNIL R7
+ 0x1C1C0C07, // 0044 EQ R7 R6 R7
+ 0x781E0006, // 0045 JMPF R7 #004D
+ 0xB81E0200, // 0046 GETNGBL R7 K1
+ 0x8C1C0F02, // 0047 GETMET R7 R7 K2
+ 0x58240012, // 0048 LDCONST R9 K18
+ 0x58280013, // 0049 LDCONST R10 K19
+ 0x7C1C0600, // 004A CALL R7 3
+ 0xA8040001, // 004B EXBLK 1 1
+ 0x7001FFE8, // 004C JMP #0036
+ 0x1C1C0D0B, // 004D EQ R7 R6 K11
+ 0x781E0006, // 004E JMPF R7 #0056
+ 0xB81E0200, // 004F GETNGBL R7 K1
+ 0x8C1C0F02, // 0050 GETMET R7 R7 K2
+ 0x58240014, // 0051 LDCONST R9 K20
+ 0x58280013, // 0052 LDCONST R10 K19
+ 0x7C1C0600, // 0053 CALL R7 3
+ 0xA8040001, // 0054 EXBLK 1 1
+ 0x7001FFDF, // 0055 JMP #0036
+ 0x881C0115, // 0056 GETMBR R7 R0 K21
+ 0x8C1C0F10, // 0057 GETMET R7 R7 K16
+ 0x5C240C00, // 0058 MOVE R9 R6
+ 0x7C1C0400, // 0059 CALL R7 2
+ 0x4C200000, // 005A LDNIL R8
+ 0x1C200E08, // 005B EQ R8 R7 R8
+ 0x7822000A, // 005C JMPF R8 #0068
+ 0xB8220200, // 005D GETNGBL R8 K1
+ 0x8C201102, // 005E GETMET R8 R8 K2
+ 0x60280008, // 005F GETGBL R10 G8
+ 0x5C2C0C00, // 0060 MOVE R11 R6
+ 0x7C280200, // 0061 CALL R10 1
+ 0x002A2C0A, // 0062 ADD R10 K22 R10
+ 0x00281517, // 0063 ADD R10 R10 K23
+ 0x582C0004, // 0064 LDCONST R11 K4
+ 0x7C200600, // 0065 CALL R8 3
+ 0xA8040001, // 0066 EXBLK 1 1
+ 0x7001FFCD, // 0067 JMP #0036
+ 0x5C200E00, // 0068 MOVE R8 R7
+ 0x5C240000, // 0069 MOVE R9 R0
+ 0x5C280800, // 006A MOVE R10 R4
+ 0x5C2C0A00, // 006B MOVE R11 R5
+ 0x7C200600, // 006C CALL R8 3
+ 0x88240105, // 006D GETMBR R9 R0 K5
+ 0x8C241306, // 006E GETMET R9 R9 K6
+ 0x5C2C1000, // 006F MOVE R11 R8
+ 0x7C240400, // 0070 CALL R9 2
+ 0xB8260200, // 0071 GETNGBL R9 K1
+ 0x8C241302, // 0072 GETMET R9 R9 K2
+ 0x602C0018, // 0073 GETGBL R11 G24
+ 0x5830000A, // 0074 LDCONST R12 K10
+ 0x5C340800, // 0075 MOVE R13 R4
+ 0x5C380C00, // 0076 MOVE R14 R6
+ 0x8C3C0118, // 0077 GETMET R15 R0 K24
+ 0x5C440A00, // 0078 MOVE R17 R5
+ 0x7C3C0400, // 0079 CALL R15 2
+ 0x7C2C0800, // 007A CALL R11 4
+ 0x58300004, // 007B LDCONST R12 K4
+ 0x7C240600, // 007C CALL R9 3
+ 0xA8040001, // 007D EXBLK 1 1
+ 0x70020010, // 007E JMP #0090
+ 0xAC140002, // 007F CATCH R5 0 2
+ 0x7002000D, // 0080 JMP #008F
+ 0xB81E0200, // 0081 GETNGBL R7 K1
+ 0x8C1C0F02, // 0082 GETMET R7 R7 K2
+ 0x60240008, // 0083 GETGBL R9 G8
+ 0x5C280A00, // 0084 MOVE R10 R5
+ 0x7C240200, // 0085 CALL R9 1
+ 0x00263209, // 0086 ADD R9 K25 R9
+ 0x0024131A, // 0087 ADD R9 R9 K26
+ 0x60280008, // 0088 GETGBL R10 G8
+ 0x5C2C0C00, // 0089 MOVE R11 R6
+ 0x7C280200, // 008A CALL R10 1
+ 0x0024120A, // 008B ADD R9 R9 R10
+ 0x58280004, // 008C LDCONST R10 K4
+ 0x7C1C0600, // 008D CALL R7 3
+ 0x70020000, // 008E JMP #0090
+ 0xB0080000, // 008F RAISE 2 R0 R0
+ 0x7001FFA4, // 0090 JMP #0036
+ 0x580C001B, // 0091 LDCONST R3 K27
+ 0xAC0C0200, // 0092 CATCH R3 1 0
+ 0xB0080000, // 0093 RAISE 2 R0 R0
+ 0xB80E0200, // 0094 GETNGBL R3 K1
+ 0x8C0C071C, // 0095 GETMET R3 R3 K28
+ 0x5814001D, // 0096 LDCONST R5 K29
+ 0x5818001E, // 0097 LDCONST R6 K30
+ 0x7C0C0600, // 0098 CALL R3 3
+ 0x80000000, // 0099 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_announce_op_discovery
+********************************************************************/
+be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[27]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(get_device_id),
+ /* K2 */ be_nested_str_weak(copy),
+ /* K3 */ be_nested_str_weak(reverse),
+ /* K4 */ be_nested_str_weak(get_fabric_compressed),
+ /* K5 */ be_nested_str_weak(tohex),
+ /* K6 */ be_nested_str_weak(_X2D),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(log),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20),
+ /* K10 */ be_const_int(3),
+ /* K11 */ be_nested_str_weak(eth),
+ /* K12 */ be_nested_str_weak(find),
+ /* K13 */ be_nested_str_weak(up),
+ /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K15 */ be_nested_str_weak(hostname_eth),
+ /* K16 */ be_nested_str_weak(add_service),
+ /* K17 */ be_nested_str_weak(_matter),
+ /* K18 */ be_nested_str_weak(_tcp),
+ /* K19 */ be_nested_str_weak(_I),
+ /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
+ /* K21 */ be_nested_str_weak(add_subtype),
+ /* K22 */ be_nested_str_weak(wifi),
+ /* K23 */ be_nested_str_weak(hostname_wifi),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K25 */ be_nested_str_weak(_X7C),
+ /* K26 */ be_const_int(2),
+ }),
+ be_str_weak(mdns_announce_op_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[121]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA8020064, // 0001 EXBLK 0 #0067
+ 0x8C0C0301, // 0002 GETMET R3 R1 K1
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0702, // 0004 GETMET R3 R3 K2
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C0C0703, // 0006 GETMET R3 R3 K3
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C100304, // 0008 GETMET R4 R1 K4
+ 0x7C100200, // 0009 CALL R4 1
+ 0x8C140905, // 000A GETMET R5 R4 K5
+ 0x7C140200, // 000B CALL R5 1
+ 0x00140B06, // 000C ADD R5 R5 K6
+ 0x8C180705, // 000D GETMET R6 R3 K5
+ 0x7C180200, // 000E CALL R6 1
+ 0x00140A06, // 000F ADD R5 R5 R6
+ 0xB81A0E00, // 0010 GETNGBL R6 K7
+ 0x8C180D08, // 0011 GETMET R6 R6 K8
+ 0x00221205, // 0012 ADD R8 K9 R5
+ 0x5824000A, // 0013 LDCONST R9 K10
+ 0x7C180600, // 0014 CALL R6 3
+ 0xB81A0E00, // 0015 GETNGBL R6 K7
+ 0x8C180D0B, // 0016 GETMET R6 R6 K11
+ 0x7C180200, // 0017 CALL R6 1
+ 0x8C180D0C, // 0018 GETMET R6 R6 K12
+ 0x5820000D, // 0019 LDCONST R8 K13
+ 0x7C180400, // 001A CALL R6 2
+ 0x781A0020, // 001B JMPF R6 #003D
+ 0xB81A0E00, // 001C GETNGBL R6 K7
+ 0x8C180D08, // 001D GETMET R6 R6 K8
+ 0x60200018, // 001E GETGBL R8 G24
+ 0x5824000E, // 001F LDCONST R9 K14
+ 0x5828000B, // 0020 LDCONST R10 K11
+ 0x5C2C0A00, // 0021 MOVE R11 R5
+ 0x8830010F, // 0022 GETMBR R12 R0 K15
+ 0x7C200800, // 0023 CALL R8 4
+ 0x5824000A, // 0024 LDCONST R9 K10
+ 0x7C180600, // 0025 CALL R6 3
+ 0x8C180510, // 0026 GETMET R6 R2 K16
+ 0x58200011, // 0027 LDCONST R8 K17
+ 0x58240012, // 0028 LDCONST R9 K18
+ 0x542A15A3, // 0029 LDINT R10 5540
+ 0x4C2C0000, // 002A LDNIL R11
+ 0x5C300A00, // 002B MOVE R12 R5
+ 0x8834010F, // 002C GETMBR R13 R0 K15
+ 0x7C180E00, // 002D CALL R6 7
+ 0x8C180905, // 002E GETMET R6 R4 K5
+ 0x7C180200, // 002F CALL R6 1
+ 0x001A2606, // 0030 ADD R6 K19 R6
+ 0xB81E0E00, // 0031 GETNGBL R7 K7
+ 0x8C1C0F08, // 0032 GETMET R7 R7 K8
+ 0x00262806, // 0033 ADD R9 K20 R6
+ 0x5828000A, // 0034 LDCONST R10 K10
+ 0x7C1C0600, // 0035 CALL R7 3
+ 0x8C1C0515, // 0036 GETMET R7 R2 K21
+ 0x58240011, // 0037 LDCONST R9 K17
+ 0x58280012, // 0038 LDCONST R10 K18
+ 0x5C2C0A00, // 0039 MOVE R11 R5
+ 0x8830010F, // 003A GETMBR R12 R0 K15
+ 0x5C340C00, // 003B MOVE R13 R6
+ 0x7C1C0C00, // 003C CALL R7 6
+ 0xB81A0E00, // 003D GETNGBL R6 K7
+ 0x8C180D16, // 003E GETMET R6 R6 K22
+ 0x7C180200, // 003F CALL R6 1
+ 0x8C180D0C, // 0040 GETMET R6 R6 K12
+ 0x5820000D, // 0041 LDCONST R8 K13
+ 0x7C180400, // 0042 CALL R6 2
+ 0x781A0020, // 0043 JMPF R6 #0065
+ 0xB81A0E00, // 0044 GETNGBL R6 K7
+ 0x8C180D08, // 0045 GETMET R6 R6 K8
+ 0x60200018, // 0046 GETGBL R8 G24
+ 0x5824000E, // 0047 LDCONST R9 K14
+ 0x58280016, // 0048 LDCONST R10 K22
+ 0x5C2C0A00, // 0049 MOVE R11 R5
+ 0x88300117, // 004A GETMBR R12 R0 K23
+ 0x7C200800, // 004B CALL R8 4
+ 0x5824000A, // 004C LDCONST R9 K10
+ 0x7C180600, // 004D CALL R6 3
+ 0x8C180510, // 004E GETMET R6 R2 K16
+ 0x58200011, // 004F LDCONST R8 K17
+ 0x58240012, // 0050 LDCONST R9 K18
+ 0x542A15A3, // 0051 LDINT R10 5540
+ 0x4C2C0000, // 0052 LDNIL R11
+ 0x5C300A00, // 0053 MOVE R12 R5
+ 0x88340117, // 0054 GETMBR R13 R0 K23
+ 0x7C180E00, // 0055 CALL R6 7
+ 0x8C180905, // 0056 GETMET R6 R4 K5
+ 0x7C180200, // 0057 CALL R6 1
+ 0x001A2606, // 0058 ADD R6 K19 R6
+ 0xB81E0E00, // 0059 GETNGBL R7 K7
+ 0x8C1C0F08, // 005A GETMET R7 R7 K8
+ 0x00262806, // 005B ADD R9 K20 R6
+ 0x5828000A, // 005C LDCONST R10 K10
+ 0x7C1C0600, // 005D CALL R7 3
+ 0x8C1C0515, // 005E GETMET R7 R2 K21
+ 0x58240011, // 005F LDCONST R9 K17
+ 0x58280012, // 0060 LDCONST R10 K18
+ 0x5C2C0A00, // 0061 MOVE R11 R5
+ 0x88300117, // 0062 GETMBR R12 R0 K23
+ 0x5C340C00, // 0063 MOVE R13 R6
+ 0x7C1C0C00, // 0064 CALL R7 6
+ 0xA8040001, // 0065 EXBLK 1 1
+ 0x70020010, // 0066 JMP #0078
+ 0xAC0C0002, // 0067 CATCH R3 0 2
+ 0x7002000D, // 0068 JMP #0077
+ 0xB8160E00, // 0069 GETNGBL R5 K7
+ 0x8C140B08, // 006A GETMET R5 R5 K8
+ 0x601C0008, // 006B GETGBL R7 G8
+ 0x5C200600, // 006C MOVE R8 R3
+ 0x7C1C0200, // 006D CALL R7 1
+ 0x001E3007, // 006E ADD R7 K24 R7
+ 0x001C0F19, // 006F ADD R7 R7 K25
+ 0x60200008, // 0070 GETGBL R8 G8
+ 0x5C240800, // 0071 MOVE R9 R4
+ 0x7C200200, // 0072 CALL R8 1
+ 0x001C0E08, // 0073 ADD R7 R7 R8
+ 0x5820001A, // 0074 LDCONST R8 K26
+ 0x7C140600, // 0075 CALL R5 3
+ 0x70020000, // 0076 JMP #0078
+ 0xB0080000, // 0077 RAISE 2 R0 R0
+ 0x80000000, // 0078 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: k2l
+********************************************************************/
+be_local_closure(Matter_Device_k2l, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_const_class(be_class_Matter_Device),
+ /* K1 */ be_nested_str_weak(keys),
+ /* K2 */ be_nested_str_weak(push),
+ /* K3 */ be_nested_str_weak(stop_iteration),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_const_int(0),
+ }),
+ be_str_weak(k2l),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0003, // 0004 EQ R3 R0 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x80040400, // 0006 RET 1 R2
+ 0x600C0010, // 0007 GETGBL R3 G16
+ 0x8C100101, // 0008 GETMET R4 R0 K1
+ 0x7C100200, // 0009 CALL R4 1
+ 0x7C0C0200, // 000A CALL R3 1
+ 0xA8020005, // 000B EXBLK 0 #0012
+ 0x5C100600, // 000C MOVE R4 R3
+ 0x7C100000, // 000D CALL R4 0
+ 0x8C140502, // 000E GETMET R5 R2 K2
+ 0x5C1C0800, // 000F MOVE R7 R4
+ 0x7C140400, // 0010 CALL R5 2
+ 0x7001FFF9, // 0011 JMP #000C
+ 0x580C0003, // 0012 LDCONST R3 K3
+ 0xAC0C0200, // 0013 CATCH R3 1 0
+ 0xB0080000, // 0014 RAISE 2 R0 R0
+ 0x600C0010, // 0015 GETGBL R3 G16
+ 0x6010000C, // 0016 GETGBL R4 G12
+ 0x5C140400, // 0017 MOVE R5 R2
+ 0x7C100200, // 0018 CALL R4 1
+ 0x04100904, // 0019 SUB R4 R4 K4
+ 0x40120804, // 001A CONNECT R4 K4 R4
+ 0x7C0C0200, // 001B CALL R3 1
+ 0xA8020010, // 001C EXBLK 0 #002E
+ 0x5C100600, // 001D MOVE R4 R3
+ 0x7C100000, // 001E CALL R4 0
+ 0x94140404, // 001F GETIDX R5 R2 R4
+ 0x5C180800, // 0020 MOVE R6 R4
+ 0x241C0D05, // 0021 GT R7 R6 K5
+ 0x781E0008, // 0022 JMPF R7 #002C
+ 0x041C0D04, // 0023 SUB R7 R6 K4
+ 0x941C0407, // 0024 GETIDX R7 R2 R7
+ 0x241C0E05, // 0025 GT R7 R7 R5
+ 0x781E0004, // 0026 JMPF R7 #002C
+ 0x041C0D04, // 0027 SUB R7 R6 K4
+ 0x941C0407, // 0028 GETIDX R7 R2 R7
+ 0x98080C07, // 0029 SETIDX R2 R6 R7
+ 0x04180D04, // 002A SUB R6 R6 K4
+ 0x7001FFF4, // 002B JMP #0021
+ 0x98080C05, // 002C SETIDX R2 R6 R5
+ 0x7001FFEE, // 002D JMP #001D
+ 0x580C0003, // 002E LDCONST R3 K3
+ 0xAC0C0200, // 002F CATCH R3 1 0
+ 0xB0080000, // 0030 RAISE 2 R0 R0
+ 0x80040400, // 0031 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_plugin_class_arg
+********************************************************************/
+be_local_closure(Matter_Device_get_plugin_class_arg, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(plugins_classes),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(ARG),
+ /* K3 */ be_nested_str_weak(),
+ }),
+ be_str_weak(get_plugin_class_arg),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x780A0001, // 0004 JMPF R2 #0007
+ 0x880C0502, // 0005 GETMBR R3 R2 K2
+ 0x70020000, // 0006 JMP #0008
+ 0x580C0003, // 0007 LDCONST R3 K3
+ 0x80040600, // 0008 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: stop_basic_commissioning
+********************************************************************/
+be_local_closure(Matter_Device_stop_basic_commissioning, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(is_root_commissioning_open),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(publish_result),
+ /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D),
+ /* K4 */ be_nested_str_weak(Matter),
+ /* K5 */ be_nested_str_weak(commissioning_open),
+ /* K6 */ be_nested_str_weak(mdns_remove_PASE),
+ /* K7 */ be_nested_str_weak(commissioning_iterations),
+ /* K8 */ be_nested_str_weak(commissioning_discriminator),
+ /* K9 */ be_nested_str_weak(commissioning_salt),
+ /* K10 */ be_nested_str_weak(commissioning_w0),
+ /* K11 */ be_nested_str_weak(commissioning_L),
+ /* K12 */ be_nested_str_weak(commissioning_admin_fabric),
+ }),
+ be_str_weak(stop_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x78060004, // 0002 JMPF R1 #0008
+ 0xB8060200, // 0003 GETNGBL R1 K1
+ 0x8C040302, // 0004 GETMET R1 R1 K2
+ 0x580C0003, // 0005 LDCONST R3 K3
+ 0x58100004, // 0006 LDCONST R4 K4
+ 0x7C040600, // 0007 CALL R1 3
+ 0x4C040000, // 0008 LDNIL R1
+ 0x90020A01, // 0009 SETMBR R0 K5 R1
+ 0x8C040106, // 000A GETMET R1 R0 K6
+ 0x7C040200, // 000B CALL R1 1
+ 0x4C040000, // 000C LDNIL R1
+ 0x90020E01, // 000D SETMBR R0 K7 R1
+ 0x4C040000, // 000E LDNIL R1
+ 0x90021001, // 000F SETMBR R0 K8 R1
+ 0x4C040000, // 0010 LDNIL R1
+ 0x90021201, // 0011 SETMBR R0 K9 R1
+ 0x4C040000, // 0012 LDNIL R1
+ 0x90021401, // 0013 SETMBR R0 K10 R1
+ 0x4C040000, // 0014 LDNIL R1
+ 0x90021601, // 0015 SETMBR R0 K11 R1
+ 0x4C040000, // 0016 LDNIL R1
+ 0x90021801, // 0017 SETMBR R0 K12 R1
+ 0x80000000, // 0018 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_250ms
+********************************************************************/
+be_local_closure(Matter_Device_every_250ms, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(message_handler),
+ /* K1 */ be_nested_str_weak(every_250ms),
+ /* K2 */ be_nested_str_weak(read_sensors_scheduler),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(plugins),
+ /* K5 */ be_const_int(1),
+ }),
+ be_str_weak(every_250ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x8C040102, // 0003 GETMET R1 R0 K2
+ 0x7C040200, // 0004 CALL R1 1
+ 0x58040003, // 0005 LDCONST R1 K3
+ 0x6008000C, // 0006 GETGBL R2 G12
+ 0x880C0104, // 0007 GETMBR R3 R0 K4
+ 0x7C080200, // 0008 CALL R2 1
+ 0x14080202, // 0009 LT R2 R1 R2
+ 0x780A0005, // 000A JMPF R2 #0011
+ 0x88080104, // 000B GETMBR R2 R0 K4
+ 0x94080401, // 000C GETIDX R2 R2 R1
+ 0x8C080501, // 000D GETMET R2 R2 K1
+ 0x7C080200, // 000E CALL R2 1
+ 0x00040305, // 000F ADD R1 R1 K5
+ 0x7001FFF4, // 0010 JMP #0006
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _start_udp
+********************************************************************/
+be_local_closure(Matter_Device__start_udp, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(msg_received),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x8C0C0700, // 0001 GETMET R3 R3 K0
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x7C0C0800, // 0005 CALL R3 4
+ 0x80040600, // 0006 RET 1 R3
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(udp_server),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(UDPServer),
+ /* K7 */ be_nested_str_weak(),
+ /* K8 */ be_nested_str_weak(start),
+ }),
+ be_str_weak(_start_udp),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x780A0000, // 0001 JMPF R2 #0003
+ 0x80000400, // 0002 RET 0
+ 0x4C080000, // 0003 LDNIL R2
+ 0x1C080202, // 0004 EQ R2 R1 R2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x540615A3, // 0006 LDINT R1 5540
+ 0xB80A0200, // 0007 GETNGBL R2 K1
+ 0x8C080502, // 0008 GETMET R2 R2 K2
+ 0x60100008, // 0009 GETGBL R4 G8
+ 0x5C140200, // 000A MOVE R5 R1
+ 0x7C100200, // 000B CALL R4 1
+ 0x00120604, // 000C ADD R4 K3 R4
+ 0x58140004, // 000D LDCONST R5 K4
+ 0x7C080600, // 000E CALL R2 3
+ 0xB80A0A00, // 000F GETNGBL R2 K5
+ 0x8C080506, // 0010 GETMET R2 R2 K6
+ 0x5C100000, // 0011 MOVE R4 R0
+ 0x58140007, // 0012 LDCONST R5 K7
+ 0x5C180200, // 0013 MOVE R6 R1
+ 0x7C080800, // 0014 CALL R2 4
+ 0x90020002, // 0015 SETMBR R0 K0 R2
+ 0x88080100, // 0016 GETMBR R2 R0 K0
+ 0x8C080508, // 0017 GETMET R2 R2 K8
+ 0x84100000, // 0018 CLOSURE R4 P0
+ 0x7C080400, // 0019 CALL R2 2
+ 0xA0000000, // 001A CLOSE R0
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: k2l_num
+********************************************************************/
+be_local_closure(Matter_Device_k2l_num, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_const_class(be_class_Matter_Device),
+ /* K1 */ be_nested_str_weak(keys),
+ /* K2 */ be_nested_str_weak(push),
+ /* K3 */ be_nested_str_weak(stop_iteration),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_const_int(0),
+ }),
+ be_str_weak(k2l_num),
+ &be_const_str_solidified,
+ ( &(const binstruction[52]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0003, // 0004 EQ R3 R0 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x80040400, // 0006 RET 1 R2
+ 0x600C0010, // 0007 GETGBL R3 G16
+ 0x8C100101, // 0008 GETMET R4 R0 K1
+ 0x7C100200, // 0009 CALL R4 1
+ 0x7C0C0200, // 000A CALL R3 1
+ 0xA8020007, // 000B EXBLK 0 #0014
+ 0x5C100600, // 000C MOVE R4 R3
+ 0x7C100000, // 000D CALL R4 0
+ 0x8C140502, // 000E GETMET R5 R2 K2
+ 0x601C0009, // 000F GETGBL R7 G9
+ 0x5C200800, // 0010 MOVE R8 R4
+ 0x7C1C0200, // 0011 CALL R7 1
+ 0x7C140400, // 0012 CALL R5 2
+ 0x7001FFF7, // 0013 JMP #000C
+ 0x580C0003, // 0014 LDCONST R3 K3
+ 0xAC0C0200, // 0015 CATCH R3 1 0
+ 0xB0080000, // 0016 RAISE 2 R0 R0
+ 0x600C0010, // 0017 GETGBL R3 G16
+ 0x6010000C, // 0018 GETGBL R4 G12
+ 0x5C140400, // 0019 MOVE R5 R2
+ 0x7C100200, // 001A CALL R4 1
+ 0x04100904, // 001B SUB R4 R4 K4
+ 0x40120804, // 001C CONNECT R4 K4 R4
+ 0x7C0C0200, // 001D CALL R3 1
+ 0xA8020010, // 001E EXBLK 0 #0030
+ 0x5C100600, // 001F MOVE R4 R3
+ 0x7C100000, // 0020 CALL R4 0
+ 0x94140404, // 0021 GETIDX R5 R2 R4
+ 0x5C180800, // 0022 MOVE R6 R4
+ 0x241C0D05, // 0023 GT R7 R6 K5
+ 0x781E0008, // 0024 JMPF R7 #002E
+ 0x041C0D04, // 0025 SUB R7 R6 K4
+ 0x941C0407, // 0026 GETIDX R7 R2 R7
+ 0x241C0E05, // 0027 GT R7 R7 R5
+ 0x781E0004, // 0028 JMPF R7 #002E
+ 0x041C0D04, // 0029 SUB R7 R6 K4
+ 0x941C0407, // 002A GETIDX R7 R2 R7
+ 0x98080C07, // 002B SETIDX R2 R6 R7
+ 0x04180D04, // 002C SUB R6 R6 K4
+ 0x7001FFF4, // 002D JMP #0023
+ 0x98080C05, // 002E SETIDX R2 R6 R5
+ 0x7001FFEE, // 002F JMP #001F
+ 0x580C0003, // 0030 LDCONST R3 K3
+ 0xAC0C0200, // 0031 CATCH R3 1 0
+ 0xB0080000, // 0032 RAISE 2 R0 R0
+ 0x80040400, // 0033 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_active_endpoints
+********************************************************************/
+be_local_closure(Matter_Device_get_active_endpoints, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(plugins),
+ /* K1 */ be_nested_str_weak(get_endpoint),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(find),
+ /* K4 */ be_nested_str_weak(push),
+ /* K5 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(get_active_endpoints),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x60080012, // 0000 GETGBL R2 G18
+ 0x7C080000, // 0001 CALL R2 0
+ 0x600C0010, // 0002 GETGBL R3 G16
+ 0x88100100, // 0003 GETMBR R4 R0 K0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0xA8020011, // 0005 EXBLK 0 #0018
+ 0x5C100600, // 0006 MOVE R4 R3
+ 0x7C100000, // 0007 CALL R4 0
+ 0x8C140901, // 0008 GETMET R5 R4 K1
+ 0x7C140200, // 0009 CALL R5 1
+ 0x78060002, // 000A JMPF R1 #000E
+ 0x1C180B02, // 000B EQ R6 R5 K2
+ 0x781A0000, // 000C JMPF R6 #000E
+ 0x7001FFF7, // 000D JMP #0006
+ 0x8C180503, // 000E GETMET R6 R2 K3
+ 0x5C200A00, // 000F MOVE R8 R5
+ 0x7C180400, // 0010 CALL R6 2
+ 0x4C1C0000, // 0011 LDNIL R7
+ 0x1C180C07, // 0012 EQ R6 R6 R7
+ 0x781A0002, // 0013 JMPF R6 #0017
+ 0x8C180504, // 0014 GETMET R6 R2 K4
+ 0x5C200A00, // 0015 MOVE R8 R5
+ 0x7C180400, // 0016 CALL R6 2
+ 0x7001FFED, // 0017 JMP #0006
+ 0x580C0005, // 0018 LDCONST R3 K5
+ 0xAC0C0200, // 0019 CATCH R3 1 0
+ 0xB0080000, // 001A RAISE 2 R0 R0
+ 0x80040400, // 001B RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: check_config_ep
+********************************************************************/
+be_local_closure(Matter_Device_check_config_ep, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[15]) { /* constants */
+ /* K0 */ be_nested_str_weak(plugins_config),
+ /* K1 */ be_nested_str_weak(keys),
+ /* K2 */ be_nested_str_weak(push),
+ /* K3 */ be_nested_str_weak(stop_iteration),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(remove),
+ /* K10 */ be_nested_str_weak(matter),
+ /* K11 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s),
+ /* K13 */ be_nested_str_weak(next_ep),
+ /* K14 */ be_const_int(1),
+ }),
+ be_str_weak(check_config_ep),
+ &be_const_str_solidified,
+ ( &(const binstruction[79]) { /* code */
+ 0x50040000, // 0000 LDBOOL R1 0 0
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x600C0010, // 0003 GETGBL R3 G16
+ 0x88100100, // 0004 GETMBR R4 R0 K0
+ 0x8C100901, // 0005 GETMET R4 R4 K1
+ 0x7C100200, // 0006 CALL R4 1
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0xA8020007, // 0008 EXBLK 0 #0011
+ 0x5C100600, // 0009 MOVE R4 R3
+ 0x7C100000, // 000A CALL R4 0
+ 0x8C140502, // 000B GETMET R5 R2 K2
+ 0x601C0009, // 000C GETGBL R7 G9
+ 0x5C200800, // 000D MOVE R8 R4
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x7C140400, // 000F CALL R5 2
+ 0x7001FFF7, // 0010 JMP #0009
+ 0x580C0003, // 0011 LDCONST R3 K3
+ 0xAC0C0200, // 0012 CATCH R3 1 0
+ 0xB0080000, // 0013 RAISE 2 R0 R0
+ 0x600C0010, // 0014 GETGBL R3 G16
+ 0x5C100400, // 0015 MOVE R4 R2
+ 0x7C0C0200, // 0016 CALL R3 1
+ 0xA8020032, // 0017 EXBLK 0 #004B
+ 0x5C100600, // 0018 MOVE R4 R3
+ 0x7C100000, // 0019 CALL R4 0
+ 0x1C140904, // 001A EQ R5 R4 K4
+ 0x7816000C, // 001B JMPF R5 #0029
+ 0xB8160A00, // 001C GETNGBL R5 K5
+ 0x8C140B06, // 001D GETMET R5 R5 K6
+ 0x581C0007, // 001E LDCONST R7 K7
+ 0x58200008, // 001F LDCONST R8 K8
+ 0x7C140600, // 0020 CALL R5 3
+ 0x88140100, // 0021 GETMBR R5 R0 K0
+ 0x8C140B09, // 0022 GETMET R5 R5 K9
+ 0x601C0008, // 0023 GETGBL R7 G8
+ 0x5C200800, // 0024 MOVE R8 R4
+ 0x7C1C0200, // 0025 CALL R7 1
+ 0x7C140400, // 0026 CALL R5 2
+ 0x50040200, // 0027 LDBOOL R1 1 0
+ 0x70020020, // 0028 JMP #004A
+ 0xB8161400, // 0029 GETNGBL R5 K10
+ 0x88140B0B, // 002A GETMBR R5 R5 K11
+ 0x1C140805, // 002B EQ R5 R4 R5
+ 0x7816001C, // 002C JMPF R5 #004A
+ 0x50040200, // 002D LDBOOL R1 1 0
+ 0xB8160A00, // 002E GETNGBL R5 K5
+ 0x8C140B06, // 002F GETMET R5 R5 K6
+ 0x601C0018, // 0030 GETGBL R7 G24
+ 0x5820000C, // 0031 LDCONST R8 K12
+ 0x5C240800, // 0032 MOVE R9 R4
+ 0x8828010D, // 0033 GETMBR R10 R0 K13
+ 0x7C1C0600, // 0034 CALL R7 3
+ 0x58200008, // 0035 LDCONST R8 K8
+ 0x7C140600, // 0036 CALL R5 3
+ 0x60140008, // 0037 GETGBL R5 G8
+ 0x8818010D, // 0038 GETMBR R6 R0 K13
+ 0x7C140200, // 0039 CALL R5 1
+ 0x88180100, // 003A GETMBR R6 R0 K0
+ 0x601C0008, // 003B GETGBL R7 G8
+ 0x5C200800, // 003C MOVE R8 R4
+ 0x7C1C0200, // 003D CALL R7 1
+ 0x88200100, // 003E GETMBR R8 R0 K0
+ 0x941C1007, // 003F GETIDX R7 R8 R7
+ 0x98180A07, // 0040 SETIDX R6 R5 R7
+ 0x88140100, // 0041 GETMBR R5 R0 K0
+ 0x8C140B09, // 0042 GETMET R5 R5 K9
+ 0x601C0008, // 0043 GETGBL R7 G8
+ 0x5C200800, // 0044 MOVE R8 R4
+ 0x7C1C0200, // 0045 CALL R7 1
+ 0x7C140400, // 0046 CALL R5 2
+ 0x8814010D, // 0047 GETMBR R5 R0 K13
+ 0x00140B0E, // 0048 ADD R5 R5 K14
+ 0x90021A05, // 0049 SETMBR R0 K13 R5
+ 0x7001FFCC, // 004A JMP #0018
+ 0x580C0003, // 004B LDCONST R3 K3
+ 0xAC0C0200, // 004C CATCH R3 1 0
+ 0xB0080000, // 004D RAISE 2 R0 R0
+ 0x80040200, // 004E RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: msg_send
+********************************************************************/
+be_local_closure(Matter_Device_msg_send, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(udp_server),
+ /* K1 */ be_nested_str_weak(send_UDP),
+ }),
+ be_str_weak(msg_send),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: autoconf_sensors_list
+********************************************************************/
+be_local_closure(Matter_Device_autoconf_sensors_list, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[18]) { /* constants */
+ /* K0 */ be_nested_str_weak(k2l),
+ /* K1 */ be_nested_str_weak(contains),
+ /* K2 */ be_nested_str_weak(Temperature),
+ /* K3 */ be_nested_str_weak(_X23Temperature),
+ /* K4 */ be_nested_str_weak(push),
+ /* K5 */ be_nested_str_weak(type),
+ /* K6 */ be_nested_str_weak(temperature),
+ /* K7 */ be_nested_str_weak(filter),
+ /* K8 */ be_nested_str_weak(stop_iteration),
+ /* K9 */ be_nested_str_weak(Pressure),
+ /* K10 */ be_nested_str_weak(_X23Pressure),
+ /* K11 */ be_nested_str_weak(pressure),
+ /* K12 */ be_nested_str_weak(Illuminance),
+ /* K13 */ be_nested_str_weak(_X23Illuminance),
+ /* K14 */ be_nested_str_weak(illuminance),
+ /* K15 */ be_nested_str_weak(Humidity),
+ /* K16 */ be_nested_str_weak(_X23Humidity),
+ /* K17 */ be_nested_str_weak(humidity),
+ }),
+ be_str_weak(autoconf_sensors_list),
+ &be_const_str_solidified,
+ ( &(const binstruction[119]) { /* code */
+ 0x60080012, // 0000 GETGBL R2 G18
+ 0x7C080000, // 0001 CALL R2 0
+ 0x600C0010, // 0002 GETGBL R3 G16
+ 0x8C100100, // 0003 GETMET R4 R0 K0
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x7C100400, // 0005 CALL R4 2
+ 0x7C0C0200, // 0006 CALL R3 1
+ 0xA8020013, // 0007 EXBLK 0 #001C
+ 0x5C100600, // 0008 MOVE R4 R3
+ 0x7C100000, // 0009 CALL R4 0
+ 0x94140204, // 000A GETIDX R5 R1 R4
+ 0x6018000F, // 000B GETGBL R6 G15
+ 0x5C1C0A00, // 000C MOVE R7 R5
+ 0x60200013, // 000D GETGBL R8 G19
+ 0x7C180400, // 000E CALL R6 2
+ 0x781A000A, // 000F JMPF R6 #001B
+ 0x8C180B01, // 0010 GETMET R6 R5 K1
+ 0x58200002, // 0011 LDCONST R8 K2
+ 0x7C180400, // 0012 CALL R6 2
+ 0x781A0006, // 0013 JMPF R6 #001B
+ 0x00180903, // 0014 ADD R6 R4 K3
+ 0x8C1C0504, // 0015 GETMET R7 R2 K4
+ 0x60240013, // 0016 GETGBL R9 G19
+ 0x7C240000, // 0017 CALL R9 0
+ 0x98260B06, // 0018 SETIDX R9 K5 K6
+ 0x98260E06, // 0019 SETIDX R9 K7 R6
+ 0x7C1C0400, // 001A CALL R7 2
+ 0x7001FFEB, // 001B JMP #0008
+ 0x580C0008, // 001C LDCONST R3 K8
+ 0xAC0C0200, // 001D CATCH R3 1 0
+ 0xB0080000, // 001E RAISE 2 R0 R0
+ 0x600C0010, // 001F GETGBL R3 G16
+ 0x8C100100, // 0020 GETMET R4 R0 K0
+ 0x5C180200, // 0021 MOVE R6 R1
+ 0x7C100400, // 0022 CALL R4 2
+ 0x7C0C0200, // 0023 CALL R3 1
+ 0xA8020013, // 0024 EXBLK 0 #0039
+ 0x5C100600, // 0025 MOVE R4 R3
+ 0x7C100000, // 0026 CALL R4 0
+ 0x94140204, // 0027 GETIDX R5 R1 R4
+ 0x6018000F, // 0028 GETGBL R6 G15
+ 0x5C1C0A00, // 0029 MOVE R7 R5
+ 0x60200013, // 002A GETGBL R8 G19
+ 0x7C180400, // 002B CALL R6 2
+ 0x781A000A, // 002C JMPF R6 #0038
+ 0x8C180B01, // 002D GETMET R6 R5 K1
+ 0x58200009, // 002E LDCONST R8 K9
+ 0x7C180400, // 002F CALL R6 2
+ 0x781A0006, // 0030 JMPF R6 #0038
+ 0x0018090A, // 0031 ADD R6 R4 K10
+ 0x8C1C0504, // 0032 GETMET R7 R2 K4
+ 0x60240013, // 0033 GETGBL R9 G19
+ 0x7C240000, // 0034 CALL R9 0
+ 0x98260B0B, // 0035 SETIDX R9 K5 K11
+ 0x98260E06, // 0036 SETIDX R9 K7 R6
+ 0x7C1C0400, // 0037 CALL R7 2
+ 0x7001FFEB, // 0038 JMP #0025
+ 0x580C0008, // 0039 LDCONST R3 K8
+ 0xAC0C0200, // 003A CATCH R3 1 0
+ 0xB0080000, // 003B RAISE 2 R0 R0
+ 0x600C0010, // 003C GETGBL R3 G16
+ 0x8C100100, // 003D GETMET R4 R0 K0
+ 0x5C180200, // 003E MOVE R6 R1
+ 0x7C100400, // 003F CALL R4 2
+ 0x7C0C0200, // 0040 CALL R3 1
+ 0xA8020013, // 0041 EXBLK 0 #0056
+ 0x5C100600, // 0042 MOVE R4 R3
+ 0x7C100000, // 0043 CALL R4 0
+ 0x94140204, // 0044 GETIDX R5 R1 R4
+ 0x6018000F, // 0045 GETGBL R6 G15
+ 0x5C1C0A00, // 0046 MOVE R7 R5
+ 0x60200013, // 0047 GETGBL R8 G19
+ 0x7C180400, // 0048 CALL R6 2
+ 0x781A000A, // 0049 JMPF R6 #0055
+ 0x8C180B01, // 004A GETMET R6 R5 K1
+ 0x5820000C, // 004B LDCONST R8 K12
+ 0x7C180400, // 004C CALL R6 2
+ 0x781A0006, // 004D JMPF R6 #0055
+ 0x0018090D, // 004E ADD R6 R4 K13
+ 0x8C1C0504, // 004F GETMET R7 R2 K4
+ 0x60240013, // 0050 GETGBL R9 G19
+ 0x7C240000, // 0051 CALL R9 0
+ 0x98260B0E, // 0052 SETIDX R9 K5 K14
+ 0x98260E06, // 0053 SETIDX R9 K7 R6
+ 0x7C1C0400, // 0054 CALL R7 2
+ 0x7001FFEB, // 0055 JMP #0042
+ 0x580C0008, // 0056 LDCONST R3 K8
+ 0xAC0C0200, // 0057 CATCH R3 1 0
+ 0xB0080000, // 0058 RAISE 2 R0 R0
+ 0x600C0010, // 0059 GETGBL R3 G16
+ 0x8C100100, // 005A GETMET R4 R0 K0
+ 0x5C180200, // 005B MOVE R6 R1
+ 0x7C100400, // 005C CALL R4 2
+ 0x7C0C0200, // 005D CALL R3 1
+ 0xA8020013, // 005E EXBLK 0 #0073
+ 0x5C100600, // 005F MOVE R4 R3
+ 0x7C100000, // 0060 CALL R4 0
+ 0x94140204, // 0061 GETIDX R5 R1 R4
+ 0x6018000F, // 0062 GETGBL R6 G15
+ 0x5C1C0A00, // 0063 MOVE R7 R5
+ 0x60200013, // 0064 GETGBL R8 G19
+ 0x7C180400, // 0065 CALL R6 2
+ 0x781A000A, // 0066 JMPF R6 #0072
+ 0x8C180B01, // 0067 GETMET R6 R5 K1
+ 0x5820000F, // 0068 LDCONST R8 K15
+ 0x7C180400, // 0069 CALL R6 2
+ 0x781A0006, // 006A JMPF R6 #0072
+ 0x00180910, // 006B ADD R6 R4 K16
+ 0x8C1C0504, // 006C GETMET R7 R2 K4
+ 0x60240013, // 006D GETGBL R9 G19
+ 0x7C240000, // 006E CALL R9 0
+ 0x98260B11, // 006F SETIDX R9 K5 K17
+ 0x98260E06, // 0070 SETIDX R9 K7 R6
+ 0x7C1C0400, // 0071 CALL R7 2
+ 0x7001FFEB, // 0072 JMP #005F
+ 0x580C0008, // 0073 LDCONST R3 K8
+ 0xAC0C0200, // 0074 CATCH R3 1 0
+ 0xB0080000, // 0075 RAISE 2 R0 R0
+ 0x80040400, // 0076 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: find_plugin_by_endpoint
+********************************************************************/
+be_local_closure(Matter_Device_find_plugin_by_endpoint, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(plugins),
+ /* K2 */ be_nested_str_weak(get_endpoint),
+ /* K3 */ be_const_int(1),
+ }),
+ be_str_weak(find_plugin_by_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0x600C000C, // 0001 GETGBL R3 G12
+ 0x88100101, // 0002 GETMBR R4 R0 K1
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x140C0403, // 0004 LT R3 R2 R3
+ 0x780E0008, // 0005 JMPF R3 #000F
+ 0x880C0101, // 0006 GETMBR R3 R0 K1
+ 0x940C0602, // 0007 GETIDX R3 R3 R2
+ 0x8C100702, // 0008 GETMET R4 R3 K2
+ 0x7C100200, // 0009 CALL R4 1
+ 0x1C100801, // 000A EQ R4 R4 R1
+ 0x78120000, // 000B JMPF R4 #000D
+ 0x80040600, // 000C RET 1 R3
+ 0x00080503, // 000D ADD R2 R2 K3
+ 0x7001FFF1, // 000E JMP #0001
+ 0x4C0C0000, // 000F LDNIL R3
+ 0x80040600, // 0010 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_root_basic_commissioning
+********************************************************************/
+be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[18]) { /* constants */
+ /* K0 */ be_nested_str_weak(PASE_TIMEOUT),
+ /* K1 */ be_nested_str_weak(compute_manual_pairing_code),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(log),
+ /* K4 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s),
+ /* K5 */ be_const_int(2),
+ /* K6 */ be_nested_str_weak(compute_qrcode_content),
+ /* K7 */ be_nested_str_weak(publish_result),
+ /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D),
+ /* K9 */ be_nested_str_weak(Matter),
+ /* K10 */ be_nested_str_weak(_compute_pbkdf),
+ /* K11 */ be_nested_str_weak(root_passcode),
+ /* K12 */ be_nested_str_weak(root_iterations),
+ /* K13 */ be_nested_str_weak(root_salt),
+ /* K14 */ be_nested_str_weak(start_basic_commissioning),
+ /* K15 */ be_nested_str_weak(root_discriminator),
+ /* K16 */ be_nested_str_weak(root_w0),
+ /* K17 */ be_nested_str_weak(root_L),
+ }),
+ be_str_weak(start_root_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x88040100, // 0003 GETMBR R1 R0 K0
+ 0x8C080101, // 0004 GETMET R2 R0 K1
+ 0x7C080200, // 0005 CALL R2 1
+ 0xB80E0400, // 0006 GETNGBL R3 K2
+ 0x8C0C0703, // 0007 GETMET R3 R3 K3
+ 0x60140018, // 0008 GETGBL R5 G24
+ 0x58180004, // 0009 LDCONST R6 K4
+ 0x5C1C0400, // 000A MOVE R7 R2
+ 0x7C140400, // 000B CALL R5 2
+ 0x58180005, // 000C LDCONST R6 K5
+ 0x7C0C0600, // 000D CALL R3 3
+ 0x8C0C0106, // 000E GETMET R3 R0 K6
+ 0x7C0C0200, // 000F CALL R3 1
+ 0xB8120400, // 0010 GETNGBL R4 K2
+ 0x8C100907, // 0011 GETMET R4 R4 K7
+ 0x60180018, // 0012 GETGBL R6 G24
+ 0x581C0008, // 0013 LDCONST R7 K8
+ 0x5C200400, // 0014 MOVE R8 R2
+ 0x5C240600, // 0015 MOVE R9 R3
+ 0x7C180600, // 0016 CALL R6 3
+ 0x581C0009, // 0017 LDCONST R7 K9
+ 0x7C100600, // 0018 CALL R4 3
+ 0x8C10010A, // 0019 GETMET R4 R0 K10
+ 0x8818010B, // 001A GETMBR R6 R0 K11
+ 0x881C010C, // 001B GETMBR R7 R0 K12
+ 0x8820010D, // 001C GETMBR R8 R0 K13
+ 0x7C100800, // 001D CALL R4 4
+ 0x8C10010E, // 001E GETMET R4 R0 K14
+ 0x5C180200, // 001F MOVE R6 R1
+ 0x881C010C, // 0020 GETMBR R7 R0 K12
+ 0x8820010F, // 0021 GETMBR R8 R0 K15
+ 0x8824010D, // 0022 GETMBR R9 R0 K13
+ 0x88280110, // 0023 GETMBR R10 R0 K16
+ 0x882C0111, // 0024 GETMBR R11 R0 K17
+ 0x4C300000, // 0025 LDNIL R12
+ 0x7C101000, // 0026 CALL R4 8
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_attribute_read_solo
+********************************************************************/
+be_local_closure(Matter_Device_process_attribute_read_solo, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(endpoint),
+ /* K1 */ be_nested_str_weak(cluster),
+ /* K2 */ be_nested_str_weak(attribute),
+ /* K3 */ be_nested_str_weak(find_plugin_by_endpoint),
+ /* K4 */ be_nested_str_weak(status),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
+ /* K7 */ be_nested_str_weak(contains_cluster),
+ /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
+ /* K9 */ be_nested_str_weak(contains_attribute),
+ /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ }),
+ be_str_weak(process_attribute_read_solo),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x88080300, // 0000 GETMBR R2 R1 K0
+ 0x880C0301, // 0001 GETMBR R3 R1 K1
+ 0x88100302, // 0002 GETMBR R4 R1 K2
+ 0x4C140000, // 0003 LDNIL R5
+ 0x1C140405, // 0004 EQ R5 R2 R5
+ 0x74160005, // 0005 JMPT R5 #000C
+ 0x4C140000, // 0006 LDNIL R5
+ 0x1C140605, // 0007 EQ R5 R3 R5
+ 0x74160002, // 0008 JMPT R5 #000C
+ 0x4C140000, // 0009 LDNIL R5
+ 0x1C140805, // 000A EQ R5 R4 R5
+ 0x78160001, // 000B JMPF R5 #000E
+ 0x4C140000, // 000C LDNIL R5
+ 0x80040A00, // 000D RET 1 R5
+ 0x8C140103, // 000E GETMET R5 R0 K3
+ 0x5C1C0400, // 000F MOVE R7 R2
+ 0x7C140400, // 0010 CALL R5 2
+ 0x4C180000, // 0011 LDNIL R6
+ 0x1C180A06, // 0012 EQ R6 R5 R6
+ 0x781A0004, // 0013 JMPF R6 #0019
+ 0xB81A0A00, // 0014 GETNGBL R6 K5
+ 0x88180D06, // 0015 GETMBR R6 R6 K6
+ 0x90060806, // 0016 SETMBR R1 K4 R6
+ 0x4C180000, // 0017 LDNIL R6
+ 0x80040C00, // 0018 RET 1 R6
+ 0x8C180B07, // 0019 GETMET R6 R5 K7
+ 0x5C200600, // 001A MOVE R8 R3
+ 0x7C180400, // 001B CALL R6 2
+ 0x741A0004, // 001C JMPT R6 #0022
+ 0xB81A0A00, // 001D GETNGBL R6 K5
+ 0x88180D08, // 001E GETMBR R6 R6 K8
+ 0x90060806, // 001F SETMBR R1 K4 R6
+ 0x4C180000, // 0020 LDNIL R6
+ 0x80040C00, // 0021 RET 1 R6
+ 0x8C180B09, // 0022 GETMET R6 R5 K9
+ 0x5C200600, // 0023 MOVE R8 R3
+ 0x5C240800, // 0024 MOVE R9 R4
+ 0x7C180600, // 0025 CALL R6 3
+ 0x741A0004, // 0026 JMPT R6 #002C
+ 0xB81A0A00, // 0027 GETNGBL R6 K5
+ 0x88180D0A, // 0028 GETMBR R6 R6 K10
+ 0x90060806, // 0029 SETMBR R1 K4 R6
+ 0x4C180000, // 002A LDNIL R6
+ 0x80040C00, // 002B RET 1 R6
+ 0x80040A00, // 002C RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_operational_discovery
+********************************************************************/
+be_local_closure(Matter_Device_start_operational_discovery, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(mdns),
+ /* K2 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K3 */ be_nested_str_weak(root_w0),
+ /* K4 */ be_nested_str_weak(root_L),
+ /* K5 */ be_nested_str_weak(mdns_announce_op_discovery),
+ }),
+ be_str_weak(start_operational_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40E0200, // 0001 IMPORT R3 K1
+ 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x7C100200, // 0003 CALL R4 1
+ 0x4C100000, // 0004 LDNIL R4
+ 0x90020604, // 0005 SETMBR R0 K3 R4
+ 0x4C100000, // 0006 LDNIL R4
+ 0x90020804, // 0007 SETMBR R0 K4 R4
+ 0x8C100105, // 0008 GETMET R4 R0 K5
+ 0x5C180200, // 0009 MOVE R6 R1
+ 0x7C100400, // 000A CALL R4 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: load_param
+********************************************************************/
+be_local_closure(Matter_Device_load_param, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[36]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(FILENAME),
+ /* K2 */ be_nested_str_weak(read),
+ /* K3 */ be_nested_str_weak(close),
+ /* K4 */ be_nested_str_weak(json),
+ /* K5 */ be_nested_str_weak(load),
+ /* K6 */ be_nested_str_weak(root_discriminator),
+ /* K7 */ be_nested_str_weak(find),
+ /* K8 */ be_nested_str_weak(distinguish),
+ /* K9 */ be_nested_str_weak(root_passcode),
+ /* K10 */ be_nested_str_weak(passcode),
+ /* K11 */ be_nested_str_weak(ipv4only),
+ /* K12 */ be_nested_str_weak(disable_bridge_mode),
+ /* K13 */ be_nested_str_weak(next_ep),
+ /* K14 */ be_nested_str_weak(nextep),
+ /* K15 */ be_nested_str_weak(plugins_config),
+ /* K16 */ be_nested_str_weak(config),
+ /* K17 */ be_nested_str_weak(tasmota),
+ /* K18 */ be_nested_str_weak(log),
+ /* K19 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s),
+ /* K20 */ be_const_int(3),
+ /* K21 */ be_nested_str_weak(adjust_next_ep),
+ /* K22 */ be_nested_str_weak(check_config_ep),
+ /* K23 */ be_nested_str_weak(plugins_persist),
+ /* K24 */ be_nested_str_weak(plugins_config_remotes),
+ /* K25 */ be_nested_str_weak(remotes),
+ /* K26 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20),
+ /* K27 */ be_nested_str_weak(io_error),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A),
+ /* K29 */ be_nested_str_weak(_X7C),
+ /* K30 */ be_const_int(2),
+ /* K31 */ be_nested_str_weak(random),
+ /* K32 */ be_nested_str_weak(get),
+ /* K33 */ be_const_int(0),
+ /* K34 */ be_nested_str_weak(generate_random_passcode),
+ /* K35 */ be_nested_str_weak(save_param),
+ }),
+ be_str_weak(load_param),
+ &be_const_str_solidified,
+ ( &(const binstruction[130]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x50080000, // 0001 LDBOOL R2 0 0
+ 0xA8020050, // 0002 EXBLK 0 #0054
+ 0x600C0011, // 0003 GETGBL R3 G17
+ 0x88100101, // 0004 GETMBR R4 R0 K1
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C100702, // 0006 GETMET R4 R3 K2
+ 0x7C100200, // 0007 CALL R4 1
+ 0x8C140703, // 0008 GETMET R5 R3 K3
+ 0x7C140200, // 0009 CALL R5 1
+ 0xA4160800, // 000A IMPORT R5 K4
+ 0x8C180B05, // 000B GETMET R6 R5 K5
+ 0x5C200800, // 000C MOVE R8 R4
+ 0x7C180400, // 000D CALL R6 2
+ 0x8C1C0D07, // 000E GETMET R7 R6 K7
+ 0x58240008, // 000F LDCONST R9 K8
+ 0x88280106, // 0010 GETMBR R10 R0 K6
+ 0x7C1C0600, // 0011 CALL R7 3
+ 0x90020C07, // 0012 SETMBR R0 K6 R7
+ 0x8C1C0D07, // 0013 GETMET R7 R6 K7
+ 0x5824000A, // 0014 LDCONST R9 K10
+ 0x88280109, // 0015 GETMBR R10 R0 K9
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x90021207, // 0017 SETMBR R0 K9 R7
+ 0x601C0017, // 0018 GETGBL R7 G23
+ 0x8C200D07, // 0019 GETMET R8 R6 K7
+ 0x5828000B, // 001A LDCONST R10 K11
+ 0x502C0000, // 001B LDBOOL R11 0 0
+ 0x7C200600, // 001C CALL R8 3
+ 0x7C1C0200, // 001D CALL R7 1
+ 0x90021607, // 001E SETMBR R0 K11 R7
+ 0x601C0017, // 001F GETGBL R7 G23
+ 0x8C200D07, // 0020 GETMET R8 R6 K7
+ 0x5828000C, // 0021 LDCONST R10 K12
+ 0x502C0000, // 0022 LDBOOL R11 0 0
+ 0x7C200600, // 0023 CALL R8 3
+ 0x7C1C0200, // 0024 CALL R7 1
+ 0x90021807, // 0025 SETMBR R0 K12 R7
+ 0x8C1C0D07, // 0026 GETMET R7 R6 K7
+ 0x5824000E, // 0027 LDCONST R9 K14
+ 0x8828010D, // 0028 GETMBR R10 R0 K13
+ 0x7C1C0600, // 0029 CALL R7 3
+ 0x90021A07, // 002A SETMBR R0 K13 R7
+ 0x8C1C0D07, // 002B GETMET R7 R6 K7
+ 0x58240010, // 002C LDCONST R9 K16
+ 0x7C1C0400, // 002D CALL R7 2
+ 0x90021E07, // 002E SETMBR R0 K15 R7
+ 0x881C010F, // 002F GETMBR R7 R0 K15
+ 0x4C200000, // 0030 LDNIL R8
+ 0x201C0E08, // 0031 NE R7 R7 R8
+ 0x781E000E, // 0032 JMPF R7 #0042
+ 0xB81E2200, // 0033 GETNGBL R7 K17
+ 0x8C1C0F12, // 0034 GETMET R7 R7 K18
+ 0x60240018, // 0035 GETGBL R9 G24
+ 0x58280013, // 0036 LDCONST R10 K19
+ 0x882C010F, // 0037 GETMBR R11 R0 K15
+ 0x7C240400, // 0038 CALL R9 2
+ 0x58280014, // 0039 LDCONST R10 K20
+ 0x7C1C0600, // 003A CALL R7 3
+ 0x8C1C0115, // 003B GETMET R7 R0 K21
+ 0x7C1C0200, // 003C CALL R7 1
+ 0x8C1C0116, // 003D GETMET R7 R0 K22
+ 0x7C1C0200, // 003E CALL R7 1
+ 0x5C080E00, // 003F MOVE R2 R7
+ 0x501C0200, // 0040 LDBOOL R7 1 0
+ 0x90022E07, // 0041 SETMBR R0 K23 R7
+ 0x8C1C0D07, // 0042 GETMET R7 R6 K7
+ 0x58240019, // 0043 LDCONST R9 K25
+ 0x60280013, // 0044 GETGBL R10 G19
+ 0x7C280000, // 0045 CALL R10 0
+ 0x7C1C0600, // 0046 CALL R7 3
+ 0x90023007, // 0047 SETMBR R0 K24 R7
+ 0x881C0118, // 0048 GETMBR R7 R0 K24
+ 0x781E0007, // 0049 JMPF R7 #0052
+ 0xB81E2200, // 004A GETNGBL R7 K17
+ 0x8C1C0F12, // 004B GETMET R7 R7 K18
+ 0x60240008, // 004C GETGBL R9 G8
+ 0x88280118, // 004D GETMBR R10 R0 K24
+ 0x7C240200, // 004E CALL R9 1
+ 0x00263409, // 004F ADD R9 K26 R9
+ 0x58280014, // 0050 LDCONST R10 K20
+ 0x7C1C0600, // 0051 CALL R7 3
+ 0xA8040001, // 0052 EXBLK 1 1
+ 0x70020012, // 0053 JMP #0067
+ 0xAC0C0002, // 0054 CATCH R3 0 2
+ 0x7002000F, // 0055 JMP #0066
+ 0x2014071B, // 0056 NE R5 R3 K27
+ 0x7816000C, // 0057 JMPF R5 #0065
+ 0xB8162200, // 0058 GETNGBL R5 K17
+ 0x8C140B12, // 0059 GETMET R5 R5 K18
+ 0x601C0008, // 005A GETGBL R7 G8
+ 0x5C200600, // 005B MOVE R8 R3
+ 0x7C1C0200, // 005C CALL R7 1
+ 0x001E3807, // 005D ADD R7 K28 R7
+ 0x001C0F1D, // 005E ADD R7 R7 K29
+ 0x60200008, // 005F GETGBL R8 G8
+ 0x5C240800, // 0060 MOVE R9 R4
+ 0x7C200200, // 0061 CALL R8 1
+ 0x001C0E08, // 0062 ADD R7 R7 R8
+ 0x5820001E, // 0063 LDCONST R8 K30
+ 0x7C140600, // 0064 CALL R5 3
+ 0x70020000, // 0065 JMP #0067
+ 0xB0080000, // 0066 RAISE 2 R0 R0
+ 0x880C0106, // 0067 GETMBR R3 R0 K6
+ 0x4C100000, // 0068 LDNIL R4
+ 0x1C0C0604, // 0069 EQ R3 R3 R4
+ 0x780E000A, // 006A JMPF R3 #0076
+ 0x8C0C031F, // 006B GETMET R3 R1 K31
+ 0x5814001E, // 006C LDCONST R5 K30
+ 0x7C0C0400, // 006D CALL R3 2
+ 0x8C0C0720, // 006E GETMET R3 R3 K32
+ 0x58140021, // 006F LDCONST R5 K33
+ 0x5818001E, // 0070 LDCONST R6 K30
+ 0x7C0C0600, // 0071 CALL R3 3
+ 0x54120FFE, // 0072 LDINT R4 4095
+ 0x2C0C0604, // 0073 AND R3 R3 R4
+ 0x90020C03, // 0074 SETMBR R0 K6 R3
+ 0x50080200, // 0075 LDBOOL R2 1 0
+ 0x880C0109, // 0076 GETMBR R3 R0 K9
+ 0x4C100000, // 0077 LDNIL R4
+ 0x1C0C0604, // 0078 EQ R3 R3 R4
+ 0x780E0003, // 0079 JMPF R3 #007E
+ 0x8C0C0122, // 007A GETMET R3 R0 K34
+ 0x7C0C0200, // 007B CALL R3 1
+ 0x90021203, // 007C SETMBR R0 K9 R3
+ 0x50080200, // 007D LDBOOL R2 1 0
+ 0x780A0001, // 007E JMPF R2 #0081
+ 0x8C0C0123, // 007F GETMET R3 R0 K35
+ 0x7C0C0200, // 0080 CALL R3 1
+ 0x80000000, // 0081 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: MtrUpdate
+********************************************************************/
+be_local_closure(Matter_Device_MtrUpdate, /* name */
+ be_nested_proto(
+ 18, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[25]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(resp_cmnd_str),
+ /* K2 */ be_nested_str_weak(Invalid_X20JSON),
+ /* K3 */ be_nested_str_weak(find_key_i),
+ /* K4 */ be_nested_str_weak(Ep),
+ /* K5 */ be_nested_str_weak(Name),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute),
+ /* K8 */ be_nested_str_weak(find_plugin_by_endpoint),
+ /* K9 */ be_nested_str_weak(remove),
+ /* K10 */ be_nested_str_weak(find_plugin_by_friendly_name),
+ /* K11 */ be_nested_str_weak(Invalid_X20Device),
+ /* K12 */ be_nested_str_weak(VIRTUAL),
+ /* K13 */ be_nested_str_weak(Device_X20is_X20not_X20virtual),
+ /* K14 */ be_nested_str_weak(consolidate_update_commands),
+ /* K15 */ be_nested_str_weak(keys),
+ /* K16 */ be_nested_str_weak(find_list_i),
+ /* K17 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27),
+ /* K18 */ be_nested_str_weak(stop_iteration),
+ /* K19 */ be_nested_str_weak(update_virtual),
+ /* K20 */ be_nested_str_weak(state_json),
+ /* K21 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D),
+ /* K22 */ be_nested_str_weak(resp_cmnd),
+ /* K23 */ be_nested_str_weak(resp_cmnd_done),
+ /* K24 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute),
+ }),
+ be_str_weak(MtrUpdate),
+ &be_const_str_solidified,
+ ( &(const binstruction[126]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x1C140805, // 0001 EQ R5 R4 R5
+ 0x78160004, // 0002 JMPF R5 #0008
+ 0xB8160000, // 0003 GETNGBL R5 K0
+ 0x8C140B01, // 0004 GETMET R5 R5 K1
+ 0x581C0002, // 0005 LDCONST R7 K2
+ 0x7C140400, // 0006 CALL R5 2
+ 0x80040A00, // 0007 RET 1 R5
+ 0xB8160000, // 0008 GETNGBL R5 K0
+ 0x8C140B03, // 0009 GETMET R5 R5 K3
+ 0x5C1C0800, // 000A MOVE R7 R4
+ 0x58200004, // 000B LDCONST R8 K4
+ 0x7C140600, // 000C CALL R5 3
+ 0xB81A0000, // 000D GETNGBL R6 K0
+ 0x8C180D03, // 000E GETMET R6 R6 K3
+ 0x5C200800, // 000F MOVE R8 R4
+ 0x58240005, // 0010 LDCONST R9 K5
+ 0x7C180600, // 0011 CALL R6 3
+ 0x74160000, // 0012 JMPT R5 #0014
+ 0x781A0064, // 0013 JMPF R6 #0079
+ 0x4C1C0000, // 0014 LDNIL R7
+ 0x78160010, // 0015 JMPF R5 #0027
+ 0x60200009, // 0016 GETGBL R8 G9
+ 0x94240805, // 0017 GETIDX R9 R4 R5
+ 0x7C200200, // 0018 CALL R8 1
+ 0x18241106, // 0019 LE R9 R8 K6
+ 0x78260004, // 001A JMPF R9 #0020
+ 0xB8260000, // 001B GETNGBL R9 K0
+ 0x8C241301, // 001C GETMET R9 R9 K1
+ 0x582C0007, // 001D LDCONST R11 K7
+ 0x7C240400, // 001E CALL R9 2
+ 0x80041200, // 001F RET 1 R9
+ 0x8C240108, // 0020 GETMET R9 R0 K8
+ 0x5C2C1000, // 0021 MOVE R11 R8
+ 0x7C240400, // 0022 CALL R9 2
+ 0x5C1C1200, // 0023 MOVE R7 R9
+ 0x8C240909, // 0024 GETMET R9 R4 K9
+ 0x5C2C0A00, // 0025 MOVE R11 R5
+ 0x7C240400, // 0026 CALL R9 2
+ 0x781A0009, // 0027 JMPF R6 #0032
+ 0x4C200000, // 0028 LDNIL R8
+ 0x1C200E08, // 0029 EQ R8 R7 R8
+ 0x78220003, // 002A JMPF R8 #002F
+ 0x8C20010A, // 002B GETMET R8 R0 K10
+ 0x94280806, // 002C GETIDX R10 R4 R6
+ 0x7C200400, // 002D CALL R8 2
+ 0x5C1C1000, // 002E MOVE R7 R8
+ 0x8C200909, // 002F GETMET R8 R4 K9
+ 0x5C280C00, // 0030 MOVE R10 R6
+ 0x7C200400, // 0031 CALL R8 2
+ 0x4C200000, // 0032 LDNIL R8
+ 0x1C200E08, // 0033 EQ R8 R7 R8
+ 0x78220004, // 0034 JMPF R8 #003A
+ 0xB8220000, // 0035 GETNGBL R8 K0
+ 0x8C201101, // 0036 GETMET R8 R8 K1
+ 0x5828000B, // 0037 LDCONST R10 K11
+ 0x7C200400, // 0038 CALL R8 2
+ 0x80041000, // 0039 RET 1 R8
+ 0x88200F0C, // 003A GETMBR R8 R7 K12
+ 0x74220004, // 003B JMPT R8 #0041
+ 0xB8220000, // 003C GETNGBL R8 K0
+ 0x8C201101, // 003D GETMET R8 R8 K1
+ 0x5828000D, // 003E LDCONST R10 K13
+ 0x7C200400, // 003F CALL R8 2
+ 0x80041000, // 0040 RET 1 R8
+ 0x8C200F0E, // 0041 GETMET R8 R7 K14
+ 0x7C200200, // 0042 CALL R8 1
+ 0x60240013, // 0043 GETGBL R9 G19
+ 0x7C240000, // 0044 CALL R9 0
+ 0x60280010, // 0045 GETGBL R10 G16
+ 0x8C2C090F, // 0046 GETMET R11 R4 K15
+ 0x7C2C0200, // 0047 CALL R11 1
+ 0x7C280200, // 0048 CALL R10 1
+ 0xA8020016, // 0049 EXBLK 0 #0061
+ 0x5C2C1400, // 004A MOVE R11 R10
+ 0x7C2C0000, // 004B CALL R11 0
+ 0xB8320000, // 004C GETNGBL R12 K0
+ 0x8C301910, // 004D GETMET R12 R12 K16
+ 0x5C381000, // 004E MOVE R14 R8
+ 0x5C3C1600, // 004F MOVE R15 R11
+ 0x7C300600, // 0050 CALL R12 3
+ 0x4C340000, // 0051 LDNIL R13
+ 0x1C34180D, // 0052 EQ R13 R12 R13
+ 0x78360008, // 0053 JMPF R13 #005D
+ 0xB8360000, // 0054 GETNGBL R13 K0
+ 0x8C341B01, // 0055 GETMET R13 R13 K1
+ 0x603C0018, // 0056 GETGBL R15 G24
+ 0x58400011, // 0057 LDCONST R16 K17
+ 0x5C441600, // 0058 MOVE R17 R11
+ 0x7C3C0400, // 0059 CALL R15 2
+ 0x7C340400, // 005A CALL R13 2
+ 0xA8040001, // 005B EXBLK 1 1
+ 0x80001A00, // 005C RET 0
+ 0x9434100C, // 005D GETIDX R13 R8 R12
+ 0x9438080B, // 005E GETIDX R14 R4 R11
+ 0x98241A0E, // 005F SETIDX R9 R13 R14
+ 0x7001FFE8, // 0060 JMP #004A
+ 0x58280012, // 0061 LDCONST R10 K18
+ 0xAC280200, // 0062 CATCH R10 1 0
+ 0xB0080000, // 0063 RAISE 2 R0 R0
+ 0x8C280F13, // 0064 GETMET R10 R7 K19
+ 0x5C301200, // 0065 MOVE R12 R9
+ 0x7C280400, // 0066 CALL R10 2
+ 0x8C280F14, // 0067 GETMET R10 R7 K20
+ 0x7C280200, // 0068 CALL R10 1
+ 0x782A000A, // 0069 JMPF R10 #0075
+ 0x602C0018, // 006A GETGBL R11 G24
+ 0x58300015, // 006B LDCONST R12 K21
+ 0x5C340200, // 006C MOVE R13 R1
+ 0x5C381400, // 006D MOVE R14 R10
+ 0x7C2C0600, // 006E CALL R11 3
+ 0xB8320000, // 006F GETNGBL R12 K0
+ 0x8C301916, // 0070 GETMET R12 R12 K22
+ 0x5C381600, // 0071 MOVE R14 R11
+ 0x7C300400, // 0072 CALL R12 2
+ 0x80041800, // 0073 RET 1 R12
+ 0x70020003, // 0074 JMP #0079
+ 0xB82E0000, // 0075 GETNGBL R11 K0
+ 0x8C2C1717, // 0076 GETMET R11 R11 K23
+ 0x7C2C0200, // 0077 CALL R11 1
+ 0x80041600, // 0078 RET 1 R11
+ 0xB81E0000, // 0079 GETNGBL R7 K0
+ 0x8C1C0F01, // 007A GETMET R7 R7 K1
+ 0x58240018, // 007B LDCONST R9 K24
+ 0x7C1C0400, // 007C CALL R7 2
+ 0x80000000, // 007D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_basic_commissioning
+********************************************************************/
+be_local_closure(Matter_Device_start_basic_commissioning, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 8, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 2]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0000, // 0006 LDCONST R3 K0
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Eth_X23Connected),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0000, // 0006 LDCONST R3 K0
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[16]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(millis),
+ /* K3 */ be_nested_str_weak(commissioning_iterations),
+ /* K4 */ be_nested_str_weak(commissioning_discriminator),
+ /* K5 */ be_nested_str_weak(commissioning_salt),
+ /* K6 */ be_nested_str_weak(commissioning_w0),
+ /* K7 */ be_nested_str_weak(commissioning_L),
+ /* K8 */ be_nested_str_weak(commissioning_admin_fabric),
+ /* K9 */ be_nested_str_weak(wifi),
+ /* K10 */ be_nested_str_weak(up),
+ /* K11 */ be_nested_str_weak(eth),
+ /* K12 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K13 */ be_nested_str_weak(add_rule),
+ /* K14 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K15 */ be_nested_str_weak(Eth_X23Connected),
+ }),
+ be_str_weak(start_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0xB8220200, // 0000 GETNGBL R8 K1
+ 0x8C201102, // 0001 GETMET R8 R8 K2
+ 0x7C200200, // 0002 CALL R8 1
+ 0x542603E7, // 0003 LDINT R9 1000
+ 0x08240209, // 0004 MUL R9 R1 R9
+ 0x00201009, // 0005 ADD R8 R8 R9
+ 0x90020008, // 0006 SETMBR R0 K0 R8
+ 0x90020602, // 0007 SETMBR R0 K3 R2
+ 0x90020803, // 0008 SETMBR R0 K4 R3
+ 0x90020A04, // 0009 SETMBR R0 K5 R4
+ 0x90020C05, // 000A SETMBR R0 K6 R5
+ 0x90020E06, // 000B SETMBR R0 K7 R6
+ 0x90021007, // 000C SETMBR R0 K8 R7
+ 0xB8220200, // 000D GETNGBL R8 K1
+ 0x8C201109, // 000E GETMET R8 R8 K9
+ 0x7C200200, // 000F CALL R8 1
+ 0x9420110A, // 0010 GETIDX R8 R8 K10
+ 0x74220004, // 0011 JMPT R8 #0017
+ 0xB8220200, // 0012 GETNGBL R8 K1
+ 0x8C20110B, // 0013 GETMET R8 R8 K11
+ 0x7C200200, // 0014 CALL R8 1
+ 0x9420110A, // 0015 GETIDX R8 R8 K10
+ 0x78220002, // 0016 JMPF R8 #001A
+ 0x8C20010C, // 0017 GETMET R8 R0 K12
+ 0x7C200200, // 0018 CALL R8 1
+ 0x7002000B, // 0019 JMP #0026
+ 0xB8220200, // 001A GETNGBL R8 K1
+ 0x8C20110D, // 001B GETMET R8 R8 K13
+ 0x5828000E, // 001C LDCONST R10 K14
+ 0x842C0000, // 001D CLOSURE R11 P0
+ 0x5830000C, // 001E LDCONST R12 K12
+ 0x7C200800, // 001F CALL R8 4
+ 0xB8220200, // 0020 GETNGBL R8 K1
+ 0x8C20110D, // 0021 GETMET R8 R8 K13
+ 0x5828000F, // 0022 LDCONST R10 K15
+ 0x842C0001, // 0023 CLOSURE R11 P1
+ 0x5830000C, // 0024 LDCONST R12 K12
+ 0x7C200800, // 0025 CALL R8 4
+ 0xA0000000, // 0026 CLOSE R0
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: received_ack
+********************************************************************/
+be_local_closure(Matter_Device_received_ack, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(udp_server),
+ /* K1 */ be_nested_str_weak(received_ack),
+ }),
+ be_str_weak(received_ack),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_remove_op_discovery
+********************************************************************/
+be_local_closure(Matter_Device_mdns_remove_op_discovery, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[23]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(get_device_id),
+ /* K2 */ be_nested_str_weak(copy),
+ /* K3 */ be_nested_str_weak(reverse),
+ /* K4 */ be_nested_str_weak(get_fabric_compressed),
+ /* K5 */ be_nested_str_weak(tohex),
+ /* K6 */ be_nested_str_weak(_X2D),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(eth),
+ /* K9 */ be_nested_str_weak(find),
+ /* K10 */ be_nested_str_weak(up),
+ /* K11 */ be_nested_str_weak(log),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_nested_str_weak(remove_service),
+ /* K15 */ be_nested_str_weak(_matter),
+ /* K16 */ be_nested_str_weak(_tcp),
+ /* K17 */ be_nested_str_weak(hostname_eth),
+ /* K18 */ be_nested_str_weak(wifi),
+ /* K19 */ be_nested_str_weak(hostname_wifi),
+ /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K21 */ be_nested_str_weak(_X7C),
+ /* K22 */ be_const_int(2),
+ }),
+ be_str_weak(mdns_remove_op_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[80]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA802003B, // 0001 EXBLK 0 #003E
+ 0x8C0C0301, // 0002 GETMET R3 R1 K1
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0702, // 0004 GETMET R3 R3 K2
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C0C0703, // 0006 GETMET R3 R3 K3
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C100304, // 0008 GETMET R4 R1 K4
+ 0x7C100200, // 0009 CALL R4 1
+ 0x8C140905, // 000A GETMET R5 R4 K5
+ 0x7C140200, // 000B CALL R5 1
+ 0x00140B06, // 000C ADD R5 R5 K6
+ 0x8C180705, // 000D GETMET R6 R3 K5
+ 0x7C180200, // 000E CALL R6 1
+ 0x00140A06, // 000F ADD R5 R5 R6
+ 0xB81A0E00, // 0010 GETNGBL R6 K7
+ 0x8C180D08, // 0011 GETMET R6 R6 K8
+ 0x7C180200, // 0012 CALL R6 1
+ 0x8C180D09, // 0013 GETMET R6 R6 K9
+ 0x5820000A, // 0014 LDCONST R8 K10
+ 0x7C180400, // 0015 CALL R6 2
+ 0x781A000E, // 0016 JMPF R6 #0026
+ 0xB81A0E00, // 0017 GETNGBL R6 K7
+ 0x8C180D0B, // 0018 GETMET R6 R6 K11
+ 0x60200018, // 0019 GETGBL R8 G24
+ 0x5824000C, // 001A LDCONST R9 K12
+ 0x58280008, // 001B LDCONST R10 K8
+ 0x5C2C0A00, // 001C MOVE R11 R5
+ 0x7C200600, // 001D CALL R8 3
+ 0x5824000D, // 001E LDCONST R9 K13
+ 0x7C180600, // 001F CALL R6 3
+ 0x8C18050E, // 0020 GETMET R6 R2 K14
+ 0x5820000F, // 0021 LDCONST R8 K15
+ 0x58240010, // 0022 LDCONST R9 K16
+ 0x5C280A00, // 0023 MOVE R10 R5
+ 0x882C0111, // 0024 GETMBR R11 R0 K17
+ 0x7C180A00, // 0025 CALL R6 5
+ 0xB81A0E00, // 0026 GETNGBL R6 K7
+ 0x8C180D12, // 0027 GETMET R6 R6 K18
+ 0x7C180200, // 0028 CALL R6 1
+ 0x8C180D09, // 0029 GETMET R6 R6 K9
+ 0x5820000A, // 002A LDCONST R8 K10
+ 0x7C180400, // 002B CALL R6 2
+ 0x781A000E, // 002C JMPF R6 #003C
+ 0xB81A0E00, // 002D GETNGBL R6 K7
+ 0x8C180D0B, // 002E GETMET R6 R6 K11
+ 0x60200018, // 002F GETGBL R8 G24
+ 0x5824000C, // 0030 LDCONST R9 K12
+ 0x58280012, // 0031 LDCONST R10 K18
+ 0x5C2C0A00, // 0032 MOVE R11 R5
+ 0x7C200600, // 0033 CALL R8 3
+ 0x5824000D, // 0034 LDCONST R9 K13
+ 0x7C180600, // 0035 CALL R6 3
+ 0x8C18050E, // 0036 GETMET R6 R2 K14
+ 0x5820000F, // 0037 LDCONST R8 K15
+ 0x58240010, // 0038 LDCONST R9 K16
+ 0x5C280A00, // 0039 MOVE R10 R5
+ 0x882C0113, // 003A GETMBR R11 R0 K19
+ 0x7C180A00, // 003B CALL R6 5
+ 0xA8040001, // 003C EXBLK 1 1
+ 0x70020010, // 003D JMP #004F
+ 0xAC0C0002, // 003E CATCH R3 0 2
+ 0x7002000D, // 003F JMP #004E
+ 0xB8160E00, // 0040 GETNGBL R5 K7
+ 0x8C140B0B, // 0041 GETMET R5 R5 K11
+ 0x601C0008, // 0042 GETGBL R7 G8
+ 0x5C200600, // 0043 MOVE R8 R3
+ 0x7C1C0200, // 0044 CALL R7 1
+ 0x001E2807, // 0045 ADD R7 K20 R7
+ 0x001C0F15, // 0046 ADD R7 R7 K21
+ 0x60200008, // 0047 GETGBL R8 G8
+ 0x5C240800, // 0048 MOVE R9 R4
+ 0x7C200200, // 0049 CALL R8 1
+ 0x001C0E08, // 004A ADD R7 R7 R8
+ 0x58200016, // 004B LDCONST R8 K22
+ 0x7C140600, // 004C CALL R5 3
+ 0x70020000, // 004D JMP #004F
+ 0xB0080000, // 004E RAISE 2 R0 R0
+ 0x80000000, // 004F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_sensors_scheduler
+********************************************************************/
+be_local_closure(Matter_Device_read_sensors_scheduler, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 7]) { /* constants */
+ /* K0 */ be_nested_str_weak(probe_sensor_time),
+ /* K1 */ be_nested_str_weak(probe_sensor_timestamp),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(time_reached),
+ /* K5 */ be_nested_str_weak(_trigger_read_sensors),
+ /* K6 */ be_nested_str_weak(millis),
+ }),
+ be_str_weak(read_sensors_scheduler),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060000, // 0003 JMPF R1 #0005
+ 0x80000200, // 0004 RET 0
+ 0x88040101, // 0005 GETMBR R1 R0 K1
+ 0x1C040302, // 0006 EQ R1 R1 K2
+ 0x74060004, // 0007 JMPT R1 #000D
+ 0xB8060600, // 0008 GETNGBL R1 K3
+ 0x8C040304, // 0009 GETMET R1 R1 K4
+ 0x880C0101, // 000A GETMBR R3 R0 K1
+ 0x7C040400, // 000B CALL R1 2
+ 0x78060006, // 000C JMPF R1 #0014
+ 0x8C040105, // 000D GETMET R1 R0 K5
+ 0x7C040200, // 000E CALL R1 1
+ 0xB8060600, // 000F GETNGBL R1 K3
+ 0x8C040306, // 0010 GETMET R1 R1 K6
+ 0x880C0100, // 0011 GETMBR R3 R0 K0
+ 0x7C040400, // 0012 CALL R1 2
+ 0x90020201, // 0013 SETMBR R0 K1 R1
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_operational_discovery_deferred
+********************************************************************/
+be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 3, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 2]) { /* upvals */
+ be_local_const_upval(1, 0),
+ be_local_const_upval(1, 1),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_operational_discovery),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x68080001, // 0002 GETUPV R2 U1
+ 0x7C000400, // 0003 CALL R0 2
+ 0x80040000, // 0004 RET 1 R0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(set_timer),
+ /* K2 */ be_const_int(0),
+ }),
+ be_str_weak(start_operational_discovery_deferred),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x58100002, // 0002 LDCONST R4 K2
+ 0x84140000, // 0003 CLOSURE R5 P0
+ 0x7C080600, // 0004 CALL R2 3
+ 0xA0000000, // 0005 CLOSE R0
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: generate_random_passcode
+********************************************************************/
+be_local_closure(Matter_Device_generate_random_passcode, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(random),
+ /* K2 */ be_nested_str_weak(get),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_const_int(134217727),
+ /* K5 */ be_const_int(99999998),
+ /* K6 */ be_nested_str_weak(PASSCODE_INVALID),
+ /* K7 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(generate_random_passcode),
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x500C0200, // 0002 LDBOOL R3 1 0
+ 0x780E001D, // 0003 JMPF R3 #0022
+ 0x8C0C0301, // 0004 GETMET R3 R1 K1
+ 0x54160003, // 0005 LDINT R5 4
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x8C0C0702, // 0007 GETMET R3 R3 K2
+ 0x58140003, // 0008 LDCONST R5 K3
+ 0x541A0003, // 0009 LDINT R6 4
+ 0x7C0C0600, // 000A CALL R3 3
+ 0x2C0C0704, // 000B AND R3 R3 K4
+ 0x5C080600, // 000C MOVE R2 R3
+ 0x240C0505, // 000D GT R3 R2 K5
+ 0x780E0000, // 000E JMPF R3 #0010
+ 0x7001FFF1, // 000F JMP #0002
+ 0x600C0010, // 0010 GETGBL R3 G16
+ 0x88100106, // 0011 GETMBR R4 R0 K6
+ 0x7C0C0200, // 0012 CALL R3 1
+ 0xA8020005, // 0013 EXBLK 0 #001A
+ 0x5C100600, // 0014 MOVE R4 R3
+ 0x7C100000, // 0015 CALL R4 0
+ 0x1C140404, // 0016 EQ R5 R2 R4
+ 0x78160000, // 0017 JMPF R5 #0019
+ 0x4C080000, // 0018 LDNIL R2
+ 0x7001FFF9, // 0019 JMP #0014
+ 0x580C0007, // 001A LDCONST R3 K7
+ 0xAC0C0200, // 001B CATCH R3 1 0
+ 0xB0080000, // 001C RAISE 2 R0 R0
+ 0x4C0C0000, // 001D LDNIL R3
+ 0x200C0403, // 001E NE R3 R2 R3
+ 0x780E0000, // 001F JMPF R3 #0021
+ 0x80040400, // 0020 RET 1 R2
+ 0x7001FFDF, // 0021 JMP #0002
+ 0x80000000, // 0022 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: MtrJoin
+********************************************************************/
+be_local_closure(Matter_Device_MtrJoin, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K1 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(resp_cmnd_done),
+ }),
+ be_str_weak(MtrJoin),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x60140009, // 0000 GETGBL R5 G9
+ 0x5C180600, // 0001 MOVE R6 R3
+ 0x7C140200, // 0002 CALL R5 1
+ 0x78160002, // 0003 JMPF R5 #0007
+ 0x8C180100, // 0004 GETMET R6 R0 K0
+ 0x7C180200, // 0005 CALL R6 1
+ 0x70020001, // 0006 JMP #0009
+ 0x8C180101, // 0007 GETMET R6 R0 K1
+ 0x7C180200, // 0008 CALL R6 1
+ 0xB81A0400, // 0009 GETNGBL R6 K2
+ 0x8C180D03, // 000A GETMET R6 R6 K3
+ 0x7C180200, // 000B CALL R6 1
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: save_param
********************************************************************/
@@ -5804,11 +5437,11 @@ be_local_closure(Matter_Device_save_param, /* name */
/********************************************************************
-** Solidified function: generate_random_passcode
+** Solidified function: mdns_remove_op_discovery_all_fabrics
********************************************************************/
-be_local_closure(Matter_Device_generate_random_passcode, /* name */
+be_local_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */
be_nested_proto(
- 7, /* nstack */
+ 6, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -5816,166 +5449,39 @@ be_local_closure(Matter_Device_generate_random_passcode, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(random),
- /* K2 */ be_nested_str_weak(get),
- /* K3 */ be_const_int(0),
- /* K4 */ be_const_int(134217727),
- /* K5 */ be_const_int(99999998),
- /* K6 */ be_nested_str_weak(PASSCODE_INVALID),
- /* K7 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(generate_random_passcode),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x500C0200, // 0002 LDBOOL R3 1 0
- 0x780E001D, // 0003 JMPF R3 #0022
- 0x8C0C0301, // 0004 GETMET R3 R1 K1
- 0x54160003, // 0005 LDINT R5 4
- 0x7C0C0400, // 0006 CALL R3 2
- 0x8C0C0702, // 0007 GETMET R3 R3 K2
- 0x58140003, // 0008 LDCONST R5 K3
- 0x541A0003, // 0009 LDINT R6 4
- 0x7C0C0600, // 000A CALL R3 3
- 0x2C0C0704, // 000B AND R3 R3 K4
- 0x5C080600, // 000C MOVE R2 R3
- 0x240C0505, // 000D GT R3 R2 K5
- 0x780E0000, // 000E JMPF R3 #0010
- 0x7001FFF1, // 000F JMP #0002
- 0x600C0010, // 0010 GETGBL R3 G16
- 0x88100106, // 0011 GETMBR R4 R0 K6
- 0x7C0C0200, // 0012 CALL R3 1
- 0xA8020005, // 0013 EXBLK 0 #001A
- 0x5C100600, // 0014 MOVE R4 R3
- 0x7C100000, // 0015 CALL R4 0
- 0x1C140404, // 0016 EQ R5 R2 R4
- 0x78160000, // 0017 JMPF R5 #0019
- 0x4C080000, // 0018 LDNIL R2
- 0x7001FFF9, // 0019 JMP #0014
- 0x580C0007, // 001A LDCONST R3 K7
- 0xAC0C0200, // 001B CATCH R3 1 0
- 0xB0080000, // 001C RAISE 2 R0 R0
- 0x4C0C0000, // 001D LDNIL R3
- 0x200C0403, // 001E NE R3 R2 R3
- 0x780E0000, // 001F JMPF R3 #0021
- 0x80040400, // 0020 RET 1 R2
- 0x7001FFDF, // 0021 JMP #0002
- 0x80000000, // 0022 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: msg_received
-********************************************************************/
-be_local_closure(Matter_Device_msg_received, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(msg_received),
- }),
- be_str_weak(msg_received),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
- 0x5C180200, // 0002 MOVE R6 R1
- 0x5C1C0400, // 0003 MOVE R7 R2
- 0x5C200600, // 0004 MOVE R8 R3
- 0x7C100800, // 0005 CALL R4 4
- 0x80040800, // 0006 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_commissioning_open
-********************************************************************/
-be_local_closure(Matter_Device_is_commissioning_open, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- }),
- be_str_weak(is_commissioning_open),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: MtrInfo_one
-********************************************************************/
-be_local_closure(Matter_Device_MtrInfo_one, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find_plugin_by_endpoint),
- /* K1 */ be_nested_str_weak(state_json),
- /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(publish_result),
- /* K5 */ be_nested_str_weak(),
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_nested_str_weak(active_fabrics),
+ /* K2 */ be_nested_str_weak(get_device_id),
+ /* K3 */ be_nested_str_weak(get_fabric_id),
+ /* K4 */ be_nested_str_weak(mdns_remove_op_discovery),
+ /* K5 */ be_nested_str_weak(stop_iteration),
}),
- be_str_weak(MtrInfo_one),
+ be_str_weak(mdns_remove_op_discovery_all_fabrics),
&be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5C100200, // 0001 MOVE R4 R1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0403, // 0004 EQ R3 R2 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x80000600, // 0006 RET 0
- 0x8C0C0501, // 0007 GETMET R3 R2 K1
- 0x7C0C0200, // 0008 CALL R3 1
- 0x780E0008, // 0009 JMPF R3 #0013
- 0x60100018, // 000A GETGBL R4 G24
- 0x58140002, // 000B LDCONST R5 K2
- 0x5C180600, // 000C MOVE R6 R3
- 0x7C100400, // 000D CALL R4 2
- 0xB8160600, // 000E GETNGBL R5 K3
- 0x8C140B04, // 000F GETMET R5 R5 K4
- 0x5C1C0800, // 0010 MOVE R7 R4
- 0x58200005, // 0011 LDCONST R8 K5
- 0x7C140600, // 0012 CALL R5 3
- 0x80000000, // 0013 RET 0
+ ( &(const binstruction[22]) { /* code */
+ 0x60040010, // 0000 GETGBL R1 G16
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0x7C080200, // 0003 CALL R2 1
+ 0x7C040200, // 0004 CALL R1 1
+ 0xA802000B, // 0005 EXBLK 0 #0012
+ 0x5C080200, // 0006 MOVE R2 R1
+ 0x7C080000, // 0007 CALL R2 0
+ 0x8C0C0502, // 0008 GETMET R3 R2 K2
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x780E0005, // 000A JMPF R3 #0011
+ 0x8C0C0503, // 000B GETMET R3 R2 K3
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x780E0002, // 000D JMPF R3 #0011
+ 0x8C0C0104, // 000E GETMET R3 R0 K4
+ 0x5C140400, // 000F MOVE R5 R2
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x7001FFF3, // 0011 JMP #0006
+ 0x58040005, // 0012 LDCONST R1 K5
+ 0xAC040200, // 0013 CATCH R1 1 0
+ 0xB0080000, // 0014 RAISE 2 R0 R0
+ 0x80000000, // 0015 RET 0
})
)
);
@@ -5983,19 +5489,19 @@ be_local_closure(Matter_Device_MtrInfo_one, /* name */
/********************************************************************
-** Solidified function: start
+** Solidified function: init
********************************************************************/
-be_local_closure(Matter_Device_start, /* name */
+be_local_closure(Matter_Device_init, /* name */
be_nested_proto(
- 6, /* nstack */
+ 7, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
+ ( &(const struct bproto*[ 2]) {
be_nested_proto(
- 2, /* nstack */
+ 4, /* nstack */
0, /* argc */
0, /* varg */
1, /* has upvals */
@@ -6005,54 +5511,756 @@ be_local_closure(Matter_Device_start, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_trigger_read_sensors),
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(start),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_start),
}),
be_str_weak(_anonymous_),
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
+ ( &(const binstruction[ 9]) { /* code */
0x68000000, // 0000 GETUPV R0 U0
0x8C000100, // 0001 GETMET R0 R0 K0
0x7C000200, // 0002 CALL R0 1
- 0x80000000, // 0003 RET 0
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0004, // 0006 LDCONST R3 K4
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(start),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Eth_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_start),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0004, // 0006 LDCONST R3 K4
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[44]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(get_option),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(MATTER_OPTION),
+ /* K5 */ be_nested_str_weak(UI),
+ /* K6 */ be_nested_str_weak(profiler),
+ /* K7 */ be_nested_str_weak(Profiler),
+ /* K8 */ be_nested_str_weak(started),
+ /* K9 */ be_nested_str_weak(tick),
+ /* K10 */ be_const_int(0),
+ /* K11 */ be_nested_str_weak(plugins),
+ /* K12 */ be_nested_str_weak(plugins_persist),
+ /* K13 */ be_nested_str_weak(plugins_config_remotes),
+ /* K14 */ be_nested_str_weak(vendorid),
+ /* K15 */ be_nested_str_weak(VENDOR_ID),
+ /* K16 */ be_nested_str_weak(productid),
+ /* K17 */ be_nested_str_weak(PRODUCT_ID),
+ /* K18 */ be_nested_str_weak(root_iterations),
+ /* K19 */ be_nested_str_weak(PBKDF_ITERATIONS),
+ /* K20 */ be_nested_str_weak(next_ep),
+ /* K21 */ be_const_int(1),
+ /* K22 */ be_nested_str_weak(root_salt),
+ /* K23 */ be_nested_str_weak(random),
+ /* K24 */ be_nested_str_weak(ipv4only),
+ /* K25 */ be_nested_str_weak(disable_bridge_mode),
+ /* K26 */ be_nested_str_weak(load_param),
+ /* K27 */ be_nested_str_weak(sessions),
+ /* K28 */ be_nested_str_weak(Session_Store),
+ /* K29 */ be_nested_str_weak(load_fabrics),
+ /* K30 */ be_nested_str_weak(message_handler),
+ /* K31 */ be_nested_str_weak(MessageHandler),
+ /* K32 */ be_nested_str_weak(ui),
+ /* K33 */ be_nested_str_weak(wifi),
+ /* K34 */ be_nested_str_weak(up),
+ /* K35 */ be_nested_str_weak(eth),
+ /* K36 */ be_nested_str_weak(start),
+ /* K37 */ be_nested_str_weak(add_rule),
+ /* K38 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K39 */ be_nested_str_weak(matter_start),
+ /* K40 */ be_nested_str_weak(Eth_X23Connected),
+ /* K41 */ be_nested_str_weak(_init_basic_commissioning),
+ /* K42 */ be_nested_str_weak(add_driver),
+ /* K43 */ be_nested_str_weak(register_commands),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[107]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xB80A0200, // 0001 GETNGBL R2 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x88100904, // 0004 GETMBR R4 R4 K4
+ 0x7C080400, // 0005 CALL R2 2
+ 0x740A0004, // 0006 JMPT R2 #000C
+ 0xB80A0600, // 0007 GETNGBL R2 K3
+ 0x8C080505, // 0008 GETMET R2 R2 K5
+ 0x5C100000, // 0009 MOVE R4 R0
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000400, // 000B RET 0
+ 0xB80A0600, // 000C GETNGBL R2 K3
+ 0xB80E0600, // 000D GETNGBL R3 K3
+ 0x8C0C0707, // 000E GETMET R3 R3 K7
+ 0x7C0C0200, // 000F CALL R3 1
+ 0x900A0C03, // 0010 SETMBR R2 K6 R3
+ 0x50080000, // 0011 LDBOOL R2 0 0
+ 0x90021002, // 0012 SETMBR R0 K8 R2
+ 0x9002130A, // 0013 SETMBR R0 K9 K10
+ 0x60080012, // 0014 GETGBL R2 G18
+ 0x7C080000, // 0015 CALL R2 0
+ 0x90021602, // 0016 SETMBR R0 K11 R2
+ 0x50080000, // 0017 LDBOOL R2 0 0
+ 0x90021802, // 0018 SETMBR R0 K12 R2
+ 0x60080013, // 0019 GETGBL R2 G19
+ 0x7C080000, // 001A CALL R2 0
+ 0x90021A02, // 001B SETMBR R0 K13 R2
+ 0x8808010F, // 001C GETMBR R2 R0 K15
+ 0x90021C02, // 001D SETMBR R0 K14 R2
+ 0x88080111, // 001E GETMBR R2 R0 K17
+ 0x90022002, // 001F SETMBR R0 K16 R2
+ 0x88080113, // 0020 GETMBR R2 R0 K19
+ 0x90022402, // 0021 SETMBR R0 K18 R2
+ 0x90022915, // 0022 SETMBR R0 K20 K21
+ 0x8C080317, // 0023 GETMET R2 R1 K23
+ 0x5412000F, // 0024 LDINT R4 16
+ 0x7C080400, // 0025 CALL R2 2
+ 0x90022C02, // 0026 SETMBR R0 K22 R2
+ 0x50080000, // 0027 LDBOOL R2 0 0
+ 0x90023002, // 0028 SETMBR R0 K24 R2
+ 0x50080000, // 0029 LDBOOL R2 0 0
+ 0x90023202, // 002A SETMBR R0 K25 R2
+ 0x8C08011A, // 002B GETMET R2 R0 K26
+ 0x7C080200, // 002C CALL R2 1
+ 0xB80A0600, // 002D GETNGBL R2 K3
+ 0x8C08051C, // 002E GETMET R2 R2 K28
+ 0x5C100000, // 002F MOVE R4 R0
+ 0x7C080400, // 0030 CALL R2 2
+ 0x90023602, // 0031 SETMBR R0 K27 R2
+ 0x8808011B, // 0032 GETMBR R2 R0 K27
+ 0x8C08051D, // 0033 GETMET R2 R2 K29
+ 0x7C080200, // 0034 CALL R2 1
+ 0xB80A0600, // 0035 GETNGBL R2 K3
+ 0x8C08051F, // 0036 GETMET R2 R2 K31
+ 0x5C100000, // 0037 MOVE R4 R0
+ 0x7C080400, // 0038 CALL R2 2
+ 0x90023C02, // 0039 SETMBR R0 K30 R2
+ 0xB80A0600, // 003A GETNGBL R2 K3
+ 0x8C080505, // 003B GETMET R2 R2 K5
+ 0x5C100000, // 003C MOVE R4 R0
+ 0x7C080400, // 003D CALL R2 2
+ 0x90024002, // 003E SETMBR R0 K32 R2
+ 0xB80A0200, // 003F GETNGBL R2 K1
+ 0x8C080521, // 0040 GETMET R2 R2 K33
+ 0x7C080200, // 0041 CALL R2 1
+ 0x94080522, // 0042 GETIDX R2 R2 K34
+ 0x740A0004, // 0043 JMPT R2 #0049
+ 0xB80A0200, // 0044 GETNGBL R2 K1
+ 0x8C080523, // 0045 GETMET R2 R2 K35
+ 0x7C080200, // 0046 CALL R2 1
+ 0x94080522, // 0047 GETIDX R2 R2 K34
+ 0x780A0001, // 0048 JMPF R2 #004B
+ 0x8C080124, // 0049 GETMET R2 R0 K36
+ 0x7C080200, // 004A CALL R2 1
+ 0xB80A0200, // 004B GETNGBL R2 K1
+ 0x8C080521, // 004C GETMET R2 R2 K33
+ 0x7C080200, // 004D CALL R2 1
+ 0x94080522, // 004E GETIDX R2 R2 K34
+ 0x740A0005, // 004F JMPT R2 #0056
+ 0xB80A0200, // 0050 GETNGBL R2 K1
+ 0x8C080525, // 0051 GETMET R2 R2 K37
+ 0x58100026, // 0052 LDCONST R4 K38
+ 0x84140000, // 0053 CLOSURE R5 P0
+ 0x58180027, // 0054 LDCONST R6 K39
+ 0x7C080800, // 0055 CALL R2 4
+ 0xB80A0200, // 0056 GETNGBL R2 K1
+ 0x8C080523, // 0057 GETMET R2 R2 K35
+ 0x7C080200, // 0058 CALL R2 1
+ 0x94080522, // 0059 GETIDX R2 R2 K34
+ 0x740A0005, // 005A JMPT R2 #0061
+ 0xB80A0200, // 005B GETNGBL R2 K1
+ 0x8C080525, // 005C GETMET R2 R2 K37
+ 0x58100028, // 005D LDCONST R4 K40
+ 0x84140001, // 005E CLOSURE R5 P1
+ 0x58180027, // 005F LDCONST R6 K39
+ 0x7C080800, // 0060 CALL R2 4
+ 0x8C080129, // 0061 GETMET R2 R0 K41
+ 0x7C080200, // 0062 CALL R2 1
+ 0xB80A0200, // 0063 GETNGBL R2 K1
+ 0x8C08052A, // 0064 GETMET R2 R2 K42
+ 0x5C100000, // 0065 MOVE R4 R0
+ 0x7C080400, // 0066 CALL R2 2
+ 0x8C08012B, // 0067 GETMET R2 R0 K43
+ 0x7C080200, // 0068 CALL R2 1
+ 0xA0000000, // 0069 CLOSE R0
+ 0x80000000, // 006A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_mdns_announce_hostnames
+********************************************************************/
+be_local_closure(Matter_Device_start_mdns_announce_hostnames, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 2]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x50080000, // 0002 LDBOOL R2 0 0
+ 0x7C000400, // 0003 CALL R0 2
+ 0xB8020200, // 0004 GETNGBL R0 K1
+ 0x8C000102, // 0005 GETMET R0 R0 K2
+ 0x58080003, // 0006 LDCONST R2 K3
+ 0x580C0004, // 0007 LDCONST R3 K4
+ 0x7C000600, // 0008 CALL R0 3
+ 0x80000000, // 0009 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Eth_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x50080200, // 0002 LDBOOL R2 1 0
+ 0x7C000400, // 0003 CALL R0 2
+ 0xB8020200, // 0004 GETNGBL R0 K1
+ 0x8C000102, // 0005 GETMET R0 R0 K2
+ 0x58080003, // 0006 LDCONST R2 K3
+ 0x580C0004, // 0007 LDCONST R3 K4
+ 0x7C000600, // 0008 CALL R0 3
+ 0x80000000, // 0009 RET 0
})
),
}),
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(started),
- /* K1 */ be_nested_str_weak(autoconf_device),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(add_cron),
- /* K4 */ be_nested_str_weak(_X2A_X2F30_X20_X2A_X20_X2A_X20_X2A_X20_X2A_X20_X2A),
- /* K5 */ be_nested_str_weak(matter_sensors_30s),
- /* K6 */ be_nested_str_weak(_start_udp),
- /* K7 */ be_nested_str_weak(UDP_PORT),
- /* K8 */ be_nested_str_weak(start_mdns_announce_hostnames),
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(wifi),
+ /* K2 */ be_nested_str_weak(up),
+ /* K3 */ be_nested_str_weak(_mdns_announce_hostname),
+ /* K4 */ be_nested_str_weak(add_rule),
+ /* K5 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K6 */ be_nested_str_weak(matter_mdns_host),
+ /* K7 */ be_nested_str_weak(eth),
+ /* K8 */ be_nested_str_weak(Eth_X23Connected),
}),
- be_str_weak(start),
+ be_str_weak(start_mdns_announce_hostnames),
&be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
+ ( &(const binstruction[32]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x94040302, // 0003 GETIDX R1 R1 K2
+ 0x78060003, // 0004 JMPF R1 #0009
+ 0x8C040103, // 0005 GETMET R1 R0 K3
+ 0x500C0000, // 0006 LDBOOL R3 0 0
+ 0x7C040400, // 0007 CALL R1 2
+ 0x70020005, // 0008 JMP #000F
+ 0xB8060000, // 0009 GETNGBL R1 K0
+ 0x8C040304, // 000A GETMET R1 R1 K4
+ 0x580C0005, // 000B LDCONST R3 K5
+ 0x84100000, // 000C CLOSURE R4 P0
+ 0x58140006, // 000D LDCONST R5 K6
+ 0x7C040800, // 000E CALL R1 4
+ 0xB8060000, // 000F GETNGBL R1 K0
+ 0x8C040307, // 0010 GETMET R1 R1 K7
+ 0x7C040200, // 0011 CALL R1 1
+ 0x94040302, // 0012 GETIDX R1 R1 K2
+ 0x78060003, // 0013 JMPF R1 #0018
+ 0x8C040103, // 0014 GETMET R1 R0 K3
+ 0x500C0200, // 0015 LDBOOL R3 1 0
+ 0x7C040400, // 0016 CALL R1 2
+ 0x70020005, // 0017 JMP #001E
+ 0xB8060000, // 0018 GETNGBL R1 K0
+ 0x8C040304, // 0019 GETMET R1 R1 K4
+ 0x580C0008, // 001A LDCONST R3 K8
+ 0x84100001, // 001B CLOSURE R4 P1
+ 0x58140006, // 001C LDCONST R5 K6
+ 0x7C040800, // 001D CALL R1 4
+ 0xA0000000, // 001E CLOSE R0
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: signal_endpoints_changed
+********************************************************************/
+be_local_closure(Matter_Device_signal_endpoints_changed, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_const_int(3),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ }),
+ be_str_weak(signal_endpoints_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x580C0001, // 0001 LDCONST R3 K1
+ 0x5412001C, // 0002 LDINT R4 29
+ 0x58140002, // 0003 LDCONST R5 K2
+ 0x50180000, // 0004 LDBOOL R6 0 0
+ 0x7C040A00, // 0005 CALL R1 5
+ 0x8C040100, // 0006 GETMET R1 R0 K0
+ 0xB80E0600, // 0007 GETNGBL R3 K3
+ 0x880C0704, // 0008 GETMBR R3 R3 K4
+ 0x5412001C, // 0009 LDINT R4 29
+ 0x58140002, // 000A LDCONST R5 K2
+ 0x50180000, // 000B LDBOOL R6 0 0
+ 0x7C040A00, // 000C CALL R1 5
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_announce_PASE
+********************************************************************/
+be_local_closure(Matter_Device_mdns_announce_PASE, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[41]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(crypto),
+ /* K2 */ be_nested_str_weak(VP),
+ /* K3 */ be_nested_str_weak(vendorid),
+ /* K4 */ be_nested_str_weak(_X2B),
+ /* K5 */ be_nested_str_weak(productid),
+ /* K6 */ be_nested_str_weak(D),
+ /* K7 */ be_nested_str_weak(commissioning_discriminator),
+ /* K8 */ be_nested_str_weak(CM),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(T),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(SII),
+ /* K13 */ be_nested_str_weak(SAI),
+ /* K14 */ be_nested_str_weak(commissioning_instance_wifi),
+ /* K15 */ be_nested_str_weak(random),
+ /* K16 */ be_nested_str_weak(tohex),
+ /* K17 */ be_nested_str_weak(commissioning_instance_eth),
+ /* K18 */ be_nested_str_weak(hostname_eth),
+ /* K19 */ be_nested_str_weak(add_service),
+ /* K20 */ be_nested_str_weak(_matterc),
+ /* K21 */ be_nested_str_weak(_udp),
+ /* K22 */ be_nested_str_weak(mdns_pase_eth),
+ /* K23 */ be_nested_str_weak(tasmota),
+ /* K24 */ be_nested_str_weak(log),
+ /* K25 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K26 */ be_nested_str_weak(eth),
+ /* K27 */ be_const_int(2),
+ /* K28 */ be_nested_str_weak(_L),
+ /* K29 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
+ /* K30 */ be_const_int(3),
+ /* K31 */ be_nested_str_weak(add_subtype),
+ /* K32 */ be_nested_str_weak(_S),
+ /* K33 */ be_nested_str_weak(_V),
+ /* K34 */ be_nested_str_weak(_CM1),
+ /* K35 */ be_nested_str_weak(hostname_wifi),
+ /* K36 */ be_nested_str_weak(mdns_pase_wifi),
+ /* K37 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K38 */ be_nested_str_weak(wifi),
+ /* K39 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K40 */ be_nested_str_weak(_X7C),
+ }),
+ be_str_weak(mdns_announce_PASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[236]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA40A0200, // 0001 IMPORT R2 K1
+ 0x600C0013, // 0002 GETGBL R3 G19
+ 0x7C0C0000, // 0003 CALL R3 0
+ 0x60100008, // 0004 GETGBL R4 G8
+ 0x88140103, // 0005 GETMBR R5 R0 K3
+ 0x7C100200, // 0006 CALL R4 1
+ 0x00100904, // 0007 ADD R4 R4 K4
+ 0x60140008, // 0008 GETGBL R5 G8
+ 0x88180105, // 0009 GETMBR R6 R0 K5
+ 0x7C140200, // 000A CALL R5 1
+ 0x00100805, // 000B ADD R4 R4 R5
+ 0x980E0404, // 000C SETIDX R3 K2 R4
+ 0x88100107, // 000D GETMBR R4 R0 K7
+ 0x980E0C04, // 000E SETIDX R3 K6 R4
+ 0x980E1109, // 000F SETIDX R3 K8 K9
+ 0x980E150B, // 0010 SETIDX R3 K10 K11
+ 0x54121387, // 0011 LDINT R4 5000
+ 0x980E1804, // 0012 SETIDX R3 K12 R4
+ 0x5412012B, // 0013 LDINT R4 300
+ 0x980E1A04, // 0014 SETIDX R3 K13 R4
+ 0x8C10050F, // 0015 GETMET R4 R2 K15
+ 0x541A0007, // 0016 LDINT R6 8
+ 0x7C100400, // 0017 CALL R4 2
+ 0x8C100910, // 0018 GETMET R4 R4 K16
+ 0x7C100200, // 0019 CALL R4 1
+ 0x90021C04, // 001A SETMBR R0 K14 R4
+ 0x8C10050F, // 001B GETMET R4 R2 K15
+ 0x541A0007, // 001C LDINT R6 8
+ 0x7C100400, // 001D CALL R4 2
+ 0x8C100910, // 001E GETMET R4 R4 K16
+ 0x7C100200, // 001F CALL R4 1
+ 0x90022204, // 0020 SETMBR R0 K17 R4
+ 0xA80200B7, // 0021 EXBLK 0 #00DA
+ 0x88100112, // 0022 GETMBR R4 R0 K18
+ 0x78120058, // 0023 JMPF R4 #007D
+ 0x8C100313, // 0024 GETMET R4 R1 K19
+ 0x58180014, // 0025 LDCONST R6 K20
+ 0x581C0015, // 0026 LDCONST R7 K21
+ 0x542215A3, // 0027 LDINT R8 5540
+ 0x5C240600, // 0028 MOVE R9 R3
+ 0x88280111, // 0029 GETMBR R10 R0 K17
+ 0x882C0112, // 002A GETMBR R11 R0 K18
+ 0x7C100E00, // 002B CALL R4 7
+ 0x50100200, // 002C LDBOOL R4 1 0
+ 0x90022C04, // 002D SETMBR R0 K22 R4
+ 0xB8122E00, // 002E GETNGBL R4 K23
+ 0x8C100918, // 002F GETMET R4 R4 K24
+ 0x60180018, // 0030 GETGBL R6 G24
+ 0x581C0019, // 0031 LDCONST R7 K25
+ 0x5820001A, // 0032 LDCONST R8 K26
+ 0x88240111, // 0033 GETMBR R9 R0 K17
+ 0x88280112, // 0034 GETMBR R10 R0 K18
+ 0x7C180800, // 0035 CALL R6 4
+ 0x581C001B, // 0036 LDCONST R7 K27
+ 0x7C100600, // 0037 CALL R4 3
+ 0x60100008, // 0038 GETGBL R4 G8
+ 0x88140107, // 0039 GETMBR R5 R0 K7
+ 0x541A0FFE, // 003A LDINT R6 4095
+ 0x2C140A06, // 003B AND R5 R5 R6
+ 0x7C100200, // 003C CALL R4 1
+ 0x00123804, // 003D ADD R4 K28 R4
+ 0xB8162E00, // 003E GETNGBL R5 K23
+ 0x8C140B18, // 003F GETMET R5 R5 K24
+ 0x001E3A04, // 0040 ADD R7 K29 R4
+ 0x5820001E, // 0041 LDCONST R8 K30
+ 0x7C140600, // 0042 CALL R5 3
+ 0x8C14031F, // 0043 GETMET R5 R1 K31
+ 0x581C0014, // 0044 LDCONST R7 K20
+ 0x58200015, // 0045 LDCONST R8 K21
+ 0x88240111, // 0046 GETMBR R9 R0 K17
+ 0x88280112, // 0047 GETMBR R10 R0 K18
+ 0x5C2C0800, // 0048 MOVE R11 R4
+ 0x7C140C00, // 0049 CALL R5 6
+ 0x60140008, // 004A GETGBL R5 G8
+ 0x88180107, // 004B GETMBR R6 R0 K7
+ 0x541E0EFF, // 004C LDINT R7 3840
+ 0x2C180C07, // 004D AND R6 R6 R7
+ 0x541E0007, // 004E LDINT R7 8
+ 0x3C180C07, // 004F SHR R6 R6 R7
+ 0x7C140200, // 0050 CALL R5 1
+ 0x00164005, // 0051 ADD R5 K32 R5
+ 0x5C100A00, // 0052 MOVE R4 R5
+ 0xB8162E00, // 0053 GETNGBL R5 K23
+ 0x8C140B18, // 0054 GETMET R5 R5 K24
+ 0x001E3A04, // 0055 ADD R7 K29 R4
+ 0x5820001E, // 0056 LDCONST R8 K30
+ 0x7C140600, // 0057 CALL R5 3
+ 0x8C14031F, // 0058 GETMET R5 R1 K31
+ 0x581C0014, // 0059 LDCONST R7 K20
+ 0x58200015, // 005A LDCONST R8 K21
+ 0x88240111, // 005B GETMBR R9 R0 K17
+ 0x88280112, // 005C GETMBR R10 R0 K18
+ 0x5C2C0800, // 005D MOVE R11 R4
+ 0x7C140C00, // 005E CALL R5 6
+ 0x60140008, // 005F GETGBL R5 G8
+ 0x88180103, // 0060 GETMBR R6 R0 K3
+ 0x7C140200, // 0061 CALL R5 1
+ 0x00164205, // 0062 ADD R5 K33 R5
+ 0x5C100A00, // 0063 MOVE R4 R5
+ 0xB8162E00, // 0064 GETNGBL R5 K23
+ 0x8C140B18, // 0065 GETMET R5 R5 K24
+ 0x001E3A04, // 0066 ADD R7 K29 R4
+ 0x5820001E, // 0067 LDCONST R8 K30
+ 0x7C140600, // 0068 CALL R5 3
+ 0x8C14031F, // 0069 GETMET R5 R1 K31
+ 0x581C0014, // 006A LDCONST R7 K20
+ 0x58200015, // 006B LDCONST R8 K21
+ 0x88240111, // 006C GETMBR R9 R0 K17
+ 0x88280112, // 006D GETMBR R10 R0 K18
+ 0x5C2C0800, // 006E MOVE R11 R4
+ 0x7C140C00, // 006F CALL R5 6
+ 0x58100022, // 0070 LDCONST R4 K34
+ 0xB8162E00, // 0071 GETNGBL R5 K23
+ 0x8C140B18, // 0072 GETMET R5 R5 K24
+ 0x001E3A04, // 0073 ADD R7 K29 R4
+ 0x5820001E, // 0074 LDCONST R8 K30
+ 0x7C140600, // 0075 CALL R5 3
+ 0x8C14031F, // 0076 GETMET R5 R1 K31
+ 0x581C0014, // 0077 LDCONST R7 K20
+ 0x58200015, // 0078 LDCONST R8 K21
+ 0x88240111, // 0079 GETMBR R9 R0 K17
+ 0x88280112, // 007A GETMBR R10 R0 K18
+ 0x5C2C0800, // 007B MOVE R11 R4
+ 0x7C140C00, // 007C CALL R5 6
+ 0x88100123, // 007D GETMBR R4 R0 K35
+ 0x78120058, // 007E JMPF R4 #00D8
+ 0x8C100313, // 007F GETMET R4 R1 K19
+ 0x58180014, // 0080 LDCONST R6 K20
+ 0x581C0015, // 0081 LDCONST R7 K21
+ 0x542215A3, // 0082 LDINT R8 5540
+ 0x5C240600, // 0083 MOVE R9 R3
+ 0x8828010E, // 0084 GETMBR R10 R0 K14
+ 0x882C0123, // 0085 GETMBR R11 R0 K35
+ 0x7C100E00, // 0086 CALL R4 7
+ 0x50100200, // 0087 LDBOOL R4 1 0
+ 0x90024804, // 0088 SETMBR R0 K36 R4
+ 0xB8122E00, // 0089 GETNGBL R4 K23
+ 0x8C100918, // 008A GETMET R4 R4 K24
+ 0x60180018, // 008B GETGBL R6 G24
+ 0x581C0025, // 008C LDCONST R7 K37
+ 0x58200026, // 008D LDCONST R8 K38
+ 0x8824010E, // 008E GETMBR R9 R0 K14
+ 0x88280123, // 008F GETMBR R10 R0 K35
+ 0x7C180800, // 0090 CALL R6 4
+ 0x581C001E, // 0091 LDCONST R7 K30
+ 0x7C100600, // 0092 CALL R4 3
+ 0x60100008, // 0093 GETGBL R4 G8
+ 0x88140107, // 0094 GETMBR R5 R0 K7
+ 0x541A0FFE, // 0095 LDINT R6 4095
+ 0x2C140A06, // 0096 AND R5 R5 R6
+ 0x7C100200, // 0097 CALL R4 1
+ 0x00123804, // 0098 ADD R4 K28 R4
+ 0xB8162E00, // 0099 GETNGBL R5 K23
+ 0x8C140B18, // 009A GETMET R5 R5 K24
+ 0x001E3A04, // 009B ADD R7 K29 R4
+ 0x5820001E, // 009C LDCONST R8 K30
+ 0x7C140600, // 009D CALL R5 3
+ 0x8C14031F, // 009E GETMET R5 R1 K31
+ 0x581C0014, // 009F LDCONST R7 K20
+ 0x58200015, // 00A0 LDCONST R8 K21
+ 0x8824010E, // 00A1 GETMBR R9 R0 K14
+ 0x88280123, // 00A2 GETMBR R10 R0 K35
+ 0x5C2C0800, // 00A3 MOVE R11 R4
+ 0x7C140C00, // 00A4 CALL R5 6
+ 0x60140008, // 00A5 GETGBL R5 G8
+ 0x88180107, // 00A6 GETMBR R6 R0 K7
+ 0x541E0EFF, // 00A7 LDINT R7 3840
+ 0x2C180C07, // 00A8 AND R6 R6 R7
+ 0x541E0007, // 00A9 LDINT R7 8
+ 0x3C180C07, // 00AA SHR R6 R6 R7
+ 0x7C140200, // 00AB CALL R5 1
+ 0x00164005, // 00AC ADD R5 K32 R5
+ 0x5C100A00, // 00AD MOVE R4 R5
+ 0xB8162E00, // 00AE GETNGBL R5 K23
+ 0x8C140B18, // 00AF GETMET R5 R5 K24
+ 0x001E3A04, // 00B0 ADD R7 K29 R4
+ 0x5820001E, // 00B1 LDCONST R8 K30
+ 0x7C140600, // 00B2 CALL R5 3
+ 0x8C14031F, // 00B3 GETMET R5 R1 K31
+ 0x581C0014, // 00B4 LDCONST R7 K20
+ 0x58200015, // 00B5 LDCONST R8 K21
+ 0x8824010E, // 00B6 GETMBR R9 R0 K14
+ 0x88280123, // 00B7 GETMBR R10 R0 K35
+ 0x5C2C0800, // 00B8 MOVE R11 R4
+ 0x7C140C00, // 00B9 CALL R5 6
+ 0x60140008, // 00BA GETGBL R5 G8
+ 0x88180103, // 00BB GETMBR R6 R0 K3
+ 0x7C140200, // 00BC CALL R5 1
+ 0x00164205, // 00BD ADD R5 K33 R5
+ 0x5C100A00, // 00BE MOVE R4 R5
+ 0xB8162E00, // 00BF GETNGBL R5 K23
+ 0x8C140B18, // 00C0 GETMET R5 R5 K24
+ 0x001E3A04, // 00C1 ADD R7 K29 R4
+ 0x5820001E, // 00C2 LDCONST R8 K30
+ 0x7C140600, // 00C3 CALL R5 3
+ 0x8C14031F, // 00C4 GETMET R5 R1 K31
+ 0x581C0014, // 00C5 LDCONST R7 K20
+ 0x58200015, // 00C6 LDCONST R8 K21
+ 0x8824010E, // 00C7 GETMBR R9 R0 K14
+ 0x88280123, // 00C8 GETMBR R10 R0 K35
+ 0x5C2C0800, // 00C9 MOVE R11 R4
+ 0x7C140C00, // 00CA CALL R5 6
+ 0x58100022, // 00CB LDCONST R4 K34
+ 0xB8162E00, // 00CC GETNGBL R5 K23
+ 0x8C140B18, // 00CD GETMET R5 R5 K24
+ 0x001E3A04, // 00CE ADD R7 K29 R4
+ 0x5820001E, // 00CF LDCONST R8 K30
+ 0x7C140600, // 00D0 CALL R5 3
+ 0x8C14031F, // 00D1 GETMET R5 R1 K31
+ 0x581C0014, // 00D2 LDCONST R7 K20
+ 0x58200015, // 00D3 LDCONST R8 K21
+ 0x8824010E, // 00D4 GETMBR R9 R0 K14
+ 0x88280123, // 00D5 GETMBR R10 R0 K35
+ 0x5C2C0800, // 00D6 MOVE R11 R4
+ 0x7C140C00, // 00D7 CALL R5 6
+ 0xA8040001, // 00D8 EXBLK 1 1
+ 0x70020010, // 00D9 JMP #00EB
+ 0xAC100002, // 00DA CATCH R4 0 2
+ 0x7002000D, // 00DB JMP #00EA
+ 0xB81A2E00, // 00DC GETNGBL R6 K23
+ 0x8C180D18, // 00DD GETMET R6 R6 K24
+ 0x60200008, // 00DE GETGBL R8 G8
+ 0x5C240800, // 00DF MOVE R9 R4
+ 0x7C200200, // 00E0 CALL R8 1
+ 0x00224E08, // 00E1 ADD R8 K39 R8
+ 0x00201128, // 00E2 ADD R8 R8 K40
+ 0x60240008, // 00E3 GETGBL R9 G8
+ 0x5C280A00, // 00E4 MOVE R10 R5
+ 0x7C240200, // 00E5 CALL R9 1
+ 0x00201009, // 00E6 ADD R8 R8 R9
+ 0x5824001B, // 00E7 LDCONST R9 K27
+ 0x7C180600, // 00E8 CALL R6 3
+ 0x70020000, // 00E9 JMP #00EB
+ 0xB0080000, // 00EA RAISE 2 R0 R0
+ 0x80000000, // 00EB RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_plugin_remote_info
+********************************************************************/
+be_local_closure(Matter_Device_get_plugin_remote_info, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(plugins_config_remotes),
+ /* K1 */ be_nested_str_weak(find),
+ }),
+ be_str_weak(get_plugin_remote_info),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x60140013, // 0003 GETGBL R5 G19
+ 0x7C140000, // 0004 CALL R5 0
+ 0x7C080600, // 0005 CALL R2 3
+ 0x80040400, // 0006 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_50ms
+********************************************************************/
+be_local_closure(Matter_Device_every_50ms, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(tick),
+ /* K1 */ be_const_int(1),
+ }),
+ be_str_weak(every_50ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060000, // 0001 JMPF R1 #0003
- 0x80000200, // 0002 RET 0
- 0x8C040101, // 0003 GETMET R1 R0 K1
- 0x7C040200, // 0004 CALL R1 1
- 0xB8060400, // 0005 GETNGBL R1 K2
- 0x8C040303, // 0006 GETMET R1 R1 K3
- 0x580C0004, // 0007 LDCONST R3 K4
- 0x84100000, // 0008 CLOSURE R4 P0
- 0x58140005, // 0009 LDCONST R5 K5
- 0x7C040800, // 000A CALL R1 4
- 0x8C040106, // 000B GETMET R1 R0 K6
- 0x880C0107, // 000C GETMBR R3 R0 K7
- 0x7C040400, // 000D CALL R1 2
- 0x8C040108, // 000E GETMET R1 R0 K8
- 0x7C040200, // 000F CALL R1 1
- 0x50040200, // 0010 LDBOOL R1 1 0
- 0x90020001, // 0011 SETMBR R0 K0 R1
- 0xA0000000, // 0012 CLOSE R0
- 0x80000000, // 0013 RET 0
+ 0x00040301, // 0001 ADD R1 R1 K1
+ 0x90020001, // 0002 SETMBR R0 K0 R1
+ 0x80000000, // 0003 RET 0
})
)
);
@@ -6063,40 +6271,87 @@ be_local_closure(Matter_Device_start, /* name */
** Solidified class: Matter_Device
********************************************************************/
be_local_class(Matter_Device,
- 36,
+ 38,
NULL,
- be_nested_map(112,
+ be_nested_map(117,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(Matter_Device_signal_endpoints_changed_closure) },
- { be_const_key_weak(msg_send, 105), be_const_closure(Matter_Device_msg_send_closure) },
- { be_const_key_weak(sort_distinct, -1), be_const_static_closure(Matter_Device_sort_distinct_closure) },
- { be_const_key_weak(MtrInfo_one, -1), be_const_closure(Matter_Device_MtrInfo_one_closure) },
- { be_const_key_weak(plugins_persist, -1), be_const_var(2) },
- { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(Matter_Device__init_basic_commissioning_closure) },
- { be_const_key_weak(root_discriminator, -1), be_const_var(27) },
- { be_const_key_weak(hostname_wifi, 85), be_const_var(20) },
- { be_const_key_weak(plugins, 15), be_const_var(1) },
- { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) },
- { be_const_key_weak(plugins_config, -1), be_const_var(3) },
- { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) },
- { be_const_key_weak(is_commissioning_open, 56), be_const_closure(Matter_Device_is_commissioning_open_closure) },
- { be_const_key_weak(http_remotes, 34), be_const_var(26) },
- { be_const_key_weak(vendorid, -1), be_const_var(22) },
- { be_const_key_weak(ui, 77), be_const_var(9) },
- { be_const_key_weak(ipv4only, -1), be_const_var(29) },
- { be_const_key_weak(start_operational_discovery, 49), be_const_closure(Matter_Device_start_operational_discovery_closure) },
- { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(Matter_Device__mdns_announce_hostname_closure) },
- { be_const_key_weak(bridge_remove_endpoint, 37), be_const_closure(Matter_Device_bridge_remove_endpoint_closure) },
- { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(Matter_Device_find_plugin_by_endpoint_closure) },
- { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) },
- { be_const_key_weak(_start_udp, 2), be_const_closure(Matter_Device__start_udp_closure) },
- { be_const_key_weak(compute_qrcode_content, 0), be_const_closure(Matter_Device_compute_qrcode_content_closure) },
- { be_const_key_weak(msg_received, -1), be_const_closure(Matter_Device_msg_received_closure) },
- { be_const_key_weak(_instantiate_plugins_from_config, 75), be_const_closure(Matter_Device__instantiate_plugins_from_config_closure) },
- { be_const_key_weak(root_salt, 103), be_const_var(33) },
{ be_const_key_weak(udp_server, -1), be_const_var(5) },
- { be_const_key_weak(sessions, -1), be_const_var(8) },
- { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ { be_const_key_weak(next_ep, 108), be_const_var(31) },
+ { be_const_key_weak(is_commissioning_open, -1), be_const_closure(Matter_Device_is_commissioning_open_closure) },
+ { be_const_key_weak(MtrInfo_one, -1), be_const_closure(Matter_Device_MtrInfo_one_closure) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Device_invoke_request_closure) },
+ { be_const_key_weak(start_commissioning_complete, 4), be_const_closure(Matter_Device_start_commissioning_complete_closure) },
+ { be_const_key_weak(bridge_remove_endpoint, 23), be_const_closure(Matter_Device_bridge_remove_endpoint_closure) },
+ { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(Matter_Device_get_plugin_remote_info_closure) },
+ { be_const_key_weak(probe_sensor_time, 43), be_const_var(36) },
+ { be_const_key_weak(vendorid, -1), be_const_var(22) },
+ { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) },
+ { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(19) },
+ { be_const_key_weak(MtrInfo, 17), be_const_closure(Matter_Device_MtrInfo_closure) },
+ { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(Matter_Device_mdns_announce_PASE_closure) },
+ { be_const_key_weak(productid, 44), be_const_var(23) },
+ { be_const_key_weak(bridge_add_endpoint, 20), be_const_closure(Matter_Device_bridge_add_endpoint_closure) },
+ { be_const_key_weak(register_http_remote, -1), be_const_closure(Matter_Device_register_http_remote_closure) },
+ { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(Matter_Device_signal_endpoints_changed_closure) },
+ { be_const_key_weak(disable_bridge_mode, -1), be_const_var(30) },
+ { be_const_key_weak(get_plugin_class_displayname, 89), be_const_closure(Matter_Device_get_plugin_class_displayname_closure) },
+ { be_const_key_weak(start_mdns_announce_hostnames, 69), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) },
+ { be_const_key_weak(commissioning_instance_wifi, 114), be_const_var(18) },
+ { be_const_key_weak(autoconf_device_map, -1), be_const_closure(Matter_Device_autoconf_device_map_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Device_init_closure) },
+ { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, 8), be_const_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) },
+ { be_const_key_weak(sessions, 98), be_const_var(8) },
+ { be_const_key_weak(_mdns_announce_hostname, 55), be_const_closure(Matter_Device__mdns_announce_hostname_closure) },
+ { be_const_key_weak(commissioning_discriminator, -1), be_const_var(13) },
+ { be_const_key_weak(register_commands, 100), be_const_closure(Matter_Device_register_commands_closure) },
+ { be_const_key_weak(start, 109), be_const_closure(Matter_Device_start_closure) },
+ { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(Matter_Device__compute_pbkdf_closure) },
+ { be_const_key_weak(find_plugin_by_friendly_name, 95), be_const_closure(Matter_Device_find_plugin_by_friendly_name_closure) },
+ { be_const_key_weak(save_param, -1), be_const_closure(Matter_Device_save_param_closure) },
+ { be_const_key_weak(clean_remotes, -1), be_const_closure(Matter_Device_clean_remotes_closure) },
+ { be_const_key_weak(MtrJoin, 58), be_const_closure(Matter_Device_MtrJoin_closure) },
+ { be_const_key_weak(autoconf_device, -1), be_const_closure(Matter_Device_autoconf_device_closure) },
+ { be_const_key_weak(hostname_wifi, 68), be_const_var(20) },
+ { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(Matter_Device__trigger_read_sensors_closure) },
+ { be_const_key_weak(root_passcode, 63), be_const_var(28) },
+ { be_const_key_weak(save_before_restart, -1), be_const_closure(Matter_Device_save_before_restart_closure) },
+ { be_const_key_weak(generate_random_passcode, 64), be_const_closure(Matter_Device_generate_random_passcode_closure) },
+ { be_const_key_weak(is_root_commissioning_open, 90), be_const_closure(Matter_Device_is_root_commissioning_open_closure) },
+ { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) },
+ { be_const_key_weak(root_iterations, -1), be_const_var(32) },
+ { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) },
+ { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(37) },
+ { be_const_key_weak(ipv4only, 34), be_const_var(29) },
+ { be_const_key_weak(mdns_remove_PASE, 29), be_const_closure(Matter_Device_mdns_remove_PASE_closure) },
+ { be_const_key_weak(plugins_config_remotes, 103), be_const_var(4) },
+ { be_const_key_weak(remove_fabric, -1), be_const_closure(Matter_Device_remove_fabric_closure) },
+ { be_const_key_weak(sort_distinct, -1), be_const_static_closure(Matter_Device_sort_distinct_closure) },
+ { be_const_key_weak(commissioning_iterations, -1), be_const_var(12) },
+ { be_const_key_weak(plugins_config, 40), be_const_var(3) },
+ { be_const_key_weak(_init_basic_commissioning, 37), be_const_closure(Matter_Device__init_basic_commissioning_closure) },
+ { be_const_key_weak(plugins_persist, -1), be_const_var(2) },
+ { be_const_key_weak(hostname_eth, -1), be_const_var(21) },
+ { be_const_key_weak(mdns_remove_op_discovery, 77), be_const_closure(Matter_Device_mdns_remove_op_discovery_closure) },
+ { be_const_key_weak(received_ack, 76), be_const_closure(Matter_Device_received_ack_closure) },
+ { be_const_key_weak(PASE_TIMEOUT, 27), be_const_int(600) },
+ { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(Matter_Device__instantiate_plugins_from_config_closure) },
+ { be_const_key_weak(mdns_pase_eth, -1), be_const_var(24) },
+ { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(25) },
+ { be_const_key_weak(commissioning_salt, -1), be_const_var(14) },
+ { be_const_key_weak(start_basic_commissioning, 94), be_const_closure(Matter_Device_start_basic_commissioning_closure) },
+ { be_const_key_weak(commissioning_L, -1), be_const_var(16) },
+ { be_const_key_weak(message_handler, 36), be_const_var(7) },
+ { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(Matter_Device_get_plugin_class_arg_closure) },
+ { be_const_key_weak(process_attribute_expansion, 54), be_const_closure(Matter_Device_process_attribute_expansion_closure) },
+ { be_const_key_weak(k2l, -1), be_const_static_closure(Matter_Device_k2l_closure) },
+ { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) },
+ { be_const_key_weak(root_discriminator, 93), be_const_var(27) },
+ { be_const_key_weak(_start_udp, -1), be_const_closure(Matter_Device__start_udp_closure) },
+ { be_const_key_weak(k2l_num, -1), be_const_static_closure(Matter_Device_k2l_num_closure) },
+ { be_const_key_weak(commissioning_open, -1), be_const_var(11) },
+ { be_const_key_weak(add_read_sensors_schedule, 91), be_const_closure(Matter_Device_add_read_sensors_schedule_closure) },
+ { be_const_key_weak(check_config_ep, -1), be_const_closure(Matter_Device_check_config_ep_closure) },
+ { be_const_key_weak(PASSCODE_INVALID, 107), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(12,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
@@ -6112,61 +6367,42 @@ be_local_class(Matter_Device,
be_const_int(12345678),
be_const_int(87654321),
})) ) } )) },
- { be_const_key_weak(started, 93), be_const_var(0) },
- { be_const_key_weak(profiler, -1), be_const_var(6) },
- { be_const_key_weak(bridge_add_endpoint, 46), be_const_closure(Matter_Device_bridge_add_endpoint_closure) },
- { be_const_key_weak(productid, -1), be_const_var(23) },
- { be_const_key_weak(generate_random_passcode, -1), be_const_closure(Matter_Device_generate_random_passcode_closure) },
- { be_const_key_weak(load_param, -1), be_const_closure(Matter_Device_load_param_closure) },
- { be_const_key_weak(save_param, 62), be_const_closure(Matter_Device_save_param_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_Device_init_closure) },
- { be_const_key_weak(root_L, -1), be_const_var(35) },
- { be_const_key_weak(root_iterations, -1), be_const_var(32) },
- { be_const_key_weak(process_attribute_expansion, 86), be_const_closure(Matter_Device_process_attribute_expansion_closure) },
- { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(Matter_Device__compute_pbkdf_closure) },
- { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(18) },
- { be_const_key_weak(register_commands, 45), be_const_closure(Matter_Device_register_commands_closure) },
- { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(Matter_Device_stop_basic_commissioning_closure) },
- { be_const_key_weak(MtrUpdate, -1), be_const_closure(Matter_Device_MtrUpdate_closure) },
- { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(17) },
- { be_const_key_weak(commissioning_L, -1), be_const_var(16) },
- { be_const_key_weak(conf_to_log, -1), be_const_static_closure(Matter_Device_conf_to_log_closure) },
- { be_const_key_weak(update_remotes_info, -1), be_const_closure(Matter_Device_update_remotes_info_closure) },
- { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(Matter_Device_get_plugin_class_displayname_closure) },
- { be_const_key_weak(mdns_pase_eth, 65), be_const_var(24) },
- { be_const_key_weak(tick, -1), be_const_var(10) },
- { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(25) },
- { be_const_key_weak(autoconf_device_map, -1), be_const_closure(Matter_Device_autoconf_device_map_closure) },
- { be_const_key_weak(remove_fabric, 67), be_const_closure(Matter_Device_remove_fabric_closure) },
- { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(19) },
- { be_const_key_weak(start_commissioning_complete, 80), be_const_closure(Matter_Device_start_commissioning_complete_closure) },
- { be_const_key_weak(adjust_next_ep, 39), be_const_closure(Matter_Device_adjust_next_ep_closure) },
- { be_const_key_weak(commissioning_discriminator, 8), be_const_var(13) },
- { be_const_key_weak(PRODUCT_ID, 44), be_const_int(32768) },
+ { be_const_key_weak(started, -1), be_const_var(0) },
{ be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(Matter_Device_autoconf_sensors_list_closure) },
- { be_const_key_weak(UDP_PORT, 76), be_const_int(5540) },
- { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) },
- { be_const_key_weak(every_250ms, 92), be_const_closure(Matter_Device_every_250ms_closure) },
- { be_const_key_weak(mdns_announce_PASE, 99), be_const_closure(Matter_Device_mdns_announce_PASE_closure) },
- { be_const_key_weak(mdns_remove_PASE, 50), be_const_closure(Matter_Device_mdns_remove_PASE_closure) },
- { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_closure) },
- { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) },
- { be_const_key_weak(received_ack, -1), be_const_closure(Matter_Device_received_ack_closure) },
- { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(Matter_Device_start_basic_commissioning_closure) },
- { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(Matter_Device__trigger_read_sensors_closure) },
- { be_const_key_weak(every_50ms, 69), be_const_closure(Matter_Device_every_50ms_closure) },
- { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) },
- { be_const_key_weak(plugins_config_remotes, 70), be_const_var(4) },
- { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) },
- { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) },
- { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(Matter_Device_get_plugin_remote_info_closure) },
- { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(Matter_Device_event_fabrics_saved_closure) },
- { be_const_key_weak(autoconf_device, -1), be_const_closure(Matter_Device_autoconf_device_closure) },
- { be_const_key_weak(message_handler, -1), be_const_var(7) },
+ { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(Matter_Device_find_plugin_by_endpoint_closure) },
{ be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(Matter_Device_start_root_basic_commissioning_closure) },
- { be_const_key_weak(commissioning_w0, -1), be_const_var(15) },
- { be_const_key_weak(start_commissioning_complete_deferred, 68), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) },
- { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(plugins, -1), be_const_var(1) },
+ { be_const_key_weak(event_fabrics_saved, 88), be_const_closure(Matter_Device_event_fabrics_saved_closure) },
+ { be_const_key_weak(commissioning_w0, 73), be_const_var(15) },
+ { be_const_key_weak(compute_qrcode_content, 57), be_const_closure(Matter_Device_compute_qrcode_content_closure) },
+ { be_const_key_weak(conf_to_log, 56), be_const_static_closure(Matter_Device_conf_to_log_closure) },
+ { be_const_key_weak(start_operational_discovery, -1), be_const_closure(Matter_Device_start_operational_discovery_closure) },
+ { be_const_key_weak(load_param, -1), be_const_closure(Matter_Device_load_param_closure) },
+ { be_const_key_weak(process_attribute_read_solo, -1), be_const_closure(Matter_Device_process_attribute_read_solo_closure) },
+ { be_const_key_weak(msg_received, -1), be_const_closure(Matter_Device_msg_received_closure) },
+ { be_const_key_weak(root_w0, -1), be_const_var(34) },
+ { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) },
+ { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) },
+ { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) },
+ { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Device_every_250ms_closure) },
+ { be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Device_attribute_updated_closure) },
+ { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(Matter_Device_read_sensors_scheduler_closure) },
+ { be_const_key_weak(MtrUpdate, 45), be_const_closure(Matter_Device_MtrUpdate_closure) },
+ { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) },
+ { be_const_key_weak(http_remotes, -1), be_const_var(26) },
+ { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) },
+ { be_const_key_weak(root_salt, -1), be_const_var(33) },
+ { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) },
+ { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) },
+ { be_const_key_weak(update_remotes_info, 32), be_const_closure(Matter_Device_update_remotes_info_closure) },
+ { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) },
+ { be_const_key_weak(profiler, -1), be_const_var(6) },
+ { be_const_key_weak(root_L, 102), be_const_var(35) },
+ { be_const_key_weak(adjust_next_ep, -1), be_const_closure(Matter_Device_adjust_next_ep_closure) },
+ { be_const_key_weak(ui, -1), be_const_var(9) },
+ { be_const_key_weak(stop, 14), be_const_closure(Matter_Device_stop_closure) },
+ { be_const_key_weak(stop_basic_commissioning, 13), be_const_closure(Matter_Device_stop_basic_commissioning_closure) },
+ { be_const_key_weak(plugins_classes, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(41,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) },
@@ -6211,33 +6447,10 @@ be_local_class(Matter_Device,
{ be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) },
{ be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) },
})) ) } )) },
- { be_const_key_weak(process_attribute_read_solo, -1), be_const_closure(Matter_Device_process_attribute_read_solo_closure) },
- { be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Device_attribute_updated_closure) },
- { be_const_key_weak(k2l_num, 57), be_const_static_closure(Matter_Device_k2l_num_closure) },
- { be_const_key_weak(FILENAME, 24), be_nested_str_weak(_matter_device_X2Ejson) },
- { be_const_key_weak(commissioning_open, -1), be_const_var(11) },
- { be_const_key_weak(MtrInfo, -1), be_const_closure(Matter_Device_MtrInfo_closure) },
- { be_const_key_weak(invoke_request, 47), be_const_closure(Matter_Device_invoke_request_closure) },
- { be_const_key_weak(next_ep, 84), be_const_var(31) },
- { be_const_key_weak(clean_remotes, -1), be_const_closure(Matter_Device_clean_remotes_closure) },
- { be_const_key_weak(MtrJoin, -1), be_const_closure(Matter_Device_MtrJoin_closure) },
- { be_const_key_weak(is_root_commissioning_open, 40), be_const_closure(Matter_Device_is_root_commissioning_open_closure) },
- { be_const_key_weak(find_plugin_by_friendly_name, -1), be_const_closure(Matter_Device_find_plugin_by_friendly_name_closure) },
- { be_const_key_weak(disable_bridge_mode, -1), be_const_var(30) },
- { be_const_key_weak(PASE_TIMEOUT, 36), be_const_int(600) },
- { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(Matter_Device_get_plugin_class_arg_closure) },
- { be_const_key_weak(register_http_remote, 31), be_const_closure(Matter_Device_register_http_remote_closure) },
- { be_const_key_weak(stop, 29), be_const_closure(Matter_Device_stop_closure) },
- { be_const_key_weak(mdns_announce_op_discovery, 27), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) },
- { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) },
- { be_const_key_weak(hostname_eth, 16), be_const_var(21) },
- { be_const_key_weak(commissioning_salt, 107), be_const_var(14) },
- { be_const_key_weak(save_before_restart, 12), be_const_closure(Matter_Device_save_before_restart_closure) },
- { be_const_key_weak(root_w0, -1), be_const_var(34) },
- { be_const_key_weak(k2l, 7), be_const_static_closure(Matter_Device_k2l_closure) },
- { be_const_key_weak(commissioning_iterations, 3), be_const_var(12) },
- { be_const_key_weak(root_passcode, -1), be_const_var(28) },
- { be_const_key_weak(start, -1), be_const_closure(Matter_Device_start_closure) },
+ { be_const_key_weak(tick, 9), be_const_var(10) },
+ { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(17) },
+ { be_const_key_weak(msg_send, 7), be_const_closure(Matter_Device_msg_send_closure) },
+ { be_const_key_weak(every_50ms, -1), be_const_closure(Matter_Device_every_50ms_closure) },
})),
be_str_weak(Matter_Device)
);
diff --git a/lib/libesp32/berry_tasmota/include/be_ctypes.h b/lib/libesp32/berry_tasmota/include/be_ctypes.h
index abaffa8c3..da97971bd 100644
--- a/lib/libesp32/berry_tasmota/include/be_ctypes.h
+++ b/lib/libesp32/berry_tasmota/include/be_ctypes.h
@@ -8,14 +8,17 @@
enum {
ctypes_i32 = 14,
+ ctypes_i24 = 13,
ctypes_i16 = 12,
ctypes_i8 = 11,
ctypes_u32 = 4,
+ ctypes_u24 = 3,
ctypes_u16 = 2,
ctypes_u8 = 1,
// big endian
ctypes_be_i32 = -14,
+ ctypes_be_i24 = -13,
ctypes_be_i16 = -12,
ctypes_be_i8 = -11,
ctypes_be_u32 = -4,
diff --git a/lib/libesp32/berry_tasmota/solidify_all.be b/lib/libesp32/berry_tasmota/solidify_all.be
index 8961f50af..1a5ffe678 100755
--- a/lib/libesp32/berry_tasmota/solidify_all.be
+++ b/lib/libesp32/berry_tasmota/solidify_all.be
@@ -12,7 +12,7 @@ import sys
sys.path().push('src/embedded') # allow to import from src/embedded
# globals that need to exist to make compilation succeed
-var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,I2C_Driver,"
+var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,I2C_Driver,tcpserver,"
"lv_clock,lv_clock_icon,lv_signal_arcs,lv_signal_bars,lv_wifi_arcs_icon,lv_wifi_arcs,"
"lv_wifi_bars_icon,lv_wifi_bars,"
"_lvgl,"
diff --git a/lib/libesp32/berry_tasmota/src/be_MI32_lib.c b/lib/libesp32/berry_tasmota/src/be_MI32_lib.c
index 22c0a0bc6..5078de941 100644
--- a/lib/libesp32/berry_tasmota/src/be_MI32_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_MI32_lib.c
@@ -46,6 +46,11 @@ module MI32 (scope: global) {
extern int be_BLE_init(bvm *vm);
+extern int be_BLE_info(bvm *vm);
+
+extern void be_BLE_loop(void);
+BE_FUNC_CTYPE_DECLARE(be_BLE_loop, "", "");
+
extern void be_BLE_reg_conn_cb(void* function, uint8_t *buffer);
BE_FUNC_CTYPE_DECLARE(be_BLE_reg_conn_cb, "", "cc");
@@ -61,8 +66,8 @@ BE_FUNC_CTYPE_DECLARE(be_BLE_set_MAC, "", "@(bytes)~[i]");
extern void be_BLE_set_characteristic(struct bvm *vm, const char *Chr);
BE_FUNC_CTYPE_DECLARE(be_BLE_set_characteristic, "", "@s");
-extern void be_BLE_run(struct bvm *vm, uint8_t operation, bbool response);
-BE_FUNC_CTYPE_DECLARE(be_BLE_run, "", "@i[b]");
+extern void be_BLE_run(struct bvm *vm, uint8_t operation, bbool response, int32_t arg1);
+BE_FUNC_CTYPE_DECLARE(be_BLE_run, "", "@i[bi]");
extern void be_BLE_set_service(struct bvm *vm, const char *Svc, bbool discoverAttributes);
BE_FUNC_CTYPE_DECLARE(be_BLE_set_service, "", "@s[b]");
@@ -79,6 +84,8 @@ BE_FUNC_CTYPE_DECLARE(be_BLE_adv_block, "", "@(bytes)~[i]");
/* @const_object_info_begin
module BLE (scope: global) {
init, func(be_BLE_init)
+ loop, ctype_func(be_BLE_loop)
+ info, func(be_BLE_info)
conn_cb, ctype_func(be_BLE_reg_conn_cb)
set_svc, ctype_func(be_BLE_set_service)
run, ctype_func(be_BLE_run)
diff --git a/lib/libesp32/berry_tasmota/src/be_animate_lib.c b/lib/libesp32/berry_tasmota/src/be_animate_lib.c
deleted file mode 100644
index 77a88bbc8..000000000
--- a/lib/libesp32/berry_tasmota/src/be_animate_lib.c
+++ /dev/null
@@ -1,7 +0,0 @@
-/********************************************************************
- * Berry module `animate`
- *
- * To use: `import animate`
- *
- *******************************************************************/
-#include "solidify/solidified_animate_module.h"
diff --git a/lib/libesp32/berry_tasmota/src/be_ctypes.c b/lib/libesp32/berry_tasmota/src/be_ctypes.c
index cd7650d41..66b119ed2 100644
--- a/lib/libesp32/berry_tasmota/src/be_ctypes.c
+++ b/lib/libesp32/berry_tasmota/src/be_ctypes.c
@@ -36,14 +36,17 @@ int32_t bin_search_ctypes(const char * needle, const void * table, size_t elt_si
enum {
ctypes_i32 = 14,
+ ctypes_i24 = 13,
ctypes_i16 = 12,
ctypes_i8 = 11,
ctypes_u32 = 4,
+ ctypes_u24 = 3,
ctypes_u16 = 2,
ctypes_u8 = 1,
// big endian
ctypes_be_i32 = -14,
+ ctypes_be_i24 = -13,
ctypes_be_i16 = -12,
ctypes_be_i8 = -11,
ctypes_be_u32 = -4,
@@ -255,11 +258,16 @@ int be_ctypes_member(bvm *vm) {
if (member->mapping > 0 && definitions->instance_mapping) {
const char * mapping_name = definitions->instance_mapping[member->mapping - 1];
if (mapping_name) {
- be_getglobal(vm, mapping_name); // stack: class
- be_pushvalue(vm, -2); // stack: class, value
- be_pushint(vm, -1); // stack; class, value, -1
- be_call(vm, 2); // call constructor with 2 parameters
- be_pop(vm, 2); // leave new instance on top of stack
+ int32_t found = be_find_global_or_module_member(vm, mapping_name);
+ if (found == 1) {
+ // we have found only one element from a module, which is expected
+ be_pushvalue(vm, -2); // stack: class, value
+ be_pushint(vm, -1); // stack; class, value, -1
+ be_call(vm, 2); // call constructor with 2 parameters
+ be_pop(vm, 2); // leave new instance on top of stack
+ } else {
+ be_raisef(vm, "internal_error", "mapping for '%s' not found", mapping_name);
+ }
}
}
be_return(vm);
diff --git a/lib/libesp32/berry_tasmota/src/be_gpio_lib.c b/lib/libesp32/berry_tasmota/src/be_gpio_lib.c
index e83347539..1742e2baf 100644
--- a/lib/libesp32/berry_tasmota/src/be_gpio_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_gpio_lib.c
@@ -22,15 +22,22 @@ extern int gp_counter_add(bvm *vm);
extern int gp_pin_used(bvm *vm);
extern int gp_pin(bvm *vm);
+extern int gp_get_pin(int32_t pin); BE_FUNC_CTYPE_DECLARE(gp_get_pin, "i", "i");
+extern int gp_get_pin_index(int32_t pin); BE_FUNC_CTYPE_DECLARE(gp_get_pin_index, "i", "i");
+
// esp_err_tledc_set_duty_and_update(ledc_mode_tspeed_mode, ledc_channel_tchannel, uint32_t duty, uint32_t hpoint)
extern void gp_set_duty(int32_t pin, int32_t duty, int32_t hpoint); BE_FUNC_CTYPE_DECLARE(gp_set_duty, "", "ii[i]");
+extern int gp_get_duty(int32_t pin); BE_FUNC_CTYPE_DECLARE(gp_get_duty, "i", "i");
+extern int gp_get_duty_resolution(int32_t pin); BE_FUNC_CTYPE_DECLARE(gp_get_duty_resolution, "i", "i");
/* @const_object_info_begin
module gpio (scope: global) {
member, func(gp_member)
pin_mode, func(gp_pin_mode)
+ get_pin_type, ctype_func(gp_get_pin)
+ get_pin_type_index, ctype_func(gp_get_pin_index)
digital_write, func(gp_digital_write)
digital_read, func(gp_digital_read)
dac_voltage, func(gp_dac_voltage)
@@ -42,6 +49,8 @@ module gpio (scope: global) {
pin, func(gp_pin)
set_pwm, ctype_func(gp_set_duty)
+ read_pwm, ctype_func(gp_get_duty)
+ read_pwm_resolution, ctype_func(gp_get_duty_resolution)
}
@const_object_info_end */
#include "be_fixed_gpio.h"
diff --git a/lib/libesp32/berry_tasmota/src/be_leds_animator_class.c b/lib/libesp32/berry_tasmota/src/be_leds_animator_class.c
deleted file mode 100644
index 3bf10367a..000000000
--- a/lib/libesp32/berry_tasmota/src/be_leds_animator_class.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/********************************************************************
- * Berry class `Leds_animator`
- *
- *******************************************************************/
-#ifdef USE_WS2812
-
-#include "solidify/solidified_leds_0_animator.h"
-
-#endif // USE_WS2812
diff --git a/lib/libesp32/berry_tasmota/src/be_leds_pulse_class.c b/lib/libesp32/berry_tasmota/src/be_leds_pulse_class.c
deleted file mode 100644
index 3a2753b56..000000000
--- a/lib/libesp32/berry_tasmota/src/be_leds_pulse_class.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/********************************************************************
- * Berry class `Leds_pulse`
- *
- *******************************************************************/
-#ifdef USE_WS2812
-
-#include "solidify/solidified_leds_1_animate_effects.h"
-
-#endif // USE_WS2812
diff --git a/lib/libesp32/berry_tasmota/src/be_lv_haspmota.c b/lib/libesp32/berry_tasmota/src/be_lv_haspmota.c
index bf20a03e5..10033d3e2 100644
--- a/lib/libesp32/berry_tasmota/src/be_lv_haspmota.c
+++ b/lib/libesp32/berry_tasmota/src/be_lv_haspmota.c
@@ -9,8 +9,8 @@
extern const bclass be_class_lv_anim;
extern const bclass be_class_lv_arc;
extern const bclass be_class_lv_bar;
-extern const bclass be_class_lv_btn;
-extern const bclass be_class_lv_btnmatrix;
+extern const bclass be_class_lv_button;
+extern const bclass be_class_lv_buttonmatrix;
extern const bclass be_class_lv_canvas;
extern const bclass be_class_lv_chart;
extern const bclass be_class_lv_checkbox;
@@ -20,8 +20,8 @@ extern const bclass be_class_lv_disp;
extern const bclass be_class_lv_dropdown;
extern const bclass be_class_lv_font;
extern const bclass be_class_lv_group;
-extern const bclass be_class_lv_img;
-extern const bclass be_class_lv_imgbtn;
+extern const bclass be_class_lv_image;
+extern const bclass be_class_lv_imagebutton;
extern const bclass be_class_lv_indev;
extern const bclass be_class_lv_label;
extern const bclass be_class_lv_led;
@@ -40,6 +40,7 @@ extern const bclass be_class_lv_textarea;
extern const bclass be_class_lv_theme;
extern const bclass be_class_lv_timer;
extern const bclass be_class_lv_qrcode;
+extern const bclass be_class_lv_chart;
extern const bclass be_class_lvh_page;
@@ -289,7 +290,7 @@ be_local_closure(lvh_page_show, /* name */
/* K14 */ be_nested_str_weak(show_anim),
/* K15 */ be_nested_str_weak(find),
/* K16 */ be_nested_str_weak(SCR_LOAD_ANIM_NONE),
- /* K17 */ be_nested_str_weak(scr_load_anim),
+ /* K17 */ be_nested_str_weak(screen_load_anim),
}),
be_str_weak(show),
&be_const_str_solidified,
@@ -838,7 +839,7 @@ be_local_closure(lvh_obj_event_cb, /* name */
( &(const bvalue[22]) { /* constants */
/* K0 */ be_nested_str_weak(_page),
/* K1 */ be_nested_str_weak(_oh),
- /* K2 */ be_nested_str_weak(code),
+ /* K2 */ be_nested_str_weak(get_code),
/* K3 */ be_nested_str_weak(action),
/* K4 */ be_nested_str_weak(),
/* K5 */ be_nested_str_weak(lv),
@@ -864,32 +865,32 @@ be_local_closure(lvh_obj_event_cb, /* name */
( &(const binstruction[72]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x88080501, // 0001 GETMBR R2 R2 K1
- 0x880C0302, // 0002 GETMBR R3 R1 K2
- 0x88100103, // 0003 GETMBR R4 R0 K3
- 0x20100904, // 0004 NE R4 R4 K4
- 0x78120008, // 0005 JMPF R4 #000F
- 0xB8120A00, // 0006 GETNGBL R4 K5
- 0x88100906, // 0007 GETMBR R4 R4 K6
- 0x1C100604, // 0008 EQ R4 R3 R4
- 0x78120004, // 0009 JMPF R4 #000F
- 0xB8120E00, // 000A GETNGBL R4 K7
- 0x8C100908, // 000B GETMET R4 R4 K8
- 0x58180009, // 000C LDCONST R6 K9
- 0x841C0000, // 000D CLOSURE R7 P0
- 0x7C100600, // 000E CALL R4 3
- 0x8810010A, // 000F GETMBR R4 R0 K10
- 0x8C10090B, // 0010 GETMET R4 R4 K11
- 0x5C180600, // 0011 MOVE R6 R3
- 0x7C100400, // 0012 CALL R4 2
- 0x4C140000, // 0013 LDNIL R5
- 0x20140805, // 0014 NE R5 R4 R5
- 0x7816002F, // 0015 JMPF R5 #0046
- 0xA4161800, // 0016 IMPORT R5 K12
- 0x58180004, // 0017 LDCONST R6 K4
- 0x881C0302, // 0018 GETMBR R7 R1 K2
- 0xB8220A00, // 0019 GETNGBL R8 K5
- 0x8820110D, // 001A GETMBR R8 R8 K13
- 0x1C1C0E08, // 001B EQ R7 R7 R8
+ 0x8C0C0302, // 0002 GETMET R3 R1 K2
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x88100103, // 0004 GETMBR R4 R0 K3
+ 0x20100904, // 0005 NE R4 R4 K4
+ 0x78120008, // 0006 JMPF R4 #0010
+ 0xB8120A00, // 0007 GETNGBL R4 K5
+ 0x88100906, // 0008 GETMBR R4 R4 K6
+ 0x1C100604, // 0009 EQ R4 R3 R4
+ 0x78120004, // 000A JMPF R4 #0010
+ 0xB8120E00, // 000B GETNGBL R4 K7
+ 0x8C100908, // 000C GETMET R4 R4 K8
+ 0x58180009, // 000D LDCONST R6 K9
+ 0x841C0000, // 000E CLOSURE R7 P0
+ 0x7C100600, // 000F CALL R4 3
+ 0x8810010A, // 0010 GETMBR R4 R0 K10
+ 0x8C10090B, // 0011 GETMET R4 R4 K11
+ 0x5C180600, // 0012 MOVE R6 R3
+ 0x7C100400, // 0013 CALL R4 2
+ 0x4C140000, // 0014 LDNIL R5
+ 0x20140805, // 0015 NE R5 R4 R5
+ 0x7816002E, // 0016 JMPF R5 #0046
+ 0xA4161800, // 0017 IMPORT R5 K12
+ 0x58180004, // 0018 LDCONST R6 K4
+ 0xB81E0A00, // 0019 GETNGBL R7 K5
+ 0x881C0F0D, // 001A GETMBR R7 R7 K13
+ 0x1C1C0607, // 001B EQ R7 R3 R7
0x781E001A, // 001C JMPF R7 #0038
0xA8020015, // 001D EXBLK 0 #0034
0x881C010E, // 001E GETMBR R7 R0 K14
@@ -1902,7 +1903,7 @@ be_local_closure(lvh_obj_setmember, /* name */
}),
be_str_weak(setmember),
&be_const_str_solidified,
- ( &(const binstruction[134]) { /* code */
+ ( &(const binstruction[159]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xA4120200, // 0001 IMPORT R4 K1
0x40160503, // 0002 CONNECT R5 K2 K3
@@ -2031,12 +2032,37 @@ be_local_closure(lvh_obj_setmember, /* name */
0x60240001, // 007D GETGBL R9 G1
0x002A2808, // 007E ADD R10 K20 R8
0x7C240200, // 007F CALL R9 1
- 0x70020003, // 0080 JMP #0085
- 0x60200001, // 0081 GETGBL R8 G1
- 0x58240015, // 0082 LDCONST R9 K21
- 0x5C280200, // 0083 MOVE R10 R1
- 0x7C200400, // 0084 CALL R8 2
- 0x80000000, // 0085 RET 0
+ 0x7002001C, // 0080 JMP #009E
+ 0x8C20090B, // 0081 GETMET R8 R4 K11
+ 0x8828010F, // 0082 GETMBR R10 R0 K15
+ 0x002E0801, // 0083 ADD R11 K4 R1
+ 0x7C200600, // 0084 CALL R8 3
+ 0x5C1C1000, // 0085 MOVE R7 R8
+ 0x60200004, // 0086 GETGBL R8 G4
+ 0x5C240E00, // 0087 MOVE R9 R7
+ 0x7C200200, // 0088 CALL R8 1
+ 0x1C20110C, // 0089 EQ R8 R8 K12
+ 0x7822000E, // 008A JMPF R8 #009A
+ 0xA8020005, // 008B EXBLK 0 #0092
+ 0x5C200E00, // 008C MOVE R8 R7
+ 0x8824010F, // 008D GETMBR R9 R0 K15
+ 0x5C280400, // 008E MOVE R10 R2
+ 0x7C200400, // 008F CALL R8 2
+ 0xA8040001, // 0090 EXBLK 1 1
+ 0x70020006, // 0091 JMP #0099
+ 0xAC200002, // 0092 CATCH R8 0 2
+ 0x70020003, // 0093 JMP #0098
+ 0x00281313, // 0094 ADD R10 R9 K19
+ 0x00281401, // 0095 ADD R10 R10 R1
+ 0xB004100A, // 0096 RAISE 1 R8 R10
+ 0x70020000, // 0097 JMP #0099
+ 0xB0080000, // 0098 RAISE 2 R0 R0
+ 0x70020003, // 0099 JMP #009E
+ 0x60200001, // 009A GETGBL R8 G1
+ 0x58240015, // 009B LDCONST R9 K21
+ 0x5C280200, // 009C MOVE R10 R1
+ 0x7C200400, // 009D CALL R8 2
+ 0x80000000, // 009E RET 0
})
)
);
@@ -2277,7 +2303,7 @@ be_local_closure(lvh_obj_member, /* name */
}),
be_str_weak(member),
&be_const_str_solidified,
- ( &(const binstruction[110]) { /* code */
+ ( &(const binstruction[124]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0xA40E0200, // 0001 IMPORT R3 K1
0x40120503, // 0002 CONNECT R4 K2 K3
@@ -2382,12 +2408,26 @@ be_local_closure(lvh_obj_member, /* name */
0x8824010F, // 0065 GETMBR R9 R0 K15
0x7C200200, // 0066 CALL R8 1
0x80041000, // 0067 RET 1 R8
- 0x601C0008, // 0068 GETGBL R7 G8
- 0x5C200200, // 0069 MOVE R8 R1
- 0x7C1C0200, // 006A CALL R7 1
- 0x001E2207, // 006B ADD R7 K17 R7
- 0xB0062407, // 006C RAISE 1 K18 R7
- 0x80000000, // 006D RET 0
+ 0x8C1C070B, // 0068 GETMET R7 R3 K11
+ 0x8824010F, // 0069 GETMBR R9 R0 K15
+ 0x002A0A01, // 006A ADD R10 K5 R1
+ 0x7C1C0600, // 006B CALL R7 3
+ 0x5C180E00, // 006C MOVE R6 R7
+ 0x601C0004, // 006D GETGBL R7 G4
+ 0x5C200C00, // 006E MOVE R8 R6
+ 0x7C1C0200, // 006F CALL R7 1
+ 0x1C1C0F0C, // 0070 EQ R7 R7 K12
+ 0x781E0003, // 0071 JMPF R7 #0076
+ 0x5C1C0C00, // 0072 MOVE R7 R6
+ 0x8820010F, // 0073 GETMBR R8 R0 K15
+ 0x7C1C0200, // 0074 CALL R7 1
+ 0x80040E00, // 0075 RET 1 R7
+ 0x601C0008, // 0076 GETGBL R7 G8
+ 0x5C200200, // 0077 MOVE R8 R1
+ 0x7C1C0200, // 0078 CALL R7 1
+ 0x001E2207, // 0079 ADD R7 K17 R7
+ 0xB0062407, // 007A RAISE 1 K18 R7
+ 0x80000000, // 007B RET 0
})
)
);
@@ -4107,14 +4147,13 @@ be_local_class(lvh_obj,
{ be_const_key_weak(set_text_rule, -1), be_const_closure(lvh_obj_set_text_rule_closure) },
{ be_const_key_weak(get_enabled, -1), be_const_closure(lvh_obj_get_enabled_closure) },
{ be_const_key_weak(_attr_ignore, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
+ be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_nested_str_weak(tostring),
be_nested_str_weak(obj),
be_nested_str_weak(page),
be_nested_str_weak(comment),
be_nested_str_weak(parentid),
- be_nested_str_weak(auto_size),
be_nested_str_weak(prev),
be_nested_str_weak(next),
be_nested_str_weak(back),
@@ -4140,34 +4179,37 @@ be_local_class(lvh_obj,
{ be_const_key_weak(get_action, -1), be_const_closure(lvh_obj_get_action_closure) },
{ be_const_key_weak(get_obj, 84), be_const_closure(lvh_obj_get_obj_closure) },
{ be_const_key_weak(_attr_map, 50), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(26,
+ be_const_map( * be_nested_map(29,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(rotation, -1), be_nested_str_weak(rotation) },
- { be_const_key_weak(bg_opa, -1), be_nested_str_weak(style_bg_opa) },
- { be_const_key_weak(end_angle, 3), be_nested_str_weak(bg_end_angle) },
- { be_const_key_weak(w, 18), be_nested_str_weak(width) },
- { be_const_key_weak(src, 6), be_nested_str_weak(src) },
- { be_const_key_weak(x, -1), be_nested_str_weak(x) },
- { be_const_key_weak(border_color, -1), be_nested_str_weak(style_border_color) },
- { be_const_key_weak(bg_grad_color, 0), be_nested_str_weak(style_bg_grad_color) },
- { be_const_key_weak(pad_all, -1), be_nested_str_weak(style_pad_all) },
- { be_const_key_weak(bg_color, 20), be_nested_str_weak(style_bg_color) },
- { be_const_key_weak(y, 8), be_nested_str_weak(y) },
- { be_const_key_weak(line_color, -1), be_nested_str_weak(style_line_color) },
- { be_const_key_weak(image_recolor_opa, 10), be_nested_str_weak(style_img_recolor_opa) },
- { be_const_key_weak(start_angle, 5), be_nested_str_weak(bg_start_angle) },
- { be_const_key_weak(end_angle1, 11), be_nested_str_weak(end_angle) },
+ { be_const_key_weak(bg_grad_color, -1), be_nested_str_weak(style_bg_grad_color) },
+ { be_const_key_weak(pad_bottom, -1), be_nested_str_weak(style_pad_bottom) },
+ { be_const_key_weak(pad_top, -1), be_nested_str_weak(style_pad_top) },
+ { be_const_key_weak(y, 10), be_nested_str_weak(y) },
{ be_const_key_weak(border_side, -1), be_nested_str_weak(style_border_side) },
- { be_const_key_weak(pad_bottom, 9), be_nested_str_weak(style_pad_bottom) },
- { be_const_key_weak(radius, 4), be_nested_str_weak(style_radius) },
- { be_const_key_weak(pad_left, -1), be_nested_str_weak(style_pad_left) },
- { be_const_key_weak(image_recolor, -1), be_nested_str_weak(style_img_recolor) },
- { be_const_key_weak(border_width, -1), be_nested_str_weak(style_border_width) },
- { be_const_key_weak(pad_right, -1), be_nested_str_weak(style_pad_right) },
+ { be_const_key_weak(w, -1), be_nested_str_weak(width) },
{ be_const_key_weak(start_angle1, -1), be_nested_str_weak(start_angle) },
+ { be_const_key_weak(width, 5), be_nested_str_weak(style_width) },
+ { be_const_key_weak(start_angle, 23), be_nested_str_weak(bg_start_angle) },
{ be_const_key_weak(h, -1), be_nested_str_weak(height) },
- { be_const_key_weak(pad_top, 16), be_nested_str_weak(style_pad_top) },
- { be_const_key_weak(bg_grad_dir, 14), be_nested_str_weak(style_bg_grad_dir) },
+ { be_const_key_weak(rotation, -1), be_nested_str_weak(rotation) },
+ { be_const_key_weak(src, 27), be_nested_str_weak(src) },
+ { be_const_key_weak(line_color, -1), be_nested_str_weak(style_line_color) },
+ { be_const_key_weak(image_recolor_opa, -1), be_nested_str_weak(style_img_recolor_opa) },
+ { be_const_key_weak(end_angle, -1), be_nested_str_weak(bg_end_angle) },
+ { be_const_key_weak(pad_right, 19), be_nested_str_weak(style_pad_right) },
+ { be_const_key_weak(bg_grad_dir, -1), be_nested_str_weak(style_bg_grad_dir) },
+ { be_const_key_weak(pad_all, -1), be_nested_str_weak(style_pad_all) },
+ { be_const_key_weak(bg_color, 13), be_nested_str_weak(style_bg_color) },
+ { be_const_key_weak(image_recolor, -1), be_nested_str_weak(style_img_recolor) },
+ { be_const_key_weak(x, 12), be_nested_str_weak(x) },
+ { be_const_key_weak(line_rounded, -1), be_nested_str_weak(style_line_rounded) },
+ { be_const_key_weak(bg_opa, -1), be_nested_str_weak(style_bg_opa) },
+ { be_const_key_weak(end_angle1, -1), be_nested_str_weak(end_angle) },
+ { be_const_key_weak(border_color, 21), be_nested_str_weak(style_border_color) },
+ { be_const_key_weak(height, -1), be_nested_str_weak(style_height) },
+ { be_const_key_weak(pad_left, 17), be_nested_str_weak(style_pad_left) },
+ { be_const_key_weak(radius, -1), be_nested_str_weak(style_radius) },
+ { be_const_key_weak(border_width, 15), be_nested_str_weak(style_border_width) },
})) ) } )) },
{ be_const_key_weak(register_event_cb, 17), be_const_closure(lvh_obj_register_event_cb_closure) },
{ be_const_key_weak(set_pad_top2, 61), be_const_closure(lvh_obj_set_pad_top2_closure) },
@@ -4183,8 +4225,8 @@ be_local_class(lvh_obj,
be_const_int(327680),
be_const_int(327680),
be_const_int(262144),
+ be_const_int(327680),
be_const_int(393216),
- be_const_int(458752),
be_const_int(65536),
be_const_int(524288),
})) ) } )) },
@@ -4244,11 +4286,11 @@ be_local_class(lvh_obj,
{ be_const_key_weak(_event_map, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(7,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(28, 2), be_nested_str_weak(changed) },
- { be_const_key_int(8, 4), be_nested_str_weak(release) },
{ be_const_key_int(7, -1), be_nested_str_weak(up) },
- { be_const_key_int(3, -1), be_nested_str_weak(lost) },
+ { be_const_key_int(8, 4), be_nested_str_weak(release) },
{ be_const_key_int(1, -1), be_nested_str_weak(down) },
+ { be_const_key_int(3, -1), be_nested_str_weak(lost) },
+ { be_const_key_int(29, 2), be_nested_str_weak(changed) },
{ be_const_key_int(5, -1), be_nested_str_weak(long) },
{ be_const_key_int(6, -1), be_nested_str_weak(hold) },
})) ) } )) },
@@ -4299,7 +4341,7 @@ be_local_class(lvh_btn,
&be_class_lvh_obj,
be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_btn) },
+ { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_button) },
})),
be_str_weak(lvh_btn)
);
@@ -4483,33 +4525,19 @@ extern const bclass be_class_lvh_spinner;
********************************************************************/
be_local_closure(lvh_spinner_set_angle, /* name */
be_nested_proto(
- 4, /* nstack */
+ 2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_anim_end),
- /* K1 */ be_nested_str_weak(start_value),
- /* K2 */ be_nested_str_weak(end_value),
- }),
+ 0, /* has constants */
+ NULL, /* no const */
be_str_weak(set_angle),
&be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x7C080200, // 0002 CALL R2 1
- 0x5C040400, // 0003 MOVE R1 R2
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x900A0201, // 0005 SETMBR R2 K1 R1
- 0x88080100, // 0006 GETMBR R2 R0 K0
- 0x540E0167, // 0007 LDINT R3 360
- 0x000C0203, // 0008 ADD R3 R1 R3
- 0x900A0403, // 0009 SETMBR R2 K2 R3
- 0x80000000, // 000A RET 0
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -4521,7 +4549,7 @@ be_local_closure(lvh_spinner_set_angle, /* name */
********************************************************************/
be_local_closure(lvh_spinner_init, /* name */
be_nested_proto(
- 11, /* nstack */
+ 10, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
@@ -4529,7 +4557,7 @@ be_local_closure(lvh_spinner_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
+ ( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(_page),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(angle),
@@ -4537,18 +4565,12 @@ be_local_closure(lvh_spinner_init, /* name */
/* K4 */ be_nested_str_weak(_lv_obj),
/* K5 */ be_nested_str_weak(lv),
/* K6 */ be_nested_str_weak(spinner),
- /* K7 */ be_nested_str_weak(post_init),
- /* K8 */ be_nested_str_weak(anim_get),
- /* K9 */ be_nested_str_weak(_arc_anim_start_angle),
- /* K10 */ be_nested_str_weak(_arc_anim_end_angle),
- /* K11 */ be_nested_str_weak(_anim_start),
- /* K12 */ be_nested_str_weak(anim_ntv),
- /* K13 */ be_nested_str_weak(_p),
- /* K14 */ be_nested_str_weak(_anim_end),
+ /* K7 */ be_nested_str_weak(set_anim_params),
+ /* K8 */ be_nested_str_weak(post_init),
}),
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[41]) { /* code */
+ ( &(const binstruction[22]) { /* code */
0x90020002, // 0000 SETMBR R0 K0 R2
0x8C100701, // 0001 GETMET R4 R3 K1
0x58180002, // 0002 LDCONST R6 K2
@@ -4561,68 +4583,16 @@ be_local_closure(lvh_spinner_init, /* name */
0xB81A0A00, // 0009 GETNGBL R6 K5
0x8C180D06, // 000A GETMET R6 R6 K6
0x5C200200, // 000B MOVE R8 R1
- 0x5C240A00, // 000C MOVE R9 R5
- 0x5C280800, // 000D MOVE R10 R4
- 0x7C180800, // 000E CALL R6 4
- 0x90020806, // 000F SETMBR R0 K4 R6
- 0x8C180107, // 0010 GETMET R6 R0 K7
- 0x7C180200, // 0011 CALL R6 1
- 0xB81A0A00, // 0012 GETNGBL R6 K5
- 0x8C180D08, // 0013 GETMET R6 R6 K8
- 0x88200104, // 0014 GETMBR R8 R0 K4
- 0x88240104, // 0015 GETMBR R9 R0 K4
- 0x88241309, // 0016 GETMBR R9 R9 K9
- 0x7C180600, // 0017 CALL R6 3
- 0xB81E0A00, // 0018 GETNGBL R7 K5
- 0x8C1C0F08, // 0019 GETMET R7 R7 K8
- 0x88240104, // 001A GETMBR R9 R0 K4
- 0x88280104, // 001B GETMBR R10 R0 K4
- 0x8828150A, // 001C GETMBR R10 R10 K10
- 0x7C1C0600, // 001D CALL R7 3
- 0xB8220A00, // 001E GETNGBL R8 K5
- 0x8C20110C, // 001F GETMET R8 R8 K12
- 0x88280D0D, // 0020 GETMBR R10 R6 K13
- 0x7C200400, // 0021 CALL R8 2
- 0x90021608, // 0022 SETMBR R0 K11 R8
- 0xB8220A00, // 0023 GETNGBL R8 K5
- 0x8C20110C, // 0024 GETMET R8 R8 K12
- 0x88280F0D, // 0025 GETMBR R10 R7 K13
- 0x7C200400, // 0026 CALL R8 2
- 0x90021C08, // 0027 SETMBR R0 K14 R8
- 0x80000000, // 0028 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_angle
-********************************************************************/
-be_local_closure(lvh_spinner_get_angle, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_anim_end),
- /* K1 */ be_nested_str_weak(start_value),
- /* K2 */ be_nested_str_weak(_anim_start),
- }),
- be_str_weak(get_angle),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x88080102, // 0002 GETMBR R2 R0 K2
- 0x88080501, // 0003 GETMBR R2 R2 K1
- 0x04040202, // 0004 SUB R1 R1 R2
- 0x80040200, // 0005 RET 1 R1
+ 0x7C180400, // 000C CALL R6 2
+ 0x90020806, // 000D SETMBR R0 K4 R6
+ 0x88180104, // 000E GETMBR R6 R0 K4
+ 0x8C180D07, // 000F GETMET R6 R6 K7
+ 0x5C200A00, // 0010 MOVE R8 R5
+ 0x5C240800, // 0011 MOVE R9 R4
+ 0x7C180600, // 0012 CALL R6 3
+ 0x8C180108, // 0013 GETMET R6 R0 K8
+ 0x7C180200, // 0014 CALL R6 1
+ 0x80000000, // 0015 RET 0
})
)
);
@@ -4634,24 +4604,43 @@ be_local_closure(lvh_spinner_get_angle, /* name */
********************************************************************/
be_local_closure(lvh_spinner_get_speed, /* name */
be_nested_proto(
- 2, /* nstack */
+ 1, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_anim_start),
- /* K1 */ be_nested_str_weak(time),
- }),
+ 0, /* has constants */
+ NULL, /* no const */
be_str_weak(get_speed),
&be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_angle
+********************************************************************/
+be_local_closure(lvh_spinner_get_angle, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_angle),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -4663,31 +4652,19 @@ be_local_closure(lvh_spinner_get_speed, /* name */
********************************************************************/
be_local_closure(lvh_spinner_set_speed, /* name */
be_nested_proto(
- 4, /* nstack */
+ 2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_anim_start),
- /* K1 */ be_nested_str_weak(time),
- /* K2 */ be_nested_str_weak(_anim_end),
- }),
+ 0, /* has constants */
+ NULL, /* no const */
be_str_weak(set_speed),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x7C080200, // 0002 CALL R2 1
- 0x5C040400, // 0003 MOVE R1 R2
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x900A0201, // 0005 SETMBR R2 K1 R1
- 0x88080102, // 0006 GETMBR R2 R0 K2
- 0x900A0201, // 0007 SETMBR R2 K1 R1
- 0x80000000, // 0008 RET 0
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -4703,13 +4680,13 @@ be_local_class(lvh_spinner,
&be_class_lvh_arc,
be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(set_speed, 1), be_const_closure(lvh_spinner_set_speed_closure) },
- { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_spinner) },
- { be_const_key_weak(get_speed, 6), be_const_closure(lvh_spinner_get_speed_closure) },
+ { be_const_key_weak(set_speed, 4), be_const_closure(lvh_spinner_set_speed_closure) },
+ { be_const_key_weak(_speed, -1), be_const_var(0) },
+ { be_const_key_weak(get_angle, 6), be_const_closure(lvh_spinner_get_angle_closure) },
{ be_const_key_weak(init, 2), be_const_closure(lvh_spinner_init_closure) },
- { be_const_key_weak(_anim_start, -1), be_const_var(0) },
- { be_const_key_weak(_anim_end, -1), be_const_var(1) },
- { be_const_key_weak(get_angle, -1), be_const_closure(lvh_spinner_get_angle_closure) },
+ { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_spinner) },
+ { be_const_key_weak(_angle, -1), be_const_var(1) },
+ { be_const_key_weak(get_speed, -1), be_const_closure(lvh_spinner_get_speed_closure) },
{ be_const_key_weak(set_angle, 0), be_const_closure(lvh_spinner_set_angle_closure) },
})),
be_str_weak(lvh_spinner)
@@ -4747,6 +4724,71 @@ void be_load_lvh_line_class(bvm *vm) {
extern const bclass be_class_lvh_img;
+/********************************************************************
+** Solidified function: get_angle
+********************************************************************/
+be_local_closure(lvh_img_get_angle, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(get_angle),
+ }),
+ be_str_weak(get_angle),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_auto_size
+********************************************************************/
+be_local_closure(lvh_img_set_auto_size, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_inner_align),
+ /* K2 */ be_nested_str_weak(lv),
+ /* K3 */ be_nested_str_weak(IMAGE_ALIGN_STRETCH),
+ }),
+ be_str_weak(set_auto_size),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x78060004, // 0000 JMPF R1 #0006
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0xB8120400, // 0003 GETNGBL R4 K2
+ 0x88100903, // 0004 GETMBR R4 R4 K3
+ 0x7C080400, // 0005 CALL R2 2
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: set_angle
********************************************************************/
@@ -4783,29 +4825,23 @@ be_local_closure(lvh_img_set_angle, /* name */
/********************************************************************
-** Solidified function: get_angle
+** Solidified function: get_auto_size
********************************************************************/
-be_local_closure(lvh_img_get_angle, /* name */
+be_local_closure(lvh_img_get_auto_size, /* name */
be_nested_proto(
- 3, /* nstack */
+ 1, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_angle),
- }),
- be_str_weak(get_angle),
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_auto_size),
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -4819,11 +4855,13 @@ extern const bclass be_class_lvh_obj;
be_local_class(lvh_img,
0,
&be_class_lvh_obj,
- be_nested_map(3,
+ be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(set_angle, -1), be_const_closure(lvh_img_set_angle_closure) },
- { be_const_key_weak(get_angle, 2), be_const_closure(lvh_img_get_angle_closure) },
- { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_img) },
+ { be_const_key_weak(get_angle, -1), be_const_closure(lvh_img_get_angle_closure) },
+ { be_const_key_weak(set_auto_size, -1), be_const_closure(lvh_img_set_auto_size_closure) },
+ { be_const_key_weak(set_angle, 4), be_const_closure(lvh_img_set_angle_closure) },
+ { be_const_key_weak(get_auto_size, -1), be_const_closure(lvh_img_get_auto_size_closure) },
+ { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_image) },
})),
be_str_weak(lvh_img)
);
@@ -5079,7 +5117,7 @@ be_local_class(lvh_btnmatrix,
&be_class_lvh_obj,
be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_btnmatrix) },
+ { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_buttonmatrix) },
})),
be_str_weak(lvh_btnmatrix)
);
@@ -5152,6 +5190,72 @@ void be_load_lvh_bar_class(bvm *vm) {
extern const bclass be_class_lvh_slider;
+/********************************************************************
+** Solidified function: set_max
+********************************************************************/
+be_local_closure(lvh_slider_set_max, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_range),
+ /* K2 */ be_nested_str_weak(get_min),
+ }),
+ be_str_weak(set_max),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x7C100200, // 0003 CALL R4 1
+ 0x60140009, // 0004 GETGBL R5 G9
+ 0x5C180200, // 0005 MOVE R6 R1
+ 0x7C140200, // 0006 CALL R5 1
+ 0x7C080600, // 0007 CALL R2 3
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_min
+********************************************************************/
+be_local_closure(lvh_slider_get_min, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(get_min_value),
+ }),
+ be_str_weak(get_min),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: set_val
********************************************************************/
@@ -5185,6 +5289,72 @@ be_local_closure(lvh_slider_set_val, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: get_max
+********************************************************************/
+be_local_closure(lvh_slider_get_max, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(get_max_value),
+ }),
+ be_str_weak(get_max),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_min
+********************************************************************/
+be_local_closure(lvh_slider_set_min, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_range),
+ /* K2 */ be_nested_str_weak(get_max),
+ }),
+ be_str_weak(set_min),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x60100009, // 0002 GETGBL R4 G9
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x7C100200, // 0004 CALL R4 1
+ 0x8C140102, // 0005 GETMET R5 R0 K2
+ 0x7C140200, // 0006 CALL R5 1
+ 0x7C080600, // 0007 CALL R2 3
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: lvh_slider
********************************************************************/
@@ -5192,10 +5362,14 @@ extern const bclass be_class_lvh_obj;
be_local_class(lvh_slider,
0,
&be_class_lvh_obj,
- be_nested_map(2,
+ be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(set_min, 5), be_const_closure(lvh_slider_set_min_closure) },
+ { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_slider) },
+ { be_const_key_weak(get_min, -1), be_const_closure(lvh_slider_get_min_closure) },
{ be_const_key_weak(set_val, -1), be_const_closure(lvh_slider_set_val_closure) },
- { be_const_key_weak(_lv_class, 0), be_const_class(be_class_lv_slider) },
+ { be_const_key_weak(set_max, 0), be_const_closure(lvh_slider_set_max_closure) },
+ { be_const_key_weak(get_max, -1), be_const_closure(lvh_slider_get_max_closure) },
})),
be_str_weak(lvh_slider)
);
@@ -6034,23 +6208,33 @@ void be_load_lvh_dropdown_class(bvm *vm) {
extern const bclass be_class_lvh_qrcode;
/********************************************************************
-** Solidified function: get_qr_size
+** Solidified function: set_dark_color
********************************************************************/
-be_local_closure(lvh_qrcode_get_qr_size, /* name */
+be_local_closure(lvh_qrcode_set_dark_color, /* name */
be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
+ 7, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(get_qr_size),
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_dark_color),
+ /* K2 */ be_nested_str_weak(parse_color),
+ }),
+ be_str_weak(set_dark_color),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x7C100400, // 0004 CALL R4 2
+ 0x7C080400, // 0005 CALL R2 2
+ 0x80000000, // 0006 RET 0
})
)
);
@@ -6062,131 +6246,26 @@ be_local_closure(lvh_qrcode_get_qr_size, /* name */
********************************************************************/
be_local_closure(lvh_qrcode_set_qr_size, /* name */
be_nested_proto(
- 2, /* nstack */
+ 5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_size),
+ }),
be_str_weak(set_qr_size),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_qr_light_color
-********************************************************************/
-be_local_closure(lvh_qrcode_get_qr_light_color, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(get_qr_light_color),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_qr_dark_color
-********************************************************************/
-be_local_closure(lvh_qrcode_get_qr_dark_color, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(get_qr_dark_color),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(lvh_qrcode_init, /* name */
- be_nested_proto(
- 13, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(_page),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(qr_size),
- /* K3 */ be_nested_str_weak(parse_color),
- /* K4 */ be_nested_str_weak(qr_dark_color),
- /* K5 */ be_nested_str_weak(_X23000000),
- /* K6 */ be_nested_str_weak(qr_light_color),
- /* K7 */ be_nested_str_weak(_X23FFFFFF),
- /* K8 */ be_nested_str_weak(_lv_obj),
- /* K9 */ be_nested_str_weak(lv),
- /* K10 */ be_nested_str_weak(qrcode),
- /* K11 */ be_nested_str_weak(post_init),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x90020002, // 0000 SETMBR R0 K0 R2
- 0x8C100701, // 0001 GETMET R4 R3 K1
- 0x58180002, // 0002 LDCONST R6 K2
- 0x541E0063, // 0003 LDINT R7 100
- 0x7C100600, // 0004 CALL R4 3
- 0x8C140103, // 0005 GETMET R5 R0 K3
- 0x8C1C0701, // 0006 GETMET R7 R3 K1
- 0x58240004, // 0007 LDCONST R9 K4
- 0x58280005, // 0008 LDCONST R10 K5
- 0x7C1C0600, // 0009 CALL R7 3
- 0x7C140400, // 000A CALL R5 2
- 0x8C180103, // 000B GETMET R6 R0 K3
- 0x8C200701, // 000C GETMET R8 R3 K1
- 0x58280006, // 000D LDCONST R10 K6
- 0x582C0007, // 000E LDCONST R11 K7
- 0x7C200600, // 000F CALL R8 3
- 0x7C180400, // 0010 CALL R6 2
- 0xB81E1200, // 0011 GETNGBL R7 K9
- 0x8C1C0F0A, // 0012 GETMET R7 R7 K10
- 0x5C240200, // 0013 MOVE R9 R1
- 0x5C280800, // 0014 MOVE R10 R4
- 0x5C2C0A00, // 0015 MOVE R11 R5
- 0x5C300C00, // 0016 MOVE R12 R6
- 0x7C1C0A00, // 0017 CALL R7 5
- 0x90021007, // 0018 SETMBR R0 K8 R7
- 0x8C1C010B, // 0019 GETMET R7 R0 K11
- 0x7C1C0200, // 001A CALL R7 1
- 0x80000000, // 001B RET 0
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80000000, // 0004 RET 0
})
)
);
@@ -6198,19 +6277,29 @@ be_local_closure(lvh_qrcode_init, /* name */
********************************************************************/
be_local_closure(lvh_qrcode_set_qr_light_color, /* name */
be_nested_proto(
- 2, /* nstack */
+ 7, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_light_color),
+ /* K2 */ be_nested_str_weak(parse_color),
+ }),
be_str_weak(set_qr_light_color),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x7C100400, // 0004 CALL R4 2
+ 0x7C080400, // 0005 CALL R2 2
+ 0x80000000, // 0006 RET 0
})
)
);
@@ -6218,47 +6307,33 @@ be_local_closure(lvh_qrcode_set_qr_light_color, /* name */
/********************************************************************
-** Solidified function: get_qr_text
+** Solidified function: set_light_color
********************************************************************/
-be_local_closure(lvh_qrcode_get_qr_text, /* name */
+be_local_closure(lvh_qrcode_set_light_color, /* name */
be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(get_qr_text),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_qr_dark_color
-********************************************************************/
-be_local_closure(lvh_qrcode_set_qr_dark_color, /* name */
- be_nested_proto(
- 2, /* nstack */
+ 7, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(set_qr_dark_color),
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_light_color),
+ /* K2 */ be_nested_str_weak(parse_color),
+ }),
+ be_str_weak(set_light_color),
&be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x7C100400, // 0004 CALL R4 2
+ 0x7C080400, // 0005 CALL R2 2
+ 0x80000000, // 0006 RET 0
})
)
);
@@ -6303,6 +6378,239 @@ be_local_closure(lvh_qrcode_set_qr_text, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: get_dark_color
+********************************************************************/
+be_local_closure(lvh_qrcode_get_dark_color, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_dark_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_size
+********************************************************************/
+be_local_closure(lvh_qrcode_set_size, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_size),
+ }),
+ be_str_weak(set_size),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_size
+********************************************************************/
+be_local_closure(lvh_qrcode_get_size, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_size),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_light_color
+********************************************************************/
+be_local_closure(lvh_qrcode_get_light_color, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_light_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_qr_text
+********************************************************************/
+be_local_closure(lvh_qrcode_get_qr_text, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_qr_text),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_qr_dark_color
+********************************************************************/
+be_local_closure(lvh_qrcode_get_qr_dark_color, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_qr_dark_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_qr_light_color
+********************************************************************/
+be_local_closure(lvh_qrcode_get_qr_light_color, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_qr_light_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_qr_dark_color
+********************************************************************/
+be_local_closure(lvh_qrcode_set_qr_dark_color, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_dark_color),
+ /* K2 */ be_nested_str_weak(parse_color),
+ }),
+ be_str_weak(set_qr_dark_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x7C100400, // 0004 CALL R4 2
+ 0x7C080400, // 0005 CALL R2 2
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_qr_size
+********************************************************************/
+be_local_closure(lvh_qrcode_get_qr_size, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(get_qr_size),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: lvh_qrcode
********************************************************************/
@@ -6310,18 +6618,23 @@ extern const bclass be_class_lvh_obj;
be_local_class(lvh_qrcode,
0,
&be_class_lvh_obj,
- be_nested_map(10,
+ be_nested_map(15,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(set_qr_text, -1), be_const_closure(lvh_qrcode_set_qr_text_closure) },
+ { be_const_key_weak(set_dark_color, 6), be_const_closure(lvh_qrcode_set_dark_color_closure) },
{ be_const_key_weak(set_qr_size, -1), be_const_closure(lvh_qrcode_set_qr_size_closure) },
- { be_const_key_weak(get_qr_light_color, 6), be_const_closure(lvh_qrcode_get_qr_light_color_closure) },
- { be_const_key_weak(set_qr_dark_color, -1), be_const_closure(lvh_qrcode_set_qr_dark_color_closure) },
+ { be_const_key_weak(set_qr_light_color, 10), be_const_closure(lvh_qrcode_set_qr_light_color_closure) },
+ { be_const_key_weak(set_light_color, 9), be_const_closure(lvh_qrcode_set_light_color_closure) },
+ { be_const_key_weak(get_qr_size, 11), be_const_closure(lvh_qrcode_get_qr_size_closure) },
+ { be_const_key_weak(get_dark_color, -1), be_const_closure(lvh_qrcode_get_dark_color_closure) },
+ { be_const_key_weak(set_size, -1), be_const_closure(lvh_qrcode_set_size_closure) },
+ { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_qrcode) },
+ { be_const_key_weak(get_size, -1), be_const_closure(lvh_qrcode_get_size_closure) },
+ { be_const_key_weak(get_qr_dark_color, 5), be_const_closure(lvh_qrcode_get_qr_dark_color_closure) },
{ be_const_key_weak(get_qr_text, -1), be_const_closure(lvh_qrcode_get_qr_text_closure) },
- { be_const_key_weak(init, -1), be_const_closure(lvh_qrcode_init_closure) },
- { be_const_key_weak(set_qr_light_color, -1), be_const_closure(lvh_qrcode_set_qr_light_color_closure) },
- { be_const_key_weak(_lv_class, 4), be_const_class(be_class_lv_qrcode) },
- { be_const_key_weak(get_qr_dark_color, 3), be_const_closure(lvh_qrcode_get_qr_dark_color_closure) },
- { be_const_key_weak(get_qr_size, 0), be_const_closure(lvh_qrcode_get_qr_size_closure) },
+ { be_const_key_weak(get_light_color, -1), be_const_closure(lvh_qrcode_get_light_color_closure) },
+ { be_const_key_weak(get_qr_light_color, -1), be_const_closure(lvh_qrcode_get_qr_light_color_closure) },
+ { be_const_key_weak(set_qr_dark_color, -1), be_const_closure(lvh_qrcode_set_qr_dark_color_closure) },
+ { be_const_key_weak(set_qr_text, 4), be_const_closure(lvh_qrcode_set_qr_text_closure) },
})),
be_str_weak(lvh_qrcode)
);
@@ -6333,15 +6646,591 @@ void be_load_lvh_qrcode_class(bvm *vm) {
be_pop(vm, 1);
}
+extern const bclass be_class_lvh_chart;
+
+/********************************************************************
+** Solidified function: add_point
+********************************************************************/
+be_local_closure(lvh_chart_add_point, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_next_value),
+ /* K2 */ be_nested_str_weak(ser1),
+ }),
+ be_str_weak(add_point),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x7C080600, // 0004 CALL R2 3
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: post_init
+********************************************************************/
+be_local_closure(lvh_chart_post_init, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[17]) { /* constants */
+ /* K0 */ be_nested_str_weak(y_min),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(y_max),
+ /* K3 */ be_nested_str_weak(h_div),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_nested_str_weak(v_div),
+ /* K6 */ be_nested_str_weak(_lv_obj),
+ /* K7 */ be_nested_str_weak(set_update_mode),
+ /* K8 */ be_nested_str_weak(lv),
+ /* K9 */ be_nested_str_weak(CHART_UPDATE_MODE_SHIFT),
+ /* K10 */ be_nested_str_weak(ser1),
+ /* K11 */ be_nested_str_weak(add_series),
+ /* K12 */ be_nested_str_weak(color),
+ /* K13 */ be_const_int(15615044),
+ /* K14 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y),
+ /* K15 */ be_nested_str_weak(ser2),
+ /* K16 */ be_const_int(4517444),
+ }),
+ be_str_weak(post_init),
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0x90020101, // 0000 SETMBR R0 K0 K1
+ 0x54060063, // 0001 LDINT R1 100
+ 0x90020401, // 0002 SETMBR R0 K2 R1
+ 0x90020704, // 0003 SETMBR R0 K3 K4
+ 0x54060004, // 0004 LDINT R1 5
+ 0x90020A01, // 0005 SETMBR R0 K5 R1
+ 0x88040106, // 0006 GETMBR R1 R0 K6
+ 0x8C040307, // 0007 GETMET R1 R1 K7
+ 0xB80E1000, // 0008 GETNGBL R3 K8
+ 0x880C0709, // 0009 GETMBR R3 R3 K9
+ 0x7C040400, // 000A CALL R1 2
+ 0x88040106, // 000B GETMBR R1 R0 K6
+ 0x8C04030B, // 000C GETMET R1 R1 K11
+ 0xB80E1000, // 000D GETNGBL R3 K8
+ 0x8C0C070C, // 000E GETMET R3 R3 K12
+ 0x5814000D, // 000F LDCONST R5 K13
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0xB8121000, // 0011 GETNGBL R4 K8
+ 0x8810090E, // 0012 GETMBR R4 R4 K14
+ 0x7C040600, // 0013 CALL R1 3
+ 0x90021401, // 0014 SETMBR R0 K10 R1
+ 0x88040106, // 0015 GETMBR R1 R0 K6
+ 0x8C04030B, // 0016 GETMET R1 R1 K11
+ 0xB80E1000, // 0017 GETNGBL R3 K8
+ 0x8C0C070C, // 0018 GETMET R3 R3 K12
+ 0x58140010, // 0019 LDCONST R5 K16
+ 0x7C0C0400, // 001A CALL R3 2
+ 0xB8121000, // 001B GETNGBL R4 K8
+ 0x8810090E, // 001C GETMBR R4 R4 K14
+ 0x7C040600, // 001D CALL R1 3
+ 0x90021E01, // 001E SETMBR R0 K15 R1
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_y_min
+********************************************************************/
+be_local_closure(lvh_chart_set_y_min, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(y_min),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_range),
+ /* K3 */ be_nested_str_weak(lv),
+ /* K4 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y),
+ /* K5 */ be_nested_str_weak(y_max),
+ }),
+ be_str_weak(set_y_min),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x88100904, // 0004 GETMBR R4 R4 K4
+ 0x88140100, // 0005 GETMBR R5 R0 K0
+ 0x88180105, // 0006 GETMBR R6 R0 K5
+ 0x7C080800, // 0007 CALL R2 4
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_series1_color
+********************************************************************/
+be_local_closure(lvh_chart_set_series1_color, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_series_color),
+ /* K2 */ be_nested_str_weak(ser1),
+ }),
+ be_str_weak(set_series1_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x7C080600, // 0004 CALL R2 3
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_series2_color
+********************************************************************/
+be_local_closure(lvh_chart_set_series2_color, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_series_color),
+ /* K2 */ be_nested_str_weak(ser2),
+ }),
+ be_str_weak(set_series2_color),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x7C080600, // 0004 CALL R2 3
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_y_max
+********************************************************************/
+be_local_closure(lvh_chart_set_y_max, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(y_max),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_range),
+ /* K3 */ be_nested_str_weak(lv),
+ /* K4 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y),
+ /* K5 */ be_nested_str_weak(y_min),
+ }),
+ be_str_weak(set_y_max),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x88100904, // 0004 GETMBR R4 R4 K4
+ 0x88140105, // 0005 GETMBR R5 R0 K5
+ 0x88180100, // 0006 GETMBR R6 R0 K0
+ 0x7C080800, // 0007 CALL R2 4
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_point2
+********************************************************************/
+be_local_closure(lvh_chart_add_point2, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_next_value),
+ /* K2 */ be_nested_str_weak(ser2),
+ }),
+ be_str_weak(add_point2),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x7C080600, // 0004 CALL R2 3
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_y_max
+********************************************************************/
+be_local_closure(lvh_chart_get_y_max, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(y_max),
+ }),
+ be_str_weak(get_y_max),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_val
+********************************************************************/
+be_local_closure(lvh_chart_set_val, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(add_point),
+ }),
+ be_str_weak(set_val),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_val2
+********************************************************************/
+be_local_closure(lvh_chart_set_val2, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(add_point2),
+ }),
+ be_str_weak(set_val2),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_v_div_line_count
+********************************************************************/
+be_local_closure(lvh_chart_set_v_div_line_count, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(v_div),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_div_line_count),
+ /* K3 */ be_nested_str_weak(h_div),
+ }),
+ be_str_weak(set_v_div_line_count),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x88100103, // 0003 GETMBR R4 R0 K3
+ 0x88140100, // 0004 GETMBR R5 R0 K0
+ 0x7C080600, // 0005 CALL R2 3
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_y_min
+********************************************************************/
+be_local_closure(lvh_chart_get_y_min, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(y_min),
+ }),
+ be_str_weak(get_y_min),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_h_div_line_count
+********************************************************************/
+be_local_closure(lvh_chart_set_h_div_line_count, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(h_div),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_div_line_count),
+ /* K3 */ be_nested_str_weak(v_div),
+ }),
+ be_str_weak(set_h_div_line_count),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x88100100, // 0003 GETMBR R4 R0 K0
+ 0x88140103, // 0004 GETMBR R5 R0 K3
+ 0x7C080600, // 0005 CALL R2 3
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: lvh_chart
+********************************************************************/
+extern const bclass be_class_lvh_obj;
+be_local_class(lvh_chart,
+ 6,
+ &be_class_lvh_obj,
+ be_nested_map(20,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(y_max, -1), be_const_var(3) },
+ { be_const_key_weak(get_y_min, 18), be_const_closure(lvh_chart_get_y_min_closure) },
+ { be_const_key_weak(set_v_div_line_count, 0), be_const_closure(lvh_chart_set_v_div_line_count_closure) },
+ { be_const_key_weak(h_div, 6), be_const_var(4) },
+ { be_const_key_weak(set_y_min, -1), be_const_closure(lvh_chart_set_y_min_closure) },
+ { be_const_key_weak(ser2, 12), be_const_var(1) },
+ { be_const_key_weak(set_val2, -1), be_const_closure(lvh_chart_set_val2_closure) },
+ { be_const_key_weak(_lv_class, -1), be_const_class(be_class_lv_chart) },
+ { be_const_key_weak(ser1, 1), be_const_var(0) },
+ { be_const_key_weak(set_series2_color, -1), be_const_closure(lvh_chart_set_series2_color_closure) },
+ { be_const_key_weak(post_init, 16), be_const_closure(lvh_chart_post_init_closure) },
+ { be_const_key_weak(set_val, -1), be_const_closure(lvh_chart_set_val_closure) },
+ { be_const_key_weak(add_point2, -1), be_const_closure(lvh_chart_add_point2_closure) },
+ { be_const_key_weak(v_div, -1), be_const_var(5) },
+ { be_const_key_weak(get_y_max, -1), be_const_closure(lvh_chart_get_y_max_closure) },
+ { be_const_key_weak(y_min, 11), be_const_var(2) },
+ { be_const_key_weak(set_y_max, -1), be_const_closure(lvh_chart_set_y_max_closure) },
+ { be_const_key_weak(add_point, 2), be_const_closure(lvh_chart_add_point_closure) },
+ { be_const_key_weak(set_series1_color, -1), be_const_closure(lvh_chart_set_series1_color_closure) },
+ { be_const_key_weak(set_h_div_line_count, -1), be_const_closure(lvh_chart_set_h_div_line_count_closure) },
+ })),
+ be_str_weak(lvh_chart)
+);
+/*******************************************************************/
+
+void be_load_lvh_chart_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_lvh_chart);
+ be_setglobal(vm, "lvh_chart");
+ be_pop(vm, 1);
+}
+
extern const bclass be_class_HASPmota;
/********************************************************************
-** Solidified function: do_action
+** Solidified function: event_dispatch
********************************************************************/
-be_local_closure(HASPmota_do_action, /* name */
+be_local_closure(HASPmota_event_dispatch, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 9, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(introspect),
+ /* K1 */ be_nested_str_weak(toptr),
+ /* K2 */ be_nested_str_weak(event),
+ /* K3 */ be_nested_str_weak(_p),
+ /* K4 */ be_nested_str_weak(lv),
+ /* K5 */ be_nested_str_weak(lv_event),
+ /* K6 */ be_nested_str_weak(get_user_data),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str_weak(fromptr),
+ /* K9 */ be_nested_str_weak(instance),
+ /* K10 */ be_nested_str_weak(event_cb),
+ }),
+ be_str_weak(event_dispatch),
+ &be_const_str_solidified,
+ ( &(const binstruction[34]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x88100102, // 0004 GETMBR R4 R0 K2
+ 0x78120002, // 0005 JMPF R4 #0009
+ 0x88100102, // 0006 GETMBR R4 R0 K2
+ 0x90120603, // 0007 SETMBR R4 K3 R3
+ 0x70020004, // 0008 JMP #000E
+ 0xB8120800, // 0009 GETNGBL R4 K4
+ 0x8C100905, // 000A GETMET R4 R4 K5
+ 0x5C180600, // 000B MOVE R6 R3
+ 0x7C100400, // 000C CALL R4 2
+ 0x90020404, // 000D SETMBR R0 K2 R4
+ 0x88100102, // 000E GETMBR R4 R0 K2
+ 0x8C100906, // 000F GETMET R4 R4 K6
+ 0x7C100200, // 0010 CALL R4 1
+ 0x60140009, // 0011 GETGBL R5 G9
+ 0x5C180800, // 0012 MOVE R6 R4
+ 0x7C140200, // 0013 CALL R5 1
+ 0x20140B07, // 0014 NE R5 R5 K7
+ 0x7816000A, // 0015 JMPF R5 #0021
+ 0x8C140508, // 0016 GETMET R5 R2 K8
+ 0x5C1C0800, // 0017 MOVE R7 R4
+ 0x7C140400, // 0018 CALL R5 2
+ 0x60180004, // 0019 GETGBL R6 G4
+ 0x5C1C0A00, // 001A MOVE R7 R5
+ 0x7C180200, // 001B CALL R6 1
+ 0x1C180D09, // 001C EQ R6 R6 K9
+ 0x781A0002, // 001D JMPF R6 #0021
+ 0x8C180B0A, // 001E GETMET R6 R5 K10
+ 0x88200102, // 001F GETMBR R8 R0 K2
+ 0x7C180400, // 0020 CALL R6 2
+ 0x80000000, // 0021 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_page
+********************************************************************/
+be_local_closure(HASPmota_parse_page, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -6349,98 +7238,622 @@ be_local_closure(HASPmota_do_action, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[14]) { /* constants */
+ /* K0 */ be_nested_str_weak(has),
+ /* K1 */ be_nested_str_weak(page),
+ /* K2 */ be_nested_str_weak(int),
+ /* K3 */ be_nested_str_weak(lvh_page_cur_idx),
+ /* K4 */ be_nested_str_weak(lvh_pages),
+ /* K5 */ be_nested_str_weak(contains),
+ /* K6 */ be_nested_str_weak(lvh_page),
+ /* K7 */ be_nested_str_weak(find),
+ /* K8 */ be_nested_str_weak(id),
+ /* K9 */ be_const_int(0),
+ /* K10 */ be_nested_str_weak(get_page_cur),
+ /* K11 */ be_nested_str_weak(prev),
+ /* K12 */ be_nested_str_weak(next),
+ /* K13 */ be_nested_str_weak(back),
+ }),
+ be_str_weak(parse_page),
+ &be_const_str_solidified,
+ ( &(const binstruction[54]) { /* code */
+ 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x58100001, // 0001 LDCONST R4 K1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x780A0030, // 0003 JMPF R2 #0035
+ 0x60080004, // 0004 GETGBL R2 G4
+ 0x940C0301, // 0005 GETIDX R3 R1 K1
+ 0x7C080200, // 0006 CALL R2 1
+ 0x1C080502, // 0007 EQ R2 R2 K2
+ 0x780A002B, // 0008 JMPF R2 #0035
+ 0x60080009, // 0009 GETGBL R2 G9
+ 0x940C0301, // 000A GETIDX R3 R1 K1
+ 0x7C080200, // 000B CALL R2 1
+ 0x90020602, // 000C SETMBR R0 K3 R2
+ 0x880C0104, // 000D GETMBR R3 R0 K4
+ 0x8C0C0705, // 000E GETMET R3 R3 K5
+ 0x5C140400, // 000F MOVE R5 R2
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x740E0006, // 0011 JMPT R3 #0019
+ 0x880C0106, // 0012 GETMBR R3 R0 K6
+ 0x88100104, // 0013 GETMBR R4 R0 K4
+ 0x5C140600, // 0014 MOVE R5 R3
+ 0x5C180400, // 0015 MOVE R6 R2
+ 0x5C1C0000, // 0016 MOVE R7 R0
+ 0x7C140400, // 0017 CALL R5 2
+ 0x98100405, // 0018 SETIDX R4 R2 R5
+ 0x8C0C0307, // 0019 GETMET R3 R1 K7
+ 0x58140008, // 001A LDCONST R5 K8
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x1C0C0709, // 001C EQ R3 R3 K9
+ 0x780E0016, // 001D JMPF R3 #0035
+ 0x8C0C010A, // 001E GETMET R3 R0 K10
+ 0x7C0C0200, // 001F CALL R3 1
+ 0x60100009, // 0020 GETGBL R4 G9
+ 0x8C140307, // 0021 GETMET R5 R1 K7
+ 0x581C000B, // 0022 LDCONST R7 K11
+ 0x4C200000, // 0023 LDNIL R8
+ 0x7C140600, // 0024 CALL R5 3
+ 0x7C100200, // 0025 CALL R4 1
+ 0x900E1604, // 0026 SETMBR R3 K11 R4
+ 0x60100009, // 0027 GETGBL R4 G9
+ 0x8C140307, // 0028 GETMET R5 R1 K7
+ 0x581C000C, // 0029 LDCONST R7 K12
+ 0x4C200000, // 002A LDNIL R8
+ 0x7C140600, // 002B CALL R5 3
+ 0x7C100200, // 002C CALL R4 1
+ 0x900E1804, // 002D SETMBR R3 K12 R4
+ 0x60100009, // 002E GETGBL R4 G9
+ 0x8C140307, // 002F GETMET R5 R1 K7
+ 0x581C000D, // 0030 LDCONST R7 K13
+ 0x4C200000, // 0031 LDNIL R8
+ 0x7C140600, // 0032 CALL R5 3
+ 0x7C100200, // 0033 CALL R4 1
+ 0x900E1A04, // 0034 SETMBR R3 K13 R4
+ 0x80000000, // 0035 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse
+********************************************************************/
+be_local_closure(HASPmota_parse, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(json),
+ /* K1 */ be_nested_str_weak(load),
+ /* K2 */ be_nested_str_weak(instance),
+ /* K3 */ be_nested_str_weak(parse_page),
+ /* K4 */ be_nested_str_weak(parse_obj),
+ /* K5 */ be_nested_str_weak(lvh_pages),
+ /* K6 */ be_nested_str_weak(lvh_page_cur_idx),
+ /* K7 */ be_nested_str_weak(value_error),
+ /* K8 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line),
+ }),
+ be_str_weak(parse),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x60100004, // 0004 GETGBL R4 G4
+ 0x5C140600, // 0005 MOVE R5 R3
+ 0x7C100200, // 0006 CALL R4 1
+ 0x1C100902, // 0007 EQ R4 R4 K2
+ 0x78120009, // 0008 JMPF R4 #0013
+ 0x8C100103, // 0009 GETMET R4 R0 K3
+ 0x5C180600, // 000A MOVE R6 R3
+ 0x7C100400, // 000B CALL R4 2
+ 0x8C100104, // 000C GETMET R4 R0 K4
+ 0x5C180600, // 000D MOVE R6 R3
+ 0x881C0105, // 000E GETMBR R7 R0 K5
+ 0x88200106, // 000F GETMBR R8 R0 K6
+ 0x941C0E08, // 0010 GETIDX R7 R7 R8
+ 0x7C100600, // 0011 CALL R4 3
+ 0x70020000, // 0012 JMP #0014
+ 0xB0060F08, // 0013 RAISE 1 K7 K8
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: fix_lv_version
+********************************************************************/
+be_local_closure(HASPmota_fix_lv_version, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 0, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_const_class(be_class_HASPmota),
+ /* K1 */ be_nested_str_weak(introspect),
+ /* K2 */ be_nested_str_weak(get),
+ /* K3 */ be_nested_str_weak(lv),
+ /* K4 */ be_nested_str_weak(version),
+ /* K5 */ be_nested_str_weak(int),
+ }),
+ be_str_weak(fix_lv_version),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0x58000000, // 0000 LDCONST R0 K0
+ 0xA4060200, // 0001 IMPORT R1 K1
+ 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x58140004, // 0004 LDCONST R5 K4
+ 0x7C080600, // 0005 CALL R2 3
+ 0x600C0004, // 0006 GETGBL R3 G4
+ 0x5C100400, // 0007 MOVE R4 R2
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x200C0705, // 0009 NE R3 R3 K5
+ 0x780E0002, // 000A JMPF R3 #000E
+ 0xB80E0600, // 000B GETNGBL R3 K3
+ 0x54120007, // 000C LDINT R4 8
+ 0x900E0804, // 000D SETMBR R3 K4 R4
+ 0x80000000, // 000E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: register_event
+********************************************************************/
+be_local_closure(HASPmota_register_event, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(event_dispatch),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x68040000, // 0000 GETUPV R1 U0
+ 0x8C040300, // 0001 GETMET R1 R1 K0
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C040400, // 0003 CALL R1 2
+ 0x80040200, // 0004 RET 1 R1
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 7]) { /* constants */
+ /* K0 */ be_nested_str_weak(cb),
+ /* K1 */ be_nested_str_weak(introspect),
+ /* K2 */ be_nested_str_weak(event_cb),
+ /* K3 */ be_nested_str_weak(gen_cb),
+ /* K4 */ be_nested_str_weak(_lv_obj),
+ /* K5 */ be_nested_str_weak(add_event_cb),
+ /* K6 */ be_nested_str_weak(toptr),
+ }),
+ be_str_weak(register_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xA4120200, // 0001 IMPORT R4 K1
+ 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0x4C180000, // 0003 LDNIL R6
+ 0x1C140A06, // 0004 EQ R5 R5 R6
+ 0x78160003, // 0005 JMPF R5 #000A
+ 0x8C140703, // 0006 GETMET R5 R3 K3
+ 0x841C0000, // 0007 CLOSURE R7 P0
+ 0x7C140400, // 0008 CALL R5 2
+ 0x90020405, // 0009 SETMBR R0 K2 R5
+ 0x88140304, // 000A GETMBR R5 R1 K4
+ 0x8C180B05, // 000B GETMET R6 R5 K5
+ 0x88200102, // 000C GETMBR R8 R0 K2
+ 0x5C240400, // 000D MOVE R9 R2
+ 0x8C280906, // 000E GETMET R10 R4 K6
+ 0x5C300200, // 000F MOVE R12 R1
+ 0x7C280400, // 0010 CALL R10 2
+ 0x7C180800, // 0011 CALL R6 4
+ 0xA0000000, // 0012 CLOSE R0
+ 0x80000000, // 0013 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: page_dir_to
+********************************************************************/
+be_local_closure(HASPmota_page_dir_to, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(pages_list_sorted),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_const_int(2),
+ /* K4 */ be_nested_str_weak(find),
+ }),
+ be_str_weak(page_dir_to),
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x58100001, // 0001 LDCONST R4 K1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0403, // 0004 EQ R3 R2 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x80060200, // 0006 RET 1 K1
+ 0x600C000C, // 0007 GETGBL R3 G12
+ 0x5C100400, // 0008 MOVE R4 R2
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x18100702, // 000A LE R4 R3 K2
+ 0x78120000, // 000B JMPF R4 #000D
+ 0x80060200, // 000C RET 1 K1
+ 0x1C100703, // 000D EQ R4 R3 K3
+ 0x78120000, // 000E JMPF R4 #0010
+ 0x80060400, // 000F RET 1 K2
+ 0x8C100504, // 0010 GETMET R4 R2 K4
+ 0x5C180200, // 0011 MOVE R6 R1
+ 0x7C100400, // 0012 CALL R4 2
+ 0x4C140000, // 0013 LDNIL R5
+ 0x1C140805, // 0014 EQ R5 R4 R5
+ 0x78160000, // 0015 JMPF R5 #0017
+ 0x80060200, // 0016 RET 1 K1
+ 0x00140702, // 0017 ADD R5 R3 K2
+ 0x0C140B03, // 0018 DIV R5 R5 K3
+ 0x18140805, // 0019 LE R5 R4 R5
+ 0x78160001, // 001A JMPF R5 #001D
+ 0x80060400, // 001B RET 1 K2
+ 0x70020001, // 001C JMP #001F
+ 0x5415FFFE, // 001D LDINT R5 -1
+ 0x80040A00, // 001E RET 1 R5
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_obj
+********************************************************************/
+be_local_closure(HASPmota_parse_obj, /* name */
+ be_nested_proto(
+ 20, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[30]) { /* constants */
+ /* K0 */ be_nested_str_weak(global),
+ /* K1 */ be_nested_str_weak(introspect),
+ /* K2 */ be_nested_str_weak(find),
+ /* K3 */ be_nested_str_weak(id),
+ /* K4 */ be_nested_str_weak(obj),
+ /* K5 */ be_nested_str_weak(get_page_cur),
+ /* K6 */ be_nested_str_weak(berry_run),
+ /* K7 */ be_nested_str_weak(nil),
+ /* K8 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20),
+ /* K11 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A),
+ /* K12 */ be_nested_str_weak(parentid),
+ /* K13 */ be_nested_str_weak(get_obj),
+ /* K14 */ be_nested_str_weak(_lv_obj),
+ /* K15 */ be_nested_str_weak(get_scr),
+ /* K16 */ be_nested_str_weak(get),
+ /* K17 */ be_nested_str_weak(lvh_),
+ /* K18 */ be_nested_str_weak(class),
+ /* K19 */ be_nested_str_weak(lvh_obj),
+ /* K20 */ be_nested_str_weak(module),
+ /* K21 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20),
+ /* K22 */ be_nested_str_weak(set_obj),
+ /* K23 */ be_nested_str_weak(p_X25ib_X25i),
+ /* K24 */ be_nested_str_weak(function),
+ /* K25 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K26 */ be_const_int(0),
+ /* K27 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0),
+ /* K28 */ be_nested_str_weak(keys),
+ /* K29 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(parse_obj),
+ &be_const_str_solidified,
+ ( &(const binstruction[217]) { /* code */
+ 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xA4120200, // 0001 IMPORT R4 K1
+ 0x60140009, // 0002 GETGBL R5 G9
+ 0x8C180302, // 0003 GETMET R6 R1 K2
+ 0x58200003, // 0004 LDCONST R8 K3
+ 0x7C180400, // 0005 CALL R6 2
+ 0x7C140200, // 0006 CALL R5 1
+ 0x60180008, // 0007 GETGBL R6 G8
+ 0x8C1C0302, // 0008 GETMET R7 R1 K2
+ 0x58240004, // 0009 LDCONST R9 K4
+ 0x7C1C0400, // 000A CALL R7 2
+ 0x7C180200, // 000B CALL R6 1
+ 0x4C1C0000, // 000C LDNIL R7
+ 0x8C200105, // 000D GETMET R8 R0 K5
+ 0x7C200200, // 000E CALL R8 1
+ 0x60240008, // 000F GETGBL R9 G8
+ 0x8C280302, // 0010 GETMET R10 R1 K2
+ 0x58300006, // 0011 LDCONST R12 K6
+ 0x7C280400, // 0012 CALL R10 2
+ 0x7C240200, // 0013 CALL R9 1
+ 0x4C280000, // 0014 LDNIL R10
+ 0x202C1307, // 0015 NE R11 R9 K7
+ 0x782E0012, // 0016 JMPF R11 #002A
+ 0xA8020005, // 0017 EXBLK 0 #001E
+ 0x602C000D, // 0018 GETGBL R11 G13
+ 0x5C301200, // 0019 MOVE R12 R9
+ 0x7C2C0200, // 001A CALL R11 1
+ 0x5C281600, // 001B MOVE R10 R11
+ 0xA8040001, // 001C EXBLK 1 1
+ 0x7002000B, // 001D JMP #002A
+ 0xAC2C0002, // 001E CATCH R11 0 2
+ 0x70020008, // 001F JMP #0029
+ 0x60340001, // 0020 GETGBL R13 G1
+ 0x60380018, // 0021 GETGBL R14 G24
+ 0x583C0008, // 0022 LDCONST R15 K8
+ 0x5C401200, // 0023 MOVE R16 R9
+ 0x5C441600, // 0024 MOVE R17 R11
+ 0x5C481800, // 0025 MOVE R18 R12
+ 0x7C380800, // 0026 CALL R14 4
+ 0x7C340200, // 0027 CALL R13 1
+ 0x70020000, // 0028 JMP #002A
+ 0xB0080000, // 0029 RAISE 2 R0 R0
+ 0x202C0D07, // 002A NE R11 R6 K7
+ 0x782E006E, // 002B JMPF R11 #009B
+ 0x4C2C0000, // 002C LDNIL R11
+ 0x202C0A0B, // 002D NE R11 R5 R11
+ 0x782E006B, // 002E JMPF R11 #009B
+ 0x142C0B09, // 002F LT R11 R5 K9
+ 0x742E0002, // 0030 JMPT R11 #0034
+ 0x542E00FD, // 0031 LDINT R11 254
+ 0x242C0A0B, // 0032 GT R11 R5 R11
+ 0x782E0008, // 0033 JMPF R11 #003D
+ 0x602C0001, // 0034 GETGBL R11 G1
+ 0x60300008, // 0035 GETGBL R12 G8
+ 0x5C340A00, // 0036 MOVE R13 R5
+ 0x7C300200, // 0037 CALL R12 1
+ 0x0032140C, // 0038 ADD R12 K10 R12
+ 0x0030190B, // 0039 ADD R12 R12 K11
+ 0x00301806, // 003A ADD R12 R12 R6
+ 0x7C2C0200, // 003B CALL R11 1
+ 0x80001600, // 003C RET 0
+ 0x4C2C0000, // 003D LDNIL R11
+ 0x60300009, // 003E GETGBL R12 G9
+ 0x8C340302, // 003F GETMET R13 R1 K2
+ 0x583C000C, // 0040 LDCONST R15 K12
+ 0x7C340400, // 0041 CALL R13 2
+ 0x7C300200, // 0042 CALL R12 1
+ 0x4C340000, // 0043 LDNIL R13
+ 0x2034180D, // 0044 NE R13 R12 R13
+ 0x78360006, // 0045 JMPF R13 #004D
+ 0x8C34110D, // 0046 GETMET R13 R8 K13
+ 0x5C3C1800, // 0047 MOVE R15 R12
+ 0x7C340400, // 0048 CALL R13 2
+ 0x4C380000, // 0049 LDNIL R14
+ 0x20381A0E, // 004A NE R14 R13 R14
+ 0x783A0000, // 004B JMPF R14 #004D
+ 0x882C1B0E, // 004C GETMBR R11 R13 K14
+ 0x4C340000, // 004D LDNIL R13
+ 0x1C34160D, // 004E EQ R13 R11 R13
+ 0x78360002, // 004F JMPF R13 #0053
+ 0x8C34110F, // 0050 GETMET R13 R8 K15
+ 0x7C340200, // 0051 CALL R13 1
+ 0x5C2C1A00, // 0052 MOVE R11 R13
+ 0x8C340910, // 0053 GETMET R13 R4 K16
+ 0x5C3C0000, // 0054 MOVE R15 R0
+ 0x00422206, // 0055 ADD R16 K17 R6
+ 0x7C340600, // 0056 CALL R13 3
+ 0x4C380000, // 0057 LDNIL R14
+ 0x4C3C0000, // 0058 LDNIL R15
+ 0x1C3C1A0F, // 0059 EQ R15 R13 R15
+ 0x783E0010, // 005A JMPF R15 #006C
+ 0x8C3C0910, // 005B GETMET R15 R4 K16
+ 0x5C440600, // 005C MOVE R17 R3
+ 0x5C480C00, // 005D MOVE R18 R6
+ 0x7C3C0600, // 005E CALL R15 3
+ 0x4C400000, // 005F LDNIL R16
+ 0x20401E10, // 0060 NE R16 R15 R16
+ 0x78420009, // 0061 JMPF R16 #006C
+ 0x60400004, // 0062 GETGBL R16 G4
+ 0x5C441E00, // 0063 MOVE R17 R15
+ 0x7C400200, // 0064 CALL R16 1
+ 0x1C402112, // 0065 EQ R16 R16 K18
+ 0x78420004, // 0066 JMPF R16 #006C
+ 0x5C401E00, // 0067 MOVE R16 R15
+ 0x5C441600, // 0068 MOVE R17 R11
+ 0x7C400200, // 0069 CALL R16 1
+ 0x5C382000, // 006A MOVE R14 R16
+ 0x88340113, // 006B GETMBR R13 R0 K19
+ 0x4C3C0000, // 006C LDNIL R15
+ 0x1C3C1A0F, // 006D EQ R15 R13 R15
+ 0x783E000F, // 006E JMPF R15 #007F
+ 0x8C3C0914, // 006F GETMET R15 R4 K20
+ 0x5C440C00, // 0070 MOVE R17 R6
+ 0x7C3C0400, // 0071 CALL R15 2
+ 0x4C400000, // 0072 LDNIL R16
+ 0x20401E10, // 0073 NE R16 R15 R16
+ 0x78420009, // 0074 JMPF R16 #007F
+ 0x60400004, // 0075 GETGBL R16 G4
+ 0x5C441E00, // 0076 MOVE R17 R15
+ 0x7C400200, // 0077 CALL R16 1
+ 0x1C402112, // 0078 EQ R16 R16 K18
+ 0x78420004, // 0079 JMPF R16 #007F
+ 0x5C401E00, // 007A MOVE R16 R15
+ 0x5C441600, // 007B MOVE R17 R11
+ 0x7C400200, // 007C CALL R16 1
+ 0x5C382000, // 007D MOVE R14 R16
+ 0x88340113, // 007E GETMBR R13 R0 K19
+ 0x4C3C0000, // 007F LDNIL R15
+ 0x1C3C1A0F, // 0080 EQ R15 R13 R15
+ 0x783E0006, // 0081 JMPF R15 #0089
+ 0x603C0001, // 0082 GETGBL R15 G1
+ 0x60400008, // 0083 GETGBL R16 G8
+ 0x5C440C00, // 0084 MOVE R17 R6
+ 0x7C400200, // 0085 CALL R16 1
+ 0x00422A10, // 0086 ADD R16 K21 R16
+ 0x7C3C0200, // 0087 CALL R15 1
+ 0x80001E00, // 0088 RET 0
+ 0x5C3C1A00, // 0089 MOVE R15 R13
+ 0x5C401600, // 008A MOVE R16 R11
+ 0x5C440400, // 008B MOVE R17 R2
+ 0x5C480200, // 008C MOVE R18 R1
+ 0x5C4C1C00, // 008D MOVE R19 R14
+ 0x7C3C0800, // 008E CALL R15 4
+ 0x5C1C1E00, // 008F MOVE R7 R15
+ 0x8C3C1116, // 0090 GETMET R15 R8 K22
+ 0x5C440A00, // 0091 MOVE R17 R5
+ 0x5C480E00, // 0092 MOVE R18 R7
+ 0x7C3C0600, // 0093 CALL R15 3
+ 0x603C0018, // 0094 GETGBL R15 G24
+ 0x58400017, // 0095 LDCONST R16 K23
+ 0x8C441103, // 0096 GETMET R17 R8 K3
+ 0x7C440200, // 0097 CALL R17 1
+ 0x5C480A00, // 0098 MOVE R18 R5
+ 0x7C3C0600, // 0099 CALL R15 3
+ 0x900C1E07, // 009A SETMBR R3 R15 R7
+ 0x4C2C0000, // 009B LDNIL R11
+ 0x202C140B, // 009C NE R11 R10 R11
+ 0x782E0018, // 009D JMPF R11 #00B7
+ 0xA802000B, // 009E EXBLK 0 #00AB
+ 0x5C2C1400, // 009F MOVE R11 R10
+ 0x7C2C0000, // 00A0 CALL R11 0
+ 0x60300004, // 00A1 GETGBL R12 G4
+ 0x5C341600, // 00A2 MOVE R13 R11
+ 0x7C300200, // 00A3 CALL R12 1
+ 0x1C301918, // 00A4 EQ R12 R12 K24
+ 0x78320002, // 00A5 JMPF R12 #00A9
+ 0x5C301600, // 00A6 MOVE R12 R11
+ 0x5C340E00, // 00A7 MOVE R13 R7
+ 0x7C300200, // 00A8 CALL R12 1
+ 0xA8040001, // 00A9 EXBLK 1 1
+ 0x7002000B, // 00AA JMP #00B7
+ 0xAC2C0002, // 00AB CATCH R11 0 2
+ 0x70020008, // 00AC JMP #00B6
+ 0x60340001, // 00AD GETGBL R13 G1
+ 0x60380018, // 00AE GETGBL R14 G24
+ 0x583C0019, // 00AF LDCONST R15 K25
+ 0x5C401200, // 00B0 MOVE R16 R9
+ 0x5C441600, // 00B1 MOVE R17 R11
+ 0x5C481800, // 00B2 MOVE R18 R12
+ 0x7C380800, // 00B3 CALL R14 4
+ 0x7C340200, // 00B4 CALL R13 1
+ 0x70020000, // 00B5 JMP #00B7
+ 0xB0080000, // 00B6 RAISE 2 R0 R0
+ 0x4C2C0000, // 00B7 LDNIL R11
+ 0x1C2C0A0B, // 00B8 EQ R11 R5 R11
+ 0x782E0000, // 00B9 JMPF R11 #00BB
+ 0x80001600, // 00BA RET 0
+ 0x1C2C0B1A, // 00BB EQ R11 R5 K26
+ 0x782E0005, // 00BC JMPF R11 #00C3
+ 0x202C0D07, // 00BD NE R11 R6 K7
+ 0x782E0003, // 00BE JMPF R11 #00C3
+ 0x602C0001, // 00BF GETGBL R11 G1
+ 0x5830001B, // 00C0 LDCONST R12 K27
+ 0x7C2C0200, // 00C1 CALL R11 1
+ 0x80001600, // 00C2 RET 0
+ 0x1C2C0B1A, // 00C3 EQ R11 R5 K26
+ 0x782E0005, // 00C4 JMPF R11 #00CB
+ 0x8C2C0105, // 00C5 GETMET R11 R0 K5
+ 0x7C2C0200, // 00C6 CALL R11 1
+ 0x8C2C170D, // 00C7 GETMET R11 R11 K13
+ 0x5834001A, // 00C8 LDCONST R13 K26
+ 0x7C2C0400, // 00C9 CALL R11 2
+ 0x5C1C1600, // 00CA MOVE R7 R11
+ 0x602C0010, // 00CB GETGBL R11 G16
+ 0x8C30031C, // 00CC GETMET R12 R1 K28
+ 0x7C300200, // 00CD CALL R12 1
+ 0x7C2C0200, // 00CE CALL R11 1
+ 0xA8020004, // 00CF EXBLK 0 #00D5
+ 0x5C301600, // 00D0 MOVE R12 R11
+ 0x7C300000, // 00D1 CALL R12 0
+ 0x9434020C, // 00D2 GETIDX R13 R1 R12
+ 0x901C180D, // 00D3 SETMBR R7 R12 R13
+ 0x7001FFFA, // 00D4 JMP #00D0
+ 0x582C001D, // 00D5 LDCONST R11 K29
+ 0xAC2C0200, // 00D6 CATCH R11 1 0
+ 0xB0080000, // 00D7 RAISE 2 R0 R0
+ 0x80000000, // 00D8 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: do_action
+********************************************************************/
+be_local_closure(HASPmota_do_action, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(lv),
/* K1 */ be_nested_str_weak(EVENT_CLICKED),
- /* K2 */ be_nested_str_weak(_action),
- /* K3 */ be_nested_str_weak(lvh_pages),
- /* K4 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K5 */ be_nested_str_weak(pages_list_sorted),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(prev),
- /* K8 */ be_nested_str_weak(next),
- /* K9 */ be_nested_str_weak(back),
- /* K10 */ be_nested_str_weak(re_page_target),
- /* K11 */ be_nested_str_weak(match),
- /* K12 */ be_const_int(0),
- /* K13 */ be_nested_str_weak(show),
+ /* K2 */ be_nested_str_weak(page_show),
+ /* K3 */ be_nested_str_weak(_action),
}),
be_str_weak(do_action),
&be_const_str_solidified,
- ( &(const binstruction[74]) { /* code */
+ ( &(const binstruction[ 9]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x880C0701, // 0001 GETMBR R3 R3 K1
0x200C0403, // 0002 NE R3 R2 R3
0x780E0000, // 0003 JMPF R3 #0005
0x80000600, // 0004 RET 0
- 0x880C0302, // 0005 GETMBR R3 R1 K2
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x88140104, // 0007 GETMBR R5 R0 K4
- 0x94100805, // 0008 GETIDX R4 R4 R5
- 0x4C140000, // 0009 LDNIL R5
- 0x8C180105, // 000A GETMET R6 R0 K5
- 0x88200104, // 000B GETMBR R8 R0 K4
- 0x7C180400, // 000C CALL R6 2
- 0x601C000C, // 000D GETGBL R7 G12
- 0x5C200C00, // 000E MOVE R8 R6
- 0x7C1C0200, // 000F CALL R7 1
- 0x181C0F06, // 0010 LE R7 R7 K6
- 0x781E0000, // 0011 JMPF R7 #0013
- 0x80000E00, // 0012 RET 0
- 0x1C1C0707, // 0013 EQ R7 R3 K7
- 0x781E0009, // 0014 JMPF R7 #001F
- 0x601C0009, // 0015 GETGBL R7 G9
- 0x88200907, // 0016 GETMBR R8 R4 K7
- 0x7C1C0200, // 0017 CALL R7 1
- 0x5C140E00, // 0018 MOVE R5 R7
- 0x4C1C0000, // 0019 LDNIL R7
- 0x1C1C0A07, // 001A EQ R7 R5 R7
- 0x781E0001, // 001B JMPF R7 #001E
- 0x541DFFFE, // 001C LDINT R7 -1
- 0x94140C07, // 001D GETIDX R5 R6 R7
- 0x70020020, // 001E JMP #0040
- 0x1C1C0708, // 001F EQ R7 R3 K8
- 0x781E0008, // 0020 JMPF R7 #002A
- 0x601C0009, // 0021 GETGBL R7 G9
- 0x88200908, // 0022 GETMBR R8 R4 K8
- 0x7C1C0200, // 0023 CALL R7 1
- 0x5C140E00, // 0024 MOVE R5 R7
- 0x4C1C0000, // 0025 LDNIL R7
- 0x1C1C0A07, // 0026 EQ R7 R5 R7
- 0x781E0000, // 0027 JMPF R7 #0029
- 0x94140D06, // 0028 GETIDX R5 R6 K6
- 0x70020015, // 0029 JMP #0040
- 0x1C1C0709, // 002A EQ R7 R3 K9
- 0x781E0008, // 002B JMPF R7 #0035
- 0x601C0009, // 002C GETGBL R7 G9
- 0x88200909, // 002D GETMBR R8 R4 K9
- 0x7C1C0200, // 002E CALL R7 1
- 0x5C140E00, // 002F MOVE R5 R7
- 0x4C1C0000, // 0030 LDNIL R7
- 0x1C1C0A07, // 0031 EQ R7 R5 R7
- 0x781E0000, // 0032 JMPF R7 #0034
- 0x58140006, // 0033 LDCONST R5 K6
- 0x7002000A, // 0034 JMP #0040
- 0x881C010A, // 0035 GETMBR R7 R0 K10
- 0x8C1C0F0B, // 0036 GETMET R7 R7 K11
- 0x5C240600, // 0037 MOVE R9 R3
- 0x7C1C0400, // 0038 CALL R7 2
- 0x781E0005, // 0039 JMPF R7 #0040
- 0x601C0009, // 003A GETGBL R7 G9
- 0x5421FFFE, // 003B LDINT R8 -1
- 0x40220C08, // 003C CONNECT R8 K6 R8
- 0x94200608, // 003D GETIDX R8 R3 R8
- 0x7C1C0200, // 003E CALL R7 1
- 0x5C140E00, // 003F MOVE R5 R7
- 0x4C1C0000, // 0040 LDNIL R7
- 0x201C0A07, // 0041 NE R7 R5 R7
- 0x781E0005, // 0042 JMPF R7 #0049
- 0x241C0B0C, // 0043 GT R7 R5 K12
- 0x781E0003, // 0044 JMPF R7 #0049
- 0x881C0103, // 0045 GETMBR R7 R0 K3
- 0x941C0E05, // 0046 GETIDX R7 R7 R5
- 0x8C1C0F0D, // 0047 GETMET R7 R7 K13
- 0x7C1C0200, // 0048 CALL R7 1
- 0x80000000, // 0049 RET 0
+ 0x8C0C0102, // 0005 GETMET R3 R0 K2
+ 0x88140303, // 0006 GETMBR R5 R1 K3
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x80000000, // 0008 RET 0
})
)
);
@@ -6557,6 +7970,343 @@ be_local_closure(HASPmota_get_page_cur, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: sort
+********************************************************************/
+be_local_closure(HASPmota_sort, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_const_class(be_class_HASPmota),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(sort),
+ &be_const_str_solidified,
+ ( &(const binstruction[30]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x60080010, // 0001 GETGBL R2 G16
+ 0x600C000C, // 0002 GETGBL R3 G12
+ 0x5C100000, // 0003 MOVE R4 R0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x040C0701, // 0005 SUB R3 R3 K1
+ 0x400E0203, // 0006 CONNECT R3 K1 R3
+ 0x7C080200, // 0007 CALL R2 1
+ 0xA8020010, // 0008 EXBLK 0 #001A
+ 0x5C0C0400, // 0009 MOVE R3 R2
+ 0x7C0C0000, // 000A CALL R3 0
+ 0x94100003, // 000B GETIDX R4 R0 R3
+ 0x5C140600, // 000C MOVE R5 R3
+ 0x24180B02, // 000D GT R6 R5 K2
+ 0x781A0008, // 000E JMPF R6 #0018
+ 0x04180B01, // 000F SUB R6 R5 K1
+ 0x94180006, // 0010 GETIDX R6 R0 R6
+ 0x24180C04, // 0011 GT R6 R6 R4
+ 0x781A0004, // 0012 JMPF R6 #0018
+ 0x04180B01, // 0013 SUB R6 R5 K1
+ 0x94180006, // 0014 GETIDX R6 R0 R6
+ 0x98000A06, // 0015 SETIDX R0 R5 R6
+ 0x04140B01, // 0016 SUB R5 R5 K1
+ 0x7001FFF4, // 0017 JMP #000D
+ 0x98000A04, // 0018 SETIDX R0 R5 R4
+ 0x7001FFEE, // 0019 JMP #0009
+ 0x58080003, // 001A LDCONST R2 K3
+ 0xAC080200, // 001B CATCH R2 1 0
+ 0xB0080000, // 001C RAISE 2 R0 R0
+ 0x80040000, // 001D RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _load
+********************************************************************/
+be_local_closure(HASPmota__load, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[26]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(json),
+ /* K2 */ be_nested_str_weak(lvh_page_cur_idx),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_nested_str_weak(lvh_page),
+ /* K5 */ be_nested_str_weak(lvh_pages),
+ /* K6 */ be_nested_str_weak(r),
+ /* K7 */ be_nested_str_weak(read),
+ /* K8 */ be_nested_str_weak(close),
+ /* K9 */ be_nested_str_weak(split),
+ /* K10 */ be_nested_str_weak(_X0A),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(load),
+ /* K13 */ be_nested_str_weak(instance),
+ /* K14 */ be_nested_str_weak(tasmota),
+ /* K15 */ be_nested_str_weak(loglevel),
+ /* K16 */ be_nested_str_weak(log),
+ /* K17 */ be_nested_str_weak(HSP_X3A_X20parsing_X20line_X20_X27_X25s_X27_X20tasmota_X2Eloglevel_X284_X29_X3D_X25s),
+ /* K18 */ be_nested_str_weak(parse_page),
+ /* K19 */ be_nested_str_weak(parse_obj),
+ /* K20 */ be_nested_str_weak(tr),
+ /* K21 */ be_nested_str_weak(_X20_X09),
+ /* K22 */ be_nested_str_weak(),
+ /* K23 */ be_nested_str_weak(HSP_X3A_X20invalid_X20JSON_X20line_X20_X27_X25s_X27),
+ /* K24 */ be_const_int(2),
+ /* K25 */ be_nested_str_weak(remove),
+ }),
+ be_str_weak(_load),
+ &be_const_str_solidified,
+ ( &(const binstruction[89]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40E0200, // 0001 IMPORT R3 K1
+ 0x90020503, // 0002 SETMBR R0 K2 K3
+ 0x88100104, // 0003 GETMBR R4 R0 K4
+ 0x88140105, // 0004 GETMBR R5 R0 K5
+ 0x5C180800, // 0005 MOVE R6 R4
+ 0x581C0003, // 0006 LDCONST R7 K3
+ 0x5C200000, // 0007 MOVE R8 R0
+ 0x7C180400, // 0008 CALL R6 2
+ 0x98160606, // 0009 SETIDX R5 K3 R6
+ 0x60140011, // 000A GETGBL R5 G17
+ 0x5C180200, // 000B MOVE R6 R1
+ 0x581C0006, // 000C LDCONST R7 K6
+ 0x7C140400, // 000D CALL R5 2
+ 0x8C180B07, // 000E GETMET R6 R5 K7
+ 0x7C180200, // 000F CALL R6 1
+ 0x8C1C0B08, // 0010 GETMET R7 R5 K8
+ 0x7C1C0200, // 0011 CALL R7 1
+ 0x8C1C0509, // 0012 GETMET R7 R2 K9
+ 0x5C240C00, // 0013 MOVE R9 R6
+ 0x5828000A, // 0014 LDCONST R10 K10
+ 0x7C1C0600, // 0015 CALL R7 3
+ 0x4C140000, // 0016 LDNIL R5
+ 0x4C180000, // 0017 LDNIL R6
+ 0x6020000C, // 0018 GETGBL R8 G12
+ 0x5C240E00, // 0019 MOVE R9 R7
+ 0x7C200200, // 001A CALL R8 1
+ 0x2420110B, // 001B GT R8 R8 K11
+ 0x78220038, // 001C JMPF R8 #0056
+ 0x8C20070C, // 001D GETMET R8 R3 K12
+ 0x94280F0B, // 001E GETIDX R10 R7 K11
+ 0x7C200400, // 001F CALL R8 2
+ 0x60240004, // 0020 GETGBL R9 G4
+ 0x5C281000, // 0021 MOVE R10 R8
+ 0x7C240200, // 0022 CALL R9 1
+ 0x1C24130D, // 0023 EQ R9 R9 K13
+ 0x7826001A, // 0024 JMPF R9 #0040
+ 0xB8261C00, // 0025 GETNGBL R9 K14
+ 0x8C24130F, // 0026 GETMET R9 R9 K15
+ 0x542E0003, // 0027 LDINT R11 4
+ 0x7C240400, // 0028 CALL R9 2
+ 0x7826000B, // 0029 JMPF R9 #0036
+ 0xB8261C00, // 002A GETNGBL R9 K14
+ 0x8C241310, // 002B GETMET R9 R9 K16
+ 0x602C0018, // 002C GETGBL R11 G24
+ 0x58300011, // 002D LDCONST R12 K17
+ 0x94340F0B, // 002E GETIDX R13 R7 K11
+ 0xB83A1C00, // 002F GETNGBL R14 K14
+ 0x8C381D0F, // 0030 GETMET R14 R14 K15
+ 0x54420003, // 0031 LDINT R16 4
+ 0x7C380400, // 0032 CALL R14 2
+ 0x7C2C0600, // 0033 CALL R11 3
+ 0x54320003, // 0034 LDINT R12 4
+ 0x7C240600, // 0035 CALL R9 3
+ 0x8C240112, // 0036 GETMET R9 R0 K18
+ 0x5C2C1000, // 0037 MOVE R11 R8
+ 0x7C240400, // 0038 CALL R9 2
+ 0x8C240113, // 0039 GETMET R9 R0 K19
+ 0x5C2C1000, // 003A MOVE R11 R8
+ 0x88300105, // 003B GETMBR R12 R0 K5
+ 0x88340102, // 003C GETMBR R13 R0 K2
+ 0x9430180D, // 003D GETIDX R12 R12 R13
+ 0x7C240600, // 003E CALL R9 3
+ 0x70020010, // 003F JMP #0051
+ 0x6024000C, // 0040 GETGBL R9 G12
+ 0x8C280514, // 0041 GETMET R10 R2 K20
+ 0x94300F0B, // 0042 GETIDX R12 R7 K11
+ 0x58340015, // 0043 LDCONST R13 K21
+ 0x58380016, // 0044 LDCONST R14 K22
+ 0x7C280800, // 0045 CALL R10 4
+ 0x7C240200, // 0046 CALL R9 1
+ 0x2424130B, // 0047 GT R9 R9 K11
+ 0x78260007, // 0048 JMPF R9 #0051
+ 0xB8261C00, // 0049 GETNGBL R9 K14
+ 0x8C241310, // 004A GETMET R9 R9 K16
+ 0x602C0018, // 004B GETGBL R11 G24
+ 0x58300017, // 004C LDCONST R12 K23
+ 0x94340F0B, // 004D GETIDX R13 R7 K11
+ 0x7C2C0400, // 004E CALL R11 2
+ 0x58300018, // 004F LDCONST R12 K24
+ 0x7C240600, // 0050 CALL R9 3
+ 0x4C200000, // 0051 LDNIL R8
+ 0x8C240F19, // 0052 GETMET R9 R7 K25
+ 0x582C000B, // 0053 LDCONST R11 K11
+ 0x7C240400, // 0054 CALL R9 2
+ 0x7001FFC1, // 0055 JMP #0018
+ 0x4C1C0000, // 0056 LDNIL R7
+ 0x90020503, // 0057 SETMBR R0 K2 K3
+ 0x80000000, // 0058 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(HASPmota_init, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(fix_lv_version),
+ /* K1 */ be_nested_str_weak(re),
+ /* K2 */ be_nested_str_weak(re_page_target),
+ /* K3 */ be_nested_str_weak(compile),
+ /* K4 */ be_nested_str_weak(p_X5Cd_X2B),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0xA4060200, // 0002 IMPORT R1 K1
+ 0x8C080303, // 0003 GETMET R2 R1 K3
+ 0x58100004, // 0004 LDCONST R4 K4
+ 0x7C080400, // 0005 CALL R2 2
+ 0x90020402, // 0006 SETMBR R0 K2 R2
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: page_show
+********************************************************************/
+be_local_closure(HASPmota_page_show, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(lvh_pages),
+ /* K1 */ be_nested_str_weak(lvh_page_cur_idx),
+ /* K2 */ be_nested_str_weak(pages_list_sorted),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_nested_str_weak(prev),
+ /* K5 */ be_nested_str_weak(next),
+ /* K6 */ be_nested_str_weak(back),
+ /* K7 */ be_nested_str_weak(re_page_target),
+ /* K8 */ be_nested_str_weak(match),
+ /* K9 */ be_const_int(0),
+ /* K10 */ be_nested_str_weak(show),
+ }),
+ be_str_weak(page_show),
+ &be_const_str_solidified,
+ ( &(const binstruction[68]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x880C0100, // 0001 GETMBR R3 R0 K0
+ 0x88100101, // 0002 GETMBR R4 R0 K1
+ 0x940C0604, // 0003 GETIDX R3 R3 R4
+ 0x8C100102, // 0004 GETMET R4 R0 K2
+ 0x88180101, // 0005 GETMBR R6 R0 K1
+ 0x7C100400, // 0006 CALL R4 2
+ 0x6014000C, // 0007 GETGBL R5 G12
+ 0x5C180800, // 0008 MOVE R6 R4
+ 0x7C140200, // 0009 CALL R5 1
+ 0x18140B03, // 000A LE R5 R5 K3
+ 0x78160000, // 000B JMPF R5 #000D
+ 0x80000A00, // 000C RET 0
+ 0x1C140304, // 000D EQ R5 R1 K4
+ 0x78160009, // 000E JMPF R5 #0019
+ 0x60140009, // 000F GETGBL R5 G9
+ 0x88180704, // 0010 GETMBR R6 R3 K4
+ 0x7C140200, // 0011 CALL R5 1
+ 0x5C080A00, // 0012 MOVE R2 R5
+ 0x4C140000, // 0013 LDNIL R5
+ 0x1C140405, // 0014 EQ R5 R2 R5
+ 0x78160001, // 0015 JMPF R5 #0018
+ 0x5415FFFE, // 0016 LDINT R5 -1
+ 0x94080805, // 0017 GETIDX R2 R4 R5
+ 0x70020020, // 0018 JMP #003A
+ 0x1C140305, // 0019 EQ R5 R1 K5
+ 0x78160008, // 001A JMPF R5 #0024
+ 0x60140009, // 001B GETGBL R5 G9
+ 0x88180705, // 001C GETMBR R6 R3 K5
+ 0x7C140200, // 001D CALL R5 1
+ 0x5C080A00, // 001E MOVE R2 R5
+ 0x4C140000, // 001F LDNIL R5
+ 0x1C140405, // 0020 EQ R5 R2 R5
+ 0x78160000, // 0021 JMPF R5 #0023
+ 0x94080903, // 0022 GETIDX R2 R4 K3
+ 0x70020015, // 0023 JMP #003A
+ 0x1C140306, // 0024 EQ R5 R1 K6
+ 0x78160008, // 0025 JMPF R5 #002F
+ 0x60140009, // 0026 GETGBL R5 G9
+ 0x88180706, // 0027 GETMBR R6 R3 K6
+ 0x7C140200, // 0028 CALL R5 1
+ 0x5C080A00, // 0029 MOVE R2 R5
+ 0x4C140000, // 002A LDNIL R5
+ 0x1C140405, // 002B EQ R5 R2 R5
+ 0x78160000, // 002C JMPF R5 #002E
+ 0x58080003, // 002D LDCONST R2 K3
+ 0x7002000A, // 002E JMP #003A
+ 0x88140107, // 002F GETMBR R5 R0 K7
+ 0x8C140B08, // 0030 GETMET R5 R5 K8
+ 0x5C1C0200, // 0031 MOVE R7 R1
+ 0x7C140400, // 0032 CALL R5 2
+ 0x78160005, // 0033 JMPF R5 #003A
+ 0x60140009, // 0034 GETGBL R5 G9
+ 0x5419FFFE, // 0035 LDINT R6 -1
+ 0x401A0606, // 0036 CONNECT R6 K3 R6
+ 0x94180206, // 0037 GETIDX R6 R1 R6
+ 0x7C140200, // 0038 CALL R5 1
+ 0x5C080A00, // 0039 MOVE R2 R5
+ 0x4C140000, // 003A LDNIL R5
+ 0x20140405, // 003B NE R5 R2 R5
+ 0x78160005, // 003C JMPF R5 #0043
+ 0x24140509, // 003D GT R5 R2 K9
+ 0x78160003, // 003E JMPF R5 #0043
+ 0x88140100, // 003F GETMBR R5 R0 K0
+ 0x94140A02, // 0040 GETIDX R5 R5 R2
+ 0x8C140B0A, // 0041 GETMET R5 R5 K10
+ 0x7C140200, // 0042 CALL R5 1
+ 0x80000000, // 0043 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: start
********************************************************************/
@@ -6719,208 +8469,6 @@ be_local_closure(HASPmota_start, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(HASPmota_init, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(re),
- /* K1 */ be_nested_str_weak(re_page_target),
- /* K2 */ be_nested_str_weak(compile),
- /* K3 */ be_nested_str_weak(p_X5Cd_X2B),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080302, // 0001 GETMET R2 R1 K2
- 0x58100003, // 0002 LDCONST R4 K3
- 0x7C080400, // 0003 CALL R2 2
- 0x90020202, // 0004 SETMBR R0 K1 R2
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: register_event
-********************************************************************/
-be_local_closure(HASPmota_register_event, /* name */
- be_nested_proto(
- 13, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(event_dispatch),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x68040000, // 0000 GETUPV R1 U0
- 0x8C040300, // 0001 GETMET R1 R1 K0
- 0x5C0C0000, // 0002 MOVE R3 R0
- 0x7C040400, // 0003 CALL R1 2
- 0x80040200, // 0004 RET 1 R1
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(cb),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(event_cb),
- /* K3 */ be_nested_str_weak(gen_cb),
- /* K4 */ be_nested_str_weak(_lv_obj),
- /* K5 */ be_nested_str_weak(add_event_cb),
- /* K6 */ be_nested_str_weak(toptr),
- }),
- be_str_weak(register_event),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x4C180000, // 0003 LDNIL R6
- 0x1C140A06, // 0004 EQ R5 R5 R6
- 0x78160003, // 0005 JMPF R5 #000A
- 0x8C140703, // 0006 GETMET R5 R3 K3
- 0x841C0000, // 0007 CLOSURE R7 P0
- 0x7C140400, // 0008 CALL R5 2
- 0x90020405, // 0009 SETMBR R0 K2 R5
- 0x88140304, // 000A GETMBR R5 R1 K4
- 0x8C180B05, // 000B GETMET R6 R5 K5
- 0x88200102, // 000C GETMBR R8 R0 K2
- 0x5C240400, // 000D MOVE R9 R2
- 0x8C280906, // 000E GETMET R10 R4 K6
- 0x5C300200, // 000F MOVE R12 R1
- 0x7C280400, // 0010 CALL R10 2
- 0x7C180800, // 0011 CALL R6 4
- 0xA0000000, // 0012 CLOSE R0
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_page
-********************************************************************/
-be_local_closure(HASPmota_parse_page, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(has),
- /* K1 */ be_nested_str_weak(page),
- /* K2 */ be_nested_str_weak(int),
- /* K3 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K4 */ be_nested_str_weak(lvh_pages),
- /* K5 */ be_nested_str_weak(contains),
- /* K6 */ be_nested_str_weak(lvh_page),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(id),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(get_page_cur),
- /* K11 */ be_nested_str_weak(prev),
- /* K12 */ be_nested_str_weak(next),
- /* K13 */ be_nested_str_weak(back),
- }),
- be_str_weak(parse_page),
- &be_const_str_solidified,
- ( &(const binstruction[54]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x780A0030, // 0003 JMPF R2 #0035
- 0x60080004, // 0004 GETGBL R2 G4
- 0x940C0301, // 0005 GETIDX R3 R1 K1
- 0x7C080200, // 0006 CALL R2 1
- 0x1C080502, // 0007 EQ R2 R2 K2
- 0x780A002B, // 0008 JMPF R2 #0035
- 0x60080009, // 0009 GETGBL R2 G9
- 0x940C0301, // 000A GETIDX R3 R1 K1
- 0x7C080200, // 000B CALL R2 1
- 0x90020602, // 000C SETMBR R0 K3 R2
- 0x880C0104, // 000D GETMBR R3 R0 K4
- 0x8C0C0705, // 000E GETMET R3 R3 K5
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x740E0006, // 0011 JMPT R3 #0019
- 0x880C0106, // 0012 GETMBR R3 R0 K6
- 0x88100104, // 0013 GETMBR R4 R0 K4
- 0x5C140600, // 0014 MOVE R5 R3
- 0x5C180400, // 0015 MOVE R6 R2
- 0x5C1C0000, // 0016 MOVE R7 R0
- 0x7C140400, // 0017 CALL R5 2
- 0x98100405, // 0018 SETIDX R4 R2 R5
- 0x8C0C0307, // 0019 GETMET R3 R1 K7
- 0x58140008, // 001A LDCONST R5 K8
- 0x7C0C0400, // 001B CALL R3 2
- 0x1C0C0709, // 001C EQ R3 R3 K9
- 0x780E0016, // 001D JMPF R3 #0035
- 0x8C0C010A, // 001E GETMET R3 R0 K10
- 0x7C0C0200, // 001F CALL R3 1
- 0x60100009, // 0020 GETGBL R4 G9
- 0x8C140307, // 0021 GETMET R5 R1 K7
- 0x581C000B, // 0022 LDCONST R7 K11
- 0x4C200000, // 0023 LDNIL R8
- 0x7C140600, // 0024 CALL R5 3
- 0x7C100200, // 0025 CALL R4 1
- 0x900E1604, // 0026 SETMBR R3 K11 R4
- 0x60100009, // 0027 GETGBL R4 G9
- 0x8C140307, // 0028 GETMET R5 R1 K7
- 0x581C000C, // 0029 LDCONST R7 K12
- 0x4C200000, // 002A LDNIL R8
- 0x7C140600, // 002B CALL R5 3
- 0x7C100200, // 002C CALL R4 1
- 0x900E1804, // 002D SETMBR R3 K12 R4
- 0x60100009, // 002E GETGBL R4 G9
- 0x8C140307, // 002F GETMET R5 R1 K7
- 0x581C000D, // 0030 LDCONST R7 K13
- 0x4C200000, // 0031 LDNIL R8
- 0x7C140600, // 0032 CALL R5 3
- 0x7C100200, // 0033 CALL R4 1
- 0x900E1A04, // 0034 SETMBR R3 K13 R4
- 0x80000000, // 0035 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: deinit
********************************************************************/
@@ -6968,666 +8516,60 @@ be_local_closure(HASPmota_deinit, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: page_dir_to
-********************************************************************/
-be_local_closure(HASPmota_page_dir_to, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(pages_list_sorted),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_const_int(2),
- /* K4 */ be_nested_str_weak(find),
- }),
- be_str_weak(page_dir_to),
- &be_const_str_solidified,
- ( &(const binstruction[32]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0403, // 0004 EQ R3 R2 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x80060200, // 0006 RET 1 K1
- 0x600C000C, // 0007 GETGBL R3 G12
- 0x5C100400, // 0008 MOVE R4 R2
- 0x7C0C0200, // 0009 CALL R3 1
- 0x18100702, // 000A LE R4 R3 K2
- 0x78120000, // 000B JMPF R4 #000D
- 0x80060200, // 000C RET 1 K1
- 0x1C100703, // 000D EQ R4 R3 K3
- 0x78120000, // 000E JMPF R4 #0010
- 0x80060400, // 000F RET 1 K2
- 0x8C100504, // 0010 GETMET R4 R2 K4
- 0x5C180200, // 0011 MOVE R6 R1
- 0x7C100400, // 0012 CALL R4 2
- 0x4C140000, // 0013 LDNIL R5
- 0x1C140805, // 0014 EQ R5 R4 R5
- 0x78160000, // 0015 JMPF R5 #0017
- 0x80060200, // 0016 RET 1 K1
- 0x00140702, // 0017 ADD R5 R3 K2
- 0x0C140B03, // 0018 DIV R5 R5 K3
- 0x18140805, // 0019 LE R5 R4 R5
- 0x78160001, // 001A JMPF R5 #001D
- 0x80060400, // 001B RET 1 K2
- 0x70020001, // 001C JMP #001F
- 0x5415FFFE, // 001D LDINT R5 -1
- 0x80040A00, // 001E RET 1 R5
- 0x80000000, // 001F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _load
-********************************************************************/
-be_local_closure(HASPmota__load, /* name */
- be_nested_proto(
- 14, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(json),
- /* K2 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(lvh_page),
- /* K5 */ be_nested_str_weak(lvh_pages),
- /* K6 */ be_nested_str_weak(r),
- /* K7 */ be_nested_str_weak(read),
- /* K8 */ be_nested_str_weak(close),
- /* K9 */ be_nested_str_weak(split),
- /* K10 */ be_nested_str_weak(_X0A),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(load),
- /* K13 */ be_nested_str_weak(instance),
- /* K14 */ be_nested_str_weak(parse_page),
- /* K15 */ be_nested_str_weak(parse_obj),
- /* K16 */ be_nested_str_weak(remove),
- }),
- be_str_weak(_load),
- &be_const_str_solidified,
- ( &(const binstruction[54]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x90020503, // 0002 SETMBR R0 K2 K3
- 0x88100104, // 0003 GETMBR R4 R0 K4
- 0x88140105, // 0004 GETMBR R5 R0 K5
- 0x5C180800, // 0005 MOVE R6 R4
- 0x581C0003, // 0006 LDCONST R7 K3
- 0x5C200000, // 0007 MOVE R8 R0
- 0x7C180400, // 0008 CALL R6 2
- 0x98160606, // 0009 SETIDX R5 K3 R6
- 0x60140011, // 000A GETGBL R5 G17
- 0x5C180200, // 000B MOVE R6 R1
- 0x581C0006, // 000C LDCONST R7 K6
- 0x7C140400, // 000D CALL R5 2
- 0x8C180B07, // 000E GETMET R6 R5 K7
- 0x7C180200, // 000F CALL R6 1
- 0x8C1C0B08, // 0010 GETMET R7 R5 K8
- 0x7C1C0200, // 0011 CALL R7 1
- 0x8C1C0509, // 0012 GETMET R7 R2 K9
- 0x5C240C00, // 0013 MOVE R9 R6
- 0x5828000A, // 0014 LDCONST R10 K10
- 0x7C1C0600, // 0015 CALL R7 3
- 0x4C140000, // 0016 LDNIL R5
- 0x4C180000, // 0017 LDNIL R6
- 0x6020000C, // 0018 GETGBL R8 G12
- 0x5C240E00, // 0019 MOVE R9 R7
- 0x7C200200, // 001A CALL R8 1
- 0x2420110B, // 001B GT R8 R8 K11
- 0x78220015, // 001C JMPF R8 #0033
- 0x8C20070C, // 001D GETMET R8 R3 K12
- 0x94280F0B, // 001E GETIDX R10 R7 K11
- 0x7C200400, // 001F CALL R8 2
- 0x60240004, // 0020 GETGBL R9 G4
- 0x5C281000, // 0021 MOVE R10 R8
- 0x7C240200, // 0022 CALL R9 1
- 0x1C24130D, // 0023 EQ R9 R9 K13
- 0x78260008, // 0024 JMPF R9 #002E
- 0x8C24010E, // 0025 GETMET R9 R0 K14
- 0x5C2C1000, // 0026 MOVE R11 R8
- 0x7C240400, // 0027 CALL R9 2
- 0x8C24010F, // 0028 GETMET R9 R0 K15
- 0x5C2C1000, // 0029 MOVE R11 R8
- 0x88300105, // 002A GETMBR R12 R0 K5
- 0x88340102, // 002B GETMBR R13 R0 K2
- 0x9430180D, // 002C GETIDX R12 R12 R13
- 0x7C240600, // 002D CALL R9 3
- 0x4C200000, // 002E LDNIL R8
- 0x8C240F10, // 002F GETMET R9 R7 K16
- 0x582C000B, // 0030 LDCONST R11 K11
- 0x7C240400, // 0031 CALL R9 2
- 0x7001FFE4, // 0032 JMP #0018
- 0x4C1C0000, // 0033 LDNIL R7
- 0x90020503, // 0034 SETMBR R0 K2 K3
- 0x80000000, // 0035 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse
-********************************************************************/
-be_local_closure(HASPmota_parse, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(load),
- /* K2 */ be_nested_str_weak(instance),
- /* K3 */ be_nested_str_weak(parse_page),
- /* K4 */ be_nested_str_weak(parse_obj),
- /* K5 */ be_nested_str_weak(lvh_pages),
- /* K6 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K7 */ be_nested_str_weak(value_error),
- /* K8 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line),
- }),
- be_str_weak(parse),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x60100004, // 0004 GETGBL R4 G4
- 0x5C140600, // 0005 MOVE R5 R3
- 0x7C100200, // 0006 CALL R4 1
- 0x1C100902, // 0007 EQ R4 R4 K2
- 0x78120009, // 0008 JMPF R4 #0013
- 0x8C100103, // 0009 GETMET R4 R0 K3
- 0x5C180600, // 000A MOVE R6 R3
- 0x7C100400, // 000B CALL R4 2
- 0x8C100104, // 000C GETMET R4 R0 K4
- 0x5C180600, // 000D MOVE R6 R3
- 0x881C0105, // 000E GETMBR R7 R0 K5
- 0x88200106, // 000F GETMBR R8 R0 K6
- 0x941C0E08, // 0010 GETIDX R7 R7 R8
- 0x7C100600, // 0011 CALL R4 3
- 0x70020000, // 0012 JMP #0014
- 0xB0060F08, // 0013 RAISE 1 K7 K8
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: sort
-********************************************************************/
-be_local_closure(HASPmota_sort, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_HASPmota),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(sort),
- &be_const_str_solidified,
- ( &(const binstruction[30]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080010, // 0001 GETGBL R2 G16
- 0x600C000C, // 0002 GETGBL R3 G12
- 0x5C100000, // 0003 MOVE R4 R0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x040C0701, // 0005 SUB R3 R3 K1
- 0x400E0203, // 0006 CONNECT R3 K1 R3
- 0x7C080200, // 0007 CALL R2 1
- 0xA8020010, // 0008 EXBLK 0 #001A
- 0x5C0C0400, // 0009 MOVE R3 R2
- 0x7C0C0000, // 000A CALL R3 0
- 0x94100003, // 000B GETIDX R4 R0 R3
- 0x5C140600, // 000C MOVE R5 R3
- 0x24180B02, // 000D GT R6 R5 K2
- 0x781A0008, // 000E JMPF R6 #0018
- 0x04180B01, // 000F SUB R6 R5 K1
- 0x94180006, // 0010 GETIDX R6 R0 R6
- 0x24180C04, // 0011 GT R6 R6 R4
- 0x781A0004, // 0012 JMPF R6 #0018
- 0x04180B01, // 0013 SUB R6 R5 K1
- 0x94180006, // 0014 GETIDX R6 R0 R6
- 0x98000A06, // 0015 SETIDX R0 R5 R6
- 0x04140B01, // 0016 SUB R5 R5 K1
- 0x7001FFF4, // 0017 JMP #000D
- 0x98000A04, // 0018 SETIDX R0 R5 R4
- 0x7001FFEE, // 0019 JMP #0009
- 0x58080003, // 001A LDCONST R2 K3
- 0xAC080200, // 001B CATCH R2 1 0
- 0xB0080000, // 001C RAISE 2 R0 R0
- 0x80040000, // 001D RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_obj
-********************************************************************/
-be_local_closure(HASPmota_parse_obj, /* name */
- be_nested_proto(
- 20, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(id),
- /* K4 */ be_nested_str_weak(obj),
- /* K5 */ be_nested_str_weak(get_page_cur),
- /* K6 */ be_nested_str_weak(berry_run),
- /* K7 */ be_nested_str_weak(nil),
- /* K8 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20),
- /* K11 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A),
- /* K12 */ be_nested_str_weak(parentid),
- /* K13 */ be_nested_str_weak(get_obj),
- /* K14 */ be_nested_str_weak(_lv_obj),
- /* K15 */ be_nested_str_weak(get_scr),
- /* K16 */ be_nested_str_weak(get),
- /* K17 */ be_nested_str_weak(lvh_),
- /* K18 */ be_nested_str_weak(class),
- /* K19 */ be_nested_str_weak(lvh_obj),
- /* K20 */ be_nested_str_weak(module),
- /* K21 */ be_nested_str_weak(HSP_X3A_X20cannot_X20find_X20object_X20of_X20type_X20),
- /* K22 */ be_nested_str_weak(set_obj),
- /* K23 */ be_nested_str_weak(p_X25ib_X25i),
- /* K24 */ be_nested_str_weak(function),
- /* K25 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K26 */ be_const_int(0),
- /* K27 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0),
- /* K28 */ be_nested_str_weak(keys),
- /* K29 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(parse_obj),
- &be_const_str_solidified,
- ( &(const binstruction[217]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
- 0x60140009, // 0002 GETGBL R5 G9
- 0x8C180302, // 0003 GETMET R6 R1 K2
- 0x58200003, // 0004 LDCONST R8 K3
- 0x7C180400, // 0005 CALL R6 2
- 0x7C140200, // 0006 CALL R5 1
- 0x60180008, // 0007 GETGBL R6 G8
- 0x8C1C0302, // 0008 GETMET R7 R1 K2
- 0x58240004, // 0009 LDCONST R9 K4
- 0x7C1C0400, // 000A CALL R7 2
- 0x7C180200, // 000B CALL R6 1
- 0x4C1C0000, // 000C LDNIL R7
- 0x8C200105, // 000D GETMET R8 R0 K5
- 0x7C200200, // 000E CALL R8 1
- 0x60240008, // 000F GETGBL R9 G8
- 0x8C280302, // 0010 GETMET R10 R1 K2
- 0x58300006, // 0011 LDCONST R12 K6
- 0x7C280400, // 0012 CALL R10 2
- 0x7C240200, // 0013 CALL R9 1
- 0x4C280000, // 0014 LDNIL R10
- 0x202C1307, // 0015 NE R11 R9 K7
- 0x782E0012, // 0016 JMPF R11 #002A
- 0xA8020005, // 0017 EXBLK 0 #001E
- 0x602C000D, // 0018 GETGBL R11 G13
- 0x5C301200, // 0019 MOVE R12 R9
- 0x7C2C0200, // 001A CALL R11 1
- 0x5C281600, // 001B MOVE R10 R11
- 0xA8040001, // 001C EXBLK 1 1
- 0x7002000B, // 001D JMP #002A
- 0xAC2C0002, // 001E CATCH R11 0 2
- 0x70020008, // 001F JMP #0029
- 0x60340001, // 0020 GETGBL R13 G1
- 0x60380018, // 0021 GETGBL R14 G24
- 0x583C0008, // 0022 LDCONST R15 K8
- 0x5C401200, // 0023 MOVE R16 R9
- 0x5C441600, // 0024 MOVE R17 R11
- 0x5C481800, // 0025 MOVE R18 R12
- 0x7C380800, // 0026 CALL R14 4
- 0x7C340200, // 0027 CALL R13 1
- 0x70020000, // 0028 JMP #002A
- 0xB0080000, // 0029 RAISE 2 R0 R0
- 0x4C2C0000, // 002A LDNIL R11
- 0x1C2C0A0B, // 002B EQ R11 R5 R11
- 0x782E0000, // 002C JMPF R11 #002E
- 0x80001600, // 002D RET 0
- 0x202C0D07, // 002E NE R11 R6 K7
- 0x782E006E, // 002F JMPF R11 #009F
- 0x4C2C0000, // 0030 LDNIL R11
- 0x202C0A0B, // 0031 NE R11 R5 R11
- 0x782E006B, // 0032 JMPF R11 #009F
- 0x142C0B09, // 0033 LT R11 R5 K9
- 0x742E0002, // 0034 JMPT R11 #0038
- 0x542E00FD, // 0035 LDINT R11 254
- 0x242C0A0B, // 0036 GT R11 R5 R11
- 0x782E0008, // 0037 JMPF R11 #0041
- 0x602C0001, // 0038 GETGBL R11 G1
- 0x60300008, // 0039 GETGBL R12 G8
- 0x5C340A00, // 003A MOVE R13 R5
- 0x7C300200, // 003B CALL R12 1
- 0x0032140C, // 003C ADD R12 K10 R12
- 0x0030190B, // 003D ADD R12 R12 K11
- 0x00301806, // 003E ADD R12 R12 R6
- 0x7C2C0200, // 003F CALL R11 1
- 0x80001600, // 0040 RET 0
- 0x4C2C0000, // 0041 LDNIL R11
- 0x60300009, // 0042 GETGBL R12 G9
- 0x8C340302, // 0043 GETMET R13 R1 K2
- 0x583C000C, // 0044 LDCONST R15 K12
- 0x7C340400, // 0045 CALL R13 2
- 0x7C300200, // 0046 CALL R12 1
- 0x4C340000, // 0047 LDNIL R13
- 0x2034180D, // 0048 NE R13 R12 R13
- 0x78360006, // 0049 JMPF R13 #0051
- 0x8C34110D, // 004A GETMET R13 R8 K13
- 0x5C3C1800, // 004B MOVE R15 R12
- 0x7C340400, // 004C CALL R13 2
- 0x4C380000, // 004D LDNIL R14
- 0x20381A0E, // 004E NE R14 R13 R14
- 0x783A0000, // 004F JMPF R14 #0051
- 0x882C1B0E, // 0050 GETMBR R11 R13 K14
- 0x4C340000, // 0051 LDNIL R13
- 0x1C34160D, // 0052 EQ R13 R11 R13
- 0x78360002, // 0053 JMPF R13 #0057
- 0x8C34110F, // 0054 GETMET R13 R8 K15
- 0x7C340200, // 0055 CALL R13 1
- 0x5C2C1A00, // 0056 MOVE R11 R13
- 0x8C340910, // 0057 GETMET R13 R4 K16
- 0x5C3C0000, // 0058 MOVE R15 R0
- 0x00422206, // 0059 ADD R16 K17 R6
- 0x7C340600, // 005A CALL R13 3
- 0x4C380000, // 005B LDNIL R14
- 0x4C3C0000, // 005C LDNIL R15
- 0x1C3C1A0F, // 005D EQ R15 R13 R15
- 0x783E0010, // 005E JMPF R15 #0070
- 0x8C3C0910, // 005F GETMET R15 R4 K16
- 0x5C440600, // 0060 MOVE R17 R3
- 0x5C480C00, // 0061 MOVE R18 R6
- 0x7C3C0600, // 0062 CALL R15 3
- 0x4C400000, // 0063 LDNIL R16
- 0x20401E10, // 0064 NE R16 R15 R16
- 0x78420009, // 0065 JMPF R16 #0070
- 0x60400004, // 0066 GETGBL R16 G4
- 0x5C441E00, // 0067 MOVE R17 R15
- 0x7C400200, // 0068 CALL R16 1
- 0x1C402112, // 0069 EQ R16 R16 K18
- 0x78420004, // 006A JMPF R16 #0070
- 0x5C401E00, // 006B MOVE R16 R15
- 0x5C441600, // 006C MOVE R17 R11
- 0x7C400200, // 006D CALL R16 1
- 0x5C382000, // 006E MOVE R14 R16
- 0x88340113, // 006F GETMBR R13 R0 K19
- 0x4C3C0000, // 0070 LDNIL R15
- 0x1C3C1A0F, // 0071 EQ R15 R13 R15
- 0x783E000F, // 0072 JMPF R15 #0083
- 0x8C3C0914, // 0073 GETMET R15 R4 K20
- 0x5C440C00, // 0074 MOVE R17 R6
- 0x7C3C0400, // 0075 CALL R15 2
- 0x4C400000, // 0076 LDNIL R16
- 0x20401E10, // 0077 NE R16 R15 R16
- 0x78420009, // 0078 JMPF R16 #0083
- 0x60400004, // 0079 GETGBL R16 G4
- 0x5C441E00, // 007A MOVE R17 R15
- 0x7C400200, // 007B CALL R16 1
- 0x1C402112, // 007C EQ R16 R16 K18
- 0x78420004, // 007D JMPF R16 #0083
- 0x5C401E00, // 007E MOVE R16 R15
- 0x5C441600, // 007F MOVE R17 R11
- 0x7C400200, // 0080 CALL R16 1
- 0x5C382000, // 0081 MOVE R14 R16
- 0x88340113, // 0082 GETMBR R13 R0 K19
- 0x4C3C0000, // 0083 LDNIL R15
- 0x1C3C1A0F, // 0084 EQ R15 R13 R15
- 0x783E0006, // 0085 JMPF R15 #008D
- 0x603C0001, // 0086 GETGBL R15 G1
- 0x60400008, // 0087 GETGBL R16 G8
- 0x5C440C00, // 0088 MOVE R17 R6
- 0x7C400200, // 0089 CALL R16 1
- 0x00422A10, // 008A ADD R16 K21 R16
- 0x7C3C0200, // 008B CALL R15 1
- 0x80001E00, // 008C RET 0
- 0x5C3C1A00, // 008D MOVE R15 R13
- 0x5C401600, // 008E MOVE R16 R11
- 0x5C440400, // 008F MOVE R17 R2
- 0x5C480200, // 0090 MOVE R18 R1
- 0x5C4C1C00, // 0091 MOVE R19 R14
- 0x7C3C0800, // 0092 CALL R15 4
- 0x5C1C1E00, // 0093 MOVE R7 R15
- 0x8C3C1116, // 0094 GETMET R15 R8 K22
- 0x5C440A00, // 0095 MOVE R17 R5
- 0x5C480E00, // 0096 MOVE R18 R7
- 0x7C3C0600, // 0097 CALL R15 3
- 0x603C0018, // 0098 GETGBL R15 G24
- 0x58400017, // 0099 LDCONST R16 K23
- 0x8C441103, // 009A GETMET R17 R8 K3
- 0x7C440200, // 009B CALL R17 1
- 0x5C480A00, // 009C MOVE R18 R5
- 0x7C3C0600, // 009D CALL R15 3
- 0x900C1E07, // 009E SETMBR R3 R15 R7
- 0x4C2C0000, // 009F LDNIL R11
- 0x202C140B, // 00A0 NE R11 R10 R11
- 0x782E0018, // 00A1 JMPF R11 #00BB
- 0xA802000B, // 00A2 EXBLK 0 #00AF
- 0x5C2C1400, // 00A3 MOVE R11 R10
- 0x7C2C0000, // 00A4 CALL R11 0
- 0x60300004, // 00A5 GETGBL R12 G4
- 0x5C341600, // 00A6 MOVE R13 R11
- 0x7C300200, // 00A7 CALL R12 1
- 0x1C301918, // 00A8 EQ R12 R12 K24
- 0x78320002, // 00A9 JMPF R12 #00AD
- 0x5C301600, // 00AA MOVE R12 R11
- 0x5C340E00, // 00AB MOVE R13 R7
- 0x7C300200, // 00AC CALL R12 1
- 0xA8040001, // 00AD EXBLK 1 1
- 0x7002000B, // 00AE JMP #00BB
- 0xAC2C0002, // 00AF CATCH R11 0 2
- 0x70020008, // 00B0 JMP #00BA
- 0x60340001, // 00B1 GETGBL R13 G1
- 0x60380018, // 00B2 GETGBL R14 G24
- 0x583C0019, // 00B3 LDCONST R15 K25
- 0x5C401200, // 00B4 MOVE R16 R9
- 0x5C441600, // 00B5 MOVE R17 R11
- 0x5C481800, // 00B6 MOVE R18 R12
- 0x7C380800, // 00B7 CALL R14 4
- 0x7C340200, // 00B8 CALL R13 1
- 0x70020000, // 00B9 JMP #00BB
- 0xB0080000, // 00BA RAISE 2 R0 R0
- 0x1C2C0B1A, // 00BB EQ R11 R5 K26
- 0x782E0005, // 00BC JMPF R11 #00C3
- 0x202C0D07, // 00BD NE R11 R6 K7
- 0x782E0003, // 00BE JMPF R11 #00C3
- 0x602C0001, // 00BF GETGBL R11 G1
- 0x5830001B, // 00C0 LDCONST R12 K27
- 0x7C2C0200, // 00C1 CALL R11 1
- 0x80001600, // 00C2 RET 0
- 0x1C2C0B1A, // 00C3 EQ R11 R5 K26
- 0x782E0005, // 00C4 JMPF R11 #00CB
- 0x8C2C0105, // 00C5 GETMET R11 R0 K5
- 0x7C2C0200, // 00C6 CALL R11 1
- 0x8C2C170D, // 00C7 GETMET R11 R11 K13
- 0x5834001A, // 00C8 LDCONST R13 K26
- 0x7C2C0400, // 00C9 CALL R11 2
- 0x5C1C1600, // 00CA MOVE R7 R11
- 0x602C0010, // 00CB GETGBL R11 G16
- 0x8C30031C, // 00CC GETMET R12 R1 K28
- 0x7C300200, // 00CD CALL R12 1
- 0x7C2C0200, // 00CE CALL R11 1
- 0xA8020004, // 00CF EXBLK 0 #00D5
- 0x5C301600, // 00D0 MOVE R12 R11
- 0x7C300000, // 00D1 CALL R12 0
- 0x9434020C, // 00D2 GETIDX R13 R1 R12
- 0x901C180D, // 00D3 SETMBR R7 R12 R13
- 0x7001FFFA, // 00D4 JMP #00D0
- 0x582C001D, // 00D5 LDCONST R11 K29
- 0xAC2C0200, // 00D6 CATCH R11 1 0
- 0xB0080000, // 00D7 RAISE 2 R0 R0
- 0x80000000, // 00D8 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_dispatch
-********************************************************************/
-be_local_closure(HASPmota_event_dispatch, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(toptr),
- /* K2 */ be_nested_str_weak(event),
- /* K3 */ be_nested_str_weak(_change_buffer),
- /* K4 */ be_nested_str_weak(lv),
- /* K5 */ be_nested_str_weak(lv_event),
- /* K6 */ be_nested_str_weak(user_data),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(fromptr),
- /* K9 */ be_nested_str_weak(instance),
- /* K10 */ be_nested_str_weak(event_cb),
- }),
- be_str_weak(event_dispatch),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x88100102, // 0004 GETMBR R4 R0 K2
- 0x78120004, // 0005 JMPF R4 #000B
- 0x88100102, // 0006 GETMBR R4 R0 K2
- 0x8C100903, // 0007 GETMET R4 R4 K3
- 0x5C180600, // 0008 MOVE R6 R3
- 0x7C100400, // 0009 CALL R4 2
- 0x70020004, // 000A JMP #0010
- 0xB8120800, // 000B GETNGBL R4 K4
- 0x8C100905, // 000C GETMET R4 R4 K5
- 0x5C180600, // 000D MOVE R6 R3
- 0x7C100400, // 000E CALL R4 2
- 0x90020404, // 000F SETMBR R0 K2 R4
- 0x88100102, // 0010 GETMBR R4 R0 K2
- 0x88100906, // 0011 GETMBR R4 R4 K6
- 0x60140009, // 0012 GETGBL R5 G9
- 0x5C180800, // 0013 MOVE R6 R4
- 0x7C140200, // 0014 CALL R5 1
- 0x20140B07, // 0015 NE R5 R5 K7
- 0x7816000A, // 0016 JMPF R5 #0022
- 0x8C140508, // 0017 GETMET R5 R2 K8
- 0x5C1C0800, // 0018 MOVE R7 R4
- 0x7C140400, // 0019 CALL R5 2
- 0x60180004, // 001A GETGBL R6 G4
- 0x5C1C0A00, // 001B MOVE R7 R5
- 0x7C180200, // 001C CALL R6 1
- 0x1C180D09, // 001D EQ R6 R6 K9
- 0x781A0002, // 001E JMPF R6 #0022
- 0x8C180B0A, // 001F GETMET R6 R5 K10
- 0x88200102, // 0020 GETMBR R8 R0 K2
- 0x7C180400, // 0021 CALL R6 2
- 0x80000000, // 0022 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: HASPmota
********************************************************************/
be_local_class(HASPmota,
10,
NULL,
- be_nested_map(43,
+ be_nested_map(46,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(lvh_textarea, 41), be_const_class(be_class_lvh_textarea) },
- { be_const_key_weak(scr, -1), be_const_var(3) },
- { be_const_key_weak(event_dispatch, 16), be_const_closure(HASPmota_event_dispatch_closure) },
- { be_const_key_weak(lvh_bar, -1), be_const_class(be_class_lvh_bar) },
- { be_const_key_weak(lvh_img, -1), be_const_class(be_class_lvh_img) },
- { be_const_key_weak(event, -1), be_const_var(8) },
- { be_const_key_weak(do_action, 33), be_const_closure(HASPmota_do_action_closure) },
- { be_const_key_weak(pages_list_sorted, -1), be_const_closure(HASPmota_pages_list_sorted_closure) },
- { be_const_key_weak(lvh_btnmatrix, 42), be_const_class(be_class_lvh_btnmatrix) },
- { be_const_key_weak(start, -1), be_const_closure(HASPmota_start_closure) },
- { be_const_key_weak(init, 5), be_const_closure(HASPmota_init_closure) },
- { be_const_key_weak(lvh_scr, -1), be_const_class(be_class_lvh_scr) },
+ { be_const_key_weak(event_dispatch, -1), be_const_closure(HASPmota_event_dispatch_closure) },
+ { be_const_key_weak(lvh_slider, -1), be_const_class(be_class_lvh_slider) },
{ be_const_key_weak(parse_page, -1), be_const_closure(HASPmota_parse_page_closure) },
- { be_const_key_weak(register_event, 24), be_const_closure(HASPmota_register_event_closure) },
- { be_const_key_weak(lvh_roller, 34), be_const_class(be_class_lvh_roller) },
- { be_const_key_weak(lvh_page, 11), be_const_class(be_class_lvh_page) },
- { be_const_key_weak(lvh_page_cur_idx, -1), be_const_var(6) },
- { be_const_key_weak(lvh_arc, 12), be_const_class(be_class_lvh_arc) },
- { be_const_key_weak(hres, 38), be_const_var(1) },
- { be_const_key_weak(dark, -1), be_const_var(0) },
- { be_const_key_weak(lvh_label, 37), be_const_class(be_class_lvh_label) },
- { be_const_key_weak(deinit, 14), be_const_closure(HASPmota_deinit_closure) },
{ be_const_key_weak(page_dir_to, -1), be_const_closure(HASPmota_page_dir_to_closure) },
- { be_const_key_weak(parse_obj, -1), be_const_closure(HASPmota_parse_obj_closure) },
+ { be_const_key_weak(fix_lv_version, -1), be_const_static_closure(HASPmota_fix_lv_version_closure) },
+ { be_const_key_weak(register_event, 41), be_const_closure(HASPmota_register_event_closure) },
+ { be_const_key_weak(lvh_img, 15), be_const_class(be_class_lvh_img) },
+ { be_const_key_weak(parse_obj, 44), be_const_closure(HASPmota_parse_obj_closure) },
+ { be_const_key_weak(lvh_switch, 3), be_const_class(be_class_lvh_switch) },
+ { be_const_key_weak(event_cb, -1), be_const_var(9) },
+ { be_const_key_weak(parse, 7), be_const_closure(HASPmota_parse_closure) },
+ { be_const_key_weak(do_action, -1), be_const_closure(HASPmota_do_action_closure) },
+ { be_const_key_weak(lvh_roller, 33), be_const_class(be_class_lvh_roller) },
+ { be_const_key_weak(lvh_dropdown, 9), be_const_class(be_class_lvh_dropdown) },
+ { be_const_key_weak(lvh_pages, -1), be_const_var(5) },
+ { be_const_key_weak(start, 20), be_const_closure(HASPmota_start_closure) },
+ { be_const_key_weak(pages_list_sorted, -1), be_const_closure(HASPmota_pages_list_sorted_closure) },
{ be_const_key_weak(lvh_spinner, -1), be_const_class(be_class_lvh_spinner) },
- { be_const_key_weak(_load, -1), be_const_closure(HASPmota__load_closure) },
- { be_const_key_weak(lvh_qrcode, -1), be_const_class(be_class_lvh_qrcode) },
- { be_const_key_weak(parse, -1), be_const_closure(HASPmota_parse_closure) },
- { be_const_key_weak(lvh_pages, 2), be_const_var(5) },
- { be_const_key_weak(lvh_line, -1), be_const_class(be_class_lvh_line) },
- { be_const_key_weak(lvh_switch, -1), be_const_class(be_class_lvh_switch) },
+ { be_const_key_weak(lvh_scr, -1), be_const_class(be_class_lvh_scr) },
{ be_const_key_weak(re_page_target, -1), be_const_var(7) },
+ { be_const_key_weak(init, -1), be_const_closure(HASPmota_init_closure) },
+ { be_const_key_weak(lvh_checkbox, -1), be_const_class(be_class_lvh_checkbox) },
+ { be_const_key_weak(lvh_page_cur_idx, 31), be_const_var(6) },
+ { be_const_key_weak(event, -1), be_const_var(8) },
+ { be_const_key_weak(lvh_textarea, -1), be_const_class(be_class_lvh_textarea) },
+ { be_const_key_weak(hres, -1), be_const_var(1) },
+ { be_const_key_weak(lvh_line, 19), be_const_class(be_class_lvh_line) },
+ { be_const_key_weak(scr, -1), be_const_var(3) },
+ { be_const_key_weak(lvh_arc, 26), be_const_class(be_class_lvh_arc) },
+ { be_const_key_weak(lvh_page, 36), be_const_class(be_class_lvh_page) },
+ { be_const_key_weak(get_page_cur, 16), be_const_closure(HASPmota_get_page_cur_closure) },
+ { be_const_key_weak(lvh_chart, -1), be_const_class(be_class_lvh_chart) },
+ { be_const_key_weak(lvh_btn, -1), be_const_class(be_class_lvh_btn) },
+ { be_const_key_weak(_load, 30), be_const_closure(HASPmota__load_closure) },
{ be_const_key_weak(r16, -1), be_const_var(4) },
{ be_const_key_weak(def_templ_name, -1), be_nested_str_weak(pages_X2Ejsonl) },
- { be_const_key_weak(lvh_obj, 19), be_const_class(be_class_lvh_obj) },
- { be_const_key_weak(sort, 23), be_const_static_closure(HASPmota_sort_closure) },
- { be_const_key_weak(lvh_dropdown, -1), be_const_class(be_class_lvh_dropdown) },
- { be_const_key_weak(lvh_checkbox, -1), be_const_class(be_class_lvh_checkbox) },
- { be_const_key_weak(lvh_slider, -1), be_const_class(be_class_lvh_slider) },
{ be_const_key_weak(vres, -1), be_const_var(2) },
- { be_const_key_weak(lvh_btn, -1), be_const_class(be_class_lvh_btn) },
- { be_const_key_weak(event_cb, -1), be_const_var(9) },
- { be_const_key_weak(get_page_cur, -1), be_const_closure(HASPmota_get_page_cur_closure) },
+ { be_const_key_weak(lvh_obj, 6), be_const_class(be_class_lvh_obj) },
+ { be_const_key_weak(page_show, -1), be_const_closure(HASPmota_page_show_closure) },
+ { be_const_key_weak(sort, 17), be_const_static_closure(HASPmota_sort_closure) },
+ { be_const_key_weak(lvh_qrcode, -1), be_const_class(be_class_lvh_qrcode) },
+ { be_const_key_weak(lvh_bar, -1), be_const_class(be_class_lvh_bar) },
+ { be_const_key_weak(deinit, -1), be_const_closure(HASPmota_deinit_closure) },
+ { be_const_key_weak(dark, -1), be_const_var(0) },
+ { be_const_key_weak(lvh_label, -1), be_const_class(be_class_lvh_label) },
+ { be_const_key_weak(lvh_btnmatrix, -1), be_const_class(be_class_lvh_btnmatrix) },
})),
be_str_weak(HASPmota)
);
diff --git a/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c b/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c
index 9bd9120b7..54449644d 100644
--- a/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c
@@ -6,6 +6,7 @@
#include "be_constobj.h"
#include "be_ctypes.h"
#include "be_mapping.h"
+#include "be_ctypes.h"
extern struct TasmotaGlobal_t TasmotaGlobal;
extern struct TSettings * Settings;
@@ -35,6 +36,7 @@ extern int l_delay(bvm *vm);
extern int l_delay_microseconds(bvm *vm);
extern int l_scaleuint(bvm *vm);
extern int l_scaleint(bvm *vm);
+extern int l_sineint(bvm *vm);
extern int l_logInfo(bvm *vm);
extern int l_loglevel(bvm *vm);
extern int l_save(bvm *vm);
@@ -54,6 +56,8 @@ extern int l_respAppend(bvm *vm);
extern int l_webSend(bvm *vm);
extern int l_webSendDecimal(bvm *vm);
+extern int l_webcolor(bvm *vm);
+
extern int l_getlight(bvm *vm);
extern int l_setlight(bvm *vm);
extern int l_getpower(bvm *vm);
@@ -68,6 +72,9 @@ extern int tasm_apply_str_op(bvm *vm);
extern int32_t be_Tasmota_version(void);
BE_FUNC_CTYPE_DECLARE(be_Tasmota_version, "i", "-");
+extern bbool BerryBECLoader(const char * url);
+BE_FUNC_CTYPE_DECLARE(BerryBECLoader, "b", "s")
+
#include "solidify/solidified_tasmota_class.h"
#include "solidify/solidified_rule_matcher.h"
#include "solidify/solidified_trigger_class.h"
@@ -106,20 +113,21 @@ class be_class_tasmota (scope: global, name: Tasmota) {
get_option, func(l_getoption)
millis, func(l_millis)
time_reached, func(l_timereached)
- rtc, func(l_rtc)
+ rtc, static_func(l_rtc)
rtc_utc, func(l_rtc_utc)
time_dump, func(l_time_dump)
strftime, func(l_strftime)
strptime, func(l_strptime)
- memory, func(l_memory)
- wifi, func(l_wifi)
- eth, func(l_eth)
+ memory, static_func(l_memory)
+ wifi, static_func(l_wifi)
+ eth, static_func(l_eth)
hostname, func(l_hostname)
yield, func(l_yield)
delay, func(l_delay)
delay_microseconds, func(l_delay_microseconds)
scale_uint, static_func(l_scaleuint)
scale_int, static_func(l_scaleint)
+ sine_int, static_func(l_sineint)
log, func(l_logInfo)
loglevel, func(l_loglevel)
save, func(l_save)
@@ -137,6 +145,7 @@ class be_class_tasmota (scope: global, name: Tasmota) {
response_append, func(l_respAppend)
web_send, func(l_webSend)
web_send_decimal, func(l_webSendDecimal)
+ webcolor, static_func(l_webcolor)
get_power, func(l_getpower)
set_power, func(l_setpower)
@@ -175,6 +184,7 @@ class be_class_tasmota (scope: global, name: Tasmota) {
time_str, closure(Tasmota_time_str_closure)
urlfetch, closure(Tasmota_urlfetch_closure)
urlfetch_cmd, closure(Tasmota_urlfetch_cmd_closure)
+ urlbecload, static_ctype_func(BerryBECLoader)
add_cron, closure(Tasmota_add_cron_closure)
run_cron, closure(Tasmota_run_cron_closure)
diff --git a/lib/libesp32/berry_tasmota/src/be_tcpserver_class.c b/lib/libesp32/berry_tasmota/src/be_tcpserver_class.c
index c8aa216d4..292b758ae 100644
--- a/lib/libesp32/berry_tasmota/src/be_tcpserver_class.c
+++ b/lib/libesp32/berry_tasmota/src/be_tcpserver_class.c
@@ -13,7 +13,7 @@ extern void tcpserver_deinit(void *server_tcp); BE_FUNC_
extern void tcpserver_close(void *server); BE_FUNC_CTYPE_DECLARE(tcpserver_close, "", ".")
extern bbool tcpserver_hasclient(void *server); BE_FUNC_CTYPE_DECLARE(tcpserver_hasclient, "b", ".")
extern void * tcpserver_accept(struct bvm *vm, void *server); BE_FUNC_CTYPE_DECLARE(tcpserver_accept, "tcpclient", "@.")
-
+extern void * tcpserver_acceptasync(struct bvm *vm, void *server); BE_FUNC_CTYPE_DECLARE(tcpserver_acceptasync, "tcpclientasync", "@.")
#include "be_fixed_be_class_tcpserver.h"
@@ -26,6 +26,7 @@ class be_class_tcpserver (scope: global, name: tcpserver) {
close, ctype_func(tcpserver_close)
hasclient, ctype_func(tcpserver_hasclient)
accept, ctype_func(tcpserver_accept)
+ acceptasync, ctype_func(tcpserver_acceptasync)
}
@const_object_info_end */
diff --git a/lib/libesp32/berry_tasmota/src/be_webserver_lib.c b/lib/libesp32/berry_tasmota/src/be_webserver_lib.c
index 541233893..279b1fb05 100644
--- a/lib/libesp32/berry_tasmota/src/be_webserver_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_webserver_lib.c
@@ -34,6 +34,7 @@ extern int w_webserver_arg(bvm *vm);
extern int w_webserver_arg_name(bvm *vm);
extern int w_webserver_has_arg(bvm *vm);
+extern int w_webserver_header(bvm *vm);
// To allow a full restart of the Berry VM, we need to supplement the webserver Request Handler
// model from Arduino framework.
@@ -160,6 +161,8 @@ module webserver (scope: global) {
arg, func(w_webserver_arg)
arg_name, func(w_webserver_arg_name)
has_arg, func(w_webserver_has_arg)
+
+ header, func(w_webserver_header)
}
@const_object_info_end */
#include "be_fixed_webserver.h"
diff --git a/lib/libesp32/berry_tasmota/src/embedded/animate_module.be b/lib/libesp32/berry_tasmota/src/embedded/animate_module.be
deleted file mode 100644
index f1857c90c..000000000
--- a/lib/libesp32/berry_tasmota/src/embedded/animate_module.be
+++ /dev/null
@@ -1,573 +0,0 @@
-#
-# class Animate
-#
-# Animation framework
-#
-
-#@ solidify:animate,weak
-animate = module("animate")
-
-# state-machine: from val a to b
-class Animate_ins_ramp
- var a # starting value
- var b # end value
- var duration # duration in milliseconds
-
- def init(a,b,duration)
- self.a = a
- self.b = b
- self.duration = duration
- end
-end
-animate.ins_ramp = Animate_ins_ramp
-
-
-#################################################################################
-# class Animate_palette
-#
-# Animated color palette
-#################################################################################
-
-#################################################################################
-# Palette format compatible
-#
-# Takes a binary array with a set of 4 bytes elements: VRGB
-# V: Value in a range 0..255. The first value must be 0,
-# the last needs to be 255.
-# Numbers must be in strictly increasin numbers.
-# The algorithm maps a 0..255 rotating value to its color
-# in the palette.
-# R: Red component
-# G: Green component
-# B: Blue component
-# Note: RGB is in big Endian to make it more readable, although
-# it's little-endian when in memory. Be aware!
-# RGB values are stored at max brightness and without gamma correction
-#################################################################################
-
-# Gradient palette "ib_jul01_gp", originally from
-# http://soliton.vm.bytemark.co.uk/pub/cpt-city/ing/xmas/tn/ib_jul01.png.index.html
-var PALETTE_ib_jul01_gp = bytes(
- "00" "E60611"
- "5E" "25605A"
- "85" "90BD6A"
- "FF" "BB030D"
-)
-# animate.PALETTE_ib_jul01_gp = PALETTE_ib_jul01_gp
-# rgb(230, 6, 17) 0.000%,
-# rgb( 37, 96, 90) 37.010%,
-# rgb(144,189,106) 52.000%,
-# rgb(187, 3, 13) 100.000%
-
-var PALETTE_STANDARD_VAL = bytes(
- "00" "FF0000" # red
- "24" "FFA500" # orange
- "49" "FFFF00" # yellow
- "6E" "008800" # green
- "92" "0000FF" # blue
- "B7" "4B0082" # indigo
- "DB" "EE82EE" # violet
- "FF" "FF0000" # red
-)
-# animate.PALETTE_STANDARD = PALETTE_STANDARD
-
-var PALETTE_SATURATED_TAG = bytes(
- "40" "FF0000" # red
- "40" "FFA500" # orange
- "40" "FFFF00" # yellow
- "40" "00FF00" # green
- "40" "0000FF" # blue
- "40" "FF00FF" # indigo
- "40" "EE44A5" # violet
- "00" "FF0000" # red
-)
-
-var PALETTE_STANDARD_TAG = bytes(
- "40" "FF0000" # red
- "40" "FFA500" # orange
- "40" "FFFF00" # yellow
- "40" "008800" # green
- "40" "0000FF" # blue
- "40" "4B0082" # indigo
- "40" "EE82EE" # violet
- "00" "FF0000" # red
-)
-# animate.PALETTE_STANDARD = PALETTE_STANDARD
-
-
-class Animate_palette
- # parsing of palette
- var palette # raw bytes object
- var slots_arr # constructed array of timestamp slots
- var slots # number of slots
- # timing information
- var running
- var duration_ms # duration_ms of the entire cycle in ms, cannot be `0`
- var origin # origin in ms of the current cycle, as per tasmota.millis() reference
- # range information (when used as range color)
- var range_min # minimum value expected as input
- var range_max # maximum value expected as input, needs (range_min < range_max, can be negative)
- # callback information
- var animate_obj # object to call
- var animate_mth # object method to call
- # brightness
- var bri # brightness to be applied to palette 0..100
- # color object to do RGB color calculation
- var color # instance of light_state, used for color calculation (reuse of object)
-
- def init(palette, duration_s)
- self.running = false
- self.palette = palette
- self.bri = 100
- self.slots = size(palette) / 4
- if duration_s != nil
- self.set_duration(int(duration_s * 1000))
- end
- self.color = light_state(light_state.RGB)
- end
-
- def set_cb(obj, mth)
- self.animate_obj = obj
- self.animate_mth = mth
- end
-
- # setter to be used as cb
- def set_bri(bri)
- self.bri = int(bri)
- end
-
- def start(millis)
- if (self.duration_ms == nil) return end
- if millis == nil millis = tasmota.millis() end
- self.origin = millis
- self.running = true
- end
-
- def stop()
- self.origin = nil
- self.running = false
- end
-
- def is_running()
- return bool(self.running)
- end
-
- def parse_palette(min, max)
- var arr = []
- var slots = self.slots
- arr.resize(slots)
-
- # check if we have slots or values
- # if first value index is non-zero, it's ticks count
- if self.palette.get(0, 1) != 0
- # palette in tick counts
- # compute the total number of ticks
- var total_ticks = 0
- var idx = 0
- while idx < slots - 1
- total_ticks += self.palette.get(idx * 4, 1)
- idx += 1
- end
- var cur_ticks = 0
- idx = 0
- while idx < slots
- arr[idx] = tasmota.scale_int(cur_ticks, 0, total_ticks, min, max)
- cur_ticks += self.palette.get(idx * 4, 1)
- idx += 1
- end
- else
- # palette is in value range from 0..255
- var idx = 0
- while idx < slots
- var val = self.palette.get(idx * 4, 1)
- arr[idx] = tasmota.scale_int(val, 0, 255, min, max)
- idx += 1
- end
- end
- # print(f"ANM: {arr=}")
- return arr
- end
-
- def set_duration(duration_ms)
- if (duration_ms == nil) return end
- if duration_ms <= 0 raise "value_error", "duration_ms must be positive" end
- self.duration_ms = duration_ms
-
- self.slots_arr = self.parse_palette(0, duration_ms - 1)
- end
-
- def set_range(min, max)
- if (min >= max) raise "value_error", "min must be lower than mex" end
- self.range_min = min
- self.range_max = max
-
- self.slots_arr = self.parse_palette(min, max)
- end
-
- # compute the css linear-gradient description
- #
- # Example: background: linear-gradient(to right, #000000, #e66465 11.0%, #9198e5);
- def to_css_gradient()
- var arr = self.parse_palette(0, 1000)
- var ret = "background:linear-gradient(to right"
- var idx = 0
- while idx < size(arr)
- var prm = arr[idx] # per mile
-
- var bgrt = self.palette.get(idx * 4, 4)
- var r = (bgrt >> 8) & 0xFF
- var g = (bgrt >> 16) & 0xFF
- var b = (bgrt >> 24) & 0xFF
- ret += f",#{r:02X}{g:02X}{b:02X} {prm/10.0:.1f}%"
- idx += 1
- end
- ret += ");"
- return ret
- end
-
- def set_value(value)
- if (self.range_min == nil || self.range_max == nil) return nil end
- var scale_int = tasmota.scale_int
-
- # find slot
- var slots = self.slots
- var idx = slots - 2
- while idx > 0
- if value >= self.slots_arr[idx] break end
- idx -= 1
- end
- var bgrt0 = self.palette.get(idx * 4, 4)
- var bgrt1 = self.palette.get((idx + 1) * 4, 4)
- var t0 = self.slots_arr[idx]
- var t1 = self.slots_arr[idx + 1]
- var r = scale_int(value, t0, t1, (bgrt0 >> 8) & 0xFF, (bgrt1 >> 8) & 0xFF)
- var g = scale_int(value, t0, t1, (bgrt0 >> 16) & 0xFF, (bgrt1 >> 16) & 0xFF)
- var b = scale_int(value, t0, t1, (bgrt0 >> 24) & 0xFF, (bgrt1 >> 24) & 0xFF)
- var rgb = (r << 16) | (g << 8) | b
- #
- var obj = self.animate_obj
- var mth = self.animate_mth
- if (obj && mth)
- mth(obj, rgb)
- end
- # if self.cb != nil
- # self.cb(rgb)
- # end
- #
- # print(f"ANM: {rgb=:%06X}")
- return rgb
- end
-
- def animate(millis)
- if (self.duration_ms == nil) return end
- if millis == nil millis = tasmota.millis() end
- var past = millis - self.origin
- if past < 0
- past = 0
- millis = self.origin
- end
- var duration_ms = self.duration_ms
- var scale_uint = tasmota.scale_uint
- if past >= duration_ms
- self.origin += (past / duration_ms) * duration_ms
- past = past % duration_ms
- end
- # find slot
- var slots = self.slots
- var idx = slots - 2
- while idx > 0
- if past >= self.slots_arr[idx] break end
- idx -= 1
- end
- var bgrt0 = self.palette.get(idx * 4, 4)
- var bgrt1 = self.palette.get((idx + 1) * 4, 4)
- var t0 = self.slots_arr[idx]
- var t1 = self.slots_arr[idx + 1]
- var r = scale_uint(past, t0, t1, (bgrt0 >> 8) & 0xFF, (bgrt1 >> 8) & 0xFF)
- var g = scale_uint(past, t0, t1, (bgrt0 >> 16) & 0xFF, (bgrt1 >> 16) & 0xFF)
- var b = scale_uint(past, t0, t1, (bgrt0 >> 24) & 0xFF, (bgrt1 >> 24) & 0xFF)
-
- var color = self.color
- color.set_rgb((bgrt0 >> 8) & 0xFF, (bgrt0 >> 16) & 0xFF, (bgrt0 >> 24) & 0xFF)
- var bri0 = color.bri
- color.set_rgb((bgrt1 >> 8) & 0xFF, (bgrt1 >> 16) & 0xFF, (bgrt1 >> 24) & 0xFF)
- var bri1 = color.bri
- var bri2 = scale_uint(past, t0, t1, bri0, bri1)
- color.set_rgb(r, g, b)
- color.set_bri(bri2)
-
- r = color.r
- g = color.g
- b = color.b
-
- # apply self.bri if not `100`
- var bri = self.bri
- if bri != 100
- r = tasmota.scale_uint(r, 0, 100, 0, bri)
- g = tasmota.scale_uint(g, 0, 100, 0, bri)
- b = tasmota.scale_uint(b, 0, 100, 0, bri)
- end
-
- # var rgb = (r << 16) | (g << 8) | b
- var rgb = (r << 16) | (g << 8) | b
-
- var obj = self.animate_obj
- var mth = self.animate_mth
- if (obj && mth)
- mth(obj, rgb)
- end
-
- return rgb
- end
-end
-animate.palette = Animate_palette
-
-#-
-
-pal = Animate_palette(PALETTE_STANDARD_TAG, 7000)
-pal = Animate_palette(PALETTE_STANDARD_VAL, 7000)
-
-
-import animate
-var pal = animate.palette(PALETTE_STANDARD_TAG, 7000)
-pal.start(0)
-for t: range(0,8000,200)
- pal.tick(t)
-end
-
--#
-
-#################################################################################
-# class Animate_segment
-#
-# Animate a small segment ______/+++\______
-# length in 1/256 pixels
-# slew in 1/256 pixels
-# fore foregroung color
-# back background color (or transparent)
-# origin in 1/256 pixels
-#
-# strip
-#################################################################################
-# class Animate_segment
-# var strip
-# var length
-# var slew
-# var fore
-# var back
-# var origin
-
-# def init(strip)
-# self.strip = strip
-# self.length = 256 # 1 pixel
-# self.slew = 0 # 0 pixel (immediate)
-# self.fore = 0x00FF0000 # red opaque
-# self.back = 0xFF000000 # transparent
-# self.origin = 0 # start of strip
-# end
-
-# def paint(bri)
-# # move all important values in registers
-# var strip = self.strip
-# var pix_offset = strip.pixel_offset()
-# var pix_count = strip.pixel_count()
-# var pix_buffer = strip.pixels_buffer()
-# var pix_size = strip.pixel_size()
-
-# var length = self.length
-# var slew = self.slew
-# var fore = self.fore
-# var back = self.back
-# var origin = self.origin
-
-# var pix = 0 # iterate on each pixel
-# var limit_low = (origin - slew) / 256
-# var limit_high = (origin + length + slew) / 256
-# while pix < pix_count
-# # are we off limits
-# if (pix >= limit_low) && (pix <= limit_high) # outside of those boundaries, we just apply backgroung
-# strip.set_pixel_color(pix, fore, bri)
-# else
-# strip.set_pixel_color(pix, back, bri)
-# end
-# pix += 1
-# end
-# end
-# end
-# animate.segment = Animate_segment
-
-# state-machine: pause and goto
-class Animate_ins_goto
- var pc_rel # relative PC, -1 previous instruction, 1 next instruction, 0 means see pc_abs
- var pc_abs # absolute PC, only if pc_rel == 0, address if next instruction
- var duration # pause in milliseconds before goto, -1 means infinite (state-machine can be changed externally)
-
- def init(pc_rel, pc_abs, duration)
- self.pc_rel = pc_rel
- self.pc_abs = pc_abs
- self.duration = duration
- end
-end
-animate.ins_goto = Animate_ins_goto
-
-class Animate_engine
- var code # array of state-machine instructions
- var closure # closure to call with the new value
- var animate_obj # object to call (alternative to closure)
- var animate_mth # method to call on object
- var pc # program-counter
- var ins_time # absolute time when the current instruction started
- var running # is the animation running? allows fast return
- var value # current value
-
- def init()
- self.code = []
- self.pc = 0 # start at instruction 0
- self.ins_time = 0
- self.running = false # not running by default
- #
- end
-
- def set_cb(obj, mth)
- self.animate_obj = obj
- self.animate_mth = mth
- end
-
- # start but needs external calls to `animate()`
- # cur_time:int (opt) current timestamp in ms, defaults to `tasmota.millis()`
- # val:int (opt) starting value, default to `nil`
- def start(cur_time, val)
- if cur_time == nil cur_time = tasmota.millis() end
- if (val != nil) self.value = val end
- self.ins_time = cur_time
-
- self.running = true
- end
-
- # # runs autonomously in the Tasmota event loop
- # def autorun(cur_time, val)
- # self.run(cur_time, val)
- # end
-
- def stop()
- self.running = false
- end
-
- def is_running()
- return self.running
- end
-
- def animate(cur_time) # time in milliseconds, optional, defaults to `tasmota.millis()`
- if !self.running return end
- if cur_time == nil cur_time = tasmota.millis() end
- # run through instructions
- while true
- var sub_index = cur_time - self.ins_time # time since the beginning of current instruction
- #
- # make sure PC is valid
- if self.pc >= size(self.code)
- self.running = false
- break
- end
- #
- if self.pc < 0 raise "internal_error", "Animate pc is out of range" end
- var ins = self.code[self.pc]
-
- # Instruction Ramp
- if isinstance(ins, animate.ins_ramp)
- var closure = self.closure # assign to a local variable to not call a method
- var obj = self.animate_obj
- var mth = self.animate_mth
- if sub_index < ins.duration
- # we're still in the ramp
- self.value = tasmota.scale_uint(sub_index, 0, ins.duration, ins.a, ins.b)
- # call method
- if (obj && mth) mth(obj, self.value) end
- # call closure
- if (closure) closure(self.value) end # call closure, need try? TODO
- break
- else
- self.value = ins.b
- # call method
- if (obj && mth) mth(obj, self.value) end
- # call closure
- if (closure) closure(self.value) end # set to last value
- self.pc += 1 # next instruction
- self.ins_time = cur_time - (sub_index - ins.duration)
- end
-
- # Instruction Goto
- elif isinstance(ins, animate.ins_goto)
- if sub_index < ins.duration
- break
- else
- if ins.pc_rel != 0
- self.pc += ins.pc_rel
- else
- self.pc = ins.pc_abs
- end
- self.ins_time = cur_time - (sub_index - ins.duration)
- end
-
- # Invalid
- else
- raise "internal_error", "unknown instruction"
- end
- end
- return self.value
-
- end
-end
-animate.engine = Animate_engine
-
-class Animate_from_to : Animate_engine
-
- def init(obj, mth, from, to, duration)
- super(self).init()
- self.set_cb(obj, mth)
- self.code.push(animate.ins_ramp(from, to, duration))
- end
-
-end
-animate.from_to = Animate_from_to
-
-###
-#
-# a=Animate_from_to(nil, 0, 100, 5000)
-#
-###
-
-class Animate_rotate : Animate_engine
-
- def init(obj, mth, from, to, duration)
- super(self).init()
- self.set_cb(obj, mth)
- self.code.push(animate.ins_ramp(from, to, duration))
- self.code.push(animate.ins_goto(0, 0, 0)) # goto abs pc = 0 without any pause
- end
-
-end
-animate.rotate = Animate_rotate
-
-#-
-a=Animate_rotate(nil, 0, 100, 5000)
-a.autorun()
--#
-
-class Animate_back_forth : Animate_engine
-
- def init(obj, mth, from, to, duration)
- super(self).init()
- self.set_cb(obj, mth)
- self.code.push(animate.ins_ramp(from, to, duration))
- self.code.push(animate.ins_ramp(to, from, duration))
- self.code.push(animate.ins_goto(0, 0, 0)) # goto abs pc = 0 without any pause
- end
-
-end
-animate.back_forth = Animate_back_forth
-
-#-
-a=Animate_back_forth(nil, 0, 100, 5000)
-a.autorun()
--#
diff --git a/lib/libesp32/berry_tasmota/src/embedded/i2c_axp192.be b/lib/libesp32/berry_tasmota/src/embedded/i2c_axp192.be
index 56ce22147..b9254af1d 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/i2c_axp192.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/i2c_axp192.be
@@ -165,7 +165,7 @@ class AXP192 : I2C_Driver
"{s}Batt Voltage{m}%.3f V{e}"..
"{s}Batt Current{m}%.1f mA{e}"..
#"{s}Batt Power{m}%.3f{e}"..
- "{s}Temp AXP{m}%.1f °C{e}",
+ "{s}AXP Temperature{m}%.1f °C{e}",
self.get_vbus_voltage(), self.get_vbus_voltage(),
self.get_bat_voltage(), self.get_bat_current(),
#self.get_bat_power(),
diff --git a/lib/libesp32/berry_tasmota/src/embedded/leds.be b/lib/libesp32/berry_tasmota/src/embedded/leds.be
index 3e20b1c4a..1d9e505ac 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/leds.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/leds.be
@@ -27,6 +27,7 @@ class Leds_ntv end
class Leds : Leds_ntv
var gamma # if true, apply gamma (true is default)
var leds # number of leds
+ var bri # implicit brightness for this led strip (0..255, default is 50% = 127)
# leds:int = number of leds of the strip
# gpio:int (optional) = GPIO for NeoPixel. If not specified, takes the WS2812 gpio
# typ:int (optional) = Type of LED, defaults to WS2812 RGB
@@ -34,6 +35,7 @@ class Leds : Leds_ntv
def init(leds, gpio_phy, typ, rmt) # rmt is optional
self.gamma = true # gamma is enabled by default, it should be disabled explicitly if needed
self.leds = int(leds)
+ self.bri = 127 # 50% brightness by default
# if no GPIO, abort
if gpio_phy == nil
@@ -93,6 +95,16 @@ class Leds : Leds_ntv
self.show()
end
+ # set bri (0..255)
+ def set_bri(bri)
+ if (bri < 0) bri = 0 end
+ if (bri > 255) bri = 255 end
+ self.bri = bri
+ end
+ def get_bri()
+ return self.bri
+ end
+
def ctor(leds, gpio_phy, typ, rmt)
if typ == nil
typ = self.WS2812_GRB
@@ -136,14 +148,22 @@ class Leds : Leds_ntv
return 0
end
def clear_to(col, bri)
+ if (bri == nil) bri = self.bri end
self.call_native(9, self.to_gamma(col, bri))
end
def set_pixel_color(idx, col, bri)
+ if (bri == nil) bri = self.bri end
self.call_native(10, idx, self.to_gamma(col, bri))
end
def get_pixel_color(idx)
return self.call_native(11, idx)
end
+ def set_gamma(gamma)
+ self.gamma = bool(gamma)
+ end
+ def get_gamma()
+ return self.gamma
+ end
# def rotate_left(rot, first, last)
# self.call_native(20, rot, first, last)
# end
@@ -159,6 +179,7 @@ class Leds : Leds_ntv
# apply gamma and bri
def to_gamma(rgb, bri)
+ if (bri == nil) bri = self.bri end
return self.apply_bri_gamma(rgb, bri, self.gamma)
end
@@ -216,6 +237,7 @@ class Leds : Leds_ntv
return self.leds
end
def clear_to(col, bri)
+ if (bri == nil) bri = self.bri end
self.strip.call_native(9, self.strip.to_gamma(col, bri), self.offset, self.leds)
# var i = 0
# while i < self.leds
@@ -224,6 +246,7 @@ class Leds : Leds_ntv
# end
end
def set_pixel_color(idx, col, bri)
+ if (bri == nil) bri = self.bri end
self.strip.set_pixel_color(idx + self.offset, col, bri)
end
def get_pixel_color(idx)
@@ -301,9 +324,11 @@ class Leds : Leds_ntv
return self.offset
end
def clear_to(col, bri)
+ if (bri == nil) bri = self.bri end
self.strip.call_native(9, self.strip.to_gamma(col, bri), self.offset, self.w * self.h)
end
def set_pixel_color(idx, col, bri)
+ if (bri == nil) bri = self.bri end
self.strip.set_pixel_color(idx + self.offset, col, bri)
end
def get_pixel_color(idx)
@@ -328,6 +353,7 @@ class Leds : Leds_ntv
end
def set_matrix_pixel_color(x, y, col, bri)
+ if (bri == nil) bri = self.bri end
if self.alternate && x % 2
# reversed line
self.strip.set_pixel_color(x * self.w + self.h - y - 1 + self.offset, col, bri)
diff --git a/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be b/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be
index 8e90ccf1b..3edea396c 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be
@@ -25,6 +25,18 @@ def init(lv_tasmota)
lv.register_button_encoder = lv_tasmota.register_button_encoder
lv.screenshot = lv_tasmota.screenshot
+ # add version information
+ lv.version = lv.version_major()
+ # use the following to retrofit the version:
+ #-
+ def fix_lv_version()
+ import introspect
+ var v = introspect.get(lv, "version")
+ # if `lv.version` does not exist, v is `module('undefined')`
+ if type(v) != 'int' lv.version = 8 end
+ end
+ -#
+
# add widgets
lv.clock = lv_clock
lv.clock_icon = lv_clock_icon
@@ -112,8 +124,7 @@ def splash()
tas_logo.set_zoom(150)
tas_logo.set_style_img_recolor_opa(255, 0) # lv.PART_MAIN | lv.STATE_DEFAULT
tas_logo.set_style_img_recolor(white, 0) # lv.PART_MAIN | lv.STATE_DEFAULT
- tas_logo.set_align(lv.ALIGN_LEFT_MID)
- tas_logo.set_x(-12)
+ tas_logo.align(lv.ALIGN_LEFT_MID, -12, 0)
var tas = lv.label(bg)
# tas.set_style_bg_opa(lv.OPA_TRANSP, lv.PART_MAIN | lv.STATE_DEFAULT)
diff --git a/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota_widgets.be b/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota_widgets.be
index 7c65815e5..e9f464906 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota_widgets.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota_widgets.be
@@ -88,24 +88,23 @@ class lv_obj end # for solidification
#@ solidify:lv_signal_arcs,weak
class lv_signal_arcs : lv_obj
var percentage # value to display, range 0..100
- var p1, p2, area, arc_dsc # instances of objects kept to avoid re-instanciating at each call
+ var area, arc_dsc # instances of objects kept to avoid re-instanciating at each call
def init(parent)
- # init custom widget (don't call super constructor)
- _lvgl.create_custom_widget(self, parent)
+ super(self).init(parent)
+ self.set_style_bg_opa(0, 0) # transparent background
+ self.set_style_border_width(0, 0) # remove border
# own values
self.percentage = 100
# pre-allocate buffers
- self.p1 = lv.point()
- self.p2 = lv.point()
self.area = lv.area()
self.arc_dsc = lv.draw_arc_dsc()
+ # we don't need a closure with `add_event_cb` because of special handling
+ self.add_event_cb(self.widget_event, lv.EVENT_DRAW_MAIN, 0)
end
- def widget_event(cl, event)
- # Call the ancestor's event handler
- if lv.obj_event_base(cl, event) != lv.RES_OK return end
- var code = event.code
+ def widget_event(event)
+ var code = event.get_code()
import math
def atleast1(x) if x >= 1 return x else return 1 end end
@@ -119,18 +118,20 @@ class lv_signal_arcs : lv_obj
#print("inter_bar", inter_bar, "bar", bar, "bar_offset", bar_offset)
if code == lv.EVENT_DRAW_MAIN
- var draw_ctx = lv.draw_ctx(event.param)
+ var arc_dsc = self.arc_dsc
+ var param = event.get_param()
+ var layer = event.get_layer()
# get coordinates of object
self.get_coords(self.area)
var x_ofs = self.area.x1
var y_ofs = self.area.y1
- lv.draw_arc_dsc_init(self.arc_dsc) # initialize lv.draw_line_dsc structure
- self.init_draw_arc_dsc(lv.PART_MAIN, self.arc_dsc) # copy the current values
+ lv.draw_arc_dsc_init(arc_dsc) # initialize lv.draw_line_dsc structure
+ self.init_draw_arc_dsc(lv.PART_MAIN, arc_dsc) # copy the current values
- self.arc_dsc.rounded = 1
- self.arc_dsc.width = (bar * 3 + 1) / 4
+ arc_dsc.rounded = 1
+ arc_dsc.width = (bar * 3 + 1) / 4
var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT)
var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT)
@@ -144,18 +145,26 @@ class lv_signal_arcs : lv_obj
if (angle > 45) angle = 45 end
# print("hypotenuse",hypotenuse,"adjacent",adjacent,"angle",angle)
- self.p1.x = x_ofs + width / 2
- self.p1.y = y_ofs + height - 1 - bar_offset
+ arc_dsc.center_x = x_ofs + width / 2
+ arc_dsc.center_y = y_ofs + height - 1 - bar_offset
- self.arc_dsc.color = self.percentage >= 25 ? on_color : off_color
- lv.draw_arc(draw_ctx, self.arc_dsc, self.p1, 0 * (bar + inter_bar) + bar_offset, 0, 360)
- self.arc_dsc.color = self.percentage >= 50 ? on_color : off_color
- lv.draw_arc(draw_ctx, self.arc_dsc, self.p1, 1 * (bar + inter_bar) + bar_offset - 1, 270 - angle, 270 + angle)
- self.arc_dsc.color = self.percentage >= 75 ? on_color : off_color
- lv.draw_arc(draw_ctx, self.arc_dsc, self.p1, 2 * (bar + inter_bar) + bar_offset - 2, 270 - angle, 270 + angle)
+ arc_dsc.color = self.percentage >= 25 ? on_color : off_color
+ arc_dsc.radius = 0 * (bar + inter_bar) + bar_offset
+ arc_dsc.start_angle = 0
+ arc_dsc.end_angle = 306
+ lv.draw_arc(layer, arc_dsc)
- #elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object
- # self.ancestor_design.call(self, clip_area, mode)
+ arc_dsc.radius = 1 * (bar + inter_bar) + bar_offset - 1
+ arc_dsc.start_angle = 270 - angle
+ arc_dsc.end_angle = 270 + angle
+ arc_dsc.color = self.percentage >= 50 ? on_color : off_color
+ lv.draw_arc(layer, arc_dsc)
+
+ arc_dsc.radius = 2 * (bar + inter_bar) + bar_offset - 2
+ arc_dsc.start_angle = 270 - angle
+ arc_dsc.end_angle = 270 + angle
+ arc_dsc.color = self.percentage >= 75 ? on_color : off_color
+ lv.draw_arc(layer, arc_dsc)
end
end
@@ -221,24 +230,24 @@ end
#@ solidify:lv_signal_bars,weak
class lv_signal_bars : lv_obj
var percentage # value to display, range 0..100
- var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call
+ var area, line_dsc # instances of objects kept to avoid re-instanciating at each call
def init(parent)
- # init custom widget (don't call super constructor)
- _lvgl.create_custom_widget(self, parent)
+ super(self).init(parent)
+ self.set_style_bg_opa(0, 0) # transparent background
+ self.set_style_border_width(0, 0) # remove border
# own values
self.percentage = 100
# pre-allocate buffers
- self.p1 = lv.point()
- self.p2 = lv.point()
self.area = lv.area()
self.line_dsc = lv.draw_line_dsc()
+ # we don't need a closure with `add_event_cb` because of special handling
+ self.add_event_cb(self.widget_event, lv.EVENT_DRAW_MAIN, 0)
end
- def widget_event(cl, event)
+ def widget_event(event)
# Call the ancestor's event handler
- if lv.obj_event_base(cl, event) != lv.RES_OK return end
- var code = event.code
+ var code = event.get_code()
def atleast1(x) if x >= 1 return x else return 1 end end
# the model is that we have 4 bars and inter-bar (1/4 of width)
@@ -250,32 +259,32 @@ class lv_signal_bars : lv_obj
var bar_offset = bar / 2
if code == lv.EVENT_DRAW_MAIN
- var draw_ctx = lv.draw_ctx(event.param)
+ var line_dsc = self.line_dsc
+ var param = event.get_param()
+ var layer = event.get_layer()
# get coordinates of object
self.get_coords(self.area)
var x_ofs = self.area.x1
var y_ofs = self.area.y1
- lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure
- self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) # copy the current values
+ lv.draw_line_dsc_init(line_dsc) # initialize lv_draw_line_dsc structure
+ self.init_draw_line_dsc(lv.PART_MAIN, line_dsc) # copy the current values
- self.line_dsc.round_start = 1
- self.line_dsc.round_end = 1
- self.line_dsc.width = bar
+ line_dsc.round_start = 1
+ line_dsc.round_end = 1
+ line_dsc.width = bar
var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT)
var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT)
- lv.event_send(self, lv.EVENT_DRAW_PART_BEGIN, self.line_dsc)
for i:0..3 # 4 bars
- self.line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color
- self.p1.y = y_ofs + height - 1 - bar_offset
- self.p1.x = x_ofs + i * (bar + inter_bar) + bar_offset
- self.p2.y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset
- self.p2.x = self.p1.x
- lv.draw_line(draw_ctx, self.line_dsc, self.p1, self.p2)
+ line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color
+ line_dsc.p1_y = y_ofs + height - 1 - bar_offset
+ line_dsc.p1_x = x_ofs + i * (bar + inter_bar) + bar_offset
+ line_dsc.p2_y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset
+ line_dsc.p2_x = line_dsc.p1_x
+ lv.draw_line(layer, line_dsc)
end
- lv.event_send(self, lv.EVENT_DRAW_PART_END, self.line_dsc)
end
end
diff --git a/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be b/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be
index b25620118..981c49482 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be
@@ -557,8 +557,7 @@ class Tasmota
# iterate and call each closure
var i = 0
- var sz = size(fl)
- while i < sz
+ while i < size(fl)
# note: this is not guarded in try/except for performance reasons. The inner function must not raise exceptions
fl[i]()
i += 1
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h
index 27a7bf5a7..a3be29b1a 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h
@@ -655,7 +655,7 @@ be_local_closure(AXP192_web_sensor, /* name */
/* K2 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
/* K3 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D),
/* K4 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
- /* K5 */ be_nested_str(_X7Bs_X7DTemp_X20AXP_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D),
+ /* K5 */ be_nested_str(_X7Bs_X7DAXP_X20Temperature_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D),
/* K6 */ be_nested_str(get_vbus_voltage),
/* K7 */ be_nested_str(get_bat_voltage),
/* K8 */ be_nested_str(get_bat_current),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h
index ef3af9aba..3e0ef7846 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h
@@ -6,36 +6,6 @@
extern const bclass be_class_Leds;
-/********************************************************************
-** Solidified function: show
-********************************************************************/
-be_local_closure(Leds_show, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_const_int(2),
- }),
- &be_const_str_show,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
extern const bclass be_class_Leds_segment;
/********************************************************************
@@ -78,28 +48,33 @@ be_local_closure(Leds_segment_clear_to, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(call_native),
- /* K2 */ be_nested_str(to_gamma),
- /* K3 */ be_nested_str(offset),
- /* K4 */ be_nested_str(leds),
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(strip),
+ /* K2 */ be_nested_str(call_native),
+ /* K3 */ be_nested_str(to_gamma),
+ /* K4 */ be_nested_str(offset),
+ /* K5 */ be_nested_str(leds),
}),
&be_const_str_clear_to,
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x54160008, // 0002 LDINT R5 9
- 0x88180100, // 0003 GETMBR R6 R0 K0
- 0x8C180D02, // 0004 GETMET R6 R6 K2
- 0x5C200200, // 0005 MOVE R8 R1
- 0x5C240400, // 0006 MOVE R9 R2
- 0x7C180600, // 0007 CALL R6 3
- 0x881C0103, // 0008 GETMBR R7 R0 K3
- 0x88200104, // 0009 GETMBR R8 R0 K4
- 0x7C0C0A00, // 000A CALL R3 5
- 0x80000000, // 000B RET 0
+ ( &(const binstruction[16]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0000, // 0002 JMPF R3 #0004
+ 0x88080100, // 0003 GETMBR R2 R0 K0
+ 0x880C0101, // 0004 GETMBR R3 R0 K1
+ 0x8C0C0702, // 0005 GETMET R3 R3 K2
+ 0x54160008, // 0006 LDINT R5 9
+ 0x88180101, // 0007 GETMBR R6 R0 K1
+ 0x8C180D03, // 0008 GETMET R6 R6 K3
+ 0x5C200200, // 0009 MOVE R8 R1
+ 0x5C240400, // 000A MOVE R9 R2
+ 0x7C180600, // 000B CALL R6 3
+ 0x881C0104, // 000C GETMBR R7 R0 K4
+ 0x88200105, // 000D GETMBR R8 R0 K5
+ 0x7C0C0A00, // 000E CALL R3 5
+ 0x80000000, // 000F RET 0
})
)
);
@@ -231,22 +206,27 @@ be_local_closure(Leds_segment_set_pixel_color, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(set_pixel_color),
- /* K2 */ be_nested_str(offset),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(strip),
+ /* K2 */ be_nested_str(set_pixel_color),
+ /* K3 */ be_nested_str(offset),
}),
&be_const_str_set_pixel_color,
&be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
- 0x88180102, // 0002 GETMBR R6 R0 K2
- 0x00180206, // 0003 ADD R6 R1 R6
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x5C200600, // 0005 MOVE R8 R3
- 0x7C100800, // 0006 CALL R4 4
- 0x80000000, // 0007 RET 0
+ ( &(const binstruction[12]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x1C100604, // 0001 EQ R4 R3 R4
+ 0x78120000, // 0002 JMPF R4 #0004
+ 0x880C0100, // 0003 GETMBR R3 R0 K0
+ 0x88100101, // 0004 GETMBR R4 R0 K1
+ 0x8C100902, // 0005 GETMET R4 R4 K2
+ 0x88180103, // 0006 GETMBR R6 R0 K3
+ 0x00180206, // 0007 ADD R6 R1 R6
+ 0x5C1C0400, // 0008 MOVE R7 R2
+ 0x5C200600, // 0009 MOVE R8 R3
+ 0x7C100800, // 000A CALL R4 4
+ 0x80000000, // 000B RET 0
})
)
);
@@ -567,112 +547,34 @@ be_local_closure(Leds_create_segment, /* name */
/********************************************************************
-** Solidified function: assign_rmt
+** Solidified function: set_bri
********************************************************************/
-be_local_closure(Leds_assign_rmt, /* name */
+be_local_closure(Leds_set_bri, /* name */
be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 4, /* varg */
+ 3, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_const_class(be_class_Leds),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(value_error),
- /* K3 */ be_nested_str(invalid_X20GPIO_X20number),
- /* K4 */ be_nested_str(global),
- /* K5 */ be_nested_str(contains),
- /* K6 */ be_nested_str(_rmt),
- /* K7 */ be_nested_str(gpio),
- /* K8 */ be_nested_str(MAX_RMT),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str(push),
- /* K11 */ be_nested_str(stop_iteration),
- /* K12 */ be_nested_str(pin_used),
- /* K13 */ be_nested_str(WS2812),
- /* K14 */ be_nested_str(pin),
- /* K15 */ be_nested_str(internal_error),
- /* K16 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available),
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str(bri),
}),
- &be_const_str_assign_rmt,
+ &be_const_str_set_bri,
&be_const_str_solidified,
- ( &(const binstruction[72]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080009, // 0001 GETGBL R2 G9
- 0x5C0C0000, // 0002 MOVE R3 R0
- 0x7C080200, // 0003 CALL R2 1
- 0x5C000400, // 0004 MOVE R0 R2
- 0x14080101, // 0005 LT R2 R0 K1
- 0x780A0000, // 0006 JMPF R2 #0008
- 0xB0060503, // 0007 RAISE 1 K2 K3
- 0xA40A0800, // 0008 IMPORT R2 K4
- 0x4C0C0000, // 0009 LDNIL R3
- 0x8C100505, // 000A GETMET R4 R2 K5
- 0x58180006, // 000B LDCONST R6 K6
- 0x7C100400, // 000C CALL R4 2
- 0x74120021, // 000D JMPT R4 #0030
- 0x60100012, // 000E GETGBL R4 G18
- 0x7C100000, // 000F CALL R4 0
- 0x5C0C0800, // 0010 MOVE R3 R4
- 0x900A0C03, // 0011 SETMBR R2 K6 R3
- 0x60100010, // 0012 GETGBL R4 G16
- 0xB8160E00, // 0013 GETNGBL R5 K7
- 0x88140B08, // 0014 GETMBR R5 R5 K8
- 0x04140B09, // 0015 SUB R5 R5 K9
- 0x40160205, // 0016 CONNECT R5 K1 R5
- 0x7C100200, // 0017 CALL R4 1
- 0xA8020005, // 0018 EXBLK 0 #001F
- 0x5C140800, // 0019 MOVE R5 R4
- 0x7C140000, // 001A CALL R5 0
- 0x8C18070A, // 001B GETMET R6 R3 K10
- 0x5421FFFE, // 001C LDINT R8 -1
- 0x7C180400, // 001D CALL R6 2
- 0x7001FFF9, // 001E JMP #0019
- 0x5810000B, // 001F LDCONST R4 K11
- 0xAC100200, // 0020 CATCH R4 1 0
- 0xB0080000, // 0021 RAISE 2 R0 R0
- 0xB8120E00, // 0022 GETNGBL R4 K7
- 0x8C10090C, // 0023 GETMET R4 R4 K12
- 0xB81A0E00, // 0024 GETNGBL R6 K7
- 0x88180D0D, // 0025 GETMBR R6 R6 K13
- 0x581C0001, // 0026 LDCONST R7 K1
- 0x7C100600, // 0027 CALL R4 3
- 0x78120006, // 0028 JMPF R4 #0030
- 0xB8120E00, // 0029 GETNGBL R4 K7
- 0x8C10090E, // 002A GETMET R4 R4 K14
- 0xB81A0E00, // 002B GETNGBL R6 K7
- 0x88180D0D, // 002C GETMBR R6 R6 K13
- 0x581C0001, // 002D LDCONST R7 K1
- 0x7C100600, // 002E CALL R4 3
- 0x980E0204, // 002F SETIDX R3 K1 R4
- 0x880C0506, // 0030 GETMBR R3 R2 K6
- 0x58100001, // 0031 LDCONST R4 K1
- 0x5415FFFE, // 0032 LDINT R5 -1
- 0xB81A0E00, // 0033 GETNGBL R6 K7
- 0x88180D08, // 0034 GETMBR R6 R6 K8
- 0x14180806, // 0035 LT R6 R4 R6
- 0x781A000A, // 0036 JMPF R6 #0042
- 0x94180604, // 0037 GETIDX R6 R3 R4
- 0x1C1C0C00, // 0038 EQ R7 R6 R0
- 0x781E0000, // 0039 JMPF R7 #003B
- 0x80040800, // 003A RET 1 R4
- 0x141C0D01, // 003B LT R7 R6 K1
- 0x781E0002, // 003C JMPF R7 #0040
- 0x141C0B01, // 003D LT R7 R5 K1
- 0x781E0000, // 003E JMPF R7 #0040
- 0x5C140800, // 003F MOVE R5 R4
- 0x00100909, // 0040 ADD R4 R4 K9
- 0x7001FFF0, // 0041 JMP #0033
- 0x28180B01, // 0042 GE R6 R5 K1
- 0x781A0001, // 0043 JMPF R6 #0046
- 0x980C0A00, // 0044 SETIDX R3 R5 R0
- 0x80040A00, // 0045 RET 1 R5
- 0xB0061F10, // 0046 RAISE 1 K15 K16
- 0x80000000, // 0047 RET 0
+ ( &(const binstruction[ 9]) { /* code */
+ 0x14080300, // 0000 LT R2 R1 K0
+ 0x780A0000, // 0001 JMPF R2 #0003
+ 0x58040000, // 0002 LDCONST R1 K0
+ 0x540A00FE, // 0003 LDINT R2 255
+ 0x24080202, // 0004 GT R2 R1 R2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x540600FE, // 0006 LDINT R1 255
+ 0x90020201, // 0007 SETMBR R0 K1 R1
+ 0x80000000, // 0008 RET 0
})
)
);
@@ -680,9 +582,9 @@ be_local_closure(Leds_assign_rmt, /* name */
/********************************************************************
-** Solidified function: can_show
+** Solidified function: begin
********************************************************************/
-be_local_closure(Leds_can_show, /* name */
+be_local_closure(Leds_begin, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
@@ -694,14 +596,203 @@ be_local_closure(Leds_can_show, /* name */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(call_native),
- /* K1 */ be_const_int(3),
+ /* K1 */ be_const_int(1),
}),
- &be_const_str_can_show,
+ &be_const_str_begin,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0
0x580C0001, // 0001 LDCONST R3 K1
0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: clear
+********************************************************************/
+be_local_closure(Leds_clear, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str(clear_to),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str(show),
+ }),
+ &be_const_str_clear,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x580C0001, // 0001 LDCONST R3 K1
+ 0x7C040400, // 0002 CALL R1 2
+ 0x8C040102, // 0003 GETMET R1 R0 K2
+ 0x7C040200, // 0004 CALL R1 1
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Leds_init, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_nested_str(gamma),
+ /* K1 */ be_nested_str(leds),
+ /* K2 */ be_nested_str(bri),
+ /* K3 */ be_nested_str(valuer_error),
+ /* K4 */ be_nested_str(no_X20GPIO_X20specified_X20for_X20neopixelbus),
+ /* K5 */ be_nested_str(ctor),
+ /* K6 */ be_nested_str(_p),
+ /* K7 */ be_nested_str(internal_error),
+ /* K8 */ be_nested_str(couldn_X27t_X20not_X20initialize_X20noepixelbus),
+ /* K9 */ be_nested_str(begin),
+ }),
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[26]) { /* code */
+ 0x50140200, // 0000 LDBOOL R5 1 0
+ 0x90020005, // 0001 SETMBR R0 K0 R5
+ 0x60140009, // 0002 GETGBL R5 G9
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x7C140200, // 0004 CALL R5 1
+ 0x90020205, // 0005 SETMBR R0 K1 R5
+ 0x5416007E, // 0006 LDINT R5 127
+ 0x90020405, // 0007 SETMBR R0 K2 R5
+ 0x4C140000, // 0008 LDNIL R5
+ 0x1C140405, // 0009 EQ R5 R2 R5
+ 0x78160000, // 000A JMPF R5 #000C
+ 0xB0060704, // 000B RAISE 1 K3 K4
+ 0x8C140105, // 000C GETMET R5 R0 K5
+ 0x881C0101, // 000D GETMBR R7 R0 K1
+ 0x5C200400, // 000E MOVE R8 R2
+ 0x5C240600, // 000F MOVE R9 R3
+ 0x5C280800, // 0010 MOVE R10 R4
+ 0x7C140A00, // 0011 CALL R5 5
+ 0x88140106, // 0012 GETMBR R5 R0 K6
+ 0x4C180000, // 0013 LDNIL R6
+ 0x1C140A06, // 0014 EQ R5 R5 R6
+ 0x78160000, // 0015 JMPF R5 #0017
+ 0xB0060F08, // 0016 RAISE 1 K7 K8
+ 0x8C140109, // 0017 GETMET R5 R0 K9
+ 0x7C140200, // 0018 CALL R5 1
+ 0x80000000, // 0019 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: to_gamma
+********************************************************************/
+be_local_closure(Leds_to_gamma, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(apply_bri_gamma),
+ /* K2 */ be_nested_str(gamma),
+ }),
+ &be_const_str_to_gamma,
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0000, // 0002 JMPF R3 #0004
+ 0x88080100, // 0003 GETMBR R2 R0 K0
+ 0x8C0C0101, // 0004 GETMET R3 R0 K1
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x5C180400, // 0006 MOVE R6 R2
+ 0x881C0102, // 0007 GETMBR R7 R0 K2
+ 0x7C0C0800, // 0008 CALL R3 4
+ 0x80040600, // 0009 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: show
+********************************************************************/
+be_local_closure(Leds_show, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str(call_native),
+ /* K1 */ be_const_int(2),
+ }),
+ &be_const_str_show,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x580C0001, // 0001 LDCONST R3 K1
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pixel_count
+********************************************************************/
+be_local_closure(Leds_pixel_count, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(call_native),
+ }),
+ &be_const_str_pixel_count,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x540E0007, // 0001 LDINT R3 8
+ 0x7C040400, // 0002 CALL R1 2
0x80040200, // 0003 RET 1 R1
})
)
@@ -709,6 +800,122 @@ be_local_closure(Leds_can_show, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: get_bri
+********************************************************************/
+be_local_closure(Leds_get_bri, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ }),
+ &be_const_str_get_bri,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_gamma
+********************************************************************/
+be_local_closure(Leds_set_gamma, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(gamma),
+ }),
+ &be_const_str_set_gamma,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080017, // 0000 GETGBL R2 G23
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_pixel_color
+********************************************************************/
+be_local_closure(Leds_get_pixel_color, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(call_native),
+ }),
+ &be_const_str_get_pixel_color,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x5412000A, // 0001 LDINT R4 11
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C080600, // 0003 CALL R2 3
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: dirty
+********************************************************************/
+be_local_closure(Leds_dirty, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(call_native),
+ }),
+ &be_const_str_dirty,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x540E0004, // 0001 LDINT R3 5
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: matrix
********************************************************************/
@@ -750,11 +957,11 @@ be_local_closure(Leds_matrix, /* name */
/********************************************************************
-** Solidified function: pixel_count
+** Solidified function: pixel_offset
********************************************************************/
-be_local_closure(Leds_pixel_count, /* name */
+be_local_closure(Leds_pixel_offset, /* name */
be_nested_proto(
- 4, /* nstack */
+ 1, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -763,15 +970,12 @@ be_local_closure(Leds_pixel_count, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
+ /* K0 */ be_const_int(0),
}),
- &be_const_str_pixel_count,
+ &be_const_str_pixel_offset,
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0007, // 0001 LDINT R3 8
- 0x7C040400, // 0002 CALL R1 2
- 0x80040200, // 0003 RET 1 R1
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80060000, // 0000 RET 1 K0
})
)
);
@@ -779,77 +983,38 @@ be_local_closure(Leds_pixel_count, /* name */
/********************************************************************
-** Solidified function: is_dirty
+** Solidified function: clear_to
********************************************************************/
-be_local_closure(Leds_is_dirty, /* name */
+be_local_closure(Leds_clear_to, /* name */
be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
+ 10, /* nstack */
+ 3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(call_native),
+ /* K2 */ be_nested_str(to_gamma),
}),
- &be_const_str_is_dirty,
+ &be_const_str_clear_to,
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0003, // 0001 LDINT R3 4
- 0x7C040400, // 0002 CALL R1 2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pixels_buffer
-********************************************************************/
-be_local_closure(Leds_pixels_buffer, /* name */
- be_nested_proto(
- 8, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_nested_str(pixel_size),
- /* K2 */ be_nested_str(pixel_count),
- /* K3 */ be_nested_str(_change_buffer),
- }),
- &be_const_str_pixels_buffer,
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x54120005, // 0001 LDINT R4 6
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0203, // 0004 EQ R3 R1 R3
- 0x780E0009, // 0005 JMPF R3 #0010
- 0x600C0015, // 0006 GETGBL R3 G21
- 0x5C100400, // 0007 MOVE R4 R2
- 0x8C140101, // 0008 GETMET R5 R0 K1
- 0x7C140200, // 0009 CALL R5 1
- 0x8C180102, // 000A GETMET R6 R0 K2
- 0x7C180200, // 000B CALL R6 1
- 0x08140A06, // 000C MUL R5 R5 R6
- 0x7C0C0400, // 000D CALL R3 2
- 0x80040600, // 000E RET 1 R3
- 0x70020003, // 000F JMP #0014
- 0x8C0C0303, // 0010 GETMET R3 R1 K3
- 0x5C140400, // 0011 MOVE R5 R2
- 0x7C0C0400, // 0012 CALL R3 2
- 0x80040200, // 0013 RET 1 R1
- 0x80000000, // 0014 RET 0
+ ( &(const binstruction[12]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0000, // 0002 JMPF R3 #0004
+ 0x88080100, // 0003 GETMBR R2 R0 K0
+ 0x8C0C0101, // 0004 GETMET R3 R0 K1
+ 0x54160008, // 0005 LDINT R5 9
+ 0x8C180102, // 0006 GETMET R6 R0 K2
+ 0x5C200200, // 0007 MOVE R8 R1
+ 0x5C240400, // 0008 MOVE R9 R2
+ 0x7C180600, // 0009 CALL R6 3
+ 0x7C0C0600, // 000A CALL R3 3
+ 0x80000000, // 000B RET 0
})
)
);
@@ -869,22 +1034,56 @@ be_local_closure(Leds_set_pixel_color, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_nested_str(to_gamma),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(call_native),
+ /* K2 */ be_nested_str(to_gamma),
}),
&be_const_str_set_pixel_color,
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x8C100100, // 0000 GETMET R4 R0 K0
- 0x541A0009, // 0001 LDINT R6 10
- 0x5C1C0200, // 0002 MOVE R7 R1
- 0x8C200101, // 0003 GETMET R8 R0 K1
- 0x5C280400, // 0004 MOVE R10 R2
- 0x5C2C0600, // 0005 MOVE R11 R3
- 0x7C200600, // 0006 CALL R8 3
- 0x7C100800, // 0007 CALL R4 4
- 0x80000000, // 0008 RET 0
+ ( &(const binstruction[13]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x1C100604, // 0001 EQ R4 R3 R4
+ 0x78120000, // 0002 JMPF R4 #0004
+ 0x880C0100, // 0003 GETMBR R3 R0 K0
+ 0x8C100101, // 0004 GETMET R4 R0 K1
+ 0x541A0009, // 0005 LDINT R6 10
+ 0x5C1C0200, // 0006 MOVE R7 R1
+ 0x8C200102, // 0007 GETMET R8 R0 K2
+ 0x5C280400, // 0008 MOVE R10 R2
+ 0x5C2C0600, // 0009 MOVE R11 R3
+ 0x7C200600, // 000A CALL R8 3
+ 0x7C100800, // 000B CALL R4 4
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pixel_size
+********************************************************************/
+be_local_closure(Leds_pixel_size, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(call_native),
+ }),
+ &be_const_str_pixel_size,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x540E0006, // 0001 LDINT R3 7
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80040200, // 0003 RET 1 R1
})
)
);
@@ -906,31 +1105,36 @@ be_local_closure(Leds_matrix_clear_to, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(call_native),
- /* K2 */ be_nested_str(to_gamma),
- /* K3 */ be_nested_str(offset),
- /* K4 */ be_nested_str(w),
- /* K5 */ be_nested_str(h),
+ ( &(const bvalue[ 7]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(strip),
+ /* K2 */ be_nested_str(call_native),
+ /* K3 */ be_nested_str(to_gamma),
+ /* K4 */ be_nested_str(offset),
+ /* K5 */ be_nested_str(w),
+ /* K6 */ be_nested_str(h),
}),
&be_const_str_clear_to,
&be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x54160008, // 0002 LDINT R5 9
- 0x88180100, // 0003 GETMBR R6 R0 K0
- 0x8C180D02, // 0004 GETMET R6 R6 K2
- 0x5C200200, // 0005 MOVE R8 R1
- 0x5C240400, // 0006 MOVE R9 R2
- 0x7C180600, // 0007 CALL R6 3
- 0x881C0103, // 0008 GETMBR R7 R0 K3
- 0x88200104, // 0009 GETMBR R8 R0 K4
- 0x88240105, // 000A GETMBR R9 R0 K5
- 0x08201009, // 000B MUL R8 R8 R9
- 0x7C0C0A00, // 000C CALL R3 5
- 0x80000000, // 000D RET 0
+ ( &(const binstruction[18]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0000, // 0002 JMPF R3 #0004
+ 0x88080100, // 0003 GETMBR R2 R0 K0
+ 0x880C0101, // 0004 GETMBR R3 R0 K1
+ 0x8C0C0702, // 0005 GETMET R3 R3 K2
+ 0x54160008, // 0006 LDINT R5 9
+ 0x88180101, // 0007 GETMBR R6 R0 K1
+ 0x8C180D03, // 0008 GETMET R6 R6 K3
+ 0x5C200200, // 0009 MOVE R8 R1
+ 0x5C240400, // 000A MOVE R9 R2
+ 0x7C180600, // 000B CALL R6 3
+ 0x881C0104, // 000C GETMBR R7 R0 K4
+ 0x88200105, // 000D GETMBR R8 R0 K5
+ 0x88240106, // 000E GETMBR R9 R0 K6
+ 0x08201009, // 000F MUL R8 R8 R9
+ 0x7C0C0A00, // 0010 CALL R3 5
+ 0x80000000, // 0011 RET 0
})
)
);
@@ -1081,22 +1285,27 @@ be_local_closure(Leds_matrix_set_pixel_color, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(set_pixel_color),
- /* K2 */ be_nested_str(offset),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(strip),
+ /* K2 */ be_nested_str(set_pixel_color),
+ /* K3 */ be_nested_str(offset),
}),
&be_const_str_set_pixel_color,
&be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
- 0x88180102, // 0002 GETMBR R6 R0 K2
- 0x00180206, // 0003 ADD R6 R1 R6
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x5C200600, // 0005 MOVE R8 R3
- 0x7C100800, // 0006 CALL R4 4
- 0x80000000, // 0007 RET 0
+ ( &(const binstruction[12]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x1C100604, // 0001 EQ R4 R3 R4
+ 0x78120000, // 0002 JMPF R4 #0004
+ 0x880C0100, // 0003 GETMBR R3 R0 K0
+ 0x88100101, // 0004 GETMBR R4 R0 K1
+ 0x8C100902, // 0005 GETMET R4 R4 K2
+ 0x88180103, // 0006 GETMBR R6 R0 K3
+ 0x00180206, // 0007 ADD R6 R1 R6
+ 0x5C1C0400, // 0008 MOVE R7 R2
+ 0x5C200600, // 0009 MOVE R8 R3
+ 0x7C100800, // 000A CALL R4 4
+ 0x80000000, // 000B RET 0
})
)
);
@@ -1176,48 +1385,53 @@ be_local_closure(Leds_matrix_set_matrix_pixel_color, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(alternate),
- /* K1 */ be_const_int(2),
- /* K2 */ be_nested_str(strip),
- /* K3 */ be_nested_str(set_pixel_color),
- /* K4 */ be_nested_str(w),
- /* K5 */ be_nested_str(h),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str(offset),
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str(bri),
+ /* K1 */ be_nested_str(alternate),
+ /* K2 */ be_const_int(2),
+ /* K3 */ be_nested_str(strip),
+ /* K4 */ be_nested_str(set_pixel_color),
+ /* K5 */ be_nested_str(w),
+ /* K6 */ be_nested_str(h),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str(offset),
}),
&be_const_str_set_matrix_pixel_color,
&be_const_str_solidified,
- ( &(const binstruction[29]) { /* code */
- 0x88140100, // 0000 GETMBR R5 R0 K0
- 0x7816000F, // 0001 JMPF R5 #0012
- 0x10140301, // 0002 MOD R5 R1 K1
- 0x7816000D, // 0003 JMPF R5 #0012
- 0x88140102, // 0004 GETMBR R5 R0 K2
- 0x8C140B03, // 0005 GETMET R5 R5 K3
- 0x881C0104, // 0006 GETMBR R7 R0 K4
- 0x081C0207, // 0007 MUL R7 R1 R7
- 0x88200105, // 0008 GETMBR R8 R0 K5
- 0x001C0E08, // 0009 ADD R7 R7 R8
- 0x041C0E02, // 000A SUB R7 R7 R2
- 0x041C0F06, // 000B SUB R7 R7 K6
- 0x88200107, // 000C GETMBR R8 R0 K7
+ ( &(const binstruction[33]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x1C140805, // 0001 EQ R5 R4 R5
+ 0x78160000, // 0002 JMPF R5 #0004
+ 0x88100100, // 0003 GETMBR R4 R0 K0
+ 0x88140101, // 0004 GETMBR R5 R0 K1
+ 0x7816000F, // 0005 JMPF R5 #0016
+ 0x10140302, // 0006 MOD R5 R1 K2
+ 0x7816000D, // 0007 JMPF R5 #0016
+ 0x88140103, // 0008 GETMBR R5 R0 K3
+ 0x8C140B04, // 0009 GETMET R5 R5 K4
+ 0x881C0105, // 000A GETMBR R7 R0 K5
+ 0x081C0207, // 000B MUL R7 R1 R7
+ 0x88200106, // 000C GETMBR R8 R0 K6
0x001C0E08, // 000D ADD R7 R7 R8
- 0x5C200600, // 000E MOVE R8 R3
- 0x5C240800, // 000F MOVE R9 R4
- 0x7C140800, // 0010 CALL R5 4
- 0x70020009, // 0011 JMP #001C
- 0x88140102, // 0012 GETMBR R5 R0 K2
- 0x8C140B03, // 0013 GETMET R5 R5 K3
- 0x881C0104, // 0014 GETMBR R7 R0 K4
- 0x081C0207, // 0015 MUL R7 R1 R7
- 0x001C0E02, // 0016 ADD R7 R7 R2
- 0x88200107, // 0017 GETMBR R8 R0 K7
- 0x001C0E08, // 0018 ADD R7 R7 R8
- 0x5C200600, // 0019 MOVE R8 R3
- 0x5C240800, // 001A MOVE R9 R4
- 0x7C140800, // 001B CALL R5 4
- 0x80000000, // 001C RET 0
+ 0x041C0E02, // 000E SUB R7 R7 R2
+ 0x041C0F07, // 000F SUB R7 R7 K7
+ 0x88200108, // 0010 GETMBR R8 R0 K8
+ 0x001C0E08, // 0011 ADD R7 R7 R8
+ 0x5C200600, // 0012 MOVE R8 R3
+ 0x5C240800, // 0013 MOVE R9 R4
+ 0x7C140800, // 0014 CALL R5 4
+ 0x70020009, // 0015 JMP #0020
+ 0x88140103, // 0016 GETMBR R5 R0 K3
+ 0x8C140B04, // 0017 GETMET R5 R5 K4
+ 0x881C0105, // 0018 GETMBR R7 R0 K5
+ 0x081C0207, // 0019 MUL R7 R1 R7
+ 0x001C0E02, // 001A ADD R7 R7 R2
+ 0x88200108, // 001B GETMBR R8 R0 K8
+ 0x001C0E08, // 001C ADD R7 R7 R8
+ 0x5C200600, // 001D MOVE R8 R3
+ 0x5C240800, // 001E MOVE R9 R4
+ 0x7C140800, // 001F CALL R5 4
+ 0x80000000, // 0020 RET 0
})
)
);
@@ -1635,12 +1849,68 @@ be_local_closure(Leds_create_matrix, /* name */
/********************************************************************
-** Solidified function: to_gamma
+** Solidified function: get_gamma
********************************************************************/
-be_local_closure(Leds_to_gamma, /* name */
+be_local_closure(Leds_get_gamma, /* name */
be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(gamma),
+ }),
+ &be_const_str_get_gamma,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_dirty
+********************************************************************/
+be_local_closure(Leds_is_dirty, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str(call_native),
+ }),
+ &be_const_str_is_dirty,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x540E0003, // 0001 LDINT R3 4
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: can_show
+********************************************************************/
+be_local_closure(Leds_can_show, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -1648,18 +1918,129 @@ be_local_closure(Leds_to_gamma, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(apply_bri_gamma),
- /* K1 */ be_nested_str(gamma),
+ /* K0 */ be_nested_str(call_native),
+ /* K1 */ be_const_int(3),
}),
- &be_const_str_to_gamma,
+ &be_const_str_can_show,
&be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
- 0x5C140200, // 0001 MOVE R5 R1
- 0x5C180400, // 0002 MOVE R6 R2
- 0x881C0101, // 0003 GETMBR R7 R0 K1
- 0x7C0C0800, // 0004 CALL R3 4
- 0x80040600, // 0005 RET 1 R3
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x580C0001, // 0001 LDCONST R3 K1
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: assign_rmt
+********************************************************************/
+be_local_closure(Leds_assign_rmt, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[17]) { /* constants */
+ /* K0 */ be_const_class(be_class_Leds),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str(value_error),
+ /* K3 */ be_nested_str(invalid_X20GPIO_X20number),
+ /* K4 */ be_nested_str(global),
+ /* K5 */ be_nested_str(contains),
+ /* K6 */ be_nested_str(_rmt),
+ /* K7 */ be_nested_str(gpio),
+ /* K8 */ be_nested_str(MAX_RMT),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str(push),
+ /* K11 */ be_nested_str(stop_iteration),
+ /* K12 */ be_nested_str(pin_used),
+ /* K13 */ be_nested_str(WS2812),
+ /* K14 */ be_nested_str(pin),
+ /* K15 */ be_nested_str(internal_error),
+ /* K16 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available),
+ }),
+ &be_const_str_assign_rmt,
+ &be_const_str_solidified,
+ ( &(const binstruction[72]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x60080009, // 0001 GETGBL R2 G9
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C080200, // 0003 CALL R2 1
+ 0x5C000400, // 0004 MOVE R0 R2
+ 0x14080101, // 0005 LT R2 R0 K1
+ 0x780A0000, // 0006 JMPF R2 #0008
+ 0xB0060503, // 0007 RAISE 1 K2 K3
+ 0xA40A0800, // 0008 IMPORT R2 K4
+ 0x4C0C0000, // 0009 LDNIL R3
+ 0x8C100505, // 000A GETMET R4 R2 K5
+ 0x58180006, // 000B LDCONST R6 K6
+ 0x7C100400, // 000C CALL R4 2
+ 0x74120021, // 000D JMPT R4 #0030
+ 0x60100012, // 000E GETGBL R4 G18
+ 0x7C100000, // 000F CALL R4 0
+ 0x5C0C0800, // 0010 MOVE R3 R4
+ 0x900A0C03, // 0011 SETMBR R2 K6 R3
+ 0x60100010, // 0012 GETGBL R4 G16
+ 0xB8160E00, // 0013 GETNGBL R5 K7
+ 0x88140B08, // 0014 GETMBR R5 R5 K8
+ 0x04140B09, // 0015 SUB R5 R5 K9
+ 0x40160205, // 0016 CONNECT R5 K1 R5
+ 0x7C100200, // 0017 CALL R4 1
+ 0xA8020005, // 0018 EXBLK 0 #001F
+ 0x5C140800, // 0019 MOVE R5 R4
+ 0x7C140000, // 001A CALL R5 0
+ 0x8C18070A, // 001B GETMET R6 R3 K10
+ 0x5421FFFE, // 001C LDINT R8 -1
+ 0x7C180400, // 001D CALL R6 2
+ 0x7001FFF9, // 001E JMP #0019
+ 0x5810000B, // 001F LDCONST R4 K11
+ 0xAC100200, // 0020 CATCH R4 1 0
+ 0xB0080000, // 0021 RAISE 2 R0 R0
+ 0xB8120E00, // 0022 GETNGBL R4 K7
+ 0x8C10090C, // 0023 GETMET R4 R4 K12
+ 0xB81A0E00, // 0024 GETNGBL R6 K7
+ 0x88180D0D, // 0025 GETMBR R6 R6 K13
+ 0x581C0001, // 0026 LDCONST R7 K1
+ 0x7C100600, // 0027 CALL R4 3
+ 0x78120006, // 0028 JMPF R4 #0030
+ 0xB8120E00, // 0029 GETNGBL R4 K7
+ 0x8C10090E, // 002A GETMET R4 R4 K14
+ 0xB81A0E00, // 002B GETNGBL R6 K7
+ 0x88180D0D, // 002C GETMBR R6 R6 K13
+ 0x581C0001, // 002D LDCONST R7 K1
+ 0x7C100600, // 002E CALL R4 3
+ 0x980E0204, // 002F SETIDX R3 K1 R4
+ 0x880C0506, // 0030 GETMBR R3 R2 K6
+ 0x58100001, // 0031 LDCONST R4 K1
+ 0x5415FFFE, // 0032 LDINT R5 -1
+ 0xB81A0E00, // 0033 GETNGBL R6 K7
+ 0x88180D08, // 0034 GETMBR R6 R6 K8
+ 0x14180806, // 0035 LT R6 R4 R6
+ 0x781A000A, // 0036 JMPF R6 #0042
+ 0x94180604, // 0037 GETIDX R6 R3 R4
+ 0x1C1C0C00, // 0038 EQ R7 R6 R0
+ 0x781E0000, // 0039 JMPF R7 #003B
+ 0x80040800, // 003A RET 1 R4
+ 0x141C0D01, // 003B LT R7 R6 K1
+ 0x781E0002, // 003C JMPF R7 #0040
+ 0x141C0B01, // 003D LT R7 R5 K1
+ 0x781E0000, // 003E JMPF R7 #0040
+ 0x5C140800, // 003F MOVE R5 R4
+ 0x00100909, // 0040 ADD R4 R4 K9
+ 0x7001FFF0, // 0041 JMP #0033
+ 0x28180B01, // 0042 GE R6 R5 K1
+ 0x781A0001, // 0043 JMPF R6 #0046
+ 0x980C0A00, // 0044 SETIDX R3 R5 R0
+ 0x80040A00, // 0045 RET 1 R5
+ 0xB0061F10, // 0046 RAISE 1 K15 K16
+ 0x80000000, // 0047 RET 0
})
)
);
@@ -1714,74 +2095,11 @@ be_local_closure(Leds_ctor, /* name */
/********************************************************************
-** Solidified function: dirty
+** Solidified function: pixels_buffer
********************************************************************/
-be_local_closure(Leds_dirty, /* name */
+be_local_closure(Leds_pixels_buffer, /* name */
be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- }),
- &be_const_str_dirty,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0004, // 0001 LDINT R3 5
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: clear_to
-********************************************************************/
-be_local_closure(Leds_clear_to, /* name */
- be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_nested_str(to_gamma),
- }),
- &be_const_str_clear_to,
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
- 0x54160008, // 0001 LDINT R5 9
- 0x8C180101, // 0002 GETMET R6 R0 K1
- 0x5C200200, // 0003 MOVE R8 R1
- 0x5C240400, // 0004 MOVE R9 R2
- 0x7C180600, // 0005 CALL R6 3
- 0x7C0C0600, // 0006 CALL R3 3
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_pixel_color
-********************************************************************/
-be_local_closure(Leds_get_pixel_color, /* name */
- be_nested_proto(
- 6, /* nstack */
+ 8, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1789,192 +2107,36 @@ be_local_closure(Leds_get_pixel_color, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
+ ( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(call_native),
+ /* K1 */ be_nested_str(pixel_size),
+ /* K2 */ be_nested_str(pixel_count),
+ /* K3 */ be_nested_str(_change_buffer),
}),
- &be_const_str_get_pixel_color,
+ &be_const_str_pixels_buffer,
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
+ ( &(const binstruction[21]) { /* code */
0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5412000A, // 0001 LDINT R4 11
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C080600, // 0003 CALL R2 3
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Leds_init, /* name */
- be_nested_proto(
- 11, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(gamma),
- /* K1 */ be_nested_str(leds),
- /* K2 */ be_nested_str(valuer_error),
- /* K3 */ be_nested_str(no_X20GPIO_X20specified_X20for_X20neopixelbus),
- /* K4 */ be_nested_str(ctor),
- /* K5 */ be_nested_str(_p),
- /* K6 */ be_nested_str(internal_error),
- /* K7 */ be_nested_str(couldn_X27t_X20not_X20initialize_X20noepixelbus),
- /* K8 */ be_nested_str(begin),
- }),
- &be_const_str_init,
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x50140200, // 0000 LDBOOL R5 1 0
- 0x90020005, // 0001 SETMBR R0 K0 R5
- 0x60140009, // 0002 GETGBL R5 G9
- 0x5C180200, // 0003 MOVE R6 R1
- 0x7C140200, // 0004 CALL R5 1
- 0x90020205, // 0005 SETMBR R0 K1 R5
- 0x4C140000, // 0006 LDNIL R5
- 0x1C140405, // 0007 EQ R5 R2 R5
- 0x78160000, // 0008 JMPF R5 #000A
- 0xB0060503, // 0009 RAISE 1 K2 K3
- 0x8C140104, // 000A GETMET R5 R0 K4
- 0x881C0101, // 000B GETMBR R7 R0 K1
- 0x5C200400, // 000C MOVE R8 R2
- 0x5C240600, // 000D MOVE R9 R3
- 0x5C280800, // 000E MOVE R10 R4
- 0x7C140A00, // 000F CALL R5 5
- 0x88140105, // 0010 GETMBR R5 R0 K5
- 0x4C180000, // 0011 LDNIL R6
- 0x1C140A06, // 0012 EQ R5 R5 R6
- 0x78160000, // 0013 JMPF R5 #0015
- 0xB0060D07, // 0014 RAISE 1 K6 K7
- 0x8C140108, // 0015 GETMET R5 R0 K8
- 0x7C140200, // 0016 CALL R5 1
- 0x80000000, // 0017 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: begin
-********************************************************************/
-be_local_closure(Leds_begin, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_const_int(1),
- }),
- &be_const_str_begin,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pixel_offset
-********************************************************************/
-be_local_closure(Leds_pixel_offset, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_const_int(0),
- }),
- &be_const_str_pixel_offset,
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80060000, // 0000 RET 1 K0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: clear
-********************************************************************/
-be_local_closure(Leds_clear, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(clear_to),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(show),
- }),
- &be_const_str_clear,
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x8C040102, // 0003 GETMET R1 R0 K2
- 0x7C040200, // 0004 CALL R1 1
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pixel_size
-********************************************************************/
-be_local_closure(Leds_pixel_size, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- }),
- &be_const_str_pixel_size,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0006, // 0001 LDINT R3 7
- 0x7C040400, // 0002 CALL R1 2
- 0x80040200, // 0003 RET 1 R1
+ 0x54120005, // 0001 LDINT R4 6
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0203, // 0004 EQ R3 R1 R3
+ 0x780E0009, // 0005 JMPF R3 #0010
+ 0x600C0015, // 0006 GETGBL R3 G21
+ 0x5C100400, // 0007 MOVE R4 R2
+ 0x8C140101, // 0008 GETMET R5 R0 K1
+ 0x7C140200, // 0009 CALL R5 1
+ 0x8C180102, // 000A GETMET R6 R0 K2
+ 0x7C180200, // 000B CALL R6 1
+ 0x08140A06, // 000C MUL R5 R5 R6
+ 0x7C0C0400, // 000D CALL R3 2
+ 0x80040600, // 000E RET 1 R3
+ 0x70020003, // 000F JMP #0014
+ 0x8C0C0303, // 0010 GETMET R3 R1 K3
+ 0x5C140400, // 0011 MOVE R5 R2
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0x80040200, // 0013 RET 1 R1
+ 0x80000000, // 0014 RET 0
})
)
);
@@ -1986,32 +2148,37 @@ be_local_closure(Leds_pixel_size, /* name */
********************************************************************/
extern const bclass be_class_Leds_ntv;
be_local_class(Leds,
- 2,
+ 3,
&be_class_Leds_ntv,
- be_nested_map(22,
+ be_nested_map(27,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key(show, -1), be_const_closure(Leds_show_closure) },
- { be_const_key(create_segment, -1), be_const_closure(Leds_create_segment_closure) },
- { be_const_key(assign_rmt, -1), be_const_static_closure(Leds_assign_rmt_closure) },
- { be_const_key(pixel_size, -1), be_const_closure(Leds_pixel_size_closure) },
- { be_const_key(matrix, 18), be_const_static_closure(Leds_matrix_closure) },
- { be_const_key(pixel_count, -1), be_const_closure(Leds_pixel_count_closure) },
- { be_const_key(ctor, -1), be_const_closure(Leds_ctor_closure) },
- { be_const_key(pixels_buffer, -1), be_const_closure(Leds_pixels_buffer_closure) },
- { be_const_key(set_pixel_color, -1), be_const_closure(Leds_set_pixel_color_closure) },
- { be_const_key(create_matrix, 15), be_const_closure(Leds_create_matrix_closure) },
- { be_const_key(is_dirty, 14), be_const_closure(Leds_is_dirty_closure) },
- { be_const_key(can_show, 6), be_const_closure(Leds_can_show_closure) },
- { be_const_key(to_gamma, -1), be_const_closure(Leds_to_gamma_closure) },
- { be_const_key(dirty, 19), be_const_closure(Leds_dirty_closure) },
- { be_const_key(begin, 12), be_const_closure(Leds_begin_closure) },
- { be_const_key(init, -1), be_const_closure(Leds_init_closure) },
- { be_const_key(gamma, 17), be_const_var(0) },
- { be_const_key(get_pixel_color, -1), be_const_closure(Leds_get_pixel_color_closure) },
- { be_const_key(clear_to, -1), be_const_closure(Leds_clear_to_closure) },
{ be_const_key(leds, -1), be_const_var(1) },
+ { be_const_key(create_segment, 25), be_const_closure(Leds_create_segment_closure) },
{ be_const_key(clear, -1), be_const_closure(Leds_clear_closure) },
- { be_const_key(pixel_offset, 3), be_const_closure(Leds_pixel_offset_closure) },
+ { be_const_key(begin, -1), be_const_closure(Leds_begin_closure) },
+ { be_const_key(ctor, 7), be_const_closure(Leds_ctor_closure) },
+ { be_const_key(assign_rmt, 12), be_const_static_closure(Leds_assign_rmt_closure) },
+ { be_const_key(to_gamma, 8), be_const_closure(Leds_to_gamma_closure) },
+ { be_const_key(dirty, -1), be_const_closure(Leds_dirty_closure) },
+ { be_const_key(matrix, -1), be_const_static_closure(Leds_matrix_closure) },
+ { be_const_key(pixel_offset, 2), be_const_closure(Leds_pixel_offset_closure) },
+ { be_const_key(set_gamma, 4), be_const_closure(Leds_set_gamma_closure) },
+ { be_const_key(get_pixel_color, -1), be_const_closure(Leds_get_pixel_color_closure) },
+ { be_const_key(pixel_size, -1), be_const_closure(Leds_pixel_size_closure) },
+ { be_const_key(create_matrix, -1), be_const_closure(Leds_create_matrix_closure) },
+ { be_const_key(set_bri, 9), be_const_closure(Leds_set_bri_closure) },
+ { be_const_key(clear_to, -1), be_const_closure(Leds_clear_to_closure) },
+ { be_const_key(set_pixel_color, -1), be_const_closure(Leds_set_pixel_color_closure) },
+ { be_const_key(gamma, -1), be_const_var(0) },
+ { be_const_key(pixel_count, 17), be_const_closure(Leds_pixel_count_closure) },
+ { be_const_key(get_bri, 13), be_const_closure(Leds_get_bri_closure) },
+ { be_const_key(get_gamma, -1), be_const_closure(Leds_get_gamma_closure) },
+ { be_const_key(bri, -1), be_const_var(2) },
+ { be_const_key(is_dirty, -1), be_const_closure(Leds_is_dirty_closure) },
+ { be_const_key(can_show, -1), be_const_closure(Leds_can_show_closure) },
+ { be_const_key(init, 5), be_const_closure(Leds_init_closure) },
+ { be_const_key(show, -1), be_const_closure(Leds_show_closure) },
+ { be_const_key(pixels_buffer, -1), be_const_closure(Leds_pixels_buffer_closure) },
})),
(bstring*) &be_const_str_Leds
);
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h
index 31a6267d5..5ff64c7fd 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h
@@ -17,7 +17,7 @@ be_local_closure(lv_tasmota_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[33]) { /* constants */
+ ( &(const bvalue[35]) { /* constants */
/* K0 */ be_nested_str_weak(lv),
/* K1 */ be_nested_str_weak(start),
/* K2 */ be_nested_str_weak(splash_init),
@@ -32,29 +32,31 @@ be_local_closure(lv_tasmota_init, /* name */
/* K11 */ be_nested_str_weak(load_freetype_font),
/* K12 */ be_nested_str_weak(register_button_encoder),
/* K13 */ be_nested_str_weak(screenshot),
- /* K14 */ be_nested_str_weak(clock),
- /* K15 */ be_nested_str_weak(lv_clock),
- /* K16 */ be_nested_str_weak(clock_icon),
- /* K17 */ be_nested_str_weak(lv_clock_icon),
- /* K18 */ be_nested_str_weak(signal_arcs),
- /* K19 */ be_nested_str_weak(lv_signal_arcs),
- /* K20 */ be_nested_str_weak(signal_bars),
- /* K21 */ be_nested_str_weak(lv_signal_bars),
- /* K22 */ be_nested_str_weak(wifi_arcs_icon),
- /* K23 */ be_nested_str_weak(lv_wifi_arcs_icon),
- /* K24 */ be_nested_str_weak(wifi_arcs),
- /* K25 */ be_nested_str_weak(lv_wifi_arcs),
- /* K26 */ be_nested_str_weak(wifi_bars_icon),
- /* K27 */ be_nested_str_weak(lv_wifi_bars_icon),
- /* K28 */ be_nested_str_weak(wifi_bars),
- /* K29 */ be_nested_str_weak(lv_wifi_bars),
- /* K30 */ be_nested_str_weak(tasmota),
- /* K31 */ be_nested_str_weak(get_option),
- /* K32 */ be_const_int(0),
+ /* K14 */ be_nested_str_weak(version),
+ /* K15 */ be_nested_str_weak(version_major),
+ /* K16 */ be_nested_str_weak(clock),
+ /* K17 */ be_nested_str_weak(lv_clock),
+ /* K18 */ be_nested_str_weak(clock_icon),
+ /* K19 */ be_nested_str_weak(lv_clock_icon),
+ /* K20 */ be_nested_str_weak(signal_arcs),
+ /* K21 */ be_nested_str_weak(lv_signal_arcs),
+ /* K22 */ be_nested_str_weak(signal_bars),
+ /* K23 */ be_nested_str_weak(lv_signal_bars),
+ /* K24 */ be_nested_str_weak(wifi_arcs_icon),
+ /* K25 */ be_nested_str_weak(lv_wifi_arcs_icon),
+ /* K26 */ be_nested_str_weak(wifi_arcs),
+ /* K27 */ be_nested_str_weak(lv_wifi_arcs),
+ /* K28 */ be_nested_str_weak(wifi_bars_icon),
+ /* K29 */ be_nested_str_weak(lv_wifi_bars_icon),
+ /* K30 */ be_nested_str_weak(wifi_bars),
+ /* K31 */ be_nested_str_weak(lv_wifi_bars),
+ /* K32 */ be_nested_str_weak(tasmota),
+ /* K33 */ be_nested_str_weak(get_option),
+ /* K34 */ be_const_int(0),
}),
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
+ ( &(const binstruction[56]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x88080101, // 0001 GETMBR R2 R0 K1
0x90060202, // 0002 SETMBR R1 K1 R2
@@ -82,32 +84,35 @@ be_local_closure(lv_tasmota_init, /* name */
0x90061802, // 0018 SETMBR R1 K12 R2
0x8808010D, // 0019 GETMBR R2 R0 K13
0x90061A02, // 001A SETMBR R1 K13 R2
- 0xB80A1E00, // 001B GETNGBL R2 K15
- 0x90061C02, // 001C SETMBR R1 K14 R2
- 0xB80A2200, // 001D GETNGBL R2 K17
- 0x90062002, // 001E SETMBR R1 K16 R2
- 0xB80A2600, // 001F GETNGBL R2 K19
- 0x90062402, // 0020 SETMBR R1 K18 R2
- 0xB80A2A00, // 0021 GETNGBL R2 K21
- 0x90062802, // 0022 SETMBR R1 K20 R2
- 0xB80A2E00, // 0023 GETNGBL R2 K23
- 0x90062C02, // 0024 SETMBR R1 K22 R2
- 0xB80A3200, // 0025 GETNGBL R2 K25
- 0x90063002, // 0026 SETMBR R1 K24 R2
- 0xB80A3600, // 0027 GETNGBL R2 K27
- 0x90063402, // 0028 SETMBR R1 K26 R2
- 0xB80A3A00, // 0029 GETNGBL R2 K29
- 0x90063802, // 002A SETMBR R1 K28 R2
- 0xB80A3C00, // 002B GETNGBL R2 K30
- 0x8C08051F, // 002C GETMET R2 R2 K31
- 0x54120086, // 002D LDINT R4 135
- 0x7C080400, // 002E CALL R2 2
- 0x1C080520, // 002F EQ R2 R2 K32
- 0x780A0001, // 0030 JMPF R2 #0033
- 0x8C080302, // 0031 GETMET R2 R1 K2
- 0x7C080200, // 0032 CALL R2 1
- 0x4C080000, // 0033 LDNIL R2
- 0x80040400, // 0034 RET 1 R2
+ 0x8C08030F, // 001B GETMET R2 R1 K15
+ 0x7C080200, // 001C CALL R2 1
+ 0x90061C02, // 001D SETMBR R1 K14 R2
+ 0xB80A2200, // 001E GETNGBL R2 K17
+ 0x90062002, // 001F SETMBR R1 K16 R2
+ 0xB80A2600, // 0020 GETNGBL R2 K19
+ 0x90062402, // 0021 SETMBR R1 K18 R2
+ 0xB80A2A00, // 0022 GETNGBL R2 K21
+ 0x90062802, // 0023 SETMBR R1 K20 R2
+ 0xB80A2E00, // 0024 GETNGBL R2 K23
+ 0x90062C02, // 0025 SETMBR R1 K22 R2
+ 0xB80A3200, // 0026 GETNGBL R2 K25
+ 0x90063002, // 0027 SETMBR R1 K24 R2
+ 0xB80A3600, // 0028 GETNGBL R2 K27
+ 0x90063402, // 0029 SETMBR R1 K26 R2
+ 0xB80A3A00, // 002A GETNGBL R2 K29
+ 0x90063802, // 002B SETMBR R1 K28 R2
+ 0xB80A3E00, // 002C GETNGBL R2 K31
+ 0x90063C02, // 002D SETMBR R1 K30 R2
+ 0xB80A4000, // 002E GETNGBL R2 K32
+ 0x8C080521, // 002F GETMET R2 R2 K33
+ 0x54120086, // 0030 LDINT R4 135
+ 0x7C080400, // 0031 CALL R2 2
+ 0x1C080522, // 0032 EQ R2 R2 K34
+ 0x780A0001, // 0033 JMPF R2 #0036
+ 0x8C080302, // 0034 GETMET R2 R1 K2
+ 0x7C080200, // 0035 CALL R2 1
+ 0x4C080000, // 0036 LDNIL R2
+ 0x80040400, // 0037 RET 1 R2
})
)
);
@@ -297,7 +302,7 @@ be_local_closure(lv_tasmota_splash, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[42]) { /* constants */
+ ( &(const bvalue[43]) { /* constants */
/* K0 */ be_nested_str_weak(display),
/* K1 */ be_nested_str_weak(started),
/* K2 */ be_nested_str_weak(lv),
@@ -323,27 +328,28 @@ be_local_closure(lv_tasmota_splash, /* name */
/* K22 */ be_nested_str_weak(set_zoom),
/* K23 */ be_nested_str_weak(set_style_img_recolor_opa),
/* K24 */ be_nested_str_weak(set_style_img_recolor),
- /* K25 */ be_nested_str_weak(set_align),
+ /* K25 */ be_nested_str_weak(align),
/* K26 */ be_nested_str_weak(ALIGN_LEFT_MID),
- /* K27 */ be_nested_str_weak(set_x),
- /* K28 */ be_nested_str_weak(label),
- /* K29 */ be_nested_str_weak(set_style_text_color),
- /* K30 */ be_nested_str_weak(set_text),
- /* K31 */ be_nested_str_weak(TASMOTA),
- /* K32 */ be_nested_str_weak(get_hor_res),
- /* K33 */ be_nested_str_weak(set_style_text_font),
- /* K34 */ be_nested_str_weak(driver_name),
- /* K35 */ be_nested_str_weak(ALIGN_BOTTOM_MID),
- /* K36 */ be_const_int(16777215),
- /* K37 */ be_nested_str_weak(refr_now),
- /* K38 */ be_nested_str_weak(_splash),
- /* K39 */ be_nested_str_weak(tasmota),
- /* K40 */ be_nested_str_weak(set_timer),
- /* K41 */ be_nested_str_weak(splash_remove),
+ /* K27 */ be_nested_str_weak(label),
+ /* K28 */ be_nested_str_weak(set_style_text_color),
+ /* K29 */ be_nested_str_weak(set_text),
+ /* K30 */ be_nested_str_weak(TASMOTA),
+ /* K31 */ be_nested_str_weak(get_hor_res),
+ /* K32 */ be_nested_str_weak(set_style_text_font),
+ /* K33 */ be_nested_str_weak(set_align),
+ /* K34 */ be_nested_str_weak(set_x),
+ /* K35 */ be_nested_str_weak(driver_name),
+ /* K36 */ be_nested_str_weak(ALIGN_BOTTOM_MID),
+ /* K37 */ be_const_int(16777215),
+ /* K38 */ be_nested_str_weak(refr_now),
+ /* K39 */ be_nested_str_weak(_splash),
+ /* K40 */ be_nested_str_weak(tasmota),
+ /* K41 */ be_nested_str_weak(set_timer),
+ /* K42 */ be_nested_str_weak(splash_remove),
}),
be_str_weak(splash),
&be_const_str_solidified,
- ( &(const binstruction[166]) { /* code */
+ ( &(const binstruction[165]) { /* code */
0xA4020000, // 0000 IMPORT R0 K0
0x8C040101, // 0001 GETMET R1 R0 K1
0x7C040200, // 0002 CALL R1 1
@@ -427,89 +433,88 @@ be_local_closure(lv_tasmota_splash, /* name */
0x8C180B19, // 0050 GETMET R6 R5 K25
0xB8220400, // 0051 GETNGBL R8 K2
0x8820111A, // 0052 GETMBR R8 R8 K26
- 0x7C180400, // 0053 CALL R6 2
- 0x8C180B1B, // 0054 GETMET R6 R5 K27
- 0x5421FFF3, // 0055 LDINT R8 -12
- 0x7C180400, // 0056 CALL R6 2
- 0xB81A0400, // 0057 GETNGBL R6 K2
- 0x8C180D1C, // 0058 GETMET R6 R6 K28
- 0x5C200200, // 0059 MOVE R8 R1
- 0x7C180400, // 005A CALL R6 2
- 0x8C1C0D1D, // 005B GETMET R7 R6 K29
- 0x5C240800, // 005C MOVE R9 R4
- 0x5828000A, // 005D LDCONST R10 K10
- 0x7C1C0600, // 005E CALL R7 3
- 0x8C1C0D1E, // 005F GETMET R7 R6 K30
- 0x5824001F, // 0060 LDCONST R9 K31
- 0x7C1C0400, // 0061 CALL R7 2
- 0xB81E0400, // 0062 GETNGBL R7 K2
- 0x8C1C0F20, // 0063 GETMET R7 R7 K32
- 0x7C1C0200, // 0064 CALL R7 1
- 0x542200C7, // 0065 LDINT R8 200
- 0x281C0E08, // 0066 GE R7 R7 R8
- 0x781E0007, // 0067 JMPF R7 #0070
- 0x4C1C0000, // 0068 LDNIL R7
- 0x201C0407, // 0069 NE R7 R2 R7
- 0x781E0003, // 006A JMPF R7 #006F
- 0x8C1C0D21, // 006B GETMET R7 R6 K33
- 0x5C240400, // 006C MOVE R9 R2
- 0x5828000A, // 006D LDCONST R10 K10
- 0x7C1C0600, // 006E CALL R7 3
- 0x70020006, // 006F JMP #0077
- 0x4C1C0000, // 0070 LDNIL R7
- 0x201C0607, // 0071 NE R7 R3 R7
- 0x781E0003, // 0072 JMPF R7 #0077
- 0x8C1C0D21, // 0073 GETMET R7 R6 K33
- 0x5C240600, // 0074 MOVE R9 R3
- 0x5828000A, // 0075 LDCONST R10 K10
- 0x7C1C0600, // 0076 CALL R7 3
- 0x8C1C0D19, // 0077 GETMET R7 R6 K25
- 0xB8260400, // 0078 GETNGBL R9 K2
- 0x8824131A, // 0079 GETMBR R9 R9 K26
- 0x7C1C0400, // 007A CALL R7 2
- 0x8C1C0D1B, // 007B GETMET R7 R6 K27
- 0x54260029, // 007C LDINT R9 42
- 0x7C1C0400, // 007D CALL R7 2
- 0x8C1C0122, // 007E GETMET R7 R0 K34
- 0x7C1C0200, // 007F CALL R7 1
- 0x4C200000, // 0080 LDNIL R8
- 0x6024000C, // 0081 GETGBL R9 G12
- 0x5C280E00, // 0082 MOVE R10 R7
- 0x7C240200, // 0083 CALL R9 1
- 0x2424130A, // 0084 GT R9 R9 K10
- 0x78260012, // 0085 JMPF R9 #0099
- 0xB8260400, // 0086 GETNGBL R9 K2
- 0x8C24131C, // 0087 GETMET R9 R9 K28
- 0x5C2C0200, // 0088 MOVE R11 R1
- 0x7C240400, // 0089 CALL R9 2
- 0x5C201200, // 008A MOVE R8 R9
- 0x8C241119, // 008B GETMET R9 R8 K25
- 0xB82E0400, // 008C GETNGBL R11 K2
- 0x882C1723, // 008D GETMBR R11 R11 K35
- 0x7C240400, // 008E CALL R9 2
- 0x8C24111D, // 008F GETMET R9 R8 K29
- 0xB82E0400, // 0090 GETNGBL R11 K2
- 0x8C2C1707, // 0091 GETMET R11 R11 K7
- 0x58340024, // 0092 LDCONST R13 K36
- 0x7C2C0400, // 0093 CALL R11 2
- 0x5830000A, // 0094 LDCONST R12 K10
- 0x7C240600, // 0095 CALL R9 3
- 0x8C24111E, // 0096 GETMET R9 R8 K30
- 0x5C2C0E00, // 0097 MOVE R11 R7
- 0x7C240400, // 0098 CALL R9 2
- 0xB8260400, // 0099 GETNGBL R9 K2
- 0x8C241325, // 009A GETMET R9 R9 K37
- 0x582C000A, // 009B LDCONST R11 K10
- 0x7C240400, // 009C CALL R9 2
- 0xB8260400, // 009D GETNGBL R9 K2
- 0x90264C01, // 009E SETMBR R9 K38 R1
- 0xB8264E00, // 009F GETNGBL R9 K39
- 0x8C241328, // 00A0 GETMET R9 R9 K40
- 0x542E1387, // 00A1 LDINT R11 5000
- 0xB8320400, // 00A2 GETNGBL R12 K2
- 0x88301929, // 00A3 GETMBR R12 R12 K41
- 0x7C240600, // 00A4 CALL R9 3
- 0x80000000, // 00A5 RET 0
+ 0x5425FFF3, // 0053 LDINT R9 -12
+ 0x5828000A, // 0054 LDCONST R10 K10
+ 0x7C180800, // 0055 CALL R6 4
+ 0xB81A0400, // 0056 GETNGBL R6 K2
+ 0x8C180D1B, // 0057 GETMET R6 R6 K27
+ 0x5C200200, // 0058 MOVE R8 R1
+ 0x7C180400, // 0059 CALL R6 2
+ 0x8C1C0D1C, // 005A GETMET R7 R6 K28
+ 0x5C240800, // 005B MOVE R9 R4
+ 0x5828000A, // 005C LDCONST R10 K10
+ 0x7C1C0600, // 005D CALL R7 3
+ 0x8C1C0D1D, // 005E GETMET R7 R6 K29
+ 0x5824001E, // 005F LDCONST R9 K30
+ 0x7C1C0400, // 0060 CALL R7 2
+ 0xB81E0400, // 0061 GETNGBL R7 K2
+ 0x8C1C0F1F, // 0062 GETMET R7 R7 K31
+ 0x7C1C0200, // 0063 CALL R7 1
+ 0x542200C7, // 0064 LDINT R8 200
+ 0x281C0E08, // 0065 GE R7 R7 R8
+ 0x781E0007, // 0066 JMPF R7 #006F
+ 0x4C1C0000, // 0067 LDNIL R7
+ 0x201C0407, // 0068 NE R7 R2 R7
+ 0x781E0003, // 0069 JMPF R7 #006E
+ 0x8C1C0D20, // 006A GETMET R7 R6 K32
+ 0x5C240400, // 006B MOVE R9 R2
+ 0x5828000A, // 006C LDCONST R10 K10
+ 0x7C1C0600, // 006D CALL R7 3
+ 0x70020006, // 006E JMP #0076
+ 0x4C1C0000, // 006F LDNIL R7
+ 0x201C0607, // 0070 NE R7 R3 R7
+ 0x781E0003, // 0071 JMPF R7 #0076
+ 0x8C1C0D20, // 0072 GETMET R7 R6 K32
+ 0x5C240600, // 0073 MOVE R9 R3
+ 0x5828000A, // 0074 LDCONST R10 K10
+ 0x7C1C0600, // 0075 CALL R7 3
+ 0x8C1C0D21, // 0076 GETMET R7 R6 K33
+ 0xB8260400, // 0077 GETNGBL R9 K2
+ 0x8824131A, // 0078 GETMBR R9 R9 K26
+ 0x7C1C0400, // 0079 CALL R7 2
+ 0x8C1C0D22, // 007A GETMET R7 R6 K34
+ 0x54260029, // 007B LDINT R9 42
+ 0x7C1C0400, // 007C CALL R7 2
+ 0x8C1C0123, // 007D GETMET R7 R0 K35
+ 0x7C1C0200, // 007E CALL R7 1
+ 0x4C200000, // 007F LDNIL R8
+ 0x6024000C, // 0080 GETGBL R9 G12
+ 0x5C280E00, // 0081 MOVE R10 R7
+ 0x7C240200, // 0082 CALL R9 1
+ 0x2424130A, // 0083 GT R9 R9 K10
+ 0x78260012, // 0084 JMPF R9 #0098
+ 0xB8260400, // 0085 GETNGBL R9 K2
+ 0x8C24131B, // 0086 GETMET R9 R9 K27
+ 0x5C2C0200, // 0087 MOVE R11 R1
+ 0x7C240400, // 0088 CALL R9 2
+ 0x5C201200, // 0089 MOVE R8 R9
+ 0x8C241121, // 008A GETMET R9 R8 K33
+ 0xB82E0400, // 008B GETNGBL R11 K2
+ 0x882C1724, // 008C GETMBR R11 R11 K36
+ 0x7C240400, // 008D CALL R9 2
+ 0x8C24111C, // 008E GETMET R9 R8 K28
+ 0xB82E0400, // 008F GETNGBL R11 K2
+ 0x8C2C1707, // 0090 GETMET R11 R11 K7
+ 0x58340025, // 0091 LDCONST R13 K37
+ 0x7C2C0400, // 0092 CALL R11 2
+ 0x5830000A, // 0093 LDCONST R12 K10
+ 0x7C240600, // 0094 CALL R9 3
+ 0x8C24111D, // 0095 GETMET R9 R8 K29
+ 0x5C2C0E00, // 0096 MOVE R11 R7
+ 0x7C240400, // 0097 CALL R9 2
+ 0xB8260400, // 0098 GETNGBL R9 K2
+ 0x8C241326, // 0099 GETMET R9 R9 K38
+ 0x582C000A, // 009A LDCONST R11 K10
+ 0x7C240400, // 009B CALL R9 2
+ 0xB8260400, // 009C GETNGBL R9 K2
+ 0x90264E01, // 009D SETMBR R9 K39 R1
+ 0xB8265000, // 009E GETNGBL R9 K40
+ 0x8C241329, // 009F GETMET R9 R9 K41
+ 0x542E1387, // 00A0 LDINT R11 5000
+ 0xB8320400, // 00A1 GETNGBL R12 K2
+ 0x8830192A, // 00A2 GETMBR R12 R12 K42
+ 0x7C240600, // 00A3 CALL R9 3
+ 0x80000000, // 00A4 RET 0
})
)
);
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h
index 380bbc756..518d6e719 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h
@@ -394,6 +394,344 @@ void be_load_lv_clock_icon_class(bvm *vm) {
extern const bclass be_class_lv_signal_arcs;
+/********************************************************************
+** Solidified function: widget_event
+********************************************************************/
+be_local_closure(lv_signal_arcs_widget_event, /* name */
+ be_nested_proto(
+ 28, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_const_int(1),
+ }),
+ be_str_weak(atleast1),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x28040100, // 0000 GE R1 R0 K0
+ 0x78060001, // 0001 JMPF R1 #0004
+ 0x80040000, // 0002 RET 1 R0
+ 0x70020000, // 0003 JMP #0005
+ 0x80060000, // 0004 RET 1 K0
+ 0x80000000, // 0005 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[35]) { /* constants */
+ /* K0 */ be_nested_str_weak(get_code),
+ /* K1 */ be_nested_str_weak(math),
+ /* K2 */ be_nested_str_weak(get_height),
+ /* K3 */ be_nested_str_weak(get_width),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_const_int(3),
+ /* K6 */ be_nested_str_weak(lv),
+ /* K7 */ be_nested_str_weak(EVENT_DRAW_MAIN),
+ /* K8 */ be_nested_str_weak(arc_dsc),
+ /* K9 */ be_nested_str_weak(get_param),
+ /* K10 */ be_nested_str_weak(get_layer),
+ /* K11 */ be_nested_str_weak(get_coords),
+ /* K12 */ be_nested_str_weak(area),
+ /* K13 */ be_nested_str_weak(x1),
+ /* K14 */ be_nested_str_weak(y1),
+ /* K15 */ be_nested_str_weak(draw_arc_dsc_init),
+ /* K16 */ be_nested_str_weak(init_draw_arc_dsc),
+ /* K17 */ be_nested_str_weak(PART_MAIN),
+ /* K18 */ be_nested_str_weak(rounded),
+ /* K19 */ be_const_int(1),
+ /* K20 */ be_nested_str_weak(width),
+ /* K21 */ be_nested_str_weak(get_style_line_color),
+ /* K22 */ be_nested_str_weak(STATE_DEFAULT),
+ /* K23 */ be_nested_str_weak(get_style_bg_color),
+ /* K24 */ be_nested_str_weak(deg),
+ /* K25 */ be_nested_str_weak(acos),
+ /* K26 */ be_nested_str_weak(center_x),
+ /* K27 */ be_nested_str_weak(center_y),
+ /* K28 */ be_nested_str_weak(color),
+ /* K29 */ be_nested_str_weak(percentage),
+ /* K30 */ be_nested_str_weak(radius),
+ /* K31 */ be_const_int(0),
+ /* K32 */ be_nested_str_weak(start_angle),
+ /* K33 */ be_nested_str_weak(end_angle),
+ /* K34 */ be_nested_str_weak(draw_arc),
+ }),
+ be_str_weak(widget_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[161]) { /* code */
+ 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x7C080200, // 0001 CALL R2 1
+ 0xA40E0200, // 0002 IMPORT R3 K1
+ 0x84100000, // 0003 CLOSURE R4 P0
+ 0x8C140102, // 0004 GETMET R5 R0 K2
+ 0x7C140200, // 0005 CALL R5 1
+ 0x8C180103, // 0006 GETMET R6 R0 K3
+ 0x7C180200, // 0007 CALL R6 1
+ 0x5C1C0800, // 0008 MOVE R7 R4
+ 0x54220007, // 0009 LDINT R8 8
+ 0x0C200A08, // 000A DIV R8 R5 R8
+ 0x7C1C0200, // 000B CALL R7 1
+ 0x5C200800, // 000C MOVE R8 R4
+ 0x08240F04, // 000D MUL R9 R7 K4
+ 0x04240A09, // 000E SUB R9 R5 R9
+ 0x0C241305, // 000F DIV R9 R9 K5
+ 0x7C200200, // 0010 CALL R8 1
+ 0x0C241104, // 0011 DIV R9 R8 K4
+ 0xB82A0C00, // 0012 GETNGBL R10 K6
+ 0x88281507, // 0013 GETMBR R10 R10 K7
+ 0x1C28040A, // 0014 EQ R10 R2 R10
+ 0x782A0089, // 0015 JMPF R10 #00A0
+ 0x88280108, // 0016 GETMBR R10 R0 K8
+ 0x8C2C0309, // 0017 GETMET R11 R1 K9
+ 0x7C2C0200, // 0018 CALL R11 1
+ 0x8C30030A, // 0019 GETMET R12 R1 K10
+ 0x7C300200, // 001A CALL R12 1
+ 0x8C34010B, // 001B GETMET R13 R0 K11
+ 0x883C010C, // 001C GETMBR R15 R0 K12
+ 0x7C340400, // 001D CALL R13 2
+ 0x8834010C, // 001E GETMBR R13 R0 K12
+ 0x88341B0D, // 001F GETMBR R13 R13 K13
+ 0x8838010C, // 0020 GETMBR R14 R0 K12
+ 0x88381D0E, // 0021 GETMBR R14 R14 K14
+ 0xB83E0C00, // 0022 GETNGBL R15 K6
+ 0x8C3C1F0F, // 0023 GETMET R15 R15 K15
+ 0x5C441400, // 0024 MOVE R17 R10
+ 0x7C3C0400, // 0025 CALL R15 2
+ 0x8C3C0110, // 0026 GETMET R15 R0 K16
+ 0xB8460C00, // 0027 GETNGBL R17 K6
+ 0x88442311, // 0028 GETMBR R17 R17 K17
+ 0x5C481400, // 0029 MOVE R18 R10
+ 0x7C3C0600, // 002A CALL R15 3
+ 0x902A2513, // 002B SETMBR R10 K18 K19
+ 0x083C1105, // 002C MUL R15 R8 K5
+ 0x003C1F13, // 002D ADD R15 R15 K19
+ 0x54420003, // 002E LDINT R16 4
+ 0x0C3C1E10, // 002F DIV R15 R15 R16
+ 0x902A280F, // 0030 SETMBR R10 K20 R15
+ 0x8C3C0115, // 0031 GETMET R15 R0 K21
+ 0xB8460C00, // 0032 GETNGBL R17 K6
+ 0x88442311, // 0033 GETMBR R17 R17 K17
+ 0xB84A0C00, // 0034 GETNGBL R18 K6
+ 0x88482516, // 0035 GETMBR R18 R18 K22
+ 0x30442212, // 0036 OR R17 R17 R18
+ 0x7C3C0400, // 0037 CALL R15 2
+ 0x8C400117, // 0038 GETMET R16 R0 K23
+ 0xB84A0C00, // 0039 GETNGBL R18 K6
+ 0x88482511, // 003A GETMBR R18 R18 K17
+ 0xB84E0C00, // 003B GETNGBL R19 K6
+ 0x884C2716, // 003C GETMBR R19 R19 K22
+ 0x30482413, // 003D OR R18 R18 R19
+ 0x7C400400, // 003E CALL R16 2
+ 0x04440A08, // 003F SUB R17 R5 R8
+ 0x0C480D04, // 0040 DIV R18 R6 K4
+ 0x04482409, // 0041 SUB R18 R18 R9
+ 0x604C0009, // 0042 GETGBL R19 G9
+ 0x54520059, // 0043 LDINT R20 90
+ 0x8C540718, // 0044 GETMET R21 R3 K24
+ 0x8C5C0719, // 0045 GETMET R23 R3 K25
+ 0x6064000A, // 0046 GETGBL R25 G10
+ 0x5C682400, // 0047 MOVE R26 R18
+ 0x7C640200, // 0048 CALL R25 1
+ 0x6068000A, // 0049 GETGBL R26 G10
+ 0x5C6C2200, // 004A MOVE R27 R17
+ 0x7C680200, // 004B CALL R26 1
+ 0x0C64321A, // 004C DIV R25 R25 R26
+ 0x7C5C0400, // 004D CALL R23 2
+ 0x7C540400, // 004E CALL R21 2
+ 0x04502815, // 004F SUB R20 R20 R21
+ 0x7C4C0200, // 0050 CALL R19 1
+ 0x5452002C, // 0051 LDINT R20 45
+ 0x24502614, // 0052 GT R20 R19 R20
+ 0x78520000, // 0053 JMPF R20 #0055
+ 0x544E002C, // 0054 LDINT R19 45
+ 0x0C500D04, // 0055 DIV R20 R6 K4
+ 0x00501A14, // 0056 ADD R20 R13 R20
+ 0x902A3414, // 0057 SETMBR R10 K26 R20
+ 0x00501C05, // 0058 ADD R20 R14 R5
+ 0x04502913, // 0059 SUB R20 R20 K19
+ 0x04502809, // 005A SUB R20 R20 R9
+ 0x902A3614, // 005B SETMBR R10 K27 R20
+ 0x8850011D, // 005C GETMBR R20 R0 K29
+ 0x54560018, // 005D LDINT R21 25
+ 0x28502815, // 005E GE R20 R20 R21
+ 0x78520001, // 005F JMPF R20 #0062
+ 0x5C501E00, // 0060 MOVE R20 R15
+ 0x70020000, // 0061 JMP #0063
+ 0x5C502000, // 0062 MOVE R20 R16
+ 0x902A3814, // 0063 SETMBR R10 K28 R20
+ 0x00501007, // 0064 ADD R20 R8 R7
+ 0x08523E14, // 0065 MUL R20 K31 R20
+ 0x00502809, // 0066 ADD R20 R20 R9
+ 0x902A3C14, // 0067 SETMBR R10 K30 R20
+ 0x902A411F, // 0068 SETMBR R10 K32 K31
+ 0x54520131, // 0069 LDINT R20 306
+ 0x902A4214, // 006A SETMBR R10 K33 R20
+ 0xB8520C00, // 006B GETNGBL R20 K6
+ 0x8C502922, // 006C GETMET R20 R20 K34
+ 0x5C581800, // 006D MOVE R22 R12
+ 0x5C5C1400, // 006E MOVE R23 R10
+ 0x7C500600, // 006F CALL R20 3
+ 0x00501007, // 0070 ADD R20 R8 R7
+ 0x08522614, // 0071 MUL R20 K19 R20
+ 0x00502809, // 0072 ADD R20 R20 R9
+ 0x04502913, // 0073 SUB R20 R20 K19
+ 0x902A3C14, // 0074 SETMBR R10 K30 R20
+ 0x5452010D, // 0075 LDINT R20 270
+ 0x04502813, // 0076 SUB R20 R20 R19
+ 0x902A4014, // 0077 SETMBR R10 K32 R20
+ 0x5452010D, // 0078 LDINT R20 270
+ 0x00502813, // 0079 ADD R20 R20 R19
+ 0x902A4214, // 007A SETMBR R10 K33 R20
+ 0x8850011D, // 007B GETMBR R20 R0 K29
+ 0x54560031, // 007C LDINT R21 50
+ 0x28502815, // 007D GE R20 R20 R21
+ 0x78520001, // 007E JMPF R20 #0081
+ 0x5C501E00, // 007F MOVE R20 R15
+ 0x70020000, // 0080 JMP #0082
+ 0x5C502000, // 0081 MOVE R20 R16
+ 0x902A3814, // 0082 SETMBR R10 K28 R20
+ 0xB8520C00, // 0083 GETNGBL R20 K6
+ 0x8C502922, // 0084 GETMET R20 R20 K34
+ 0x5C581800, // 0085 MOVE R22 R12
+ 0x5C5C1400, // 0086 MOVE R23 R10
+ 0x7C500600, // 0087 CALL R20 3
+ 0x00501007, // 0088 ADD R20 R8 R7
+ 0x08520814, // 0089 MUL R20 K4 R20
+ 0x00502809, // 008A ADD R20 R20 R9
+ 0x04502904, // 008B SUB R20 R20 K4
+ 0x902A3C14, // 008C SETMBR R10 K30 R20
+ 0x5452010D, // 008D LDINT R20 270
+ 0x04502813, // 008E SUB R20 R20 R19
+ 0x902A4014, // 008F SETMBR R10 K32 R20
+ 0x5452010D, // 0090 LDINT R20 270
+ 0x00502813, // 0091 ADD R20 R20 R19
+ 0x902A4214, // 0092 SETMBR R10 K33 R20
+ 0x8850011D, // 0093 GETMBR R20 R0 K29
+ 0x5456004A, // 0094 LDINT R21 75
+ 0x28502815, // 0095 GE R20 R20 R21
+ 0x78520001, // 0096 JMPF R20 #0099
+ 0x5C501E00, // 0097 MOVE R20 R15
+ 0x70020000, // 0098 JMP #009A
+ 0x5C502000, // 0099 MOVE R20 R16
+ 0x902A3814, // 009A SETMBR R10 K28 R20
+ 0xB8520C00, // 009B GETNGBL R20 K6
+ 0x8C502922, // 009C GETMET R20 R20 K34
+ 0x5C581800, // 009D MOVE R22 R12
+ 0x5C5C1400, // 009E MOVE R23 R10
+ 0x7C500600, // 009F CALL R20 3
+ 0x80000000, // 00A0 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_percentage
+********************************************************************/
+be_local_closure(lv_signal_arcs_get_percentage, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(percentage),
+ }),
+ be_str_weak(get_percentage),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(lv_signal_arcs_init, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[12]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(set_style_bg_opa),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(set_style_border_width),
+ /* K4 */ be_nested_str_weak(percentage),
+ /* K5 */ be_nested_str_weak(area),
+ /* K6 */ be_nested_str_weak(lv),
+ /* K7 */ be_nested_str_weak(arc_dsc),
+ /* K8 */ be_nested_str_weak(draw_arc_dsc),
+ /* K9 */ be_nested_str_weak(add_event_cb),
+ /* K10 */ be_nested_str_weak(widget_event),
+ /* K11 */ be_nested_str_weak(EVENT_DRAW_MAIN),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[31]) { /* code */
+ 0x60080003, // 0000 GETGBL R2 G3
+ 0x5C0C0000, // 0001 MOVE R3 R0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x5C100200, // 0004 MOVE R4 R1
+ 0x7C080400, // 0005 CALL R2 2
+ 0x8C080101, // 0006 GETMET R2 R0 K1
+ 0x58100002, // 0007 LDCONST R4 K2
+ 0x58140002, // 0008 LDCONST R5 K2
+ 0x7C080600, // 0009 CALL R2 3
+ 0x8C080103, // 000A GETMET R2 R0 K3
+ 0x58100002, // 000B LDCONST R4 K2
+ 0x58140002, // 000C LDCONST R5 K2
+ 0x7C080600, // 000D CALL R2 3
+ 0x540A0063, // 000E LDINT R2 100
+ 0x90020802, // 000F SETMBR R0 K4 R2
+ 0xB80A0C00, // 0010 GETNGBL R2 K6
+ 0x8C080505, // 0011 GETMET R2 R2 K5
+ 0x7C080200, // 0012 CALL R2 1
+ 0x90020A02, // 0013 SETMBR R0 K5 R2
+ 0xB80A0C00, // 0014 GETNGBL R2 K6
+ 0x8C080508, // 0015 GETMET R2 R2 K8
+ 0x7C080200, // 0016 CALL R2 1
+ 0x90020E02, // 0017 SETMBR R0 K7 R2
+ 0x8C080109, // 0018 GETMET R2 R0 K9
+ 0x8810010A, // 0019 GETMBR R4 R0 K10
+ 0xB8160C00, // 001A GETNGBL R5 K6
+ 0x88140B0B, // 001B GETMBR R5 R5 K11
+ 0x58180002, // 001C LDCONST R6 K2
+ 0x7C080800, // 001D CALL R2 4
+ 0x80000000, // 001E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: set_percentage
********************************************************************/
@@ -439,363 +777,22 @@ be_local_closure(lv_signal_arcs_set_percentage, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(lv_signal_arcs_init, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(_lvgl),
- /* K1 */ be_nested_str_weak(create_custom_widget),
- /* K2 */ be_nested_str_weak(percentage),
- /* K3 */ be_nested_str_weak(p1),
- /* K4 */ be_nested_str_weak(lv),
- /* K5 */ be_nested_str_weak(point),
- /* K6 */ be_nested_str_weak(p2),
- /* K7 */ be_nested_str_weak(area),
- /* K8 */ be_nested_str_weak(arc_dsc),
- /* K9 */ be_nested_str_weak(draw_arc_dsc),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100000, // 0002 MOVE R4 R0
- 0x5C140200, // 0003 MOVE R5 R1
- 0x7C080600, // 0004 CALL R2 3
- 0x540A0063, // 0005 LDINT R2 100
- 0x90020402, // 0006 SETMBR R0 K2 R2
- 0xB80A0800, // 0007 GETNGBL R2 K4
- 0x8C080505, // 0008 GETMET R2 R2 K5
- 0x7C080200, // 0009 CALL R2 1
- 0x90020602, // 000A SETMBR R0 K3 R2
- 0xB80A0800, // 000B GETNGBL R2 K4
- 0x8C080505, // 000C GETMET R2 R2 K5
- 0x7C080200, // 000D CALL R2 1
- 0x90020C02, // 000E SETMBR R0 K6 R2
- 0xB80A0800, // 000F GETNGBL R2 K4
- 0x8C080507, // 0010 GETMET R2 R2 K7
- 0x7C080200, // 0011 CALL R2 1
- 0x90020E02, // 0012 SETMBR R0 K7 R2
- 0xB80A0800, // 0013 GETNGBL R2 K4
- 0x8C080509, // 0014 GETMET R2 R2 K9
- 0x7C080200, // 0015 CALL R2 1
- 0x90021002, // 0016 SETMBR R0 K8 R2
- 0x80000000, // 0017 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: widget_event
-********************************************************************/
-be_local_closure(lv_signal_arcs_widget_event, /* name */
- be_nested_proto(
- 27, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_const_int(1),
- }),
- be_str_weak(atleast1),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x28040100, // 0000 GE R1 R0 K0
- 0x78060001, // 0001 JMPF R1 #0004
- 0x80040000, // 0002 RET 1 R0
- 0x70020000, // 0003 JMP #0005
- 0x80060000, // 0004 RET 1 K0
- 0x80000000, // 0005 RET 0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[35]) { /* constants */
- /* K0 */ be_nested_str_weak(lv),
- /* K1 */ be_nested_str_weak(obj_event_base),
- /* K2 */ be_nested_str_weak(RES_OK),
- /* K3 */ be_nested_str_weak(code),
- /* K4 */ be_nested_str_weak(math),
- /* K5 */ be_nested_str_weak(get_height),
- /* K6 */ be_nested_str_weak(get_width),
- /* K7 */ be_const_int(2),
- /* K8 */ be_const_int(3),
- /* K9 */ be_nested_str_weak(EVENT_DRAW_MAIN),
- /* K10 */ be_nested_str_weak(draw_ctx),
- /* K11 */ be_nested_str_weak(param),
- /* K12 */ be_nested_str_weak(get_coords),
- /* K13 */ be_nested_str_weak(area),
- /* K14 */ be_nested_str_weak(x1),
- /* K15 */ be_nested_str_weak(y1),
- /* K16 */ be_nested_str_weak(draw_arc_dsc_init),
- /* K17 */ be_nested_str_weak(arc_dsc),
- /* K18 */ be_nested_str_weak(init_draw_arc_dsc),
- /* K19 */ be_nested_str_weak(PART_MAIN),
- /* K20 */ be_nested_str_weak(rounded),
- /* K21 */ be_const_int(1),
- /* K22 */ be_nested_str_weak(width),
- /* K23 */ be_nested_str_weak(get_style_line_color),
- /* K24 */ be_nested_str_weak(STATE_DEFAULT),
- /* K25 */ be_nested_str_weak(get_style_bg_color),
- /* K26 */ be_nested_str_weak(deg),
- /* K27 */ be_nested_str_weak(acos),
- /* K28 */ be_nested_str_weak(p1),
- /* K29 */ be_nested_str_weak(x),
- /* K30 */ be_nested_str_weak(y),
- /* K31 */ be_nested_str_weak(color),
- /* K32 */ be_nested_str_weak(percentage),
- /* K33 */ be_nested_str_weak(draw_arc),
- /* K34 */ be_const_int(0),
- }),
- be_str_weak(widget_event),
- &be_const_str_solidified,
- ( &(const binstruction[171]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x5C180400, // 0003 MOVE R6 R2
- 0x7C0C0600, // 0004 CALL R3 3
- 0xB8120000, // 0005 GETNGBL R4 K0
- 0x88100902, // 0006 GETMBR R4 R4 K2
- 0x200C0604, // 0007 NE R3 R3 R4
- 0x780E0000, // 0008 JMPF R3 #000A
- 0x80000600, // 0009 RET 0
- 0x880C0503, // 000A GETMBR R3 R2 K3
- 0xA4120800, // 000B IMPORT R4 K4
- 0x84140000, // 000C CLOSURE R5 P0
- 0x8C180105, // 000D GETMET R6 R0 K5
- 0x7C180200, // 000E CALL R6 1
- 0x8C1C0106, // 000F GETMET R7 R0 K6
- 0x7C1C0200, // 0010 CALL R7 1
- 0x5C200A00, // 0011 MOVE R8 R5
- 0x54260007, // 0012 LDINT R9 8
- 0x0C240C09, // 0013 DIV R9 R6 R9
- 0x7C200200, // 0014 CALL R8 1
- 0x5C240A00, // 0015 MOVE R9 R5
- 0x08281107, // 0016 MUL R10 R8 K7
- 0x04280C0A, // 0017 SUB R10 R6 R10
- 0x0C281508, // 0018 DIV R10 R10 K8
- 0x7C240200, // 0019 CALL R9 1
- 0x0C281307, // 001A DIV R10 R9 K7
- 0xB82E0000, // 001B GETNGBL R11 K0
- 0x882C1709, // 001C GETMBR R11 R11 K9
- 0x1C2C060B, // 001D EQ R11 R3 R11
- 0x782E008A, // 001E JMPF R11 #00AA
- 0xB82E0000, // 001F GETNGBL R11 K0
- 0x8C2C170A, // 0020 GETMET R11 R11 K10
- 0x8834050B, // 0021 GETMBR R13 R2 K11
- 0x7C2C0400, // 0022 CALL R11 2
- 0x8C30010C, // 0023 GETMET R12 R0 K12
- 0x8838010D, // 0024 GETMBR R14 R0 K13
- 0x7C300400, // 0025 CALL R12 2
- 0x8830010D, // 0026 GETMBR R12 R0 K13
- 0x8830190E, // 0027 GETMBR R12 R12 K14
- 0x8834010D, // 0028 GETMBR R13 R0 K13
- 0x88341B0F, // 0029 GETMBR R13 R13 K15
- 0xB83A0000, // 002A GETNGBL R14 K0
- 0x8C381D10, // 002B GETMET R14 R14 K16
- 0x88400111, // 002C GETMBR R16 R0 K17
- 0x7C380400, // 002D CALL R14 2
- 0x8C380112, // 002E GETMET R14 R0 K18
- 0xB8420000, // 002F GETNGBL R16 K0
- 0x88402113, // 0030 GETMBR R16 R16 K19
- 0x88440111, // 0031 GETMBR R17 R0 K17
- 0x7C380600, // 0032 CALL R14 3
- 0x88380111, // 0033 GETMBR R14 R0 K17
- 0x903A2915, // 0034 SETMBR R14 K20 K21
- 0x88380111, // 0035 GETMBR R14 R0 K17
- 0x083C1308, // 0036 MUL R15 R9 K8
- 0x003C1F15, // 0037 ADD R15 R15 K21
- 0x54420003, // 0038 LDINT R16 4
- 0x0C3C1E10, // 0039 DIV R15 R15 R16
- 0x903A2C0F, // 003A SETMBR R14 K22 R15
- 0x8C380117, // 003B GETMET R14 R0 K23
- 0xB8420000, // 003C GETNGBL R16 K0
- 0x88402113, // 003D GETMBR R16 R16 K19
- 0xB8460000, // 003E GETNGBL R17 K0
- 0x88442318, // 003F GETMBR R17 R17 K24
- 0x30402011, // 0040 OR R16 R16 R17
- 0x7C380400, // 0041 CALL R14 2
- 0x8C3C0119, // 0042 GETMET R15 R0 K25
- 0xB8460000, // 0043 GETNGBL R17 K0
- 0x88442313, // 0044 GETMBR R17 R17 K19
- 0xB84A0000, // 0045 GETNGBL R18 K0
- 0x88482518, // 0046 GETMBR R18 R18 K24
- 0x30442212, // 0047 OR R17 R17 R18
- 0x7C3C0400, // 0048 CALL R15 2
- 0x04400C09, // 0049 SUB R16 R6 R9
- 0x0C440F07, // 004A DIV R17 R7 K7
- 0x0444220A, // 004B SUB R17 R17 R10
- 0x60480009, // 004C GETGBL R18 G9
- 0x544E0059, // 004D LDINT R19 90
- 0x8C50091A, // 004E GETMET R20 R4 K26
- 0x8C58091B, // 004F GETMET R22 R4 K27
- 0x6060000A, // 0050 GETGBL R24 G10
- 0x5C642200, // 0051 MOVE R25 R17
- 0x7C600200, // 0052 CALL R24 1
- 0x6064000A, // 0053 GETGBL R25 G10
- 0x5C682000, // 0054 MOVE R26 R16
- 0x7C640200, // 0055 CALL R25 1
- 0x0C603019, // 0056 DIV R24 R24 R25
- 0x7C580400, // 0057 CALL R22 2
- 0x7C500400, // 0058 CALL R20 2
- 0x044C2614, // 0059 SUB R19 R19 R20
- 0x7C480200, // 005A CALL R18 1
- 0x544E002C, // 005B LDINT R19 45
- 0x244C2413, // 005C GT R19 R18 R19
- 0x784E0000, // 005D JMPF R19 #005F
- 0x544A002C, // 005E LDINT R18 45
- 0x884C011C, // 005F GETMBR R19 R0 K28
- 0x0C500F07, // 0060 DIV R20 R7 K7
- 0x00501814, // 0061 ADD R20 R12 R20
- 0x904E3A14, // 0062 SETMBR R19 K29 R20
- 0x884C011C, // 0063 GETMBR R19 R0 K28
- 0x00501A06, // 0064 ADD R20 R13 R6
- 0x04502915, // 0065 SUB R20 R20 K21
- 0x0450280A, // 0066 SUB R20 R20 R10
- 0x904E3C14, // 0067 SETMBR R19 K30 R20
- 0x884C0111, // 0068 GETMBR R19 R0 K17
- 0x88500120, // 0069 GETMBR R20 R0 K32
- 0x54560018, // 006A LDINT R21 25
- 0x28502815, // 006B GE R20 R20 R21
- 0x78520001, // 006C JMPF R20 #006F
- 0x5C501C00, // 006D MOVE R20 R14
- 0x70020000, // 006E JMP #0070
- 0x5C501E00, // 006F MOVE R20 R15
- 0x904E3E14, // 0070 SETMBR R19 K31 R20
- 0xB84E0000, // 0071 GETNGBL R19 K0
- 0x8C4C2721, // 0072 GETMET R19 R19 K33
- 0x5C541600, // 0073 MOVE R21 R11
- 0x88580111, // 0074 GETMBR R22 R0 K17
- 0x885C011C, // 0075 GETMBR R23 R0 K28
- 0x00601208, // 0076 ADD R24 R9 R8
- 0x08624418, // 0077 MUL R24 K34 R24
- 0x0060300A, // 0078 ADD R24 R24 R10
- 0x58640022, // 0079 LDCONST R25 K34
- 0x546A0167, // 007A LDINT R26 360
- 0x7C4C0E00, // 007B CALL R19 7
- 0x884C0111, // 007C GETMBR R19 R0 K17
- 0x88500120, // 007D GETMBR R20 R0 K32
- 0x54560031, // 007E LDINT R21 50
- 0x28502815, // 007F GE R20 R20 R21
- 0x78520001, // 0080 JMPF R20 #0083
- 0x5C501C00, // 0081 MOVE R20 R14
- 0x70020000, // 0082 JMP #0084
- 0x5C501E00, // 0083 MOVE R20 R15
- 0x904E3E14, // 0084 SETMBR R19 K31 R20
- 0xB84E0000, // 0085 GETNGBL R19 K0
- 0x8C4C2721, // 0086 GETMET R19 R19 K33
- 0x5C541600, // 0087 MOVE R21 R11
- 0x88580111, // 0088 GETMBR R22 R0 K17
- 0x885C011C, // 0089 GETMBR R23 R0 K28
- 0x00601208, // 008A ADD R24 R9 R8
- 0x08622A18, // 008B MUL R24 K21 R24
- 0x0060300A, // 008C ADD R24 R24 R10
- 0x04603115, // 008D SUB R24 R24 K21
- 0x5466010D, // 008E LDINT R25 270
- 0x04643212, // 008F SUB R25 R25 R18
- 0x546A010D, // 0090 LDINT R26 270
- 0x00683412, // 0091 ADD R26 R26 R18
- 0x7C4C0E00, // 0092 CALL R19 7
- 0x884C0111, // 0093 GETMBR R19 R0 K17
- 0x88500120, // 0094 GETMBR R20 R0 K32
- 0x5456004A, // 0095 LDINT R21 75
- 0x28502815, // 0096 GE R20 R20 R21
- 0x78520001, // 0097 JMPF R20 #009A
- 0x5C501C00, // 0098 MOVE R20 R14
- 0x70020000, // 0099 JMP #009B
- 0x5C501E00, // 009A MOVE R20 R15
- 0x904E3E14, // 009B SETMBR R19 K31 R20
- 0xB84E0000, // 009C GETNGBL R19 K0
- 0x8C4C2721, // 009D GETMET R19 R19 K33
- 0x5C541600, // 009E MOVE R21 R11
- 0x88580111, // 009F GETMBR R22 R0 K17
- 0x885C011C, // 00A0 GETMBR R23 R0 K28
- 0x00601208, // 00A1 ADD R24 R9 R8
- 0x08620E18, // 00A2 MUL R24 K7 R24
- 0x0060300A, // 00A3 ADD R24 R24 R10
- 0x04603107, // 00A4 SUB R24 R24 K7
- 0x5466010D, // 00A5 LDINT R25 270
- 0x04643212, // 00A6 SUB R25 R25 R18
- 0x546A010D, // 00A7 LDINT R26 270
- 0x00683412, // 00A8 ADD R26 R26 R18
- 0x7C4C0E00, // 00A9 CALL R19 7
- 0x80000000, // 00AA RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_percentage
-********************************************************************/
-be_local_closure(lv_signal_arcs_get_percentage, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(percentage),
- }),
- be_str_weak(get_percentage),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: lv_signal_arcs
********************************************************************/
extern const bclass be_class_lv_obj;
be_local_class(lv_signal_arcs,
- 5,
+ 3,
&be_class_lv_obj,
- be_nested_map(9,
+ be_nested_map(7,
( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(widget_event, 2), be_const_closure(lv_signal_arcs_widget_event_closure) },
+ { be_const_key_weak(get_percentage, 3), be_const_closure(lv_signal_arcs_get_percentage_closure) },
+ { be_const_key_weak(set_percentage, 6), be_const_closure(lv_signal_arcs_set_percentage_closure) },
+ { be_const_key_weak(arc_dsc, -1), be_const_var(2) },
{ be_const_key_weak(percentage, -1), be_const_var(0) },
- { be_const_key_weak(area, 4), be_const_var(3) },
- { be_const_key_weak(p2, -1), be_const_var(2) },
- { be_const_key_weak(get_percentage, -1), be_const_closure(lv_signal_arcs_get_percentage_closure) },
- { be_const_key_weak(p1, -1), be_const_var(1) },
- { be_const_key_weak(arc_dsc, -1), be_const_var(4) },
- { be_const_key_weak(init, 5), be_const_closure(lv_signal_arcs_init_closure) },
- { be_const_key_weak(widget_event, -1), be_const_closure(lv_signal_arcs_widget_event_closure) },
- { be_const_key_weak(set_percentage, 3), be_const_closure(lv_signal_arcs_set_percentage_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(lv_signal_arcs_init_closure) },
+ { be_const_key_weak(area, -1), be_const_var(1) },
})),
be_str_weak(lv_signal_arcs)
);
@@ -1140,57 +1137,26 @@ be_local_closure(lv_signal_bars_set_percentage, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified function: get_percentage
********************************************************************/
-be_local_closure(lv_signal_bars_init, /* name */
+be_local_closure(lv_signal_bars_get_percentage, /* name */
be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
+ 2, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(_lvgl),
- /* K1 */ be_nested_str_weak(create_custom_widget),
- /* K2 */ be_nested_str_weak(percentage),
- /* K3 */ be_nested_str_weak(p1),
- /* K4 */ be_nested_str_weak(lv),
- /* K5 */ be_nested_str_weak(point),
- /* K6 */ be_nested_str_weak(p2),
- /* K7 */ be_nested_str_weak(area),
- /* K8 */ be_nested_str_weak(line_dsc),
- /* K9 */ be_nested_str_weak(draw_line_dsc),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(percentage),
}),
- be_str_weak(init),
+ be_str_weak(get_percentage),
&be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100000, // 0002 MOVE R4 R0
- 0x5C140200, // 0003 MOVE R5 R1
- 0x7C080600, // 0004 CALL R2 3
- 0x540A0063, // 0005 LDINT R2 100
- 0x90020402, // 0006 SETMBR R0 K2 R2
- 0xB80A0800, // 0007 GETNGBL R2 K4
- 0x8C080505, // 0008 GETMET R2 R2 K5
- 0x7C080200, // 0009 CALL R2 1
- 0x90020602, // 000A SETMBR R0 K3 R2
- 0xB80A0800, // 000B GETNGBL R2 K4
- 0x8C080505, // 000C GETMET R2 R2 K5
- 0x7C080200, // 000D CALL R2 1
- 0x90020C02, // 000E SETMBR R0 K6 R2
- 0xB80A0800, // 000F GETNGBL R2 K4
- 0x8C080507, // 0010 GETMET R2 R2 K7
- 0x7C080200, // 0011 CALL R2 1
- 0x90020E02, // 0012 SETMBR R0 K7 R2
- 0xB80A0800, // 0013 GETNGBL R2 K4
- 0x8C080509, // 0014 GETMET R2 R2 K9
- 0x7C080200, // 0015 CALL R2 1
- 0x90021002, // 0016 SETMBR R0 K8 R2
- 0x80000000, // 0017 RET 0
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
})
)
);
@@ -1202,8 +1168,8 @@ be_local_closure(lv_signal_bars_init, /* name */
********************************************************************/
be_local_closure(lv_signal_bars_widget_event, /* name */
be_nested_proto(
- 23, /* nstack */
- 3, /* argc */
+ 22, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -1234,187 +1200,149 @@ be_local_closure(lv_signal_bars_widget_event, /* name */
),
}),
1, /* has constants */
- ( &(const bvalue[38]) { /* constants */
- /* K0 */ be_nested_str_weak(lv),
- /* K1 */ be_nested_str_weak(obj_event_base),
- /* K2 */ be_nested_str_weak(RES_OK),
- /* K3 */ be_nested_str_weak(code),
- /* K4 */ be_nested_str_weak(get_height),
- /* K5 */ be_nested_str_weak(get_width),
- /* K6 */ be_const_int(3),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str_weak(EVENT_DRAW_MAIN),
- /* K9 */ be_nested_str_weak(draw_ctx),
- /* K10 */ be_nested_str_weak(param),
- /* K11 */ be_nested_str_weak(get_coords),
- /* K12 */ be_nested_str_weak(area),
- /* K13 */ be_nested_str_weak(x1),
- /* K14 */ be_nested_str_weak(y1),
- /* K15 */ be_nested_str_weak(draw_line_dsc_init),
- /* K16 */ be_nested_str_weak(line_dsc),
- /* K17 */ be_nested_str_weak(init_draw_line_dsc),
- /* K18 */ be_nested_str_weak(PART_MAIN),
- /* K19 */ be_nested_str_weak(round_start),
- /* K20 */ be_const_int(1),
- /* K21 */ be_nested_str_weak(round_end),
- /* K22 */ be_nested_str_weak(width),
- /* K23 */ be_nested_str_weak(get_style_line_color),
- /* K24 */ be_nested_str_weak(STATE_DEFAULT),
- /* K25 */ be_nested_str_weak(get_style_bg_color),
- /* K26 */ be_nested_str_weak(event_send),
- /* K27 */ be_nested_str_weak(EVENT_DRAW_PART_BEGIN),
- /* K28 */ be_const_int(0),
- /* K29 */ be_nested_str_weak(color),
- /* K30 */ be_nested_str_weak(percentage),
- /* K31 */ be_nested_str_weak(p1),
- /* K32 */ be_nested_str_weak(y),
- /* K33 */ be_nested_str_weak(x),
- /* K34 */ be_nested_str_weak(p2),
- /* K35 */ be_nested_str_weak(draw_line),
- /* K36 */ be_nested_str_weak(stop_iteration),
- /* K37 */ be_nested_str_weak(EVENT_DRAW_PART_END),
+ ( &(const bvalue[33]) { /* constants */
+ /* K0 */ be_nested_str_weak(get_code),
+ /* K1 */ be_nested_str_weak(get_height),
+ /* K2 */ be_nested_str_weak(get_width),
+ /* K3 */ be_const_int(3),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_nested_str_weak(lv),
+ /* K6 */ be_nested_str_weak(EVENT_DRAW_MAIN),
+ /* K7 */ be_nested_str_weak(line_dsc),
+ /* K8 */ be_nested_str_weak(get_param),
+ /* K9 */ be_nested_str_weak(get_layer),
+ /* K10 */ be_nested_str_weak(get_coords),
+ /* K11 */ be_nested_str_weak(area),
+ /* K12 */ be_nested_str_weak(x1),
+ /* K13 */ be_nested_str_weak(y1),
+ /* K14 */ be_nested_str_weak(draw_line_dsc_init),
+ /* K15 */ be_nested_str_weak(init_draw_line_dsc),
+ /* K16 */ be_nested_str_weak(PART_MAIN),
+ /* K17 */ be_nested_str_weak(round_start),
+ /* K18 */ be_const_int(1),
+ /* K19 */ be_nested_str_weak(round_end),
+ /* K20 */ be_nested_str_weak(width),
+ /* K21 */ be_nested_str_weak(get_style_line_color),
+ /* K22 */ be_nested_str_weak(STATE_DEFAULT),
+ /* K23 */ be_nested_str_weak(get_style_bg_color),
+ /* K24 */ be_const_int(0),
+ /* K25 */ be_nested_str_weak(color),
+ /* K26 */ be_nested_str_weak(percentage),
+ /* K27 */ be_nested_str_weak(p1_y),
+ /* K28 */ be_nested_str_weak(p1_x),
+ /* K29 */ be_nested_str_weak(p2_y),
+ /* K30 */ be_nested_str_weak(p2_x),
+ /* K31 */ be_nested_str_weak(draw_line),
+ /* K32 */ be_nested_str_weak(stop_iteration),
}),
be_str_weak(widget_event),
&be_const_str_solidified,
- ( &(const binstruction[138]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x5C180400, // 0003 MOVE R6 R2
- 0x7C0C0600, // 0004 CALL R3 3
- 0xB8120000, // 0005 GETNGBL R4 K0
- 0x88100902, // 0006 GETMBR R4 R4 K2
- 0x200C0604, // 0007 NE R3 R3 R4
- 0x780E0000, // 0008 JMPF R3 #000A
- 0x80000600, // 0009 RET 0
- 0x880C0503, // 000A GETMBR R3 R2 K3
- 0x84100000, // 000B CLOSURE R4 P0
- 0x8C140104, // 000C GETMET R5 R0 K4
- 0x7C140200, // 000D CALL R5 1
- 0x8C180105, // 000E GETMET R6 R0 K5
- 0x7C180200, // 000F CALL R6 1
- 0x5C1C0800, // 0010 MOVE R7 R4
- 0x5422000E, // 0011 LDINT R8 15
- 0x0C200C08, // 0012 DIV R8 R6 R8
- 0x7C1C0200, // 0013 CALL R7 1
- 0x5C200800, // 0014 MOVE R8 R4
- 0x08240F06, // 0015 MUL R9 R7 K6
- 0x04240C09, // 0016 SUB R9 R6 R9
- 0x542A0003, // 0017 LDINT R10 4
- 0x0C24120A, // 0018 DIV R9 R9 R10
- 0x7C200200, // 0019 CALL R8 1
- 0x0C241107, // 001A DIV R9 R8 K7
- 0xB82A0000, // 001B GETNGBL R10 K0
- 0x88281508, // 001C GETMBR R10 R10 K8
- 0x1C28060A, // 001D EQ R10 R3 R10
- 0x782A0069, // 001E JMPF R10 #0089
- 0xB82A0000, // 001F GETNGBL R10 K0
- 0x8C281509, // 0020 GETMET R10 R10 K9
- 0x8830050A, // 0021 GETMBR R12 R2 K10
- 0x7C280400, // 0022 CALL R10 2
- 0x8C2C010B, // 0023 GETMET R11 R0 K11
- 0x8834010C, // 0024 GETMBR R13 R0 K12
- 0x7C2C0400, // 0025 CALL R11 2
- 0x882C010C, // 0026 GETMBR R11 R0 K12
- 0x882C170D, // 0027 GETMBR R11 R11 K13
- 0x8830010C, // 0028 GETMBR R12 R0 K12
- 0x8830190E, // 0029 GETMBR R12 R12 K14
- 0xB8360000, // 002A GETNGBL R13 K0
- 0x8C341B0F, // 002B GETMET R13 R13 K15
- 0x883C0110, // 002C GETMBR R15 R0 K16
- 0x7C340400, // 002D CALL R13 2
- 0x8C340111, // 002E GETMET R13 R0 K17
- 0xB83E0000, // 002F GETNGBL R15 K0
- 0x883C1F12, // 0030 GETMBR R15 R15 K18
- 0x88400110, // 0031 GETMBR R16 R0 K16
- 0x7C340600, // 0032 CALL R13 3
- 0x88340110, // 0033 GETMBR R13 R0 K16
- 0x90362714, // 0034 SETMBR R13 K19 K20
- 0x88340110, // 0035 GETMBR R13 R0 K16
- 0x90362B14, // 0036 SETMBR R13 K21 K20
- 0x88340110, // 0037 GETMBR R13 R0 K16
- 0x90362C08, // 0038 SETMBR R13 K22 R8
- 0x8C340117, // 0039 GETMET R13 R0 K23
- 0xB83E0000, // 003A GETNGBL R15 K0
- 0x883C1F12, // 003B GETMBR R15 R15 K18
- 0xB8420000, // 003C GETNGBL R16 K0
- 0x88402118, // 003D GETMBR R16 R16 K24
- 0x303C1E10, // 003E OR R15 R15 R16
- 0x7C340400, // 003F CALL R13 2
- 0x8C380119, // 0040 GETMET R14 R0 K25
- 0xB8420000, // 0041 GETNGBL R16 K0
- 0x88402112, // 0042 GETMBR R16 R16 K18
- 0xB8460000, // 0043 GETNGBL R17 K0
- 0x88442318, // 0044 GETMBR R17 R17 K24
- 0x30402011, // 0045 OR R16 R16 R17
- 0x7C380400, // 0046 CALL R14 2
- 0xB83E0000, // 0047 GETNGBL R15 K0
- 0x8C3C1F1A, // 0048 GETMET R15 R15 K26
- 0x5C440000, // 0049 MOVE R17 R0
- 0xB84A0000, // 004A GETNGBL R18 K0
- 0x8848251B, // 004B GETMBR R18 R18 K27
- 0x884C0110, // 004C GETMBR R19 R0 K16
- 0x7C3C0800, // 004D CALL R15 4
- 0x603C0010, // 004E GETGBL R15 G16
- 0x40423906, // 004F CONNECT R16 K28 K6
- 0x7C3C0200, // 0050 CALL R15 1
- 0xA802002C, // 0051 EXBLK 0 #007F
- 0x5C401E00, // 0052 MOVE R16 R15
- 0x7C400000, // 0053 CALL R16 0
- 0x88440110, // 0054 GETMBR R17 R0 K16
- 0x8848011E, // 0055 GETMBR R18 R0 K30
- 0x004C2114, // 0056 ADD R19 R16 K20
- 0x54520013, // 0057 LDINT R20 20
- 0x084C2614, // 0058 MUL R19 R19 R20
- 0x28482413, // 0059 GE R18 R18 R19
- 0x784A0001, // 005A JMPF R18 #005D
- 0x5C481A00, // 005B MOVE R18 R13
- 0x70020000, // 005C JMP #005E
- 0x5C481C00, // 005D MOVE R18 R14
- 0x90463A12, // 005E SETMBR R17 K29 R18
- 0x8844011F, // 005F GETMBR R17 R0 K31
- 0x00481805, // 0060 ADD R18 R12 R5
- 0x04482514, // 0061 SUB R18 R18 K20
- 0x04482409, // 0062 SUB R18 R18 R9
- 0x90464012, // 0063 SETMBR R17 K32 R18
- 0x8844011F, // 0064 GETMBR R17 R0 K31
- 0x00481007, // 0065 ADD R18 R8 R7
- 0x08482012, // 0066 MUL R18 R16 R18
- 0x00481612, // 0067 ADD R18 R11 R18
- 0x00482409, // 0068 ADD R18 R18 R9
- 0x90464212, // 0069 SETMBR R17 K33 R18
- 0x88440122, // 006A GETMBR R17 R0 K34
- 0x044A0C10, // 006B SUB R18 K6 R16
- 0x044C0A08, // 006C SUB R19 R5 R8
- 0x08482413, // 006D MUL R18 R18 R19
- 0x544E0003, // 006E LDINT R19 4
- 0x0C482413, // 006F DIV R18 R18 R19
- 0x00481812, // 0070 ADD R18 R12 R18
- 0x00482409, // 0071 ADD R18 R18 R9
- 0x90464012, // 0072 SETMBR R17 K32 R18
- 0x88440122, // 0073 GETMBR R17 R0 K34
- 0x8848011F, // 0074 GETMBR R18 R0 K31
- 0x88482521, // 0075 GETMBR R18 R18 K33
- 0x90464212, // 0076 SETMBR R17 K33 R18
- 0xB8460000, // 0077 GETNGBL R17 K0
- 0x8C442323, // 0078 GETMET R17 R17 K35
- 0x5C4C1400, // 0079 MOVE R19 R10
- 0x88500110, // 007A GETMBR R20 R0 K16
- 0x8854011F, // 007B GETMBR R21 R0 K31
- 0x88580122, // 007C GETMBR R22 R0 K34
- 0x7C440A00, // 007D CALL R17 5
- 0x7001FFD2, // 007E JMP #0052
- 0x583C0024, // 007F LDCONST R15 K36
- 0xAC3C0200, // 0080 CATCH R15 1 0
- 0xB0080000, // 0081 RAISE 2 R0 R0
- 0xB83E0000, // 0082 GETNGBL R15 K0
- 0x8C3C1F1A, // 0083 GETMET R15 R15 K26
- 0x5C440000, // 0084 MOVE R17 R0
- 0xB84A0000, // 0085 GETNGBL R18 K0
- 0x88482525, // 0086 GETMBR R18 R18 K37
- 0x884C0110, // 0087 GETMBR R19 R0 K16
- 0x7C3C0800, // 0088 CALL R15 4
- 0x80000000, // 0089 RET 0
+ ( &(const binstruction[105]) { /* code */
+ 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x7C080200, // 0001 CALL R2 1
+ 0x840C0000, // 0002 CLOSURE R3 P0
+ 0x8C100101, // 0003 GETMET R4 R0 K1
+ 0x7C100200, // 0004 CALL R4 1
+ 0x8C140102, // 0005 GETMET R5 R0 K2
+ 0x7C140200, // 0006 CALL R5 1
+ 0x5C180600, // 0007 MOVE R6 R3
+ 0x541E000E, // 0008 LDINT R7 15
+ 0x0C1C0A07, // 0009 DIV R7 R5 R7
+ 0x7C180200, // 000A CALL R6 1
+ 0x5C1C0600, // 000B MOVE R7 R3
+ 0x08200D03, // 000C MUL R8 R6 K3
+ 0x04200A08, // 000D SUB R8 R5 R8
+ 0x54260003, // 000E LDINT R9 4
+ 0x0C201009, // 000F DIV R8 R8 R9
+ 0x7C1C0200, // 0010 CALL R7 1
+ 0x0C200F04, // 0011 DIV R8 R7 K4
+ 0xB8260A00, // 0012 GETNGBL R9 K5
+ 0x88241306, // 0013 GETMBR R9 R9 K6
+ 0x1C240409, // 0014 EQ R9 R2 R9
+ 0x78260051, // 0015 JMPF R9 #0068
+ 0x88240107, // 0016 GETMBR R9 R0 K7
+ 0x8C280308, // 0017 GETMET R10 R1 K8
+ 0x7C280200, // 0018 CALL R10 1
+ 0x8C2C0309, // 0019 GETMET R11 R1 K9
+ 0x7C2C0200, // 001A CALL R11 1
+ 0x8C30010A, // 001B GETMET R12 R0 K10
+ 0x8838010B, // 001C GETMBR R14 R0 K11
+ 0x7C300400, // 001D CALL R12 2
+ 0x8830010B, // 001E GETMBR R12 R0 K11
+ 0x8830190C, // 001F GETMBR R12 R12 K12
+ 0x8834010B, // 0020 GETMBR R13 R0 K11
+ 0x88341B0D, // 0021 GETMBR R13 R13 K13
+ 0xB83A0A00, // 0022 GETNGBL R14 K5
+ 0x8C381D0E, // 0023 GETMET R14 R14 K14
+ 0x5C401200, // 0024 MOVE R16 R9
+ 0x7C380400, // 0025 CALL R14 2
+ 0x8C38010F, // 0026 GETMET R14 R0 K15
+ 0xB8420A00, // 0027 GETNGBL R16 K5
+ 0x88402110, // 0028 GETMBR R16 R16 K16
+ 0x5C441200, // 0029 MOVE R17 R9
+ 0x7C380600, // 002A CALL R14 3
+ 0x90262312, // 002B SETMBR R9 K17 K18
+ 0x90262712, // 002C SETMBR R9 K19 K18
+ 0x90262807, // 002D SETMBR R9 K20 R7
+ 0x8C380115, // 002E GETMET R14 R0 K21
+ 0xB8420A00, // 002F GETNGBL R16 K5
+ 0x88402110, // 0030 GETMBR R16 R16 K16
+ 0xB8460A00, // 0031 GETNGBL R17 K5
+ 0x88442316, // 0032 GETMBR R17 R17 K22
+ 0x30402011, // 0033 OR R16 R16 R17
+ 0x7C380400, // 0034 CALL R14 2
+ 0x8C3C0117, // 0035 GETMET R15 R0 K23
+ 0xB8460A00, // 0036 GETNGBL R17 K5
+ 0x88442310, // 0037 GETMBR R17 R17 K16
+ 0xB84A0A00, // 0038 GETNGBL R18 K5
+ 0x88482516, // 0039 GETMBR R18 R18 K22
+ 0x30442212, // 003A OR R17 R17 R18
+ 0x7C3C0400, // 003B CALL R15 2
+ 0x60400010, // 003C GETGBL R16 G16
+ 0x40463103, // 003D CONNECT R17 K24 K3
+ 0x7C400200, // 003E CALL R16 1
+ 0xA8020024, // 003F EXBLK 0 #0065
+ 0x5C442000, // 0040 MOVE R17 R16
+ 0x7C440000, // 0041 CALL R17 0
+ 0x8848011A, // 0042 GETMBR R18 R0 K26
+ 0x004C2312, // 0043 ADD R19 R17 K18
+ 0x54520013, // 0044 LDINT R20 20
+ 0x084C2614, // 0045 MUL R19 R19 R20
+ 0x28482413, // 0046 GE R18 R18 R19
+ 0x784A0001, // 0047 JMPF R18 #004A
+ 0x5C481C00, // 0048 MOVE R18 R14
+ 0x70020000, // 0049 JMP #004B
+ 0x5C481E00, // 004A MOVE R18 R15
+ 0x90263212, // 004B SETMBR R9 K25 R18
+ 0x00481A04, // 004C ADD R18 R13 R4
+ 0x04482512, // 004D SUB R18 R18 K18
+ 0x04482408, // 004E SUB R18 R18 R8
+ 0x90263612, // 004F SETMBR R9 K27 R18
+ 0x00480E06, // 0050 ADD R18 R7 R6
+ 0x08482212, // 0051 MUL R18 R17 R18
+ 0x00481812, // 0052 ADD R18 R12 R18
+ 0x00482408, // 0053 ADD R18 R18 R8
+ 0x90263812, // 0054 SETMBR R9 K28 R18
+ 0x044A0611, // 0055 SUB R18 K3 R17
+ 0x044C0807, // 0056 SUB R19 R4 R7
+ 0x08482413, // 0057 MUL R18 R18 R19
+ 0x544E0003, // 0058 LDINT R19 4
+ 0x0C482413, // 0059 DIV R18 R18 R19
+ 0x00481A12, // 005A ADD R18 R13 R18
+ 0x00482408, // 005B ADD R18 R18 R8
+ 0x90263A12, // 005C SETMBR R9 K29 R18
+ 0x8848131C, // 005D GETMBR R18 R9 K28
+ 0x90263C12, // 005E SETMBR R9 K30 R18
+ 0xB84A0A00, // 005F GETNGBL R18 K5
+ 0x8C48251F, // 0060 GETMET R18 R18 K31
+ 0x5C501600, // 0061 MOVE R20 R11
+ 0x5C541200, // 0062 MOVE R21 R9
+ 0x7C480600, // 0063 CALL R18 3
+ 0x7001FFDA, // 0064 JMP #0040
+ 0x58400020, // 0065 LDCONST R16 K32
+ 0xAC400200, // 0066 CATCH R16 1 0
+ 0xB0080000, // 0067 RAISE 2 R0 R0
+ 0x80000000, // 0068 RET 0
})
)
);
@@ -1422,26 +1350,66 @@ be_local_closure(lv_signal_bars_widget_event, /* name */
/********************************************************************
-** Solidified function: get_percentage
+** Solidified function: init
********************************************************************/
-be_local_closure(lv_signal_bars_get_percentage, /* name */
+be_local_closure(lv_signal_bars_init, /* name */
be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
+ 7, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(percentage),
+ ( &(const bvalue[12]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(set_style_bg_opa),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(set_style_border_width),
+ /* K4 */ be_nested_str_weak(percentage),
+ /* K5 */ be_nested_str_weak(area),
+ /* K6 */ be_nested_str_weak(lv),
+ /* K7 */ be_nested_str_weak(line_dsc),
+ /* K8 */ be_nested_str_weak(draw_line_dsc),
+ /* K9 */ be_nested_str_weak(add_event_cb),
+ /* K10 */ be_nested_str_weak(widget_event),
+ /* K11 */ be_nested_str_weak(EVENT_DRAW_MAIN),
}),
- be_str_weak(get_percentage),
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
+ ( &(const binstruction[31]) { /* code */
+ 0x60080003, // 0000 GETGBL R2 G3
+ 0x5C0C0000, // 0001 MOVE R3 R0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x5C100200, // 0004 MOVE R4 R1
+ 0x7C080400, // 0005 CALL R2 2
+ 0x8C080101, // 0006 GETMET R2 R0 K1
+ 0x58100002, // 0007 LDCONST R4 K2
+ 0x58140002, // 0008 LDCONST R5 K2
+ 0x7C080600, // 0009 CALL R2 3
+ 0x8C080103, // 000A GETMET R2 R0 K3
+ 0x58100002, // 000B LDCONST R4 K2
+ 0x58140002, // 000C LDCONST R5 K2
+ 0x7C080600, // 000D CALL R2 3
+ 0x540A0063, // 000E LDINT R2 100
+ 0x90020802, // 000F SETMBR R0 K4 R2
+ 0xB80A0C00, // 0010 GETNGBL R2 K6
+ 0x8C080505, // 0011 GETMET R2 R2 K5
+ 0x7C080200, // 0012 CALL R2 1
+ 0x90020A02, // 0013 SETMBR R0 K5 R2
+ 0xB80A0C00, // 0014 GETNGBL R2 K6
+ 0x8C080508, // 0015 GETMET R2 R2 K8
+ 0x7C080200, // 0016 CALL R2 1
+ 0x90020E02, // 0017 SETMBR R0 K7 R2
+ 0x8C080109, // 0018 GETMET R2 R0 K9
+ 0x8810010A, // 0019 GETMBR R4 R0 K10
+ 0xB8160C00, // 001A GETNGBL R5 K6
+ 0x88140B0B, // 001B GETMBR R5 R5 K11
+ 0x58180002, // 001C LDCONST R6 K2
+ 0x7C080800, // 001D CALL R2 4
+ 0x80000000, // 001E RET 0
})
)
);
@@ -1453,19 +1421,17 @@ be_local_closure(lv_signal_bars_get_percentage, /* name */
********************************************************************/
extern const bclass be_class_lv_obj;
be_local_class(lv_signal_bars,
- 5,
+ 3,
&be_class_lv_obj,
- be_nested_map(9,
+ be_nested_map(7,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(percentage, 4), be_const_var(0) },
- { be_const_key_weak(p1, 5), be_const_var(1) },
- { be_const_key_weak(p2, -1), be_const_var(2) },
+ { be_const_key_weak(set_percentage, 3), be_const_closure(lv_signal_bars_set_percentage_closure) },
{ be_const_key_weak(get_percentage, -1), be_const_closure(lv_signal_bars_get_percentage_closure) },
- { be_const_key_weak(line_dsc, -1), be_const_var(4) },
- { be_const_key_weak(area, -1), be_const_var(3) },
+ { be_const_key_weak(percentage, -1), be_const_var(0) },
+ { be_const_key_weak(area, 6), be_const_var(1) },
+ { be_const_key_weak(line_dsc, 2), be_const_var(2) },
{ be_const_key_weak(init, -1), be_const_closure(lv_signal_bars_init_closure) },
{ be_const_key_weak(widget_event, -1), be_const_closure(lv_signal_bars_widget_event_closure) },
- { be_const_key_weak(set_percentage, 3), be_const_closure(lv_signal_bars_set_percentage_closure) },
})),
be_str_weak(lv_signal_bars)
);
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
index 6e545efad..471319508 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
@@ -110,12 +110,12 @@ be_local_closure(Tasmota_fast_loop, /* name */
0x600C000C, // 0005 GETGBL R3 G12
0x5C100200, // 0006 MOVE R4 R1
0x7C0C0200, // 0007 CALL R3 1
- 0x14100403, // 0008 LT R4 R2 R3
- 0x78120003, // 0009 JMPF R4 #000E
- 0x94100202, // 000A GETIDX R4 R1 R2
- 0x7C100000, // 000B CALL R4 0
+ 0x140C0403, // 0008 LT R3 R2 R3
+ 0x780E0003, // 0009 JMPF R3 #000E
+ 0x940C0202, // 000A GETIDX R3 R1 R2
+ 0x7C0C0000, // 000B CALL R3 0
0x00080502, // 000C ADD R2 R2 K2
- 0x7001FFF9, // 000D JMP #0008
+ 0x7001FFF6, // 000D JMP #0005
0x80000000, // 000E RET 0
})
)
diff --git a/lib/libesp32_div/esp-nimble-cpp/src/NimBLEAdvertising.cpp b/lib/libesp32_div/esp-nimble-cpp/src/NimBLEAdvertising.cpp
index 50a9e8983..283f26493 100644
--- a/lib/libesp32_div/esp-nimble-cpp/src/NimBLEAdvertising.cpp
+++ b/lib/libesp32_div/esp-nimble-cpp/src/NimBLEAdvertising.cpp
@@ -67,7 +67,7 @@ void NimBLEAdvertising::reset() {
m_advParams.disc_mode = BLE_GAP_DISC_MODE_GEN;
m_customAdvData = false;
m_customScanResponseData = false;
- m_scanResp = true;
+ m_scanResp = false;
m_advDataSet = false;
// Set this to non-zero to prevent auto start if host reset before started by app.
m_duration = BLE_HS_FOREVER;
diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp
deleted file mode 100755
index 2e433ee9e..000000000
--- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp
+++ /dev/null
@@ -1,267 +0,0 @@
-#include "Adafruit_LvGL_Glue.h"
-#include
-#include "lv_berry.h"
-
-// ARCHITECTURE-SPECIFIC TIMER STUFF ---------------------------------------
-
-extern void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p);
-
-// Tick interval for LittlevGL internal timekeeping; 1 to 10 ms recommended
-static const int lv_tick_interval_ms = 5;
-
-static void lv_tick_handler(void) { lv_tick_inc(lv_tick_interval_ms); }
-
-// TOUCHSCREEN STUFF -------------------------------------------------------
-
-
-uint32_t Touch_Status(int32_t sel);
-
-static void touchscreen_read(lv_indev_drv_t *indev_drv, lv_indev_data_t *data) {
- data->point.x = Touch_Status(1); // Last-pressed coordinates
- data->point.y = Touch_Status(2);
- data->state = Touch_Status(0) ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
- data->continue_reading = false; /*No buffering now so no more data read*/
- // keep data for TS calibration
- lv_ts_calibration.state = data->state;
- if (data->state == LV_INDEV_STATE_PRESSED) { // if not pressed, the data may be invalid
- lv_ts_calibration.x = data->point.x;
- lv_ts_calibration.y = data->point.y;
- lv_ts_calibration.raw_x = Touch_Status(-1);
- lv_ts_calibration.raw_y = Touch_Status(-2);
- }
-}
-
-// OTHER LITTLEVGL VITALS --------------------------------------------------
-
-#if LV_COLOR_DEPTH != 16
-#pragma error("LV_COLOR_DEPTH must be 16")
-#endif
-// This isn't necessarily true, don't mention it for now. See notes later.
-//#if LV_COLOR_16_SWAP != 0
-// #pragma message("Set LV_COLOR_16_SWAP to 0 for best display performance")
-//#endif
-
-// Actual RAM usage will be 2X these figures, since using 2 DMA buffers...
-#define LV_BUFFER_ROWS 60 // Most others have a bit more space
-
-
-// // This is the flush function required for LittlevGL screen updates.
-// // It receives a bounding rect and an array of pixel data (conveniently
-// // already in 565 format, so the Earth was lucky there).
-// static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) {
-// // Get pointer to glue object from indev user data
-// Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)disp->user_data;
-
-// uint16_t width = (area->x2 - area->x1 + 1);
-// uint16_t height = (area->y2 - area->y1 + 1);
-
-// // check if we are currently doing a screenshot
-// if (glue->getScreenshotFile() != nullptr) {
-// // save pixels to file
-// int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8;
-// while (btw > 0) {
-// int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw);
-// if (ret >= 0) {
-// btw -= ret;
-// } else {
-// btw = 0; // abort
-// }
-// }
-// lv_disp_flush_ready(disp);
-// return; // ok
-// // }
-
-// Renderer *display = glue->display;
-
-// if (!glue->first_frame) {
-// //display->dmaWait(); // Wait for prior DMA transfer to complete
-// //display->endWrite(); // End transaction from any prior call
-// } else {
-// glue->first_frame = false;
-// }
-
-// display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height);
-// display->pushColors((uint16_t *)color_p, width * height, true);
-// display->setAddrWindow(0,0,0,0);
-
-// lv_disp_flush_ready(disp);
-
-// }
-
-// #if (LV_USE_LOG)
-// // Optional LittlevGL debug print function, writes to Serial if debug is
-// // enabled when calling glue begin() function.
-// static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, const char *fname,
-// const char *dsc) {
-// Serial.print(file);
-// Serial.write('@');
-// Serial.print(line);
-// Serial.print(":");
-// Serial.print(fname);
-// Serial.write("->");
-// Serial.println(dsc);
-// }
-// #endif
-
-
-// GLUE LIB FUNCTIONS ------------------------------------------------------
-
-// Constructor
-/**
- * @brief Construct a new Adafruit_LvGL_Glue::Adafruit_LvGL_Glue object,
- * initializing minimal variables
- *
- */
-Adafruit_LvGL_Glue::Adafruit_LvGL_Glue(void)
- : first_frame(true), lv_pixel_buf(NULL) {
-}
-
-// Destructor
-/**
- * @brief Destroy the Adafruit_LvGL_Glue::Adafruit_LvGL_Glue object, freeing any
- * memory previously allocated within this library.
- *
- */
-Adafruit_LvGL_Glue::~Adafruit_LvGL_Glue(void) {
- delete[] lv_pixel_buf;
- // Probably other stuff that could be deallocated here
-}
-
-// begin() function is overloaded for STMPE610 touch, ADC touch, or none.
-
-// Pass in POINTERS to ALREADY INITIALIZED display & touch objects (user code
-// should have previously called corresponding begin() functions and checked
-// return states before invoking this),
-// they are NOT initialized here. Debug arg is
-// touch arg can be NULL (or left off) if using LittlevGL as a passive widget
-// display.
-
-/**
- * @brief Configure the glue layer and the underlying LvGL code to use the given
- * TFT display driver instance and touchscreen controller
- *
- * @param tft Pointer to an **already initialized** display object instance
- * @param touch Pointer to an **already initialized** `Adafruit_STMPE610`
- * touchscreen controller object instance
- * @param debug Debug flag to enable debug messages. Only used if LV_USE_LOG is
- * configured in LittleLVGL's lv_conf.h
- * @return LvGLStatus The status of the initialization:
- * * LVGL_OK : Success
- * * LVGL_ERR_TIMER : Failure to set up timers
- * * LVGL_ERR_ALLOC : Failure to allocate memory
- */
-// LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft,
-// Adafruit_STMPE610 *touch, bool debug) {
-// is_adc_touch = false;
-// return begin(tft, (void *)touch, debug);
-// }
-/**
- * @brief Configure the glue layer and the underlying LvGL code to use the given
- * TFT display driver and touchscreen controller instances
- *
- * @param tft Pointer to an **already initialized** display object instance
- * @param touch Pointer to an **already initialized** `TouchScreen` touchscreen
- * controller object instance
- * @param debug Debug flag to enable debug messages. Only used if LV_USE_LOG is
- * configured in LittleLVGL's lv_conf.h
- * @return LvGLStatus The status of the initialization:
- * * LVGL_OK : Success
- * * LVGL_ERR_TIMER : Failure to set up timers
- * * LVGL_ERR_ALLOC : Failure to allocate memory
- */
-// LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft, TouchScreen *touch,
-// bool debug) {
-// is_adc_touch = true;
-// return begin(tft, (void *)touch, debug);
-// }
-/**
- * @brief Configure the glue layer and the underlying LvGL code to use the given
- * TFT display driver and touchscreen controller instances
- *
- * @param tft Pointer to an **already initialized** display object instance
- * @param debug Debug flag to enable debug messages. Only used if LV_USE_LOG is
- * configured in LittleLVGL's lv_conf.h
- * @return LvGLStatus The status of the initialization:
- * * LVGL_OK : Success
- * * LVGL_ERR_TIMER : Failure to set up timers
- * * LVGL_ERR_ALLOC : Failure to allocate memory
- */
-LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, bool debug) {
- return begin(tft, (void *)NULL, debug);
-}
-
-LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) {
-
- lv_init();
-
- // Allocate LvGL display buffer (x2 because DMA double buffering)
- LvGLStatus status = LVGL_ERR_ALLOC;
- // if ((lv_pixel_buf = new lv_color_t[LV_HOR_RES_MAX * LV_BUFFER_ROWS * 2])) {
-
- uint32_t lvgl_buffer_size;
-
- //lvgl_buffer_size = LV_HOR_RES_MAX * LV_BUFFER_ROWS;
- uint8_t flushlines = tft->lvgl_pars()->fluslines;
- lvgl_buffer_size = tft->width() * (flushlines ? flushlines:LV_BUFFER_ROWS);
- if (tft->lvgl_pars()->use_dma) {
- lvgl_buffer_size /= 2;
- if (lvgl_buffer_size < 1000000) {
- lv_pixel_buf2 = new lv_color_t[lvgl_buffer_size];
- }
- if (!lv_pixel_buf2) {
- return status;
- }
- } else {
- lv_pixel_buf2 = nullptr;
- }
-
- if ((lv_pixel_buf = new lv_color_t[lvgl_buffer_size])) {
-
- display = tft;
- touchscreen = (void *)touch;
-
- // // Initialize LvGL display buffers
- // lv_disp_buf_init(
- // &lv_disp_buf, lv_pixel_buf, // 1st half buf
- // &lv_pixel_buf[LV_HOR_RES_MAX * LV_BUFFER_ROWS], // 2nd half buf
- // LV_HOR_RES_MAX * LV_BUFFER_ROWS);
-
- // Initialize LvGL display buffers
- lv_disp_draw_buf_init(
- &lv_disp_buf, lv_pixel_buf, // 1st half buf
- lv_pixel_buf2, // 2nd half buf
- lvgl_buffer_size);
-
- // Initialize LvGL display driver
- lv_disp_drv_init(&lv_disp_drv);
- lv_disp_drv.hor_res = tft->width();
- lv_disp_drv.ver_res = tft->height();
- lv_disp_drv.flush_cb = lv_flush_callback;
- lv_disp_drv.draw_buf = &lv_disp_buf;
- lv_disp_drv.user_data = (void*)this;
- lv_disp_drv_register(&lv_disp_drv);
-
- // Initialize LvGL input device (touchscreen already started)
- if (touch) { // Can also pass NULL if passive widget display
- lv_indev_drv_init(&lv_indev_drv); // Basic init
- lv_indev_drv.type = LV_INDEV_TYPE_POINTER; // Is pointer dev
- lv_indev_drv.read_cb = touchscreen_read; // Read callback
- lv_indev_drv.user_data = (void*)this;
- lv_input_dev_ptr = lv_indev_drv_register(&lv_indev_drv);
- }
-
- // TIMER SETUP is architecture-specific ----------------------------
-
- // ESP 32------------------------------------------------
- tick.attach_ms(lv_tick_interval_ms, lv_tick_handler);
- status = LVGL_OK;
- // -----------------------------------------
- }
-
- if (status != LVGL_OK) {
- delete[] lv_pixel_buf;
- lv_pixel_buf = NULL;
- }
-
- return status;
-}
diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h
deleted file mode 100755
index 2074e0c7a..000000000
--- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef _ADAFRUIT_LVGL_GLUE_H_
-#define _ADAFRUIT_LVGL_GLUE_H_
-
-#include // LittlevGL core lib
-#include
-#include // ESP32-specific timer lib
-#include
-
-typedef enum {
- LVGL_OK,
- LVGL_ERR_ALLOC,
- LVGL_ERR_TIMER,
-} LvGLStatus;
-
-/**
- * @brief Class to act as a "glue" layer between the LvGL graphics library and
- * most of Adafruit's TFT displays
- *
- */
-
-class Adafruit_LvGL_Glue {
-public:
- Adafruit_LvGL_Glue(void);
- ~Adafruit_LvGL_Glue(void);
- // Different begin() funcs for STMPE610, ADC or no touch
- // LvGLStatus begin(uDisplay_lvgl *tft, Adafruit_STMPE610 *touch,
- // bool debug = false);
- // LvGLStatus begin(uDisplay_lvgl *tft, TouchScreen *touch,
- // bool debug = false);
- LvGLStatus begin(Renderer *tft, bool debug = false);
- LvGLStatus begin(Renderer *tft, void *touch, bool debug);
- // These items need to be public for some internal callbacks,
- // but should be avoided by user code please!
- Renderer *display; ///< Pointer to the SPITFT display instance
- void *touchscreen; ///< Pointer to the touchscreen object to use
- bool is_adc_touch; ///< determines if the touchscreen controlelr is ADC based
- bool first_frame; ///< Tracks if a call to `lv_flush_callback` needs to wait
- ///< for DMA transfer to complete
- void setScreenshotFile(File *f) { screenshot = f; }
- File * getScreenshotFile(void) const { return screenshot; }
- void stopScreenshot(void) { screenshot = nullptr; }
-
-private:
- lv_disp_drv_t lv_disp_drv;
- lv_disp_draw_buf_t lv_disp_buf;
- lv_color_t *lv_pixel_buf;
- lv_color_t *lv_pixel_buf2;
- lv_indev_drv_t lv_indev_drv;
- lv_indev_t *lv_input_dev_ptr;
- Ticker tick;
- File * screenshot = nullptr;
-};
-
-#endif // _ADAFRUIT_LVGL_GLUE_H_
diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/README.md b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/README.md
deleted file mode 100755
index 61a79f988..000000000
--- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Adafruit LvGL Glue [](https://github.com/adafruit/Adafruit_LvGL_Glue/actions)
-
-This Arduino library provides a layer between LittlevGL (a UI library for
-embedded systems) and most of Adafruit's color TFT displays (anything that's
-a subclass of SPITFT).
-
-Examples show basic use on PyPortal, FeatherWing, CLUE and TFT Gizmo.
-Use these as a starting point, see LittlevGL documentation at
-docs.littlevgl.com for a thorough explanation of capabilities and use.
-
-# Dependencies
- * [LittlevGL](https://github.com/littlevgl/lvgl)
- * [Adafruit GFX Library](https://github.com/adafruit/Adafruit-GFX-Library)
- * [Adafruit HX8357 Library](https://github.com/adafruit/Adafruit_HX8357_Library)
- * [Adafruit ILI9341](https://github.com/adafruit/Adafruit_ILI9341)
- * [Adafruit ST7735 and ST7789 Library](https://github.com/adafruit/Adafruit-ST7735-Library)
- * [Adafruit STMPE610](https://github.com/adafruit/Adafruit_STMPE610)
- * [Adafruit TouchScreen](https://github.com/adafruit/Adafruit_TouchScreen)
- * [Adafruit Zero DMA Library](https://github.com/adafruit/Adafruit_ZeroDMA)
- * [Adafruit ZeroTimer Library](https://github.com/adafruit/Adafruit_ZeroTimer)
-
-# Compatibility
-Version 2.0.0 is a breaking change, mostly due to significant structural
-changes in the LittlevGL library for Arduino. If you were previously using
-an earlier version of this library and/or LittlevGL, both will need updating,
-and you should skim the examples and read through the hello_changes example
-specifically.
-
-Use on M0 (SAMD21) boards isn't recommended anymore, as LittlevGL has grown.
-Simple programs might still work, but it's better to move up to a device
-with more RAM -- M4 (SAMD51), nRF52 and ESP32 are currently supported.
-
-# Contributing
-Contributions are welcome! Please read our [Code of Conduct](https://github.com/adafruit/Adafruit_LvGL_Glue/blob/master/CODE_OF_CONDUCT.md>)
-before contributing to help this project stay welcoming.
-
-## Documentation and doxygen
-Documentation is produced by doxygen. Contributions should include documentation for any new code added.
-
-Some examples of how to use doxygen can be found in these guide pages:
-
-https://learn.adafruit.com/the-well-automated-arduino-library/doxygen
-
-https://learn.adafruit.com/the-well-automated-arduino-library/doxygen-tips
-
-Written by Phil Burgess aka Paint Your Dragon for Adafruit Industries.
-BSD license, check license.txt for more information
-All text above must be included in any redistribution
-
-To install, use the Arduino Library Manager and search for "Adafruit LvGL Glue Library" and install the library.
diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/code-of-conduct.md b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/code-of-conduct.md
deleted file mode 100755
index 8ee6e4498..000000000
--- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/code-of-conduct.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# Adafruit Community Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and leaders pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, gender identity and expression, level or type of
-experience, education, socio-economic status, nationality, personal appearance,
-race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-We are committed to providing a friendly, safe and welcoming environment for
-all.
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Be kind and courteous to others
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Collaborating with other community members
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and sexual attention or advances
-* The use of inappropriate images, including in a community member's avatar
-* The use of inappropriate language, including in a community member's nickname
-* Any spamming, flaming, baiting or other attention-stealing behavior
-* Excessive or unwelcome helping; answering outside the scope of the question
- asked
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate
-
-The goal of the standards and moderation guidelines outlined here is to build
-and maintain a respectful community. We ask that you don’t just aim to be
-"technically unimpeachable", but rather try to be your best self.
-
-We value many things beyond technical expertise, including collaboration and
-supporting others within our community. Providing a positive experience for
-other community members can have a much more significant impact than simply
-providing the correct answer.
-
-## Our Responsibilities
-
-Project leaders are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project leaders have the right and responsibility to remove, edit, or
-reject messages, comments, commits, code, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any community member for other behaviors that they deem
-inappropriate, threatening, offensive, or harmful.
-
-## Moderation
-
-Instances of behaviors that violate the Adafruit Community Code of Conduct
-may be reported by any member of the community. Community members are
-encouraged to report these situations, including situations they witness
-involving other community members.
-
-You may report in the following ways:
-
-In any situation, you may send an email to .
-
-On the Adafruit Discord, you may send an open message from any channel
-to all Community Helpers by tagging @community helpers. You may also send an
-open message from any channel, or a direct message to @kattni#1507,
-@tannewt#4653, @Dan Halbert#1614, @cater#2442, @sommersoft#0222, or
-@Andon#8175.
-
-Email and direct message reports will be kept confidential.
-
-In situations on Discord where the issue is particularly egregious, possibly
-illegal, requires immediate action, or violates the Discord terms of service,
-you should also report the message directly to Discord.
-
-These are the steps for upholding our community’s standards of conduct.
-
-1. Any member of the community may report any situation that violates the
-Adafruit Community Code of Conduct. All reports will be reviewed and
-investigated.
-2. If the behavior is an egregious violation, the community member who
-committed the violation may be banned immediately, without warning.
-3. Otherwise, moderators will first respond to such behavior with a warning.
-4. Moderators follow a soft "three strikes" policy - the community member may
-be given another chance, if they are receptive to the warning and change their
-behavior.
-5. If the community member is unreceptive or unreasonable when warned by a
-moderator, or the warning goes unheeded, they may be banned for a first or
-second offense. Repeated offenses will result in the community member being
-banned.
-
-## Scope
-
-This Code of Conduct and the enforcement policies listed above apply to all
-Adafruit Community venues. This includes but is not limited to any community
-spaces (both public and private), the entire Adafruit Discord server, and
-Adafruit GitHub repositories. Examples of Adafruit Community spaces include
-but are not limited to meet-ups, audio chats on the Adafruit Discord, or
-interaction at a conference.
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. As a community
-member, you are representing our community, and are expected to behave
-accordingly.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 1.4, available at
-,
-and the [Rust Code of Conduct](https://www.rust-lang.org/en-US/conduct.html).
-
-For other projects adopting the Adafruit Community Code of
-Conduct, please contact the maintainers of those projects for enforcement.
-If you wish to use this code of conduct for your own project, consider
-explicitly mentioning your moderation policy or making a copy with your
-own moderation policy so as to avoid confusion.
diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.json b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.json
deleted file mode 100644
index c6c7aff6c..000000000
--- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "Adafruit LittlevGL Glue Library",
- "description": "This library works in conjunction with LittlevGL (an embedded system GUI library) and Adafruit display-specific libraries to provide nice user interfaces on PyPortal, TFT FeatherWings, and more.",
- "version": "2.0.0",
- "homepage": "https://github.com/adafruit/Adafruit_LvGL_Glue",
- "frameworks": "*",
- "build": {
- "flags": [ "-Wno-deprecated-enum-enum-conversion" ]
- }
-}
diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.properties b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.properties
deleted file mode 100755
index c09ddcace..000000000
--- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-name=Adafruit LittlevGL Glue Library
-version=2.0.0
-author=Adafruit
-maintainer=Adafruit
-sentence=Simplifies use of LittlevGL library with Adafruit displays.
-paragraph=This library works in conjunction with LittlevGL (an embedded system GUI library) and Adafruit display-specific libraries to provide nice user interfaces on PyPortal, TFT FeatherWings, and more.
-category=Display
-url=https://github.com/adafruit/Adafruit_LvGL_Glue
-architectures=samd, nrf52, esp32
-depends=Adafruit GFX Library, Adafruit TouchScreen, Adafruit STMPE610, Adafruit Zero DMA Library, Adafruit HX8357 Library, Adafruit ILI9341, Adafruit ZeroTimer Library, Adafruit ST7735 and ST7789 Library, lvgl
diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/license.txt b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/license.txt
deleted file mode 100755
index a61cb1df4..000000000
--- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/license.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-Software License Agreement (BSD License)
-
-Copyright (c) 2020 Phil Burgess aka Paint Your Dragon for Adafruit Industries
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-1. Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-3. Neither the name of the copyright holders nor the
-names of its contributors may be used to endorse or promote products
-derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/lib/libesp32_lvgl/LVGL_assets/TASMOTA_Symbol_64.png b/lib/libesp32_lvgl/LVGL_assets/TASMOTA_Symbol_64.png
new file mode 100644
index 000000000..c17a80cb7
Binary files /dev/null and b/lib/libesp32_lvgl/LVGL_assets/TASMOTA_Symbol_64.png differ
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/DSEG-LICENSE.txt b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/DSEG-LICENSE.txt
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/DSEG-LICENSE.txt
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/DSEG-LICENSE.txt
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-Bold.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/DSEG7Classic-Bold.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-Bold.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/DSEG7Classic-Bold.ttf
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_10.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_10.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_10.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_10.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_12.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_12.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_12.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_12.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_14.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_14.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_14.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_14.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_16.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_16.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_16.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_16.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_18.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_18.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_18.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_18.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_20.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_20.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_20.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_20.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_24.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_24.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_24.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_24.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_28.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_28.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_28.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_28.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_36.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_36.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_36.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_36.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_48.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_48.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_48.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_48.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_8.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_8.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_8.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/font_files/seg7_8.lvfont
diff --git a/tasmota/lvgl_berry/fonts/DSEG7/gen_seg7_fonts.bash b/lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/gen_seg7_fonts.bash
similarity index 100%
rename from tasmota/lvgl_berry/fonts/DSEG7/gen_seg7_fonts.bash
rename to lib/libesp32_lvgl/LVGL_assets/fonts/DSEG7/gen_seg7_fonts.bash
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium1541.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium1541.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium1541.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium1541.ttf
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium64.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium64.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium64.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium (GEOS)/Berkelium64.ttf
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium (GEOS)/FreeLicense.txt b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium (GEOS)/FreeLicense.txt
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium (GEOS)/FreeLicense.txt
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium (GEOS)/FreeLicense.txt
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium64.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium64.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Berkelium64.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Berkelium64.lvfont
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Daniel Linssen/m3x6.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Daniel Linssen/m3x6.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Daniel Linssen/m3x6.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Daniel Linssen/m3x6.ttf
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Daniel Linssen/m5x7.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Daniel Linssen/m5x7.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Daniel Linssen/m5x7.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Daniel Linssen/m5x7.ttf
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/PrintChar (Apple II Font)/FreeLicense.txt b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/PrintChar (Apple II Font)/FreeLicense.txt
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/PrintChar (Apple II Font)/FreeLicense.txt
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/PrintChar (Apple II Font)/FreeLicense.txt
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/PrintChar (Apple II Font)/PrintChar21.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/PrintChar (Apple II Font)/PrintChar21.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/PrintChar (Apple II Font)/PrintChar21.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/PrintChar (Apple II Font)/PrintChar21.ttf
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/PrintChar21.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/PrintChar21.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/PrintChar21.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/PrintChar21.lvfont
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Shaston (GSOS)/FreeLicense.txt b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Shaston (GSOS)/FreeLicense.txt
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Shaston (GSOS)/FreeLicense.txt
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Shaston (GSOS)/FreeLicense.txt
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Shaston (GSOS)/Shaston320.ttf b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Shaston (GSOS)/Shaston320.ttf
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Shaston (GSOS)/Shaston320.ttf
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Shaston (GSOS)/Shaston320.ttf
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/Shaston320.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Shaston320.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/Shaston320.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/Shaston320.lvfont
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/m3x6.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/m3x6.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/m3x6.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/m3x6.lvfont
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/m5x7.lvfont b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/m5x7.lvfont
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/m5x7.lvfont
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/m5x7.lvfont
diff --git a/tasmota/lvgl_berry/fonts/pixel_perfect/pages.jsonl b/lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/pages.jsonl
similarity index 100%
rename from tasmota/lvgl_berry/fonts/pixel_perfect/pages.jsonl
rename to lib/libesp32_lvgl/LVGL_assets/fonts/pixel_perfect/pages.jsonl
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_12_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_12_latin1.c
index b9b8dae13..d3e11753b 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_12_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_12_latin1.c
@@ -2084,9 +2084,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -2100,9 +2099,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -2111,7 +2107,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_12_latin1 = {
#else
lv_font_t robotocondensed_regular_12_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_14_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_14_latin1.c
index 194954f87..1c173bff7 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_14_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_14_latin1.c
@@ -2335,9 +2335,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -2351,9 +2350,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -2362,7 +2358,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_14_latin1 = {
#else
lv_font_t robotocondensed_regular_14_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_16_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_16_latin1.c
index 56666d4af..b905c14c3 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_16_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_16_latin1.c
@@ -2536,9 +2536,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -2552,9 +2551,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -2563,7 +2559,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_16_latin1 = {
#else
lv_font_t robotocondensed_regular_16_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_20_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_20_latin1.c
index 6198d0448..347d18f96 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_20_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_20_latin1.c
@@ -3076,9 +3076,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -3092,9 +3091,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -3103,7 +3099,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_20_latin1 = {
#else
lv_font_t robotocondensed_regular_20_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_22_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_22_latin1.c
index 1ec74432d..baaefe4cb 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_22_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_22_latin1.c
@@ -3371,9 +3371,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -3387,9 +3386,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -3398,7 +3394,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_22_latin1 = {
#else
lv_font_t robotocondensed_regular_22_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_24_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_24_latin1.c
index 70b8e27d7..b0f597095 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_24_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_24_latin1.c
@@ -3527,9 +3527,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -3543,9 +3542,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -3554,7 +3550,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_24_latin1 = {
#else
lv_font_t robotocondensed_regular_24_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_26_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_26_latin1.c
index 83dd586a5..e451f4421 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_26_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_26_latin1.c
@@ -3952,9 +3952,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -3968,9 +3967,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -3979,7 +3975,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_26_latin1 = {
#else
lv_font_t robotocondensed_regular_26_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_28_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_28_latin1.c
index 63bd194cc..fb4b659e5 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_28_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_28_latin1.c
@@ -4309,9 +4309,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -4325,9 +4324,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -4336,7 +4332,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_28_latin1 = {
#else
lv_font_t robotocondensed_regular_28_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_32_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_32_latin1.c
index 0e02875c7..6b40bec58 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_32_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_32_latin1.c
@@ -4930,9 +4930,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -4946,9 +4945,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -4957,7 +4953,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_32_latin1 = {
#else
lv_font_t robotocondensed_regular_32_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_36_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_36_latin1.c
index 80bdaf56c..b643f81af 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_36_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_36_latin1.c
@@ -5714,9 +5714,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -5730,9 +5729,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -5741,7 +5737,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_36_latin1 = {
#else
lv_font_t robotocondensed_regular_36_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_38_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_38_latin1.c
index 5f0aadd5c..f88b71d12 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_38_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_38_latin1.c
@@ -6059,9 +6059,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -6075,9 +6074,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -6086,7 +6082,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_38_latin1 = {
#else
lv_font_t robotocondensed_regular_38_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_40_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_40_latin1.c
index 6babc76ed..6fc146666 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_40_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_40_latin1.c
@@ -6422,9 +6422,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -6438,9 +6437,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -6449,7 +6445,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_40_latin1 = {
#else
lv_font_t robotocondensed_regular_40_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_44_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_44_latin1.c
index 581484546..d7df39045 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_44_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_44_latin1.c
@@ -7114,9 +7114,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -7130,9 +7129,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -7141,7 +7137,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_44_latin1 = {
#else
lv_font_t robotocondensed_regular_44_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_48_latin1.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_48_latin1.c
index 1f33d5fb6..d07465afa 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_48_latin1.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/roboto-latin1/robotocondensed_regular_48_latin1.c
@@ -7613,9 +7613,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -7629,9 +7628,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 3,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -7640,7 +7636,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t robotocondensed_regular_48_latin1 = {
#else
lv_font_t robotocondensed_regular_48_latin1 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c
index 6539b03df..37f5e160d 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c
@@ -119,9 +119,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -135,9 +134,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -146,7 +142,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_10 = {
#else
lv_font_t seg7_10 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c
index 2f1415af4..531cc9320 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c
@@ -128,9 +128,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -144,9 +143,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -155,7 +151,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_12 = {
#else
lv_font_t seg7_12 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c
index 88ada73fd..4be4afd7d 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c
@@ -134,9 +134,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -150,9 +149,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -161,7 +157,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_14 = {
#else
lv_font_t seg7_14 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c
index 589ccb458..e679280b8 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c
@@ -137,9 +137,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -153,9 +152,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -164,7 +160,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_16 = {
#else
lv_font_t seg7_16 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c
index aee89f557..0298ae451 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c
@@ -143,9 +143,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -159,9 +158,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -170,7 +166,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_18 = {
#else
lv_font_t seg7_18 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c
index 3817fe7d0..6a9447c9b 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c
@@ -167,9 +167,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -183,9 +182,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 2,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -194,7 +190,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_20 = {
#else
lv_font_t seg7_20 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c
index 9e4e97689..c98bb056f 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c
@@ -183,9 +183,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -199,9 +198,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 2,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -210,7 +206,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_24 = {
#else
lv_font_t seg7_24 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c
index 9955fda17..caadd5f69 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c
@@ -210,9 +210,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -226,9 +225,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 2,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -237,7 +233,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_28 = {
#else
lv_font_t seg7_28 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c
index 41756ce93..9a32b1dfc 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c
@@ -257,9 +257,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -273,9 +272,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 2,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -284,7 +280,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_36 = {
#else
lv_font_t seg7_36 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c
index a09f554a6..05b106671 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c
@@ -316,9 +316,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -332,9 +331,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 2,
.kern_classes = 0,
.bitmap_format = 1,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -343,7 +339,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_48 = {
#else
lv_font_t seg7_48 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c
index 296fa8d75..c98fa9e7c 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c
@@ -119,9 +119,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
* ALL CUSTOM DATA
*--------------------*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
-static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
@@ -135,9 +134,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0,
-#if LV_VERSION_CHECK(8, 0, 0)
- .cache = &cache
-#endif
};
@@ -146,7 +142,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
*----------------*/
/*Initialize a public general font descriptor*/
-#if LV_VERSION_CHECK(8, 0, 0)
+#if LVGL_VERSION_MAJOR >= 8
const lv_font_t seg7_8 = {
#else
lv_font_t seg7_8 = {
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.c b/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.c
index 96f4c4c5e..6d891a1b5 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.c
+++ b/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.c
@@ -9,13 +9,13 @@
#include "../lvgl.h" /*To see all the widgets*/
#include "lv_theme_haspmota.h"
-#include "misc/lv_gc.h"
+// #include "misc/lv_gc.h" TODO
/*********************
* DEFINES
*********************/
#define MODE_DARK 1
-#define RADIUS_DEFAULT (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 8))
+#define RADIUS_DEFAULT (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 12) : lv_display_dpx(theme.disp, 8))
/*SCREEN*/
#define LIGHT_COLOR_SCR lv_palette_lighten(LV_PALETTE_GREY, 4)
@@ -28,12 +28,12 @@
#define DARK_COLOR_GREY lv_color_hex(0x2f3237)
#define TRANSITION_TIME LV_THEME_DEFAULT_TRANSITION_TIME
-#define BORDER_WIDTH lv_disp_dpx(theme.disp, 2)
-#define OUTLINE_WIDTH lv_disp_dpx(theme.disp, 3)
+#define BORDER_WIDTH lv_display_dpx(theme.disp, 2)
+#define OUTLINE_WIDTH lv_display_dpx(theme.disp, 3)
-#define PAD_DEF (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 24) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 20) : lv_disp_dpx(theme.disp, 16))
-#define PAD_SMALL (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 14) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 10))
-#define PAD_TINY (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 8) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 6) : lv_disp_dpx(theme.disp, 2))
+#define PAD_DEF (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 24) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 20) : lv_display_dpx(theme.disp, 16))
+#define PAD_SMALL (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 14) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 12) : lv_display_dpx(theme.disp, 10))
+#define PAD_TINY (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 8) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 6) : lv_display_dpx(theme.disp, 2))
// OpenHASP specific
/*BUTTON*/
@@ -261,7 +261,7 @@ static void style_init(void)
LV_STYLE_BG_OPA, LV_STYLE_BG_COLOR,
LV_STYLE_TRANSFORM_WIDTH, LV_STYLE_TRANSFORM_HEIGHT,
LV_STYLE_TRANSLATE_Y, LV_STYLE_TRANSLATE_X,
- LV_STYLE_TRANSFORM_ZOOM, LV_STYLE_TRANSFORM_ANGLE,
+ /*LV_STYLE_TRANSFORM_ZOOM_X, LV_STYLE_TRANSFORM_ZOOM_Y,*/ LV_STYLE_TRANSFORM_ANGLE,
LV_STYLE_COLOR_FILTER_OPA, LV_STYLE_COLOR_FILTER_DSC,
0
};
@@ -286,9 +286,9 @@ static void style_init(void)
style_init_reset(&styles->scrollbar);
lv_style_set_bg_color(&styles->scrollbar, (theme.flags & MODE_DARK) ? lv_palette_darken(LV_PALETTE_GREY, 2) : lv_palette_main(LV_PALETTE_GREY));
lv_style_set_radius(&styles->scrollbar, LV_RADIUS_CIRCLE);
- lv_style_set_pad_right(&styles->scrollbar, lv_disp_dpx(theme.disp, 7));
- lv_style_set_pad_top(&styles->scrollbar, lv_disp_dpx(theme.disp, 7));
- lv_style_set_size(&styles->scrollbar, lv_disp_dpx(theme.disp, 5));
+ lv_style_set_pad_right(&styles->scrollbar, lv_display_dpx(theme.disp, 7));
+ lv_style_set_pad_top(&styles->scrollbar, lv_display_dpx(theme.disp, 7));
+ lv_style_set_size(&styles->scrollbar, lv_display_dpx(theme.disp, 5), lv_display_dpx(theme.disp, 5));
lv_style_set_bg_opa(&styles->scrollbar, LV_OPA_40);
lv_style_set_transition(&styles->scrollbar, &trans_normal);
@@ -316,7 +316,7 @@ static void style_init(void)
lv_style_set_pad_row(&styles->card, PAD_SMALL);
lv_style_set_pad_column(&styles->card, PAD_SMALL);
lv_style_set_line_color(&styles->card, lv_palette_main(LV_PALETTE_GREY));
- lv_style_set_line_width(&styles->card, lv_disp_dpx(theme.disp, 1));
+ lv_style_set_line_width(&styles->card, lv_display_dpx(theme.disp, 1));
style_init_reset(&styles->outline_primary);
lv_style_set_outline_color(&styles->outline_primary, theme.color_primary);
@@ -330,19 +330,19 @@ static void style_init(void)
lv_style_set_outline_opa(&styles->outline_secondary, LV_OPA_50);
style_init_reset(&styles->btn);
- lv_style_set_radius(&styles->btn, (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 16) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 8)));
+ lv_style_set_radius(&styles->btn, (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 16) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 12) : lv_display_dpx(theme.disp, 8)));
lv_style_set_bg_opa(&styles->btn, LV_OPA_COVER);
lv_style_set_bg_color(&styles->btn, color_grey);
// if(!(theme.flags & MODE_DARK)) { // OpenHASP
// lv_style_set_shadow_color(&styles->btn, lv_palette_lighten(LV_PALETTE_GREY, 3));
// lv_style_set_shadow_width(&styles->btn, 1);
- // lv_style_set_shadow_ofs_y(&styles->btn, lv_disp_dpx(theme.disp, 4));
+ // lv_style_set_shadow_ofs_y(&styles->btn, lv_display_dpx(theme.disp, 4));
// }
lv_style_set_text_color(&styles->btn, color_text);
lv_style_set_pad_hor(&styles->btn, PAD_DEF);
lv_style_set_pad_ver(&styles->btn, PAD_SMALL);
- lv_style_set_pad_column(&styles->btn, lv_disp_dpx(theme.disp, 5));
- lv_style_set_pad_row(&styles->btn, lv_disp_dpx(theme.disp, 5));
+ lv_style_set_pad_column(&styles->btn, lv_display_dpx(theme.disp, 5));
+ lv_style_set_pad_row(&styles->btn, lv_display_dpx(theme.disp, 5));
lv_style_set_text_font(&styles->btn, theme.font_normal);
static lv_color_filter_dsc_t dark_filter;
@@ -372,11 +372,11 @@ static void style_init(void)
lv_style_set_pad_gap(&styles->pad_small, PAD_SMALL);
style_init_reset(&styles->pad_gap);
- lv_style_set_pad_row(&styles->pad_gap, lv_disp_dpx(theme.disp, 10));
- lv_style_set_pad_column(&styles->pad_gap, lv_disp_dpx(theme.disp, 10));
+ lv_style_set_pad_row(&styles->pad_gap, lv_display_dpx(theme.disp, 10));
+ lv_style_set_pad_column(&styles->pad_gap, lv_display_dpx(theme.disp, 10));
style_init_reset(&styles->line_space_large);
- lv_style_set_text_line_space(&styles->line_space_large, lv_disp_dpx(theme.disp, 20));
+ lv_style_set_text_line_space(&styles->line_space_large, lv_display_dpx(theme.disp, 20));
style_init_reset(&styles->text_align_center);
lv_style_set_text_align(&styles->text_align_center, LV_TEXT_ALIGN_CENTER);
@@ -429,14 +429,14 @@ static void style_init(void)
#if LV_THEME_DEFAULT_GROW
style_init_reset(&styles->grow);
- lv_style_set_transform_width(&styles->grow, lv_disp_dpx(theme.disp, 3));
- lv_style_set_transform_height(&styles->grow, lv_disp_dpx(theme.disp, 3));
+ lv_style_set_transform_width(&styles->grow, lv_display_dpx(theme.disp, 3));
+ lv_style_set_transform_height(&styles->grow, lv_display_dpx(theme.disp, 3));
#endif
style_init_reset(&styles->knob);
lv_style_set_bg_color(&styles->knob, theme.color_primary);
lv_style_set_bg_opa(&styles->knob, LV_OPA_COVER);
- lv_style_set_pad_all(&styles->knob, lv_disp_dpx(theme.disp, 6));
+ lv_style_set_pad_all(&styles->knob, lv_display_dpx(theme.disp, 6));
lv_style_set_radius(&styles->knob, LV_RADIUS_CIRCLE);
style_init_reset(&styles->anim);
@@ -445,7 +445,7 @@ static void style_init(void)
#if LV_USE_ARC
style_init_reset(&styles->arc_indic);
lv_style_set_arc_color(&styles->arc_indic, color_grey);
- lv_style_set_arc_width(&styles->arc_indic, lv_disp_dpx(theme.disp, 18)); // OpenHASP
+ lv_style_set_arc_width(&styles->arc_indic, lv_display_dpx(theme.disp, 18)); // OpenHASP
lv_style_set_arc_rounded(&styles->arc_indic, true);
style_init_reset(&styles->arc_indic_primary);
@@ -455,7 +455,7 @@ static void style_init(void)
style_init_reset(&styles->arc_knob);
lv_style_set_bg_color(&styles->arc_knob, theme.color_primary);
lv_style_set_bg_opa(&styles->arc_knob, LV_OPA_COVER);
- lv_style_set_pad_all(&styles->arc_knob, lv_disp_dpx(theme.disp, 4));
+ lv_style_set_pad_all(&styles->arc_knob, lv_display_dpx(theme.disp, 4));
lv_style_set_radius(&styles->arc_knob, LV_RADIUS_CIRCLE);
#endif
@@ -465,7 +465,7 @@ static void style_init(void)
#endif
#if LV_USE_CHECKBOX
style_init_reset(&styles->cb_marker);
- lv_style_set_pad_all(&styles->cb_marker, lv_disp_dpx(theme.disp, 3));
+ lv_style_set_pad_all(&styles->cb_marker, lv_display_dpx(theme.disp, 3));
lv_style_set_border_width(&styles->cb_marker, BORDER_WIDTH);
lv_style_set_border_color(&styles->cb_marker, theme.color_primary);
lv_style_set_bg_color(&styles->cb_marker, color_card);
@@ -473,14 +473,14 @@ static void style_init(void)
lv_style_set_radius(&styles->cb_marker, RADIUS_DEFAULT / 2);
style_init_reset(&styles->cb_marker_checked);
- lv_style_set_bg_img_src(&styles->cb_marker_checked, LV_SYMBOL_OK);
+ lv_style_set_bg_image_src(&styles->cb_marker_checked, LV_SYMBOL_OK);
lv_style_set_text_color(&styles->cb_marker_checked, lv_color_white());
lv_style_set_text_font(&styles->cb_marker_checked, theme.font_small);
#endif
#if LV_USE_SWITCH
style_init_reset(&styles->switch_knob);
- lv_style_set_pad_all(&styles->switch_knob, - lv_disp_dpx(theme.disp, 4));
+ lv_style_set_pad_all(&styles->switch_knob, - lv_display_dpx(theme.disp, 4));
lv_style_set_bg_color(&styles->switch_knob, lv_color_white());
#endif
@@ -493,45 +493,45 @@ static void style_init(void)
#if LV_USE_CHART
style_init_reset(&styles->chart_bg);
lv_style_set_border_post(&styles->chart_bg, false);
- lv_style_set_pad_column(&styles->chart_bg, lv_disp_dpx(theme.disp, 10));
+ lv_style_set_pad_column(&styles->chart_bg, lv_display_dpx(theme.disp, 10));
lv_style_set_line_color(&styles->chart_bg, color_grey);
style_init_reset(&styles->chart_series);
- lv_style_set_line_width(&styles->chart_series, lv_disp_dpx(theme.disp, 3));
- lv_style_set_radius(&styles->chart_series, lv_disp_dpx(theme.disp, 3));
- lv_style_set_size(&styles->chart_series, lv_disp_dpx(theme.disp, 8));
- lv_style_set_pad_column(&styles->chart_series, lv_disp_dpx(theme.disp, 2));
+ lv_style_set_line_width(&styles->chart_series, lv_display_dpx(theme.disp, 3));
+ lv_style_set_radius(&styles->chart_series, lv_display_dpx(theme.disp, 3));
+ lv_style_set_size(&styles->chart_series, lv_display_dpx(theme.disp, 8), lv_display_dpx(theme.disp, 8));
+ lv_style_set_pad_column(&styles->chart_series, lv_display_dpx(theme.disp, 2));
style_init_reset(&styles->chart_indic);
lv_style_set_radius(&styles->chart_indic,LV_RADIUS_CIRCLE);
- lv_style_set_size(&styles->chart_indic, lv_disp_dpx(theme.disp, 8));
+ lv_style_set_size(&styles->chart_indic, lv_display_dpx(theme.disp, 8), lv_display_dpx(theme.disp, 8));
lv_style_set_bg_color(&styles->chart_indic, theme.color_primary);
lv_style_set_bg_opa(&styles->chart_indic, LV_OPA_COVER);
style_init_reset(&styles->chart_ticks);
- lv_style_set_line_width(&styles->chart_ticks, lv_disp_dpx(theme.disp, 1));
+ lv_style_set_line_width(&styles->chart_ticks, lv_display_dpx(theme.disp, 1));
lv_style_set_line_color(&styles->chart_ticks, color_text);
- lv_style_set_pad_all(&styles->chart_ticks, lv_disp_dpx(theme.disp, 2));
+ lv_style_set_pad_all(&styles->chart_ticks, lv_display_dpx(theme.disp, 2));
lv_style_set_text_color(&styles->chart_ticks, lv_palette_main(LV_PALETTE_GREY));
#endif
#if LV_USE_METER
style_init_reset(&styles->meter_marker);
- lv_style_set_line_width(&styles->meter_marker, lv_disp_dpx(theme.disp, 5));
+ lv_style_set_line_width(&styles->meter_marker, lv_display_dpx(theme.disp, 5));
lv_style_set_line_color(&styles->meter_marker, color_text);
- lv_style_set_size(&styles->meter_marker, lv_disp_dpx(theme.disp, 20));
- lv_style_set_pad_left(&styles->meter_marker, lv_disp_dpx(theme.disp, 15));
+ lv_style_set_size(&styles->meter_marker, lv_display_dpx(theme.disp, 20));
+ lv_style_set_pad_left(&styles->meter_marker, lv_display_dpx(theme.disp, 15));
style_init_reset(&styles->meter_indic);
lv_style_set_radius(&styles->meter_indic, LV_RADIUS_CIRCLE);
lv_style_set_bg_color(&styles->meter_indic, color_text);
lv_style_set_bg_opa(&styles->meter_indic, LV_OPA_COVER);
- lv_style_set_size(&styles->meter_indic, lv_disp_dpx(theme.disp, 15));
+ lv_style_set_size(&styles->meter_indic, lv_display_dpx(theme.disp, 15));
#endif
#if LV_USE_TABLE
style_init_reset(&styles->table_cell);
- lv_style_set_border_width(&styles->table_cell, lv_disp_dpx(theme.disp, 1));
+ lv_style_set_border_width(&styles->table_cell, lv_display_dpx(theme.disp, 1));
lv_style_set_border_color(&styles->table_cell, color_grey);
lv_style_set_border_side(&styles->table_cell, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM );
#endif
@@ -539,8 +539,8 @@ static void style_init(void)
#if LV_USE_TEXTAREA
style_init_reset(&styles->ta_cursor);
lv_style_set_border_color(&styles->ta_cursor, color_text);
- lv_style_set_border_width(&styles->ta_cursor, lv_disp_dpx(theme.disp, 2));
- lv_style_set_pad_left(&styles->ta_cursor, lv_disp_dpx(theme.disp, 1));
+ lv_style_set_border_width(&styles->ta_cursor, lv_display_dpx(theme.disp, 2));
+ lv_style_set_pad_left(&styles->ta_cursor, lv_display_dpx(theme.disp, 1));
lv_style_set_border_side(&styles->ta_cursor, LV_BORDER_SIDE_LEFT);
lv_style_set_anim_time(&styles->ta_cursor, 400);
@@ -555,7 +555,7 @@ static void style_init(void)
lv_style_set_radius(&styles->calendar_bg, 0);
style_init_reset(&styles->calendar_day);
- lv_style_set_border_width(&styles->calendar_day, lv_disp_dpx(theme.disp, 1));
+ lv_style_set_border_width(&styles->calendar_day, lv_display_dpx(theme.disp, 1));
lv_style_set_border_color(&styles->calendar_day, color_grey);
lv_style_set_bg_color(&styles->calendar_day, color_card);
lv_style_set_bg_opa(&styles->calendar_day, LV_OPA_20);
@@ -563,13 +563,13 @@ static void style_init(void)
#if LV_USE_COLORWHEEL
style_init_reset(&styles->colorwheel_main);
- lv_style_set_arc_width(&styles->colorwheel_main, lv_disp_dpx(theme.disp, 10));
+ lv_style_set_arc_width(&styles->colorwheel_main, lv_display_dpx(theme.disp, 10));
#endif
#if LV_USE_MSGBOX
/*To add space for for the button shadow*/
style_init_reset(&styles->msgbox_btn_bg);
- lv_style_set_pad_all(&styles->msgbox_btn_bg, lv_disp_dpx(theme.disp, 4));
+ lv_style_set_pad_all(&styles->msgbox_btn_bg, lv_display_dpx(theme.disp, 4));
style_init_reset(&styles->msgbox_bg);
lv_style_set_max_width(&styles->msgbox_bg, lv_pct(100));
@@ -598,7 +598,7 @@ static void style_init(void)
lv_style_set_clip_corner(&styles->list_bg, true);
style_init_reset(&styles->list_btn);
- lv_style_set_border_width(&styles->list_btn, lv_disp_dpx(theme.disp, 1));
+ lv_style_set_border_width(&styles->list_btn, lv_display_dpx(theme.disp, 1));
lv_style_set_border_color(&styles->list_btn, color_grey);
lv_style_set_border_side(&styles->list_btn, LV_BORDER_SIDE_BOTTOM);
lv_style_set_pad_all(&styles->list_btn, PAD_SMALL);
@@ -615,9 +615,9 @@ static void style_init(void)
lv_style_set_bg_color(&styles->led, lv_color_white());
lv_style_set_bg_grad_color(&styles->led, lv_palette_main(LV_PALETTE_GREY));
lv_style_set_radius(&styles->led, LV_RADIUS_CIRCLE);
- lv_style_set_shadow_width(&styles->led, lv_disp_dpx(theme.disp, 15));
+ lv_style_set_shadow_width(&styles->led, lv_display_dpx(theme.disp, 15));
lv_style_set_shadow_color(&styles->led, lv_color_white());
- lv_style_set_shadow_spread(&styles->led, lv_disp_dpx(theme.disp, 5));
+ lv_style_set_shadow_spread(&styles->led, lv_display_dpx(theme.disp, 5));
#endif
}
@@ -625,15 +625,15 @@ static void style_init(void)
* GLOBAL FUNCTIONS
**********************/
-lv_theme_t * lv_theme_haspmota_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font)
+lv_theme_t * lv_theme_haspmota_init(lv_display_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font)
{
/*This trick is required only to avoid the garbage collection of
*styles' data if LVGL is used in a binding (e.g. Micropython)
*In a general case styles could be in simple `static lv_style_t my_style...` variables*/
if(!inited) {
- LV_GC_ROOT(_lv_theme_default_styles) = lv_mem_alloc(sizeof(my_theme_styles_t));
- styles = (my_theme_styles_t *)LV_GC_ROOT(_lv_theme_default_styles);
+ // LV_GC_ROOT(_lv_theme_default_styles) = lv_mem_alloc(sizeof(my_theme_styles_t));
+ styles = (my_theme_styles_t *)malloc(sizeof(my_theme_styles_t)); // TODO LVGL
}
if(LV_HOR_RES <= 320) disp_size = DISP_SMALL;
@@ -693,13 +693,13 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
#if LV_USE_WIN
/*Header*/
- if(lv_obj_get_child_id(obj) == 0 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
+ if(lv_obj_get_index(obj) == 0 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
lv_obj_add_style(obj, &styles->bg_color_grey, 0);
lv_obj_add_style(obj, &styles->pad_tiny, 0);
return;
}
/*Content*/
- else if(lv_obj_get_child_id(obj) == 1 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
+ else if(lv_obj_get_index(obj) == 1 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
lv_obj_add_style(obj, &styles->scr, 0);
lv_obj_add_style(obj, &styles->pad_normal, 0);
lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
@@ -711,8 +711,8 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED);
}
- #if LV_USE_BTN
- else if(lv_obj_check_type(obj, &lv_btn_class)) {
+#if LV_USE_BUTTON
+ else if(lv_obj_check_type(obj, &lv_button_class)) {
lv_obj_add_style(obj, &styles->btn, 0);
lv_obj_add_style(obj, &styles->bg_color_primary, 0);
lv_obj_add_style(obj, &styles->transition_delayed, 0);
@@ -733,8 +733,8 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
}
#endif
-#if LV_USE_BTNMATRIX
- else if(lv_obj_check_type(obj, &lv_btnmatrix_class)) {
+#if LV_USE_BUTTONMATRIX
+ else if(lv_obj_check_type(obj, &lv_buttonmatrix_class)) {
#if LV_USE_MSGBOX
if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_msgbox_class)) {
lv_obj_add_style(obj, &styles->msgbox_btn_bg, 0);
@@ -862,7 +862,7 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED);
lv_obj_add_style(obj, &styles->chart_series, LV_PART_ITEMS);
lv_obj_add_style(obj, &styles->chart_indic, LV_PART_INDICATOR);
- lv_obj_add_style(obj, &styles->chart_ticks, LV_PART_TICKS);
+ lv_obj_add_style(obj, &styles->chart_ticks, LV_PART_ITEMS);
lv_obj_add_style(obj, &styles->chart_series, LV_PART_CURSOR);
}
#endif
@@ -996,7 +996,7 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
lv_obj_add_style(obj, &styles->bg_color_grey, 0);
lv_obj_add_style(obj, &styles->list_item_grow, 0);
}
- else if(lv_obj_check_type(obj, &lv_list_btn_class)) {
+ else if(lv_obj_check_type(obj, &lv_list_button_class)) {
lv_obj_add_style(obj, &styles->bg_color_white, 0);
lv_obj_add_style(obj, &styles->list_btn, 0);
lv_obj_add_style(obj, &styles->bg_color_primary, LV_STATE_FOCUS_KEY);
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.h b/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.h
index 7276f485d..ef40ba742 100644
--- a/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.h
+++ b/lib/libesp32_lvgl/LVGL_assets/src/lv_theme_haspmota.h
@@ -40,7 +40,7 @@ typedef enum {
* @param font pointer to a font to use.
* @return a pointer to reference this theme later
*/
-lv_theme_t * lv_theme_haspmota_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font);
+lv_theme_t * lv_theme_haspmota_init(lv_display_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font);
bool lv_theme_haspmota_is_inited(void);
diff --git a/lib/libesp32_lvgl/LVGL_assets/src/tasmota_logo_64_truecolor_alpha.c b/lib/libesp32_lvgl/LVGL_assets/src/tasmota_logo_64_truecolor_alpha.c
new file mode 100644
index 000000000..cc5a2af1f
--- /dev/null
+++ b/lib/libesp32_lvgl/LVGL_assets/src/tasmota_logo_64_truecolor_alpha.c
@@ -0,0 +1,127 @@
+// Command:
+// python3 LVGLImage.py --ofmt C --cf RGB565A8 TASMOTA_Symbol_64.png
+
+#include "lvgl.h"
+
+
+#ifndef LV_ATTRIBUTE_MEM_ALIGN
+#define LV_ATTRIBUTE_MEM_ALIGN
+#endif
+
+#ifndef LV_ATTRIBUTE_IMG_DUST
+#define LV_ATTRIBUTE_IMG_DUST
+#endif
+
+static const
+LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_DUST
+uint8_t TASMOTA_Symbol_64_map[] = {
+
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x8c,0x8e,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xff,0x81,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfc,0xfc,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xfb,0xfb,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xfa,0xff,0xb9,0xb8,0xff,0xfa,0xff,0xfd,0xfd,0xff,0x81,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc4,0x02,0x01,0xc1,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x04,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x00,0x00,0x02,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x02,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x02,0x04,0x00,0x00,0x00,0x09,0x29,0x49,0x5e,0x69,0x69,0x5e,0x49,0x29,0x09,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x02,0x04,0x00,0x00,0x0d,0x55,0xa2,0xda,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xd9,0xa5,0x59,0x0c,0x00,0x00,0x05,0x02,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x03,0x00,0x00,0x13,0x81,0xe3,0xff,0xff,0xff,0xff,0xfe,0xfc,0xfb,0xfb,0xfc,0xfe,0xff,0xff,0xff,0xff,0xe2,0x83,0x14,0x00,0x00,0x04,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x04,0x00,0x00,0x66,0xe9,0xff,0xff,0xfc,0xfb,0xfb,0xfc,0xfd,0xfe,0xff,0xff,0xfe,0xfd,0xfc,0xfc,0xfb,0xfc,0xff,0xff,0xea,0x69,0x00,0x00,0x05,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,
+ 0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x06,0x00,0x12,0xb5,0xff,0xff,0xf9,0xfd,0xfe,0xfb,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfb,0xfe,0xfd,0xf9,0xff,0xff,0xb8,0x14,0x00,0x06,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x05,0x00,0x29,0xe1,0xff,0xfa,0xfb,0xff,0xfb,0xfd,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfb,0xfa,0xff,0xe2,0x2a,0x00,0x05,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,
+ 0x01,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x05,0x00,0x2e,0xf0,0xff,0xf9,0xff,0xfe,0xfb,0xff,0xff,0xcb,0x7c,0x25,0xa0,0xff,0xfc,0xfc,0xff,0xa1,0x25,0x7c,0xcb,0xff,0xff,0xfb,0xfe,0xff,0xf8,0xff,0xf0,0x2e,0x00,0x05,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x01,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x04,0x00,0x1d,0xea,0xff,0xf9,0xff,0xfc,0xff,0xff,0xca,0x4b,0x00,0x00,0x00,0x92,0xff,0xfb,0xfb,0xff,0x94,0x00,0x00,0x00,0x49,0xca,0xff,0xff,0xfc,0xff,0xf9,0xff,0xea,0x1d,0x00,0x04,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x01,
+ 0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x01,0x00,0x01,0xc8,0xff,0xf8,0xff,0xfb,0xff,0xff,0x7c,0x00,0x00,0x00,0x09,0x00,0x97,0xff,0xfb,0xfb,0xff,0x98,0x00,0x09,0x00,0x00,0x00,0x7b,0xff,0xff,0xfb,0xff,0xf8,0xff,0xc8,0x01,0x00,0x01,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x81,0x00,0x8b,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc3,0x06,0x00,0x05,0x00,0x00,0x04,0x00,0x85,0xff,0xf8,0xff,0xfc,0xff,0xfb,0x4d,0x00,0x00,0x05,0x02,0x04,0x00,0x95,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x02,0x05,0x00,0x00,0x4c,0xfa,0xff,0xfc,0xff,0xf8,0xff,0x84,0x00,0x04,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x8e,
+ 0x8a,0xff,0xfc,0xfd,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x00,0x04,0x00,0x2e,0xfe,0xff,0xfe,0xfd,0xff,0xff,0x46,0x00,0x06,0x01,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x01,0x06,0x00,0x45,0xff,0xff,0xfd,0xfe,0xff,0xfe,0x2e,0x00,0x04,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xfd,0xfc,0xff,0x8c,0x00,0x7f,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x00,0x01,0x02,0x00,0xac,0xff,0xfa,0xff,0xfc,0xff,0x66,0x00,0x07,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x07,0x00,0x66,0xff,0xfc,0xff,0xfa,0xff,0xab,0x00,0x02,0x01,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0x81,0x00,
+ 0x01,0x00,0x7d,0xff,0xc1,0x05,0x00,0x05,0x00,0x00,0x00,0x04,0x00,0x2e,0xfd,0xff,0xfd,0xfa,0xff,0xad,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0xad,0xff,0xfa,0xfd,0xff,0xfc,0x2e,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x04,0xbf,0xff,0x7f,0x00,0x01,0x02,0x00,0x00,0x61,0x15,0x00,0x05,0x00,0x00,0x00,0x00,0x04,0x00,0x8a,0xff,0xfa,0xfe,0xff,0xf8,0x26,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x27,0xf8,0xff,0xfe,0xfa,0xff,0x89,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x14,0x61,0x00,0x00,0x02,
+ 0x00,0x01,0x02,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x01,0x00,0x05,0xd4,0xff,0xfb,0xfb,0xff,0x9d,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x9e,0xff,0xfb,0xfb,0xff,0xd3,0x05,0x00,0x01,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x01,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x30,0xff,0xff,0xfe,0xfe,0xff,0x3e,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x3f,0xff,0xfe,0xfd,0xff,0xff,0x2f,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x62,0xff,0xfc,0xfc,0xff,0xdb,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x09,0xdc,0xff,0xfc,0xfb,0xff,0x62,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x8c,0xff,0xfa,0xfa,0xff,0xaa,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xaa,0xff,0xfa,0xfa,0xff,0x8c,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xa9,0xff,0xfa,0xfb,0xff,0x83,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x83,0xff,0xfb,0xfa,0xff,0xa8,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xb8,0xff,0xfb,0xfb,0xff,0x6c,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x6d,0xff,0xfb,0xfb,0xff,0xb6,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xbc,0xff,0xfb,0xfb,0xff,0x66,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x67,0xff,0xfb,0xfb,0xff,0xbb,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xb4,0xff,0xfa,0xfb,0xff,0x71,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x72,0xff,0xfb,0xfa,0xff,0xb3,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0xa1,0xff,0xfa,0xfa,0xff,0x8f,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x90,0xff,0xfa,0xfa,0xff,0xa0,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x81,0xff,0xfa,0xfa,0xff,0xba,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xbb,0xff,0xfa,0xfa,0xff,0x80,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x51,0xff,0xfc,0xfd,0xff,0xec,0x16,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x16,0xed,0xff,0xfd,0xfc,0xff,0x50,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x20,0xf4,0xff,0xfd,0xfc,0xff,0x5b,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x5c,0xff,0xfc,0xfd,0xff,0xf3,0x1f,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0xbe,0xff,0xfa,0xfc,0xff,0xc1,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0xc2,0xff,0xfc,0xfa,0xff,0xbd,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x6a,0xff,0xfb,0xfe,0xfd,0xff,0x4e,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x4f,0xff,0xfd,0xfe,0xfb,0xff,0x69,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,0xe8,0xff,0xfc,0xfb,0xff,0xdb,0x09,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x09,0xdb,0xff,0xfb,0xfc,0xff,0xe7,0x13,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x7f,0xff,0xfa,0xff,0xfa,0xff,0xa5,0x00,0x01,0x03,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x03,0x01,0x00,0xa6,0xff,0xfa,0xff,0xfa,0xff,0x7f,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0c,0xe0,0xff,0xfc,0xff,0xfb,0xff,0x8c,0x00,0x00,0x05,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x05,0x00,0x00,0x8c,0xff,0xfb,0xff,0xfc,0xff,0xdf,0x0b,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x4c,0xff,0xfd,0xfd,0xfe,0xfc,0xff,0x9c,0x00,0x00,0x02,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x02,0x00,0x00,0x9a,0xff,0xfc,0xfe,0xfd,0xfd,0xff,0x4c,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x8b,0xff,0xf8,0xff,0xfe,0xfc,0xff,0xcb,0x33,0x00,0x02,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x02,0x00,0x33,0xca,0xff,0xfc,0xfe,0xff,0xf8,0xff,0x8a,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0xae,0xff,0xf9,0xff,0xff,0xf9,0xff,0xe5,0x0b,0x00,0x06,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x0b,0xe5,0xff,0xf9,0xff,0xff,0xf8,0xff,0xae,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0xb1,0xff,0xfb,0xfc,0xfd,0xff,0xe3,0x11,0x00,0x07,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x07,0x00,0x11,0xe3,0xff,0xfd,0xfc,0xfb,0xff,0xb3,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x99,0xff,0xff,0xf7,0xff,0xe3,0x0f,0x00,0x07,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x0f,0xe3,0xff,0xf7,0xff,0xff,0x9b,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x64,0xf2,0xff,0xff,0xde,0x0f,0x00,0x06,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x10,0xde,0xff,0xff,0xf2,0x65,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x1f,0x9f,0xff,0xf4,0x10,0x00,0x07,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x07,0x00,0x10,0xf4,0xff,0x9e,0x1f,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x33,0x80,0x10,0x00,0x06,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x0f,0x84,0x36,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+
+};
+
+const lv_img_dsc_t TASMOTA_Symbol_64 = {
+ .header.magic = LV_IMAGE_HEADER_MAGIC,
+ .header.cf = LV_COLOR_FORMAT_RGB565A8,
+ .header.flags = 0,
+ .header.w = 64,
+ .header.h = 64,
+ .header.stride = 128,
+ .data_size = 12288,
+ .data = TASMOTA_Symbol_64_map,
+};
diff --git a/lib/libesp32_lvgl/freetype/CMakeLists.txt b/lib/libesp32_lvgl/freetype/CMakeLists.txt
deleted file mode 100644
index ffb7c4801..000000000
--- a/lib/libesp32_lvgl/freetype/CMakeLists.txt
+++ /dev/null
@@ -1,585 +0,0 @@
-# CMakeLists.txt
-#
-# Copyright (C) 2013-2021 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# Written originally by John Cary
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT. By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-#
-#
-# The following will 1. create a build directory and 2. change into it and
-# call cmake to configure the build with default parameters as a static
-# library. See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html
-# for information about Debug, Release, etc. builds.
-#
-# cmake -B build -D CMAKE_BUILD_TYPE=Release
-#
-# For a dynamic library, use
-#
-# cmake -B build -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release
-#
-# For a framework on OS X, use
-#
-# cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true ..
-#
-# For an iOS static library, use
-#
-# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS ..
-#
-# or
-#
-# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR ..
-#
-# or
-#
-# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 ..
-#
-# Finally, build the project with:
-#
-# cmake --build build
-#
-# Install it with
-#
-# (sudo) cmake --build build --target install
-#
-# A binary distribution can be made with
-#
-# cmake --build build --config Release --target package
-#
-# Please refer to the cmake manual for further options, in particular, how
-# to modify compilation and linking parameters.
-#
-# Some notes.
-#
-# . `cmake' creates configuration files in
-#
-# /include/freetype/config
-#
-# which should be further modified if necessary.
-#
-# . You can use `cmake' directly on a freshly cloned FreeType git
-# repository.
-#
-# . `CMakeLists.txt' is provided as-is since it is normally not used by the
-# developer team.
-#
-# . Set the `FT_WITH_ZLIB', `FT_WITH_BZIP2', `FT_WITH_PNG',
-# `FT_WITH_HARFBUZZ', and `FT_WITH_BROTLI' CMake variables to `ON' to
-# force using a dependency. Leave a variable undefined (which is the
-# default) to use the dependency only if it is available. Example:
-#
-# cmake -B build -D FT_WITH_ZLIB=ON \
-# -D FT_WITH_BZIP2=ON \
-# -D FT_WITH_PNG=ON \
-# -D FT_WITH_HARFBUZZ=ON \
-# -D FT_WITH_BROTLI=ON [...]
-#
-# Set `CMAKE_DISABLE_FIND_PACKAGE_XXX=TRUE' to disable a dependency completely
-# (where `XXX' is a CMake package name like `BZip2'). Example for disabling all
-# dependencies:
-#
-# cmake -B build -D CMAKE_DISABLE_FIND_PACKAGE_ZLIB=TRUE \
-# -D CMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE \
-# -D CMAKE_DISABLE_FIND_PACKAGE_PNG=TRUE \
-# -D CMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE \
-# -D CMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE [...]
-#
-# . Installation of FreeType can be controlled with the CMake variables
-# `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL'
-# (this is compatible with the same CMake variables in zlib's CMake
-# support).
-
-# FreeType explicitly marks the API to be exported and relies on the compiler
-# to hide all other symbols. CMake supports a C_VISBILITY_PRESET property
-# starting with 2.8.12.
-cmake_minimum_required(VERSION 2.8.12)
-
-if (NOT CMAKE_VERSION VERSION_LESS 3.3)
- # Allow symbol visibility settings also on static libraries. CMake < 3.3
- # only sets the property on a shared library build.
- cmake_policy(SET CMP0063 NEW)
-endif ()
-
-include(CheckIncludeFile)
-
-# CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which
-# configures the base build environment and references the toolchain file
-if (APPLE)
- if (DEFINED IOS_PLATFORM)
- if (NOT "${IOS_PLATFORM}" STREQUAL "OS"
- AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR"
- AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR64")
- message(FATAL_ERROR
- "IOS_PLATFORM must be set to either OS, SIMULATOR, or SIMULATOR64")
- endif ()
- if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
- message(AUTHOR_WARNING
- "You should use Xcode generator with IOS_PLATFORM enabled to get Universal builds.")
- endif ()
- if (BUILD_SHARED_LIBS)
- message(FATAL_ERROR
- "BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled")
- endif ()
- if (BUILD_FRAMEWORK)
- message(FATAL_ERROR
- "BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled")
- endif ()
-
- # iOS only uses static libraries
- set(BUILD_SHARED_LIBS OFF)
-
- set(CMAKE_TOOLCHAIN_FILE
- ${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake)
- endif ()
-else ()
- if (DEFINED IOS_PLATFORM)
- message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform")
- endif ()
-endif ()
-
-
-project(freetype C)
-
-set(VERSION_MAJOR "2")
-set(VERSION_MINOR "10")
-set(VERSION_PATCH "4")
-
-# Generate LIBRARY_VERSION and LIBRARY_SOVERSION.
-set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'")
-file(STRINGS "${PROJECT_SOURCE_DIR}/builds/unix/configure.raw"
- VERSION_INFO
- REGEX ${LIBTOOL_REGEX})
-string(REGEX REPLACE
- ${LIBTOOL_REGEX} "\\1"
- LIBTOOL_CURRENT "${VERSION_INFO}")
-string(REGEX REPLACE
- ${LIBTOOL_REGEX} "\\2"
- LIBTOOL_REVISION "${VERSION_INFO}")
-string(REGEX REPLACE
- ${LIBTOOL_REGEX} "\\3"
- LIBTOOL_AGE "${VERSION_INFO}")
-
-# This is what libtool does internally on Unix platforms.
-math(EXPR LIBRARY_SOVERSION "${LIBTOOL_CURRENT} - ${LIBTOOL_AGE}")
-set(LIBRARY_VERSION "${LIBRARY_SOVERSION}.${LIBTOOL_AGE}.${LIBTOOL_REVISION}")
-
-# External dependency library detection is automatic. See the notes at the top
-# of this file, for how to force or disable dependencies completely.
-option(FT_WITH_ZLIB "Use system zlib instead of internal library." OFF)
-option(FT_WITH_BZIP2 "Support bzip2 compressed fonts." OFF)
-option(FT_WITH_PNG "Support PNG compressed OpenType embedded bitmaps." OFF)
-option(FT_WITH_HARFBUZZ "Improve auto-hinting of OpenType fonts." OFF)
-option(FT_WITH_BROTLI "Support compressed WOFF2 fonts." OFF)
-
-
-# Disallow in-source builds
-if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
- message(FATAL_ERROR
- "In-source builds are not permitted! Make a separate folder for"
- " building, e.g.,\n"
- " cmake -E make_directory build\n"
- " cmake -E chdir build cmake ..\n"
- "Before that, remove the files created by this failed run with\n"
- " cmake -E remove CMakeCache.txt\n"
- " cmake -E remove_directory CMakeFiles")
-endif ()
-
-
-# Add local cmake modules
-list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/builds/cmake)
-
-
-if (BUILD_FRAMEWORK)
- if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
- message(FATAL_ERROR
- "You should use Xcode generator with BUILD_FRAMEWORK enabled")
- endif ()
- set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)")
- set(BUILD_SHARED_LIBS ON)
-endif ()
-
-
-# Find dependencies
-set(HARFBUZZ_MIN_VERSION "2.0.0")
-if (FT_WITH_HARFBUZZ)
- find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION} REQUIRED)
-else ()
- find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION})
-endif ()
-
-if (FT_WITH_PNG)
- find_package(PNG REQUIRED)
-else ()
- find_package(PNG)
-endif ()
-
-if (FT_WITH_ZLIB)
- find_package(ZLIB REQUIRED)
-else ()
- find_package(ZLIB)
-endif ()
-
-if (FT_WITH_BZIP2)
- find_package(BZip2 REQUIRED)
-else ()
- find_package(BZip2)
-endif ()
-
-if (FT_WITH_BROTLI)
- find_package(BrotliDec REQUIRED)
-else ()
- find_package(BrotliDec)
-endif ()
-
-# Create the configuration file
-if (UNIX)
- check_include_file("unistd.h" HAVE_UNISTD_H)
- check_include_file("fcntl.h" HAVE_FCNTL_H)
-
- file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.h.in"
- FTCONFIG_H)
- if (HAVE_UNISTD_H)
- string(REGEX REPLACE
- "#undef +(HAVE_UNISTD_H)" "#define \\1 1"
- FTCONFIG_H "${FTCONFIG_H}")
- endif ()
- if (HAVE_FCNTL_H)
- string(REGEX REPLACE
- "#undef +(HAVE_FCNTL_H)" "#define \\1 1"
- FTCONFIG_H "${FTCONFIG_H}")
- endif ()
-else ()
- file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h"
- FTCONFIG_H)
-endif ()
-
-set(FTCONFIG_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h")
-if (EXISTS "${FTCONFIG_H_NAME}")
- file(READ "${FTCONFIG_H_NAME}" ORIGINAL_FTCONFIG_H)
-else ()
- set(ORIGINAL_FTCONFIG_H "")
-endif ()
-if (NOT (ORIGINAL_FTCONFIG_H STREQUAL FTCONFIG_H))
- file(WRITE "${FTCONFIG_H_NAME}" "${FTCONFIG_H}")
-endif ()
-
-
-# Create the options file
-file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h"
- FTOPTION_H)
-if (ZLIB_FOUND)
- string(REGEX REPLACE
- "/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1"
- FTOPTION_H "${FTOPTION_H}")
-endif ()
-if (BZIP2_FOUND)
- string(REGEX REPLACE
- "/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1"
- FTOPTION_H "${FTOPTION_H}")
-endif ()
-if (PNG_FOUND)
- string(REGEX REPLACE
- "/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1"
- FTOPTION_H "${FTOPTION_H}")
-endif ()
-if (HARFBUZZ_FOUND)
- string(REGEX REPLACE
- "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1"
- FTOPTION_H "${FTOPTION_H}")
-endif ()
-if (BROTLIDEC_FOUND)
- string(REGEX REPLACE
- "/\\* +(#define +FT_CONFIG_OPTION_USE_BROTLI) +\\*/" "\\1"
- FTOPTION_H "${FTOPTION_H}")
-endif ()
-
-set(FTOPTION_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h")
-if (EXISTS "${FTOPTION_H_NAME}")
- file(READ "${FTOPTION_H_NAME}" ORIGINAL_FTOPTION_H)
-else ()
- set(ORIGINAL_FTOPTION_H "")
-endif ()
-if (NOT (ORIGINAL_FTOPTION_H STREQUAL FTOPTION_H))
- file(WRITE "${FTOPTION_H_NAME}" "${FTOPTION_H}")
-endif ()
-
-
-file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h")
-file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h")
-file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h")
-
-
-set(BASE_SRCS
- src/autofit/autofit.c
- src/base/ftbase.c
- src/base/ftbbox.c
- src/base/ftbdf.c
- src/base/ftbitmap.c
- src/base/ftcid.c
- src/base/ftfstype.c
- src/base/ftgasp.c
- src/base/ftglyph.c
- src/base/ftgxval.c
- src/base/ftinit.c
- src/base/ftmm.c
- src/base/ftotval.c
- src/base/ftpatent.c
- src/base/ftpfr.c
- src/base/ftstroke.c
- src/base/ftsynth.c
- src/base/fttype1.c
- src/base/ftwinfnt.c
- src/bdf/bdf.c
- src/bzip2/ftbzip2.c
- src/cache/ftcache.c
- src/cff/cff.c
- src/cid/type1cid.c
- src/gzip/ftgzip.c
- src/lzw/ftlzw.c
- src/pcf/pcf.c
- src/pfr/pfr.c
- src/psaux/psaux.c
- src/pshinter/pshinter.c
- src/psnames/psnames.c
- src/raster/raster.c
- src/sdf/sdf.c
- src/sfnt/sfnt.c
- src/smooth/smooth.c
- src/truetype/truetype.c
- src/type1/type1.c
- src/type42/type42.c
- src/winfonts/winfnt.c
-)
-
-if (UNIX)
- list(APPEND BASE_SRCS "builds/unix/ftsystem.c")
-elseif (WIN32)
- list(APPEND BASE_SRCS "builds/windows/ftsystem.c")
-else ()
- list(APPEND BASE_SRCS "src/base/ftsystem.c")
-endif ()
-
-if (WIN32)
- enable_language(RC)
- list(APPEND BASE_SRCS builds/windows/ftdebug.c
- src/base/ftver.rc)
-elseif (WINCE)
- list(APPEND BASE_SRCS builds/wince/ftdebug.c)
-else ()
- list(APPEND BASE_SRCS src/base/ftdebug.c)
-endif ()
-
-if (BUILD_FRAMEWORK)
- list(APPEND BASE_SRCS builds/mac/freetype-Info.plist)
-endif ()
-
-
-if (NOT DISABLE_FORCE_DEBUG_POSTFIX)
- set(CMAKE_DEBUG_POSTFIX d)
-endif ()
-
-
-add_library(freetype
- ${PUBLIC_HEADERS}
- ${PUBLIC_CONFIG_HEADERS}
- ${PRIVATE_HEADERS}
- ${BASE_SRCS}
-)
-
-set_target_properties(
- freetype PROPERTIES
- C_VISIBILITY_PRESET hidden)
-
-target_compile_definitions(
- freetype PRIVATE FT2_BUILD_LIBRARY)
-
-if (WIN32)
- target_compile_definitions(
- freetype PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS)
- if (BUILD_SHARED_LIBS)
- target_compile_definitions(
- freetype PRIVATE DLL_EXPORT)
- endif ()
-endif ()
-
-if (BUILD_SHARED_LIBS)
- set_target_properties(freetype PROPERTIES
- VERSION ${LIBRARY_VERSION}
- SOVERSION ${LIBRARY_SOVERSION})
-endif ()
-
-# Pick up ftconfig.h and ftoption.h generated above, first.
-target_include_directories(
- freetype
- PUBLIC
- $
- $
- $
- PRIVATE
- ${CMAKE_CURRENT_BINARY_DIR}/include
- ${CMAKE_CURRENT_SOURCE_DIR}/include
-
- # Make available for builds/unix/ftsystem.c.
- ${CMAKE_CURRENT_BINARY_DIR}/include/freetype/config
-)
-
-
-if (BUILD_FRAMEWORK)
- set_property(SOURCE ${PUBLIC_CONFIG_HEADERS}
- PROPERTY MACOSX_PACKAGE_LOCATION Headers/config
- )
- set_target_properties(freetype PROPERTIES
- FRAMEWORK TRUE
- MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist
- PUBLIC_HEADER "${PUBLIC_HEADERS}"
- XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
- )
-endif ()
-
-
-set(PKG_CONFIG_REQUIRED_PRIVATE "")
-set(PKG_CONFIG_LIBS_PRIVATE "")
-
-if (ZLIB_FOUND)
- target_link_libraries(freetype PRIVATE ${ZLIB_LIBRARIES})
- target_include_directories(freetype PRIVATE ${ZLIB_INCLUDE_DIRS})
- list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "zlib")
-endif ()
-if (BZIP2_FOUND)
- target_link_libraries(freetype PRIVATE ${BZIP2_LIBRARIES})
- target_include_directories(freetype PRIVATE ${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS
- list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2")
-endif ()
-if (PNG_FOUND)
- target_link_libraries(freetype PRIVATE ${PNG_LIBRARIES})
- target_compile_definitions(freetype PRIVATE ${PNG_DEFINITIONS})
- target_include_directories(freetype PRIVATE ${PNG_INCLUDE_DIRS})
- list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libpng")
-endif ()
-if (HARFBUZZ_FOUND)
- target_link_libraries(freetype PRIVATE ${HARFBUZZ_LIBRARIES})
- target_include_directories(freetype PRIVATE ${HARFBUZZ_INCLUDE_DIRS})
- list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}")
-endif ()
-if (BROTLIDEC_FOUND)
- target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES})
- target_compile_definitions(freetype PRIVATE ${BROTLIDEC_DEFINITIONS})
- target_include_directories(freetype PRIVATE ${BROTLIDEC_INCLUDE_DIRS})
- list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libbrotlidec")
-endif ()
-
-
-# Installation
-include(GNUInstallDirs)
-
-if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
- install(
- # Note the trailing slash in the argument to `DIRECTORY'!
- DIRECTORY ${PROJECT_SOURCE_DIR}/include/
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2
- COMPONENT headers
- PATTERN "internal" EXCLUDE
- PATTERN "ftconfig.h" EXCLUDE
- PATTERN "ftoption.h" EXCLUDE)
- install(
- FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h
- ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config
- COMPONENT headers)
-endif ()
-
-if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
- # Generate the pkg-config file
- file(READ "${PROJECT_SOURCE_DIR}/builds/unix/freetype2.in" FREETYPE2_PC_IN)
-
- string(REPLACE ";" ", " PKG_CONFIG_REQUIRED_PRIVATE "${PKG_CONFIG_REQUIRED_PRIVATE}")
-
- string(REPLACE "%prefix%" ${CMAKE_INSTALL_PREFIX}
- FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
- string(REPLACE "%exec_prefix%" "\${prefix}"
- FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
- string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}"
- FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
- string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}"
- FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
- string(REPLACE "%ft_version%" "${LIBTOOL_CURRENT}.${LIBTOOL_REVISION}.${LIBTOOL_AGE}"
- FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
- string(REPLACE "%REQUIRES_PRIVATE%" "${PKG_CONFIG_REQUIRED_PRIVATE}"
- FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
- string(REPLACE "%LIBS_PRIVATE%" "${PKG_CONFIG_LIBS_PRIVATE}"
- FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
-
- set(FREETYPE2_PC_IN_NAME "${PROJECT_BINARY_DIR}/freetype2.pc")
- if (EXISTS "${FREETYPE2_PC_IN_NAME}")
- file(READ "${FREETYPE2_PC_IN_NAME}" ORIGINAL_FREETYPE2_PC_IN)
- else ()
- set(ORIGINAL_FREETYPE2_PC_IN "")
- endif ()
- if (NOT (ORIGINAL_FREETYPE2_PC_IN STREQUAL FREETYPE2_PC_IN))
- file(WRITE "${FREETYPE2_PC_IN_NAME}" ${FREETYPE2_PC_IN})
- endif ()
-
- install(
- FILES ${PROJECT_BINARY_DIR}/freetype2.pc
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
- COMPONENT pkgconfig)
-
- include(CMakePackageConfigHelpers)
- write_basic_package_version_file(
- ${PROJECT_BINARY_DIR}/freetype-config-version.cmake
- VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
- COMPATIBILITY SameMajorVersion)
-
- install(
- TARGETS freetype
- EXPORT freetype-targets
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- FRAMEWORK DESTINATION Library/Frameworks
- COMPONENT libraries)
- install(
- EXPORT freetype-targets
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype
- FILE freetype-config.cmake
- COMPONENT headers)
- install(
- FILES ${PROJECT_BINARY_DIR}/freetype-config-version.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype
- COMPONENT headers)
-endif ()
-
-
-# Packaging
-set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.")
-set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
-set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT")
-
-set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
-set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
-set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
-set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
-
-if (WIN32)
- set(CPACK_GENERATOR ZIP)
-else ()
- set(CPACK_GENERATOR TGZ)
-endif ()
-
-set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
-set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers")
-set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION
- "Library used to build programs which use FreeType")
-set(CPACK_COMPONENT_HEADERS_DESCRIPTION
- "C/C++ header files for use with FreeType")
-set(CPACK_COMPONENT_HEADERS_DEPENDS libraries)
-set(CPACK_COMPONENT_LIBRARIES_GROUP "Development")
-set(CPACK_COMPONENT_HEADERS_GROUP "Development")
-
-include(CPack)
diff --git a/lib/libesp32_lvgl/freetype/ChangeLog b/lib/libesp32_lvgl/freetype/ChangeLog
index 42f7c34ba..ca58f007a 100644
--- a/lib/libesp32_lvgl/freetype/ChangeLog
+++ b/lib/libesp32_lvgl/freetype/ChangeLog
@@ -1,5066 +1,6562 @@
-2020-10-20 Werner Lemberg
+2023-08-25 Werner Lemberg
- * Version 2.10.4 released.
+ * Version 2.13.2 released.
==========================
+ Tag sources with `VER-2-13-2'.
- Tag sources with `VER-2-10-4'.
-
- * docs/VERSION.TXT: Add entry for version 2.10.4.
+ * docs/VERSION.TXT: Add entry for version 2.13.2.
* docs/CHANGES: Updated.
+ * docs/release, docs/README, builds/macs/README: Updated.
* README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html,
- builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html,
- builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
- s/2.10.3/2.10.4/, s/2103/2104/.
-
- * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
-
- * builds/unix/configure.raw (version_info): Set to 23:4:17.
- * CMakeLists.txt (VERSION_PATCH): Set to 4.
-
-2020-10-19 Werner Lemberg
-
- [sfnt] Fix heap buffer overflow (#59308).
-
- This is CVE-2020-15999.
-
- * src/sfnt/pngshim.c (Load_SBit_Png): Test bitmap size earlier.
-
-2020-10-17 Alexei Podtelezhnikov
-
- * src/sfnt/tt{colr,cpal}.c: Fix signedness warnings from VC++.
-
-2020-10-17 Alexei Podtelezhnikov
-
- * src/sfnt/sfwoff2.c (Read255UShort): Tweak types to please VC++.
-
-2020-10-10 Werner Lemberg
-
- * Version 2.10.3 released.
- ==========================
-
-
- Tag sources with `VER-2-10-3'.
-
- * docs/VERSION.TXT: Add entry for version 2.10.3.
-
- * README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html,
- builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html,
- builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
- s/2.10.2/2.10.3/, s/2102/2103/.
-
- * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
-
- * builds/unix/configure.raw (version_info): Set to 23:3:17.
- * CMakeLists.txt (VERSION_PATCH): Set to 3.
-
-2020-09-25 Werner Lemberg
-
- [autofit] Synchronize with ttfautohint.
-
- This corresponds to the following commits in the ttfautohint git
- repository:
-
- bb6842bd3bd437b7b4a7921b0376c860f5e73d18 Typo, formatting.
- d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa Add Medefaidrin script.
-
- * src/autofit/afblue.dat: Add blue zone data for Medefaidrin.
- * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
- * src/autofit/afscript.h: Add Medefaidrin standard characters.
-
- * src/autofit/afranges.c, src/autofit/afstyles.h: Add Medefaidrin
- data.
-
-2020-09-25 Werner Lemberg
-
- Move `scripts/make_distribution_archives.py` to `src/tools`.
-
- * scr/tools/scripts/make_distribution_archives.py: (_TOP_DIR,
- _SCRIPT_DIR): Updated to new location.
- (main): s/shutils.copyfile/shutils.copy/ to preserve file
- permissions.
- (main): Prefix source file paths with `git_dir` while copying files
- to allow calls of the script from other places than the top-level
- directory.
-
-2020-09-24 Werner Lemberg
-
- * src/cff/cffgload.c (cff_slot_load): Scale `vertBearingY`.
-
- Towards the end of the the function there is a call to
- `FT_Outline_Get_CBox` that retrieves the glyph bbox in scaled units.
- That sets `horiBearing{X,Y}` and `vertBearingX` but `vertBearingY`
- is left alone, and is not scaled.
-
- Patch from Eric Muller .
-
-2020-09-24 Werner Lemberg
-
- * src/base/ftobjs.c (FT_Load_Glyph): Trace glyph metrics.
-
-2020-09-22 Werner Lemberg
-
- [meson] Move auxiliary scripts to `builds/meson`.
-
- Suggested by Alexei.
-
- * scripts/*.py: Move meson scripts to...
- * builds/meson/*.py: ... this new location.
-
- * meson.build: Updated.
-
-2020-09-21 David Turner
-
- Add python script for building tarballs.
-
- * scripts/make_distribution_archives.py: New file.
-
- This standalone Python script should be equivalent to running `make
- dist` with the Make-based build system, with the following minor
- differences:
-
- - Since `make distclean` doesn't always clean up `objs/` properly,
- `make dist` archives may contain some stale binaries like
- `objs/.libs/libfreetype.so.6` or others.
-
- - `config.guess` and `config.sub` are not updated unless option
- `--gnu-config-dir=DIR` is used to specify the location of these
- files.
-
- - Some bits of the auto-generated reference documentation may
- appear in slightly different order, probably due to issues related
- to mkdocs and docwriter.
-
- As an example, the call
-
- scripts/make_distribution_archives.py /tmp/freetype2-dist
-
- creates the following files under `/tmp/freetype2-dist`:
-
- freetype-.tar.gz
- freetype-.tar.xz
- ft.zip
-
-2020-09-21 Werner Lemberg
-
- * scripts/extract_freetype_version.py: Fix regex typos.
-
-2020-09-21 David Turner
-
- Add Meson build project file.
-
- Example usage:
-
- # Configure Meson build in directory `build-meson` to generate
- # release binaries comparable to to the ones from the
- # autotools/make build system.
- meson setup build-meson \
- --prefix=/usr/local \
- --buildtype=debugoptimized \
- --strip \
- -Db_ndebug=true
-
- # After configuring the Meson build with the above command,
- # compile and install to `/usr/local/`; this includes a pkg-config
- # file.
- ninja -C build-meson install
-
- # Alternatively, compile and install to `/tmp/aa/usr/local/...`
- # for packaging.
- DESTDIR=/tmp/aa ninja -C build-meson install
-
- # Generate documentation under `build-meson/docs`.
- ninja -C build-meson docs
-
- Library size comparison for stripped `libfreetype.so` generated by
- all three build systems:
-
- - Default build (autotools + libtool): 712 KiB
- - CMake build (RelWithDebInfo): 712 KiB
- - Meson build: 712 KiB
-
-
- * meson.build: New top-level Meson build file for the library.
-
- * meson_options.txt: New file. It holds user-selectable options for
- the build, which can be printed with `meson configure`, and selected
- at `meson setup` or `meson --reconfigure` time with
- `-D