diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 215b7dd29..c144c06ec 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -7,7 +7,7 @@
- [ ] 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 ESP32 V.2.0.10
+ - [ ] The code change is tested and works with Tasmota core ESP32 V.2.0.11
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
_NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_
diff --git a/BUILDS.md b/BUILDS.md
index 9c02cce72..7cfe5a568 100644
--- a/BUILDS.md
+++ b/BUILDS.md
@@ -119,6 +119,7 @@ Note: `minimal` variant is not listed as it shouldn't be used outside of the [up
| USE_MGS | - | - / x | - | x | - | - |
| USE_SGP30 | - | - / x | - | x | - | - |
| USE_SGP40 | - | - / x | - | x | - | - |
+| USE_SGP4X | - | - / x | - | - | - | - |
| USE_SEN5X | - | - / x | - | x | - | - |
| USE_SI1145 | - | - / - | - | - | - | - |
| USE_LM75AD | - | - / x | - | x | - | - |
@@ -127,6 +128,7 @@ Note: `minimal` variant is not listed as it shouldn't be used outside of the [up
| USE_MCP23XXX_DRV | - | - / - | - | - | - | - |
| USE_PCA9632 | - | - / - | - | - | - | - |
| USE_PCA9685 | - | - / - | - | - | - | - |
+| USE_PCA9685_V2 | - | - / - | - | - | - | - |
| USE_MPR121 | - | - / - | - | - | - | - |
| USE_CCS811 | - | - / - | - | x | - | - |
| USE_CCS811_V2 | - | - / x | - | - | - | - |
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d49fc8793..38d9fd06c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,92 @@
# Changelog
All notable changes to this project will be documented in this file.
-## [Released]
+## [Released] - Development
+
+## [13.1.0] 20230815
+- Release Quentin
+
+## [13.0.0.4] 20230815
+### Added
+- ESP32 prepare for Arduino Core v3 and esp-idf v5 (#19264)
+
+### Changed
+- Console height from default 318 pixels to viewport (#19241)
+- Shutter button hold behaviour with grouptopic (#19263)
+- Thermostat improvements (#19279)
+- PID controller improvements (#19285)
+
+## [13.0.0.3] 20230805
+### Added
+- Support for MAX17043 fuel-gauge systems Lipo batteries (#18788)
+- Support for multiple PCA9685 with extended functionality (#18805)
+- Zigbee decode Aqara 0000/FF01 attribute 03 as Temperature (#19210)
+- Berry bytes `get` and `set` work for 3 bytes values (#19225)
+- Matter support for fabric_filtered request (for Google compatibility) (#19249)
+
+### Changed
+- Initial ``DisplayMode`` from 1 to 0 and ``DisplayDimmmer`` from 10% to 50% (#19138)
+- ESP32 Framework (Arduino Core) from v2.0.10 to v2.0.11
+- Berry `mqtt.publish` now distinguishes between `string` and `bytes` (#19196)
+- IRremoteESP8266 library from v2.8.5 to v2.8.6
+- ESP32 autodetect flashsize and adjust filesystem (#19215)
+- Reduced log level for TeleInfo (#19216)
+- Matter increased polling frequency for local switches/occupancy (#19242)
+
+### Fixed
+- Initial battery level percentage (#19160)
+- Berry SK6812_GRBW crash (#19166)
+- ESP8266 SPI initialization for scripter, filesystem and MFRC522 (#19209)
+- Zero cross dimmer minimum interrupt time (#19211)
+- Fade would fail when the difference between start and target would be too small (#19248)
+- Inverted shutter (#19243)
+- Matter support for large atribute responses (#19252)
+- Matter auto-configuration Relay indices (#19255)
+
+## [13.0.0.2] 20230721
+### Added
+- Partition Wizard is now able to convert to safeboot from Shelly partition layout (#19034)
+- Matter mini-profiler (#19075)
+- Berry `_class` can be used in `static var` initialization code (#19088)
+- Berry `energy.update_total()` to call `EnergyUpdateTotal()` from energy driver (#19117)
+- Support for DeepSleep battery level percentage (#19134)
+- Berry metrics for memory allocation/deallocation/reallocation (#19150)
+- Berry `tasmota.loglevel()` and `tasmota.rtc_utc()` for faster performance (#19152)
+- Berry AES CCM decrypting in a single call to avoid any object allocation (#19153)
+
+### Changed
+- ESP32 shutter driver support up to 16 shutters (#18295)
+- Configuration backup and restore now backup and restore ``.xdrvsetXXX`` files too (#18295)
+- Berry extend `range(lower, upper, incr)` to arbitrary increment (#19120)
+- Berry updated syntax highlighting plugin for VSCode (#19123)
+- Matter latency improvement for single attribute reads and single commands (#19158)
+
+## [13.0.0.1] 20230708
+### Added
+- Command ``Delay -1`` to wait until next second (#18984)
+- Matter add option to disable bridge mode (#18992)
+- Support for SGP41 TVOC/NOx Sensor (#18880)
+- Command ``BrRestart`` to restart the Berry VM (experimental) (#19003)
+- Command ``Restart 9`` to save all changes and go into deepsleep waiting for a reset (#19024)
+- Berry added `getgbl` performance counter to `debug.counters()` (#19070)
+
+### Breaking Changed
+- Berry `bool( [] )` and `bool( {} )` now evaluate as `false` (#18986)
+- Berry `import strict` now detects useless expr without side effects (#18997)
+
+### Changed
+- Matter support for temperature in Fahrenheit (`SetOption8 1`) (#18987)
+- Matter improve responsiveness (#19002)
+- ESP32 LVGL library from v8.3.7 to v8.3.8 (no functional change)
+- Matter improve latency for remote commands (#19072)
+
+### Fixed
+- Berry various fixes for Walrus Operator (#18982)
+- MiElHVAC power commands regression from v12.4.0.1 (#18923)
+- `BrRestart` now supports web handlers to work after Berry restart
+
+### Removed
+- Support for ESP32-C3 with chip rev below 3 (old development boards)
## [13.0.0] 20230626
- Release Qasim
@@ -69,7 +154,7 @@ All notable changes to this project will be documented in this file.
### Added
- Matter support for Shutters with Tilt
- Matter POC for remote Relay
-- Support for Zero-Cross Dimmer on ESP32, changed calculation on EPS8266, high resolution control e.g. Solar: `ZCDimmerSet`
+- Support for Zero-Cross Dimmer on ESP32, changed calculation on ESP8266, high resolution control e.g. Solar: `ZCDimmerSet`
- ESP32 Enhanced Shutterbuttons functionality to control tilt position, additionally incr/decr possible to position and tilt.
- ESP32 command ``Shuttersetup`` for "Shelly 2.5 pro" automatic calibration and setup (experimental)
- Berry `tcpclientasync` class for non-blocking TCP client
diff --git a/CODE_OWNERS.md b/CODE_OWNERS.md
index 49d7f6f53..b0d05100f 100644
--- a/CODE_OWNERS.md
+++ b/CODE_OWNERS.md
@@ -80,7 +80,16 @@ In addition to @arendst the following code is mainly owned by:
| xdrv_66_tm1638 | @arendst
| xdrv_67_mcp23xxx | @arendst
| xdrv_68_zerocrossDimmer.ino | @stefanbode
-| |
+| xdrv_69_pca9557 | @cctweaker
+| xdrv_70 |
+| xdrv_71 |
+| xdrv_72 |
+| xdrv_73 |
+| xdrv_74 |
+| xdrv_75 |
+| xdrv_76 |
+| xdrv_77 |
+| xdrv_78 |
| xdrv_79_esp32_ble | @staars, @btsimonh
| xdrv_81_esp32_webcam | @gemu, @philrich
| xdrv_82_esp32_ethernet | @arendst
@@ -208,6 +217,8 @@ In addition to @arendst the following code is mainly owned by:
| xsns_106_gdk101 | @Szewcson
| xsns_107_gm861 | @arendst
| xsns_108_tc74 | Michael Loftis
+| xsns_109_sgp4x | Andrew Klaus
+| xsns_110_max17043 | Vincent de Groot
| |
| Libraries |
| |
diff --git a/I2CDEVICES.md b/I2CDEVICES.md
index b7e806eea..9bba8962e 100644
--- a/I2CDEVICES.md
+++ b/I2CDEVICES.md
@@ -9,6 +9,7 @@ The following table lists the supported I2C devices
Index | Define | Driver | Device | Address(es) | Description
------|---------------------|----------|----------|-------------|-----------------------------------------------
1 | USE_PCA9685 | xdrv_15 | PCA9685 | 0x40 - 0x47 | 16-channel 12-bit pwm driver
+ 1 | USE_PCA9685_V2 | xdrv_15 | PCA9685 | 0x40 - 0x47 | 16-channel 12-bit pwm driver
2 | USE_PCF8574 | xdrv_28 | PCF8574 | 0x20 - 0x26 | 8-bit I/O expander (address range overridable)
2 | USE_PCF8574 | xdrv_28 | PCF8574A | 0x39 - 0x3F | 8-bit I/O expander (address range overridable)
3 | USE_DISPLAY_LCD | xdsp_01 | | 0x27, 0x3F | LCD display
@@ -116,4 +117,6 @@ Index | Define | Driver | Device | Address(es) | Description
78 | USE_PMSA003I | xsns_104 | PMSA003I | 0x12 | PM2.5 Air Quality Sensor with I2C Interface
79 | USE_GDK101 | xsns_106 | GDK101 | 0x18 - 0x1B | Gamma Radiation Sensor
80 | USE_TC74 | xsns_108 | TC74 | 0x48 - 0x4F | Temperature sensor
- 81 | USE_PCA9557 | xdrv_69 | PCA95xx | 0x18 - 0x1F | 8-bit I/O expander as virtual button/switch/relay
\ No newline at end of file
+ 81 | USE_PCA9557 | xdrv_69 | PCA95xx | 0x18 - 0x1F | 8-bit I/O expander as virtual button/switch/relay
+ 82 | USE_SGP4X | xsns_109 | SGP4X | 0x59 | Gas (TVOC/NOx index)
+ 83 | USE_MAX17043 | xsns_110 | MAX17043 | 0x36 | Fuel-gauge for 3.7 Volt Lipo battery
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index cec420424..a216f317b 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -36,9 +36,9 @@ While fallback or downgrading is common practice it was never supported due to S
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 ESP32/Arduino library Core version **2.0.10**.
+This release will be supported from ESP32/Arduino library Core version **2.0.11**.
-Support of ESP8266 Core versions before 2.7.4.9 and ESP32 Core versions before 2.0.10 have been removed.
+Support of ESP8266 Core versions before 2.7.4.9 and ESP32 Core versions before 2.0.11 have been removed.
## Support of TLS
@@ -75,12 +75,12 @@ 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.0.0
+- http://ota.tasmota.com/tasmota/release-13.1.0
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
### ESP32, ESP32-C3, ESP32-S2 and ESP32-S3 based
-The following binary downloads have been compiled with ESP32/Arduino library core version **2.0.10**.
+The following binary downloads have been compiled with ESP32/Arduino library core version **2.0.11**.
- **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota32xy.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C3/S2/S3 and 4M+ flash.
@@ -100,7 +100,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.0.0
+- https://ota.tasmota.com/tasmota32/release-13.1.0
The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin``
@@ -110,75 +110,64 @@ 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.0.0 Qasim
+## Changelog v13.1.0 Quentin
### Added
-- Command ``SetOption152 0/1`` to select two (0 = default) pin bistable or one (1) pin latching relay control [#18386](https://github.com/arendst/Tasmota/issues/18386)
-- Command ``I2cScan0`` to scan both busses on ESP32 with one command
-- Command ``WifiPower 0`` to enable dynamic wifi power based on RSSI by @TD-er [#15443](https://github.com/arendst/Tasmota/issues/15443)
-- Command ``WifiPower 1`` to restore default wifi power
-- Support for TC74 temperature sensor by Michael Loftis [#18042](https://github.com/arendst/Tasmota/issues/18042)
-- Support for GM861 1D and 2D bar code reader [#18399](https://github.com/arendst/Tasmota/issues/18399)
-- Support for PCA9557 8-bit I/O expander [#18632](https://github.com/arendst/Tasmota/issues/18632)
-- Display descriptor for ST7735 128x160 display [#18741](https://github.com/arendst/Tasmota/issues/18741)
-- Zigbee support for air sensors [#18665](https://github.com/arendst/Tasmota/issues/18665)
-- Zigbee firmware for Sonoff-ZB-Pro v20230507 [#18968](https://github.com/arendst/Tasmota/issues/18968)
-- ESP32 command ``Shuttersetup`` for "Shelly 2.5 pro" automatic calibration and setup (experimental)
-- ESP32 Enhanced Shutterbuttons functionality to control tilt position, additionally incr/decr possible to position and tilt.
-- Berry RS256 crypto algorithm (RSASSA-MCKS1_v1-5 with SHA256) used for JWT [#18763](https://github.com/arendst/Tasmota/issues/18763)
-- Berry `tcpclientasync` class for non-blocking TCP client
-- Berry `set_lsb_justified(bool)` to `AudioOutputI2S` [#18774](https://github.com/arendst/Tasmota/issues/18774)
-- Berry `string.format()` now automatically converts type according to format [#18890](https://github.com/arendst/Tasmota/issues/18890)
-- Berry global function `format` as a simpler syntax to `string.format` [#18925](https://github.com/arendst/Tasmota/issues/18925)
-- Berry f-strings as an alternative to string formatting [#18937](https://github.com/arendst/Tasmota/issues/18937)
-- Berry Walrus operator ':=' [#18963](https://github.com/arendst/Tasmota/issues/18963)
-- HASPmota `meta` attribute and improved `berry_run` [#18685](https://github.com/arendst/Tasmota/issues/18685)
-- Matter sensors Humidity, Pressure, Illuminance [#18441](https://github.com/arendst/Tasmota/issues/18441)
-- Matter allow `Matter#Initialized` rule once the device is configured [#18451](https://github.com/arendst/Tasmota/issues/18451)
-- Matter UI to change endpoints configuration [#18498](https://github.com/arendst/Tasmota/issues/18498)
-- Matter support for Shutters with Tilt [#18509](https://github.com/arendst/Tasmota/issues/18509)
-- Matter support for async HTTP used for bridged devices and remote relays [#18656](https://github.com/arendst/Tasmota/issues/18656)
-- Matter bridge for ESP8266 remote endpoints (experimental) [#18734](https://github.com/arendst/Tasmota/issues/18734)
-- Matter support for Occupancy via Switch (experimental) [#18742](https://github.com/arendst/Tasmota/issues/18742)
-- Matter ability to add or remove endpoint in bridge mode (code only) [#18790](https://github.com/arendst/Tasmota/issues/18790)
-- Matter controller's Vendor Name to logs and UI [#18794](https://github.com/arendst/Tasmota/issues/18794)
-- Matter redesigned UI [#18855](https://github.com/arendst/Tasmota/issues/18855)
-- Matter support for Contact Sensor [#18882](https://github.com/arendst/Tasmota/issues/18882)
-- Matter friendly-name (NodeLabel) to each endpoint [#18897](https://github.com/arendst/Tasmota/issues/18897)
-- Matter display the remote Device Name instead of IP address [#18961](https://github.com/arendst/Tasmota/issues/18961)
+- Command ``BrRestart`` to restart the Berry VM (experimental) [#19003](https://github.com/arendst/Tasmota/issues/19003)
+- Command ``Delay -1`` to wait until next second [#18984](https://github.com/arendst/Tasmota/issues/18984)
+- Command ``Restart 9`` to save all changes and go into deepsleep waiting for a reset [#19024](https://github.com/arendst/Tasmota/issues/19024)
+- Support for MAX17043 fuel-gauge systems Lipo batteries [#18788](https://github.com/arendst/Tasmota/issues/18788)
+- Support for multiple PCA9685 with extended functionality [#18805](https://github.com/arendst/Tasmota/issues/18805)
+- Support for SGP41 TVOC/NOx Sensor [#18880](https://github.com/arendst/Tasmota/issues/18880)
+- Support for DeepSleep battery level percentage [#19134](https://github.com/arendst/Tasmota/issues/19134)
+- Zigbee decode Aqara 0000/FF01 attribute 03 as Temperature [#19210](https://github.com/arendst/Tasmota/issues/19210)
+- ESP32 prepare for Arduino Core v3 and esp-idf v5 [#19264](https://github.com/arendst/Tasmota/issues/19264)
+- Berry `getgbl` performance counter to `debug.counters()` [#19070](https://github.com/arendst/Tasmota/issues/19070)
+- Berry `_class` can be used in `static var` initialization code [#19088](https://github.com/arendst/Tasmota/issues/19088)
+- Berry `energy.update_total()` to call `EnergyUpdateTotal()` from energy driver [#19117](https://github.com/arendst/Tasmota/issues/19117)
+- Berry `tasmota.loglevel()` and `tasmota.rtc_utc()` for faster performance [#19152](https://github.com/arendst/Tasmota/issues/19152)
+- Berry metrics for memory allocation/deallocation/reallocation [#19150](https://github.com/arendst/Tasmota/issues/19150)
+- Berry AES CCM decrypting in a single call to avoid any object allocation [#19153](https://github.com/arendst/Tasmota/issues/19153)
+- Berry bytes `get` and `set` work for 3 bytes values [#19225](https://github.com/arendst/Tasmota/issues/19225)
+- Partition Wizard is now able to convert to safeboot from Shelly partition layout [#19034](https://github.com/arendst/Tasmota/issues/19034)
+- Matter option to disable bridge mode [#18992](https://github.com/arendst/Tasmota/issues/18992)
+- Matter mini-profiler [#19075](https://github.com/arendst/Tasmota/issues/19075)
+- Matter support for fabric_filtered request (for Google compatibility) [#19249](https://github.com/arendst/Tasmota/issues/19249)
### Breaking Changed
-- Change command ``FileUpload`` index binary data detection from >199 to >299
-- Matter relay number starts at 1 instead of 0 to match Tasmota numbering
+- Berry `bool( [] )` and `bool( {} )` now evaluate as `false` [#18986](https://github.com/arendst/Tasmota/issues/18986)
+- Berry `import strict` now detects useless expression without side effects [#18997](https://github.com/arendst/Tasmota/issues/18997)
### Changed
-- AdafruitFingerprint library from v2.0.4 to v2.1.0
-- IRremoteESP8266 library from v2.8.4 to v2.8.5
-- ESP32 Framework (Core) from v2.0.7 to v2.0.10
-- ESP32 Binaries size increase of 300k due to Matter support may need [Partition Wizard](https://tasmota.github.io/docs/Tasmota-Application/#partition-management)
-- InfluxDb resolves DNS name before request [#18015](https://github.com/arendst/Tasmota/issues/18015)
-- Refactored Zero Cross Dimmer [#18481](https://github.com/arendst/Tasmota/issues/18481)
-- Energy power delta report delayed by two seconds allowing hardware to stabilize [#17751](https://github.com/arendst/Tasmota/issues/17751)
-- Shutter sliders in WEBGUI automatically appear and disappear during configuration and update during movement [#18701](https://github.com/arendst/Tasmota/issues/18701)
-- Berry `webclient.url_encode()` is now a static class method, no change required to existing code [#18775](https://github.com/arendst/Tasmota/issues/18775)
+- IRremoteESP8266 library from v2.8.5 to v2.8.6
+- ESP32 Framework (Arduino Core) from v2.0.10 to v2.0.11
+- ESP32 LVGL library from v8.3.7 to v8.3.8 (no functional change)
+- Initial ``DisplayMode`` from 1 to 0 and ``DisplayDimmmer`` from 10% to 50% [#19138](https://github.com/arendst/Tasmota/issues/19138)
+- Configuration backup and restore now supports ``.xdrvsetXXX`` files too [#18295](https://github.com/arendst/Tasmota/issues/18295)
+- Reduced log level for TeleInfo [#19216](https://github.com/arendst/Tasmota/issues/19216)
+- Console height from default 318 pixels to viewport [#19241](https://github.com/arendst/Tasmota/issues/19241)
+- Shutter button hold behaviour with grouptopic [#19263](https://github.com/arendst/Tasmota/issues/19263)
+- Thermostat improvements [#19279](https://github.com/arendst/Tasmota/issues/19279)
+- PID controller improvements [#19285](https://github.com/arendst/Tasmota/issues/19285)
+- ESP32 shutter driver support up to 16 shutters [#18295](https://github.com/arendst/Tasmota/issues/18295)
+- ESP32 autodetect flashsize and adjust filesystem [#19215](https://github.com/arendst/Tasmota/issues/19215)
+- Berry extend `range(lower, upper, incr)` to arbitrary increment [#19120](https://github.com/arendst/Tasmota/issues/19120)
+- Berry updated syntax highlighting plugin for VSCode [#19123](https://github.com/arendst/Tasmota/issues/19123)
+- Berry `mqtt.publish` now distinguishes between `string` and `bytes` [#19196](https://github.com/arendst/Tasmota/issues/19196)
+- Matter support for temperature in Fahrenheit (`SetOption8 1`) [#18987](https://github.com/arendst/Tasmota/issues/18987)
+- Matter improve responsiveness [#19002](https://github.com/arendst/Tasmota/issues/19002)
+- Matter improve latency for remote commands [#19072](https://github.com/arendst/Tasmota/issues/19072)
+- Matter improve latency for single attribute reads and single commands [#19158](https://github.com/arendst/Tasmota/issues/19158)
+- Matter increased polling frequency for local switches/occupancy [#19242](https://github.com/arendst/Tasmota/issues/19242)
### Fixed
-- ESP8266 no update on Energy Export Active regression from v12.3.1.3
-- NovaSDS GUI values [#18444](https://github.com/arendst/Tasmota/issues/18444)
-- LED PWM ac_dimmer curve was wrongly applied instead of Gamma regression from v12.2.0.5 [#18666](https://github.com/arendst/Tasmota/issues/18666)
-- Shutter bootloop using more than 4 shutters [#18673](https://github.com/arendst/Tasmota/issues/18673)
-- Inverted shutter now reflect status also in WEBGUI and several minor fixes to make "inverted" consistant [#18701](https://github.com/arendst/Tasmota/issues/18701)
-- Interaction of ``SetOption92``, ``VirtualCT``, and ``RGBWWTable`` [#18768](https://github.com/arendst/Tasmota/issues/18768)
-- Freeze BMP readings before deepsleep [#18720](https://github.com/arendst/Tasmota/issues/18720)
-- NeoPool NPFiltration switch result [#18871](https://github.com/arendst/Tasmota/issues/18871)
-- ESP32 Partition_Manager.tapp
-- ESP32 InfluxDb initial connection delays using HTTPClient [#18015](https://github.com/arendst/Tasmota/issues/18015)
-- ESP32 AIThinker webcam issues [#18652](https://github.com/arendst/Tasmota/issues/18652)
-- ESP32 SPI initialization for MFRC522 [#18711](https://github.com/arendst/Tasmota/issues/18711)
-- ESP32 Neopixel busy time adjustment [#18723](https://github.com/arendst/Tasmota/issues/18723)
-- HASPmota event when value is non-integer [#18229](https://github.com/arendst/Tasmota/issues/18229)
-- Berry a rare condition when a GC causes a memory corruption
-- Berry rules for string comparisons [#18464](https://github.com/arendst/Tasmota/issues/18464)
-- Berry parser error with upvals in closures [#18902](https://github.com/arendst/Tasmota/issues/18902)
-- Zigbee attributes handling in Berry mapping [#18747](https://github.com/arendst/Tasmota/issues/18747)
-- Zigbee regression with ``SetOption101`` [#18884](https://github.com/arendst/Tasmota/issues/18884)
-- Matter fabric provisioning from CASE session for iOS 16.5 [#18709](https://github.com/arendst/Tasmota/issues/18709)
+- Berry Walrus Operator [#18982](https://github.com/arendst/Tasmota/issues/18982)
+- MiElHVAC power commands regression from v12.4.0.1 [#18923](https://github.com/arendst/Tasmota/issues/18923)
+- Zero cross dimmer minimum interrupt time [#19211](https://github.com/arendst/Tasmota/issues/19211)
+- Fade would fail when the difference between start and target would be too small [#19248](https://github.com/arendst/Tasmota/issues/19248)
+- Inverted shutter [#19243](https://github.com/arendst/Tasmota/issues/19243)
+- ESP8266 SPI initialization for scripter, filesystem and MFRC522 [#19209](https://github.com/arendst/Tasmota/issues/19209)
+- Matter support for large atribute responses [#19252](https://github.com/arendst/Tasmota/issues/19252)
+- Matter auto-configuration Relay indices [#19255](https://github.com/arendst/Tasmota/issues/19255)
+
+### Removed
+- Support for ESP32-C3 with chip revision below 3 (old development boards)
diff --git a/TEMPLATES.md b/TEMPLATES.md
index 9160d0206..4cb82b786 100644
--- a/TEMPLATES.md
+++ b/TEMPLATES.md
@@ -5,7 +5,7 @@
# Templates
-Find below the available templates as of June 2023. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
+Find below the available templates as of August 2023. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
## Adapter Board
```
@@ -226,6 +226,7 @@ MS-108 In-Wall {"NAME":"MS-108","GPIO":[0,0,0,0,161,160,0,0,224,0,
MS-108WR RF Curtain Module {"NAME":"MS-108WR","GPIO":[1,1,1,544,32,33,1,1,225,32,224,1,1,1],"FLAG":0,"BASE":18}
Nous {"NAME":" Smart WiFi Curtain Module L12T","GPIO":[1,160,1,161,225,224,1,1,544,1,32,1,1,1],"FLAG":0,"BASE":18}
QS-WIFI-C01-RF {"NAME":"Shutter-QS-WIFI-C01","GPIO":[0,0,1,0,288,0,0,0,32,33,224,225,0,0],"FLAG":0,"BASE":18}
+wesmartify Smart Home Aktor Shut It TASMOTA {"NAME":"ITzy","GPIO":[0,0,0,0,225,224,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
```
## Curtain Switch
@@ -257,10 +258,11 @@ Zemismart Backlit {"NAME":"WF-CS01","GPIO":[544,227,289,34,226,161,0,
## DIN Relay
```
-CurrySmarter Power Monitoring 30A {"NAME":"30A Breaker","GPIO":[0,0,0,0,7584,224,0,0,2720,32,2656,2624,320,0],"FLAG":0,"BASE":18}
+CurrySmarter Power Monitoring 30A {"NAME":"30A Breaker on Led","GPIO":[0,0,0,0,7584,224,0,0,2720,32,2656,2624,320,0],"FLAG":0,"BASE":18}
EARU DIN Circuit Breaker 1P 32A/50A {"NAME":"RDCBC-1P","GPIO":[320,0,0,0,0,0,0,0,32,224,0,0,0,0],"FLAG":0,"BASE":18}
Hoch Circuit Breaker 1P {"NAME":"HOCH ZJSB9","GPIO":[32,0,0,0,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
Ketotek Single Phase Energy Monitor {"NAME":"Ketotek KTEM06","GPIO":[0,2272,0,2304,0,0,0,0,0,0,320,0,32,0],"FLAG":0,"BASE":54}
+Martin Jerry 30A Circuit Breaker {"NAME":"30A Breaker","GPIO":[0,0,0,0,7584,224,0,0,2720,32,2656,2624,320,0],"FLAG":0,"BASE":18}
OpenEnergyMonitor WiFi MQTT Thermostat {"NAME":"MQTT-RELAY","GPIO":[32,0,1,0,0,224,0,0,0,0,0,0,320,0],"FLAG":0,"BASE":18}
RocketController ASTRA Controller {"NAME":"ASTRA R4A4","GPIO":[1,1,1,1,576,1,1,1,480,1,1,1,3232,3200,1,1,0,640,608,1,0,224,225,1152,0,0,0,0,227,226,160,161,162,0,0,163],"FLAG":0,"BASE":1}
Shelly Pro 1 {"NAME":"Shelly Pro 1","GPIO":[0,1,0,1,768,0,0,0,672,704,736,0,0,0,5600,6214,0,0,0,5568,0,0,0,0,0,0,0,0,0,0,0,32,4736,0,160,0],"FLAG":0,"BASE":1,"CMND":"AdcParam1 2,10000,10000,3350"}
@@ -295,6 +297,7 @@ Adafruit QT Py ESP32 Pico {"NAME":"QTPy ESP32 Pico","GPIO":[32,3200,0,3232,1,
AZ-Envy Environmental Sensor {"NAME":"AZ Envy","GPIO":[32,0,320,0,640,608,0,0,0,0,0,0,0,4704],"FLAG":0,"BASE":18}
Coiaca Tasmota {"NAME":"AWR01t","GPIO":[576,1,1,128,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
Coiaca Tasmota Development Board AWR12 {"NAME":"AWR12t","GPIO":[320,1,1,1,1,1,0,0,1,1,1,1,1,1],"FLAG":0,"BASE":18}
+Dasduino CONNECTPLUS {"NAME":"Dasduino CONNECT","GPIO":[1,1,1376,1,640,608,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":18}
Dasduino CONNECTPLUS {"NAME":"Dasduino CONNECTPLUS","GPIO":[32,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,640,608,1,0,1,1,1,0,0,0,0,1376,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
Espoir Rev 1.0.0 PoE+ {"NAME":"Espoir","GPIO":[0,0,1,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,5568,5600,1,7968,1,1,1,1],"FLAG":0,"BASE":1}
KinCony 128 Channel Controller {"NAME":"KC868-A128","GPIO":[0,1,0,1,609,640,1,1,1,3232,3200,641,608,1,5600,0,0,1,0,5568,0,1,0,0,0,0,0,0,0,0,4705,4707,4706,0,0,4704],"FLAG":0,"BASE":1}
@@ -392,7 +395,7 @@ Shelly Vintage 7W 750lm 2700k {"NAME":"Shelly Vintage","GPIO":[0,0,0,0,416,0,0,
Shelly Vintage 7W 750lm 2700k {"NAME":"Shelly Vintage","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
SmartDGM 9W 806lm {"NAME":"L-WB9W1","GPIO":[0,0,0,0,0,416,0,0,160,0,0,0,0,0],"FLAG":0,"BASE":18}
Smitch 10W 6500K {"NAME":"Smitch Ambience SB-0110","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
-Smitch 10W 6500K {"NAME":"Smitch Ambience SB-0110","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
+Smitch 10W 6500K {"NAME":"Smitch 10W 6500K Dimmable Bulb (SB0110 - E27)","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":1}
TCP Smart 806lm Warm White {"NAME":"TCP Smart Clas","GPIO":[0,0,0,0,0,0,0,0,0,416,0,0,0,0],"FLAG":0,"BASE":1}
TCP Smart 810lm Filament {"NAME":"TCP Filament","GPIO":[0,0,0,0,0,0,0,0,0,0,448,0,0,0],"FLAG":0,"BASE":18}
TCP Smart 810lm Filament {"NAME":"TCP Filament","GPIO":[0,0,0,0,0,0,0,0,0,0,448,0,0,0],"FLAG":0,"BASE":18}
@@ -605,6 +608,7 @@ AI Universal Remote {"NAME":"YTF IR Controller","GPIO":[1,1,1,1,320,108
AI Universal Remote Control {"NAME":"LQ-08","GPIO":[0,0,0,0,0,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
Alfawise KS1 {"NAME":"KS1","GPIO":[1,1792,32,1824,32,1088,0,0,320,0,1056,0,0,4704],"FLAG":0,"BASE":62}
Antsig Universal Remote Controller {"NAME":"Antsig Smart Wi-Fi IR","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
+Athom {"NAME":"Athom_IR_Remote","GPIO":[32,0,0,0,1056,1088,0,0,0,576,0,0,0,0],"FLAG":0,"BASE":18}
Automate Things IR Bridge {"NAME":"AT-IRBR-1.0","GPIO":[0,0,0,0,1056,1088,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"Module 0"}
Automate Things IR Bridge {"NAME":"AT-IRBR-1.4","GPIO":[1088,0,0,0,1056,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"Module 0"}
auvisio S06 {"NAME":"NX-4519-675","GPIO":[0,0,0,0,288,1088,0,0,0,0,1056,0,0,0],"FLAG":0,"BASE":18}
@@ -710,6 +714,7 @@ ZJ-WF-ESP-A v1.1 {"NAME":"RGB2","GPIO":[0,0,0,0,0,0,0,0,417,416,418,
## LED Strip
```
Aldi Casalux RGB {"NAME":"DW-RGB-WI01","GPIO":[1088,0,0,0,416,0,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
+ARLEC 5m Colour Changing "Not available"
Arlec Smart 1m CCT LED Strip Light {"NAME":"ALD155HA","GPIO":[0,0,1088,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
Arlec Smart 2m LED Colour Changing Strip Light {"NAME":"Arlec_Light_Strip","GPIO":[1,1,1088,1,416,419,1,1,417,420,418,0,1,1],"FLAG":0,"BASE":18}
Arlec Smart 5m White & Colour Changing {"NAME":"ALD556HA","GPIO":[0,0,1088,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
@@ -794,7 +799,7 @@ Deta 18W 1900lm T8 Tube {"NAME":"DETA Smart LED","GPIO":[0,0,0,0,0,0,0,0,0,
electriQ MOODL Ambiance Lamp {"NAME":"ElectriQ MOODL","GPIO":[0,4640,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
Gosund Table Lamp {"NAME":"Gosund LB3","GPIO":[0,0,0,0,0,418,0,0,417,419,0,416,0,0],"FLAG":0,"BASE":18}
Hama Wall Light Square, 10 cm, IP 44 {"NAME":"Hama Wifi Wall Light","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,1],"FLAG":0,"BASE":18}
-HiFree Table Lamp {"NAME":"TuyaMCU","GPIO":[108,1,107,1,1,1,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":18}
+HiFree Table Lamp {"NAME":"TuyaMCU","GPIO":[2304,1184,2272,1184,1184,1184,1184,1184,1184,1184,1184,1184,1184,0],"FLAG":0,"BASE":18}
Hugoai Table Lamp {"NAME":"HG02","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,20 | TuyaMCU 26,21 | TuyaMCU 21,22 | TuyaMCU 23,23 | TuyaMCU 24,24 | DimmerRange 34,1000"}
Iwoole Table Lamp {"NAME":"GLOBELAMP","GPIO":[0,0,0,0,419,0,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
Lepro Bedroom Lamp {"NAME":"Lepro 902101-US","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,20 | TuyaMCU 26,21 | TuyaMCU 21,22 | TuyaMCU 23,23 | TuyaMCU 24,24 | DimmerRange 34,1000"}
@@ -866,6 +871,7 @@ Xystec USB3.0 4 Port Hub {"NAME":"Xystec USB Hub","GPIO":[0,0,0,0,224,0,0,0,
DT-Light ESP8285 Lighting {"NAME":"DMP-L1","GPIO":[1,1,0,1,1,1,0,0,1,1,1,1,1,1],"FLAG":0,"BASE":18}
ESP-01D {"NAME":"ESP-01D","GPIO":[1,1,0,1,1,0,0,0,1,0,1,0,0,0],"FLAG":0,"BASE":18}
ESP-01S {"NAME":"ESP-01","GPIO":[1,1,1,1,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
+ESP-02S TYWE2S Replacement {"NAME":"ESP-02S","GPIO":[1,1,1,1,1,1,0,0,1,1,1,0,0,1],"FLAG":0,"BASE":18}
ESP-12 {"NAME":"ESP-12","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,1],"FLAG":0,"BASE":18}
ESP-15F {"NAME":"ESP-15F","GPIO":[1,1,0,1,1,1,0,0,0,544,0,0,0,0],"FLAG":0,"BASE":18}
ESP-M2 {"NAME":"ESP-M2","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,0,1],"FLAG":0,"BASE":18}
@@ -877,7 +883,6 @@ M5Stack M5Stamp Pico {"NAME":"M5Stamp Pico","GPIO":[1,1,0,1,0,0,0,0,0,0,
MTools 16 Channel ESP32 Relay Driver 5V DC {"NAME":"16ch Board","GPIO":[1,1,237,1,232,1,1,1,228,231,1,1,233,230,234,235,0,238,239,236,0,224,227,226,0,0,0,0,229,225,1,1,1,0,0,1],"FLAG":0,"BASE":1}
Shelly Universal Input/Output {"NAME":"Shelly Uni","GPIO":[320,0,0,0,225,1216,0,0,192,193,194,224,0,4864],"FLAG":0,"BASE":18}
Sinilink MODBUS Interface {"NAME":"XY-WFPOW","GPIO":[0,8768,544,8800,32,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
-TYWE2S Replacement {"NAME":"ESP-02S","GPIO":[1,1,1,1,1,1,0,0,1,1,1,0,0,1],"FLAG":0,"BASE":18}
```
## Motion Sensor
@@ -946,6 +951,7 @@ Ledvance Smart+ 16A {"NAME":"LEDVANCE Smart Wifi Outdoor Plug","GPIO":[
Ledvance Smart+ Compact {"NAME":"LEDVANCE SMART+ Compact Outdoor Plug ","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
LSC Dual Socket {"NAME":"LSC NFL-022","GPIO":[0,0,0,0,320,32,0,0,0,224,225,0,0,0],"FLAG":0,"BASE":18}
LSC Dual Socket {"NAME":"LSC Outdoor Dual Socket","GPIO":[320,0,0,32,8673,8672,0,0,0,0,8674,0,8675,0],"FLAG":0,"BASE":18}
+Luminea 16A {"NAME":"NX-4655-675","GPIO":[0,0,0,0,320,576,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Luminea 2 Outlet {"NAME":"Luminea","GPIO":[0,0,0,0,225,320,0,0,224,321,32,0,0,1],"FLAG":0,"BASE":18}
Luminea NX-4458 {"NAME":"Luminea NX4458","GPIO":[32,0,0,0,2688,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":65}
Master {"NAME":"Master_IOT-EXTPLUG","GPIO":[32,1,0,1,1,0,0,0,224,288,0,0,0,0],"FLAG":0,"BASE":1}
@@ -968,6 +974,7 @@ Signstek EOP03-EU {"NAME":"Signstek EOP03","GPIO":[0,0,0,0,320,321,0,
SK03 {"NAME":"SK03 Outdoor","GPIO":[32,0,0,0,2688,2656,0,0,2624,321,320,224,0,0],"FLAG":0,"BASE":57}
STITCH {"NAME":"STITCH 35556","GPIO":[1,1,1,1,225,321,0,0,224,320,32,1,1,0],"FLAG":0,"BASE":18}
Suraielec 40A Heavy Duty {"NAME":"Suraielec UBTW01B","GPIO":[0,0,0,0,544,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
+Tate Guard ZUM-26EU-X Dual {"NAME":"Tate Guard","GPIO":[0,0,0,0,224,288,0,0,225,288,32,0,0,0],"FLAG":0,"BASE":18}
Teckin SS31 {"NAME":"Teckin SS31","GPIO":[1,1,1,1,320,321,1,1,224,32,225,1,1,1],"FLAG":0,"BASE":18}
Teckin SS33 {"NAME":"Teckin SS31","GPIO":[0,0,0,226,320,321,0,0,224,32,225,0,0,1],"FLAG":0,"BASE":18}
Teckin SS42 {"NAME":"Teckin SS42","GPIO":[0,0,0,0,320,321,0,0,224,32,225,0,0,0],"FLAG":0,"BASE":18}
@@ -1069,6 +1076,7 @@ Avatto 10A {"NAME":"Avatto NAS-WR01W 10A 2021-12","GPIO":[0,0,
Avatto JH-G01E {"NAME":"AVATTO JH-G01E","GPIO":[0,3072,0,3104,0,0,0,0,32,320,224,0,0,0],"FLAG":0,"BASE":41}
Avatto OT06 16A {"NAME":"Avatto OT06","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
Avatto OT08 {"NAME":"Avatto OT08","GPIO":[416,0,418,0,417,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":18}
+Avidsen Home {"NAME":"Avidsen HomePlug","GPIO":[0,0,0,0,224,35,0,0,289,288,0,0,0,0],"FLAG":0,"BASE":18}
Awow X5P {"NAME":"Awow","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
AWP02L-N {"NAME":"AWP02L-N","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
AzpenHome Smart {"NAME":"Socket2Me","GPIO":[288,1,1,1,225,1,0,0,224,1,32,1,1,0],"FLAG":0,"BASE":18}
@@ -1137,6 +1145,7 @@ Coosa SP1 {"NAME":"COOSA SP1","GPIO":[321,1,320,1,0,2720,0,0,
CooWoo {"NAME":"CooWoo AW01","GPIO":[0,0,0,0,288,160,0,0,256,0,0,0,0,0],"FLAG":0,"BASE":18}
CozyLife HomeKit 16A {"NAME":"CozyLife 16A","GPIO":[0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,2720,0,0,2656,576,0,224,2624,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
CrazyLynX WiFi {"NAME":"CrazyLynX","GPIO":[0,0,0,0,321,320,0,0,224,32,0,0,0,4704],"FLAG":0,"BASE":18}
+Crest Single Power Adaptor {"NAME":"SHSPM1","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":52}
Crest Smart Home Single Power Adaptor with 2 USB {"NAME":"Medion","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":52}
CurrySmarter 16A {"NAME":"CurrySmarter 16A","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
CurrySmarter 16A Power Monitoring {"NAME":"Currysmarter XH-TW2P","GPIO":[0,0,0,2624,32,320,0,0,224,2720,2656,0,0,0],"FLAG":0,"BASE":18}
@@ -1189,8 +1198,6 @@ Etekcity 15A {"NAME":"ESW15-US","GPIO":[0,0,0,0,0,224,0,0,2656,2
Etekcity 8A {"NAME":"ESW01-USA","GPIO":[0,0,0,0,224,544,0,0,2656,2688,32,2592,288,0],"FLAG":0,"BASE":55}
EU3S {"NAME":"AWOW BSD33","GPIO":[0,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":18}
Eva Logik {"NAME":"EVA LOGIK Plug","GPIO":[1,32,1,1,1,1,0,0,1,288,224,1,1,0],"FLAG":0,"BASE":18}
-EZPlug V1 OpenSource {"NAME":"EZPlug V1","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":1}
-EZPlug+ V1 {"NAME":"EZPlug+ V1","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":1}
Febite {"NAME":"Febite","GPIO":[320,0,0,0,0,2720,0,0,224,32,2656,0,0,0],"FLAG":0,"BASE":1}
Feit Electric PLUG/WIFI {"NAME":"Feit Wifi Plug","GPIO":[0,0,0,320,0,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
FK-PW901U {"NAME":"FK-PW901U","GPIO":[320,1,1,1,1,226,0,0,224,32,227,225,1,0],"FLAG":0,"BASE":18}
@@ -1311,6 +1318,7 @@ JuoYou 16A {"NAME":"Juoyou ZY-OYD","GPIO":[0,0,0,32,2720,2656,
JVMAC-EU01 {"NAME":"JVMAC","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
Kaforto KW-US-801 {"NAME":"Kaforto US-801","GPIO":[32,576,0,227,2720,2656,0,0,2624,225,224,226,0,0],"FLAG":0,"BASE":18}
Kauf esphome {"NAME":"KAUF Plug","GPIO":[576,0,320,0,224,2720,0,0,2624,32,2656,0,0,0],"FLAG":0,"BASE":18}
+Kauf esphome {"NAME":"Kauf Plug","GPIO":[0,320,0,32,2720,2656,0,0,321,224,2624,0,0,0],"FLAG":0,"BASE":18}
Kimire S12 {"NAME":"Kimire S12","GPIO":[1,1,1,32,1,1,0,0,1,320,224,1,1,0],"FLAG":0,"BASE":18}
King-Link KL-US-WF002 {"NAME":"Kinglink-plug","GPIO":[0,0,0,0,0,224,0,0,288,32,0,0,0,0],"FLAG":0,"BASE":18}
Kisslink SP200 {"NAME":"Kisslink SP200","GPIO":[0,0,0,0,320,321,0,0,224,32,0,0,0,4704],"FLAG":0,"BASE":18}
@@ -1408,8 +1416,8 @@ NGS Loop Track 16A {"NAME":"LOOP","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224
Nightlight and AC Outlet {"NAME":"SWN03","GPIO":[32,0,0,0,0,0,1,1,416,0,0,224,0,0],"FLAG":0,"BASE":18}
Nishica SM-PW701I {"NAME":"SM-PW701I","GPIO":[1,1,1,1,1,1,1,1,224,288,32,1,1,1],"FLAG":0,"BASE":18}
Nivian {"NAME":"Nivian Smart Socket","GPIO":[0,0,320,0,0,2688,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":18}
-Nous 16A {"NAME":"NOUS A1T","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
Nous A1 {"NAME":"NOUS A1","GPIO":[320,0,576,0,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
+Nous A1T 16A {"NAME":"NOUS A1T","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
NX-SM112 {"NAME":"NX-SM112v3","GPIO":[0,0,0,0,2720,2656,0,0,576,32,2592,224,0,0],"FLAG":0,"BASE":45}
NX-SM200 {"NAME":"NX-SM200","GPIO":[320,0,0,0,0,2720,0,0,224,32,2656,321,2624,0],"FLAG":0,"BASE":18}
NX-SM210 {"NAME":"NX-SM210","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
@@ -1417,7 +1425,7 @@ NX-SM223 {"NAME":"Smart Thurmm","GPIO":[0,32,0,0,0,0,0,0,0,3
Oakter Oak Plug Plus 16A {"NAME":"Oakter OakPlug Plus","GPIO":[0,0,0,0,224,0,0,0,544,320,0,0,0,0],"FLAG":0,"BASE":18}
Oakter OakPlug Mini 10A {"NAME":"Oakter OakPlug Mini","GPIO":[0,0,0,0,224,0,0,0,544,320,0,0,0,0],"FLAG":0,"BASE":18}
Oakter OakPlug Plus (old) {"NAME":"Oakter OakPlug Plus (old)","GPIO":[0,0,0,0,224,0,0,0,0,320,0,0,544,0],"FLAG":0,"BASE":18}
-Obi Stecker {"NAME":"OBI Socket","GPIO":[1,1,0,1,288,224,0,0,290,1,32,0,1,4704],"FLAG":0,"BASE":51}
+Obi Stecker {"NAME":"Euromate","GPIO":[1,1,1,1,288,224,1,1,289,1,32,1,1,1],"FLAG":0,"BASE":18}
Obi Stecker 2 {"NAME":"OBI Socket 2","GPIO":[0,0,0,0,224,32,0,0,320,289,0,0,0,0],"FLAG":0,"BASE":61}
OFFONG 16A {"NAME":"OFFONG P1","GPIO":[0,32,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
Oittm Smart {"NAME":"Oittm","GPIO":[0,0,0,0,224,320,0,0,32,0,0,0,0,0],"FLAG":0,"BASE":1}
@@ -1437,6 +1445,7 @@ OxaOxe NX-SP202 v2 {"NAME":"oxaoxe-dold","GPIO":[320,0,0,2624,32,2720,
OZWI Smart {"NAME":"OZWI Smart Plug","GPIO":[0,0,0,0,288,0,0,0,224,32,544,0,0,0],"FLAG":0,"BASE":18}
Panamalar Nightlight {"NAME":"Panamalar EWN0","GPIO":[32,0,0,0,0,0,1,1,416,0,0,224,0,0],"FLAG":0,"BASE":18}
Panamalar NX-SM200 {"NAME":"NX-SM200","GPIO":[0,0,0,0,320,2720,0,0,2624,32,2656,224,0,4704],"FLAG":0,"BASE":18}
+Polycam Hohm Lanre 16A {"NAME":"SLV1910001","GPIO":[0,0,0,32,2720,2656,0,0,2624,576,224,0,0,0],"FLAG":0,"BASE":18}
Positivo PPW1000 {"NAME":"PPW1000","GPIO":[0,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
Positivo Max {"NAME":"PPW1600","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":55}
PowerAdd BIE0091 {"NAME":"BIE0091","GPIO":[32,0,0,0,0,0,0,0,416,0,0,224,0,0],"FLAG":0,"BASE":18}
@@ -1543,6 +1552,8 @@ Teckin SP27 {"NAME":"Teckin SP27","GPIO":[320,1,1,1,1,1,0,0,1,3
Tellur 16A 2 Ports {"NAME":"Tellur WiFi Smart Socket","GPIO":[0,0,0,2624,96,2688,0,0,224,33,2656,225,0,0],"FLAG":0,"BASE":18}
Tellur 1USB 10A {"NAME":"Tellur TTL331021","GPIO":[0,0,544,0,288,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Tflag NX-SM100 {"NAME":"NX-SM100","GPIO":[320,0,0,0,0,2720,0,0,224,32,2656,321,2624,0],"FLAG":0,"BASE":18}
+TH3D EZPlug V1 {"NAME":"EZPlug V1","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":1}
+TH3D EZPlug+ V1 {"NAME":"EZPlug+ V1","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":1}
TikLok TL650 {"NAME":"TikLok Mini","GPIO":[0,0,0,0,321,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Timethinker C338 {"NAME":"C338","GPIO":[32,0,1,0,0,0,0,0,224,288,1,0,0,0],"FLAG":0,"BASE":1}
Timethinker TK04 {"NAME":"TimethinkerEU","GPIO":[1,1,1,1,32,1,0,0,1,288,224,1,0,0],"FLAG":0,"BASE":18}
@@ -1562,6 +1573,7 @@ Treatlife Dimmable {"NAME":"DP20","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,
Treatlife Smart {"NAME":"Treatlife SK50","GPIO":[1,1,1,1,320,576,1,1,224,1,32,1,1,1],"FLAG":0,"BASE":18}
Tuya 16A Nightlight {"NAME":"Nightlight","GPIO":[225,0,320,0,226,227,0,0,34,64,0,224,0,0],"FLAG":0,"BASE":18}
U10 Series {"NAME":"WIFI-Socket","GPIO":[1,32,1,1,1,1,1,1,1,320,224,1,1,4704],"FLAG":0,"BASE":18}
+Ucomen Night Light {"NAME":"UCOMEN Plug","GPIO":[0,0,0,0,544,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
UltraBrite {"NAME":"UltraBrite Smart Plug","GPIO":[1,1,1,1,288,289,1,1,224,32,1,1,1,1],"FLAG":0,"BASE":18}
Ultralink UL-P01W {"NAME":"UL-P01W","GPIO":[0,288,0,32,2720,2656,0,0,2624,544,224,0,0,0],"FLAG":0,"BASE":18}
Unlocked Automation 15A {"NAME":"UA 100","GPIO":[0,0,0,0,320,321,0,0,224,32,0,0,0,1],"FLAG":0,"BASE":18}
@@ -1613,7 +1625,7 @@ XS-A18 {"NAME":"XS-A18","GPIO":[416,0,417,0,0,418,0,0,0,32
XS-A23 {"NAME":"XS-A23","GPIO":[320,1,0,2624,32,2720,0,0,0,33,2656,224,225,0],"FLAG":0,"BASE":45}
XS-SSA01 {"NAME":"XS-SSA01","GPIO":[1,0,0,1,0,0,0,0,320,32,1,224,1,0],"FLAG":0,"BASE":18}
XS-SSA01 v2 {"NAME":"XS-SSA01","GPIO":[1,32,1,1,1,1,0,0,320,1,1,224,1,0],"FLAG":0,"BASE":18}
-XS-SSA05 {"NAME":"XS-SSA05","GPIO":[257,1,1,2624,1,2688,0,0,224,32,2656,258,1,4704],"FLAG":0,"BASE":18}
+XS-SSA05 {"NAME":"XS-SSA05","GPIO":[320,0,0,2624,544,2688,0,0,224,32,2656,0,0,4704],"FLAG":0,"BASE":18}
XS-SSA06 {"NAME":"XS-SSA06","GPIO":[416,0,417,0,0,418,0,0,0,64,0,224,0,0],"FLAG":0,"BASE":18}
Yagala SWA9 {"NAME":"SWA9","GPIO":[0,0,0,0,288,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
Yelomin JH-G01E {"NAME":"Yelomin","GPIO":[0,3072,0,3104,0,0,0,0,32,320,224,0,0,0],"FLAG":0,"BASE":18}
@@ -1706,12 +1718,13 @@ Konesky Type 1 {"NAME":"Konesky","GPIO":[0,0,0,0,228,225,0,0,227,3
Koogeek KLOE4 {"NAME":"Koogeek KLOE4","GPIO":[0,320,0,32,225,224,0,0,226,227,228,0,0,4704],"FLAG":0,"BASE":18}
Larkkey 4AC 4USB {"NAME":"LARKKEY Strip","GPIO":[0,544,0,32,225,224,0,0,226,227,228,0,0,0],"FLAG":0,"BASE":18}
LeFun SK2 {"NAME":"LeFun SK2","GPIO":[0,0,0,32,225,224,0,0,226,227,228,0,0,0],"FLAG":0,"BASE":18}
+Lidl Silvercrest Zigbee {"NAME":"Lidl Silvercrest HG06338","GPIO":[0,288,0,0,225,226,0,0,32,224,576,0,0,0],"FLAG":0,"BASE":18}
LITEdge Smart Power Strip {"NAME":"LITEEdge Power Strip","GPIO":[227,0,0,0,288,289,0,0,224,32,225,226,228,0],"FLAG":0,"BASE":18}
Luminea 3AC+4USB 16A {"NAME":"Luminea-NX4473","GPIO":[0,320,0,32,225,224,0,0,0,226,227,0,0,0],"FLAG":0,"BASE":18}
Maxcio ZLD-34EU-W {"NAME":"MAXCIO","GPIO":[0,320,0,32,225,224,0,0,0,226,227,0,0,4704],"FLAG":0,"BASE":18}
Merkury Innovations Smart Surge {"NAME":"Merkury Power Strip MIC-SW002-199L","GPIO":[288,0,289,0,228,32,0,0,225,224,226,0,259,0],"FLAG":0,"BASE":18}
Merkury Innovations SmartSurge {"NAME":"Merkury MI-SW001","GPIO":[288,0,289,0,228,32,0,0,225,224,226,0,227,0],"FLAG":0,"BASE":18}
-Meross 4AC 4USB {"NAME":"HamaStrip","GPIO":[0,544,0,32,225,224,0,0,226,227,228,0,0,0],"FLAG":0,"BASE":18}
+Meross 4AC 4USB {"NAME":"MSS425F","GPIO":[0,544,0,32,225,224,0,0,226,227,260,0,0,0],"FLAG":0,"BASE":18}
Meross MSS425 {"NAME":"Meross MSS425","GPIO":[260,0,0,0,320,0,0,0,224,32,225,226,259,0],"FLAG":0,"BASE":18}
Mirabella Genio 4 Outlet Power Board with 2 USB {"NAME":"Genio i002340","GPIO":[320,0,0,0,224,225,0,0,226,32,227,228,0,0],"FLAG":0,"BASE":18}
Mirabella Genio Powerboard {"NAME":"Genio Powerboa","GPIO":[224,288,0,0,226,225,0,0,228,32,229,227,0,0],"FLAG":0,"BASE":18}
@@ -1742,6 +1755,7 @@ Tellur 3AC 4USB {"NAME":"Tellur","GPIO":[0,320,0,32,225,224,0,0,0,2
Tessan {"NAME":"TESSAN A4L-BK","GPIO":[0,0,0,227,226,0,0,0,224,0,225,0,0,0],"FLAG":0,"BASE":18}
Tonbux SM-SO301-U {"NAME":"Tonbux SM-SO30","GPIO":[320,0,0,0,256,0,0,0,258,257,259,0,228,0],"FLAG":0,"BASE":18}
Useelink {"NAME":"Useelink","GPIO":[288,0,0,321,256,32,0,0,258,257,259,0,228,0],"FLAG":0,"BASE":18}
+Useelink 4AC 2USB {"NAME":"306 Power Strip","GPIO":[576,0,576,291,259,32,0,0,257,258,256,0,228,0],"FLAG":0,"BASE":18}
Vivitar HA-1007 {"NAME":"Vivitar HA-1007 Power Strip","GPIO":[544,0,0,0,227,228,0,0,225,224,226,0,35,1],"FLAG":0,"BASE":18}
Vivitar HA-1007-AU {"NAME":"HA-1007-AU","GPIO":[320,32,0,322,256,321,0,0,258,257,259,0,228,0],"FLAG":0,"BASE":18}
wesmartify essentials 3-socket 2 USB {"NAME":"Essentials Smart Home 3-socket USB Power Strip","GPIO":[0,0,0,0,544,226,0,0,224,32,225,0,0,0],"FLAG":0,"BASE":18}
@@ -1883,6 +1897,8 @@ iQtech 9W 800lm {"NAME":"iQ-Tech RGBCCT 9W 800LM","GPIO":[0,0,0,0,4
Jeeo TF-QPZ13 800lm {"NAME":"Jeeo","GPIO":[0,0,0,0,2912,416,0,0,417,2976,2944,0,0,0],"FLAG":0,"BASE":18}
Julun JL-021 5W Candle {"NAME":"E14 RGBCCT","GPIO":[0,0,0,0,419,420,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
Kauf esphome 10W {"NAME":"Kauf Bulb","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
+Kauf esphome A15 5W {"NAME":"Kauf Bulb","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
+Kauf esphome A19 7W {"NAME":"Kauf Bulb","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
KHSUIN BR30 13W 1300lm {"NAME":"KHSUIN 13W BR30","GPIO":[0,0,0,0,416,420,0,0,417,419,418,0,0,0],"FLAG":0,"BASE":18}
Kogan 10W 1050lm {"NAME":"Kogan RGB+CCT","GPIO":[1,1,1,0,416,419,1,1,417,452,418,1,1,1],"FLAG":0,"BASE":18}
Kohree 600lm {"NAME":"Kohree VHP560","GPIO":[0,0,0,0,416,420,0,0,417,419,418,0,0,0],"FLAG":0,"BASE":18}
@@ -2133,6 +2149,7 @@ Nedis 6W 470lm {"NAME":"nedis Bulb","GPIO":[0,0,0,0,416,419,0,0,41
Nedis A60 800lm {"NAME":"Nedis RGBW","GPIO":[0,0,0,0,2912,416,0,0,0,2976,2944,0,0,4704],"FLAG":0,"BASE":18}
Nedis C10 350lm {"NAME":"Nedis WIFILC10","GPIO":[0,0,0,0,418,416,0,0,419,417,420,0,0,4704],"FLAG":0,"BASE":18}
Nedis PAR16 330lm {"NAME":"Nedis GU10","GPIO":[0,0,0,0,418,416,0,0,419,417,420,0,0,0],"FLAG":0,"BASE":18}
+NGteco {"NAME":"NGTECO L100","GPIO":[0,0,0,0,0,418,0,0,417,0,416,419,0,0],"FLAG":0,"BASE":18}
Novostella UT55506 10W 1050lm {"NAME":"Novostella 10W","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
Onforu 7W 700lm {"NAME":"Onforu RGBW","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
Orbecco 5W 400lm {"NAME":"Orbecco Bulb","GPIO":[0,0,0,0,0,0,0,0,3008,0,3040,0,0,0],"FLAG":0,"BASE":27}
@@ -2164,6 +2181,7 @@ Teckin 7.5W 800lm {"NAME":"Teckin SB60","GPIO":[0,0,0,0,416,419,0,0,4
Teckin SB50 800lm {"NAME":"Teckin SB50","GPIO":[0,0,0,0,419,0,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
Teckin SB50 v2 800lm {"NAME":"Teckin SB50","GPIO":[0,0,0,0,416,0,0,0,417,419,418,0,0,0],"FLAG":0,"BASE":18}
Teckin SB51 800lm {"NAME":"Teckin SB51","GPIO":[0,0,0,0,419,0,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
+TH3D EZBulb V1 {"NAME":"EZBulb V1","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
TikLOk TL530 A19 7.5W 800lm {"NAME":"TikLOk WW-CW-L","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":18}
TVLive 7.5W 800lm {"NAME":"TVLIVE RGBCW","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
Utorch LE7 600lm {"NAME":"Utorch LE7","GPIO":[0,0,0,0,0,417,0,0,418,0,419,416,0,0],"FLAG":0,"BASE":18}
@@ -2573,9 +2591,9 @@ Sonoff TX T3 EU 2 Gang {"NAME":"Sonoff T3 TX 2CH","GPIO":[32,1,1,1,0,225,3
Sonoff TX T3 EU 3 Gang {"NAME":"TX T3EU3C","GPIO":[32,1,0,1,226,225,33,34,224,576,0,0,0,0],"FLAG":0,"BASE":30}
Sonoff TX T3 US 3 Gang {"NAME":"TX T3US3C","GPIO":[32,1,0,1,226,225,33,34,224,576,0,0,0,0],"FLAG":0,"BASE":30}
Sonoff TX T4 EU No Neutral 1 Gang {"NAME":"Sonoff T4 1CH","GPIO":[32,1,1,1,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":28}
-Sonoff TX Ultimate 1 Gang {"NAME":"TX Ultimate 1","GPIO":[0,0,7808,0,7840,3872,0,0,0,1376,0,7776,0,0,224,3232,0,480,3200,0,0,0,3840,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Pixels 27"}
-Sonoff TX Ultimate 2 Gang {"NAME":"TX Ultimate 1","GPIO":[0,0,7808,0,7840,3872,0,0,0,1376,0,7776,0,225,224,3232,0,480,3200,0,0,0,3840,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Pixels 27"}
-Sonoff TX Ultimate 3 Gang {"NAME":"TX Ultimate 1","GPIO":[0,0,7808,0,7840,3872,0,0,0,1376,0,7776,0,225,224,3232,0,480,3200,0,0,0,3840,226,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Pixels 27"}
+Sonoff TX Ultimate 1 Gang {"NAME":"TX Ultimate 1","GPIO":[0,0,7808,0,7840,3872,0,0,0,1376,0,7776,0,0,224,3232,0,480,3200,0,0,0,3840,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Backlog Pixels 28"}
+Sonoff TX Ultimate 2 Gang {"NAME":"TX Ultimate 2","GPIO":[0,0,7808,0,7840,3872,0,0,0,1376,0,7776,0,225,224,3232,0,480,3200,0,0,0,3840,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Backlog Pixels 28"}
+Sonoff TX Ultimate 3 Gang {"NAME":"TX Ultimate 3","GPIO":[0,0,7808,0,7840,3872,0,0,0,1376,0,7776,0,225,224,3232,0,480,3200,0,0,0,3840,226,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Backlog Pixels 28"}
SPC Hera {"NAME":"SPC HERA","GPIO":[544,0,0,32,224,0,0,0,0,0,288,0,0,0],"FLAG":0,"BASE":18}
SRL 2 Gang {"NAME":"SRL 4WW Switch","GPIO":[0,0,0,0,0,33,0,0,32,224,0,225,0,0],"FLAG":0,"BASE":18}
SRL 4 Gang {"NAME":"SRL 4WW Switch","GPIO":[0,0,0,34,226,33,0,0,32,224,227,225,35,0],"FLAG":0,"BASE":18}
@@ -2687,7 +2705,9 @@ Moes {"NAME":"Moes MS-104B","GPIO":[0,0,32,0,480,0,0,0,1
Moes 10A {"NAME":"Moes MS-101","GPIO":[0,0,0,0,0,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Moes Mini 3 Gang 1/2 Way {"NAME":"Moes MS-104C","GPIO":[0,0,0,34,32,33,0,0,224,225,226,0,0,0],"FLAG":0,"BASE":18}
Nedis 10A {"NAME":"Nedis WIFIPS10WT","GPIO":[0,0,0,0,224,0,0,0,32,321,0,288,0,0],"FLAG":0,"BASE":18}
+Nous 1 Channel Touch {"NAME":"NOUS L1T","GPIO":[544,0,1,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
Nous 1/2 Channel {"NAME":"NOUS L13T Smart Switch Module","GPIO":[1,161,1,160,225,224,1,1,544,1,32,1,1,1],"FLAG":0,"BASE":18}
+Nous 2 Channel Touch {"NAME":"NOUS L2T","GPIO":[544,289,1,32,225,33,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
Nova Digital Basic 1 MS101 {"NAME":"NovaDigBasic1","GPIO":[0,1,0,1,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
PPA Contatto Wi-Fi {"NAME":"PPA Contatto","GPIO":[0,0,32,0,224,162,0,0,288,225,0,0,0,0],"FLAG":0,"BASE":18}
PS-1604 16A {"NAME":"PS-1604 16A","GPIO":[32,1,1,1,1,0,0,0,224,320,1,0,0,0],"FLAG":0,"BASE":1}
@@ -2786,6 +2806,7 @@ Tuya Gas/Water {"NAME":"Valve FM101","GPIO":[320,0,0,0,224,0,0,0,0
Aigostar P40 {"NAME":"Aigostar 8433325212278","GPIO":[0,0,0,0,544,288,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Aseer THWFS01 {"NAME":"ASEER-THWFS01","GPIO":[320,33,544,323,2720,2656,0,0,2624,225,321,224,32,0],"FLAG":0,"BASE":18}
Athom {"NAME":"Athom SK01","GPIO":[0,0,0,3104,0,32,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
+Athom 16A UK {"NAME":"Athom SK03-TAS","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
Bestten LO-2-W {"NAME":"BESTTEN LO-2-W","GPIO":[0,0,0,0,576,32,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
BingoElec 16A {"NAME":"BingoElecPower","GPIO":[0,0,0,0,288,289,1,1,224,32,0,0,1,1],"FLAG":0,"BASE":18}
BlitzWolf SHP8 {"NAME":"SHP8","GPIO":[0,320,0,32,2720,2656,0,0,2624,289,224,0,0,0],"FLAG":0,"BASE":64}
@@ -2816,6 +2837,7 @@ Milfra UK Double USB Chager Twin {"NAME":"Milfra TBU02","GPIO":[0,0,0,0,288,33,
Moes 16A {"NAME":"WK-EU(FR/UK)16M","GPIO":[0,288,0,32,2720,2656,0,0,2624,224,0,0,0,0],"FLAG":0,"BASE":18}
Moes WWK Glass Panel {"NAME":"Smart Socket","GPIO":[0,0,0,0,288,289,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Oittm 120 {"NAME":"Oittm WS01","GPIO":[32,0,0,0,0,2592,0,0,224,2656,2688,288,0,0],"FLAG":0,"BASE":18}
+PFS Presa Smart {"NAME":"PFS_PresaSmart","GPIO":[1,1,1,1,288,289,1,1,224,32,0,1,1,1],"FLAG":0,"BASE":18}
PS-1607 {"NAME":"PS-1607","GPIO":[32,0,0,0,0,225,33,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
Smanergy KA10 {"NAME":"KA10","GPIO":[0,320,0,32,2720,2656,0,0,2624,289,224,0,0,0],"FLAG":0,"BASE":64}
Sonoff IW100 {"NAME":"Sonoff IW100","GPIO":[32,3072,0,3104,0,0,0,0,224,544,0,0,0,0],"FLAG":0,"BASE":41}
diff --git a/boards/esp32c6.json b/boards/esp32c6.json
new file mode 100644
index 000000000..919bcfdfe
--- /dev/null
+++ b/boards/esp32c6.json
@@ -0,0 +1,44 @@
+{
+ "build": {
+ "arduino":{
+ "ldscript": "esp32c6_out.ld"
+ },
+ "core": "esp32",
+ "extra_flags": "-DESP32_4M -DESP32C6",
+ "f_cpu": "160000000L",
+ "f_flash": "80000000L",
+ "flash_mode": "dio",
+ "mcu": "esp32c6",
+ "variant": "esp32c6",
+ "partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
+ },
+ "connectivity": [
+ "wifi",
+ "bluetooth"
+ ],
+ "debug": {
+ "openocd_target": "esp32c6.cfg"
+ },
+ "frameworks": [
+ "arduino",
+ "espidf"
+ ],
+ "name": "Espressif Generic ESP32-C6 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
+ "upload": {
+ "arduino": {
+ "flash_extra_images": [
+ [
+ "0x10000",
+ "variants/tasmota/tasmota32c6-safeboot.bin"
+ ]
+ ]
+ },
+ "flash_size": "4MB",
+ "maximum_ram_size": 327680,
+ "maximum_size": 4194304,
+ "require_upload_port": true,
+ "speed": 460800
+ },
+ "url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
+ "vendor": "Espressif"
+ }
diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
index 18cfee1e0..9bdfb9733 100644
--- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
+++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
@@ -39,6 +39,8 @@ TasmotaSerial *tms_obj_list[16];
#ifdef ESP32
#include "driver/uart.h"
+#include "driver/gpio.h"
+#include "esp_rom_gpio.h"
static uint32_t tasmota_serial_uart_bitmap = 0; // Assigned UARTs
@@ -466,6 +468,7 @@ size_t TasmotaSerial::write(uint8_t b) {
return size;
}
+#ifdef ESP8266
void IRAM_ATTR TasmotaSerial::rxRead(void) {
if (!m_nwmode) {
uint32_t start = ESP.getCycleCount();
@@ -586,3 +589,4 @@ void IRAM_ATTR TasmotaSerial::rxRead(void) {
}
}
}
+#endif // ESP8266
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md
index 47178861a..5eac39e4b 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md
@@ -10,8 +10,8 @@
This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an
[ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc.
-## v2.8.5 Now Available
-Version 2.8.5 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
+## v2.8.6 Now Available
+Version 2.8.6 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
#### Upgrading from pre-v2.0
Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md
index f55860528..9e584bb84 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md
@@ -11,8 +11,8 @@
Diese Programmbibliothek ermöglicht das **Senden _und_ Empfangen** von Infrarotsignalen mit [ESP8266](https://github.com/esp8266/Arduino)- und
[ESP32](https://github.com/espressif/arduino-esp32)-Mikrocontrollern mithilfe des [Arduino-Frameworks](https://www.arduino.cc/) und handelsüblichen 940nm Infrarot-LEDs undIR-Empfängermodulen, wie zum Beispiel TSOP{17,22,24,36,38,44,48}*-Demodulatoren.
-## v2.8.5 jetzt verfügbar
-Version 2.8.5 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen.
+## v2.8.6 jetzt verfügbar
+Version 2.8.6 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen.
#### Hinweis für Nutzer von Versionen vor v2.0
Die Benutzung der Bibliothek hat sich mit Version 2.0 leicht geändert. Einige Anpassungen im aufrufenden Code werden nötig sein, um mit Version ab 2.0 korrekt zu funktionieren. Mehr zu den Anpassungen finden sich auf unserer [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0)-Seite.
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md
index 430d32de3..f7bd69eaf 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md
@@ -10,8 +10,8 @@
Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole
[ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc.
-## v2.8.5 disponible
-Version 2.8.5 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
+## v2.8.6 disponible
+Version 2.8.6 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
#### mise à jour depuis pre-v2.0
L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_nl.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_nl.md
index fdea85cae..8c4cb8e08 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_nl.md
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_nl.md
@@ -10,8 +10,8 @@
Deze library maakt het mogelijk om Infraroodsignalen **te versturen en ontvangen** via het [Arduino framework](https://www.arduino.cc/) met veelgebruikte 940nm IR LEDs en IR ontvang modules. b.v. TSOP{17,22,24,36,38,44,48}* demodulatoren enz.
-## v2.8.5 nu beschikbaar
-Versie 2.8.5 van de bibliotheek is nu [beschikbaar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Bekijk de [Release Notes](ReleaseNotes.md) voor alle belangrijke veranderingen.
+## v2.8.6 nu beschikbaar
+Versie 2.8.6 van de bibliotheek is nu [beschikbaar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Bekijk de [Release Notes](ReleaseNotes.md) voor alle belangrijke veranderingen.
#### Upgraden vanaf pre-v2.0
Het gebruik van de bibliotheek is enigszins gewijzigd in v2.0. Je zult het gebruik moeten aanpassen om te kunnen werken met v2.0 en hoger. Je kunt meer lezen over de vereiste aanpassingen op onze [Upgraden naar v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) pagina.
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md
index d9e86c7e3..27b5b3fac 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md
@@ -1,5 +1,23 @@
# Release Notes
+## _v2.8.6 (20230727)_
+
+**[Bug Fixes]**
+- Ensure `IRCoolixAC::toCommon()` returns `kNoTempValue` when no sensor temp is detected. (#2015 #2012)
+- Fix compilation dependency of LG on Samsung send protocol (#2011 #2010)
+- Fix missing parameter in call to `IRac::gree()` (#2008 #2007)
+
+**[Features]**
+- IRac: Ensure the `sleep` parameter is used for the `FUJITSU_AC` protocol. (#1992 #1991)
+
+**[Misc]**
+- Allow the BlynkIRRemote.ino code to compile again. (#2016)
+- do not list WHIRLPOOL_AC unconditionally as supported protocol (#2003)
+- IRUtils:typeToString() — simplify (#2002)
+- Fix brand Green -> Gree (#1994)
+- Fix undefined `std::round` compilation error (#1989)
+
+
## _v2.8.5 (20230508)_
**[Bug Fixes]**
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md
index 46b65ca5e..3c6d38a03 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md
@@ -1,6 +1,6 @@
+ Last generated: Thu 27 Jul 2023 05:37:11 +0000 --->
# IR Protocols supported by this library
| Protocol | Brand | Model | A/C Model | Detailed A/C Support |
@@ -65,8 +65,7 @@
| [JVC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_JVC.cpp) | **JVC** | PTU94023B remote | | - |
| [Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.cpp) | **[Hisense](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.h)** | AST-09UW4RVETG00A A/C (KELON168) | | Yes |
| [Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.cpp) | **[Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.h)** | AST-09UW4RVETG00A A/C (KELON168)
DG11R2-01 remote (KELON168)
ON/OFF 9000-12000 (KELON) | | Yes |
-| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAP0F8 remote | | Yes |
-| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAPOF3 remote | | Yes |
+| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAP0F8 remote
YAPOF3 remote | | Yes |
| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | KSV26CRC A/C
KSV26HRC A/C
KSV35CRC A/C
KSV35HRC A/C
KSV53HRC A/C
KSV62HRC A/C
KSV70CRC A/C
KSV70HRC A/C
KSV80HRC A/C
YALIF Remote | | Yes |
| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | A5VEY A/C
YB1FA remote | | Yes |
| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[General Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711AR2853M Remote (LG - GE6711AR2853M)
AG1BH09AW101 A/C (LG - GE6711AR2853M) | | Yes |
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/BlynkIrRemote/BlynkIrRemote.ino b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/BlynkIrRemote/BlynkIrRemote.ino
index 6e659bd64..1948f3c4c 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/BlynkIrRemote/BlynkIrRemote.ino
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/BlynkIrRemote/BlynkIrRemote.ino
@@ -104,6 +104,8 @@
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
+#define BLYNK_TEMPLATE_ID "TMPL••••••••" // Made up values. Please Change.
+#define BLYNK_TEMPLATE_NAME "My First Device" // Please Change.
#if defined(ESP8266)
#include
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRrecvDumpV2/platformio.ini b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRrecvDumpV2/platformio.ini
index b56304f66..eca7c917e 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRrecvDumpV2/platformio.ini
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRrecvDumpV2/platformio.ini
@@ -64,4 +64,9 @@ build_flags = -D_IR_LOCALE_=zh-CN ; Chinese (Simplified)
; Build the library with all protocols disabled to flush out #if/#ifdef issues &
; any compiler warnings, by turning them into errors.
[env:shakedown_no_protocols]
-build_flags = -D_IR_ENABLE_DEFAULT_=false -Werror -Wno-error=switch
+build_flags =
+ ${env.build_flags}
+ -Werror
+ -Wno-error=switch
+ -Wno-error=switch-unreachable
+ -D_IR_ENABLE_DEFAULT_=false
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/SmartIRRepeater/platformio.ini b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/SmartIRRepeater/platformio.ini
index 0db3d6dc8..88a7e8a17 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/SmartIRRepeater/platformio.ini
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/SmartIRRepeater/platformio.ini
@@ -34,4 +34,5 @@ build_flags =
${env.build_flags}
-Werror
-Wno-error=switch
+ -Wno-error=switch-unreachable
-D_IR_ENABLE_DEFAULT_=false
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json
index 302372566..60c481152 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json
@@ -1,6 +1,6 @@
{
"name": "IRremoteESP8266",
- "version": "2.8.5",
+ "version": "2.8.6",
"keywords": "infrared, ir, remote, esp8266, esp32",
"description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)",
"repository":
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties
index 769cbc1fa..faed00b75 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties
@@ -1,5 +1,5 @@
name=IRremoteESP8266
-version=2.8.5
+version=2.8.6
author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff
maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto, Christian Nilsson
sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32)
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp
index 8826bc1ae..67c218c1e 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp
@@ -13,6 +13,11 @@
#include
#endif
#include
+#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99_MATH_TR1)
+ using std::roundf;
+#else
+ using ::roundf;
+#endif
#include "IRsend.h"
#include "IRremoteESP8266.h"
#include "IRtext.h"
@@ -366,7 +371,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) {
#if SEND_YORK
case decode_type_t::YORK:
#endif
+#if SEND_WHIRLPOOL_AC
case decode_type_t::WHIRLPOOL_AC:
+#endif
return true;
default:
return false;
@@ -489,9 +496,9 @@ void IRac::argo(IRArgoAC *ac,
ac->begin();
ac->setPower(on);
ac->setMode(ac->convertMode(mode));
- ac->setTemp(static_cast(std::round(degrees)));
+ ac->setTemp(static_cast(roundf(degrees)));
if (sensorTemp != kNoTempValue) {
- ac->setSensorTemp(static_cast(std::round(sensorTemp)));
+ ac->setSensorTemp(static_cast(roundf(sensorTemp)));
}
ac->setiFeel(iFeel);
ac->setFan(ac->convertFan(fan));
@@ -537,7 +544,7 @@ void IRac::argoWrem3_ACCommand(IRArgoAC_WREM3 *ac, const bool on,
ac->setMode(ac->convertMode(mode));
ac->setTemp(degrees);
if (sensorTemp != kNoTempValue) {
- ac->setSensorTemp(static_cast(std::round(sensorTemp)));
+ ac->setSensorTemp(static_cast(roundf(sensorTemp)));
}
ac->setiFeel(iFeel);
ac->setFan(ac->convertFan(fan));
@@ -563,7 +570,7 @@ void IRac::argoWrem3_ACCommand(IRArgoAC_WREM3 *ac, const bool on,
void IRac::argoWrem3_iFeelReport(IRArgoAC_WREM3 *ac, const float sensorTemp) {
ac->begin();
ac->setMessageType(argoIrMessageType_t::IFEEL_TEMP_REPORT);
- ac->setSensorTemp(static_cast(std::round(sensorTemp)));
+ ac->setSensorTemp(static_cast(roundf(sensorTemp)));
ac->send();
}
@@ -738,7 +745,7 @@ void IRac::coolix(IRCoolixAC *ac,
// No Econo setting available.
// No Quiet setting available.
if (sensorTemp != kNoTempValue) {
- ac->setSensorTemp(static_cast(std::round(sensorTemp)));
+ ac->setSensorTemp(static_cast(roundf(sensorTemp)));
} else {
ac->clearSensorTemp();
}
@@ -1128,7 +1135,7 @@ void IRac::ecoclim(IREcoclimAc *ac,
ac->setTemp(degrees);
ac->setFan(ac->convertFan(fan));
if (sensorTemp != kNoTempValue) {
- ac->setSensorTemp(static_cast(std::round(sensorTemp)));
+ ac->setSensorTemp(static_cast(roundf(sensorTemp)));
} else {
ac->setSensorTemp(degrees); //< Set to the desired temp
// until we can disable.
@@ -1174,7 +1181,7 @@ void IRac::electra(IRElectraAc *ac,
ac->setMode(ac->convertMode(mode));
ac->setTemp(degrees);
if (sensorTemp != kNoTempValue) {
- ac->setSensorTemp(static_cast(std::round(sensorTemp)));
+ ac->setSensorTemp(static_cast(roundf(sensorTemp)));
}
ac->setFan(ac->convertFan(fan));
ac->setSwingV(swingv != stdAc::swingv_t::kOff);
@@ -2288,7 +2295,7 @@ void IRac::sanyo(IRSanyoAc *ac,
ac->setMode(ac->convertMode(mode));
ac->setTemp(degrees);
if (sensorTemp != kNoTempValue) {
- ac->setSensorTemp(static_cast(std::round(sensorTemp)));
+ ac->setSensorTemp(static_cast(roundf(sensorTemp)));
} else {
ac->setSensorTemp(degrees); // Set the sensor temp to the desired
// (normal) temp.
@@ -3229,7 +3236,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
fujitsu(&ac, (fujitsu_ac_remote_model_t)send.model, send.power, send.mode,
send.celsius, send.degrees, send.fanspeed,
send.swingv, send.swingh, send.quiet,
- send.turbo, send.econo, send.filter, send.clean);
+ send.turbo, send.econo, send.filter, send.clean, send.sleep);
break;
}
#endif // SEND_FUJITSU_AC
@@ -3249,7 +3256,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
_modulation);
gree(&ac, (gree_ac_remote_model_t)send.model, send.power, send.mode,
send.celsius, send.degrees, send.fanspeed, send.swingv, send.swingh,
- send.turbo, send.econo, send.light, send.clean, send.sleep);
+ send.iFeel, send.turbo, send.econo, send.light, send.clean,
+ send.sleep);
break;
}
#endif // SEND_GREE
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp
index ecb8a382b..173526104 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp
@@ -412,10 +412,6 @@ void IRrecv::pause(void) {
params.rcvstate = kStopState;
params.rawlen = 0;
params.overflow = false;
-#if defined(ESP8266)
- os_timer_disarm(&timer);
- detachInterrupt(params.recvpin);
-#endif
#if defined(ESP32)
gpio_intr_disable((gpio_num_t)params.recvpin);
#endif // ESP32
@@ -429,10 +425,6 @@ void IRrecv::resume(void) {
params.rcvstate = kIdleState;
params.rawlen = 0;
params.overflow = false;
-#if defined(ESP8266)
- os_timer_setfn(&timer, reinterpret_cast(read_timeout),NULL);
- attachInterrupt(params.recvpin, gpio_intr, CHANGE);
-#endif
#if defined(ESP32)
timerAlarmDisable(timer);
gpio_intr_enable((gpio_num_t)params.recvpin);
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h
index 133d507b8..949de1ecf 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h
@@ -58,7 +58,7 @@
// Minor version number (x.X.x)
#define _IRREMOTEESP8266_VERSION_MINOR 8
// Patch version number (x.x.X)
-#define _IRREMOTEESP8266_VERSION_PATCH 5
+#define _IRREMOTEESP8266_VERSION_PATCH 6
// Macro to convert version info into an integer
#define _IRREMOTEESP8266_VERSION_VAL(major, minor, patch) \
(((major) << 16) | ((minor) << 8) | (patch))
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h
index f8a447197..38491372a 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h
@@ -310,11 +310,12 @@ class IRsend {
void sendSherwood(uint64_t data, uint16_t nbits = kSherwoodBits,
uint16_t repeat = kSherwoodMinRepeat);
#endif
-#if SEND_SAMSUNG
+ // `sendSAMSUNG()` is required by `sendLG()`
+#if (SEND_SAMSUNG || SEND_LG)
void sendSAMSUNG(const uint64_t data, const uint16_t nbits = kSamsungBits,
const uint16_t repeat = kNoRepeat);
uint32_t encodeSAMSUNG(const uint8_t customer, const uint8_t command);
-#endif
+#endif // (SEND_SAMSUNG || SEND_LG)
#if SEND_SAMSUNG36
void sendSamsung36(const uint64_t data, const uint16_t nbits = kSamsung36Bits,
const uint16_t repeat = kNoRepeat);
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp
index 4c713c87b..e9af0b28f 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp
@@ -145,16 +145,12 @@ String typeToString(const decode_type_t protocol, const bool isRepeat) {
result = kUnknownStr;
} else {
auto *ptr = reinterpret_cast(kAllProtocolNamesStr);
- if (protocol > kLastDecodeType || protocol == decode_type_t::UNKNOWN) {
- result = kUnknownStr;
- } else {
- for (uint16_t i = 0; i <= protocol && STRLEN(ptr); i++) {
- if (i == protocol) {
- result = FPSTR(ptr);
- break;
- }
- ptr += STRLEN(ptr) + 1;
+ for (uint16_t i = 0; i <= protocol && STRLEN(ptr); i++) {
+ if (i == protocol) {
+ result = FPSTR(ptr);
+ break;
}
+ ptr += STRLEN(ptr) + 1;
}
}
if (isRepeat) {
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Coolix.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Coolix.cpp
index 3fb4e8d0a..6769ebb79 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Coolix.cpp
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Coolix.cpp
@@ -549,6 +549,9 @@ stdAc::state_t IRCoolixAC::toCommon(const stdAc::state_t *prev) const {
result.mode = toCommonMode(getMode());
result.degrees = getTemp();
result.sensorTemperature = getSensorTemp();
+ if (result.sensorTemperature == kCoolixSensorTempIgnoreCode) {
+ result.sensorTemperature = kNoTempValue;
+ }
result.iFeel = getZoneFollow();
result.fanspeed = toCommonFanSpeed(getFan());
return result;
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Kelvinator.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Kelvinator.h
index 32cb3e1fa..342c60592 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Kelvinator.h
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Kelvinator.h
@@ -13,7 +13,7 @@
// Brand: Kelvinator, Model: KSV70CRC A/C
// Brand: Kelvinator, Model: KSV70HRC A/C
// Brand: Kelvinator, Model: KSV80HRC A/C
-// Brand: Green, Model: YAPOF3 remote
+// Brand: Gree, Model: YAPOF3 remote
// Brand: Gree, Model: YAP0F8 remote
// Brand: Sharp, Model: YB1FA remote
// Brand: Sharp, Model: A5VEY A/C
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp
index b3fe2a860..958f2665b 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp
@@ -82,7 +82,8 @@ using irutils::addTempToString;
using irutils::addToggleToString;
using irutils::minsToString;
-#if SEND_SAMSUNG
+// This sending protocol is used by some other protocols. e.g. LG.
+#if (SEND_SAMSUNG || SEND_LG)
/// Send a 32-bit Samsung formatted message.
/// Status: STABLE / Should be working.
/// @param[in] data The message to be sent.
@@ -112,7 +113,7 @@ uint32_t IRsend::encodeSAMSUNG(const uint8_t customer, const uint8_t command) {
return ((revcommand ^ 0xFF) | (revcommand << 8) | (revcustomer << 16) |
(revcustomer << 24));
}
-#endif
+#endif // (SEND_SAMSUNG || SEND_LG)
#if DECODE_SAMSUNG
/// Decode the supplied Samsung 32-bit message.
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp
index 32a745a31..8d6274c65 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp
@@ -669,7 +669,8 @@ TEST(TestIRac, Fujitsu) {
false, // Turbo (Powerful)
false, // Econo
true, // Filter
- true); // Clean
+ true, // Clean
+ -1); // Sleep
ASSERT_EQ(ardb1_expected, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
@@ -719,7 +720,8 @@ TEST(TestIRac, Fujitsu) {
false, // Turbo (Powerful)
false, // Econo
true, // Filter
- true); // Clean
+ true, // Clean
+ -1); // Sleep
ASSERT_EQ(arry4_expected, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
@@ -742,8 +744,9 @@ TEST(TestIRac, Fujitsu) {
false, // Quiet
false, // Turbo (Powerful)
false, // Econo
- false, // Filter
- false); // Clean
+ false, // Filter
+ false, // Clean
+ -1); // Sleep
ASSERT_EQ(arrew4e_expected, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Coolix_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Coolix_test.cpp
index ba3610bc7..101fab654 100644
--- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Coolix_test.cpp
+++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Coolix_test.cpp
@@ -492,6 +492,9 @@ TEST(TestCoolixACClass, SetGetClearSensorTempAndZoneFollow) {
EXPECT_EQ(
"Power: On, Mode: 3 (Heat), Fan: 6 (Zone Follow), Temp: 24C, "
"Zone Follow: On, Sensor Temp: 19C", ac.toString());
+ // For #Issue2012
+ EXPECT_EQ(19, ac.getSensorTemp());
+ EXPECT_EQ(19, ac.toCommon().sensorTemperature);
}
TEST(TestCoolixACClass, SpecialModesAndReset) {
@@ -1068,3 +1071,36 @@ TEST(TestDecodeCoolix48, SyntheticSelfDecode) {
"m552s5244",
irsend.outputStr());
}
+
+// Test for issue https://github.com/crankyoldgit/IRremoteESP8266/issues/2012#issuecomment-1650098971
+TEST(TestCoolixACClass, Issue2012) {
+ IRrecv irrecv(kGpioUnused);
+ IRCoolixAC ac(kGpioUnused);
+
+ ac.stateReset();
+ ac.setRaw(0xB21FD8);
+ EXPECT_EQ(
+ "Power: On, Mode: 2 (Auto), Fan: 0 (Auto0), Temp: 26C, "
+ "Zone Follow: Off, Sensor Temp: Off",
+ ac.toString());
+ EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
+
+ ac.setRaw(0xB21F98);
+ EXPECT_EQ(
+ "Power: On, Mode: 2 (Auto), Fan: 0 (Auto0), Temp: 27C, "
+ "Zone Follow: Off, Sensor Temp: Off",
+ ac.toString());
+ EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
+
+ ac.setRaw(0xB21F88);
+ EXPECT_EQ(
+ "Power: On, Mode: 2 (Auto), Fan: 0 (Auto0), Temp: 28C, "
+ "Zone Follow: Off, Sensor Temp: Off",
+ ac.toString());
+ EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
+ ac.setRaw(0xB27BE0);
+ EXPECT_EQ(
+ "Power: Off",
+ ac.toString());
+ EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
+}
diff --git a/lib/lib_basic/IRremoteESP8266/library.json b/lib/lib_basic/IRremoteESP8266/library.json
index 476000469..87c32e687 100644
--- a/lib/lib_basic/IRremoteESP8266/library.json
+++ b/lib/lib_basic/IRremoteESP8266/library.json
@@ -1,6 +1,6 @@
{
"name": "IRremoteESP8266",
- "version": "2.8.5",
+ "version": "2.8.6",
"keywords": "infrared, ir, remote, esp8266, esp32",
"description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)",
"repository":
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/CHANGELOG.md b/lib/lib_i2c/arduino-i2c-sgp41/CHANGELOG.md
new file mode 100644
index 000000000..b119c080d
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/CHANGELOG.md
@@ -0,0 +1,13 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+
+## [0.1.0] - 2021-11-17
+
+Initial release
+
+[0.1.0]: https://github.com/Sensirion/arduino-i2c-sgp41/releases/tag/0.1.0
+
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/LICENSE b/lib/lib_i2c/arduino-i2c-sgp41/LICENSE
new file mode 100644
index 000000000..ff20c41df
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2021, Sensirion AG
+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 holder 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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/lib_i2c/arduino-i2c-sgp41/README.md b/lib/lib_i2c/arduino-i2c-sgp41/README.md
new file mode 100644
index 000000000..0a3744647
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/README.md
@@ -0,0 +1,78 @@
+# Sensirion I2C SGP41 Arduino Library
+
+This is the Sensirion SGP41 library for Arduino using the
+modules I2C interface.
+
+[
](https://www.sensirion.com/en/environmental-sensors/gas-sensors/sgp41)
+
+Click [here](https://www.sensirion.com/en/environmental-sensors/gas-sensors/sgp41) to learn more about the SGP41 sensor.
+
+
+# Installation
+
+To install, download the latest release as .zip file and add it to your
+[Arduino IDE](http://www.arduino.cc/en/main/software) via
+
+ Sketch => Include Library => Add .ZIP Library...
+
+Don't forget to **install the dependencies** listed below the same way via `Add
+.ZIP Library`
+
+Note: Installation via the Arduino Library Manager is coming soon.
+
+# Dependencies
+
+* [Sensirion Core](https://github.com/Sensirion/arduino-core)
+
+
+# Quick Start
+
+1. Connect the SGP41 Sensor to your Arduino board's standard
+ I2C bus. Check the pinout of your Arduino board to find the correct pins.
+ The pinout of the SGP41 Sensor board can be found in the
+ data sheet.
+
+ * **VDD** of the SEK-SGP41 to the **3.3V** of your Arduino board
+ * **GND** of the SEK-SGP41 to the **GND** of your Arduino board
+ * **SCL** of the SEK-SGP41 to the **SCL** of your Arduino board
+ * **SDA** of the SEK-SGP41 to the **SDA** of your Arduino board
+
+2. Open the `exampleUsage` sample project within the Arduino IDE
+
+ File => Examples => Sensirion I2C SGP41 => exampleUsage
+
+3. Click the `Upload` button in the Arduino IDE or
+
+ Sketch => Upload
+
+4. When the upload process has finished, open the `Serial Monitor` or `Serial
+ Plotter` via the `Tools` menu to observe the measurement values. Note that
+ the `Baud Rate` in the corresponding window has to be set to `115200 baud`.
+
+# Contributing
+
+**Contributions are welcome!**
+
+We develop and test this driver using our company internal tools (version
+control, continuous integration, code review etc.) and automatically
+synchronize the master branch with GitHub. But this doesn't mean that we don't
+respond to issues or don't accept pull requests on GitHub. In fact, you're very
+welcome to open issues or create pull requests :)
+
+This Sensirion library uses
+[`clang-format`](https://releases.llvm.org/download.html) to standardize the
+formatting of all our `.cpp` and `.h` files. Make sure your contributions are
+formatted accordingly:
+
+The `-i` flag will apply the format changes to the files listed.
+
+```bash
+clang-format -i src/*.cpp src/*.h
+```
+
+Note that differences from this formatting will result in a failed build until
+they are fixed.
+
+# License
+
+See [LICENSE](LICENSE).
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/examples/exampleUsage/exampleUsage.ino b/lib/lib_i2c/arduino-i2c-sgp41/examples/exampleUsage/exampleUsage.ino
new file mode 100644
index 000000000..3490dddb2
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/examples/exampleUsage/exampleUsage.ino
@@ -0,0 +1,124 @@
+/*
+ * I2C-Generator: 0.3.0
+ * Yaml Version: 0.1.0
+ * Template Version: 0.7.0-62-g3d691f9
+ */
+/*
+ * Copyright (c) 2021, Sensirion AG
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * * 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.
+ *
+ * * Neither the name of Sensirion AG 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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.
+ */
+
+#include
+#include
+#include
+
+SensirionI2CSgp41 sgp41;
+
+// time in seconds needed for NOx conditioning
+uint16_t conditioning_s = 10;
+
+void setup() {
+
+ Serial.begin(115200);
+ while (!Serial) {
+ delay(100);
+ }
+
+ Wire.begin();
+
+ uint16_t error;
+ char errorMessage[256];
+
+ sgp41.begin(Wire);
+
+ uint16_t serialNumber[3];
+ uint8_t serialNumberSize = 3;
+
+ error = sgp41.getSerialNumber(serialNumber, serialNumberSize);
+
+ if (error) {
+ Serial.print("Error trying to execute getSerialNumber(): ");
+ errorToString(error, errorMessage, 256);
+ Serial.println(errorMessage);
+ } else {
+ Serial.print("SerialNumber:");
+ Serial.print("0x");
+ for (size_t i = 0; i < serialNumberSize; i++) {
+ uint16_t value = serialNumber[i];
+ Serial.print(value < 4096 ? "0" : "");
+ Serial.print(value < 256 ? "0" : "");
+ Serial.print(value < 16 ? "0" : "");
+ Serial.print(value, HEX);
+ }
+ Serial.println();
+ }
+
+ uint16_t testResult;
+ error = sgp41.executeSelfTest(testResult);
+ if (error) {
+ Serial.print("Error trying to execute executeSelfTest(): ");
+ errorToString(error, errorMessage, 256);
+ Serial.println(errorMessage);
+ } else if (testResult != 0xD400) {
+ Serial.print("executeSelfTest failed with error: ");
+ Serial.println(testResult);
+ }
+}
+
+void loop() {
+ uint16_t error;
+ char errorMessage[256];
+ uint16_t defaultRh = 0x8000;
+ uint16_t defaultT = 0x6666;
+ uint16_t srawVoc = 0;
+ uint16_t srawNox = 0;
+
+ delay(1000);
+
+ if (conditioning_s > 0) {
+ // During NOx conditioning (10s) SRAW NOx will remain 0
+ error = sgp41.executeConditioning(defaultRh, defaultT, srawVoc);
+ conditioning_s--;
+ } else {
+ // Read Measurement
+ error = sgp41.measureRawSignals(defaultRh, defaultT, srawVoc, srawNox);
+ }
+
+ if (error) {
+ Serial.print("Error trying to execute measureRawSignals(): ");
+ errorToString(error, errorMessage, 256);
+ Serial.println(errorMessage);
+ } else {
+ Serial.print("SRAW_VOC:");
+ Serial.print(srawVoc);
+ Serial.print("\t");
+ Serial.print("SRAW_NOx:");
+ Serial.println(srawNox);
+ }
+}
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/images/SGP41.png b/lib/lib_i2c/arduino-i2c-sgp41/images/SGP41.png
new file mode 100644
index 000000000..a36e2d82e
Binary files /dev/null and b/lib/lib_i2c/arduino-i2c-sgp41/images/SGP41.png differ
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/keywords.txt b/lib/lib_i2c/arduino-i2c-sgp41/keywords.txt
new file mode 100644
index 000000000..13e6ba269
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/keywords.txt
@@ -0,0 +1,27 @@
+#######################################
+# Syntax Coloring Map
+#######################################
+
+#######################################
+# Datatypes (KEYWORD1)
+#######################################
+
+SensirionI2CSgp41 KEYWORD1
+
+#######################################
+# Methods and Functions (KEYWORD2)
+#######################################
+executeConditioning KEYWORD2
+measureRawSignals KEYWORD2
+executeSelfTest KEYWORD2
+turnHeaterOff KEYWORD2
+getSerialNumber KEYWORD2
+#######################################
+# Instances (KEYWORD2)
+#######################################
+
+sgp41 KEYWORD2
+
+#######################################
+# Constants (LITERAL1)
+#######################################
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/library.properties b/lib/lib_i2c/arduino-i2c-sgp41/library.properties
new file mode 100644
index 000000000..5412354f9
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/library.properties
@@ -0,0 +1,10 @@
+name=Sensirion I2C SGP41
+version=0.1.0
+author=Sensirion
+maintainer=Sensirion
+sentence=Library for the SGP41 sensor family by Sensirion
+paragraph=Enables you to use the SGP41 via I2C.
+url=https://github.com/Sensirion/arduino-i2c-sgp41
+category=Sensors
+depends=Sensirion Core
+includes=SensirionI2CSgp41.h
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/src/SensirionI2CSgp4x.cpp b/lib/lib_i2c/arduino-i2c-sgp41/src/SensirionI2CSgp4x.cpp
new file mode 100644
index 000000000..7395d4a51
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/src/SensirionI2CSgp4x.cpp
@@ -0,0 +1,219 @@
+/*
+ * Copyright (c) 2021, Sensirion AG
+ * Copyright (c) 2023, Andrew Klaus (Removing delay functions)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * * 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.
+ *
+ * * Neither the name of Sensirion AG 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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.
+ */
+
+#include "SensirionI2CSgp4x.h"
+#include "Arduino.h"
+#include "SensirionCore.h"
+#include
+
+#define SGP4X_I2C_ADDRESS 0x59
+
+SensirionI2CSgp4x::SensirionI2CSgp4x() {
+}
+
+void SensirionI2CSgp4x::begin(TwoWire& i2cBus) {
+ _i2cBus = &i2cBus;
+}
+
+uint16_t SensirionI2CSgp4x::sendConditioningCmd(uint16_t defaultRh,
+ uint16_t defaultT) {
+ uint16_t error;
+ uint8_t buffer[8];
+ SensirionI2CTxFrame txFrame =
+ SensirionI2CTxFrame::createWithUInt16Command(0x2612, buffer, 8);
+
+ error = txFrame.addUInt16(defaultRh);
+ error |= txFrame.addUInt16(defaultT);
+ if (error) {
+ return error;
+ }
+
+ error = SensirionI2CCommunication::sendFrame(SGP4X_I2C_ADDRESS, txFrame,
+ *_i2cBus);
+ return error;
+}
+
+uint16_t SensirionI2CSgp4x::readConditioningValue(uint16_t& srawVoc){
+ // This must run at least 50ms after initiateConditioning
+ uint16_t error;
+ uint8_t buffer[8];
+
+ SensirionI2CRxFrame rxFrame(buffer, 8);
+ error = SensirionI2CCommunication::receiveFrame(SGP4X_I2C_ADDRESS, 3,
+ rxFrame, *_i2cBus);
+ if (error) {
+ return error;
+ }
+
+ error |= rxFrame.getUInt16(srawVoc);
+ return error;
+}
+
+uint16_t SensirionI2CSgp4x::sendRawSignalsCmd(uint16_t relativeHumidity,
+ uint16_t temperature) {
+ uint16_t error;
+ uint8_t buffer[8];
+ SensirionI2CTxFrame txFrame =
+ SensirionI2CTxFrame::createWithUInt16Command(0x2619, buffer, 8);
+
+ error = txFrame.addUInt16(relativeHumidity);
+ error |= txFrame.addUInt16(temperature);
+ if (error) {
+ return error;
+ }
+
+ error = SensirionI2CCommunication::sendFrame(SGP4X_I2C_ADDRESS, txFrame,
+ *_i2cBus);
+ return error;
+}
+
+uint16_t SensirionI2CSgp4x::readRawSignalsValue(uint16_t& srawVoc,
+ uint16_t& srawNox) {
+ // This must run 50ms after initiateRawSignals
+
+ uint16_t error;
+ uint8_t buffer[6];
+ SensirionI2CRxFrame rxFrame(buffer, 6);
+ error = SensirionI2CCommunication::receiveFrame(SGP4X_I2C_ADDRESS, 6,
+ rxFrame, *_i2cBus);
+ if (error) {
+ return error;
+ }
+
+ error |= rxFrame.getUInt16(srawVoc);
+ error |= rxFrame.getUInt16(srawNox);
+ return error;
+}
+
+uint16_t SensirionI2CSgp4x::sendRawSignalCmd(uint16_t relativeHumidity,
+ uint16_t temperature) {
+ uint16_t error;
+ uint8_t buffer[8];
+ SensirionI2CTxFrame txFrame =
+ SensirionI2CTxFrame::createWithUInt16Command(0x260F, buffer, 8);
+
+ error = txFrame.addUInt16(relativeHumidity);
+ error |= txFrame.addUInt16(temperature);
+
+ if (error) {
+ return error;
+ }
+
+ error = SensirionI2CCommunication::sendFrame(SGP4X_I2C_ADDRESS, txFrame,
+ *_i2cBus);
+ return error;
+
+}
+
+
+uint16_t SensirionI2CSgp4x::readRawSignalValue(uint16_t& srawVoc) {
+ uint16_t error;
+ uint8_t buffer[8];
+
+ SensirionI2CRxFrame rxFrame(buffer, 8);
+ error = SensirionI2CCommunication::receiveFrame(SGP4X_I2C_ADDRESS, 3,
+ rxFrame, *_i2cBus);
+ if (error) {
+ return error;
+ }
+
+ error |= rxFrame.getUInt16(srawVoc);
+ return error;
+
+}
+
+uint16_t SensirionI2CSgp4x::sendSelfTestCmd() {
+ uint16_t error;
+ uint8_t buffer[3];
+ SensirionI2CTxFrame txFrame =
+ SensirionI2CTxFrame::createWithUInt16Command(0x280E, buffer, 3);
+
+ error = SensirionI2CCommunication::sendFrame(SGP4X_I2C_ADDRESS, txFrame,
+ *_i2cBus);
+ return error;
+}
+
+uint16_t SensirionI2CSgp4x::readSelfTestValue(uint16_t& testResult) {
+ // Must run 320ms after initiateSelfTest
+ uint16_t error;
+ uint8_t buffer[3];
+
+ SensirionI2CRxFrame rxFrame(buffer, 3);
+ error = SensirionI2CCommunication::receiveFrame(SGP4X_I2C_ADDRESS, 3,
+ rxFrame, *_i2cBus);
+ if (error) {
+ return error;
+ }
+
+ error |= rxFrame.getUInt16(testResult);
+ return error;
+}
+
+uint16_t SensirionI2CSgp4x::turnHeaterOff() {
+ uint16_t error;
+ uint8_t buffer[2];
+ SensirionI2CTxFrame txFrame =
+ SensirionI2CTxFrame::createWithUInt16Command(0x3615, buffer, 2);
+
+ error = SensirionI2CCommunication::sendFrame(SGP4X_I2C_ADDRESS, txFrame,
+ *_i2cBus);
+ delay(1);
+ return error;
+}
+
+uint16_t SensirionI2CSgp4x::getSerialNumber(uint16_t serialNumber[],
+ uint8_t serialNumberSize) {
+ uint16_t error;
+ uint8_t buffer[9];
+ SensirionI2CTxFrame txFrame =
+ SensirionI2CTxFrame::createWithUInt16Command(0x3682, buffer, 9);
+
+ error = SensirionI2CCommunication::sendFrame(SGP4X_I2C_ADDRESS, txFrame,
+ *_i2cBus);
+ if (error) {
+ return error;
+ }
+
+ delay(1);
+
+ SensirionI2CRxFrame rxFrame(buffer, 9);
+ error = SensirionI2CCommunication::receiveFrame(SGP4X_I2C_ADDRESS, 9,
+ rxFrame, *_i2cBus);
+ if (error) {
+ return error;
+ }
+
+ error |= rxFrame.getUInt16(serialNumber[0]);
+ error |= rxFrame.getUInt16(serialNumber[1]);
+ error |= rxFrame.getUInt16(serialNumber[2]);
+ return error;
+}
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/src/SensirionI2CSgp4x.h b/lib/lib_i2c/arduino-i2c-sgp41/src/SensirionI2CSgp4x.h
new file mode 100644
index 000000000..b03bed3f4
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/src/SensirionI2CSgp4x.h
@@ -0,0 +1,145 @@
+/*
+ * THIS FILE IS AUTOMATICALLY GENERATED
+ *
+ * I2C-Generator: 0.3.0
+ * Yaml Version: 0.1.0
+ * Template Version: 0.7.0-62-g3d691f9
+ */
+/*
+ * Copyright (c) 2021, Sensirion AG
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * * 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.
+ *
+ * * Neither the name of Sensirion AG 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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.
+ */
+
+#ifndef SENSIRIONI2CSGP4X_H
+#define SENSIRIONI2CSGP4X_H
+
+#include
+
+#include
+
+class SensirionI2CSgp4x {
+
+ public:
+ SensirionI2CSgp4x();
+ /**
+ * begin() - Initializes the SensirionI2CSgp4x class.
+ *
+ * @param serial Arduino stream object to be communicated with.
+ *
+ */
+ void begin(TwoWire& i2cBus);
+
+ /**
+ * executeConditioning() - This command starts the conditioning, i.e., the
+ * VOC pixel will be operated at the same temperature as it is by calling
+ * the sgp41_measure_raw command while the NOx pixel will be operated at a
+ * different temperature for conditioning. This command returns only the
+ * measured raw signal of the VOC pixel SRAW_VOC as 2 bytes (+ 1 CRC byte).
+ *
+ * @param defaultRh Default conditions for relative humidty.
+ *
+ * @param defaultT Default conditions for temperature.
+ *
+ * @param srawVoc u16 unsigned integer directly provides the raw signal
+ * SRAW_VOC in ticks which is proportional to the logarithm of the
+ * resistance of the sensing element.
+ *
+ * @return 0 on success, an error code otherwise
+ */
+ uint16_t sendConditioningCmd(uint16_t defaultRh, uint16_t defaultT);
+
+ uint16_t readConditioningValue(uint16_t& srawVoc);
+
+ /**
+ * measureRawSignals() - This command starts/continues the VOC+NOx
+ * measurement mode
+ *
+ * @param relativeHumidity Leaves humidity compensation disabled by sending
+ * the default value 0x8000 (50%RH) or enables humidity compensation when
+ * sending the relative humidity in ticks (ticks = %RH * 65535 / 100)
+ *
+ * @param temperature Leaves humidity compensation disabled by sending the
+ * default value 0x6666 (25 degC) or enables humidity compensation when
+ * sending the temperature in ticks (ticks = (degC + 45) * 65535 / 175)
+ *
+ * @param srawVoc u16 unsigned integer directly provides the raw signal
+ * SRAW_VOC in ticks which is proportional to the logarithm of the
+ * resistance of the sensing element.
+ *
+ * @param srawNox u16 unsigned integer directly provides the raw signal
+ * SRAW_NOX in ticks which is proportional to the logarithm of the
+ * resistance of the sensing element.
+ *
+ * @return 0 on success, an error code otherwise
+ */
+ uint16_t sendRawSignalsCmd(uint16_t relativeHumidity, uint16_t temperature);
+ uint16_t readRawSignalsValue(uint16_t& srawVoc, uint16_t& srawNox);
+
+ uint16_t sendRawSignalCmd(uint16_t relativeHumidity, uint16_t temperature);
+ uint16_t readRawSignalValue(uint16_t& srawVoc);
+
+ /**
+ * executeSelfTest() - This command triggers the built-in self-test checking
+ * for integrity of both hotplate and MOX material and returns the result of
+ * this test as 2 bytes
+ *
+ * @param testResult 0xXX 0xYY: ignore most significant byte 0xXX. The four
+ * least significant bits of the least significant byte 0xYY provide
+ * information if the self-test has or has not passed for each individual
+ * pixel. All zero mean all tests passed successfully. Check the datasheet
+ * for more detailed information.
+ *
+ * @return 0 on success, an error code otherwise
+ */
+ uint16_t sendSelfTestCmd(void);
+ uint16_t readSelfTestValue(uint16_t& testResult);
+
+ /**
+ * turnHeaterOff() - This command turns the hotplate off and stops the
+ * measurement. Subsequently, the sensor enters the idle mode.
+ *
+ * @return 0 on success, an error code otherwise
+ */
+ uint16_t turnHeaterOff(void);
+
+ /**
+ * getSerialNumber() - This command provides the decimal serial number of
+ * the SGP41 chip by returning 3x2 bytes.
+ *
+ * @param serialNumber 48-bit unique serial number
+ *
+ * @return 0 on success, an error code otherwise
+ */
+ uint16_t getSerialNumber(uint16_t serialNumber[], uint8_t serialNumberSize);
+
+ private:
+ TwoWire* _i2cBus = nullptr;
+};
+
+#endif /* SENSIRIONI2CSGP4X_H */
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/src/sensirion_gas_index_algorithm.c b/lib/lib_i2c/arduino-i2c-sgp41/src/sensirion_gas_index_algorithm.c
new file mode 100644
index 000000000..5ec3edeea
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/src/sensirion_gas_index_algorithm.c
@@ -0,0 +1,582 @@
+/*
+ * Copyright (c) 2022, Sensirion AG
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * * 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.
+ *
+ * * Neither the name of Sensirion AG 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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.
+ */
+
+#include "sensirion_gas_index_algorithm.h"
+#include
+
+static void GasIndexAlgorithm__init_instances(GasIndexAlgorithmParams* params);
+static void GasIndexAlgorithm__mean_variance_estimator__set_parameters(
+ GasIndexAlgorithmParams* params);
+static void GasIndexAlgorithm__mean_variance_estimator__set_states(
+ GasIndexAlgorithmParams* params, float mean, float std, float uptime_gamma);
+static float GasIndexAlgorithm__mean_variance_estimator__get_std(
+ const GasIndexAlgorithmParams* params);
+static float GasIndexAlgorithm__mean_variance_estimator__get_mean(
+ const GasIndexAlgorithmParams* params);
+static bool GasIndexAlgorithm__mean_variance_estimator__is_initialized(
+ GasIndexAlgorithmParams* params);
+static void GasIndexAlgorithm__mean_variance_estimator___calculate_gamma(
+ GasIndexAlgorithmParams* params);
+static void GasIndexAlgorithm__mean_variance_estimator__process(
+ GasIndexAlgorithmParams* params, float sraw);
+static void
+GasIndexAlgorithm__mean_variance_estimator___sigmoid__set_parameters(
+ GasIndexAlgorithmParams* params, float X0, float K);
+static float GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ GasIndexAlgorithmParams* params, float sample);
+static void
+GasIndexAlgorithm__mox_model__set_parameters(GasIndexAlgorithmParams* params,
+ float SRAW_STD, float SRAW_MEAN);
+static float
+GasIndexAlgorithm__mox_model__process(GasIndexAlgorithmParams* params,
+ float sraw);
+static void GasIndexAlgorithm__sigmoid_scaled__set_parameters(
+ GasIndexAlgorithmParams* params, float X0, float K, float offset_default);
+static float
+GasIndexAlgorithm__sigmoid_scaled__process(GasIndexAlgorithmParams* params,
+ float sample);
+static void GasIndexAlgorithm__adaptive_lowpass__set_parameters(
+ GasIndexAlgorithmParams* params);
+static float
+GasIndexAlgorithm__adaptive_lowpass__process(GasIndexAlgorithmParams* params,
+ float sample);
+
+void GasIndexAlgorithm_init_with_sampling_interval(
+ GasIndexAlgorithmParams* params, int32_t algorithm_type,
+ float sampling_interval) {
+ params->mAlgorithm_Type = algorithm_type;
+ params->mSamplingInterval = sampling_interval;
+ if ((algorithm_type == GasIndexAlgorithm_ALGORITHM_TYPE_NOX)) {
+ params->mIndex_Offset = GasIndexAlgorithm_NOX_INDEX_OFFSET_DEFAULT;
+ params->mSraw_Minimum = GasIndexAlgorithm_NOX_SRAW_MINIMUM;
+ params->mGating_Max_Duration_Minutes =
+ GasIndexAlgorithm_GATING_NOX_MAX_DURATION_MINUTES;
+ params->mInit_Duration_Mean = GasIndexAlgorithm_INIT_DURATION_MEAN_NOX;
+ params->mInit_Duration_Variance =
+ GasIndexAlgorithm_INIT_DURATION_VARIANCE_NOX;
+ params->mGating_Threshold = GasIndexAlgorithm_GATING_THRESHOLD_NOX;
+ } else {
+ params->mIndex_Offset = GasIndexAlgorithm_VOC_INDEX_OFFSET_DEFAULT;
+ params->mSraw_Minimum = GasIndexAlgorithm_VOC_SRAW_MINIMUM;
+ params->mGating_Max_Duration_Minutes =
+ GasIndexAlgorithm_GATING_VOC_MAX_DURATION_MINUTES;
+ params->mInit_Duration_Mean = GasIndexAlgorithm_INIT_DURATION_MEAN_VOC;
+ params->mInit_Duration_Variance =
+ GasIndexAlgorithm_INIT_DURATION_VARIANCE_VOC;
+ params->mGating_Threshold = GasIndexAlgorithm_GATING_THRESHOLD_VOC;
+ }
+ params->mIndex_Gain = GasIndexAlgorithm_INDEX_GAIN;
+ params->mTau_Mean_Hours = GasIndexAlgorithm_TAU_MEAN_HOURS;
+ params->mTau_Variance_Hours = GasIndexAlgorithm_TAU_VARIANCE_HOURS;
+ params->mSraw_Std_Initial = GasIndexAlgorithm_SRAW_STD_INITIAL;
+ GasIndexAlgorithm_reset(params);
+}
+
+void GasIndexAlgorithm_init(GasIndexAlgorithmParams* params,
+ int32_t algorithm_type) {
+ GasIndexAlgorithm_init_with_sampling_interval(
+ params, algorithm_type, GasIndexAlgorithm_DEFAULT_SAMPLING_INTERVAL);
+}
+
+void GasIndexAlgorithm_reset(GasIndexAlgorithmParams* params) {
+ params->mUptime = 0.f;
+ params->mSraw = 0.f;
+ params->mGas_Index = 0;
+ GasIndexAlgorithm__init_instances(params);
+}
+
+static void GasIndexAlgorithm__init_instances(GasIndexAlgorithmParams* params) {
+
+ GasIndexAlgorithm__mean_variance_estimator__set_parameters(params);
+ GasIndexAlgorithm__mox_model__set_parameters(
+ params, GasIndexAlgorithm__mean_variance_estimator__get_std(params),
+ GasIndexAlgorithm__mean_variance_estimator__get_mean(params));
+ if ((params->mAlgorithm_Type == GasIndexAlgorithm_ALGORITHM_TYPE_NOX)) {
+ GasIndexAlgorithm__sigmoid_scaled__set_parameters(
+ params, GasIndexAlgorithm_SIGMOID_X0_NOX,
+ GasIndexAlgorithm_SIGMOID_K_NOX,
+ GasIndexAlgorithm_NOX_INDEX_OFFSET_DEFAULT);
+ } else {
+ GasIndexAlgorithm__sigmoid_scaled__set_parameters(
+ params, GasIndexAlgorithm_SIGMOID_X0_VOC,
+ GasIndexAlgorithm_SIGMOID_K_VOC,
+ GasIndexAlgorithm_VOC_INDEX_OFFSET_DEFAULT);
+ }
+ GasIndexAlgorithm__adaptive_lowpass__set_parameters(params);
+}
+
+void GasIndexAlgorithm_get_sampling_interval(
+ const GasIndexAlgorithmParams* params, float* sampling_interval) {
+ *sampling_interval = params->mSamplingInterval;
+}
+
+void GasIndexAlgorithm_get_states(const GasIndexAlgorithmParams* params,
+ float* state0, float* state1) {
+
+ *state0 = GasIndexAlgorithm__mean_variance_estimator__get_mean(params);
+ *state1 = GasIndexAlgorithm__mean_variance_estimator__get_std(params);
+ return;
+}
+
+void GasIndexAlgorithm_set_states(GasIndexAlgorithmParams* params, float state0,
+ float state1) {
+
+ GasIndexAlgorithm__mean_variance_estimator__set_states(
+ params, state0, state1, GasIndexAlgorithm_PERSISTENCE_UPTIME_GAMMA);
+ GasIndexAlgorithm__mox_model__set_parameters(
+ params, GasIndexAlgorithm__mean_variance_estimator__get_std(params),
+ GasIndexAlgorithm__mean_variance_estimator__get_mean(params));
+ params->mSraw = state0;
+}
+
+void GasIndexAlgorithm_set_tuning_parameters(
+ GasIndexAlgorithmParams* params, int32_t index_offset,
+ int32_t learning_time_offset_hours, int32_t learning_time_gain_hours,
+ int32_t gating_max_duration_minutes, int32_t std_initial,
+ int32_t gain_factor) {
+
+ params->mIndex_Offset = ((float)(index_offset));
+ params->mTau_Mean_Hours = ((float)(learning_time_offset_hours));
+ params->mTau_Variance_Hours = ((float)(learning_time_gain_hours));
+ params->mGating_Max_Duration_Minutes =
+ ((float)(gating_max_duration_minutes));
+ params->mSraw_Std_Initial = ((float)(std_initial));
+ params->mIndex_Gain = ((float)(gain_factor));
+ GasIndexAlgorithm__init_instances(params);
+}
+
+void GasIndexAlgorithm_get_tuning_parameters(
+ const GasIndexAlgorithmParams* params, int32_t* index_offset,
+ int32_t* learning_time_offset_hours, int32_t* learning_time_gain_hours,
+ int32_t* gating_max_duration_minutes, int32_t* std_initial,
+ int32_t* gain_factor) {
+
+ *index_offset = ((int32_t)(params->mIndex_Offset));
+ *learning_time_offset_hours = ((int32_t)(params->mTau_Mean_Hours));
+ *learning_time_gain_hours = ((int32_t)(params->mTau_Variance_Hours));
+ *gating_max_duration_minutes =
+ ((int32_t)(params->mGating_Max_Duration_Minutes));
+ *std_initial = ((int32_t)(params->mSraw_Std_Initial));
+ *gain_factor = ((int32_t)(params->mIndex_Gain));
+ return;
+}
+
+void GasIndexAlgorithm_process(GasIndexAlgorithmParams* params, int32_t sraw,
+ int32_t* gas_index) {
+
+ if ((params->mUptime <= GasIndexAlgorithm_INITIAL_BLACKOUT)) {
+ params->mUptime = (params->mUptime + params->mSamplingInterval);
+ } else {
+ if (((sraw > 0) && (sraw < 65000))) {
+ if ((sraw < (params->mSraw_Minimum + 1))) {
+ sraw = (params->mSraw_Minimum + 1);
+ } else if ((sraw > (params->mSraw_Minimum + 32767))) {
+ sraw = (params->mSraw_Minimum + 32767);
+ }
+ params->mSraw = ((float)((sraw - params->mSraw_Minimum)));
+ }
+ if (((params->mAlgorithm_Type ==
+ GasIndexAlgorithm_ALGORITHM_TYPE_VOC) ||
+ GasIndexAlgorithm__mean_variance_estimator__is_initialized(
+ params))) {
+ params->mGas_Index =
+ GasIndexAlgorithm__mox_model__process(params, params->mSraw);
+ params->mGas_Index = GasIndexAlgorithm__sigmoid_scaled__process(
+ params, params->mGas_Index);
+ } else {
+ params->mGas_Index = params->mIndex_Offset;
+ }
+ params->mGas_Index = GasIndexAlgorithm__adaptive_lowpass__process(
+ params, params->mGas_Index);
+ if ((params->mGas_Index < 0.5f)) {
+ params->mGas_Index = 0.5f;
+ }
+ if ((params->mSraw > 0.f)) {
+ GasIndexAlgorithm__mean_variance_estimator__process(params,
+ params->mSraw);
+ GasIndexAlgorithm__mox_model__set_parameters(
+ params,
+ GasIndexAlgorithm__mean_variance_estimator__get_std(params),
+ GasIndexAlgorithm__mean_variance_estimator__get_mean(params));
+ }
+ }
+ *gas_index = ((int32_t)((params->mGas_Index + 0.5f)));
+ return;
+}
+
+static void GasIndexAlgorithm__mean_variance_estimator__set_parameters(
+ GasIndexAlgorithmParams* params) {
+
+ params->m_Mean_Variance_Estimator___Initialized = false;
+ params->m_Mean_Variance_Estimator___Mean = 0.f;
+ params->m_Mean_Variance_Estimator___Sraw_Offset = 0.f;
+ params->m_Mean_Variance_Estimator___Std = params->mSraw_Std_Initial;
+ params->m_Mean_Variance_Estimator___Gamma_Mean =
+ (((GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__ADDITIONAL_GAMMA_MEAN_SCALING *
+ GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING) *
+ (params->mSamplingInterval / 3600.f)) /
+ (params->mTau_Mean_Hours + (params->mSamplingInterval / 3600.f)));
+ params->m_Mean_Variance_Estimator___Gamma_Variance =
+ ((GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING *
+ (params->mSamplingInterval / 3600.f)) /
+ (params->mTau_Variance_Hours + (params->mSamplingInterval / 3600.f)));
+ if ((params->mAlgorithm_Type == GasIndexAlgorithm_ALGORITHM_TYPE_NOX)) {
+ params->m_Mean_Variance_Estimator___Gamma_Initial_Mean =
+ (((GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__ADDITIONAL_GAMMA_MEAN_SCALING *
+ GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING) *
+ params->mSamplingInterval) /
+ (GasIndexAlgorithm_TAU_INITIAL_MEAN_NOX +
+ params->mSamplingInterval));
+ } else {
+ params->m_Mean_Variance_Estimator___Gamma_Initial_Mean =
+ (((GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__ADDITIONAL_GAMMA_MEAN_SCALING *
+ GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING) *
+ params->mSamplingInterval) /
+ (GasIndexAlgorithm_TAU_INITIAL_MEAN_VOC +
+ params->mSamplingInterval));
+ }
+ params->m_Mean_Variance_Estimator___Gamma_Initial_Variance =
+ ((GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING *
+ params->mSamplingInterval) /
+ (GasIndexAlgorithm_TAU_INITIAL_VARIANCE + params->mSamplingInterval));
+ params->m_Mean_Variance_Estimator__Gamma_Mean = 0.f;
+ params->m_Mean_Variance_Estimator__Gamma_Variance = 0.f;
+ params->m_Mean_Variance_Estimator___Uptime_Gamma = 0.f;
+ params->m_Mean_Variance_Estimator___Uptime_Gating = 0.f;
+ params->m_Mean_Variance_Estimator___Gating_Duration_Minutes = 0.f;
+}
+
+static void GasIndexAlgorithm__mean_variance_estimator__set_states(
+ GasIndexAlgorithmParams* params, float mean, float std,
+ float uptime_gamma) {
+
+ params->m_Mean_Variance_Estimator___Mean = mean;
+ params->m_Mean_Variance_Estimator___Std = std;
+ params->m_Mean_Variance_Estimator___Uptime_Gamma = uptime_gamma;
+ params->m_Mean_Variance_Estimator___Initialized = true;
+}
+
+static float GasIndexAlgorithm__mean_variance_estimator__get_std(
+ const GasIndexAlgorithmParams* params) {
+
+ return params->m_Mean_Variance_Estimator___Std;
+}
+
+static float GasIndexAlgorithm__mean_variance_estimator__get_mean(
+ const GasIndexAlgorithmParams* params) {
+
+ return (params->m_Mean_Variance_Estimator___Mean +
+ params->m_Mean_Variance_Estimator___Sraw_Offset);
+}
+
+static bool GasIndexAlgorithm__mean_variance_estimator__is_initialized(
+ GasIndexAlgorithmParams* params) {
+
+ return params->m_Mean_Variance_Estimator___Initialized;
+}
+
+static void GasIndexAlgorithm__mean_variance_estimator___calculate_gamma(
+ GasIndexAlgorithmParams* params) {
+
+ float uptime_limit;
+ float sigmoid_gamma_mean;
+ float gamma_mean;
+ float gating_threshold_mean;
+ float sigmoid_gating_mean;
+ float sigmoid_gamma_variance;
+ float gamma_variance;
+ float gating_threshold_variance;
+ float sigmoid_gating_variance;
+
+ uptime_limit = (GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__FIX16_MAX -
+ params->mSamplingInterval);
+ if ((params->m_Mean_Variance_Estimator___Uptime_Gamma < uptime_limit)) {
+ params->m_Mean_Variance_Estimator___Uptime_Gamma =
+ (params->m_Mean_Variance_Estimator___Uptime_Gamma +
+ params->mSamplingInterval);
+ }
+ if ((params->m_Mean_Variance_Estimator___Uptime_Gating < uptime_limit)) {
+ params->m_Mean_Variance_Estimator___Uptime_Gating =
+ (params->m_Mean_Variance_Estimator___Uptime_Gating +
+ params->mSamplingInterval);
+ }
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__set_parameters(
+ params, params->mInit_Duration_Mean,
+ GasIndexAlgorithm_INIT_TRANSITION_MEAN);
+ sigmoid_gamma_mean =
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ params, params->m_Mean_Variance_Estimator___Uptime_Gamma);
+ gamma_mean = (params->m_Mean_Variance_Estimator___Gamma_Mean +
+ ((params->m_Mean_Variance_Estimator___Gamma_Initial_Mean -
+ params->m_Mean_Variance_Estimator___Gamma_Mean) *
+ sigmoid_gamma_mean));
+ gating_threshold_mean =
+ (params->mGating_Threshold +
+ ((GasIndexAlgorithm_GATING_THRESHOLD_INITIAL -
+ params->mGating_Threshold) *
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ params, params->m_Mean_Variance_Estimator___Uptime_Gating)));
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__set_parameters(
+ params, gating_threshold_mean,
+ GasIndexAlgorithm_GATING_THRESHOLD_TRANSITION);
+ sigmoid_gating_mean =
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ params, params->mGas_Index);
+ params->m_Mean_Variance_Estimator__Gamma_Mean =
+ (sigmoid_gating_mean * gamma_mean);
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__set_parameters(
+ params, params->mInit_Duration_Variance,
+ GasIndexAlgorithm_INIT_TRANSITION_VARIANCE);
+ sigmoid_gamma_variance =
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ params, params->m_Mean_Variance_Estimator___Uptime_Gamma);
+ gamma_variance =
+ (params->m_Mean_Variance_Estimator___Gamma_Variance +
+ ((params->m_Mean_Variance_Estimator___Gamma_Initial_Variance -
+ params->m_Mean_Variance_Estimator___Gamma_Variance) *
+ (sigmoid_gamma_variance - sigmoid_gamma_mean)));
+ gating_threshold_variance =
+ (params->mGating_Threshold +
+ ((GasIndexAlgorithm_GATING_THRESHOLD_INITIAL -
+ params->mGating_Threshold) *
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ params, params->m_Mean_Variance_Estimator___Uptime_Gating)));
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__set_parameters(
+ params, gating_threshold_variance,
+ GasIndexAlgorithm_GATING_THRESHOLD_TRANSITION);
+ sigmoid_gating_variance =
+ GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ params, params->mGas_Index);
+ params->m_Mean_Variance_Estimator__Gamma_Variance =
+ (sigmoid_gating_variance * gamma_variance);
+ params->m_Mean_Variance_Estimator___Gating_Duration_Minutes =
+ (params->m_Mean_Variance_Estimator___Gating_Duration_Minutes +
+ ((params->mSamplingInterval / 60.f) *
+ (((1.f - sigmoid_gating_mean) *
+ (1.f + GasIndexAlgorithm_GATING_MAX_RATIO)) -
+ GasIndexAlgorithm_GATING_MAX_RATIO)));
+ if ((params->m_Mean_Variance_Estimator___Gating_Duration_Minutes < 0.f)) {
+ params->m_Mean_Variance_Estimator___Gating_Duration_Minutes = 0.f;
+ }
+ if ((params->m_Mean_Variance_Estimator___Gating_Duration_Minutes >
+ params->mGating_Max_Duration_Minutes)) {
+ params->m_Mean_Variance_Estimator___Uptime_Gating = 0.f;
+ }
+}
+
+static void GasIndexAlgorithm__mean_variance_estimator__process(
+ GasIndexAlgorithmParams* params, float sraw) {
+
+ float delta_sgp;
+ float c;
+ float additional_scaling;
+
+ if ((params->m_Mean_Variance_Estimator___Initialized == false)) {
+ params->m_Mean_Variance_Estimator___Initialized = true;
+ params->m_Mean_Variance_Estimator___Sraw_Offset = sraw;
+ params->m_Mean_Variance_Estimator___Mean = 0.f;
+ } else {
+ if (((params->m_Mean_Variance_Estimator___Mean >= 100.f) ||
+ (params->m_Mean_Variance_Estimator___Mean <= -100.f))) {
+ params->m_Mean_Variance_Estimator___Sraw_Offset =
+ (params->m_Mean_Variance_Estimator___Sraw_Offset +
+ params->m_Mean_Variance_Estimator___Mean);
+ params->m_Mean_Variance_Estimator___Mean = 0.f;
+ }
+ sraw = (sraw - params->m_Mean_Variance_Estimator___Sraw_Offset);
+ GasIndexAlgorithm__mean_variance_estimator___calculate_gamma(params);
+ delta_sgp = ((sraw - params->m_Mean_Variance_Estimator___Mean) /
+ GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING);
+ if ((delta_sgp < 0.f)) {
+ c = (params->m_Mean_Variance_Estimator___Std - delta_sgp);
+ } else {
+ c = (params->m_Mean_Variance_Estimator___Std + delta_sgp);
+ }
+ additional_scaling = 1.f;
+ if ((c > 1440.f)) {
+ additional_scaling = ((c / 1440.f) * (c / 1440.f));
+ }
+ params->m_Mean_Variance_Estimator___Std =
+ (sqrtf((additional_scaling *
+ (GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING -
+ params->m_Mean_Variance_Estimator__Gamma_Variance))) *
+ sqrtf(
+ ((params->m_Mean_Variance_Estimator___Std *
+ (params->m_Mean_Variance_Estimator___Std /
+ (GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING *
+ additional_scaling))) +
+ (((params->m_Mean_Variance_Estimator__Gamma_Variance *
+ delta_sgp) /
+ additional_scaling) *
+ delta_sgp))));
+ params->m_Mean_Variance_Estimator___Mean =
+ (params->m_Mean_Variance_Estimator___Mean +
+ ((params->m_Mean_Variance_Estimator__Gamma_Mean * delta_sgp) /
+ GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__ADDITIONAL_GAMMA_MEAN_SCALING));
+ }
+}
+
+static void
+GasIndexAlgorithm__mean_variance_estimator___sigmoid__set_parameters(
+ GasIndexAlgorithmParams* params, float X0, float K) {
+
+ params->m_Mean_Variance_Estimator___Sigmoid__K = K;
+ params->m_Mean_Variance_Estimator___Sigmoid__X0 = X0;
+}
+
+static float GasIndexAlgorithm__mean_variance_estimator___sigmoid__process(
+ GasIndexAlgorithmParams* params, float sample) {
+
+ float x;
+
+ x = (params->m_Mean_Variance_Estimator___Sigmoid__K *
+ (sample - params->m_Mean_Variance_Estimator___Sigmoid__X0));
+ if ((x < -50.f)) {
+ return 1.f;
+ } else if ((x > 50.f)) {
+ return 0.f;
+ } else {
+ return (1.f / (1.f + expf(x)));
+ }
+}
+
+static void
+GasIndexAlgorithm__mox_model__set_parameters(GasIndexAlgorithmParams* params,
+ float SRAW_STD, float SRAW_MEAN) {
+
+ params->m_Mox_Model__Sraw_Std = SRAW_STD;
+ params->m_Mox_Model__Sraw_Mean = SRAW_MEAN;
+}
+
+static float
+GasIndexAlgorithm__mox_model__process(GasIndexAlgorithmParams* params,
+ float sraw) {
+
+ if ((params->mAlgorithm_Type == GasIndexAlgorithm_ALGORITHM_TYPE_NOX)) {
+ return (((sraw - params->m_Mox_Model__Sraw_Mean) /
+ GasIndexAlgorithm_SRAW_STD_NOX) *
+ params->mIndex_Gain);
+ } else {
+ return (((sraw - params->m_Mox_Model__Sraw_Mean) /
+ (-1.f * (params->m_Mox_Model__Sraw_Std +
+ GasIndexAlgorithm_SRAW_STD_BONUS_VOC))) *
+ params->mIndex_Gain);
+ }
+}
+
+static void GasIndexAlgorithm__sigmoid_scaled__set_parameters(
+ GasIndexAlgorithmParams* params, float X0, float K, float offset_default) {
+
+ params->m_Sigmoid_Scaled__K = K;
+ params->m_Sigmoid_Scaled__X0 = X0;
+ params->m_Sigmoid_Scaled__Offset_Default = offset_default;
+}
+
+static float
+GasIndexAlgorithm__sigmoid_scaled__process(GasIndexAlgorithmParams* params,
+ float sample) {
+
+ float x;
+ float shift;
+
+ x = (params->m_Sigmoid_Scaled__K * (sample - params->m_Sigmoid_Scaled__X0));
+ if ((x < -50.f)) {
+ return GasIndexAlgorithm_SIGMOID_L;
+ } else if ((x > 50.f)) {
+ return 0.f;
+ } else {
+ if ((sample >= 0.f)) {
+ if ((params->m_Sigmoid_Scaled__Offset_Default == 1.f)) {
+ shift = ((500.f / 499.f) * (1.f - params->mIndex_Offset));
+ } else {
+ shift = ((GasIndexAlgorithm_SIGMOID_L -
+ (5.f * params->mIndex_Offset)) /
+ 4.f);
+ }
+ return (((GasIndexAlgorithm_SIGMOID_L + shift) / (1.f + expf(x))) -
+ shift);
+ } else {
+ return ((params->mIndex_Offset /
+ params->m_Sigmoid_Scaled__Offset_Default) *
+ (GasIndexAlgorithm_SIGMOID_L / (1.f + expf(x))));
+ }
+ }
+}
+
+static void GasIndexAlgorithm__adaptive_lowpass__set_parameters(
+ GasIndexAlgorithmParams* params) {
+
+ params->m_Adaptive_Lowpass__A1 =
+ (params->mSamplingInterval /
+ (GasIndexAlgorithm_LP_TAU_FAST + params->mSamplingInterval));
+ params->m_Adaptive_Lowpass__A2 =
+ (params->mSamplingInterval /
+ (GasIndexAlgorithm_LP_TAU_SLOW + params->mSamplingInterval));
+ params->m_Adaptive_Lowpass___Initialized = false;
+}
+
+static float
+GasIndexAlgorithm__adaptive_lowpass__process(GasIndexAlgorithmParams* params,
+ float sample) {
+
+ float abs_delta;
+ float F1;
+ float tau_a;
+ float a3;
+
+ if ((params->m_Adaptive_Lowpass___Initialized == false)) {
+ params->m_Adaptive_Lowpass___X1 = sample;
+ params->m_Adaptive_Lowpass___X2 = sample;
+ params->m_Adaptive_Lowpass___X3 = sample;
+ params->m_Adaptive_Lowpass___Initialized = true;
+ }
+ params->m_Adaptive_Lowpass___X1 =
+ (((1.f - params->m_Adaptive_Lowpass__A1) *
+ params->m_Adaptive_Lowpass___X1) +
+ (params->m_Adaptive_Lowpass__A1 * sample));
+ params->m_Adaptive_Lowpass___X2 =
+ (((1.f - params->m_Adaptive_Lowpass__A2) *
+ params->m_Adaptive_Lowpass___X2) +
+ (params->m_Adaptive_Lowpass__A2 * sample));
+ abs_delta =
+ (params->m_Adaptive_Lowpass___X1 - params->m_Adaptive_Lowpass___X2);
+ if ((abs_delta < 0.f)) {
+ abs_delta = (-1.f * abs_delta);
+ }
+ F1 = expf((GasIndexAlgorithm_LP_ALPHA * abs_delta));
+ tau_a = (((GasIndexAlgorithm_LP_TAU_SLOW - GasIndexAlgorithm_LP_TAU_FAST) *
+ F1) +
+ GasIndexAlgorithm_LP_TAU_FAST);
+ a3 = (params->mSamplingInterval / (params->mSamplingInterval + tau_a));
+ params->m_Adaptive_Lowpass___X3 =
+ (((1.f - a3) * params->m_Adaptive_Lowpass___X3) + (a3 * sample));
+ return params->m_Adaptive_Lowpass___X3;
+}
\ No newline at end of file
diff --git a/lib/lib_i2c/arduino-i2c-sgp41/src/sensirion_gas_index_algorithm.h b/lib/lib_i2c/arduino-i2c-sgp41/src/sensirion_gas_index_algorithm.h
new file mode 100644
index 000000000..0bd584bb9
--- /dev/null
+++ b/lib/lib_i2c/arduino-i2c-sgp41/src/sensirion_gas_index_algorithm.h
@@ -0,0 +1,290 @@
+/*
+ * Copyright (c) 2022, Sensirion AG
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * * 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.
+ *
+ * * Neither the name of Sensirion AG 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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.
+ */
+
+#ifndef GASINDEXALGORITHM_H_
+#define GASINDEXALGORITHM_H_
+
+#include
+
+#ifndef __cplusplus
+
+#if __STDC_VERSION__ >= 199901L
+#include
+#else
+
+#ifndef bool
+#define bool int
+#define true 1
+#define false 0
+#endif // bool
+
+#endif // __STDC_VERSION__
+
+#endif // __cplusplus
+
+// Should be set by the building toolchain
+#ifndef LIBRARY_VERSION_NAME
+#define LIBRARY_VERSION_NAME "3.2.0"
+#endif
+
+#define GasIndexAlgorithm_ALGORITHM_TYPE_VOC (0)
+#define GasIndexAlgorithm_ALGORITHM_TYPE_NOX (1)
+#define GasIndexAlgorithm_DEFAULT_SAMPLING_INTERVAL (1.f)
+#define GasIndexAlgorithm_INITIAL_BLACKOUT (45.f)
+#define GasIndexAlgorithm_INDEX_GAIN (230.f)
+#define GasIndexAlgorithm_SRAW_STD_INITIAL (50.f)
+#define GasIndexAlgorithm_SRAW_STD_BONUS_VOC (220.f)
+#define GasIndexAlgorithm_SRAW_STD_NOX (2000.f)
+#define GasIndexAlgorithm_TAU_MEAN_HOURS (12.f)
+#define GasIndexAlgorithm_TAU_VARIANCE_HOURS (12.f)
+#define GasIndexAlgorithm_TAU_INITIAL_MEAN_VOC (20.f)
+#define GasIndexAlgorithm_TAU_INITIAL_MEAN_NOX (1200.f)
+#define GasIndexAlgorithm_INIT_DURATION_MEAN_VOC ((3600.f * 0.75f))
+#define GasIndexAlgorithm_INIT_DURATION_MEAN_NOX ((3600.f * 4.75f))
+#define GasIndexAlgorithm_INIT_TRANSITION_MEAN (0.01f)
+#define GasIndexAlgorithm_TAU_INITIAL_VARIANCE (2500.f)
+#define GasIndexAlgorithm_INIT_DURATION_VARIANCE_VOC ((3600.f * 1.45f))
+#define GasIndexAlgorithm_INIT_DURATION_VARIANCE_NOX ((3600.f * 5.70f))
+#define GasIndexAlgorithm_INIT_TRANSITION_VARIANCE (0.01f)
+#define GasIndexAlgorithm_GATING_THRESHOLD_VOC (340.f)
+#define GasIndexAlgorithm_GATING_THRESHOLD_NOX (30.f)
+#define GasIndexAlgorithm_GATING_THRESHOLD_INITIAL (510.f)
+#define GasIndexAlgorithm_GATING_THRESHOLD_TRANSITION (0.09f)
+#define GasIndexAlgorithm_GATING_VOC_MAX_DURATION_MINUTES ((60.f * 3.f))
+#define GasIndexAlgorithm_GATING_NOX_MAX_DURATION_MINUTES ((60.f * 12.f))
+#define GasIndexAlgorithm_GATING_MAX_RATIO (0.3f)
+#define GasIndexAlgorithm_SIGMOID_L (500.f)
+#define GasIndexAlgorithm_SIGMOID_K_VOC (-0.0065f)
+#define GasIndexAlgorithm_SIGMOID_X0_VOC (213.f)
+#define GasIndexAlgorithm_SIGMOID_K_NOX (-0.0101f)
+#define GasIndexAlgorithm_SIGMOID_X0_NOX (614.f)
+#define GasIndexAlgorithm_VOC_INDEX_OFFSET_DEFAULT (100.f)
+#define GasIndexAlgorithm_NOX_INDEX_OFFSET_DEFAULT (1.f)
+#define GasIndexAlgorithm_LP_TAU_FAST (20.0f)
+#define GasIndexAlgorithm_LP_TAU_SLOW (500.0f)
+#define GasIndexAlgorithm_LP_ALPHA (-0.2f)
+#define GasIndexAlgorithm_VOC_SRAW_MINIMUM (20000)
+#define GasIndexAlgorithm_NOX_SRAW_MINIMUM (10000)
+#define GasIndexAlgorithm_PERSISTENCE_UPTIME_GAMMA ((3.f * 3600.f))
+#define GasIndexAlgorithm_TUNING_INDEX_OFFSET_MIN (1)
+#define GasIndexAlgorithm_TUNING_INDEX_OFFSET_MAX (250)
+#define GasIndexAlgorithm_TUNING_LEARNING_TIME_OFFSET_HOURS_MIN (1)
+#define GasIndexAlgorithm_TUNING_LEARNING_TIME_OFFSET_HOURS_MAX (1000)
+#define GasIndexAlgorithm_TUNING_LEARNING_TIME_GAIN_HOURS_MIN (1)
+#define GasIndexAlgorithm_TUNING_LEARNING_TIME_GAIN_HOURS_MAX (1000)
+#define GasIndexAlgorithm_TUNING_GATING_MAX_DURATION_MINUTES_MIN (0)
+#define GasIndexAlgorithm_TUNING_GATING_MAX_DURATION_MINUTES_MAX (3000)
+#define GasIndexAlgorithm_TUNING_STD_INITIAL_MIN (10)
+#define GasIndexAlgorithm_TUNING_STD_INITIAL_MAX (5000)
+#define GasIndexAlgorithm_TUNING_GAIN_FACTOR_MIN (1)
+#define GasIndexAlgorithm_TUNING_GAIN_FACTOR_MAX (1000)
+#define GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__GAMMA_SCALING (64.f)
+#define GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__ADDITIONAL_GAMMA_MEAN_SCALING \
+ (8.f)
+#define GasIndexAlgorithm_MEAN_VARIANCE_ESTIMATOR__FIX16_MAX (32767.f)
+
+/**
+ * Struct to hold all parameters and states of the gas algorithm.
+ */
+typedef struct {
+ int mAlgorithm_Type;
+ float mSamplingInterval;
+ float mIndex_Offset;
+ int32_t mSraw_Minimum;
+ float mGating_Max_Duration_Minutes;
+ float mInit_Duration_Mean;
+ float mInit_Duration_Variance;
+ float mGating_Threshold;
+ float mIndex_Gain;
+ float mTau_Mean_Hours;
+ float mTau_Variance_Hours;
+ float mSraw_Std_Initial;
+ float mUptime;
+ float mSraw;
+ float mGas_Index;
+ bool m_Mean_Variance_Estimator___Initialized;
+ float m_Mean_Variance_Estimator___Mean;
+ float m_Mean_Variance_Estimator___Sraw_Offset;
+ float m_Mean_Variance_Estimator___Std;
+ float m_Mean_Variance_Estimator___Gamma_Mean;
+ float m_Mean_Variance_Estimator___Gamma_Variance;
+ float m_Mean_Variance_Estimator___Gamma_Initial_Mean;
+ float m_Mean_Variance_Estimator___Gamma_Initial_Variance;
+ float m_Mean_Variance_Estimator__Gamma_Mean;
+ float m_Mean_Variance_Estimator__Gamma_Variance;
+ float m_Mean_Variance_Estimator___Uptime_Gamma;
+ float m_Mean_Variance_Estimator___Uptime_Gating;
+ float m_Mean_Variance_Estimator___Gating_Duration_Minutes;
+ float m_Mean_Variance_Estimator___Sigmoid__K;
+ float m_Mean_Variance_Estimator___Sigmoid__X0;
+ float m_Mox_Model__Sraw_Std;
+ float m_Mox_Model__Sraw_Mean;
+ float m_Sigmoid_Scaled__K;
+ float m_Sigmoid_Scaled__X0;
+ float m_Sigmoid_Scaled__Offset_Default;
+ float m_Adaptive_Lowpass__A1;
+ float m_Adaptive_Lowpass__A2;
+ bool m_Adaptive_Lowpass___Initialized;
+ float m_Adaptive_Lowpass___X1;
+ float m_Adaptive_Lowpass___X2;
+ float m_Adaptive_Lowpass___X3;
+} GasIndexAlgorithmParams;
+
+/**
+ * Initialize the gas index algorithm parameters for the specified algorithm
+ * type and reset its internal states. Call this once at the beginning.
+ * @param params Pointer to the GasIndexAlgorithmParams struct
+ * @param algorithm_type 0 (GasIndexAlgorithm_ALGORITHM_TYPE_VOC) for VOC or
+ * 1 (GasIndexAlgorithm_ALGORITHM_TYPE_NOX) for NOx
+ */
+void GasIndexAlgorithm_init(GasIndexAlgorithmParams* params,
+ int32_t algorithm_type);
+
+/**
+ * Initialize the gas index algorithm parameters for the specified algorithm
+ * type and reset its internal states. Call this once at the beginning.
+ * @param params Pointer to the GasIndexAlgorithmParams struct
+ * @param algorithm_type 0 (GasIndexAlgorithm_ALGORITHM_TYPE_VOC) for VOC or
+ * 1 (GasIndexAlgorithm_ALGORITHM_TYPE_NOX) for NOx
+ * @param sampling_interval The sampling interval in seconds the algorithm is
+ * called. Tested for 1s and 10s.
+ */
+void GasIndexAlgorithm_init_with_sampling_interval(
+ GasIndexAlgorithmParams* params, int32_t algorithm_type,
+ float sampling_interval);
+
+/**
+ * Reset the internal states of the gas index algorithm. Previously set tuning
+ * parameters are preserved. Call this when resuming operation after a
+ * measurement interruption.
+ * @param params Pointer to the GasIndexAlgorithmParams struct
+ */
+void GasIndexAlgorithm_reset(GasIndexAlgorithmParams* params);
+
+/**
+ * Get current algorithm states. Retrieved values can be used in
+ * GasIndexAlgorithm_set_states() to resume operation after a short
+ * interruption, skipping initial learning phase.
+ * NOTE: This feature can only be used for VOC algorithm type and after at least
+ * 3 hours of continuous operation.
+ * @param params Pointer to the GasIndexAlgorithmParams struct
+ * @param state0 State0 to be stored
+ * @param state1 State1 to be stored
+ */
+void GasIndexAlgorithm_get_states(const GasIndexAlgorithmParams* params,
+ float* state0, float* state1);
+
+/**
+ * Set previously retrieved algorithm states to resume operation after a short
+ * interruption, skipping initial learning phase. This feature should not be
+ * used after interruptions of more than 10 minutes. Call this once after
+ * GasIndexAlgorithm_init() or GasIndexAlgorithm_reset() and the optional
+ * GasIndexAlgorithm_set_tuning_parameters(), if desired. Otherwise, the
+ * algorithm will start with initial learning phase.
+ * NOTE: This feature can only be used for VOC algorithm type.
+ * @param params Pointer to the GasIndexAlgorithmParams struct
+ * @param state0 State0 to be restored
+ * @param state1 State1 to be restored
+ */
+void GasIndexAlgorithm_set_states(GasIndexAlgorithmParams* params, float state0,
+ float state1);
+
+/**
+ * Set parameters to customize the gas index algorithm. Call this once after
+ * GasIndexAlgorithm_init() and before optional GasIndexAlgorithm_set_states(),
+ * if desired. Otherwise, the default values will be used.
+ *
+ * @param params Pointer to the GasIndexAlgorithmParams
+ * struct
+ * @param index_offset Gas index representing typical (average)
+ * conditions. Range 1..250,
+ * default 100 for VOC and 1 for NOx
+ * @param learning_time_offset_hours Time constant of long-term estimator for
+ * offset. Past events will be forgotten
+ * after about twice the learning time.
+ * Range 1..1000 [hours], default 12 [hours]
+ * @param learning_time_gain_hours Time constant of long-term estimator for
+ * gain. Past events will be forgotten
+ * after about twice the learning time.
+ * Range 1..1000 [hours], default 12 [hours]
+ * NOTE: This value is not relevant for NOx
+ * algorithm type
+ * @param gating_max_duration_minutes Maximum duration of gating (freeze of
+ * estimator during high gas index signal).
+ * 0 (no gating) or range 1..3000 [minutes],
+ * default 180 [minutes] for VOC and
+ * 720 [minutes] for NOx
+ * @param std_initial Initial estimate for standard deviation.
+ * Lower value boosts events during initial
+ * learning period, but may result in larger
+ * device-to-device variations.
+ * Range 10..5000, default 50
+ * NOTE: This value is not relevant for NOx
+ * algorithm type
+ * @param gain_factor Factor used to scale applied gain value
+ * when calculating gas index. Range 1..1000,
+ * default 230
+ */
+void GasIndexAlgorithm_set_tuning_parameters(
+ GasIndexAlgorithmParams* params, int32_t index_offset,
+ int32_t learning_time_offset_hours, int32_t learning_time_gain_hours,
+ int32_t gating_max_duration_minutes, int32_t std_initial,
+ int32_t gain_factor);
+
+/**
+ * Get current parameters to customize the gas index algorithm.
+ * Refer to GasIndexAlgorithm_set_tuning_parameters() for description of the
+ * parameters.
+ */
+void GasIndexAlgorithm_get_tuning_parameters(
+ const GasIndexAlgorithmParams* params, int32_t* index_offset,
+ int32_t* learning_time_offset_hours, int32_t* learning_time_gain_hours,
+ int32_t* gating_max_duration_minutes, int32_t* std_initial,
+ int32_t* gain_factor);
+
+/**
+ * Get the sampling interval parameter used by the algorithm.
+ */
+void GasIndexAlgorithm_get_sampling_interval(
+ const GasIndexAlgorithmParams* params, float* sampling_interval);
+
+/**
+ * Calculate the gas index value from the raw sensor value.
+ *
+ * @param params Pointer to the GasIndexAlgorithmParams struct
+ * @param sraw Raw value from the SGP4x sensor
+ * @param gas_index Calculated gas index value from the raw sensor value. Zero
+ * during initial blackout period and 1..500 afterwards
+ */
+void GasIndexAlgorithm_process(GasIndexAlgorithmParams* params, int32_t sraw,
+ int32_t* gas_index);
+
+#endif /* GASINDEXALGORITHM_H_ */
\ 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 d5d8edb3c..ea288d547 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp
@@ -111,18 +111,6 @@ void WiFiClass32::scrubDNS(void) {
} else {
dns_setserver(i, IP4_ADDR_ANY);
}
-#else // USE_IPV6
- uint32_t ip_dns = ip_addr_get_ip4_u32(dns_getserver(i));
- // Step 1. save valid values from DNS
- if (has_v4 && (uint32_t)ip_dns != 0) {
- ip_addr_set_ip4_u32_val(dns_save4[i], ip_dns);
- }
- // Step 2. scrub addresses not supported
- if (!has_v4) {
- ip_addr_set_ip4_u32_val(dns_save4[i], 0L);
- }
- // Step 3. restore saved value
- dns_setserver(i, &dns_save4[i]);
#endif // USE_IPV6
}
// AddLog(LOG_LEVEL_DEBUG, "IP>: DNS: from(%s %s) to (%s %s) has4/6:%i-%i", dns_entry0.c_str(), dns_entry1.c_str(), IPAddress(dns_getserver(0)).toString().c_str(), IPAddress(dns_getserver(1)).toString().c_str(), has_v4, has_v6);
diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP8266WiFi.h b/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP8266WiFi.h
index 943b89e9a..94cf3d6c1 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP8266WiFi.h
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP8266WiFi.h
@@ -76,8 +76,8 @@ public:
void scrubDNS(void);
protected:
- ip_addr_t dns_save4[DNS_MAX_SERVERS] = {}; // IPv4 DNS servers
#ifdef USE_IPV6
+ ip_addr_t dns_save4[DNS_MAX_SERVERS] = {}; // IPv4 DNS servers
ip_addr_t dns_save6[DNS_MAX_SERVERS] = {}; // IPv6 DNS servers
#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 dfc8c3dab..c886a666d 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.cpp
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.cpp
@@ -16,6 +16,7 @@
#ifdef ESP32
#include "Arduino.h"
+#include "esp_idf_version.h"
#include "esp8266toEsp32.h"
#include "driver/ledc.h"
@@ -33,7 +34,11 @@ enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_D
#else
#define LEDC_DEFAULT_CLK LEDC_AUTO_CLK
#endif
-#define LEDC_MAX_BIT_WIDTH SOC_LEDC_TIMER_BIT_WIDE_NUM
+#if (ESP_IDF_VERSION_MAJOR >= 5)
+ #define LEDC_MAX_BIT_WIDTH SOC_LEDC_TIMER_BIT_WIDTH
+#else
+ #define LEDC_MAX_BIT_WIDTH SOC_LEDC_TIMER_BIT_WIDE_NUM
+#endif
// define our limits to ease any change from esp-idf
#define MAX_TIMERS LEDC_TIMER_MAX // 4 timers for all ESP32 variants
diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
index c544d5d30..07bc9c2d5 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
@@ -53,7 +53,7 @@ uint8_t ledcReadResolution(uint8_t chan);
// was not yet attached.
//
// Returns: hardware channel number, or -1 if it failed
-int analogAttach(uint32_t pin, bool output_invert = false); // returns the ledc channel, or -1 if failed. This is implicitly called by analogWrite if the channel was not already allocated
+int32_t analogAttach(uint32_t pin, bool output_invert = false); // returns the ledc channel, or -1 if failed. This is implicitly called by analogWrite if the channel was not already allocated
// change both freq and range
// `0`: set to global value
diff --git a/lib/libesp32/berry/berry.exe b/lib/libesp32/berry/berry.exe
index 7dfe426b5..9d9068167 100644
Binary files a/lib/libesp32/berry/berry.exe and b/lib/libesp32/berry/berry.exe differ
diff --git a/lib/libesp32/berry/src/be_api.c b/lib/libesp32/berry/src/be_api.c
index fb2b8e017..ba5b915d2 100644
--- a/lib/libesp32/berry/src/be_api.c
+++ b/lib/libesp32/berry/src/be_api.c
@@ -1038,7 +1038,9 @@ BERRY_API int be_pcall(bvm *vm, int argc)
return be_protectedcall(vm, f, argc);
}
+#ifdef __GNUC__
__attribute__((noreturn))
+#endif
BERRY_API void be_raise(bvm *vm, const char *except, const char *msg)
{
be_pushstring(vm, except);
diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c
index 665d630f3..0a5c1747e 100644
--- a/lib/libesp32/berry/src/be_byteslib.c
+++ b/lib/libesp32/berry/src/be_byteslib.c
@@ -356,6 +356,40 @@ static uint16_t buf_get2_be(buf_impl* attr, size_t offset)
return 0;
}
+static uint32_t buf_get3_le(buf_impl* attr, size_t offset)
+{
+ if ((int32_t)offset + 2 < attr->len) {
+ return attr->bufptr[offset] | (attr->bufptr[offset+1] << 8) | (attr->bufptr[offset+2] << 16);
+ }
+ return 0;
+}
+
+static uint16_t buf_get3_be(buf_impl* attr, size_t offset)
+{
+ if ((int32_t)offset + 2 < attr->len) {
+ return attr->bufptr[offset+2] | (attr->bufptr[offset+1] << 8) | (attr->bufptr[offset] << 16);
+ }
+ return 0;
+}
+
+static void buf_set3_le(buf_impl* attr, size_t offset, uint32_t data)
+{
+ if ((int32_t)offset + 2 < attr->len) {
+ attr->bufptr[offset] = data & 0xFF;
+ attr->bufptr[offset+1] = (data >> 8) & 0xFF;
+ attr->bufptr[offset+2] = (data >> 16) & 0xFF;
+ }
+}
+
+static void buf_set3_be(buf_impl* attr, size_t offset, uint32_t data)
+{
+ if ((int32_t)offset + 2 < attr->len) {
+ attr->bufptr[offset+2] = data & 0xFF;
+ attr->bufptr[offset+1] = (data >> 8) & 0xFF;
+ attr->bufptr[offset] = (data >> 16) & 0xFF;
+ }
+}
+
static void buf_set4_le(buf_impl* attr, size_t offset, uint32_t data)
{
if ((int32_t)offset + 3 < attr->len) {
@@ -832,12 +866,18 @@ static int m_get(bvm *vm, bbool sign)
case 2: ret = buf_get2_le(&attr, idx);
if (sign) { ret = (int16_t)(uint16_t) ret; }
break;
+ case 3: ret = buf_get3_le(&attr, idx);
+ if (sign & (ret & 0x800000)) { ret = ret | 0xFF000000; }
+ break;
case 4: ret = buf_get4_le(&attr, idx); break;
case -2: ret = buf_get2_be(&attr, idx);
if (sign) { ret = (int16_t)(uint16_t) ret; }
break;
+ case -3: ret = buf_get3_be(&attr, idx);
+ if (sign & (ret & 0x800000)) { ret = ret | 0xFF000000; }
+ break;
case -4: ret = buf_get4_be(&attr, idx); break;
- default: be_raise(vm, "type_error", "size must be -4, -2, -1, 0, 1, 2 or 4.");
+ default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4.");
}
be_pop(vm, argc - 1);
if (vsize != 0) {
@@ -911,10 +951,12 @@ static int m_set(bvm *vm)
case -1: /* fallback below */
case 1: buf_set1(&attr, idx, value); break;
case 2: buf_set2_le(&attr, idx, value); break;
+ case 3: buf_set3_le(&attr, idx, value); break;
case 4: buf_set4_le(&attr, idx, value); break;
case -2: buf_set2_be(&attr, idx, value); break;
+ case -3: buf_set3_be(&attr, idx, value); break;
case -4: buf_set4_be(&attr, idx, value); break;
- default: be_raise(vm, "type_error", "size must be -4, -2, -1, 0, 1, 2 or 4.");
+ default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4.");
}
be_pop(vm, argc - 1);
m_write_attributes(vm, 1, &attr); /* update attributes */
diff --git a/lib/libesp32/berry/src/be_code.c b/lib/libesp32/berry/src/be_code.c
index 7c020524a..ac4208a01 100644
--- a/lib/libesp32/berry/src/be_code.c
+++ b/lib/libesp32/berry/src/be_code.c
@@ -78,20 +78,11 @@ static int codeABx(bfuncinfo *finfo, bopcode op, int a, int bx)
return codeinst(finfo, ISET_OP(op) | ISET_RA(a) | ISET_Bx(bx));
}
-/* Move value from register b to register a */
-static void code_move_nooptim(bfuncinfo *finfo, int a, int b)
-{
- if (isK(b)) {
- codeABx(finfo, OP_LDCONST, a, b & 0xFF);
- } else {
- codeABC(finfo, OP_MOVE, a, b, 0);
- }
-}
-
/* Move value from register b to register a */
/* Check the previous instruction to compact both instruction as one if possible */
/* If b is a constant, add LDCONST or add MOVE otherwise */
-static void code_move(bfuncinfo *finfo, int a, int b)
+/* returns false if the move operation happened, or true if there was a register optimization and `b` should be replaced by `a` */
+static bbool code_move(bfuncinfo *finfo, int a, int b)
{
if (finfo->pc) { /* If not the first instruction of the function */
binstruction *i = be_vector_end(&finfo->code); /* get the last instruction */
@@ -101,11 +92,23 @@ static void code_move(bfuncinfo *finfo, int a, int b)
int x = IGET_RA(*i), y = IGET_RKB(*i), z = IGET_RKC(*i);
if (b == x && (a == y || (op < OP_NEG && a == z))) {
*i = (*i & ~IRA_MASK) | ISET_RA(a);
- return;
+ return btrue;
+ }
+ }
+ if (!isK(b)) { /* OP_MOVE */
+ /* check if the previous OP_MOVE is not identical */
+ binstruction mov = ISET_OP(OP_MOVE) | ISET_RA(a) | ISET_RKB(b) | ISET_RKC(0);
+ if (mov == *i) {
+ return btrue; /* previous instruction is the same move, remove duplicate */
}
}
}
- code_move_nooptim(finfo, a, b);
+ if (isK(b)) {
+ codeABx(finfo, OP_LDCONST, a, b & 0xFF);
+ } else {
+ codeABC(finfo, OP_MOVE, a, b, 0);
+ }
+ return bfalse;
}
/* Free register at top (checks that it´s a register) */
@@ -113,7 +116,7 @@ static void code_move(bfuncinfo *finfo, int a, int b)
static void free_expreg(bfuncinfo *finfo, bexpdesc *e)
{
/* release temporary register */
- if (e && e->type == ETREG) {
+ if (e && e->type == ETREG && e->v.idx == finfo->freereg - 1) { /* free ETREG only if it's top of stack */
be_code_freeregs(finfo, 1);
}
}
@@ -690,10 +693,10 @@ int be_code_setvar(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2, bbool keep_reg)
switch (e1->type) {
case ETLOCAL: /* It can't be ETREG. */
if (e1->v.idx != src) {
- if (keep_reg) {
- code_move_nooptim(finfo, e1->v.idx, src); /* always do explicit move */
- } else {
- code_move(finfo, e1->v.idx, src); /* do explicit move only if needed */
+ bbool reg_optimized = code_move(finfo, e1->v.idx, src); /* do explicit move only if needed */
+ if (reg_optimized) {
+ free_expreg(finfo, e2); /* free source (checks only ETREG) */
+ *e2 = *e1; /* now e2 is e1 ETLOCAL */
}
}
break;
@@ -725,7 +728,7 @@ int be_code_nextreg(bfuncinfo *finfo, bexpdesc *e)
{
int dst = finfo->freereg;
int src = exp2anyreg(finfo, e); /* get variable register index */
- if (e->type != ETREG) { /* move local and const to new register */
+ if ((e->type != ETREG) || (src < dst - 1)) { /* move local and const to new register, don't move if already top of stack */
code_move(finfo, dst, src);
be_code_allocregs(finfo, 1);
} else {
diff --git a/lib/libesp32/berry/src/be_debuglib.c b/lib/libesp32/berry/src/be_debuglib.c
index 153af55fb..502935b6c 100644
--- a/lib/libesp32/berry/src/be_debuglib.c
+++ b/lib/libesp32/berry/src/be_debuglib.c
@@ -167,14 +167,45 @@ static int m_counters(bvm *vm)
map_insert(vm, "call", vm->counter_call);
map_insert(vm, "get", vm->counter_get);
map_insert(vm, "set", vm->counter_set);
+ map_insert(vm, "getgbl", vm->counter_get_global);
map_insert(vm, "try", vm->counter_try);
map_insert(vm, "raise", vm->counter_exc);
map_insert(vm, "objects", vm->counter_gc_kept);
+ map_insert(vm, "mem_alloc", vm->counter_mem_alloc);
+ map_insert(vm, "mem_free", vm->counter_mem_free);
+ map_insert(vm, "mem_realloc", vm->counter_mem_realloc);
be_pop(vm, 1);
be_return(vm);
}
#endif
+static int m_allocs(bvm *vm) {
+#if BE_USE_PERF_COUNTERS
+ be_pushint(vm, vm->counter_mem_alloc);
+ be_return(vm);
+#else
+ be_return_nil(vm);
+#endif
+}
+
+static int m_frees(bvm *vm) {
+#if BE_USE_PERF_COUNTERS
+ be_pushint(vm, vm->counter_mem_free);
+ be_return(vm);
+#else
+ be_return_nil(vm);
+#endif
+}
+
+static int m_reallocs(bvm *vm) {
+#if BE_USE_PERF_COUNTERS
+ be_pushint(vm, vm->counter_mem_realloc);
+ be_return(vm);
+#else
+ be_return_nil(vm);
+#endif
+}
+
#if !BE_USE_PRECOMPILED_OBJECT
be_native_module_attr_table(debug) {
be_native_module_function("attrdump", m_attrdump),
@@ -207,6 +238,10 @@ 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
+ // individual counters
+ allocs, func(m_allocs)
+ frees, func(m_frees)
+ reallocs, func(m_reallocs)
}
@const_object_info_end */
#include "../generate/be_fixed_debug.h"
diff --git a/lib/libesp32/berry/src/be_lexer.c b/lib/libesp32/berry/src/be_lexer.c
index 394a84007..8a038a507 100644
--- a/lib/libesp32/berry/src/be_lexer.c
+++ b/lib/libesp32/berry/src/be_lexer.c
@@ -41,7 +41,7 @@ static const char* const kwords_tab[] = {
"for", "def", "end", "class", "break", "continue",
"return", "true", "false", "nil", "var", "do",
"import", "as", "try", "except", "raise", "static",
- // ".f"
+ ":=",
};
void be_lexerror(blexer *lexer, const char *msg)
diff --git a/lib/libesp32/berry/src/be_listlib.c b/lib/libesp32/berry/src/be_listlib.c
index a98b679df..9cbfa38b0 100644
--- a/lib/libesp32/berry/src/be_listlib.c
+++ b/lib/libesp32/berry/src/be_listlib.c
@@ -262,6 +262,14 @@ static int m_size(bvm *vm)
be_return(vm);
}
+static int m_tobool(bvm *vm)
+{
+ be_getmember(vm, 1, ".p");
+ list_check_data(vm, 1);
+ be_pushbool(vm, be_data_size(vm, -1) > 0);
+ be_return(vm);
+}
+
static int m_resize(bvm *vm)
{
be_getmember(vm, 1, ".p");
@@ -507,6 +515,7 @@ void be_load_listlib(bvm *vm)
{ "reverse", m_reverse },
{ "copy", m_copy },
{ "keys", m_keys },
+ { "tobool", m_tobool }
{ "..", m_connect },
{ "+", m_merge },
{ "==", m_equal },
@@ -536,6 +545,7 @@ class be_class_list (scope: global, name: list) {
reverse, func(m_reverse)
copy, func(m_copy)
keys, func(m_keys)
+ tobool, func(m_tobool)
.., func(m_connect)
+, func(m_merge)
==, func(m_equal)
diff --git a/lib/libesp32/berry/src/be_maplib.c b/lib/libesp32/berry/src/be_maplib.c
index fc9f09fe7..bf05f1a29 100644
--- a/lib/libesp32/berry/src/be_maplib.c
+++ b/lib/libesp32/berry/src/be_maplib.c
@@ -150,6 +150,14 @@ static int m_size(bvm *vm)
be_return(vm);
}
+static int m_tobool(bvm *vm)
+{
+ be_getmember(vm, 1, ".p");
+ map_check_data(vm, 1);
+ be_pushbool(vm, be_data_size(vm, -1) > 0);
+ be_return(vm);
+}
+
static int iter_closure(bvm *vm)
{
/* for better performance, we operate the upvalues
@@ -229,6 +237,7 @@ void be_load_maplib(bvm *vm)
{ "insert", m_insert },
{ "iter", m_iter },
{ "keys", m_keys },
+ { "tobool", m_tobool }
{ NULL, NULL }
};
be_regclass(vm, "map", members);
@@ -249,6 +258,7 @@ class be_class_map (scope: global, name: map) {
insert, func(m_insert)
iter, func(m_iter)
keys, func(m_keys)
+ tobool, func(m_tobool)
}
@const_object_info_end */
#include "../generate/be_fixed_be_class_map.h"
diff --git a/lib/libesp32/berry/src/be_mem.c b/lib/libesp32/berry/src/be_mem.c
index 3657fd951..36e30866a 100644
--- a/lib/libesp32/berry/src/be_mem.c
+++ b/lib/libesp32/berry/src/be_mem.c
@@ -60,12 +60,18 @@ BERRY_API void* be_realloc(bvm *vm, void *ptr, size_t old_size, size_t new_size)
while (1) {
/* Case 1: new allocation */
+#if BE_USE_PERF_COUNTERS
+ vm->counter_mem_alloc++;
+#endif
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
+ vm->counter_mem_free++;
+#endif
if (ptr == NULL) { return NULL; } /* safeguard */
#if BE_USE_DEBUG_GC
memset(ptr, 0xFF, old_size); /* fill the structure with invalid pointers */
@@ -76,6 +82,9 @@ BERRY_API void* be_realloc(bvm *vm, void *ptr, size_t old_size, size_t new_size)
/* Case 3: reallocate with a different size */
else if (new_size && old_size) { // TODO we already know they are not null TODO
+#if BE_USE_PERF_COUNTERS
+ vm->counter_mem_realloc++;
+#endif
if (new_size <= POOL32_SIZE || old_size <=POOL32_SIZE) {
/* complex case with different pools */
if (new_size <= POOL16_SIZE && old_size <= POOL16_SIZE) {
diff --git a/lib/libesp32/berry/src/be_parser.c b/lib/libesp32/berry/src/be_parser.c
index df319318f..3afedf41c 100644
--- a/lib/libesp32/berry/src/be_parser.c
+++ b/lib/libesp32/berry/src/be_parser.c
@@ -196,6 +196,7 @@ static void begin_block(bfuncinfo *finfo, bblockinfo *binfo, int type)
finfo->binfo = binfo; /* tell parser this is the current block */
binfo->type = (bbyte)type;
binfo->hasupval = 0;
+ binfo->sideeffect = 0;
binfo->beginpc = finfo->pc; /* set starting pc for this block */
binfo->nactlocals = (bbyte)be_list_count(finfo->local); /* count number of local variables in previous block */
if (type & BLOCK_LOOP) {
@@ -796,6 +797,7 @@ static void call_expr(bparser *parser, bexpdesc *e)
int argc = 0, base;
int ismember = e->type == ETMEMBER;
+ parser->finfo->binfo->sideeffect = 1; /* has side effect */
/* func '(' [exprlist] ')' */
check_var(parser, e);
/* code function index to next register */
@@ -1030,11 +1032,13 @@ static void assign_expr(bparser *parser)
bexpdesc e;
btokentype op;
int line = parser->lexer.linenumber;
+ parser->finfo->binfo->sideeffect = 0; /* reinit side effect marker */
expr(parser, &e); /* left expression */
check_symbol(parser, &e);
op = get_assign_op(parser);
if (op != OP_NOT_ASSIGN) { /* assign operator */
bexpdesc e1;
+ parser->finfo->binfo->sideeffect = 1;
scan_next_token(parser);
compound_assign(parser, op, &e, &e1);
if (check_newvar(parser, &e)) { /* new variable */
@@ -1110,6 +1114,9 @@ static void sub_expr(bparser *parser, bexpdesc *e, int prio)
check_var(parser, e); /* check that left part is valid */
scan_next_token(parser); /* move to next token */
be_code_prebinop(finfo, op, e); /* and or */
+ if (op == OptConnect) {
+ parser->finfo->binfo->sideeffect = 1;
+ }
init_exp(&e2, ETVOID, 0);
sub_expr(parser, &e2, binary_op_prio(op)); /* parse right side */
if ((e2.type == ETVOID) && (op == OptConnect)) {
@@ -1131,9 +1138,12 @@ static void walrus_expr(bparser *parser, bexpdesc *e)
sub_expr(parser, e, ASSIGN_OP_PRIO); /* left expression */
btokentype op = next_type(parser);
if (op == OptWalrus) {
+ check_symbol(parser, e);
bexpdesc e1 = *e; /* copy var to e1, e will get the result of expression */
+ parser->finfo->binfo->sideeffect = 1; /* has side effect */
scan_next_token(parser); /* skip ':=' */
expr(parser, e);
+ check_var(parser, e);
if (check_newvar(parser, &e1)) { /* new variable */
new_var(parser, e1.v.s, e);
}
@@ -1556,7 +1566,25 @@ static void class_stmt(bparser *parser)
new_var(parser, name, &e);
be_code_class(parser->finfo, &e, c);
class_inherit(parser, &e);
+
+ bblockinfo binfo;
+ 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);
+ }
+ begin_varinfo(parser, class_str);
+
class_block(parser, c, &e);
+ end_block(parser);
+
be_class_compress(parser->vm, c); /* compress class size */
match_token(parser, KeyEnd); /* skip 'end' */
} else {
@@ -1756,6 +1784,9 @@ static void throw_stmt(bparser *parser)
static void statement(bparser *parser)
{
+ /* save value of sideeffect */
+ bbyte sideeffect = parser->finfo->binfo->sideeffect;
+ parser->finfo->binfo->sideeffect = 1; /* by default declare side effect */
switch (next_type(parser)) {
case KeyIf: if_stmt(parser); break;
case KeyWhile: while_stmt(parser); break;
@@ -1770,8 +1801,16 @@ static void statement(bparser *parser)
case KeyVar: var_stmt(parser); break;
case KeyTry: try_stmt(parser); break;
case KeyRaise: throw_stmt(parser); break;
- case OptSemic: scan_next_token(parser); break; /* empty statement */
- default: expr_stmt(parser); break;
+ case OptSemic:
+ parser->finfo->binfo->sideeffect = sideeffect; /* restore sideeffect */
+ scan_next_token(parser); break; /* empty statement */
+ default:
+ parser->finfo->binfo->sideeffect = sideeffect; /* restore sideeffect */
+ expr_stmt(parser);
+ if (comp_is_strict(parser->vm) && parser->finfo->binfo->sideeffect == 0) {
+ push_error(parser, "strict: expression without side effect detected");
+ }
+ break;
}
be_assert(parser->finfo->freereg >= be_list_count(parser->finfo->local));
}
diff --git a/lib/libesp32/berry/src/be_parser.h b/lib/libesp32/berry/src/be_parser.h
index 5b5510f2c..8498bfa99 100644
--- a/lib/libesp32/berry/src/be_parser.h
+++ b/lib/libesp32/berry/src/be_parser.h
@@ -53,6 +53,7 @@ typedef struct bblockinfo {
bbyte nactlocals; /* number of active local variables */
bbyte type; /* block type mask */
bbyte hasupval; /* has upvalue mark */
+ bbyte sideeffect; /* did the last expr/statement had a side effect */
int breaklist; /* break list */
int beginpc; /* begin pc */
int continuelist; /* continue list */
diff --git a/lib/libesp32/berry/src/be_rangelib.c b/lib/libesp32/berry/src/be_rangelib.c
index 3682ae3ce..187807021 100644
--- a/lib/libesp32/berry/src/be_rangelib.c
+++ b/lib/libesp32/berry/src/be_rangelib.c
@@ -11,31 +11,70 @@
static int m_init(bvm *vm)
{
+ int argc = be_top(vm);
+ if (argc < 3) { be_raise(vm, "value_error", "missing arguments"); }
+ if (!be_isint(vm, 2) || !be_isint(vm, 3)) { be_raise(vm, "value_error", "arguments must be 'int'"); }
be_pushvalue(vm, 2);
be_setmember(vm, 1, "__lower__");
be_pop(vm, 1);
be_pushvalue(vm, 3);
be_setmember(vm, 1, "__upper__");
+ int incr = 1; /* default increment is '1' */
+ if (argc >= 4) {
+ if (!be_isint(vm, 4)) { be_raise(vm, "value_error", "arguments must be 'int'"); }
+ incr = be_toint(vm, 4);
+ if (incr == 0) { be_raise(vm, "value_error", "increment cannot be zero"); }
+ }
+ be_pushint(vm, incr);
+ be_setmember(vm, 1, "__incr__");
be_return_nil(vm);
}
static int m_tostring(bvm *vm)
{
- be_pushstring(vm, "(");
- be_getmember(vm, 1, "__lower__");
- be_tostring(vm, -1);
- be_strconcat(vm, -2);
- be_pop(vm, 1);
- be_pushstring(vm, "..");
- be_strconcat(vm, -2);
- be_pop(vm, 1);
- be_getmember(vm, 1, "__upper__");
- be_tostring(vm, -1);
- be_strconcat(vm, -2);
- be_pop(vm, 1);
- be_pushstring(vm, ")");
- be_strconcat(vm, -2);
+ be_getmember(vm, 1, "__incr__");
+ int incr = be_toint(vm, -1);
be_pop(vm, 1);
+ if (incr == 1) {
+ be_pushstring(vm, "(");
+ be_getmember(vm, 1, "__lower__");
+ be_tostring(vm, -1);
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_pushstring(vm, "..");
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_getmember(vm, 1, "__upper__");
+ be_tostring(vm, -1);
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_pushstring(vm, ")");
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ } else {
+ be_pushstring(vm, "range(");
+ be_getmember(vm, 1, "__lower__");
+ be_tostring(vm, -1);
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_pushstring(vm, ", ");
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_getmember(vm, 1, "__upper__");
+ be_tostring(vm, -1);
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_pushstring(vm, ", ");
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_getmember(vm, 1, "__incr__");
+ be_tostring(vm, -1);
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ be_pushstring(vm, ")");
+ be_strconcat(vm, -2);
+ be_pop(vm, 1);
+ }
be_return(vm);
}
@@ -51,13 +90,30 @@ static int m_lower(bvm *vm)
be_return(vm);
}
+static int m_incr(bvm *vm)
+{
+ be_getmember(vm, 1, "__incr__");
+ be_return(vm);
+}
+
static int m_setrange(bvm *vm)
{
+ int argc = be_top(vm);
+ if (argc < 3) { be_raise(vm, "value_error", "missing arguments"); }
+ if (!be_isint(vm, 2) || !be_isint(vm, 3)) { be_raise(vm, "value_error", "arguments must be 'int'"); }
be_pushvalue(vm, 2);
be_setmember(vm, 1, "__lower__");
be_pop(vm, 1);
be_pushvalue(vm, 3);
be_setmember(vm, 1, "__upper__");
+ int incr = 1; /* default increment is '1' */
+ if (argc >= 4) {
+ if (!be_isint(vm, 4)) { be_raise(vm, "value_error", "arguments must be 'int'"); }
+ incr = be_toint(vm, 4);
+ if (incr == 0) { be_raise(vm, "value_error", "increment cannot be zero"); }
+ }
+ be_pushint(vm, incr);
+ be_setmember(vm, 1, "__incr__");
be_return_nil(vm);
}
@@ -68,25 +124,30 @@ static int iter_closure(bvm *vm)
bntvclos *func = var_toobj(vm->cf->func);
bvalue *uv0 = be_ntvclos_upval(func, 0)->value;
bvalue *uv1 = be_ntvclos_upval(func, 1)->value;
+ bvalue *uv2 = be_ntvclos_upval(func, 2)->value;
bint lower = var_toint(uv0); /* upvalue[0] => lower */
bint upper = var_toint(uv1); /* upvalue[1] => upper */
- if (lower > upper) {
+ bint incr = var_toint(uv2); /* upvalue[2] => incr */
+ if ((incr > 0 && lower > upper) || (incr < 0 && lower < upper)) {
be_stop_iteration(vm);
}
- var_toint(uv0) = lower + 1; /* set upvale[0] */
+ var_toint(uv0) = lower + incr; /* set upvale[0] */
be_pushint(vm, lower); /* push the return value */
be_return(vm);
}
static int m_iter(bvm *vm)
{
- be_pushntvclosure(vm, iter_closure, 2);
+ be_pushntvclosure(vm, iter_closure, 3);
be_getmember(vm, 1, "__lower__");
be_setupval(vm, -2, 0);
be_pop(vm, 1);
be_getmember(vm, 1, "__upper__");
be_setupval(vm, -2, 1);
be_pop(vm, 1);
+ be_getmember(vm, 1, "__incr__");
+ be_setupval(vm, -2, 2);
+ be_pop(vm, 1);
be_return(vm);
}
@@ -96,6 +157,7 @@ void be_load_rangelib(bvm *vm)
static const bnfuncinfo members[] = {
{ "__lower__", NULL },
{ "__upper__", NULL },
+ { "__incr__", NULL },
{ "init", m_init },
{ "tostring", m_tostring },
{ "lower", m_lower },
@@ -111,10 +173,12 @@ void be_load_rangelib(bvm *vm)
class be_class_range (scope: global, name: range) {
__lower__, var
__upper__, var
+ __incr__, var
init, func(m_init)
tostring, func(m_tostring)
lower, func(m_lower)
upper, func(m_upper)
+ incr, func(m_incr)
setrange, func(m_setrange)
iter, func(m_iter)
}
diff --git a/lib/libesp32/berry/src/be_vector.h b/lib/libesp32/berry/src/be_vector.h
index 3991986ca..15f399cc6 100644
--- a/lib/libesp32/berry/src/be_vector.h
+++ b/lib/libesp32/berry/src/be_vector.h
@@ -38,7 +38,6 @@ void be_vector_remove_end(bvector *vector);
void be_vector_resize(bvm *vm, bvector *vector, int count);
void be_vector_clear(bvector *vector);
void* be_vector_release(bvm *vm, bvector *vector);
-void* be_vector_release_32(bvm *vm, bvector *vector); /* specialized call for 32 bits aligned accesses */
int be_nextsize(int value);
#endif
diff --git a/lib/libesp32/berry/src/be_vm.c b/lib/libesp32/berry/src/be_vm.c
index eb2b6ef63..b234308d0 100644
--- a/lib/libesp32/berry/src/be_vm.c
+++ b/lib/libesp32/berry/src/be_vm.c
@@ -507,10 +507,14 @@ BERRY_API bvm* be_vm_new(void)
vm->counter_call = 0;
vm->counter_get = 0;
vm->counter_set = 0;
+ vm->counter_get_global = 0;
vm->counter_try = 0;
vm->counter_exc = 0;
vm->counter_gc_kept = 0;
vm->counter_gc_freed = 0;
+ vm->counter_mem_alloc = 0;
+ vm->counter_mem_free = 0;
+ vm->counter_mem_realloc = 0;
#endif
return vm;
}
@@ -579,6 +583,9 @@ newframe: /* a new call frame */
dispatch();
}
opcase(GETNGBL): { /* get Global by name */
+#if BE_USE_PERF_COUNTERS
+ vm->counter_get_global++;
+#endif
bvalue *v = RA();
bvalue *b = RKB();
if (var_isstr(b)) {
diff --git a/lib/libesp32/berry/src/be_vm.h b/lib/libesp32/berry/src/be_vm.h
index 1e83c912f..ba05579bf 100644
--- a/lib/libesp32/berry/src/be_vm.h
+++ b/lib/libesp32/berry/src/be_vm.h
@@ -114,10 +114,14 @@ struct bvm {
uint32_t counter_call; /* counter for calls, VM or native */
uint32_t counter_get; /* counter for GETMBR or GETMET */
uint32_t counter_set; /* counter for SETMBR */
+ uint32_t counter_get_global; /* counter for GETNBGL */
uint32_t counter_try; /* counter for `try` statement */
uint32_t counter_exc; /* counter for raised exceptions */
uint32_t counter_gc_kept; /* counter for objects scanned by last gc */
uint32_t counter_gc_freed; /* counter for objects freed by last gc */
+ uint32_t counter_mem_alloc; /* counter for memory allocations */
+ uint32_t counter_mem_free; /* counter for memory frees */
+ uint32_t counter_mem_realloc; /* counter for memory reallocations */
uint32_t micros_gc0;
uint32_t micros_gc1;
diff --git a/lib/libesp32/berry/src/berry.h b/lib/libesp32/berry/src/berry.h
index 206d35437..962a01ebb 100644
--- a/lib/libesp32/berry/src/berry.h
+++ b/lib/libesp32/berry/src/berry.h
@@ -478,15 +478,18 @@ typedef bclass_ptr bclass_array[];
#endif
/**
- * @def PROTO_RUNTIME_BLOCK
+ * @def BE_DEBUG_SOURCE_FILE
* @brief conditional block in bproto depending on compilation options
*
*/
-#if BE_SOURCE_FILE
+#if BE_DEBUG_SOURCE_FILE
#define PROTO_SOURCE_FILE(n) \
- ((bstring*) _source), /**< source */
+ ((bstring*) n), /**< source */
+ #define PROTO_SOURCE_FILE_STR(n) \
+ be_local_const_str(n##_str_source), /**< source */
#else
#define PROTO_SOURCE_FILE(n)
+ #define PROTO_SOURCE_FILE_STR(n)
#endif
/**
@@ -496,8 +499,8 @@ typedef bclass_ptr bclass_array[];
*/
#if BE_DEBUG_RUNTIME_INFO
#define PROTO_RUNTIME_BLOCK \
- NULL, /**< varinfo */ \
- 0, /**< nvarinfo */
+ NULL, /**< lineinfo */ \
+ 0, /**< nlineinfo */
#else
#define PROTO_RUNTIME_BLOCK
#endif
@@ -538,7 +541,7 @@ typedef bclass_ptr bclass_array[];
BE_IIF(_is_subproto)((struct bproto**)&_name##_subproto,NULL), /**< bproto **ptab */ \
(binstruction*) &_name##_code, /**< code */ \
be_local_const_str(_name##_str_name), /**< name */ \
- be_local_const_str(_name##_str_source), /**< source */ \
+ PROTO_SOURCE_FILE_STR(_name) /**< source */ \
PROTO_RUNTIME_BLOCK /**< */ \
PROTO_VAR_INFO_BLOCK /**< */ \
}
@@ -2062,7 +2065,9 @@ BERRY_API void be_exit(bvm *vm, int status);
* @param except
* @param msg
*/
+#ifdef __GNUC__
__attribute__((noreturn))
+#endif
BERRY_API void be_raise(bvm *vm, const char *except, const char *msg);
/**
diff --git a/lib/libesp32/berry/tests/bool.be b/lib/libesp32/berry/tests/bool.be
index ac5a69ab5..b0323c3df 100644
--- a/lib/libesp32/berry/tests/bool.be
+++ b/lib/libesp32/berry/tests/bool.be
@@ -36,7 +36,13 @@ assert(bool(3.5) == true)
assert(bool('') == false) # changed behavior
assert(bool('a') == true)
assert(bool(list) == true)
-assert(bool(list()) == true)
+assert(bool(list()) == false) # changed behavior
+assert(bool([]) == false) # changed behavior
+assert(bool([0]) == true)
+assert(bool(map()) == false) # changed behavior
+assert(bool({}) == false) # changed behavior
+assert(bool({false:false}) == true)
+assert(bool({nil:nil}) == false)# changed behavior - `nil` key is ignored so the map is empty
import introspect
assert(bool(introspect.toptr(0x1000)) == true)
diff --git a/lib/libesp32/berry/tests/class_static.be b/lib/libesp32/berry/tests/class_static.be
index 1b3d0f928..dbe8c222e 100644
--- a/lib/libesp32/berry/tests/class_static.be
+++ b/lib/libesp32/berry/tests/class_static.be
@@ -140,4 +140,18 @@ assert(classname(a) == 'A')
assert(classname(b) == 'B')
assert(A.B.f() == 1)
assert(b.g() == 2)
-assert(super(B) == nil)
+assert(super(A.B) == nil)
+
+#- `_class` initializer can now be used in initializer code -#
+class A
+ static var a = 1
+ static var b = _class
+ static var c = [_class.a, _class.b]
+ static def f(x)
+ return _class
+ end
+end
+assert(A.a == 1)
+assert(A.b == A)
+assert(A.c == [1, A])
+assert(A.f(1) == A)
diff --git a/lib/libesp32/berry/tests/range.be b/lib/libesp32/berry/tests/range.be
new file mode 100644
index 000000000..08b5add8d
--- /dev/null
+++ b/lib/libesp32/berry/tests/range.be
@@ -0,0 +1,39 @@
+# test for ranges
+
+# expand a range object as list
+def expand(iter)
+ var ret = []
+ for i: iter
+ ret.push(i)
+ end
+ return ret
+end
+
+assert(expand(0..5) == [0, 1, 2, 3, 4, 5])
+assert(expand(0..0) == [0])
+assert(expand(5..0) == [])
+var r = 1..5
+assert(r.lower() == 1)
+assert(r.upper() == 5)
+assert(r.incr() == 1)
+
+assert(expand(range(0,5)) == [0, 1, 2, 3, 4, 5])
+assert(expand(range(0,5,2)) == [0, 2, 4])
+assert(expand(range(0,5,12)) == [0])
+assert(expand(range(0,5,-1)) == [])
+
+assert(expand(range(5,0,-1)) == [5, 4, 3, 2, 1, 0])
+assert(expand(range(5,0,-2)) == [5, 3, 1])
+assert(expand(range(5,5,-2)) == [5])
+assert(expand(range(0,5,-2)) == [])
+
+def assert_value_error(c)
+ try
+ compile(c)()
+ assert(false, 'unexpected execution flow')
+ except 'value_error' as e, m
+ end
+end
+
+# range with increment zero shoud raise an error
+assert_value_error("range(1,2,0)")
diff --git a/lib/libesp32/berry/tests/string.be b/lib/libesp32/berry/tests/string.be
index 072e5faa7..82f824451 100644
--- a/lib/libesp32/berry/tests/string.be
+++ b/lib/libesp32/berry/tests/string.be
@@ -147,3 +147,25 @@ assert(string.format("%s", nil) == 'nil')
assert(string.format("%s", true) == 'true')
assert(string.format("%s", false) == 'false')
+# format is now synonym to string.format
+assert(format == string.format)
+assert(format("%.1f", 3) == '3.0')
+
+# f-strings
+assert(f"" == '')
+assert(f'' == '')
+assert(f"abc\n\r\t" == 'abc\n\r\t')
+assert(f'{{a}}' == '{a}')
+assert(f'\\\\' == '\\\\')
+
+assert(f"A = {1+1}" == 'A = 2')
+assert(f"A = {1+1:s}" == 'A = 2')
+assert(f"A = {1+1:i}" == 'A = 2')
+assert(f"A = {1+1:04i}" == 'A = 0002')
+
+assert(f"P = {3.1415:.2f}" == 'P = 3.14')
+
+var a = 'foobar{0}'
+assert(f"S = {a}" == 'S = foobar{0}')
+assert(f"S = {a:i}" == 'S = 0')
+assert(f"{a=}" == 'a=foobar{0}')
diff --git a/lib/libesp32/berry/tests/walrus.be b/lib/libesp32/berry/tests/walrus.be
new file mode 100644
index 000000000..faa92fa15
--- /dev/null
+++ b/lib/libesp32/berry/tests/walrus.be
@@ -0,0 +1,35 @@
+# test for the walrus operator
+var a = 1
+assert((a := a + 1) == 2)
+assert((a := a + 1) == 3)
+
+def f()
+ var defer = 10
+ var ret = []
+ for i:0..100
+ if (defer := defer - 1) == 0
+ ret.push(i)
+ defer = 10
+ end
+ end
+ return ret
+end
+assert(f() == [9, 19, 29, 39, 49, 59, 69, 79, 89, 99])
+
+# test for expressions with no side effects
+def assert_attribute_error(c)
+ try
+ compile(c)()
+ assert(false, 'unexpected execution flow')
+ except 'syntax_error' as e, m
+ end
+end
+
+# below the expressions `a` or `a b` have no side effect and do not generate any code, this is an error when in strict mode
+import strict
+var a, b
+assert_attribute_error("var a,b def f() a b end")
+assert_attribute_error("var a,b def f() a end")
+
+# while the following does have side effect
+def f() a := b end
diff --git a/lib/libesp32/berry/tools/grammar/berry.ebnf b/lib/libesp32/berry/tools/grammar/berry.ebnf
index 1b387ae0d..86eef9b58 100644
--- a/lib/libesp32/berry/tools/grammar/berry.ebnf
+++ b/lib/libesp32/berry/tools/grammar/berry.ebnf
@@ -5,9 +5,10 @@ block = {statement};
(* statement define *)
statement = class_stmt | func_stmt | var_stmt | if_stmt | while_stmt |
for_stmt | break_stmt | return_stmt | expr_stmt | import_stmt |
- try_stmt | throw_stmt | ';';
+ try_stmt | throw_stmt | do_stmt | ';';
if_stmt = 'if' expr block {'elif' expr block} ['else' block] 'end';
while_stmt = 'while' expr block 'end';
+do_stmt = 'do' block 'end';
for_stmt = 'for' ID ':' expr block 'end';
break_stmt = 'break' | 'continue';
return_stmt = 'return' [expr];
@@ -28,7 +29,7 @@ throw_stmt = 'raise' expr [',' expr];
var_stmt = 'var' ID ['=' expr] {',' ID ['=' expr]};
(* expression define *)
expr_stmt = expr [assign_op expr];
-expr = suffix_expr | unop expr | expr binop expr | range_expr | cond_expr;
+expr = suffix_expr | unop expr | expr binop expr | range_expr | cond_expr | walrus_expr;
cond_expr = expr '?' expr ':' expr; (* conditional expression *)
assign_op = '=' | '+=' | '-=' | '*=' | '/=' |
'%=' | '&=' | '|=' | '^=' | '<<=' | '>>=';
@@ -36,9 +37,11 @@ binop = '<' | '<=' | '==' | '!=' | '>' | '>=' | '||' | '&&' |
'<<' | '>>' | '&' | '|' | '^' | '+' | '-' | '*' | '/' | '%';
range_expr = expr '..' [expr]
unop = '-' | '!' | '~';
+walrus_expr = expr ':=' expr
suffix_expr = primary_expr {call_expr | ('.' ID) | '[' expr ']'};
primary_expr = '(' expr ')' | simple_expr | list_expr | map_expr | anon_func | lambda_expr;
-simple_expr = INTEGER | REAL | STRING | ID | 'true' | 'false' | 'nil';
+simple_expr = INTEGER | REAL | STRING | ID | 'true' | 'false' | 'nil' | f_string;
+f_string = 'f' STRING
call_expr = '(' [expr {',' expr}] ')';
list_expr = '[' {expr ','} [expr] ']';
map_expr = '{' {expr ':' expr ','} [expr ':' expr] '}';
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/.vsixmanifest b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/.vsixmanifest
similarity index 100%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/.vsixmanifest
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/.vsixmanifest
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/CHANGELOG.md b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/CHANGELOG.md
similarity index 73%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/CHANGELOG.md
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/CHANGELOG.md
index 6f51bbcca..2867fd3ab 100755
--- a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/CHANGELOG.md
+++ b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/CHANGELOG.md
@@ -4,4 +4,5 @@ All notable changes to the "none" extension will be documented in this file.
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
## [Unreleased]
-- Initial release
\ No newline at end of file
+- Initial release
+- add support for f-strings, `_class` and indent on `do`
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/README.md b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/README.md
similarity index 100%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/README.md
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/README.md
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/berry-configuration.json b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/berry-configuration.json
similarity index 93%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/berry-configuration.json
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/berry-configuration.json
index 4be01969f..50dde1c39 100755
--- a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/berry-configuration.json
+++ b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/berry-configuration.json
@@ -26,7 +26,7 @@
["'", "'"]
],
"indentationRules": {
- "increaseIndentPattern": "(^((\\s*(class|while|for|if|elif|else|try|except))|(.*\\bdef))\\b((?!\\b(end)\\b).)*)$",
+ "increaseIndentPattern": "(^((\\s*(class|while|for|if|elif|else|try|except|do))|(.*\\bdef))\\b((?!\\b(end)\\b).)*)$",
"decreaseIndentPattern": "^\\s*((\\b(elif|else|except|end)\\b)|(\\)))"
}
}
\ No newline at end of file
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/berry-icon.png b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/berry-icon.png
similarity index 100%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/berry-icon.png
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/berry-icon.png
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/package.json b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/package.json
similarity index 98%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/package.json
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/package.json
index 1f206315b..6837eb54e 100755
--- a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/package.json
+++ b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/package.json
@@ -2,7 +2,7 @@
"name": "berry",
"displayName": "Berry Script Language",
"description": "A small embedded script language.",
- "version": "0.1.0",
+ "version": "1.1.0",
"publisher": "skiars",
"engines": {
"vscode": "^1.15.1"
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/syntaxes/berry.json b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/syntaxes/berry.json
similarity index 56%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/syntaxes/berry.json
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/syntaxes/berry.json
index 661d969a5..4087fb10c 100755
--- a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/syntaxes/berry.json
+++ b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/syntaxes/berry.json
@@ -44,11 +44,55 @@
"patterns": [
{
"name": "string.quoted.double.berry",
- "match": "\"(\\\\.|[^\"])*\""
+ "begin": "(\"|')",
+ "end": "\\1",
+ "patterns": [
+ {
+ "name": "constant.character.escape.berry",
+ "match": "(\\\\x[\\h]{2})|(\\\\[0-7]{3})|(\\\\\\\\)|(\\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)"
+ }
+ ]
},
{
- "name": "string.quoted.single.berry",
- "match": "'(\\\\.|[^'])*'"
+ "name": "string.quoted.other.berry",
+ "begin": "f(\"|')",
+ "end": "\\1",
+ "patterns": [
+ {
+ "name": "constant.character.escape.berry",
+ "match": "(\\\\x[\\h]{2})|(\\\\[0-7]{3})|(\\\\\\\\)|(\\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)"
+ },
+ {
+ "name": "string.quoted.other.berry",
+ "match": "\\{\\{[^\\}]*\\}\\}"
+ },
+ {
+ "name": "keyword.other.unit.berry",
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#identifier"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#member"
+ },
+ {
+ "include": "#function"
+ }
+ ]
+ }
+
+ ]
}
]
},
@@ -67,7 +111,7 @@
"keywords": {
"patterns": [{
"name": "keyword.berry",
- "match": "\\b(var|static|def|class|true|false|nil|self|super|import|as)\\b"
+ "match": "\\b(var|static|def|class|true|false|nil|self|super|import|as|_class)\\b"
}]
},
"identifier": {
diff --git a/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/syntaxes/bytecode.json b/lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/syntaxes/bytecode.json
similarity index 100%
rename from lib/libesp32/berry/tools/plugins/vscode/skiars.berry-0.1.0/syntaxes/bytecode.json
rename to lib/libesp32/berry/tools/plugins/vscode/skiars.berry-1.1.0/syntaxes/bytecode.json
diff --git a/lib/libesp32/berry_int64/library.json b/lib/libesp32/berry_int64/library.json
index 8fe3f3258..6c72492e1 100644
--- a/lib/libesp32/berry_int64/library.json
+++ b/lib/libesp32/berry_int64/library.json
@@ -1,5 +1,5 @@
{
- "name": "Berry int64 implementation for 32 bits architceture",
+ "name": "Berry int64 implementation for 32 bits architecture",
"version": "1.0",
"description": "Berry int64",
"license": "MIT",
diff --git a/lib/libesp32/berry_mapping/src/be_cb_module.c b/lib/libesp32/berry_mapping/src/be_cb_module.c
index 8054398d4..111ba95e0 100644
--- a/lib/libesp32/berry_mapping/src/be_cb_module.c
+++ b/lib/libesp32/berry_mapping/src/be_cb_module.c
@@ -22,10 +22,10 @@ enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_D
* We allow 4 parameters, or 3 if method (first arg is `self`)
* This could be extended if needed
\*********************************************************************************************/
-typedef int32_t (*berry_callback_t)(int32_t v0, int32_t v1, int32_t v2, int32_t v3);
-static int32_t call_berry_cb(int32_t num, int32_t v0, int32_t v1, int32_t v2, int32_t v3);
+typedef int (*berry_callback_t)(int v0, int v1, int v2, int v3);
+static int call_berry_cb(int num, int v0, int v1, int v2, int v3);
-#define BERRY_CB(n) int32_t berry_cb_##n(int32_t v0, int32_t v1, int32_t v2, int32_t v3) { return call_berry_cb(n, v0, v1, v2, v3); }
+#define BERRY_CB(n) int berry_cb_##n(int v0, int v1, int v2, int v3) { return call_berry_cb(n, v0, v1, v2, v3); }
// list the callbacks
BERRY_CB(0);
BERRY_CB(1);
@@ -85,7 +85,7 @@ typedef struct be_callback_handler_list_t {
static be_callback_hook be_cb_hooks[BE_MAX_CB] = {0};
-static int32_t be_cb_gen_cb(bvm *vm);
+static int be_cb_gen_cb(bvm *vm);
static be_callback_handler_list_t be_callback_default_gen_cb = {
NULL,
be_const_func(&be_cb_gen_cb),
@@ -102,7 +102,7 @@ static be_callback_handler_list_t *be_callback_handler_list_head = &be_callback_
*
* arg1: function (or closure)
\*********************************************************************************************/
-static int32_t be_cb_add_handler(bvm *vm) {
+static int be_cb_add_handler(bvm *vm) {
int32_t top = be_top(vm);
if (top >= 1 && be_isfunction(vm, 1)) {
bvalue *v = be_indexof(vm, 1);
@@ -129,7 +129,7 @@ static int32_t be_cb_add_handler(bvm *vm) {
*
* No args
\*********************************************************************************************/
-static int32_t be_cb_list_handlers(bvm *vm) {
+static int be_cb_list_handlers(bvm *vm) {
be_newobject(vm, "list");
for (be_callback_handler_list_t *elt = be_callback_handler_list_head; elt != NULL; elt = elt->next) {
if (elt->vm == vm) { /* on purpose don't show the default handler, just pretend it's not there since it's default */
@@ -153,7 +153,7 @@ static int32_t be_cb_list_handlers(bvm *vm) {
* arg2: type name for callback (optional)
* argN: any other callback specific arguments (unlimited number, passed as-is)
\*********************************************************************************************/
-static int32_t be_cb_make_cb(bvm *vm) {
+static int be_cb_make_cb(bvm *vm) {
int32_t argc = be_top(vm);
if (argc >= 1 && be_isfunction(vm, 1)) {
@@ -187,7 +187,7 @@ static int32_t be_cb_make_cb(bvm *vm) {
*
* arg1: function (or closure)
\*********************************************************************************************/
-static int32_t be_cb_gen_cb(bvm *vm) {
+static int be_cb_gen_cb(bvm *vm) {
int32_t top = be_top(vm);
// tasmota_log_C(LOG_LEVEL_DEBUG, "BRY: gen_cb() called");
if (top >= 1 && be_isfunction(vm, 1)) {
@@ -217,7 +217,7 @@ static int32_t be_cb_gen_cb(bvm *vm) {
* `get_cb_list`: Return the list of callbacks for this vm
*
\*********************************************************************************************/
-static int32_t be_cb_get_cb_list(bvm *vm) {
+static int be_cb_get_cb_list(bvm *vm) {
be_newobject(vm, "list");
for (uint32_t i=0; i < BE_MAX_CB; i++) {
if (be_cb_hooks[i].vm) {
@@ -242,7 +242,7 @@ static int32_t be_cb_get_cb_list(bvm *vm) {
* We allow 4 parameters, or 3 if method (first arg is `self`)
* This could be extended if needed
\*********************************************************************************************/
-static int32_t call_berry_cb(int32_t num, int32_t v0, int32_t v1, int32_t v2, int32_t v3) {
+static int call_berry_cb(int num, int v0, int v1, int v2, int v3) {
// call berry cb dispatcher
int32_t ret = 0;
// retrieve vm and function
@@ -271,6 +271,26 @@ static int32_t call_berry_cb(int32_t num, int32_t v0, int32_t v1, int32_t v2, in
return ret;
}
+/*********************************************************************************************\
+ * `be_cb_deinit`:
+ * Clean any callback for this VM, they shouldn't call the registerd function anymore
+\*********************************************************************************************/
+void be_cb_deinit(bvm *vm) {
+ // remove all cb for this vm
+ for (int32_t slot = 0; slot < BE_MAX_CB; slot++) {
+ if (be_cb_hooks[slot].vm == vm) {
+ be_cb_hooks[slot].vm = NULL;
+ be_cb_hooks[slot].f.type == BE_NIL;
+ }
+ }
+ // remove the vm gen_cb for this vm
+ for (be_callback_handler_list_t **elt_ptr = &be_callback_handler_list_head; *elt_ptr != NULL; elt_ptr = &(*elt_ptr)->next) {
+ if (((*elt_ptr)->next != NULL) && ((*elt_ptr)->next->vm == vm)) {
+ (*elt_ptr)->next = (*elt_ptr)->next->next;
+ }
+ }
+}
+
/* @const_object_info_begin
module cb (scope: global) {
gen_cb, func(be_cb_gen_cb)
diff --git a/lib/libesp32/berry_mapping/src/be_mapping.h b/lib/libesp32/berry_mapping/src/be_mapping.h
index 9876278f3..f0ab9d22c 100644
--- a/lib/libesp32/berry_mapping/src/be_mapping.h
+++ b/lib/libesp32/berry_mapping/src/be_mapping.h
@@ -109,6 +109,8 @@ extern int be_check_arg_type(bvm *vm, int arg_start, int argc, const char * arg_
extern int be_call_c_func(bvm *vm, const void * func, const char * return_type, const char * arg_type);
extern int be_call_ctype_func(bvm *vm, const void *definition); /* handler for Berry vm */
+extern void be_cb_deinit(bvm *vm); /* remove all callbacks from the VM (just before shutdown of VM) */
+
#ifdef __cplusplus
}
#endif
diff --git a/lib/libesp32/berry_matter/src/be_matter_misc.cpp b/lib/libesp32/berry_matter/src/be_matter_misc.cpp
index 2ec805183..0e57c2aa5 100644
--- a/lib/libesp32/berry_matter/src/be_matter_misc.cpp
+++ b/lib/libesp32/berry_matter/src/be_matter_misc.cpp
@@ -31,6 +31,7 @@ static uint8_t ip_bytes[16] = {};
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()) {
uint32_t ip_32 = ip;
memcpy(ip_bytes, &ip_32, 4);
@@ -39,6 +40,11 @@ extern "C" const void* matter_get_ip_bytes(const char* ip_str, size_t* ret_len)
memcpy(ip_bytes, ip.raw6(), 16);
*ret_len = 16;
}
+#else
+ uint32_t ip_32 = ip;
+ memcpy(ip_bytes, &ip_32, 4);
+ *ret_len = 4;
+#endif
return ip_bytes;
} else {
*ret_len = 0;
diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c
index 8fa29d934..9c28d4014 100644
--- a/lib/libesp32/berry_matter/src/be_matter_module.c
+++ b/lib/libesp32/berry_matter/src/be_matter_module.c
@@ -204,6 +204,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "solidify/solidified_Matter_Base38.h"
#include "solidify/solidified_Matter_UI.h"
#include "solidify/solidified_Matter_Device.h"
+#include "solidify/solidified_Matter_Profiler.h"
#include "../generate/be_matter_certs.h"
@@ -287,6 +288,7 @@ module matter (scope: global, strings: weak) {
sort, closure(matter_sort_closure)
jitter, closure(matter_jitter_closure)
inspect, closure(matter_inspect_closure)
+ Profiler, class(be_class_Matter_Profiler)
// Status codes
SUCCESS, int(0x00)
@@ -336,6 +338,7 @@ module matter (scope: global, strings: weak) {
StatusIB, class(be_class_Matter_StatusIB)
StatusResponseMessage, class(be_class_Matter_StatusResponseMessage)
ReadRequestMessage, class(be_class_Matter_ReadRequestMessage)
+ ReadRequestMessage_solo, class(be_class_Matter_ReadRequestMessage_solo)
ReportDataMessage, class(be_class_Matter_ReportDataMessage)
SubscribeRequestMessage, class(be_class_Matter_SubscribeRequestMessage)
SubscribeResponseMessage, class(be_class_Matter_SubscribeResponseMessage)
@@ -343,6 +346,7 @@ module matter (scope: global, strings: weak) {
WriteResponseMessage, class(be_class_Matter_WriteResponseMessage)
TimedRequestMessage, class(be_class_Matter_TimedRequestMessage)
InvokeRequestMessage, class(be_class_Matter_InvokeRequestMessage)
+ InvokeRequestMessage_solo, class(be_class_Matter_InvokeRequestMessage_solo)
InvokeResponseMessage, class(be_class_Matter_InvokeResponseMessage)
// Matter Commisioning messages
diff --git a/lib/libesp32/berry_matter/src/be_matter_qrcode.c b/lib/libesp32/berry_matter/src/be_matter_qrcode.c
index 5bcddef86..9892cda93 100644
--- a/lib/libesp32/berry_matter/src/be_matter_qrcode.c
+++ b/lib/libesp32/berry_matter/src/be_matter_qrcode.c
@@ -32,7 +32,7 @@
// `matter.QRCode.encode_str(content:string) -> map`
//
-int32_t qr_encode_str(bvm *vm) {
+int qr_encode_str(bvm *vm) {
int32_t argc = be_top(vm);
if (argc >= 1 && be_isstring(vm, 1)) {
const char * data_str = be_tostring(vm, 1);
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
index df9ca5343..db7bc669e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
@@ -130,7 +130,7 @@ class Matter_Commisioning_Context
# record the initiator_session_id
session.__future_initiator_session_id = pbkdfparamreq.initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
- tasmota.log(format("MTR: New_Session(%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
+ tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
# prepare response
var pbkdfparamresp = matter.PBKDFParamResponse()
@@ -235,7 +235,7 @@ class Matter_Commisioning_Context
var raw = resp.encode_frame(pake2_raw)
# log the fact that a new commissioning is starting
- tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port))
+ tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
self.responder.send_response_frame(resp)
return true
@@ -265,7 +265,7 @@ class Matter_Commisioning_Context
end
# send PakeFinished and compute session key
- var created = tasmota.rtc()['utc']
+ var created = tasmota.rtc_utc()
var session_keys = crypto.HKDF_SHA256().derive(session.__spake_Ke, bytes(), bytes().fromstring(self.SEKeys_Info), 48)
var I2RKey = session_keys[0..15]
var R2IKey = session_keys[16..31]
@@ -289,18 +289,22 @@ class Matter_Commisioning_Context
import crypto
# Validate Sigma1 Destination ID, p.162
# traverse all existing fabrics
- tasmota.log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 4)
+ if tasmota.loglevel(4)
+ tasmota.log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 4)
+ end
for fabric : self.device.sessions.fabrics
if fabric.noc == nil || fabric.fabric_id == nil || fabric.device_id == nil continue end
# compute candidateDestinationId, Section 4.13.2.4.1, “Destination Identifier”
var destinationMessage = initiatorRandom + fabric.get_ca_pub() + fabric.fabric_id + fabric.device_id
var key = fabric.get_ipk_group_key()
- tasmota.log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 4)
+ # tasmota.log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 4)
# tasmota.log("MTR: SIGMA1: key_ipk=" + key.tohex(), 4)
var h = crypto.HMAC_SHA256(key)
h.update(destinationMessage)
var candidateDestinationId = h.out()
- tasmota.log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 4)
+ if tasmota.loglevel(4)
+ tasmota.log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 4)
+ end
if candidateDestinationId == destinationId
return fabric
end
@@ -370,7 +374,7 @@ class Matter_Commisioning_Context
session.set_mode_CASE()
session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
- tasmota.log(format("MTR: New_Session(%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
+ tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
# Generate and Send Sigma2_Resume
session.shared_secret = session_resumption.shared_secret
@@ -406,7 +410,7 @@ class Matter_Commisioning_Context
var i2r = session_keys[0..15]
var r2i = session_keys[16..31]
var ac = session_keys[32..47]
- var created = tasmota.rtc()['utc']
+ var created = tasmota.rtc_utc()
# tasmota.log("MTR: ******************************", 4)
# tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4)
@@ -458,7 +462,7 @@ class Matter_Commisioning_Context
session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
- tasmota.log(format("MTR: New_Session(%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
+ tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
# tasmota.log("MTR: fabric="+matter.inspect(session._fabric), 4)
# tasmota.log("MTR: no_private_key="+session.get_pk().tohex(), 4)
@@ -538,7 +542,7 @@ class Matter_Commisioning_Context
var raw = resp.encode_frame(sigma2_raw)
# log the fact that a new connection is starting
- tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port))
+ tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
self.responder.send_response_frame(resp)
return true
@@ -658,7 +662,7 @@ class Matter_Commisioning_Context
var i2r = session_keys[0..15]
var r2i = session_keys[16..31]
var ac = session_keys[32..47]
- var created = tasmota.rtc()['utc']
+ var created = tasmota.rtc_utc()
# tasmota.log("MTR: ******************************", 4)
# tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
index dae8892dc..d272c4061 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
@@ -35,6 +35,7 @@ class Matter_Device
var plugins_config # map of JSON configuration for plugins
var plugins_config_remotes # map of information on each remote under "remotes" key, '{}' when empty
var udp_server # `matter.UDPServer()` object
+ var profiler
var message_handler # `matter.MessageHandler()` object
var sessions # `matter.Session_Store()` objet
var ui
@@ -63,6 +64,7 @@ class Matter_Device
var root_discriminator # as `int`
var root_passcode # as `int`
var ipv4only # advertize only IPv4 addresses (no IPv6)
+ var disable_bridge_mode # default is bridge mode, this flag disables this mode for some non-compliant controllers
var next_ep # next endpoint to be allocated for bridge, start at 1
# context for PBKDF
var root_iterations # PBKDF number of iterations
@@ -79,6 +81,7 @@ class Matter_Device
return
end # abort if SetOption 151 is not set
+ matter.profiler = matter.Profiler()
self.started = false
self.tick = 0
self.plugins = []
@@ -92,6 +95,7 @@ class Matter_Device
self.next_ep = 1 # start at endpoint 1 for dynamically allocated endpoints
self.root_salt = crypto.random(16)
self.ipv4only = false
+ self.disable_bridge_mode = false
self.load_param()
self.sessions = matter.Session_Store(self)
@@ -172,18 +176,24 @@ class Matter_Device
#####################################################################
# Remove a fabric and clean all corresponding values and mDNS entries
- def remove_fabric(fabric_parent)
- var sub_fabrics = self.sessions.find_children_fabrics(fabric_parent.get_fabric_index())
- if sub_fabrics == nil return end
- for fabric_index : sub_fabrics
- var fabric = self.sessions.find_fabric_by_index(fabric_index)
- if fabric != nil
- tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
- self.message_handler.im.subs_shop.remove_by_fabric(fabric)
- self.mdns_remove_op_discovery(fabric)
- self.sessions.remove_fabric(fabric)
- end
+ def remove_fabric(fabric)
+ if fabric != nil
+ tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
+ self.message_handler.im.subs_shop.remove_by_fabric(fabric)
+ self.mdns_remove_op_discovery(fabric)
+ self.sessions.remove_fabric(fabric)
end
+ # var sub_fabrics = self.sessions.find_children_fabrics(fabric_parent.get_fabric_index())
+ # if sub_fabrics == nil return end
+ # for fabric_index : sub_fabrics
+ # var fabric = self.sessions.find_fabric_by_index(fabric_index)
+ # if fabric != nil
+ # tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
+ # self.message_handler.im.subs_shop.remove_by_fabric(fabric)
+ # self.mdns_remove_op_discovery(fabric)
+ # self.sessions.remove_fabric(fabric)
+ # end
+ # end
self.sessions.save_fabrics()
end
@@ -379,7 +389,7 @@ class Matter_Device
if self.udp_server return end # already started
if port == nil port = 5540 end
tasmota.log("MTR: Starting UDP server on port: " + str(port), 2)
- self.udp_server = matter.UDPServer("", port)
+ self.udp_server = matter.UDPServer(self, "", port)
self.udp_server.start(/ raw, addr, port -> self.msg_received(raw, addr, port))
end
@@ -427,7 +437,7 @@ class Matter_Device
var fabric = session.get_fabric()
var fabric_id = fabric.get_fabric_id().copy().reverse().tohex()
var vendor_name = fabric.get_admin_vendor_name()
- tasmota.log(format("MTR: --- Commissioning complete for Fabric '%s' (Vendor %s) ---", fabric_id, vendor_name), 2)
+ tasmota.log(f"MTR: --- Commissioning complete for Fabric '{fabric_id}' (Vendor {vendor_name}) ---", 2)
self.stop_basic_commissioning() # by default close commissioning when it's complete
end
@@ -510,18 +520,15 @@ class Matter_Device
end
var endpoint = ctx.endpoint
- # var endpoint_mono = [ endpoint ]
- var endpoint_found = false # did any endpoint match
var cluster = ctx.cluster
- # var cluster_mono = [ cluster ]
- var cluster_found = false
var attribute = ctx.attribute
- # var attribute_mono = [ attribute ]
+ var endpoint_found = false # did any endpoint match
+ var cluster_found = false
var attribute_found = false
var direct = (ctx.endpoint != nil) && (ctx.cluster != nil) && (ctx.attribute != nil) # true if the target is a precise attribute, false if it results from an expansion and error are ignored
- # tasmota.log(format("MTR: process_attribute_expansion %s", str(ctx)), 4)
+ # tasmota.log(f"MTR: process_attribute_expansion {str(ctx))}", 4)
# build the list of candidates
@@ -537,7 +544,7 @@ class Matter_Device
endpoint_found = true
# now explore the cluster list for 'ep'
- var cluster_list = pi.get_cluster_list(ep) # cluster_list is the actual list of candidate cluster for this pluging and endpoint
+ var cluster_list = pi.get_cluster_list() # cluster_list is the actual list of candidate cluster for this pluging and endpoint
# tasmota.log(format("MTR: pi=%s ep=%s cl_list=%s", str(pi), str(ep), str(cluster_list)), 4)
for cl: cluster_list
if cluster != nil && cl != cluster continue end # skip if specific cluster and no match
@@ -546,7 +553,7 @@ class Matter_Device
cluster_found = true
# now filter on attributes
- var attr_list = pi.get_attribute_list(ep, cl)
+ var attr_list = pi.get_attribute_list(cl)
# tasmota.log(format("MTR: pi=%s ep=%s cl=%s at_list=%s", str(pi), str(ep), str(cl), str(attr_list)), 4)
for at: attr_list
if attribute != nil && at != attribute continue end # skip if specific attribute and no match
@@ -591,6 +598,44 @@ class Matter_Device
end
end
+ #############################################################
+ # Optimized version for a single endpoint/cluster/attribute
+ #
+ # Retrieve the plugin for a read
+ def process_attribute_read_solo(ctx)
+ var endpoint = ctx.endpoint
+ # var endpoint_found = false # did any endpoint match
+ var cluster = ctx.cluster
+ # var cluster_found = false
+ var attribute = ctx.attribute
+ # var attribute_found = false
+
+ # all 3 elements must be non-nil
+ if endpoint == nil || cluster == nil || attribute == nil return nil end
+
+ # look for plugin
+ var pi = self.find_plugin_by_endpoint(endpoint)
+ if pi == nil # endpoint not found
+ ctx.status = matter.UNSUPPORTED_ENDPOINT
+ return nil
+ end
+
+ # check cluster
+ if !pi.contains_cluster(cluster)
+ ctx.status = matter.UNSUPPORTED_CLUSTER
+ return nil
+ end
+
+ # attribute list
+ if !pi.contains_attribute(cluster, attribute)
+ ctx.status = matter.UNSUPPORTED_ATTRIBUTE
+ return nil
+ end
+
+ # all good
+ return pi
+ end
+
#############################################################
# Return the list of endpoints from all plugins (distinct), exclud endpoint zero if `exclude_zero` is `true`
def get_active_endpoints(exclude_zero)
@@ -628,7 +673,7 @@ class Matter_Device
import json
self.update_remotes_info() # update self.plugins_config_remotes
- var j = format('{"distinguish":%i,"passcode":%i,"ipv4only":%s,"nextep":%i', self.root_discriminator, self.root_passcode, self.ipv4only ? 'true':'false', self.next_ep)
+ var j = format('{"distinguish":%i,"passcode":%i,"ipv4only":%s,"disable_bridge_mode":%s,"nextep":%i', self.root_discriminator, self.root_passcode, self.ipv4only ? 'true':'false', self.disable_bridge_mode ? 'true':'false', self.next_ep)
if self.plugins_persist
j += ',"config":'
j += json.dump(self.plugins_config)
@@ -642,7 +687,7 @@ class Matter_Device
var f = open(self.FILENAME, "w")
f.write(j)
f.close()
- tasmota.log(format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 3)
+ tasmota.log(format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 2)
return j
except .. as e, m
tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)
@@ -693,6 +738,7 @@ class Matter_Device
self.root_discriminator = j.find("distinguish", self.root_discriminator)
self.root_passcode = j.find("passcode", self.root_passcode)
self.ipv4only = bool(j.find("ipv4only", false))
+ self.disable_bridge_mode = bool(j.find("disable_bridge_mode", false))
self.next_ep = j.find("nextep", self.next_ep)
self.plugins_config = j.find("config")
if self.plugins_config != nil
@@ -1106,13 +1152,13 @@ class Matter_Device
if !r_st13.contains(k) break end # no more SHTxxx
var d = r_st13[k]
tasmota.log(format("MTR: '%s' = %s", k, str(d)), 3)
- var relay1 = d.find('Relay1', 0) - 1 # relay base 0 or -1 if none
- var relay2 = d.find('Relay2', 0) - 1 # relay base 0 or -1 if none
+ var relay1 = d.find('Relay1', -1) # relay base 1 or -1 if none
+ var relay2 = d.find('Relay2', -1) # relay base 1 or -1 if none
- if relay1 >= 0 relays_reserved.push(relay1) end # mark relay1/2 as non-relays
- if relay2 >= 0 relays_reserved.push(relay2) end
+ if relay1 > 0 relays_reserved.push(relay1 - 1) end # mark relay1/2 as non-relays
+ if relay2 > 0 relays_reserved.push(relay2 - 1) end
- tasmota.log(format("MTR: relay1 = %s, relay2 = %s", relay1, relay2), 3)
+ tasmota.log(f"MTR: {relay1=} {relay2=}", 3)
# is there tilt support
var tilt_array = d.find('TiltConfig')
var tilt_config = tilt_array && (tilt_array[2] > 0)
@@ -1131,7 +1177,7 @@ class Matter_Device
while relay_index < relay_count
if relays_reserved.find(relay_index) == nil # if relay is actual relay
- m[str(endpoint)] = {'type':'relay','relay':relay_index}
+ m[str(endpoint)] = {'type':'relay','relay':relay_index + 1} # Relay index start with 1
endpoint += 1
end
relay_index += 1
@@ -1312,23 +1358,23 @@ class Matter_Device
self.plugins_config.remove(ep_str)
self.plugins_persist = true
- # try saving parameters
- self.save_param()
- self.signal_endpoints_changed()
-
# now remove from in-memory configuration
var idx = 0
while idx < size(self.plugins)
if ep == self.plugins[idx].get_endpoint()
self.plugins.remove(idx)
- self.signal_endpoints_changed()
break
else
idx += 1
end
end
+
# clean any orphan remote
self.clean_remotes()
+
+ # try saving parameters
+ self.save_param()
+ self.signal_endpoints_changed()
end
#############################################################
@@ -1412,13 +1458,15 @@ class Matter_Device
def clean_remotes()
import introspect
+ # print("clean_remotes", self.http_remotes)
# init all remotes with count 0
- if self.http_remotes
+ if self.http_remotes # tests if `self.http_remotes` is not `nil` and not empty
var remotes_map = {} # key: remote object, value: count of references
for http_remote: self.http_remotes
remotes_map[http_remote] = 0
end
+ # print("remotes_map", remotes_map)
# scan all endpoints
for pi: self.plugins
@@ -1428,16 +1476,23 @@ class Matter_Device
end
end
+ # print("remotes_map2", remotes_map)
+
# tasmota.log("MTR: remotes references: " + str(remotes_map), 3)
+ var remote_to_remove = [] # we first get the list of remotes to remove, to not interfere with map iterator
for remote:remotes_map.keys()
if remotes_map[remote] == 0
- # remove
- tasmota.log("MTR: remove unused remote: " + remote.addr, 3)
- remote.close()
- self.http_remotes.remove(remote)
+ remote_to_remove.push(remote)
end
end
+
+ for remote: remote_to_remove
+ tasmota.log("MTR: remove unused remote: " + remote.addr, 3)
+ remote.close()
+ self.http_remotes.remove(remote.addr)
+ end
+
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be b/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be
index 391476982..83da9d5d4 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be
@@ -96,7 +96,7 @@ class Matter_Expirable
# set relative time in the future for expiration (in seconds)
def set_expire_in_seconds(s, now)
if s == nil return end
- if now == nil now = tasmota.rtc()['utc'] end
+ if now == nil now = tasmota.rtc_utc() end
self.set_expire_time(now + s)
end
@@ -104,7 +104,7 @@ class Matter_Expirable
# set relative time in the future for expiration (in seconds)
# returns `true` if expiration date has been reached
def has_expired(now)
- if now == nil now = tasmota.rtc()['utc'] end
+ if now == nil now = tasmota.rtc_utc() end
if self._expiration != nil
return now >= self._expiration
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
index 9e08d6f34..2681197f2 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
@@ -75,7 +75,7 @@ class Matter_Fabric : Matter_Expirable
self._store = store
self._sessions = matter.Expirable_list()
self.fabric_label = ""
- self.created = tasmota.rtc()['utc']
+ self.created = tasmota.rtc_utc()
# init group counters
self._counter_group_data_snd_impl = matter.Counter()
self._counter_group_ctrl_snd_impl = matter.Counter()
@@ -247,7 +247,9 @@ class Matter_Fabric : Matter_Expirable
def add_session(s)
if self._sessions.find(s) == nil
while size(self._sessions) >= self._MAX_CASE
- self._sessions.remove(self._sessions.find(self.get_oldest_session()))
+ var session_deleted = self.get_oldest_session()
+ self._sessions.remove(self._sessions.find(session_deleted))
+ self._store.remove_session(session_deleted)
end
self._sessions.push(s)
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be
index 5170842e7..b466dc83d 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be
@@ -177,7 +177,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
end
# reduce the update time after a read is succesful
- self.change_schedule(self.UPDATE_CMD0, self.UPDATE_TIME2)
+ self.change_schedule(self.UPDATE_CMD5, self.UPDATE_TIME2)
end
if changed self.info_changed() end
@@ -189,7 +189,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
if alive
# device is known to be reachable
self.reachable = true
- self.reachable_utc = tasmota.rtc()['utc']
+ self.reachable_utc = tasmota.rtc_utc()
else
self.reachable = false
end
@@ -344,7 +344,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
var seconds = -1 # default if no known value
if self.reachable_utc != nil
- seconds = tasmota.rtc()['utc'] - self.reachable_utc
+ seconds = tasmota.rtc_utc() - self.reachable_utc
end
return matter.seconds_to_dhm(seconds)
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
index a68dcc902..016115fc8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
@@ -28,30 +28,53 @@ class Matter_IM
var device
var subs_shop # subscriptions shop
- var send_queue # list of IM_Message queued for sending as part of exchange-id
+ var send_queue # list of IM_Message queued for sending as part of exchange-id
+ var read_request_solo # instance of ReadRequestMessage_solo to optimize single reads
+ var invoke_request_solo # instance of InvokeRequestMessage_solo to optimize single reads
+ var tlv_solo # instance of Matter_TLV_item for simple responses
+
def init(device)
self.device = device
self.send_queue = []
self.subs_shop = matter.IM_Subscription_Shop(self)
+ self.read_request_solo = matter.ReadRequestMessage_solo()
+ self.invoke_request_solo = matter.InvokeRequestMessage_solo()
+ self.tlv_solo = matter.TLV.Matter_TLV_item()
end
def process_incoming(msg)
- # messages are always TLV, decode payload
- # tasmota.log("MTR: received IM message " + matter.inspect(msg), 3)
+ var opcode = msg.opcode
+
+ # Fast-Track processing
+ # first pass is optimized for simple frequent messages and avoids complete decoding of TLV
+ if opcode == 0x02 # Read Request
+ var read_request_solo = self.read_request_solo.from_raw(msg.raw, msg.app_payload_idx)
+ if read_request_solo != nil
+ # tasmota.log(f"MTR: process_incoming {read_request_solo=}")
+ return self.process_read_request_solo(msg, read_request_solo)
+ end
+ elif opcode == 0x08 # Invoke Request
+ var invoke_request_solo = self.invoke_request_solo.from_raw(msg.raw, msg.app_payload_idx)
+ # tasmota.log(f"MTR: {invoke_request_solo=} {msg.raw[msg.app_payload_idx .. ].tohex()} {msg.app_payload_idx=} {msg.raw.tohex()}")
+ if invoke_request_solo != nil
+ return self.process_invoke_request_solo(msg, invoke_request_solo)
+ end
+ end
+
+ # tasmota.log("MTR: received IM message " + matter.inspect(msg), 3)
var val = matter.TLV.parse(msg.raw, msg.app_payload_idx)
# tasmota.log("MTR: IM TLV: " + str(val), 3)
- var InteractionModelRevision = val.findsubval(0xFF)
+ # var InteractionModelRevision = val.findsubval(0xFF)
# tasmota.log("MTR: InteractionModelRevision=" + (InteractionModelRevision != nil ? str(InteractionModelRevision) : "nil"), 4)
- var opcode = msg.opcode
if opcode == 0x01 # Status Response
return self.process_status_response(msg, val)
elif opcode == 0x02 # Read Request
- self.send_ack_now(msg)
+ # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request
return self.process_read_request(msg, val)
elif opcode == 0x03 # Subscribe Request
self.send_ack_now(msg)
@@ -66,7 +89,7 @@ class Matter_IM
elif opcode == 0x07 # Write Response
return self.process_write_response(msg, val)
elif opcode == 0x08 # Invoke Request
- self.send_ack_now(msg)
+ # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request
return self.process_invoke_request(msg, val)
elif opcode == 0x09 # Invoke Response
return self.process_invoke_response(msg, val)
@@ -97,6 +120,7 @@ class Matter_IM
#
# returns `true` if packet could be sent
def send_ack_now(msg)
+ if msg == nil return end
msg.session._message_handler.send_encrypted_ack(msg, false #-not reliable-#)
end
@@ -201,7 +225,7 @@ class Matter_IM
# Inner code shared between read_attributes and subscribe_request
#
# query: `ReadRequestMessage` or `SubscribeRequestMessage`
- def _inner_process_read_request(session, query, no_log)
+ def _inner_process_read_request(session, query, msg, no_log)
### Inner function to be iterated upon
# ret is the ReportDataMessage list to send back
@@ -215,48 +239,55 @@ class Matter_IM
var TLV = matter.TLV
var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
attr_name = attr_name ? " (" + attr_name + ")" : ""
+
# Special case to report unsupported item, if pi==nil
- var res = (pi != nil) ? pi.read_attribute(session, ctx) : nil
+ var res = (pi != nil) ? pi.read_attribute(session, ctx, self.tlv_solo) : nil
var found = true # stop expansion since we have a value
- var a1_raw # this is the bytes() block we need to add to response (or nil)
+ var a1_raw_or_list # contains either a bytes() buffer to append, or a list of bytes(), or nil
if res != nil
- var res_str = str(res) # get the value with anonymous tag before it is tagged, for logging
+ var res_str = ""
+ if !no_log
+ res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging
+ end
- var a1 = matter.AttributeReportIB()
- a1.attribute_data = matter.AttributeDataIB()
- a1.attribute_data.data_version = 1
- a1.attribute_data.path = matter.AttributePathIB()
- a1.attribute_data.path.endpoint = ctx.endpoint
- a1.attribute_data.path.cluster = ctx.cluster
- a1.attribute_data.path.attribute = ctx.attribute
- a1.attribute_data.data = res
+ # check if too big to encode as a single packet
+ if (res.is_list || res.is_array) && res.encode_len() > matter.IM_ReportData.MAX_MESSAGE
+ # tasmota.log(f"MTR: >>>>>> long response", 3)
+ a1_raw_or_list = [] # we return a list of block
+ var a1_raw = bytes(48)
+ var empty_list = TLV.Matter_TLV_array()
+ self.attributedata2raw(a1_raw, ctx, empty_list, false)
+ a1_raw_or_list.push(a1_raw)
+ # tasmota.log(f"MTR: >>>>>> long response global DELETE {a1_raw.tohex()}", 3)
- var a1_tlv = a1.to_TLV()
- var a1_len = a1_tlv.encode_len()
- var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size
- a1_raw = a1_tlv.tlv2raw(a1_bytes)
- # tasmota.log(format("MTR: guessed len=%i actual=%i '%s'", a1_len, size(a1_raw), a1_raw.tohex()), 2)
+ for elt:res.val
+ a1_raw = bytes(48)
+ # var list_item = TLV.Matter_TLV_array()
+ # list_item.val.push(elt)
+ self.attributedata2raw(a1_raw, ctx, elt, true #- add ListIndex:null -#)
+ # tasmota.log(f"MTR: >>>>>> long response global ADD {a1_raw.tohex()}", 3)
+ a1_raw_or_list.push(a1_raw)
+ end
+ # tasmota.log(f"MTR: >>>>>> long response global {a1_raw_or_list}", 3)
+ else
+ # normal encoding
+ # encode directly raw bytes()
+ a1_raw_or_list = bytes(48) # pre-reserve 48 bytes
+ self.attributedata2raw(a1_raw_or_list, ctx, res)
+ end
if !no_log
- tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, res_str), 3)
+ tasmota.log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
end
elif ctx.status != nil
if direct # we report an error only if a concrete direct read, not with wildcards
- var a1 = matter.AttributeReportIB()
- a1.attribute_status = matter.AttributeStatusIB()
- a1.attribute_status.path = matter.AttributePathIB()
- a1.attribute_status.status = matter.StatusIB()
- a1.attribute_status.path.endpoint = ctx.endpoint
- a1.attribute_status.path.cluster = ctx.cluster
- a1.attribute_status.path.attribute = ctx.attribute
- a1.attribute_status.status.status = ctx.status
+ # encode directly raw bytes()
+ a1_raw_or_list = bytes(48) # pre-reserve 48 bytes
+ self.attributestatus2raw(a1_raw_or_list, ctx, ctx.status)
- var a1_tlv = a1.to_TLV()
- var a1_len = a1_tlv.encode_len()
- var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size
- a1_raw = a1_tlv.tlv2raw(a1_bytes)
-
- tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3)
+ if tasmota.loglevel(3)
+ tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3)
+ end
end
else
tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3)
@@ -264,27 +295,55 @@ class Matter_IM
found = false
end
- # check if we still have enough room in last block
- if a1_raw # do we have bytes to add, and it's not zero size
+ # a1_raw_or_list if either nil, bytes(), of list(bytes())
+ var idx = isinstance(a1_raw_or_list, list) ? 0 : nil # index in list, or nil if non-list
+ while a1_raw_or_list != nil
+ var elt = (idx == nil) ? a1_raw_or_list : a1_raw_or_list[idx] # dereference
+
if size(ret.attribute_reports) == 0
- ret.attribute_reports.push(a1_raw) # push raw binary instead of a TLV
+ ret.attribute_reports.push(elt) # push raw binary instead of a TLV
else # already blocks present, see if we can add to the latest, or need to create a new block
var last_block = ret.attribute_reports[-1]
- if size(last_block) + size(a1_raw) <= matter.IM_ReportData.MAX_MESSAGE
+ if size(last_block) + size(elt) <= matter.IM_ReportData.MAX_MESSAGE
# add to last block
- last_block .. a1_raw
+ last_block .. elt
else
- ret.attribute_reports.push(a1_raw) # push raw binary instead of a TLV
+ ret.attribute_reports.push(elt) # push raw binary instead of a TLV
+ end
+ end
+
+ if idx == nil
+ a1_raw_or_list = nil # stop loop
+ else
+ idx += 1
+ if idx >= size(a1_raw_or_list)
+ a1_raw_or_list = nil # stop loop
end
end
end
+ # check if we still have enough room in last block
+ # if a1_raw_or_list # do we have bytes to add, and it's not zero size
+ # if size(ret.attribute_reports) == 0
+ # ret.attribute_reports.push(a1_raw_or_list) # push raw binary instead of a TLV
+ # else # already blocks present, see if we can add to the latest, or need to create a new block
+ # var last_block = ret.attribute_reports[-1]
+ # if size(last_block) + size(a1_raw_or_list) <= matter.IM_ReportData.MAX_MESSAGE
+ # # add to last block
+ # last_block .. a1_raw_or_list
+ # else
+ # ret.attribute_reports.push(a1_raw_or_list) # push raw binary instead of a TLV
+ # end
+ # end
+ # end
+
return found # return true if we had a match
end
var endpoints = self.device.get_active_endpoints()
# structure is `ReadRequestMessage` 10.6.2 p.558
var ctx = matter.Path()
+ ctx.msg = msg
# prepare the response
var ret = matter.ReportDataMessage()
@@ -296,6 +355,7 @@ class Matter_IM
ctx.endpoint = q.endpoint
ctx.cluster = q.cluster
ctx.attribute = q.attribute
+ ctx.fabric_filtered = query.fabric_filtered
ctx.status = matter.UNSUPPORTED_ATTRIBUTE #default error if returned `nil`
# expand endpoint
@@ -322,6 +382,290 @@ class Matter_IM
return ret
end
+ #############################################################
+ # path2raw
+ #
+ # Encodes endpoint/cluster/attribute as `AttributePathIB` elements
+ # Takes sub-tag
+ #
+ # 1 = AttributePathIB
+ # 0 = EnableTagCompression bool opt
+ # 1 = Node
+ # 2 = Endpoint
+ # 3 = Cluste
+ # 4 = Attribute
+ # 5 = ListIndex (opt)
+ #
+ # 3701 1 = LIST
+ # 2402 01 2 = 1U (U1)
+ # 2403 39 3 = 0x39U (U1)
+ # 2404 11 4 = 0x11U (U1)
+ # [OPTIONAL ListIndex]
+ # 3405 5 = NULL
+ # 18
+ def path2raw(raw, ctx, sub_tag, list_index_null)
+ # open struct
+ raw.add(0x37, 1) # add 37
+ raw.add(sub_tag, 1) # add sub_tag
+ # add endpoint
+ if ctx.endpoint <= 0xFF # endpoint is 16 bits max
+ raw.add(0x2402, -2) # add 2402
+ raw.add(ctx.endpoint, 1)
+ else
+ raw.add(0x2502, -2) # add 2502
+ raw.add(ctx.endpoint, 2)
+ end
+ # add cluster
+ if ctx.cluster <= 0xFF # cluster is 32 bits max
+ raw.add(0x2403, -2) # add 2403
+ raw.add(ctx.cluster, 1)
+ elif ctx.cluster <= 0xFFFF
+ raw.add(0x2503, -2) # add 2503
+ raw.add(ctx.cluster, 2)
+ else
+ raw.add(0x2603, -2) # add 2603
+ raw.add(ctx.cluster, 4)
+ end
+ # add attribute
+ if ctx.attribute <= 0xFF # cluster is 32 bits max
+ raw.add(0x2404, -2) # add 2404
+ raw.add(ctx.attribute, 1)
+ elif ctx.attribute <= 0xFFFF
+ raw.add(0x2504, -2) # add 2504
+ raw.add(ctx.attribute, 2)
+ else
+ raw.add(0x2604, -2) # add 2604
+ raw.add(ctx.attribute, 4)
+ end
+ # do we add ListIndex: null
+ if list_index_null
+ raw.add(0x3405, -2) # add 3405
+ end
+ # close
+ raw.add(0x18, 1) # add 18
+ end
+
+ #############################################################
+ # attributedata2raw
+ #
+ # generate a raw version of AttributeDataIB
+ #
+ # Typical answer
+ #
+ # AttributeReportIB
+ # 0 = AttributeStatusIB
+ # 1 = AttributeDataIB
+ # 0 = DataVersion U1
+ # 1 = AttributePathIB
+ # 0 = EnableTagCompression bool opt
+ # 1 = Node
+ # 2 = Endpoint
+ # 3 = Cluste
+ # 4 = Attribute
+ # 5 = ListIndex (opt)
+ # 2 = Data
+ #
+ # 153601.15350124000137012402012403392404111829021818.1824FF0118
+ # 15350124000137012402012403392404111829021818
+ # 1535012400013701
+ # 240201240339240411
+ # 1829021818
+ #
+ # 15
+ # 3501 1 = {}
+ # 2400 01 0 = 1U (U1)
+ # 3701 1 = LIST
+ # 2402 01 2 = 1U (U1)
+ # 2403 39 3 = 0x39U (U1)
+ # 2404 11 4 = 0x11U (U1)
+ # [OPTIONAL ListIndex]
+ # 3405 5 = NULL
+ #
+ # 18
+ # 2902 2 = True
+ # 18
+ # 18
+ def attributedata2raw(raw, ctx, val, list_index_null)
+ raw.add(0x15350124, -4) # add 15350124
+ raw.add(0x0001, -2) # add 0001
+
+ self.path2raw(raw, ctx, 0x01, list_index_null)
+
+ # add value with tag 2
+ val.tag_sub = 2
+ val.tlv2raw(raw)
+ # close 2 structs
+ raw.add(0x1818, -2)
+ end
+
+ #############################################################
+ # attributedata2raw
+ #
+ # generate a raw version of AttributeStatusIB
+ #
+ #
+ # Typical answer
+ #
+ # AttributeReportIB
+ # 0 = AttributeStatusIB
+ # 0 = AttributePathIB
+ # 0 = EnableTagCompression bool opt
+ # 1 = Node
+ # 2 = Endpoint
+ # 3 = Cluste
+ # 4 = Attribute
+ # 5 = ListIndex (opt)
+ # 1 = StatusIB
+ # 0 = Status (u1)
+ # 1 = ClusterStatus (u1)
+ # 1 = AttributeDataIB
+ #
+ # 15360115350037002402012403022404031835012400041818181824FF0118
+ # 153601 1535003700 - 2402012403022404031835012400041818181824FF0118
+ #
+ # 15
+ # 3601
+ #
+ # 15
+ # 3500 0 = struct
+ # 3700 0 = list
+ # 240201 2 = 1U endpoint
+ # 240302 3 = 2U cluster
+ # 240403 4 = 3U attribute
+ # 18
+ # 3501 1 = struct
+ # 240004 0 = 4U status
+ # 18
+ # 18
+ # 18
+ #
+ # 18
+ # 24FF01
+ # 18
+ def attributestatus2raw(raw, ctx, status)
+ raw.add(0x15, 1) # add 15
+ raw.add(0x3500, -2) # add 3500
+
+ self.path2raw(raw, ctx, 0x00)
+
+ raw.add(0x3501, -2) # add 3501 for status
+ # status
+ if ctx.status <= 255
+ raw.add(0x2400, -2) # add 2400
+ raw.add(ctx.status, 1)
+ else
+ raw.add(0x2500, -2) # add 2500
+ raw.add(ctx.status, 2)
+ end
+ # close
+ raw.add(0x1818, -2) # add 1818
+ raw.add(0x18, 1) # add 18
+ end
+
+ #############################################################
+ # attributedata2raw
+ #
+ # generate a raw version of InvokeResponseIB()
+ # Typical answer
+ #
+ # 1535013700240011240122240244183501240000181818
+ #
+ # 0 = CommandDataIB
+ # 0 = CommandPathIB
+ # 0 = endpoint u2
+ # 1 = cluster u4
+ # 2 = command u4
+ # 1 =
+ # 1 = CommandStatusIB
+ # 0 = CommandPathIB
+ # 0 = endpoint u2
+ # 1 = cluster u4
+ # 2 = command u4
+ # 1 = StatusIB
+ # 0 = status u1
+ # 1 = ClusterStatus u1
+ #
+ # 1535013700240011240122240244183501240000181818
+ # 15
+ # 3501 1 = struct
+ # 3700 0 = list
+ # 240011 0 = endpoint
+ # 240122 1 = cluster
+ # 240244 2 = command
+ # 18
+ # 3501 1 = struct
+ # 240000 0 = 0 (status)
+ # 18
+ # 18
+ # 18
+ #
+ # 1535003700240011240122240244182401031818
+ # 15
+ # 3500 0 = struct
+ # 3700 0 = list
+ # 240011 0 = endpoint
+ # 240122 1 = cluster
+ # 240244 2 = command
+ # 18
+ # 240103 1 =
+ # 18
+ # 18
+ def invokeresponse2raw(raw, ctx, val)
+ raw.add(0x15, 1) # add 15
+ if val == nil
+ raw.add(0x3501, -2) # add 3500
+ else
+ raw.add(0x3500, -2) # add 3500
+ end
+ raw.add(0x3700, -2) # add 3700
+ # add endpoint
+ if ctx.endpoint <= 0xFF # endpoint is 16 bits max
+ raw.add(0x2400, -2) # add 2400
+ raw.add(ctx.endpoint, 1)
+ else
+ raw.add(0x2500, -2) # add 2500
+ raw.add(ctx.endpoint, 2)
+ end
+ # add cluster
+ if ctx.cluster <= 0xFF # cluster is 32 bits max
+ raw.add(0x2401, -2) # add 2401
+ raw.add(ctx.cluster, 1)
+ elif ctx.cluster <= 0xFFFF
+ raw.add(0x2501, -2) # add 2501
+ raw.add(ctx.cluster, 2)
+ else
+ raw.add(0x2601, -2) # add 2601
+ raw.add(ctx.cluster, 4)
+ end
+ # add attribute
+ if ctx.command <= 0xFF # cluster is 32 bits max
+ raw.add(0x2402, -2) # add 2402
+ raw.add(ctx.command, 1)
+ elif ctx.command <= 0xFFFF
+ raw.add(0x2502, -2) # add 2502
+ raw.add(ctx.command, 2)
+ else
+ raw.add(0x2602, -2) # add 2602
+ raw.add(ctx.command, 4)
+ end
+ raw.add(0x18, 1) # add 18
+
+ # either value or statuc
+ if val == nil
+ var status = ctx.status
+ if status == nil status = matter.SUCCESS end
+ raw.add(0x3501, -2) # add 3501
+ raw.add(0x2400, -2) # add 2400
+ raw.add(ctx.status, 1) # add status:1
+ raw.add(0x18, 1) # add 18
+ else
+ val.tag_sub = 1 # set sub_tag for reponse
+ val.tlv2raw(raw)
+ end
+ # close
+ raw.add(0x1818, -2) # add 1818
+ end
+
#############################################################
# process IM 0x02 Read Request
#
@@ -329,15 +673,130 @@ class Matter_IM
# returns `true` if processed, `false` if silently ignored,
# or raises an exception
def process_read_request(msg, val)
+ matter.profiler.log("read_request_start")
+ # matter.profiler.log(str(val))
var query = matter.ReadRequestMessage().from_TLV(val)
+ # matter.profiler.log(str(query))
if query.attributes_requests != nil
- var ret = self._inner_process_read_request(msg.session, query)
+ var ret = self._inner_process_read_request(msg.session, query, msg)
self.send_report_data(msg, ret)
end
return true
end
+ #############################################################
+ # process IM 0x02 Read Request
+ #
+ # val is the TLV structure
+ # returns `true` if processed, `false` if silently ignored,
+ # or raises an exception
+ def process_read_request_solo(msg, ctx)
+ # prepare fallback error
+ ctx.status = matter.INVALID_ACTION
+ ctx.msg = msg
+
+ # find pi for this endpoint/cluster/attribute
+ var pi = self.device.process_attribute_read_solo(ctx)
+ var res = nil
+ # matter.profiler.log("read_request_solo pi ok")
+ # tasmota.log(f"MTR: process_read_request_solo {pi=}")
+
+ var raw # this is the bytes() block we need to add to response (or nil)
+ if pi != nil
+ ctx.status = matter.UNSUPPORTED_ATTRIBUTE # new fallback error
+ res = pi.read_attribute(msg.session, ctx, self.tlv_solo)
+ end
+ matter.profiler.log("read_request_solo read done")
+
+ if res != nil
+
+ # check if the payload is a complex structure and too long to fit in a single response packet
+ if (res.is_list || res.is_array) && res.encode_len() > matter.IM_ReportData.MAX_MESSAGE
+ # revert to standard
+ # the attribute will be read again, but it's hard to avoid it
+ res = nil # indicated to GC that we don't need it again
+ tasmota.log(f"MTR: Response to big, revert to non-solo", 3)
+ var val = matter.TLV.parse(msg.raw, msg.app_payload_idx)
+ return self.process_read_request(msg, val)
+ end
+ # encode directly raw bytes()
+ raw = bytes(48) # pre-reserve 48 bytes
+
+ raw.add(0x15, 1) # add 15
+ raw.add(0x3601, -2) # add 3601
+
+ self.attributedata2raw(raw, ctx, res)
+
+ # add suffix 1824FF0118
+ raw.add(0x1824FF01, -4) # add 1824FF01
+ raw.add(0x18, 1) # add 18
+
+ elif ctx.status != nil
+
+ # encode directly raw bytes()
+ raw = bytes(48) # pre-reserve 48 bytes
+
+ raw.add(0x15, 1) # add 15
+ raw.add(0x3601, -2) # add 3601
+
+ self.attributestatus2raw(raw, ctx, ctx.status)
+
+ # add suffix 1824FF0118
+ raw.add(0x1824FF01, -4) # add 1824FF01
+ raw.add(0x18, 1) # add 18
+
+ else
+ tasmota.log(f"MTR: >Read_Attr ({msg.session.local_session_id:6i}) {ctx} - IGNORED", 3)
+ return false
+ end
+
+ # send packet
+ var resp = msg.build_response(0x05 #-Report Data-#, true)
+
+ var responder = self.device.message_handler
+ var msg_raw = msg.raw
+ msg_raw.clear()
+ resp.encode_frame(raw, msg_raw) # payload in cleartext
+ resp.encrypt()
+ if tasmota.loglevel(4)
+ tasmota.log(format("MTR: Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
+ end
+ # if matter.profiler.active && tasmota.loglevel(3)
+ # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight
+ # end
+ elif ctx.status != nil
+ var unsupported_attribute = (ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : "")
+ if tasmota.loglevel(3)
+ tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - STATUS: 0x{ctx.status:02X} {unsupported_attribute}", 3)
+ end
+ # if matter.profiler.active && tasmota.loglevel(3)
+ # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight
+ # end
+ else
+ if tasmota.loglevel(3)
+ tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - IGNORED", 3)
+ end
+ end
+
+ # matter.profiler.log("read_request_solo end")
+ return true
+ end
+
#############################################################
# process IM 0x03 Subscribe Request
#
@@ -355,16 +814,20 @@ class Matter_IM
# expand a string with all attributes requested
var attr_req = []
var ctx = matter.Path()
+ ctx.msg = msg
for q:query.attributes_requests
ctx.endpoint = q.endpoint
ctx.cluster = q.cluster
ctx.attribute = q.attribute
attr_req.push(str(ctx))
end
- tasmota.log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i",
- msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id), 3)
+ tasmota.log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s",
+ msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id, query.fabric_filtered), 3)
+ if query.event_requests != nil && size(query.event_requests) > 0
+ tasmota.log(f"MTR: >Subscribe (%6i) event_requests_size={size(query.event_requests)}", 3)
+ end
- var ret = self._inner_process_read_request(msg.session, query, true #-no_log-#)
+ var ret = self._inner_process_read_request(msg.session, query, msg, true #-no_log-#)
# ret is of type `Matter_ReportDataMessage`
ret.subscription_id = sub.subscription_id # enrich with subscription id TODO
self.send_subscribe_response(msg, ret, sub)
@@ -378,9 +841,12 @@ class Matter_IM
# returns `true` if processed, `false` if silently ignored,
# or raises an exception
def process_invoke_request(msg, val)
+ # import debug
# structure is `ReadRequestMessage` 10.6.2 p.558
# tasmota.log("MTR: IM:invoke_request processing start", 4)
+ matter.profiler.log("invoke_request_start")
var ctx = matter.Path()
+ ctx.msg = msg
var query = matter.InvokeRequestMessage().from_TLV(val)
if query.invoke_requests != nil
@@ -398,52 +864,44 @@ class Matter_IM
var cmd_name = matter.get_command_name(ctx.cluster, ctx.command)
var ctx_str = str(ctx) # keep string before invoking, it is modified by response
var res = self.device.invoke_request(msg.session, q.command_fields, ctx)
+ matter.profiler.log("COMMAND DONE")
var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : ""
tasmota.log(format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), ctx.endpoint != 0 ? 2 : 3 #- don't log for endpoint 0 -# )
+ # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4)
ctx.log = nil
- var a1 = matter.InvokeResponseIB()
+ var raw = bytes(32)
+ # var a1 = matter.InvokeResponseIB()
if res == true || ctx.status == matter.SUCCESS # special case, just respond ok
- a1.status = matter.CommandStatusIB()
- a1.status.command_path = matter.CommandPathIB()
- a1.status.command_path.endpoint = ctx.endpoint
- a1.status.command_path.cluster = ctx.cluster
- a1.status.command_path.command = ctx.command
- a1.status.status = matter.StatusIB()
- a1.status.status.status = matter.SUCCESS
- ret.invoke_responses.push(a1)
- tasmota.log(format("MTR: Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), cmd_log_level)
+ end
+ # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4)
+ ctx.log = nil
+ var raw = bytes(48)
+
+ # prefix 1528003601
+ raw.add(0x15280036, -4) # add 15280036
+ raw.add(0x01, 1) # add 01
+ if res == true || ctx.status == matter.SUCCESS # special case, just respond ok
+ ctx.status = matter.SUCCESS
+ self.invokeresponse2raw(raw, ctx, nil)
+
+ if tasmota.loglevel(3)
+ tasmota.log(f"MTR: Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3)
+ if tasmota.loglevel(3)
+ tasmota.log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3)
+ end
return super(self).status_ok_received(msg)
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
index d0c4e0066..70ff59835 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
@@ -171,8 +171,12 @@ class Matter_Frame
#
# Header is built from attributes
# `payload` is a bytes() buffer for the app payload
- def encode_frame(payload)
- var raw = bytes()
+ #
+ # you can pass a `raw` bytes() object to be used
+ def encode_frame(payload, raw)
+ if raw == nil
+ raw = bytes(16 + (payload ? size(payload) : 0))
+ end
# compute flags
if self.flags == nil
self.flags = 0x00
@@ -220,7 +224,7 @@ class Matter_Frame
raw .. payload
end
- self.debug(raw)
+ # self.debug(raw)
self.raw = raw
return raw
end
@@ -343,11 +347,15 @@ class Matter_Frame
#############################################################
# decrypt with I2S key
# return cleartext or `nil` if failed
+ #
+ # frame.raw is decrypted in-place and the MIC is removed
+ # returns true if successful
def decrypt()
import crypto
var session = self.session
var raw = self.raw
- var mic = raw[-16..] # take last 16 bytes as signature
+ var payload_idx = self.payload_idx
+ var tag_len = 16
# decrypt the message with `i2r` key
var i2r = session.get_i2r()
@@ -357,6 +365,7 @@ class Matter_Frame
# compute privacy key, p.71
tasmota.log("MTR: >>>>>>>>>>>>>>>>>>>> Compute Privacy TODO", 2)
var k = session.get_i2r_privacy()
+ var mic = raw[-16..] # take last 16 bytes as signature
var n = bytes().add(self.local_session_id, -2) + mic[5..15] # session in Big Endian
var m = self.raw[4 .. self.payload_idx-1]
var m_clear = crypto.AES_CTR(k).decrypt(m, n, 2)
@@ -364,11 +373,9 @@ class Matter_Frame
self.raw = self.raw[0..3] + m_clear + m[self.payload_idx .. ]
end
- # use AES_CCM
- var a = raw[0 .. self.payload_idx - 1]
- var p = raw[self.payload_idx .. -17]
# recompute nonce
- var n = bytes()
+ var n = self.message_handler._n_bytes # use cached bytes() object to avoid allocation
+ n.clear()
n.add(self.flags, 1)
n.add(self.message_counter, 4)
if self.source_node_id
@@ -381,28 +388,26 @@ class Matter_Frame
end
# tasmota.log("MTR: ******************************", 4)
+ # tasmota.log("MTR: raw =" + raw.tohex(), 4)
# tasmota.log("MTR: i2r =" + i2r.tohex(), 4)
- # tasmota.log("MTR: p =" + p.tohex(), 4)
- # tasmota.log("MTR: a =" + a.tohex(), 4)
+ # tasmota.log("MTR: p =" + raw[payload_idx .. -17].tohex(), 4)
+ # tasmota.log("MTR: a =" + raw[0 .. payload_idx - 1].tohex(), 4)
# tasmota.log("MTR: n =" + n.tohex(), 4)
- # tasmota.log("MTR: mic =" + mic.tohex(), 4)
+ # tasmota.log("MTR: mic =" + raw[-16..].tohex(), 4)
# decrypt
- var aes = crypto.AES_CCM(i2r, n, a, size(p), 16)
- var cleartext = aes.decrypt(p)
- var tag = aes.tag()
-
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: cleartext =" + cleartext.tohex(), 4)
- # tasmota.log("MTR: tag =" + tag.tohex(), 4)
- # tasmota.log("MTR: ******************************", 4)
-
- if tag != mic
+ var ret = crypto.AES_CCM.decrypt1(i2r, # secret key
+ n, 0, size(n), # nonce / IV
+ raw, 0, payload_idx, # aad
+ raw, payload_idx, size(raw) - payload_idx - tag_len, # encrypted - decrypted in-place
+ raw, size(raw) - tag_len, tag_len) # MIC
+ if ret
+ # succcess
+ raw.resize(size(raw) - tag_len) # remove MIC
+ else
tasmota.log("MTR: rejected packet due to invalid MIC", 3)
- return nil
end
-
- return cleartext
+ return ret
end
#############################################################
@@ -413,15 +418,15 @@ class Matter_Frame
import crypto
var raw = self.raw
var session = self.session
+ var payload_idx = self.payload_idx
+ var tag_len = 16
# encrypt the message with `i2r` key
var r2i = session.get_r2i()
- # use AES_CCM
- var a = raw[0 .. self.payload_idx - 1]
- var p = raw[self.payload_idx .. ]
# recompute nonce
- var n = bytes()
+ var n = self.message_handler._n_bytes # use cached bytes() object to avoid allocation
+ n.clear()
n.add(self.flags, 1)
n.add(self.message_counter, 4)
if session.is_CASE() && session.get_device_id()
@@ -429,30 +434,14 @@ class Matter_Frame
end
n.resize(13) # add zeros
- # tasmota.log("MTR: cleartext: " + self.raw.tohex(), 4)
+ # encrypt
+ raw.resize(size(raw) + tag_len) # make room for MIC
+ var ret = crypto.AES_CCM.encrypt1(r2i, # secret key
+ n, 0, size(n), # nonce / IV
+ raw, 0, payload_idx, # aad
+ raw, payload_idx, size(raw) - payload_idx - tag_len, # encrypted - decrypted in-place
+ raw, size(raw) - tag_len, tag_len) # MIC
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: r2i =" + r2i.tohex(), 4)
- # tasmota.log("MTR: p =" + p.tohex(), 4)
- # tasmota.log("MTR: a =" + a.tohex(), 4)
- # tasmota.log("MTR: n =" + n.tohex(), 4)
-
- # decrypt
- var aes = crypto.AES_CCM(r2i, n, a, size(p), 16)
- var ciphertext = aes.encrypt(p)
- var tag = aes.tag()
-
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: ciphertext =" + ciphertext.tohex(), 4)
- # tasmota.log("MTR: tag =" + tag.tohex(), 4)
- # tasmota.log("MTR: ******************************", 4)
-
- # packet is good, put back content in raw
- self.raw.resize(self.payload_idx) # remove cleartext payload
- self.raw .. ciphertext # add ciphertext
- self.raw .. tag # add MIC
-
- # tasmota.log("MTR: encrypted: " + self.raw.tohex(), 4)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
index e611a2f4e..63336e4f7 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
@@ -30,12 +30,16 @@ class Matter_MessageHandler
var im # Instance of `matter.IM` handling Interaction Model
var control_message # Instance of `matter.Control_Message` for MCSP
+ # cache for decryption bytes
+ var _n_bytes # size 16 minimal, used by frame_buffer for decryption
+
#############################################################
def init(device)
self.device = device
self.commissioning = matter.Commisioning_Context(self)
self.im = matter.IM(device)
self.control_message = matter.Control_Message(self)
+ self._n_bytes = bytes(16)
end
#############################################################
@@ -47,7 +51,9 @@ class Matter_MessageHandler
if frame.x_flag_r # nothing to respond, check if we need a standalone ack
var resp = frame.build_standalone_ack(reliable)
resp.encode_frame()
- tasmota.log(format("MTR: Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3)
+ if tasmota.loglevel(3)
+ tasmota.log(format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3)
+ end
else
- tasmota.log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4)
+ if tasmota.loglevel(4)
+ tasmota.log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4)
+ end
end
ret = self.commissioning.process_incoming(frame)
# if ret is false, the implicit Ack was not sent
@@ -123,14 +139,19 @@ class Matter_MessageHandler
else
#############################################################
# encrypted message
- tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4)
+ # matter.profiler.log("msg_received_header_encrypted_message_received")
+ if tasmota.loglevel(4)
+ tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4)
+ end
var session = self.device.sessions.get_session_by_local_session_id(frame.local_session_id)
+ # matter.profiler.log("msg_received_header_session_retrieved")
if session == nil
tasmota.log("MTR: unknown local_session_id="+str(frame.local_session_id), 3)
# tasmota.log("MTR: frame="+matter.inspect(frame), 3)
return false
end
+ # matter.profiler.log("msg_received_session_found")
if addr session._ip = addr end
if port session._port = port end
session._message_handler = self
@@ -138,22 +159,26 @@ class Matter_MessageHandler
# check if it's a duplicate
if !session.counter_rcv_validate(frame.message_counter, true)
- tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 4)
+ if tasmota.loglevel(3)
+ tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3)
+ end
self.send_encrypted_ack(frame, false #-not reliable-#)
return false
end
- var cleartext = frame.decrypt()
- if !cleartext return false end
+ var decrypt_ok = frame.decrypt()
+ matter.profiler.log("msg_received_header_frame_decrypted")
+ if !decrypt_ok return false end
- # packet is good, put back content in raw
- frame.raw = frame.raw[0 .. frame.payload_idx - 1] # remove encrypted payload
- frame.raw .. cleartext # add cleartext
+ # matter.profiler.log("msg_received_payload_undecoded")
# continue decoding
# tasmota.log(format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4)
frame.decode_payload()
- tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4)
+ # matter.profiler.log("msg_received_payload_decoded")
+ if tasmota.loglevel(4)
+ tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4)
+ end
# tasmota.log(format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3)
@@ -173,7 +198,9 @@ class Matter_MessageHandler
ret = true
elif protocol_id == 0x0001 # PROTOCOL_ID_INTERACTION_MODEL
# dispatch to IM Protocol Messages
+ matter.profiler.log("process_IM_start")
ret = self.im.process_incoming(frame)
+ matter.profiler.log("process_IM_end")
# if `ret` is true, we have something to send
if ret
self.im.send_enqueued(self)
@@ -220,6 +247,7 @@ class Matter_MessageHandler
# msg.exchange_id: exchange id (int)
# msg.local_session_id: local session (for logging)
def send_response_frame(msg)
+ matter.profiler.log("send_response_frame")
self.device.msg_send(msg)
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path.be
index 982bb3336..5dd1c7d77 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Path.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path.be
@@ -30,9 +30,24 @@ class Matter_Path
var endpoint # endpoint or `nil` if expansion
var cluster # cluster or `nil` if expansion
var attribute # attribute or `nil` if expansion
+ var fabric_filtered # bool or nil
var command # command
var status # status to be returned (matter.SUCCESS or matter.)
var log # any string that needs to be logged (used to show significant parameters for commands)
+ var msg # reference of the original message
+
+ # reset the object, allows reuse of the same object
+ def reset()
+ var n = nil # it's actually more compact code to load `nil` into a register and assign all members
+ self.endpoint = n
+ self.cluster = n
+ self.attribute = n
+ self.fabric_filtered = n
+ self.command = n
+ self.status = n
+ self.log = n
+ self.msg = n
+ end
def tostring()
try
@@ -41,6 +56,7 @@ class Matter_Path
s += (self.cluster != nil ? format("%04X/", self.cluster) : "****/")
s += (self.attribute != nil ? format("%04X", self.attribute) : "")
s += (self.command != nil ? format("%04X", self.command) : "")
+ if self.fabric_filtered s += "!" end
if self.attribute == nil && self.command == nil s += "****" end
return s
except .. as e, m
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be
index 31348e9f7..9a52fa6cc 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be
@@ -63,6 +63,15 @@ class Matter_Plugin
self.parse_configuration(config)
end
+ # proxy for the same method in IM
+ def ack_request(ctx)
+ var msg = ctx.msg
+ if msg != nil
+ self.device.message_handler.im.send_ack_now(msg)
+ end
+ ctx.msg = nil
+ end
+
#############################################################
# parse_configuration
#
@@ -142,16 +151,32 @@ class Matter_Plugin
def get_endpoint()
return self.endpoint
end
- def get_cluster_list(ep)
+ def get_cluster_list()
var ret = []
for k: self.clusters.keys()
ret.push(k)
end
return ret
end
- def get_attribute_list(ep, cluster)
+ def contains_cluster(cluster)
+ return self.clusters.contains(cluster)
+ end
+ def get_attribute_list(cluster)
return self.clusters.find(cluster, [])
end
+ def contains_attribute(cluster, attribute)
+ var attr_list = self.clusters.find(cluster)
+ if attr_list != nil
+ var idx = 0
+ while idx < size(attr_list)
+ if attr_list[idx] == attribute
+ return true
+ end
+ idx += 1
+ end
+ end
+ return false
+ end
#############################################################
# Does it handle this endpoint and this cluster
@@ -166,7 +191,10 @@ class Matter_Plugin
#############################################################
#############################################################
# read attribute
- def read_attribute(session, ctx)
+ #
+ # Arg:
+ # `tlv_solo` contains an instance of `Matter_TLV_item` to avoid allocating a new object with TLV.create_TLV
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -195,18 +223,18 @@ class Matter_Plugin
var pl = TLV.Matter_TLV_array()
return pl
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) #
+ return tlv_solo.set(TLV.U4, 0) #
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 1) # "Initial Release"
+ 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.create_TLV(TLV.BOOL, 1) # by default we are reachable
+ return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
else
- return super(self).read_attribute(session, ctx) # rest is handled by 0x0028
+ return super(self).read_attribute(session, ctx, tlv_solo) # rest is handled by 0x0028
end
else
return nil
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be
index e1ee424f6..690ea2ed1 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be
@@ -37,7 +37,7 @@ class Matter_Plugin_Aggregator : Matter_Plugin
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -55,11 +55,11 @@ class Matter_Plugin_Aggregator : Matter_Plugin
end
return pl
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
# no match found, return that the attribute is unsupported
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be
index 1335a8861..b3df63081 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be
@@ -175,7 +175,7 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
#############################################################
# read attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -187,35 +187,35 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
if attribute == 0x0003 # ---------- ProductName / string ----------
var name = self.http_remote.get_info().find("name")
if name
- return TLV.create_TLV(TLV.UTF1, name)
+ return tlv_solo.set(TLV.UTF1, name)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
var version_full = self.http_remote.get_info().find("version")
if version_full
var version_end = string.find(version_full, '(')
if version_end > 0 version_full = version_full[0..version_end - 1] end
- return TLV.create_TLV(TLV.UTF1, version_full)
+ return tlv_solo.set(TLV.UTF1, version_full)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber || UniqueID / string ----------
var mac = self.http_remote.get_info().find("mac")
if mac
- return TLV.create_TLV(TLV.UTF1, mac)
+ return tlv_solo.set(TLV.UTF1, mac)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0011 # ---------- Reachable / bool ----------
# self.is_reachable_lazy_sync() # Not needed anymore
- return TLV.create_TLV(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping
+ 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)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be
index a1a6d3127..c92eff4db 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be
@@ -30,7 +30,7 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
static var TYPE = "http_light0" # name of the plug-in in json
static var NAME = "Light 0 On" # display name of the plug-in
static var ARG = "relay" # additional argument name (or empty if none)
- static var ARG_HINT = "Enter Power number"
+ static var ARG_HINT = "Power number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
# static var UPDATE_TIME = 3000 # update every 3s
# static var UPDATE_CMD = "Status 11" # command to send for updates
@@ -83,13 +83,14 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
var ret = self.call_remote_sync("Power" + str(self.tasmota_relay_index), v ? "1" : "0")
if ret != nil
self.parse_update(ret, 11) # update shadow from return value
+ # self.tick = self.device.tick # prevent an explicit Status11 for as it is not needed if the subscription update is sent in same tick
end
end
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -98,15 +99,15 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
- return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
+ return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
@@ -122,7 +123,6 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
# ====================================================================================================
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
- self.update_shadow_lazy()
if command == 0x0000 # ---------- Off ----------
self.set_onoff(false)
return true
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be
index cfb8c4052..da53e225e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be
@@ -78,7 +78,7 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -88,30 +88,30 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
if self.shadow_bri != nil
- return TLV.create_TLV(TLV.U1, self.shadow_bri)
+ return tlv_solo.set(TLV.U1, self.shadow_bri)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0002 # ---------- MinLevel / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x0003 # ---------- MaxLevel / u1 ----------
- return TLV.create_TLV(TLV.U1, 254)
+ return tlv_solo.set(TLV.U1, 254)
elif attribute == 0x000F # ---------- Options / map8 ----------
- return TLV.create_TLV(TLV.U1, 0) #
+ return tlv_solo.set(TLV.U1, 0) #
elif attribute == 0x0011 # ---------- OnLevel / u1 ----------
if self.shadow_bri != nil
- return TLV.create_TLV(TLV.U1, self.shadow_bri)
+ return tlv_solo.set(TLV.U1, self.shadow_bri)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0X01) # OnOff
+ return tlv_solo.set(TLV.U4, 0X01) # OnOff
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation"
+ return tlv_solo.set(TLV.U4, 5) # "new data model format and notation"
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
@@ -127,7 +127,6 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
# ====================================================================================================
if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
- self.update_shadow_lazy()
if command == 0x0000 # ---------- MoveToLevel ----------
var bri_in = val.findsubval(0) # Hue 0..254
self.set_bri(bri_in)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be
index 5e8ef08ca..596790042 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be
@@ -95,7 +95,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -105,29 +105,29 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
self.update_shadow_lazy()
if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
if self.shadow_ct != nil
- return TLV.create_TLV(TLV.U1, self.shadow_ct)
+ return tlv_solo.set(TLV.U1, self.shadow_ct)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
- return TLV.create_TLV(TLV.U1, 2)# 2 = ColorTemperatureMireds
+ return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds
elif attribute == 0x000F # ---------- Options / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ----------
- return TLV.create_TLV(TLV.U1, self.ct_min)
+ return tlv_solo.set(TLV.U1, self.ct_min)
elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ----------
- return TLV.create_TLV(TLV.U1, self.ct_max)
+ return tlv_solo.set(TLV.U1, self.ct_max)
elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
- return TLV.create_TLV(TLV.U4, 0x10) # CT
+ return tlv_solo.set(TLV.U4, 0x10) # CT
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0x10) # CT
+ return tlv_solo.set(TLV.U4, 0x10) # CT
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
+ return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
@@ -143,7 +143,6 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
# ====================================================================================================
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
- self.update_shadow_lazy()
if command == 0x000A # ---------- MoveToColorTemperature ----------
var ct_in = val.findsubval(0) # CT
if ct_in < self.ct_min ct_in = self.ct_min end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be
index e222049db..9898cfbb4 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be
@@ -95,7 +95,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -105,39 +105,39 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- CurrentHue / u1 ----------
if self.shadow_hue != nil
- return TLV.create_TLV(TLV.U1, self.shadow_hue)
+ return tlv_solo.set(TLV.U1, self.shadow_hue)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ----------
if self.shadow_sat != nil
- return TLV.create_TLV(TLV.U1, self.shadow_sat)
+ return tlv_solo.set(TLV.U1, self.shadow_sat)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
+ return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
elif attribute == 0x000F # ---------- Options / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
- return TLV.create_TLV(TLV.U4, 0x01) # HS
+ return tlv_solo.set(TLV.U4, 0x01) # HS
# Defined Primaries Information Attribute Set
elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0x01) # HS
+ return tlv_solo.set(TLV.U4, 0x01) # HS
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
+ return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
@@ -153,7 +153,6 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
# ====================================================================================================
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
- self.update_shadow_lazy()
if command == 0x0000 # ---------- MoveToHue ----------
var hue_in = val.findsubval(0) # Hue 0..254
self.set_hue(hue_in)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be
index d3d1e3986..4b8cb0e12 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be
@@ -29,7 +29,7 @@ class Matter_Plugin_Bridge_Light0 end
class Matter_Plugin_Bridge_OnOff : Matter_Plugin_Bridge_Light0
static var TYPE = "http_relay" # name of the plug-in in json
static var NAME = "Relay" # display name of the plug-in
- static var ARG_HINT = "Enter Relay number"
+ static var ARG_HINT = "Relay number"
static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor.be
index d06b3d482..ba8589eae 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor.be
@@ -31,7 +31,7 @@ class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP
# static var NAME = "" # display name of the plug-in
static var ARG = "filter" # additional argument name (or empty if none)
static var ARG_HTTP = "url" # domain name
- static var ARG_HINT = "Enter Filter pattern"
+ static var ARG_HINT = "Filter pattern"
static var UPDATE_TIME = 5000 # update every 5s
static var UPDATE_CMD = "Status 8" # command to send for updates
static var PROBE_TIMEOUT = 1700 # timeout of 1700 ms for probing, which gives at least 1s for TCP recovery
@@ -39,6 +39,13 @@ class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP
var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
var tasmota_sensor_matcher # Actual matcher object
var shadow_value # Last known value
+ var temp_unit # temperature unit, "C" or "F"
+ static var TEMP_C = "C"
+ static var TEMP_F = "F"
+ var pressure_unit # pressure unit, "hPa" or "mmHg" or "inHg"
+ static var PRESSURE_HPA = "hPa"
+ static var PRESSURE_MMHG = "mmHg"
+ static var PRESSURE_INHG = "inHg"
#############################################################
# parse_configuration
@@ -49,6 +56,8 @@ class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP
if self.tasmota_sensor_filter
self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(self.tasmota_sensor_filter)
end
+ self.temp_unit = self.TEMP_C
+ self.pressure_unit = self.PRESSURE_HPA
end
#############################################################
@@ -57,6 +66,12 @@ class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP
# TO BE OVERRIDDEN
def parse_update(data, index)
if index == 8 # Status 8
+ if data.contains("TempUnit")
+ self.temp_unit = data["TempUnit"]
+ end
+ if data.contains("PressureUnit")
+ self.pressure_unit = data["PressureUnit"]
+ end
if self.tasmota_sensor_matcher
var val = self.pre_value(real(self.tasmota_sensor_matcher.match(data)))
if val != nil
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be
index 52eef023b..09411b809 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be
@@ -30,7 +30,7 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
static var TYPE = "http_contact" # name of the plug-in in json
static var NAME = "Contact" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Enter Switch number"
+ static var ARG_HINT = "Switch number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 5000 # update every 5s
static var UPDATE_CMD = "Status 8" # command to send for updates
@@ -71,7 +71,7 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -80,18 +80,18 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
if cluster == 0x0045 # ========== Boolean State ==========
if attribute == 0x0000 # ---------- StateValue / bool ----------
if self.shadow_contact != nil
- return TLV.create_TLV(TLV.BOOL, self.shadow_contact)
+ return tlv_solo.set(TLV.BOOL, self.shadow_contact)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 1) # 1 = Initial release
+ return tlv_solo.set(TLV.U4, 1) # 1 = Initial release
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be
index 4d636ddcd..ebd83502a 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be
@@ -56,7 +56,7 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -65,22 +65,22 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ==========
if attribute == 0x0000 # ---------- Humidity / u16 ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.U2, int(self.shadow_value))
+ return tlv_solo.set(TLV.U2, int(self.shadow_value))
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ----------
- return TLV.create_TLV(TLV.U2, 500) # 0%
+ return tlv_solo.set(TLV.U2, 500) # 0%
elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
- return TLV.create_TLV(TLV.U2, 10000) # 100%
+ return tlv_solo.set(TLV.U2, 10000) # 100%
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be
index f552f7f9a..b3904bda6 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be
@@ -63,7 +63,7 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -72,22 +72,22 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.U2, int(self.shadow_value))
+ return tlv_solo.set(TLV.U2, int(self.shadow_value))
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.U2, 1) # 1 lux
+ return tlv_solo.set(TLV.U2, 1) # 1 lux
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.U2, 0xFFFE)
+ return tlv_solo.set(TLV.U2, 0xFFFE)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be
index e65b69159..3e312259f 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be
@@ -30,7 +30,7 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
static var TYPE = "http_occupancy" # name of the plug-in in json
static var NAME = "Occupancy" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Enter Switch number"
+ static var ARG_HINT = "Switch number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 5000 # update every 5s
static var UPDATE_CMD = "Status 8" # command to send for updates
@@ -71,7 +71,7 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -80,22 +80,22 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
if cluster == 0x0406 # ========== Occupancy Sensing ==========
if attribute == 0x0000 # ---------- Occupancy / U8 ----------
if self.shadow_occupancy != nil
- return TLV.create_TLV(TLV.U1, self.shadow_occupancy)
+ return tlv_solo.set(TLV.U1, self.shadow_occupancy)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ----------
- return TLV.create_TLV(TLV.U1, 3) # physical contact
+ return tlv_solo.set(TLV.U1, 3) # physical contact
elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
- return TLV.create_TLV(TLV.U1, 0) # unknown
+ return tlv_solo.set(TLV.U1, 0) # unknown
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 4 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be
index 9fcff1e85..b519fed3d 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be
@@ -56,7 +56,7 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -65,22 +65,22 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.I2, int(self.shadow_value))
+ return tlv_solo.set(TLV.I2, int(self.shadow_value))
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.I2, 500) # 500 hPA
+ return tlv_solo.set(TLV.I2, 500) # 500 hPA
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.I2, 1500) # 1500 hPA
+ return tlv_solo.set(TLV.I2, 1500) # 1500 hPA
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be
index 56e7472af..7980044c3 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be
@@ -50,13 +50,16 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
# This must be overriden.
# This allows to convert the raw sensor value to the target one, typically int
def pre_value(val)
+ if self.temp_unit == self.TEMP_F # Fahrenheit
+ val = (val - 32) / 1.8
+ end
return val != nil ? int(val * 100) : nil
end
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -65,22 +68,22 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.I2, self.shadow_value)
+ return tlv_solo.set(TLV.I2, self.shadow_value)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ----------
- return TLV.create_TLV(TLV.I2, -5000) # -50 °C
+ return tlv_solo.set(TLV.I2, -5000) # -50 °C
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
- return TLV.create_TLV(TLV.I2, 15000) # 150 °C
+ return tlv_solo.set(TLV.I2, 15000) # 150 °C
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 4 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be
index ce9ac7551..654dbd347 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be
@@ -55,7 +55,7 @@ class Matter_Plugin_Device : Matter_Plugin
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -63,13 +63,13 @@ class Matter_Plugin_Device : Matter_Plugin
# ====================================================================================================
if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
- return TLV.create_TLV(TLV.U2, 0) # no identification in progress
+ return tlv_solo.set(TLV.U2, 0) # no identification in progress
elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
- return TLV.create_TLV(TLV.U1, 0) # IdentifyType = 0x00 None
+ return tlv_solo.set(TLV.U1, 0) # IdentifyType = 0x00 None
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # no features
+ return tlv_solo.set(TLV.U4, 0) # no features
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # "new data model format and notation"
+ return tlv_solo.set(TLV.U4, 4) # "new data model format and notation"
end
# ====================================================================================================
@@ -77,17 +77,17 @@ class Matter_Plugin_Device : Matter_Plugin
if attribute == 0x0000 # ---------- ----------
return nil # TODO
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)#
+ return tlv_solo.set(TLV.U4, 0)#
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4)# "new data model format and notation"
+ 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.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
# ====================================================================================================
@@ -104,14 +104,14 @@ class Matter_Plugin_Device : Matter_Plugin
d1.add_TLV(1, TLV.U2, types[dt]) # Revision
end
# if fabric is not Alexa
- if self.NON_BRIDGE_VENDOR.find(session.get_admin_vendor()) == nil
+ if (self.NON_BRIDGE_VENDOR.find(session.get_admin_vendor()) == nil) && (!self.device.disable_bridge_mode)
var d1 = dtl.add_struct()
d1.add_TLV(0, TLV.U2, 0x0013) # DeviceType
d1.add_TLV(1, TLV.U2, 1) # Revision
end
return dtl
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
# ====================================================================================================
@@ -119,26 +119,26 @@ class Matter_Plugin_Device : Matter_Plugin
import string
if attribute == 0x0003 # ---------- ProductName / string ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
+ return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
elif attribute == 0x0005 # ---------- NodeLabel / string ----------
- return TLV.create_TLV(TLV.UTF1, self.get_name())
+ return tlv_solo.set(TLV.UTF1, self.get_name())
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version']
var version_end = string.find(version_full, '(')
if version_end > 0 version_full = version_full[0..version_end - 1] end
- return TLV.create_TLV(TLV.UTF1, version_full)
+ return tlv_solo.set(TLV.UTF1, version_full)
elif attribute == 0x000F # ---------- SerialNumber / string ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
+ return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
elif attribute == 0x0011 # ---------- Reachable / bool ----------
- return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable
+ return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
elif attribute == 0x0012 # ---------- UniqueID / string 32 max ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
+ return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be
index ae78cf0c3..ee6550cf0 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be
@@ -64,7 +64,7 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -73,15 +73,15 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
- return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
+ return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be
index e69a84bf4..d488f00fd 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be
@@ -71,7 +71,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -80,23 +80,23 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
- return TLV.create_TLV(TLV.U1, self.shadow_bri)
+ return tlv_solo.set(TLV.U1, self.shadow_bri)
elif attribute == 0x0002 # ---------- MinLevel / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x0003 # ---------- MaxLevel / u1 ----------
- return TLV.create_TLV(TLV.U1, 254)
+ return tlv_solo.set(TLV.U1, 254)
elif attribute == 0x000F # ---------- Options / map8 ----------
- return TLV.create_TLV(TLV.U1, 0) #
+ return tlv_solo.set(TLV.U1, 0) #
elif attribute == 0x0011 # ---------- OnLevel / u1 ----------
- return TLV.create_TLV(TLV.U1, self.shadow_bri)
+ return tlv_solo.set(TLV.U1, self.shadow_bri)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0X01) # OnOff
+ return tlv_solo.set(TLV.U4, 0X01) # OnOff
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation"
+ return tlv_solo.set(TLV.U4, 5) # "new data model format and notation"
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be
index b40c45bf3..27d9657d4 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be
@@ -78,7 +78,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -87,24 +87,24 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
self.update_shadow_lazy()
if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
- return TLV.create_TLV(TLV.U1, self.shadow_ct)
+ return tlv_solo.set(TLV.U1, self.shadow_ct)
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
- return TLV.create_TLV(TLV.U1, 2)# 2 = ColorTemperatureMireds
+ return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds
elif attribute == 0x000F # ---------- Options / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ----------
- return TLV.create_TLV(TLV.U1, self.ct_min)
+ return tlv_solo.set(TLV.U1, self.ct_min)
elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ----------
- return TLV.create_TLV(TLV.U1, self.ct_max)
+ return tlv_solo.set(TLV.U1, self.ct_max)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0x10) # CT
+ return tlv_solo.set(TLV.U4, 0x10) # CT
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
+ return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be
index 3e9871dbb..41981fcbd 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be
@@ -70,7 +70,7 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -79,32 +79,32 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- CurrentHue / u1 ----------
- return TLV.create_TLV(TLV.U1, self.shadow_hue)
+ return tlv_solo.set(TLV.U1, self.shadow_hue)
elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ----------
- return TLV.create_TLV(TLV.U1, self.shadow_sat)
+ return tlv_solo.set(TLV.U1, self.shadow_sat)
elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
+ return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
elif attribute == 0x000F # ---------- Options / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x400A # ---------- ColorCapabilities / map2 ----------
- return TLV.create_TLV(TLV.U1, 0x01) # HS
+ return tlv_solo.set(TLV.U1, 0x01) # HS
# Defined Primaries Information Attribute Set
elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------
- return TLV.create_TLV(TLV.U1, 0)
+ return tlv_solo.set(TLV.U1, 0)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0x01) # HS
+ return tlv_solo.set(TLV.U4, 0x01) # HS
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
+ return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be
index 534996478..7fad806ca 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be
@@ -31,7 +31,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
static var NAME = "Relay" # display name of the plug-in
static var ARG = "relay" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var ARG_HINT = "Enter Relay number"
+ static var ARG_HINT = "Relay number"
static var UPDATE_TIME = 250 # update every 250ms
static var CLUSTERS = {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
@@ -86,7 +86,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -95,15 +95,15 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
- return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
+ return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be
index abf540b5f..fa244e2ab 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be
@@ -57,7 +57,7 @@ class Matter_Plugin_Root : Matter_Plugin
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
import string
var TLV = matter.TLV
var cluster = ctx.cluster
@@ -66,18 +66,18 @@ class Matter_Plugin_Root : Matter_Plugin
if cluster == 0x0030 # ========== GeneralCommissioning cluster 11.9 p.627 ==========
if attribute == 0x0000 # ---------- Breadcrumb ----------
- return TLV.create_TLV(TLV.U8, session._breadcrumb)
+ return tlv_solo.set(TLV.U8, session._breadcrumb)
elif attribute == 0x0001 # ---------- BasicCommissioningInfo / BasicCommissioningInfo----------
var bci = TLV.Matter_TLV_struct()
bci.add_TLV(0, TLV.U2, 60) # FailSafeExpiryLengthSeconds
bci.add_TLV(1, TLV.U2, 900) # MaxCumulativeFailsafeSeconds
return bci
elif attribute == 0x0002 # ---------- RegulatoryConfig / RegulatoryLocationType ----------
- return TLV.create_TLV(TLV.U1, 2) # 2 = IndoorOutdoor | esp-matter = 0
+ return tlv_solo.set(TLV.U1, 2) # 2 = IndoorOutdoor | esp-matter = 0
elif attribute == 0x0003 # ---------- LocationCapability / RegulatoryLocationType----------
- return TLV.create_TLV(TLV.U1, 2) # 2 = IndoorOutdoor
+ return tlv_solo.set(TLV.U1, 2) # 2 = IndoorOutdoor
elif attribute == 0x0004 # ---------- SupportsConcurrentConnection / bool ----------
- return TLV.create_TLV(TLV.BOOL, false) # false - maybe can set to true
+ return tlv_solo.set(TLV.BOOL, false) # false - maybe can set to true
end
# ====================================================================================================
elif cluster == 0x0032 # ========== Diagnostic Logs Cluster 11.10 p.637 ==========
@@ -124,12 +124,12 @@ class Matter_Plugin_Root : Matter_Plugin
end
return nwi
elif attribute == 0x0001 # ---------- RebootCount u16 ----------
- return TLV.create_TLV(TLV.U2, tasmota.cmd("Status 1", true)['StatusPRM']['BootCount'])
+ return tlv_solo.set(TLV.U2, tasmota.cmd("Status 1", true)['StatusPRM']['BootCount'])
elif attribute == 0x0002 # ---------- UpTime u16 ----------
- return TLV.create_TLV(TLV.U4, tasmota.cmd("Status 11", true)['StatusSTS']['UptimeSec'])
+ return tlv_solo.set(TLV.U4, tasmota.cmd("Status 11", true)['StatusSTS']['UptimeSec'])
# TODO add later other attributes
elif attribute == 0x0008 # ---------- TestEventTriggersEnabled bool ----------
- return TLV.create_TLV(TLV.BOOL, false) # false - maybe can set to true
+ return tlv_solo.set(TLV.BOOL, false) # false - maybe can set to true
end
# ====================================================================================================
@@ -139,22 +139,25 @@ class Matter_Plugin_Root : Matter_Plugin
# ====================================================================================================
elif cluster == 0x0038 # ========== Time Synchronization 11.16 p.689 ==========
if attribute == 0x0000 # ---------- UTCTime / epoch_us ----------
- var epoch_us = int64(tasmota.rtc()['utc']) * int64(1000000)
- return TLV.create_TLV(TLV.U8, epoch_us) # TODO test the conversion of int64()
+ var epoch_us = int64(tasmota.rtc_utc()) * int64(1000000)
+ return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64()
elif attribute == 0x0001 # ---------- Granularity / enum ----------
- return TLV.create_TLV(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift)
+ return tlv_solo.set(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift)
# TODO add some missing args
elif attribute == 0x0007 # ---------- LocalTime / epoch_us ----------
var epoch_us = int64(tasmota.rtc()['local']) * int64(1000000)
- return TLV.create_TLV(TLV.U8, epoch_us) # TODO test the conversion of int64()
+ return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64()
end
# ====================================================================================================
elif cluster == 0x003E # ========== Node Operational Credentials Cluster 11.17 p.704 ==========
+ self.ack_request(ctx) # long operation, send Ack first
if attribute == 0x0000 # ---------- NOCs / list[NOCStruct] ----------
var nocl = TLV.Matter_TLV_array() # NOCs, p.711
- for loc_fabric: self.device.sessions.active_fabrics()
+ var fabs = ctx.fabric_filtered ? [session.get_fabric()] : self.device.sessions.active_fabrics()
+ for loc_fabric: fabs
+ 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
@@ -163,7 +166,9 @@ class Matter_Plugin_Root : Matter_Plugin
return nocl
elif attribute == 0x0001 # ---------- Fabrics / list[FabricDescriptorStruct] ----------
var fabrics = TLV.Matter_TLV_array() # Fabrics, p.711
- for loc_fabric: self.device.sessions.active_fabrics()
+ var fabs = ctx.fabric_filtered ? [session.get_fabric()] : self.device.sessions.active_fabrics()
+ for loc_fabric: fabs
+ if loc_fabric == nil continue end
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
@@ -175,16 +180,16 @@ class Matter_Plugin_Root : Matter_Plugin
end
return fabrics
elif attribute == 0x0002 # ---------- SupportedFabrics / u1 ----------
- return TLV.create_TLV(TLV.U1, matter.Fabric._MAX_CASE) # Max 5 fabrics
+ return tlv_solo.set(TLV.U1, matter.Fabric._MAX_CASE) # Max 5 fabrics
elif attribute == 0x0003 # ---------- CommissionedFabrics / u1 ----------
var fabric_actice = self.device.sessions.count_active_fabrics()
- return TLV.create_TLV(TLV.U1, fabric_actice) # number of active fabrics
+ return tlv_solo.set(TLV.U1, fabric_actice) # number of active fabrics
elif attribute == 0x0004 # ---------- TrustedRootCertificates / list[octstr] ----------
# TODO
elif attribute == 0x0005 # ---------- Current FabricIndex / u1 ----------
var fab_index = session._fabric.get_fabric_index()
if fab_index == nil fab_index = 0 end # if PASE session, then the fabric index should be zero
- return TLV.create_TLV(TLV.U1, fab_index) # number of active sessions
+ return tlv_solo.set(TLV.U1, fab_index) # number of active sessions
end
# ====================================================================================================
@@ -193,57 +198,58 @@ class Matter_Plugin_Root : Matter_Plugin
var commissioning_open = self.device.is_commissioning_open()
var basic_commissioning = self.device.is_root_commissioning_open()
var val = commissioning_open ? (basic_commissioning ? 2 #-BasicWindowOpen-# : 1 #-EnhancedWindowOpen-#) : 0 #-WindowNotOpen-#
- return TLV.create_TLV(TLV.U1, val)
+ return tlv_solo.set(TLV.U1, val)
elif attribute == 0x0001 # ---------- AdminFabricIndex / u16 ----------
var admin_fabric = self.device.commissioning_admin_fabric
if admin_fabric != nil
- return TLV.create_TLV(TLV.U2, admin_fabric.get_fabric_index())
+ return tlv_solo.set(TLV.U2, admin_fabric.get_fabric_index())
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0002 # ---------- AdminVendorId / u16 ----------
var admin_fabric = self.device.commissioning_admin_fabric
if admin_fabric != nil
- return TLV.create_TLV(TLV.U2, admin_fabric.get_admin_vendor())
+ return tlv_solo.set(TLV.U2, admin_fabric.get_admin_vendor())
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
end
# ====================================================================================================
elif cluster == 0x0028 # ========== Basic Information Cluster cluster 11.1 p.565 ==========
+ self.ack_request(ctx) # long operation, send Ack first
if attribute == 0x0000 # ---------- DataModelRevision / CommissioningWindowStatus ----------
- return TLV.create_TLV(TLV.U2, 1)
+ return tlv_solo.set(TLV.U2, 1)
elif attribute == 0x0001 # ---------- VendorName / string ----------
- return TLV.create_TLV(TLV.UTF1, "Tasmota")
+ return tlv_solo.set(TLV.UTF1, "Tasmota")
elif attribute == 0x0002 # ---------- VendorID / vendor-id ----------
- return TLV.create_TLV(TLV.U2, self.device.vendorid) # Vendor ID reserved for development
+ return tlv_solo.set(TLV.U2, self.device.vendorid) # Vendor ID reserved for development
elif attribute == 0x0003 # ---------- ProductName / string ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
+ return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
elif attribute == 0x0004 # ---------- ProductID / u16 (opt) ----------
- return TLV.create_TLV(TLV.U2, 32768) # taken from esp-matter example
+ return tlv_solo.set(TLV.U2, 32768) # taken from esp-matter example
elif attribute == 0x0005 # ---------- NodeLabel / string ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.cmd("FriendlyName", true)['FriendlyName1'])
+ return tlv_solo.set(TLV.UTF1, tasmota.cmd("FriendlyName", true)['FriendlyName1'])
elif attribute == 0x0006 # ---------- Location / string ----------
- return TLV.create_TLV(TLV.UTF1, "XX") # no location
+ return tlv_solo.set(TLV.UTF1, "XX") # no location
elif attribute == 0x0007 # ---------- HardwareVersion / u16 ----------
- return TLV.create_TLV(TLV.U2, 0)
+ return tlv_solo.set(TLV.U2, 0)
elif attribute == 0x0008 # ---------- HardwareVersionString / string ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware'])
+ return tlv_solo.set(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware'])
elif attribute == 0x0009 # ---------- SoftwareVersion / u32 ----------
- return TLV.create_TLV(TLV.U2, 1)
+ return tlv_solo.set(TLV.U2, 1)
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version']
var version_end = string.find(version_full, '(')
if version_end > 0 version_full = version_full[0..version_end - 1] end
- return TLV.create_TLV(TLV.UTF1, version_full)
+ return tlv_solo.set(TLV.UTF1, version_full)
elif attribute == 0x000F # ---------- SerialNumber / string ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
+ return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
elif attribute == 0x0011 # ---------- Reachable / bool ----------
- return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable
+ return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
elif attribute == 0x0012 # ---------- UniqueID / string 32 max ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
+ return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
elif attribute == 0x0013 # ---------- CapabilityMinima / CapabilityMinimaStruct ----------
var cps = TLV.Matter_TLV_struct()
cps.add_TLV(0, TLV.U2, 3) # CaseSessionsPerFabric = 3
@@ -261,18 +267,18 @@ class Matter_Plugin_Root : Matter_Plugin
if attribute == 0x0000 # ---------- DefaultOTAProviders / list[ProviderLocationStruct] ----------
return TLV.Matter_TLV_array() # empty list for now TODO
elif attribute == 0x0001 # ---------- UpdatePossible / bool ----------
- return TLV.create_TLV(TLV.BOOL, 0) # we claim that update is not possible, would require to go to Tasmota UI
+ return tlv_solo.set(TLV.BOOL, 0) # we claim that update is not possible, would require to go to Tasmota UI
elif attribute == 0x0002 # ---------- UpdateState / UpdateStateEnum ----------
- return TLV.create_TLV(TLV.U1, 1) # Idle
+ return tlv_solo.set(TLV.U1, 1) # Idle
elif attribute == 0x0003 # ---------- UpdateStateProgress / uint8 ----------
- return TLV.create_TLV(TLV.NULL, nil) # null, nothing in process
+ return tlv_solo.set(TLV.NULL, nil) # null, nothing in process
end
# ====================================================================================================
elif cluster == 0x002B # ========== Localization Configuration Cluster 11.3 p.580 ==========
if attribute == 0x0000 # ---------- ActiveLocale / string ----------
- return TLV.create_TLV(TLV.UTF1, tasmota.locale())
+ return tlv_solo.set(TLV.UTF1, tasmota.locale())
elif attribute == 0x0001 # ---------- SupportedLocales / list[string] ----------
var locl = TLV.Matter_TLV_array()
locl.add_TLV(nil, TLV.UTF1, tasmota.locale())
@@ -283,9 +289,9 @@ class Matter_Plugin_Root : Matter_Plugin
elif cluster == 0x002C # ========== Time Format Localization Cluster 11.4 p.581 ==========
if attribute == 0x0000 # ---------- HourFormat / HourFormat ----------
- return TLV.create_TLV(TLV.U1, 1) # 1 = 24hr
+ return tlv_solo.set(TLV.U1, 1) # 1 = 24hr
elif attribute == 0x0001 # ---------- ActiveCalendarType / CalendarType ----------
- return TLV.create_TLV(TLV.U1, 4) # 4 = Gregorian
+ return tlv_solo.set(TLV.U1, 4) # 4 = Gregorian
elif attribute == 0x0002 # ---------- SupportedCalendarTypes / list[CalendarType] ----------
var callist = TLV.Matter_TLV_array()
callist.add_TLV(nil, TLV.create_TLV(TLV.U1, 4))
@@ -295,9 +301,9 @@ class Matter_Plugin_Root : Matter_Plugin
# ====================================================================================================
elif cluster == 0x0031 # ========== Network Commissioning Cluster cluster 11.8 p.606 ==========
if attribute == 0x0003 # ---------- ConnectMaxTimeSeconds / uint8 ----------
- return TLV.create_TLV(TLV.U1, 30) # 30 - value taking from example in esp-matter
+ return tlv_solo.set(TLV.U1, 30) # 30 - value taking from example in esp-matter
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0x04) # Put Eth for now which should work for any on-network
+ 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 ==========
@@ -306,16 +312,20 @@ class Matter_Plugin_Root : Matter_Plugin
if 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
- pl.add_TLV(nil, TLV.U2, ep) # add each endpoint
+ # if bridge mode is disabled, don't announce Aggregatore (above 0xFF00)
+ if !disable_bridge_mode || ep < 0xFF00
+ pl.add_TLV(nil, TLV.U2, ep) # add each endpoint
+ end
end
return pl
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
# no match found, return that the attribute is unsupported
@@ -364,6 +374,7 @@ class Matter_Plugin_Root : Matter_Plugin
return srcr
elif command == 0x0004 # ---------- CommissioningComplete p.636 ----------
+ self.ack_request(ctx) # long operation, send Ack first
# no data
if session._fabric
session._breadcrumb = 0 # clear breadcrumb
@@ -412,7 +423,7 @@ class Matter_Plugin_Root : Matter_Plugin
var att_elts = TLV.Matter_TLV_struct()
att_elts.add_TLV(1, TLV.B2, matter.CD_FFF1_8000()) # certification_declaration
att_elts.add_TLV(2, TLV.B1, AttestationNonce) # attestation_nonce
- att_elts.add_TLV(3, TLV.U4, tasmota.rtc()['utc']) # timestamp in epoch-s
+ att_elts.add_TLV(3, TLV.U4, tasmota.rtc_utc()) # timestamp in epoch-s
var attestation_message = att_elts.tlv2raw()
var ac = session.get_ac()
@@ -431,6 +442,7 @@ class Matter_Plugin_Root : Matter_Plugin
return ar
elif command == 0x0004 # ---------- CSRRequest ----------
+ self.ack_request(ctx) # long operation, send Ack first
var CSRNonce = val.findsubval(0) # octstr 32
if size(CSRNonce) != 32 return nil end # check size on nonce
var IsForUpdateNOC = val.findsubval(1, false) # bool
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be
index c335a75ed..91d3a81a8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be
@@ -28,7 +28,7 @@ class Matter_Plugin_Device end
class Matter_Plugin_Sensor : Matter_Plugin_Device
static var ARG = "filter" # additional argument name (or empty if none)
- static var ARG_HINT = "Enter Filter pattern"
+ static var ARG_HINT = "Filter pattern"
static var UPDATE_TIME = 5000 # update sensor every 5s
var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
var tasmota_sensor_matcher # Actual matcher object
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be
index aa2c680e2..7b5fbf6fa 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be
@@ -30,9 +30,9 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
static var TYPE = "contact" # name of the plug-in in json
static var NAME = "Contact" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Enter Switch number"
+ static var ARG_HINT = "Switch number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 5000 # update every 250ms
+ static var UPDATE_TIME = 750 # update every 750ms
static var CLUSTERS = {
0x0045: [0,0xFFFC,0xFFFD], # Boolean State p.70 - no writable
}
@@ -75,7 +75,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -84,18 +84,18 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
if cluster == 0x0045 # ========== Boolean State ==========
if attribute == 0x0000 # ---------- StateValue / bool ----------
if self.shadow_contact != nil
- return TLV.create_TLV(TLV.BOOL, self.shadow_contact)
+ return tlv_solo.set(TLV.BOOL, self.shadow_contact)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 1) # 1 = Initial release
+ return tlv_solo.set(TLV.U4, 1) # 1 = Initial release
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be
index c4701a772..3786eaa47 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be
@@ -55,7 +55,7 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -64,22 +64,22 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ==========
if attribute == 0x0000 # ---------- Humidity / u16 ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.U2, int(self.shadow_value))
+ return tlv_solo.set(TLV.U2, int(self.shadow_value))
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ----------
- return TLV.create_TLV(TLV.U2, 500) # 0%
+ return tlv_solo.set(TLV.U2, 500) # 0%
elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
- return TLV.create_TLV(TLV.U2, 10000) # 100%
+ return tlv_solo.set(TLV.U2, 10000) # 100%
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be
index fd213c665..f5602b1ad 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be
@@ -62,7 +62,7 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -71,22 +71,22 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.U2, int(self.shadow_value))
+ return tlv_solo.set(TLV.U2, int(self.shadow_value))
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.U2, 1) # 1 lux
+ return tlv_solo.set(TLV.U2, 1) # 1 lux
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.U2, 0xFFFE)
+ return tlv_solo.set(TLV.U2, 0xFFFE)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be
index e7655417a..6d2106849 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be
@@ -30,9 +30,9 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
static var TYPE = "occupancy" # name of the plug-in in json
static var NAME = "Occupancy" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Enter Switch number"
+ static var ARG_HINT = "Switch number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 5000 # update every 250ms
+ static var UPDATE_TIME = 750 # update every 750ms
static var CLUSTERS = {
0x0406: [0,1,2,0xFFFC,0xFFFD], # Occupancy Sensing p.105 - no writable
}
@@ -72,7 +72,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -81,22 +81,22 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
if cluster == 0x0406 # ========== Occupancy Sensing ==========
if attribute == 0x0000 # ---------- Occupancy / U8 ----------
if self.shadow_occupancy != nil
- return TLV.create_TLV(TLV.U1, self.shadow_occupancy)
+ return tlv_solo.set(TLV.U1, self.shadow_occupancy)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ----------
- return TLV.create_TLV(TLV.U1, 3) # physical contact
+ return tlv_solo.set(TLV.U1, 3) # physical contact
elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
- return TLV.create_TLV(TLV.U1, 0) # unknown
+ return tlv_solo.set(TLV.U1, 0) # unknown
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 4 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be
index 8226116e8..0746ee49f 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be
@@ -28,9 +28,9 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
static var TYPE = "onoff" # name of the plug-in in json
static var NAME = "OnOff Sensor" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Enter Switch number"
+ static var ARG_HINT = "Switch number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 5000 # update every 250ms
+ static var UPDATE_TIME = 750 # update every 750ms
static var CLUSTERS = {
0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
}
@@ -70,7 +70,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -79,15 +79,15 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
- return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
+ return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
+ return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be
index ac4889a78..ae4c6ef3c 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be
@@ -55,7 +55,7 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -64,22 +64,22 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.I2, int(self.shadow_value))
+ return tlv_solo.set(TLV.I2, int(self.shadow_value))
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.I2, 500) # 500 hPA
+ return tlv_solo.set(TLV.I2, 500) # 500 hPA
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
- return TLV.create_TLV(TLV.I2, 1500) # 1500 hPA
+ return tlv_solo.set(TLV.I2, 1500) # 1500 hPA
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
+ return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be
index 1f6b57553..33dec8d13 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be
@@ -40,6 +40,9 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
# This must be overriden.
# This allows to convert the raw sensor value to the target one, typically int
def pre_value(val)
+ if tasmota.get_option(8) == 1 # Fahrenheit
+ val = (val - 32) / 1.8
+ end
return val != nil ? int(val * 100) : nil
end
@@ -55,7 +58,7 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -64,22 +67,22 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
if self.shadow_value != nil
- return TLV.create_TLV(TLV.I2, self.shadow_value)
+ return tlv_solo.set(TLV.I2, self.shadow_value)
else
- return TLV.create_TLV(TLV.NULL, nil)
+ return tlv_solo.set(TLV.NULL, nil)
end
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ----------
- return TLV.create_TLV(TLV.I2, -5000) # -50 °C
+ return tlv_solo.set(TLV.I2, -5000) # -50 °C
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
- return TLV.create_TLV(TLV.I2, 15000) # 150 °C
+ return tlv_solo.set(TLV.I2, 15000) # 150 °C
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0)
+ return tlv_solo.set(TLV.U4, 0)
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 4 = New data model format and notation
+ return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be
index 6b3de484b..e3285b36f 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be
@@ -31,7 +31,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
static var NAME = "Shutter" # display name of the plug-in
static var ARG = "shutter" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var ARG_HINT = "Enter Relay number"
+ static var ARG_HINT = "Relay number"
static var CLUSTERS = {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
# 0x0003: inherited # Identify 1.2 p.16
@@ -93,7 +93,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -104,42 +104,42 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
self.update_shadow_lazy()
self.update_inverted()
if attribute == 0x0000 # ---------- Type / enum8 ----------
- return TLV.create_TLV(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
+ return tlv_solo.set(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
elif attribute == 0x0005 # ---------- NumberOfActuationsLift / u16 ----------
- return TLV.create_TLV(TLV.U2, 0)
+ return tlv_solo.set(TLV.U2, 0)
elif attribute == 0x0007 # ---------- ConfigStatus / u8 ----------
- return TLV.create_TLV(TLV.U1, 1 + 8) # Operational + Lift Position Aware
+ return tlv_solo.set(TLV.U1, 1 + 8) # Operational + Lift Position Aware
elif attribute == 0x000D # ---------- EndProductType / u8 ----------
- return TLV.create_TLV(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
+ return tlv_solo.set(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
elif attribute == 0x000E # ---------- CurrentPositionLiftPercent100ths / u16 ----------
if self.shadow_shutter_inverted == 0
matter_position = (100 - self.shadow_shutter_pos) * 100
else
matter_position = self.shadow_shutter_pos * 100
end
- return TLV.create_TLV(TLV.U2, matter_position)
+ return tlv_solo.set(TLV.U2, matter_position)
elif attribute == 0x000A # ---------- OperationalStatus / u8 ----------
var op = self.shadow_shutter_direction == 0 ? 0 : (self.shadow_shutter_direction > 0 ? 1 : 2)
- return TLV.create_TLV(TLV.U1, op)
+ return tlv_solo.set(TLV.U1, op)
elif attribute == 0x000B # ---------- TargetPositionLiftPercent100ths / u16 ----------
if self.shadow_shutter_inverted == 0
matter_position = (100 - self.shadow_shutter_target) * 100
else
matter_position = self.shadow_shutter_target * 100
end
- return TLV.create_TLV(TLV.U2, matter_position)
+ return tlv_solo.set(TLV.U2, matter_position)
elif attribute == 0x0017 # ---------- Mode / u8 ----------
- return TLV.create_TLV(TLV.U1, 0) # normal mode
+ return tlv_solo.set(TLV.U1, 0) # normal mode
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 1 + 4) # Lift + PA_LF
+ return tlv_solo.set(TLV.U4, 1 + 4) # Lift + PA_LF
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 5) # New data model format and notation
+ return tlv_solo.set(TLV.U4, 5) # New data model format and notation
end
else
- return super(self).read_attribute(session, ctx)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be
index dd58f0918..0849f3418 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be
@@ -96,7 +96,7 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter
#############################################################
# read an attribute
#
- def read_attribute(session, ctx)
+ def read_attribute(session, ctx, tlv_solo)
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
@@ -105,30 +105,30 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter
if cluster == 0x0102 # ========== Window Covering 5.3 p.289 ==========
self.update_shadow_lazy()
if attribute == 0x0007 # ---------- ConfigStatus / u8 ----------
- return TLV.create_TLV(TLV.U1, 1 + 8 + 16) # Operational + Lift Position Aware + Tilt Position Aware
+ return tlv_solo.set(TLV.U1, 1 + 8 + 16) # Operational + Lift Position Aware + Tilt Position Aware
elif attribute == 0x000F # ---------- CurrentPositionTiltPercent100ths / u8 ----------
self.update_tilt_min_max()
if self.tilt_min != nil && self.tilt_max != nil
var tilt_percentage = tasmota.scale_uint(self.shadow_shutter_tilt - self.tilt_min, 0, self.tilt_max - self.tilt_min, 0, 10000)
- return TLV.create_TLV(TLV.U2, tilt_percentage)
+ return tlv_solo.set(TLV.U2, tilt_percentage)
else
- return TLV.create_TLV(TLV.NULL, nil) # return invalid
+ return tlv_solo.set(TLV.NULL, nil) # return invalid
end
elif attribute == 0x000C # ---------- TargetPositionTiltPercent100ths / u16 ----------
if self.tilt_min != nil && self.tilt_max != nil
var tilt_percentage = tasmota.scale_uint(self.shadow_shutter_tilt - self.tilt_min, 0, self.tilt_max - self.tilt_min, 0, 10000)
- return TLV.create_TLV(TLV.U2, tilt_percentage)
+ return tlv_solo.set(TLV.U2, tilt_percentage)
else
- return TLV.create_TLV(TLV.NULL, nil) # return invalid
+ return tlv_solo.set(TLV.NULL, nil) # return invalid
end
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 3 + 4 + 16) # Lift + Tilt + PA_LF + PA_TL
+ 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)
+ return super(self).read_attribute(session, ctx, tlv_solo)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be
new file mode 100644
index 000000000..fb9f1dd56
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be
@@ -0,0 +1,96 @@
+#
+# Matter_Profiler.be - suppport for Matter profiler framework
+#
+# 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 .
+#
+
+import matter
+
+#@ solidify:Matter_Profiler,weak
+
+#################################################################################
+# Matter_Profiler
+#
+# Used to store all the elements of the reponse to an attribute or command
+#################################################################################
+class Matter_Profiler
+ static var PREALLOCATED = 50
+ var millis
+ var names
+ var active
+ var allocs
+ var reallocs
+ var len # number of entries
+
+ def init()
+ self.active = false
+ self.millis = list()
+ self.millis.resize(self.PREALLOCATED) # we force zero allocation when using profiler
+ self.names = list()
+ self.names.resize(self.PREALLOCATED)
+ self.allocs = list()
+ self.allocs.resize(self.PREALLOCATED)
+ self.reallocs = list()
+ self.reallocs.resize(self.PREALLOCATED)
+ self.len = 0
+ end
+
+ def set_active(v)
+ self.active = bool(v)
+ end
+
+ def start()
+ if !self.active return end
+ var idx = 0
+ while idx < self.PREALLOCATED
+ self.millis[idx] = nil
+ self.names[idx] = nil
+ idx += 1
+ end
+ self.len = 0
+ tasmota.gc() # To get deterministic values, we force a full GC before profiler
+ self.log("start")
+ end
+
+ def log(name)
+ if !self.active return end
+ import debug
+ var len = self.len
+ if len >= self.PREALLOCATED return end # size overflow
+ self.millis[len] = tasmota.millis()
+ self.names[len] = name
+ self.allocs[len] = debug.allocs()
+ self.reallocs[len] = debug.reallocs()
+ self.len += 1
+ end
+
+ def dump(loglevel)
+ if !self.active return end
+ self.log("<--end-->")
+ tasmota.log("MTR: Profiler dump:", loglevel)
+ var origin = self.millis[0]
+ var allocs0 = self.allocs[0]
+ var reallocs0 = self.reallocs[0]
+ var idx = 1
+ while idx < self.len
+ # tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}|{self.reallocs[idx] - reallocs0:4i}]'{self.names[idx]}'", loglevel)
+ tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}]'{self.names[idx]}'", loglevel)
+ idx += 1
+ end
+ end
+
+end
+matter.Profiler = Matter_Profiler
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
index dc63280c3..dd17a0df0 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
@@ -165,7 +165,7 @@ class Matter_Session : Matter_Expirable
#############################################################
# Update the timestamp or any other information
def update()
- self.last_used = tasmota.rtc()['utc']
+ self.last_used = tasmota.rtc_utc()
end
def set_mode_PASE() self.set_mode(self._PASE) end
@@ -254,7 +254,8 @@ class Matter_Session : Matter_Expirable
def get_icac() return self._fabric.icac end
def get_ipk_epoch_key() return self._fabric.ipk_epoch_key end
def get_fabric_id() return self._fabric.fabric_id end
- def get_device_id() return self._fabric.device_id end
+ def get_fabric_index() return self._fabric ? self._fabric.fabric_index : nil end
+ def get_device_id() return self._fabric ? self._fabric.device_id : nil end
def get_fabric_compressed() return self._fabric.fabric_compressed end
def get_fabric_label() return self._fabric.fabric_label end
def get_admin_subject() return self._fabric.admin_subject 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 0627eb6fc..0c819b906 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
@@ -310,22 +310,27 @@ class Matter_Session_Store
#############################################################
def save_fabrics()
import json
- self.remove_expired() # clean before saving
- var sessions_saved = 0
-
- var fabs = []
- for f : self.fabrics.persistables()
- for _ : f._sessions.persistables() sessions_saved += 1 end # count persitable sessions
- fabs.push(f.tojson())
- end
- var fabs_size = size(fabs)
- fabs = "[" + fabs.concat(",") + "]"
-
try
+ self.remove_expired() # clean before saving
+ var sessions_saved = 0
+ var fabrics_saved = 0
+
var f = open(self._FABRICS, "w")
- f.write(fabs)
+
+ f.write("[")
+ for fab : self.fabrics.persistables()
+ for _ : fab._sessions.persistables() sessions_saved += 1 end # count persitable sessions
+ if fabrics_saved > 0
+ f.write(",")
+ end
+ var f_json = fab.tojson()
+ f.write(f_json)
+ fabrics_saved += 1
+ end
+ f.write("]")
+
f.close()
- tasmota.log(format("MTR: =Saved %i fabric(s) and %i session(s)", fabs_size, sessions_saved), 3)
+ tasmota.log(f"MTR: =Saved {fabrics_saved} fabric(s) and {sessions_saved} session(s)", 2)
self.device.event_fabrics_saved() # signal event
except .. as e, m
tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
index a9db4d6ae..9c19e0b36 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
@@ -94,6 +94,9 @@ class Matter_TLV
static class Matter_TLV_item
# we keep a shortcut reference to the Matter_TLV class
static var TLV = Matter_TLV
+ static var is_list = false
+ static var is_array = false
+ static var is_struct = false
# parent tag to inherit vendor/profile/tag
var parent
var next_idx # next idx in buffer (when parsing)
@@ -113,6 +116,32 @@ class Matter_TLV
self.parent = parent
end
+ #############################################################
+ # reset - allows reuse of the object
+ def reset(parent)
+ var n = nil
+ self.parent = parent
+ self.next_idx = n
+ self.tag_vendor = n
+ self.tag_profile = n
+ self.tag_number = n
+ self.tag_sub = n
+ self.typ = n
+ self.val = n
+ end
+
+ #############################################################
+ # set value, equivalent to create_TLV() without allocation
+ #
+ def set(t, value)
+ self.reset()
+ if value != nil || t == 0x14 #-t == matter.TLV.NULL-# # put the actual number for performance
+ self.typ = t
+ self.val = value
+ return self
+ end
+ end
+
#############################################################
# neutral converter
def to_TLV()
@@ -135,23 +164,24 @@ class Matter_TLV
#
# We are trying to follow the official Matter way of printing TLV
# Ex: '42U' or '1 = 42U' or '0xFFF1::0xDEED:0xAA55FEED = 42U'
- def tostring()
+ def tostring(no_tag)
# var s = " 0 s += "= " end
end
- if size(s) > 0 s += "= " end
-
# print value
if type(self.val) == 'int' s += format("%i", self.val)
if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8 s += "U" end
@@ -171,6 +201,30 @@ class Matter_TLV
return s
end
+ # simplified version of tostring() for simple values
+ def to_str_val()
+ # print value
+ if type(self.val) == 'int'
+ if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8
+ return str(self.val) + "U"
+ else
+ return str(self.val)
+ end
+ elif type(self.val) == 'bool' return self.val ? "true" : "false"
+ elif self.val == nil return "null"
+ elif type(self.val) == 'real' return str(self.val)
+ elif type(self.val) == 'string' return self.val
+ elif isinstance(self.val, int64)
+ if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8
+ return self.val.tostring() + "U"
+ else
+ return self.val.tostring()
+ end
+ elif type(self.val) == 'instance'
+ return self.tostring(true)
+ end
+ end
+
#############################################################
# parse a bytes() array from `idx`
# args:
@@ -556,7 +610,10 @@ class Matter_TLV
# class Matter_TLV_struct var _ end
static class Matter_TLV_list : Matter_TLV_item
- static var is_struct = false
+ # inherited
+ static var is_list = true
+ # static var is_array = false
+ # static var is_struct = false
#################################################################################
def init(parent)
@@ -566,26 +623,27 @@ class Matter_TLV
end
#################################################################################
- def tostring()
- return self.tostring_inner(false, "[[", "]]")
+ def tostring(no_tag)
+ return self.tostring_inner(false, "[[", "]]", no_tag)
end
- def tostring_inner(sorted, pre, post)
+ def tostring_inner(sorted, pre, post, no_tag)
var s = ""
try
- if self.tag_profile == -1
- s += "Matter::"
- if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
- else
- if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end
- if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end
- if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
- if self.tag_sub != nil s += format("%i ", self.tag_sub) end
+ if no_tag != true
+ if self.tag_profile == -1
+ s += "Matter::"
+ if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
+ else
+ if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end
+ if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end
+ if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
+ if self.tag_sub != nil s += format("%i ", self.tag_sub) end
+ end
+ if size(s) > 0 s += "= " end
end
- if size(s) > 0 s += "= " end
-
s += pre
# sort values
@@ -604,6 +662,11 @@ class Matter_TLV
return s
end
+ # simplified version of tostring() for simple values
+ def to_str_val()
+ return self.tostring(true)
+ end
+
#################################################################################
def parse(b, idx)
# iterate until end of struct
@@ -768,6 +831,8 @@ class Matter_TLV
# Matter_TLV_struct class
#################################################################################
static class Matter_TLV_struct : Matter_TLV_list
+ static var is_list = false
+ # static var is_array = false
static var is_struct = true
def init(parent)
@@ -777,8 +842,8 @@ class Matter_TLV
end
#############################################################
- def tostring()
- return self.tostring_inner(true, "{", "}")
+ def tostring(no_tag)
+ return self.tostring_inner(true, "{", "}", no_tag)
end
end
@@ -786,6 +851,10 @@ class Matter_TLV
# Matter_TLV_array class
#################################################################################
static class Matter_TLV_array : Matter_TLV_list
+ static var is_list = false
+ static var is_array = true
+ # static var is_struct = false
+
def init(parent)
super(self).init(parent)
self.typ = self.TLV.ARRAY
@@ -793,8 +862,8 @@ class Matter_TLV
end
#############################################################
- def tostring()
- return self.tostring_inner(false, "[", "]")
+ def tostring(no_tag)
+ return self.tostring_inner(false, "[", "]", no_tag)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be
index e673f98f4..62bc065c8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be
@@ -66,20 +66,25 @@ class Matter_UDPServer
static var RETRIES = 5 # 6 transmissions max (5 retries) - 1 more than spec `MRP_MAX_TRANSMISSIONS` 4.11.8 p.146
static var MAX_PACKETS_READ = 4 # read at most 4 packets per tick
var addr, port # local addr and port
+ var device
var listening # true if active
var udp_socket
var dispatch_cb # callback to call when a message is received
var packets_sent # list map of packets sent to be acknowledged
+ var loop_cb # closure to pass to fast_loop
+ var packet # reuse the packer `bytes()` object at each iteration
#############################################################
# Init UDP Server listening to `addr` and `port` (opt).
#
# By default, the server listens to `""` (all addresses) and port `5540`
- def init(addr, port)
+ def init(device, addr, port)
+ self.device = device
self.addr = addr ? addr : ""
self.port = port ? port : 5540
self.listening = false
self.packets_sent = []
+ self.loop_cb = def () self.loop() end
end
#############################################################
@@ -95,7 +100,8 @@ class Matter_UDPServer
if !ok raise "network_error", "could not open UDP server" end
self.listening = true
self.dispatch_cb = cb
- tasmota.add_driver(self)
+ # tasmota.add_driver(self)
+ tasmota.add_fast_loop(self.loop_cb)
end
end
@@ -105,7 +111,8 @@ class Matter_UDPServer
if self.listening
self.udp_socket.stop()
self.listening = false
- tasmota.remove_driver(self)
+ # tasmota.remove_driver(self)
+ tasmota.remove_fast_loop(self.loop_cb)
end
end
@@ -115,19 +122,27 @@ class Matter_UDPServer
# Read at most `MAX_PACKETS_READ (4) packets at each tick to
# avoid any starvation.
# Then resend queued outgoing packets.
- def every_50ms()
+ def loop()
+ # import debug
+ var profiler = matter.profiler
var packet_read = 0
if self.udp_socket == nil return end
- var packet = self.udp_socket.read()
+ var packet = self.udp_socket.read(self.packet)
while packet != nil
- # self.packet = packet
+ profiler.start()
+ self.packet = packet # save packet for next iteration
packet_read += 1
var from_addr = self.udp_socket.remote_ip
var from_port = self.udp_socket.remote_port
- tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4)
+ if tasmota.loglevel(4)
+ tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4)
+ end
+ # tasmota.log("MTR: Perf/UDP_received = " + str(debug.counters()), 4)
if self.dispatch_cb
+ profiler.log("udp_loop_dispatch")
self.dispatch_cb(packet, from_addr, from_port)
end
+ profiler.dump(2)
# are we reading new packets?
if packet_read < self.MAX_PACKETS_READ
packet = self.udp_socket.read()
@@ -138,16 +153,24 @@ class Matter_UDPServer
self._resend_packets() # resend any packet
end
+ def every_50ms()
+ self.loop()
+ end
#############################################################
# Send packet now.
#
# Returns `true` if packet was successfully sent.
def send(packet)
var ok = self.udp_socket.send(packet.addr ? packet.addr : self.udp_socket.remote_ip, packet.port ? packet.port : self.udp_socket.remote_port, packet.raw)
+
if ok
- tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4)
+ if tasmota.loglevel(4)
+ tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4)
+ end
else
- tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3)
+ if tasmota.loglevel(3)
+ tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3)
+ end
end
return ok
end
@@ -194,7 +217,9 @@ class Matter_UDPServer
var packet = self.packets_sent[idx]
if packet.msg_id == id && packet.exchange_id == exch
self.packets_sent.remove(idx)
- tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4)
+ if tasmota.loglevel(4)
+ tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4)
+ end
else
idx += 1
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
index 5f808265d..c4701e957 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
@@ -105,6 +105,8 @@ class Matter_UI
var commissioning_open_checked = self.device.commissioning_open != nil ? "checked" : ""
webserver.content_send(f"")
webserver.content_send("
")
+ var disable_bridge_mode_checked = self.device.disable_bridge_mode ? " checked" : ""
+ webserver.content_send(f"Force Static endpoints (non-bridge)
")
end
webserver.content_send("
"
@@ -739,9 +741,9 @@ class Matter_UI
try
# debug information about parameters
- for i:0..webserver.arg_size()-1
- tasmota.log(format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
- end
+ # for i:0..webserver.arg_size()-1
+ # tasmota.log(format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
+ # end
#---------------------------------------------------------------------#
# Change Passcode and/or Passcode
@@ -763,6 +765,11 @@ class Matter_UI
elif webserver.has_arg("save")
var matter_enabled_requested = webserver.has_arg("menable")
var matter_commissioning_requested = webserver.has_arg("comm")
+ var matter_disable_bridge_mode_requested = (webserver.arg("nobridge") == 'on')
+ if self.device.disable_bridge_mode != matter_disable_bridge_mode_requested
+ self.device.disable_bridge_mode = matter_disable_bridge_mode_requested
+ self.device.save_param()
+ end
if matter_enabled_requested != self.matter_enabled()
if matter_enabled_requested
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
index da660771d..d4d7f5a9e 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
@@ -69,18 +69,18 @@ be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /*
( &(const bvalue[19]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D),
- /* K4 */ be_nested_str_weak(tohex),
- /* K5 */ be_nested_str_weak(device),
- /* K6 */ be_nested_str_weak(sessions),
- /* K7 */ be_nested_str_weak(fabrics),
- /* K8 */ be_nested_str_weak(noc),
- /* K9 */ be_nested_str_weak(fabric_id),
- /* K10 */ be_nested_str_weak(device_id),
- /* K11 */ be_nested_str_weak(get_ca_pub),
- /* K12 */ be_nested_str_weak(get_ipk_group_key),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20destinationMessage_X3D),
+ /* K2 */ be_nested_str_weak(loglevel),
+ /* K3 */ be_nested_str_weak(log),
+ /* K4 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D),
+ /* K5 */ be_nested_str_weak(tohex),
+ /* K6 */ be_nested_str_weak(device),
+ /* K7 */ be_nested_str_weak(sessions),
+ /* K8 */ be_nested_str_weak(fabrics),
+ /* K9 */ be_nested_str_weak(noc),
+ /* K10 */ be_nested_str_weak(fabric_id),
+ /* K11 */ be_nested_str_weak(device_id),
+ /* K12 */ be_nested_str_weak(get_ca_pub),
+ /* K13 */ be_nested_str_weak(get_ipk_group_key),
/* K14 */ be_nested_str_weak(HMAC_SHA256),
/* K15 */ be_nested_str_weak(update),
/* K16 */ be_nested_str_weak(out),
@@ -89,77 +89,80 @@ be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /*
}),
be_str_weak(find_fabric_by_destination_id),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
+ ( &(const binstruction[73]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x8C100902, // 0002 GETMET R4 R4 K2
- 0x8C180304, // 0003 GETMET R6 R1 K4
- 0x7C180200, // 0004 CALL R6 1
- 0x001A0606, // 0005 ADD R6 K3 R6
- 0x541E0003, // 0006 LDINT R7 4
- 0x7C100600, // 0007 CALL R4 3
- 0x60100010, // 0008 GETGBL R4 G16
- 0x88140105, // 0009 GETMBR R5 R0 K5
- 0x88140B06, // 000A GETMBR R5 R5 K6
- 0x88140B07, // 000B GETMBR R5 R5 K7
- 0x7C100200, // 000C CALL R4 1
- 0xA8020032, // 000D EXBLK 0 #0041
- 0x5C140800, // 000E MOVE R5 R4
- 0x7C140000, // 000F CALL R5 0
- 0x88180B08, // 0010 GETMBR R6 R5 K8
- 0x4C1C0000, // 0011 LDNIL R7
- 0x1C180C07, // 0012 EQ R6 R6 R7
- 0x741A0007, // 0013 JMPT R6 #001C
- 0x88180B09, // 0014 GETMBR R6 R5 K9
- 0x4C1C0000, // 0015 LDNIL R7
- 0x1C180C07, // 0016 EQ R6 R6 R7
- 0x741A0003, // 0017 JMPT R6 #001C
- 0x88180B0A, // 0018 GETMBR R6 R5 K10
- 0x4C1C0000, // 0019 LDNIL R7
- 0x1C180C07, // 001A EQ R6 R6 R7
- 0x781A0000, // 001B JMPF R6 #001D
- 0x7001FFF0, // 001C JMP #000E
- 0x8C180B0B, // 001D GETMET R6 R5 K11
- 0x7C180200, // 001E CALL R6 1
- 0x00180406, // 001F ADD R6 R2 R6
- 0x881C0B09, // 0020 GETMBR R7 R5 K9
- 0x00180C07, // 0021 ADD R6 R6 R7
- 0x881C0B0A, // 0022 GETMBR R7 R5 K10
- 0x00180C07, // 0023 ADD R6 R6 R7
- 0x8C1C0B0C, // 0024 GETMET R7 R5 K12
- 0x7C1C0200, // 0025 CALL R7 1
- 0xB8220200, // 0026 GETNGBL R8 K1
- 0x8C201102, // 0027 GETMET R8 R8 K2
- 0x8C280D04, // 0028 GETMET R10 R6 K4
- 0x7C280200, // 0029 CALL R10 1
- 0x002A1A0A, // 002A ADD R10 K13 R10
- 0x542E0003, // 002B LDINT R11 4
- 0x7C200600, // 002C CALL R8 3
- 0x8C20070E, // 002D GETMET R8 R3 K14
- 0x5C280E00, // 002E MOVE R10 R7
- 0x7C200400, // 002F CALL R8 2
- 0x8C24110F, // 0030 GETMET R9 R8 K15
- 0x5C2C0C00, // 0031 MOVE R11 R6
- 0x7C240400, // 0032 CALL R9 2
- 0x8C241110, // 0033 GETMET R9 R8 K16
- 0x7C240200, // 0034 CALL R9 1
- 0xB82A0200, // 0035 GETNGBL R10 K1
- 0x8C281502, // 0036 GETMET R10 R10 K2
- 0x8C301304, // 0037 GETMET R12 R9 K4
- 0x7C300200, // 0038 CALL R12 1
- 0x0032220C, // 0039 ADD R12 K17 R12
- 0x54360003, // 003A LDINT R13 4
- 0x7C280600, // 003B CALL R10 3
- 0x1C281201, // 003C EQ R10 R9 R1
- 0x782A0001, // 003D JMPF R10 #0040
- 0xA8040001, // 003E EXBLK 1 1
- 0x80040A00, // 003F RET 1 R5
- 0x7001FFCC, // 0040 JMP #000E
- 0x58100012, // 0041 LDCONST R4 K18
- 0xAC100200, // 0042 CATCH R4 1 0
- 0xB0080000, // 0043 RAISE 2 R0 R0
- 0x4C100000, // 0044 LDNIL R4
- 0x80040800, // 0045 RET 1 R4
+ 0x541A0003, // 0003 LDINT R6 4
+ 0x7C100400, // 0004 CALL R4 2
+ 0x78120006, // 0005 JMPF R4 #000D
+ 0xB8120200, // 0006 GETNGBL R4 K1
+ 0x8C100903, // 0007 GETMET R4 R4 K3
+ 0x8C180305, // 0008 GETMET R6 R1 K5
+ 0x7C180200, // 0009 CALL R6 1
+ 0x001A0806, // 000A ADD R6 K4 R6
+ 0x541E0003, // 000B LDINT R7 4
+ 0x7C100600, // 000C CALL R4 3
+ 0x60100010, // 000D GETGBL R4 G16
+ 0x88140106, // 000E GETMBR R5 R0 K6
+ 0x88140B07, // 000F GETMBR R5 R5 K7
+ 0x88140B08, // 0010 GETMBR R5 R5 K8
+ 0x7C100200, // 0011 CALL R4 1
+ 0xA8020030, // 0012 EXBLK 0 #0044
+ 0x5C140800, // 0013 MOVE R5 R4
+ 0x7C140000, // 0014 CALL R5 0
+ 0x88180B09, // 0015 GETMBR R6 R5 K9
+ 0x4C1C0000, // 0016 LDNIL R7
+ 0x1C180C07, // 0017 EQ R6 R6 R7
+ 0x741A0007, // 0018 JMPT R6 #0021
+ 0x88180B0A, // 0019 GETMBR R6 R5 K10
+ 0x4C1C0000, // 001A LDNIL R7
+ 0x1C180C07, // 001B EQ R6 R6 R7
+ 0x741A0003, // 001C JMPT R6 #0021
+ 0x88180B0B, // 001D GETMBR R6 R5 K11
+ 0x4C1C0000, // 001E LDNIL R7
+ 0x1C180C07, // 001F EQ R6 R6 R7
+ 0x781A0000, // 0020 JMPF R6 #0022
+ 0x7001FFF0, // 0021 JMP #0013
+ 0x8C180B0C, // 0022 GETMET R6 R5 K12
+ 0x7C180200, // 0023 CALL R6 1
+ 0x00180406, // 0024 ADD R6 R2 R6
+ 0x881C0B0A, // 0025 GETMBR R7 R5 K10
+ 0x00180C07, // 0026 ADD R6 R6 R7
+ 0x881C0B0B, // 0027 GETMBR R7 R5 K11
+ 0x00180C07, // 0028 ADD R6 R6 R7
+ 0x8C1C0B0D, // 0029 GETMET R7 R5 K13
+ 0x7C1C0200, // 002A CALL R7 1
+ 0x8C20070E, // 002B GETMET R8 R3 K14
+ 0x5C280E00, // 002C MOVE R10 R7
+ 0x7C200400, // 002D CALL R8 2
+ 0x8C24110F, // 002E GETMET R9 R8 K15
+ 0x5C2C0C00, // 002F MOVE R11 R6
+ 0x7C240400, // 0030 CALL R9 2
+ 0x8C241110, // 0031 GETMET R9 R8 K16
+ 0x7C240200, // 0032 CALL R9 1
+ 0xB82A0200, // 0033 GETNGBL R10 K1
+ 0x8C281502, // 0034 GETMET R10 R10 K2
+ 0x54320003, // 0035 LDINT R12 4
+ 0x7C280400, // 0036 CALL R10 2
+ 0x782A0006, // 0037 JMPF R10 #003F
+ 0xB82A0200, // 0038 GETNGBL R10 K1
+ 0x8C281503, // 0039 GETMET R10 R10 K3
+ 0x8C301305, // 003A GETMET R12 R9 K5
+ 0x7C300200, // 003B CALL R12 1
+ 0x0032220C, // 003C ADD R12 K17 R12
+ 0x54360003, // 003D LDINT R13 4
+ 0x7C280600, // 003E CALL R10 3
+ 0x1C281201, // 003F EQ R10 R9 R1
+ 0x782A0001, // 0040 JMPF R10 #0043
+ 0xA8040001, // 0041 EXBLK 1 1
+ 0x80040A00, // 0042 RET 1 R5
+ 0x7001FFCE, // 0043 JMP #0013
+ 0x58100012, // 0044 LDCONST R4 K18
+ 0xAC100200, // 0045 CATCH R4 1 0
+ 0xB0080000, // 0046 RAISE 2 R0 R0
+ 0x4C100000, // 0047 LDNIL R4
+ 0x80040800, // 0048 RET 1 R4
})
)
);
@@ -286,7 +289,7 @@ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name
/* K27 */ be_nested_str_weak(device),
/* K28 */ be_nested_str_weak(sessions),
/* K29 */ be_nested_str_weak(gen_local_session_id),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20New_Session_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
+ /* K30 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
/* K31 */ be_nested_str_weak(remote_ip),
/* K32 */ be_nested_str_weak(remote_port),
/* K33 */ be_nested_str_weak(PBKDFParamResponse),
@@ -557,7 +560,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
}),
be_str_weak(parse_Pake1),
&be_const_str_solidified,
- ( &(const binstruction[114]) { /* code */
+ ( &(const binstruction[115]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x880C0301, // 0001 GETMBR R3 R1 K1
0x88100302, // 0002 GETMBR R4 R1 K2
@@ -665,13 +668,14 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
0x884C0730, // 0068 GETMBR R19 R3 K48
0x88500731, // 0069 GETMBR R20 R3 K49
0x7C400800, // 006A CALL R16 4
- 0x7C380400, // 006B CALL R14 2
- 0x88380132, // 006C GETMBR R14 R0 K50
- 0x8C381D33, // 006D GETMET R14 R14 K51
- 0x5C401800, // 006E MOVE R16 R12
- 0x7C380400, // 006F CALL R14 2
- 0x50380200, // 0070 LDBOOL R14 1 0
- 0x80041C00, // 0071 RET 1 R14
+ 0x5844000D, // 006B LDCONST R17 K13
+ 0x7C380600, // 006C CALL R14 3
+ 0x88380132, // 006D GETMBR R14 R0 K50
+ 0x8C381D33, // 006E GETMET R14 R14 K51
+ 0x5C401800, // 006F MOVE R16 R12
+ 0x7C380400, // 0070 CALL R14 2
+ 0x50380200, // 0071 LDBOOL R14 1 0
+ 0x80041C00, // 0072 RET 1 R14
})
)
);
@@ -723,7 +727,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[32]) { /* constants */
+ ( &(const bvalue[31]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(session),
/* K2 */ be_nested_str_weak(opcode),
@@ -746,20 +750,19 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
/* K19 */ be_nested_str_weak(cA),
/* K20 */ be_nested_str_weak(__spake_cA),
/* K21 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received),
- /* K22 */ be_nested_str_weak(rtc),
- /* K23 */ be_nested_str_weak(utc),
- /* K24 */ be_nested_str_weak(HKDF_SHA256),
- /* K25 */ be_nested_str_weak(derive),
- /* K26 */ be_nested_str_weak(__spake_Ke),
- /* K27 */ be_nested_str_weak(fromstring),
- /* K28 */ be_nested_str_weak(SEKeys_Info),
- /* K29 */ be_nested_str_weak(add_session),
- /* K30 */ be_nested_str_weak(__future_local_session_id),
- /* K31 */ be_nested_str_weak(__future_initiator_session_id),
+ /* K22 */ be_nested_str_weak(rtc_utc),
+ /* K23 */ be_nested_str_weak(HKDF_SHA256),
+ /* K24 */ be_nested_str_weak(derive),
+ /* K25 */ be_nested_str_weak(__spake_Ke),
+ /* K26 */ be_nested_str_weak(fromstring),
+ /* K27 */ be_nested_str_weak(SEKeys_Info),
+ /* K28 */ be_nested_str_weak(add_session),
+ /* K29 */ be_nested_str_weak(__future_local_session_id),
+ /* K30 */ be_nested_str_weak(__future_initiator_session_id),
}),
be_str_weak(parse_Pake3),
&be_const_str_solidified,
- ( &(const binstruction[106]) { /* code */
+ ( &(const binstruction[105]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x880C0301, // 0001 GETMBR R3 R1 K1
0x88100302, // 0002 GETMBR R4 R1 K2
@@ -824,48 +827,47 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
0xB81A0C00, // 003D GETNGBL R6 K6
0x8C180D16, // 003E GETMET R6 R6 K22
0x7C180200, // 003F CALL R6 1
- 0x94180D17, // 0040 GETIDX R6 R6 K23
- 0x8C1C0518, // 0041 GETMET R7 R2 K24
- 0x7C1C0200, // 0042 CALL R7 1
- 0x8C1C0F19, // 0043 GETMET R7 R7 K25
- 0x8824071A, // 0044 GETMBR R9 R3 K26
- 0x60280015, // 0045 GETGBL R10 G21
- 0x7C280000, // 0046 CALL R10 0
- 0x602C0015, // 0047 GETGBL R11 G21
- 0x7C2C0000, // 0048 CALL R11 0
- 0x8C2C171B, // 0049 GETMET R11 R11 K27
- 0x8834011C, // 004A GETMBR R13 R0 K28
- 0x7C2C0400, // 004B CALL R11 2
- 0x5432002F, // 004C LDINT R12 48
- 0x7C1C0A00, // 004D CALL R7 5
- 0x5422000E, // 004E LDINT R8 15
- 0x40220808, // 004F CONNECT R8 K4 R8
- 0x94200E08, // 0050 GETIDX R8 R7 R8
- 0x5426000F, // 0051 LDINT R9 16
- 0x542A001E, // 0052 LDINT R10 31
- 0x4024120A, // 0053 CONNECT R9 R9 R10
- 0x94240E09, // 0054 GETIDX R9 R7 R9
- 0x542A001F, // 0055 LDINT R10 32
- 0x542E002E, // 0056 LDINT R11 47
- 0x4028140B, // 0057 CONNECT R10 R10 R11
- 0x94280E0A, // 0058 GETIDX R10 R7 R10
- 0x8C2C010B, // 0059 GETMET R11 R0 K11
- 0x5C340200, // 005A MOVE R13 R1
- 0x58380004, // 005B LDCONST R14 K4
- 0x583C0004, // 005C LDCONST R15 K4
- 0x58400004, // 005D LDCONST R16 K4
- 0x50440000, // 005E LDBOOL R17 0 0
- 0x7C2C0C00, // 005F CALL R11 6
- 0x8C2C011D, // 0060 GETMET R11 R0 K29
- 0x8834071E, // 0061 GETMBR R13 R3 K30
- 0x8838071F, // 0062 GETMBR R14 R3 K31
- 0x5C3C1000, // 0063 MOVE R15 R8
- 0x5C401200, // 0064 MOVE R16 R9
- 0x5C441400, // 0065 MOVE R17 R10
- 0x5C480C00, // 0066 MOVE R18 R6
- 0x7C2C0E00, // 0067 CALL R11 7
- 0x502C0200, // 0068 LDBOOL R11 1 0
- 0x80041600, // 0069 RET 1 R11
+ 0x8C1C0517, // 0040 GETMET R7 R2 K23
+ 0x7C1C0200, // 0041 CALL R7 1
+ 0x8C1C0F18, // 0042 GETMET R7 R7 K24
+ 0x88240719, // 0043 GETMBR R9 R3 K25
+ 0x60280015, // 0044 GETGBL R10 G21
+ 0x7C280000, // 0045 CALL R10 0
+ 0x602C0015, // 0046 GETGBL R11 G21
+ 0x7C2C0000, // 0047 CALL R11 0
+ 0x8C2C171A, // 0048 GETMET R11 R11 K26
+ 0x8834011B, // 0049 GETMBR R13 R0 K27
+ 0x7C2C0400, // 004A CALL R11 2
+ 0x5432002F, // 004B LDINT R12 48
+ 0x7C1C0A00, // 004C CALL R7 5
+ 0x5422000E, // 004D LDINT R8 15
+ 0x40220808, // 004E CONNECT R8 K4 R8
+ 0x94200E08, // 004F GETIDX R8 R7 R8
+ 0x5426000F, // 0050 LDINT R9 16
+ 0x542A001E, // 0051 LDINT R10 31
+ 0x4024120A, // 0052 CONNECT R9 R9 R10
+ 0x94240E09, // 0053 GETIDX R9 R7 R9
+ 0x542A001F, // 0054 LDINT R10 32
+ 0x542E002E, // 0055 LDINT R11 47
+ 0x4028140B, // 0056 CONNECT R10 R10 R11
+ 0x94280E0A, // 0057 GETIDX R10 R7 R10
+ 0x8C2C010B, // 0058 GETMET R11 R0 K11
+ 0x5C340200, // 0059 MOVE R13 R1
+ 0x58380004, // 005A LDCONST R14 K4
+ 0x583C0004, // 005B LDCONST R15 K4
+ 0x58400004, // 005C LDCONST R16 K4
+ 0x50440000, // 005D LDBOOL R17 0 0
+ 0x7C2C0C00, // 005E CALL R11 6
+ 0x8C2C011C, // 005F GETMET R11 R0 K28
+ 0x8834071D, // 0060 GETMBR R13 R3 K29
+ 0x8838071E, // 0061 GETMBR R14 R3 K30
+ 0x5C3C1000, // 0062 MOVE R15 R8
+ 0x5C401200, // 0063 MOVE R16 R9
+ 0x5C441400, // 0064 MOVE R17 R10
+ 0x5C480C00, // 0065 MOVE R18 R6
+ 0x7C2C0E00, // 0066 CALL R11 7
+ 0x502C0200, // 0067 LDBOOL R11 1 0
+ 0x80041600, // 0068 RET 1 R11
})
)
);
@@ -885,7 +887,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[67]) { /* constants */
+ ( &(const bvalue[66]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(opcode),
/* K2 */ be_nested_str_weak(local_session_id),
@@ -943,20 +945,19 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
/* K54 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys),
/* K55 */ be_nested_str_weak(Msg3),
/* K56 */ be_nested_str_weak(SEKeys_Info),
- /* K57 */ be_nested_str_weak(rtc),
- /* K58 */ be_nested_str_weak(utc),
- /* K59 */ be_nested_str_weak(close),
- /* K60 */ be_nested_str_weak(set_keys),
- /* K61 */ be_nested_str_weak(_breadcrumb),
- /* K62 */ be_nested_str_weak(counter_snd_next),
- /* K63 */ be_nested_str_weak(set_persist),
- /* K64 */ be_nested_str_weak(set_no_expiration),
- /* K65 */ be_nested_str_weak(persist_to_fabric),
- /* K66 */ be_nested_str_weak(save),
+ /* K57 */ be_nested_str_weak(rtc_utc),
+ /* K58 */ be_nested_str_weak(close),
+ /* K59 */ be_nested_str_weak(set_keys),
+ /* K60 */ be_nested_str_weak(_breadcrumb),
+ /* K61 */ be_nested_str_weak(counter_snd_next),
+ /* K62 */ be_nested_str_weak(set_persist),
+ /* K63 */ be_nested_str_weak(set_no_expiration),
+ /* K64 */ be_nested_str_weak(persist_to_fabric),
+ /* K65 */ be_nested_str_weak(save),
}),
be_str_weak(parse_Sigma3),
&be_const_str_solidified,
- ( &(const binstruction[287]) { /* code */
+ ( &(const binstruction[286]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x880C0301, // 0001 GETMBR R3 R1 K1
0x54120031, // 0002 LDINT R4 50
@@ -1214,36 +1215,35 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
0xB8720A00, // 00FE GETNGBL R28 K5
0x8C703939, // 00FF GETMET R28 R28 K57
0x7C700200, // 0100 CALL R28 1
- 0x9470393A, // 0101 GETIDX R28 R28 K58
- 0x8C740109, // 0102 GETMET R29 R0 K9
- 0x5C7C0200, // 0103 MOVE R31 R1
- 0x58800003, // 0104 LDCONST R32 K3
- 0x58840003, // 0105 LDCONST R33 K3
- 0x58880003, // 0106 LDCONST R34 K3
- 0x508C0200, // 0107 LDBOOL R35 1 0
- 0x7C740C00, // 0108 CALL R29 6
- 0x8C74073B, // 0109 GETMET R29 R3 K59
- 0x7C740200, // 010A CALL R29 1
- 0x8C74073C, // 010B GETMET R29 R3 K60
- 0x5C7C3200, // 010C MOVE R31 R25
- 0x5C803400, // 010D MOVE R32 R26
- 0x5C843600, // 010E MOVE R33 R27
- 0x5C883800, // 010F MOVE R34 R28
- 0x7C740A00, // 0110 CALL R29 5
- 0x900E7B03, // 0111 SETMBR R3 K61 K3
- 0x8C74073E, // 0112 GETMET R29 R3 K62
- 0x7C740200, // 0113 CALL R29 1
- 0x8C74073F, // 0114 GETMET R29 R3 K63
- 0x507C0200, // 0115 LDBOOL R31 1 0
- 0x7C740400, // 0116 CALL R29 2
- 0x8C740740, // 0117 GETMET R29 R3 K64
- 0x7C740200, // 0118 CALL R29 1
- 0x8C740741, // 0119 GETMET R29 R3 K65
- 0x7C740200, // 011A CALL R29 1
- 0x8C740742, // 011B GETMET R29 R3 K66
- 0x7C740200, // 011C CALL R29 1
- 0x50740200, // 011D LDBOOL R29 1 0
- 0x80043A00, // 011E RET 1 R29
+ 0x8C740109, // 0101 GETMET R29 R0 K9
+ 0x5C7C0200, // 0102 MOVE R31 R1
+ 0x58800003, // 0103 LDCONST R32 K3
+ 0x58840003, // 0104 LDCONST R33 K3
+ 0x58880003, // 0105 LDCONST R34 K3
+ 0x508C0200, // 0106 LDBOOL R35 1 0
+ 0x7C740C00, // 0107 CALL R29 6
+ 0x8C74073A, // 0108 GETMET R29 R3 K58
+ 0x7C740200, // 0109 CALL R29 1
+ 0x8C74073B, // 010A GETMET R29 R3 K59
+ 0x5C7C3200, // 010B MOVE R31 R25
+ 0x5C803400, // 010C MOVE R32 R26
+ 0x5C843600, // 010D MOVE R33 R27
+ 0x5C883800, // 010E MOVE R34 R28
+ 0x7C740A00, // 010F CALL R29 5
+ 0x900E7903, // 0110 SETMBR R3 K60 K3
+ 0x8C74073D, // 0111 GETMET R29 R3 K61
+ 0x7C740200, // 0112 CALL R29 1
+ 0x8C74073E, // 0113 GETMET R29 R3 K62
+ 0x507C0200, // 0114 LDBOOL R31 1 0
+ 0x7C740400, // 0115 CALL R29 2
+ 0x8C74073F, // 0116 GETMET R29 R3 K63
+ 0x7C740200, // 0117 CALL R29 1
+ 0x8C740740, // 0118 GETMET R29 R3 K64
+ 0x7C740200, // 0119 CALL R29 1
+ 0x8C740741, // 011A GETMET R29 R3 K65
+ 0x7C740200, // 011B CALL R29 1
+ 0x50740200, // 011C LDBOOL R29 1 0
+ 0x80043A00, // 011D RET 1 R29
})
)
);
@@ -1391,7 +1391,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[104]) { /* constants */
+ ( &(const bvalue[103]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(session),
/* K2 */ be_nested_str_weak(opcode),
@@ -1436,7 +1436,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
/* K41 */ be_nested_str_weak(initiator_session_id),
/* K42 */ be_nested_str_weak(__future_local_session_id),
/* K43 */ be_nested_str_weak(gen_local_session_id),
- /* K44 */ be_nested_str_weak(MTR_X3A_X20New_Session_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
+ /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
/* K45 */ be_nested_str_weak(remote_ip),
/* K46 */ be_nested_str_weak(remote_port),
/* K47 */ be_nested_str_weak(resumption_id),
@@ -1447,55 +1447,54 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
/* K52 */ be_nested_str_weak(responderSessionID),
/* K53 */ be_nested_str_weak(sigma2ResumeMIC),
/* K54 */ be_nested_str_weak(SessionResumptionKeys),
- /* K55 */ be_nested_str_weak(rtc),
- /* K56 */ be_nested_str_weak(utc),
- /* K57 */ be_nested_str_weak(tlv2raw),
- /* K58 */ be_nested_str_weak(__Msg1),
- /* K59 */ be_nested_str_weak(build_response),
- /* K60 */ be_nested_str_weak(encode_frame),
- /* K61 */ be_nested_str_weak(responder),
- /* K62 */ be_nested_str_weak(send_response_frame),
- /* K63 */ be_nested_str_weak(close),
- /* K64 */ be_nested_str_weak(set_keys),
- /* K65 */ be_nested_str_weak(_breadcrumb),
- /* K66 */ be_nested_str_weak(counter_snd_next),
- /* K67 */ be_nested_str_weak(set_persist),
- /* K68 */ be_nested_str_weak(set_no_expiration),
- /* K69 */ be_nested_str_weak(persist_to_fabric),
- /* K70 */ be_nested_str_weak(save),
- /* K71 */ be_nested_str_weak(find_fabric_by_destination_id),
- /* K72 */ be_nested_str_weak(destinationId),
- /* K73 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
- /* K74 */ be_nested_str_weak(__responder_priv),
- /* K75 */ be_nested_str_weak(__responder_pub),
- /* K76 */ be_nested_str_weak(EC_P256),
- /* K77 */ be_nested_str_weak(public_key),
- /* K78 */ be_nested_str_weak(shared_key),
- /* K79 */ be_nested_str_weak(TLV),
- /* K80 */ be_nested_str_weak(Matter_TLV_struct),
- /* K81 */ be_nested_str_weak(add_TLV),
- /* K82 */ be_nested_str_weak(B2),
- /* K83 */ be_nested_str_weak(get_noc),
- /* K84 */ be_nested_str_weak(get_icac),
- /* K85 */ be_nested_str_weak(ecdsa_sign_sha256),
- /* K86 */ be_nested_str_weak(get_pk),
- /* K87 */ be_nested_str_weak(Msg1),
- /* K88 */ be_nested_str_weak(SHA256),
- /* K89 */ be_nested_str_weak(update),
- /* K90 */ be_nested_str_weak(out),
- /* K91 */ be_nested_str_weak(S2K_Info),
- /* K92 */ be_nested_str_weak(get_ipk_group_key),
- /* K93 */ be_nested_str_weak(TBEData2_Nonce),
- /* K94 */ be_nested_str_weak(encrypt),
- /* K95 */ be_nested_str_weak(Sigma2),
- /* K96 */ be_nested_str_weak(responderRandom),
- /* K97 */ be_nested_str_weak(responderSessionId),
- /* K98 */ be_nested_str_weak(responderEphPubKey),
- /* K99 */ be_nested_str_weak(encrypted2),
- /* K100 */ be_nested_str_weak(__Msg2),
- /* K101 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
- /* K102 */ be_nested_str_weak(_ip),
- /* K103 */ be_nested_str_weak(_port),
+ /* K55 */ be_nested_str_weak(rtc_utc),
+ /* K56 */ be_nested_str_weak(tlv2raw),
+ /* K57 */ be_nested_str_weak(__Msg1),
+ /* K58 */ be_nested_str_weak(build_response),
+ /* K59 */ be_nested_str_weak(encode_frame),
+ /* K60 */ be_nested_str_weak(responder),
+ /* K61 */ be_nested_str_weak(send_response_frame),
+ /* K62 */ be_nested_str_weak(close),
+ /* K63 */ be_nested_str_weak(set_keys),
+ /* K64 */ be_nested_str_weak(_breadcrumb),
+ /* K65 */ be_nested_str_weak(counter_snd_next),
+ /* K66 */ be_nested_str_weak(set_persist),
+ /* K67 */ be_nested_str_weak(set_no_expiration),
+ /* K68 */ be_nested_str_weak(persist_to_fabric),
+ /* K69 */ be_nested_str_weak(save),
+ /* K70 */ be_nested_str_weak(find_fabric_by_destination_id),
+ /* K71 */ be_nested_str_weak(destinationId),
+ /* K72 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
+ /* K73 */ be_nested_str_weak(__responder_priv),
+ /* K74 */ be_nested_str_weak(__responder_pub),
+ /* K75 */ be_nested_str_weak(EC_P256),
+ /* K76 */ be_nested_str_weak(public_key),
+ /* K77 */ be_nested_str_weak(shared_key),
+ /* K78 */ be_nested_str_weak(TLV),
+ /* K79 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K80 */ be_nested_str_weak(add_TLV),
+ /* K81 */ be_nested_str_weak(B2),
+ /* K82 */ be_nested_str_weak(get_noc),
+ /* K83 */ be_nested_str_weak(get_icac),
+ /* K84 */ be_nested_str_weak(ecdsa_sign_sha256),
+ /* K85 */ be_nested_str_weak(get_pk),
+ /* K86 */ be_nested_str_weak(Msg1),
+ /* K87 */ be_nested_str_weak(SHA256),
+ /* K88 */ be_nested_str_weak(update),
+ /* K89 */ be_nested_str_weak(out),
+ /* K90 */ be_nested_str_weak(S2K_Info),
+ /* K91 */ be_nested_str_weak(get_ipk_group_key),
+ /* K92 */ be_nested_str_weak(TBEData2_Nonce),
+ /* K93 */ be_nested_str_weak(encrypt),
+ /* K94 */ be_nested_str_weak(Sigma2),
+ /* K95 */ be_nested_str_weak(responderRandom),
+ /* K96 */ be_nested_str_weak(responderSessionId),
+ /* K97 */ be_nested_str_weak(responderEphPubKey),
+ /* K98 */ be_nested_str_weak(encrypted2),
+ /* K99 */ be_nested_str_weak(__Msg2),
+ /* K100 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K101 */ be_nested_str_weak(_ip),
+ /* K102 */ be_nested_str_weak(_port),
}),
be_str_weak(parse_Sigma1),
&be_const_str_solidified,
@@ -1562,7 +1561,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
0x1C1C0E08, // 003B EQ R7 R7 R8
0x781E0000, // 003C JMPF R7 #003E
0x50140000, // 003D LDBOOL R5 0 0
- 0x781600B6, // 003E JMPF R5 #00F6
+ 0x781600B5, // 003E JMPF R5 #00F5
0x881C091A, // 003F GETMBR R7 R4 K26
0x88200914, // 0040 GETMBR R8 R4 K20
0x001C0E08, // 0041 ADD R7 R7 R8
@@ -1610,7 +1609,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
0x8C3C1B24, // 006B GETMET R15 R13 K36
0x7C3C0200, // 006C CALL R15 1
0x1C40180F, // 006D EQ R16 R12 R15
- 0x78420085, // 006E JMPF R16 #00F5
+ 0x78420084, // 006E JMPF R16 #00F4
0x88400D19, // 006F GETMBR R16 R6 K25
0x900E3210, // 0070 SETMBR R3 K25 R16
0x88400326, // 0071 GETMBR R16 R1 K38
@@ -1706,275 +1705,275 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
0xB86A0C00, // 00CB GETNGBL R26 K6
0x8C683537, // 00CC GETMET R26 R26 K55
0x7C680200, // 00CD CALL R26 1
- 0x94683538, // 00CE GETIDX R26 R26 K56
- 0x8C6C2B39, // 00CF GETMET R27 R21 K57
- 0x7C6C0200, // 00D0 CALL R27 1
- 0x4C700000, // 00D1 LDNIL R28
- 0x900E741C, // 00D2 SETMBR R3 K58 R28
- 0x8C70033B, // 00D3 GETMET R28 R1 K59
- 0x547A0032, // 00D4 LDINT R30 51
- 0x507C0200, // 00D5 LDBOOL R31 1 0
- 0x7C700600, // 00D6 CALL R28 3
- 0x8C74393C, // 00D7 GETMET R29 R28 K60
- 0x5C7C3600, // 00D8 MOVE R31 R27
- 0x7C740400, // 00D9 CALL R29 2
- 0x8878013D, // 00DA GETMBR R30 R0 K61
- 0x8C783D3E, // 00DB GETMET R30 R30 K62
- 0x5C803800, // 00DC MOVE R32 R28
- 0x7C780400, // 00DD CALL R30 2
- 0x8C78073F, // 00DE GETMET R30 R3 K63
- 0x7C780200, // 00DF CALL R30 1
- 0x8C780740, // 00E0 GETMET R30 R3 K64
- 0x5C802E00, // 00E1 MOVE R32 R23
- 0x5C843000, // 00E2 MOVE R33 R24
- 0x5C883200, // 00E3 MOVE R34 R25
- 0x5C8C3400, // 00E4 MOVE R35 R26
- 0x7C780A00, // 00E5 CALL R30 5
- 0x900E8304, // 00E6 SETMBR R3 K65 K4
- 0x8C780742, // 00E7 GETMET R30 R3 K66
- 0x7C780200, // 00E8 CALL R30 1
- 0x8C780743, // 00E9 GETMET R30 R3 K67
- 0x50800200, // 00EA LDBOOL R32 1 0
- 0x7C780400, // 00EB CALL R30 2
- 0x8C780744, // 00EC GETMET R30 R3 K68
- 0x7C780200, // 00ED CALL R30 1
- 0x8C780745, // 00EE GETMET R30 R3 K69
- 0x7C780200, // 00EF CALL R30 1
- 0x8C780746, // 00F0 GETMET R30 R3 K70
- 0x7C780200, // 00F1 CALL R30 1
- 0x50780200, // 00F2 LDBOOL R30 1 0
- 0x80043C00, // 00F3 RET 1 R30
- 0x70020000, // 00F4 JMP #00F6
- 0x50140000, // 00F5 LDBOOL R5 0 0
- 0x5C1C0A00, // 00F6 MOVE R7 R5
- 0x741E00E6, // 00F7 JMPT R7 #01DF
- 0x8C1C0147, // 00F8 GETMET R7 R0 K71
- 0x88240948, // 00F9 GETMBR R9 R4 K72
- 0x8828091A, // 00FA GETMBR R10 R4 K26
- 0x7C1C0600, // 00FB CALL R7 3
- 0x900E3207, // 00FC SETMBR R3 K25 R7
- 0x4C200000, // 00FD LDNIL R8
- 0x1C200608, // 00FE EQ R8 R3 R8
- 0x74220003, // 00FF JMPT R8 #0104
- 0x88200719, // 0100 GETMBR R8 R3 K25
- 0x4C240000, // 0101 LDNIL R9
- 0x1C201009, // 0102 EQ R8 R8 R9
- 0x7822000D, // 0103 JMPF R8 #0112
- 0xB8220C00, // 0104 GETNGBL R8 K6
- 0x8C201107, // 0105 GETMET R8 R8 K7
- 0x58280049, // 0106 LDCONST R10 K73
- 0x582C0009, // 0107 LDCONST R11 K9
- 0x7C200600, // 0108 CALL R8 3
- 0x8C20010A, // 0109 GETMET R8 R0 K10
- 0x5C280200, // 010A MOVE R10 R1
- 0x582C000B, // 010B LDCONST R11 K11
- 0x58300004, // 010C LDCONST R12 K4
- 0x5834000B, // 010D LDCONST R13 K11
- 0x50380000, // 010E LDBOOL R14 0 0
- 0x7C200C00, // 010F CALL R8 6
- 0x50200000, // 0110 LDBOOL R8 0 0
- 0x80041000, // 0111 RET 1 R8
- 0x88200326, // 0112 GETMBR R8 R1 K38
- 0x900E4A08, // 0113 SETMBR R3 K37 R8
- 0x8C200727, // 0114 GETMET R8 R3 K39
- 0x7C200200, // 0115 CALL R8 1
- 0x88200929, // 0116 GETMBR R8 R4 K41
- 0x900E5008, // 0117 SETMBR R3 K40 R8
- 0x88200116, // 0118 GETMBR R8 R0 K22
- 0x88201117, // 0119 GETMBR R8 R8 K23
- 0x8C20112B, // 011A GETMET R8 R8 K43
- 0x7C200200, // 011B CALL R8 1
- 0x900E5408, // 011C SETMBR R3 K42 R8
- 0xB8220C00, // 011D GETNGBL R8 K6
- 0x8C201107, // 011E GETMET R8 R8 K7
- 0x60280018, // 011F GETGBL R10 G24
- 0x582C002C, // 0120 LDCONST R11 K44
- 0x8830072A, // 0121 GETMBR R12 R3 K42
- 0x8834032D, // 0122 GETMBR R13 R1 K45
- 0x8838032E, // 0123 GETMBR R14 R1 K46
- 0x7C280800, // 0124 CALL R10 4
- 0x582C0009, // 0125 LDCONST R11 K9
- 0x7C200600, // 0126 CALL R8 3
- 0x8C200530, // 0127 GETMET R8 R2 K48
- 0x542A000F, // 0128 LDINT R10 16
- 0x7C200400, // 0129 CALL R8 2
- 0x900E5E08, // 012A SETMBR R3 K47 R8
- 0x8C200530, // 012B GETMET R8 R2 K48
- 0x542A001F, // 012C LDINT R10 32
- 0x7C200400, // 012D CALL R8 2
- 0x900E9408, // 012E SETMBR R3 K74 R8
- 0x8C20054C, // 012F GETMET R8 R2 K76
- 0x7C200200, // 0130 CALL R8 1
- 0x8C20114D, // 0131 GETMET R8 R8 K77
- 0x8828074A, // 0132 GETMBR R10 R3 K74
- 0x7C200400, // 0133 CALL R8 2
- 0x900E9608, // 0134 SETMBR R3 K75 R8
- 0x8C200530, // 0135 GETMET R8 R2 K48
- 0x542A001F, // 0136 LDINT R10 32
- 0x7C200400, // 0137 CALL R8 2
- 0x8C24054C, // 0138 GETMET R9 R2 K76
- 0x7C240200, // 0139 CALL R9 1
- 0x8C24134E, // 013A GETMET R9 R9 K78
- 0x882C074A, // 013B GETMBR R11 R3 K74
- 0x88300913, // 013C GETMBR R12 R4 K19
- 0x7C240600, // 013D CALL R9 3
- 0x900E3E09, // 013E SETMBR R3 K31 R9
- 0xB8261A00, // 013F GETNGBL R9 K13
- 0x8824134F, // 0140 GETMBR R9 R9 K79
- 0x8C241350, // 0141 GETMET R9 R9 K80
- 0x7C240200, // 0142 CALL R9 1
- 0x8C281351, // 0143 GETMET R10 R9 K81
- 0x5830000B, // 0144 LDCONST R12 K11
- 0xB8361A00, // 0145 GETNGBL R13 K13
- 0x88341B4F, // 0146 GETMBR R13 R13 K79
- 0x88341B52, // 0147 GETMBR R13 R13 K82
- 0x8C380F53, // 0148 GETMET R14 R7 K83
- 0x7C380200, // 0149 CALL R14 1
- 0x7C280800, // 014A CALL R10 4
- 0x8C281351, // 014B GETMET R10 R9 K81
- 0x5830000C, // 014C LDCONST R12 K12
- 0xB8361A00, // 014D GETNGBL R13 K13
- 0x88341B4F, // 014E GETMBR R13 R13 K79
- 0x88341B52, // 014F GETMBR R13 R13 K82
- 0x8C380F54, // 0150 GETMET R14 R7 K84
- 0x7C380200, // 0151 CALL R14 1
- 0x7C280800, // 0152 CALL R10 4
- 0x8C281351, // 0153 GETMET R10 R9 K81
- 0x58300009, // 0154 LDCONST R12 K9
- 0xB8361A00, // 0155 GETNGBL R13 K13
- 0x88341B4F, // 0156 GETMBR R13 R13 K79
- 0x88341B52, // 0157 GETMBR R13 R13 K82
- 0x8838074B, // 0158 GETMBR R14 R3 K75
- 0x7C280800, // 0159 CALL R10 4
- 0x8C281351, // 015A GETMET R10 R9 K81
- 0x54320003, // 015B LDINT R12 4
- 0xB8361A00, // 015C GETNGBL R13 K13
- 0x88341B4F, // 015D GETMBR R13 R13 K79
- 0x88341B52, // 015E GETMBR R13 R13 K82
- 0x88380913, // 015F GETMBR R14 R4 K19
- 0x7C280800, // 0160 CALL R10 4
- 0x8C28054C, // 0161 GETMET R10 R2 K76
- 0x7C280200, // 0162 CALL R10 1
- 0x8C281555, // 0163 GETMET R10 R10 K85
- 0x8C300F56, // 0164 GETMET R12 R7 K86
- 0x7C300200, // 0165 CALL R12 1
- 0x8C341339, // 0166 GETMET R13 R9 K57
- 0x7C340200, // 0167 CALL R13 1
- 0x7C280600, // 0168 CALL R10 3
- 0xB82E1A00, // 0169 GETNGBL R11 K13
- 0x882C174F, // 016A GETMBR R11 R11 K79
- 0x8C2C1750, // 016B GETMET R11 R11 K80
- 0x7C2C0200, // 016C CALL R11 1
- 0x8C301751, // 016D GETMET R12 R11 K81
- 0x5838000B, // 016E LDCONST R14 K11
- 0xB83E1A00, // 016F GETNGBL R15 K13
- 0x883C1F4F, // 0170 GETMBR R15 R15 K79
- 0x883C1F52, // 0171 GETMBR R15 R15 K82
- 0x8C400F53, // 0172 GETMET R16 R7 K83
- 0x7C400200, // 0173 CALL R16 1
- 0x7C300800, // 0174 CALL R12 4
- 0x8C301751, // 0175 GETMET R12 R11 K81
- 0x5838000C, // 0176 LDCONST R14 K12
- 0xB83E1A00, // 0177 GETNGBL R15 K13
- 0x883C1F4F, // 0178 GETMBR R15 R15 K79
- 0x883C1F52, // 0179 GETMBR R15 R15 K82
- 0x8C400F54, // 017A GETMET R16 R7 K84
- 0x7C400200, // 017B CALL R16 1
- 0x7C300800, // 017C CALL R12 4
- 0x8C301751, // 017D GETMET R12 R11 K81
- 0x58380009, // 017E LDCONST R14 K9
- 0xB83E1A00, // 017F GETNGBL R15 K13
- 0x883C1F4F, // 0180 GETMBR R15 R15 K79
- 0x883C1F52, // 0181 GETMBR R15 R15 K82
- 0x5C401400, // 0182 MOVE R16 R10
- 0x7C300800, // 0183 CALL R12 4
- 0x8C301751, // 0184 GETMET R12 R11 K81
- 0x543A0003, // 0185 LDINT R14 4
- 0xB83E1A00, // 0186 GETNGBL R15 K13
- 0x883C1F4F, // 0187 GETMBR R15 R15 K79
- 0x883C1F52, // 0188 GETMBR R15 R15 K82
- 0x8840072F, // 0189 GETMBR R16 R3 K47
- 0x7C300800, // 018A CALL R12 4
- 0x88300957, // 018B GETMBR R12 R4 K87
- 0x900E740C, // 018C SETMBR R3 K58 R12
- 0x8C300558, // 018D GETMET R12 R2 K88
- 0x7C300200, // 018E CALL R12 1
- 0x8C301959, // 018F GETMET R12 R12 K89
- 0x8838073A, // 0190 GETMBR R14 R3 K58
- 0x7C300400, // 0191 CALL R12 2
- 0x8C30195A, // 0192 GETMET R12 R12 K90
- 0x7C300200, // 0193 CALL R12 1
- 0x60340015, // 0194 GETGBL R13 G21
- 0x7C340000, // 0195 CALL R13 0
- 0x8C341B1B, // 0196 GETMET R13 R13 K27
- 0x883C015B, // 0197 GETMBR R15 R0 K91
- 0x7C340400, // 0198 CALL R13 2
- 0x8C380F5C, // 0199 GETMET R14 R7 K92
- 0x7C380200, // 019A CALL R14 1
- 0x00381C08, // 019B ADD R14 R14 R8
- 0x883C074B, // 019C GETMBR R15 R3 K75
- 0x00381C0F, // 019D ADD R14 R14 R15
- 0x00381C0C, // 019E ADD R14 R14 R12
- 0x8C3C051D, // 019F GETMET R15 R2 K29
- 0x7C3C0200, // 01A0 CALL R15 1
- 0x8C3C1F1E, // 01A1 GETMET R15 R15 K30
- 0x8844071F, // 01A2 GETMBR R17 R3 K31
- 0x5C481C00, // 01A3 MOVE R18 R14
- 0x5C4C1A00, // 01A4 MOVE R19 R13
- 0x5452000F, // 01A5 LDINT R20 16
- 0x7C3C0A00, // 01A6 CALL R15 5
- 0x8C401739, // 01A7 GETMET R16 R11 K57
- 0x7C400200, // 01A8 CALL R16 1
- 0x8C440522, // 01A9 GETMET R17 R2 K34
- 0x5C4C1E00, // 01AA MOVE R19 R15
- 0x60500015, // 01AB GETGBL R20 G21
- 0x7C500000, // 01AC CALL R20 0
- 0x8C50291B, // 01AD GETMET R20 R20 K27
- 0x8858015D, // 01AE GETMBR R22 R0 K93
- 0x7C500400, // 01AF CALL R20 2
- 0x60540015, // 01B0 GETGBL R21 G21
- 0x7C540000, // 01B1 CALL R21 0
- 0x6058000C, // 01B2 GETGBL R22 G12
- 0x5C5C2000, // 01B3 MOVE R23 R16
- 0x7C580200, // 01B4 CALL R22 1
- 0x545E000F, // 01B5 LDINT R23 16
- 0x7C440C00, // 01B6 CALL R17 6
- 0x8C48235E, // 01B7 GETMET R18 R17 K94
- 0x5C502000, // 01B8 MOVE R20 R16
- 0x7C480400, // 01B9 CALL R18 2
- 0x8C4C2324, // 01BA GETMET R19 R17 K36
- 0x7C4C0200, // 01BB CALL R19 1
- 0x00482413, // 01BC ADD R18 R18 R19
- 0xB84E1A00, // 01BD GETNGBL R19 K13
- 0x8C4C275F, // 01BE GETMET R19 R19 K95
- 0x7C4C0200, // 01BF CALL R19 1
- 0x904EC008, // 01C0 SETMBR R19 K96 R8
- 0x8850072A, // 01C1 GETMBR R20 R3 K42
- 0x904EC214, // 01C2 SETMBR R19 K97 R20
- 0x8850074B, // 01C3 GETMBR R20 R3 K75
- 0x904EC414, // 01C4 SETMBR R19 K98 R20
- 0x904EC612, // 01C5 SETMBR R19 K99 R18
- 0x8C502739, // 01C6 GETMET R20 R19 K57
- 0x7C500200, // 01C7 CALL R20 1
- 0x900EC814, // 01C8 SETMBR R3 K100 R20
- 0x8C54033B, // 01C9 GETMET R21 R1 K59
- 0x545E0030, // 01CA LDINT R23 49
- 0x50600200, // 01CB LDBOOL R24 1 0
- 0x7C540600, // 01CC CALL R21 3
- 0x8C582B3C, // 01CD GETMET R22 R21 K60
- 0x5C602800, // 01CE MOVE R24 R20
- 0x7C580400, // 01CF CALL R22 2
- 0xB85E0C00, // 01D0 GETNGBL R23 K6
- 0x8C5C2F07, // 01D1 GETMET R23 R23 K7
- 0x60640018, // 01D2 GETGBL R25 G24
- 0x58680065, // 01D3 LDCONST R26 K101
- 0x886C072A, // 01D4 GETMBR R27 R3 K42
- 0x88700766, // 01D5 GETMBR R28 R3 K102
- 0x88740767, // 01D6 GETMBR R29 R3 K103
- 0x7C640800, // 01D7 CALL R25 4
- 0x7C5C0400, // 01D8 CALL R23 2
- 0x885C013D, // 01D9 GETMBR R23 R0 K61
- 0x8C5C2F3E, // 01DA GETMET R23 R23 K62
+ 0x8C6C2B38, // 00CE GETMET R27 R21 K56
+ 0x7C6C0200, // 00CF CALL R27 1
+ 0x4C700000, // 00D0 LDNIL R28
+ 0x900E721C, // 00D1 SETMBR R3 K57 R28
+ 0x8C70033A, // 00D2 GETMET R28 R1 K58
+ 0x547A0032, // 00D3 LDINT R30 51
+ 0x507C0200, // 00D4 LDBOOL R31 1 0
+ 0x7C700600, // 00D5 CALL R28 3
+ 0x8C74393B, // 00D6 GETMET R29 R28 K59
+ 0x5C7C3600, // 00D7 MOVE R31 R27
+ 0x7C740400, // 00D8 CALL R29 2
+ 0x8878013C, // 00D9 GETMBR R30 R0 K60
+ 0x8C783D3D, // 00DA GETMET R30 R30 K61
+ 0x5C803800, // 00DB MOVE R32 R28
+ 0x7C780400, // 00DC CALL R30 2
+ 0x8C78073E, // 00DD GETMET R30 R3 K62
+ 0x7C780200, // 00DE CALL R30 1
+ 0x8C78073F, // 00DF GETMET R30 R3 K63
+ 0x5C802E00, // 00E0 MOVE R32 R23
+ 0x5C843000, // 00E1 MOVE R33 R24
+ 0x5C883200, // 00E2 MOVE R34 R25
+ 0x5C8C3400, // 00E3 MOVE R35 R26
+ 0x7C780A00, // 00E4 CALL R30 5
+ 0x900E8104, // 00E5 SETMBR R3 K64 K4
+ 0x8C780741, // 00E6 GETMET R30 R3 K65
+ 0x7C780200, // 00E7 CALL R30 1
+ 0x8C780742, // 00E8 GETMET R30 R3 K66
+ 0x50800200, // 00E9 LDBOOL R32 1 0
+ 0x7C780400, // 00EA CALL R30 2
+ 0x8C780743, // 00EB GETMET R30 R3 K67
+ 0x7C780200, // 00EC CALL R30 1
+ 0x8C780744, // 00ED GETMET R30 R3 K68
+ 0x7C780200, // 00EE CALL R30 1
+ 0x8C780745, // 00EF GETMET R30 R3 K69
+ 0x7C780200, // 00F0 CALL R30 1
+ 0x50780200, // 00F1 LDBOOL R30 1 0
+ 0x80043C00, // 00F2 RET 1 R30
+ 0x70020000, // 00F3 JMP #00F5
+ 0x50140000, // 00F4 LDBOOL R5 0 0
+ 0x5C1C0A00, // 00F5 MOVE R7 R5
+ 0x741E00E7, // 00F6 JMPT R7 #01DF
+ 0x8C1C0146, // 00F7 GETMET R7 R0 K70
+ 0x88240947, // 00F8 GETMBR R9 R4 K71
+ 0x8828091A, // 00F9 GETMBR R10 R4 K26
+ 0x7C1C0600, // 00FA CALL R7 3
+ 0x900E3207, // 00FB SETMBR R3 K25 R7
+ 0x4C200000, // 00FC LDNIL R8
+ 0x1C200608, // 00FD EQ R8 R3 R8
+ 0x74220003, // 00FE JMPT R8 #0103
+ 0x88200719, // 00FF GETMBR R8 R3 K25
+ 0x4C240000, // 0100 LDNIL R9
+ 0x1C201009, // 0101 EQ R8 R8 R9
+ 0x7822000D, // 0102 JMPF R8 #0111
+ 0xB8220C00, // 0103 GETNGBL R8 K6
+ 0x8C201107, // 0104 GETMET R8 R8 K7
+ 0x58280048, // 0105 LDCONST R10 K72
+ 0x582C0009, // 0106 LDCONST R11 K9
+ 0x7C200600, // 0107 CALL R8 3
+ 0x8C20010A, // 0108 GETMET R8 R0 K10
+ 0x5C280200, // 0109 MOVE R10 R1
+ 0x582C000B, // 010A LDCONST R11 K11
+ 0x58300004, // 010B LDCONST R12 K4
+ 0x5834000B, // 010C LDCONST R13 K11
+ 0x50380000, // 010D LDBOOL R14 0 0
+ 0x7C200C00, // 010E CALL R8 6
+ 0x50200000, // 010F LDBOOL R8 0 0
+ 0x80041000, // 0110 RET 1 R8
+ 0x88200326, // 0111 GETMBR R8 R1 K38
+ 0x900E4A08, // 0112 SETMBR R3 K37 R8
+ 0x8C200727, // 0113 GETMET R8 R3 K39
+ 0x7C200200, // 0114 CALL R8 1
+ 0x88200929, // 0115 GETMBR R8 R4 K41
+ 0x900E5008, // 0116 SETMBR R3 K40 R8
+ 0x88200116, // 0117 GETMBR R8 R0 K22
+ 0x88201117, // 0118 GETMBR R8 R8 K23
+ 0x8C20112B, // 0119 GETMET R8 R8 K43
+ 0x7C200200, // 011A CALL R8 1
+ 0x900E5408, // 011B SETMBR R3 K42 R8
+ 0xB8220C00, // 011C GETNGBL R8 K6
+ 0x8C201107, // 011D GETMET R8 R8 K7
+ 0x60280018, // 011E GETGBL R10 G24
+ 0x582C002C, // 011F LDCONST R11 K44
+ 0x8830072A, // 0120 GETMBR R12 R3 K42
+ 0x8834032D, // 0121 GETMBR R13 R1 K45
+ 0x8838032E, // 0122 GETMBR R14 R1 K46
+ 0x7C280800, // 0123 CALL R10 4
+ 0x582C0009, // 0124 LDCONST R11 K9
+ 0x7C200600, // 0125 CALL R8 3
+ 0x8C200530, // 0126 GETMET R8 R2 K48
+ 0x542A000F, // 0127 LDINT R10 16
+ 0x7C200400, // 0128 CALL R8 2
+ 0x900E5E08, // 0129 SETMBR R3 K47 R8
+ 0x8C200530, // 012A GETMET R8 R2 K48
+ 0x542A001F, // 012B LDINT R10 32
+ 0x7C200400, // 012C CALL R8 2
+ 0x900E9208, // 012D SETMBR R3 K73 R8
+ 0x8C20054B, // 012E GETMET R8 R2 K75
+ 0x7C200200, // 012F CALL R8 1
+ 0x8C20114C, // 0130 GETMET R8 R8 K76
+ 0x88280749, // 0131 GETMBR R10 R3 K73
+ 0x7C200400, // 0132 CALL R8 2
+ 0x900E9408, // 0133 SETMBR R3 K74 R8
+ 0x8C200530, // 0134 GETMET R8 R2 K48
+ 0x542A001F, // 0135 LDINT R10 32
+ 0x7C200400, // 0136 CALL R8 2
+ 0x8C24054B, // 0137 GETMET R9 R2 K75
+ 0x7C240200, // 0138 CALL R9 1
+ 0x8C24134D, // 0139 GETMET R9 R9 K77
+ 0x882C0749, // 013A GETMBR R11 R3 K73
+ 0x88300913, // 013B GETMBR R12 R4 K19
+ 0x7C240600, // 013C CALL R9 3
+ 0x900E3E09, // 013D SETMBR R3 K31 R9
+ 0xB8261A00, // 013E GETNGBL R9 K13
+ 0x8824134E, // 013F GETMBR R9 R9 K78
+ 0x8C24134F, // 0140 GETMET R9 R9 K79
+ 0x7C240200, // 0141 CALL R9 1
+ 0x8C281350, // 0142 GETMET R10 R9 K80
+ 0x5830000B, // 0143 LDCONST R12 K11
+ 0xB8361A00, // 0144 GETNGBL R13 K13
+ 0x88341B4E, // 0145 GETMBR R13 R13 K78
+ 0x88341B51, // 0146 GETMBR R13 R13 K81
+ 0x8C380F52, // 0147 GETMET R14 R7 K82
+ 0x7C380200, // 0148 CALL R14 1
+ 0x7C280800, // 0149 CALL R10 4
+ 0x8C281350, // 014A GETMET R10 R9 K80
+ 0x5830000C, // 014B LDCONST R12 K12
+ 0xB8361A00, // 014C GETNGBL R13 K13
+ 0x88341B4E, // 014D GETMBR R13 R13 K78
+ 0x88341B51, // 014E GETMBR R13 R13 K81
+ 0x8C380F53, // 014F GETMET R14 R7 K83
+ 0x7C380200, // 0150 CALL R14 1
+ 0x7C280800, // 0151 CALL R10 4
+ 0x8C281350, // 0152 GETMET R10 R9 K80
+ 0x58300009, // 0153 LDCONST R12 K9
+ 0xB8361A00, // 0154 GETNGBL R13 K13
+ 0x88341B4E, // 0155 GETMBR R13 R13 K78
+ 0x88341B51, // 0156 GETMBR R13 R13 K81
+ 0x8838074A, // 0157 GETMBR R14 R3 K74
+ 0x7C280800, // 0158 CALL R10 4
+ 0x8C281350, // 0159 GETMET R10 R9 K80
+ 0x54320003, // 015A LDINT R12 4
+ 0xB8361A00, // 015B GETNGBL R13 K13
+ 0x88341B4E, // 015C GETMBR R13 R13 K78
+ 0x88341B51, // 015D GETMBR R13 R13 K81
+ 0x88380913, // 015E GETMBR R14 R4 K19
+ 0x7C280800, // 015F CALL R10 4
+ 0x8C28054B, // 0160 GETMET R10 R2 K75
+ 0x7C280200, // 0161 CALL R10 1
+ 0x8C281554, // 0162 GETMET R10 R10 K84
+ 0x8C300F55, // 0163 GETMET R12 R7 K85
+ 0x7C300200, // 0164 CALL R12 1
+ 0x8C341338, // 0165 GETMET R13 R9 K56
+ 0x7C340200, // 0166 CALL R13 1
+ 0x7C280600, // 0167 CALL R10 3
+ 0xB82E1A00, // 0168 GETNGBL R11 K13
+ 0x882C174E, // 0169 GETMBR R11 R11 K78
+ 0x8C2C174F, // 016A GETMET R11 R11 K79
+ 0x7C2C0200, // 016B CALL R11 1
+ 0x8C301750, // 016C GETMET R12 R11 K80
+ 0x5838000B, // 016D LDCONST R14 K11
+ 0xB83E1A00, // 016E GETNGBL R15 K13
+ 0x883C1F4E, // 016F GETMBR R15 R15 K78
+ 0x883C1F51, // 0170 GETMBR R15 R15 K81
+ 0x8C400F52, // 0171 GETMET R16 R7 K82
+ 0x7C400200, // 0172 CALL R16 1
+ 0x7C300800, // 0173 CALL R12 4
+ 0x8C301750, // 0174 GETMET R12 R11 K80
+ 0x5838000C, // 0175 LDCONST R14 K12
+ 0xB83E1A00, // 0176 GETNGBL R15 K13
+ 0x883C1F4E, // 0177 GETMBR R15 R15 K78
+ 0x883C1F51, // 0178 GETMBR R15 R15 K81
+ 0x8C400F53, // 0179 GETMET R16 R7 K83
+ 0x7C400200, // 017A CALL R16 1
+ 0x7C300800, // 017B CALL R12 4
+ 0x8C301750, // 017C GETMET R12 R11 K80
+ 0x58380009, // 017D LDCONST R14 K9
+ 0xB83E1A00, // 017E GETNGBL R15 K13
+ 0x883C1F4E, // 017F GETMBR R15 R15 K78
+ 0x883C1F51, // 0180 GETMBR R15 R15 K81
+ 0x5C401400, // 0181 MOVE R16 R10
+ 0x7C300800, // 0182 CALL R12 4
+ 0x8C301750, // 0183 GETMET R12 R11 K80
+ 0x543A0003, // 0184 LDINT R14 4
+ 0xB83E1A00, // 0185 GETNGBL R15 K13
+ 0x883C1F4E, // 0186 GETMBR R15 R15 K78
+ 0x883C1F51, // 0187 GETMBR R15 R15 K81
+ 0x8840072F, // 0188 GETMBR R16 R3 K47
+ 0x7C300800, // 0189 CALL R12 4
+ 0x88300956, // 018A GETMBR R12 R4 K86
+ 0x900E720C, // 018B SETMBR R3 K57 R12
+ 0x8C300557, // 018C GETMET R12 R2 K87
+ 0x7C300200, // 018D CALL R12 1
+ 0x8C301958, // 018E GETMET R12 R12 K88
+ 0x88380739, // 018F GETMBR R14 R3 K57
+ 0x7C300400, // 0190 CALL R12 2
+ 0x8C301959, // 0191 GETMET R12 R12 K89
+ 0x7C300200, // 0192 CALL R12 1
+ 0x60340015, // 0193 GETGBL R13 G21
+ 0x7C340000, // 0194 CALL R13 0
+ 0x8C341B1B, // 0195 GETMET R13 R13 K27
+ 0x883C015A, // 0196 GETMBR R15 R0 K90
+ 0x7C340400, // 0197 CALL R13 2
+ 0x8C380F5B, // 0198 GETMET R14 R7 K91
+ 0x7C380200, // 0199 CALL R14 1
+ 0x00381C08, // 019A ADD R14 R14 R8
+ 0x883C074A, // 019B GETMBR R15 R3 K74
+ 0x00381C0F, // 019C ADD R14 R14 R15
+ 0x00381C0C, // 019D ADD R14 R14 R12
+ 0x8C3C051D, // 019E GETMET R15 R2 K29
+ 0x7C3C0200, // 019F CALL R15 1
+ 0x8C3C1F1E, // 01A0 GETMET R15 R15 K30
+ 0x8844071F, // 01A1 GETMBR R17 R3 K31
+ 0x5C481C00, // 01A2 MOVE R18 R14
+ 0x5C4C1A00, // 01A3 MOVE R19 R13
+ 0x5452000F, // 01A4 LDINT R20 16
+ 0x7C3C0A00, // 01A5 CALL R15 5
+ 0x8C401738, // 01A6 GETMET R16 R11 K56
+ 0x7C400200, // 01A7 CALL R16 1
+ 0x8C440522, // 01A8 GETMET R17 R2 K34
+ 0x5C4C1E00, // 01A9 MOVE R19 R15
+ 0x60500015, // 01AA GETGBL R20 G21
+ 0x7C500000, // 01AB CALL R20 0
+ 0x8C50291B, // 01AC GETMET R20 R20 K27
+ 0x8858015C, // 01AD GETMBR R22 R0 K92
+ 0x7C500400, // 01AE CALL R20 2
+ 0x60540015, // 01AF GETGBL R21 G21
+ 0x7C540000, // 01B0 CALL R21 0
+ 0x6058000C, // 01B1 GETGBL R22 G12
+ 0x5C5C2000, // 01B2 MOVE R23 R16
+ 0x7C580200, // 01B3 CALL R22 1
+ 0x545E000F, // 01B4 LDINT R23 16
+ 0x7C440C00, // 01B5 CALL R17 6
+ 0x8C48235D, // 01B6 GETMET R18 R17 K93
+ 0x5C502000, // 01B7 MOVE R20 R16
+ 0x7C480400, // 01B8 CALL R18 2
+ 0x8C4C2324, // 01B9 GETMET R19 R17 K36
+ 0x7C4C0200, // 01BA CALL R19 1
+ 0x00482413, // 01BB ADD R18 R18 R19
+ 0xB84E1A00, // 01BC GETNGBL R19 K13
+ 0x8C4C275E, // 01BD GETMET R19 R19 K94
+ 0x7C4C0200, // 01BE CALL R19 1
+ 0x904EBE08, // 01BF SETMBR R19 K95 R8
+ 0x8850072A, // 01C0 GETMBR R20 R3 K42
+ 0x904EC014, // 01C1 SETMBR R19 K96 R20
+ 0x8850074A, // 01C2 GETMBR R20 R3 K74
+ 0x904EC214, // 01C3 SETMBR R19 K97 R20
+ 0x904EC412, // 01C4 SETMBR R19 K98 R18
+ 0x8C502738, // 01C5 GETMET R20 R19 K56
+ 0x7C500200, // 01C6 CALL R20 1
+ 0x900EC614, // 01C7 SETMBR R3 K99 R20
+ 0x8C54033A, // 01C8 GETMET R21 R1 K58
+ 0x545E0030, // 01C9 LDINT R23 49
+ 0x50600200, // 01CA LDBOOL R24 1 0
+ 0x7C540600, // 01CB CALL R21 3
+ 0x8C582B3B, // 01CC GETMET R22 R21 K59
+ 0x5C602800, // 01CD MOVE R24 R20
+ 0x7C580400, // 01CE CALL R22 2
+ 0xB85E0C00, // 01CF GETNGBL R23 K6
+ 0x8C5C2F07, // 01D0 GETMET R23 R23 K7
+ 0x60640018, // 01D1 GETGBL R25 G24
+ 0x58680064, // 01D2 LDCONST R26 K100
+ 0x886C072A, // 01D3 GETMBR R27 R3 K42
+ 0x88700765, // 01D4 GETMBR R28 R3 K101
+ 0x88740766, // 01D5 GETMBR R29 R3 K102
+ 0x7C640800, // 01D6 CALL R25 4
+ 0x5868000C, // 01D7 LDCONST R26 K12
+ 0x7C5C0600, // 01D8 CALL R23 3
+ 0x885C013C, // 01D9 GETMBR R23 R0 K60
+ 0x8C5C2F3D, // 01DA GETMET R23 R23 K61
0x5C642A00, // 01DB MOVE R25 R21
0x7C5C0400, // 01DC CALL R23 2
0x505C0200, // 01DD LDBOOL R23 1 0
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
index 490852c6e..32377c2c9 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
@@ -7,86 +7,122 @@
extern const bclass be_class_Matter_Device;
/********************************************************************
-** Solidified function: msg_received
+** Solidified function: clean_remotes
********************************************************************/
-be_local_closure(Matter_Device_msg_received, /* name */
+be_local_closure(Matter_Device_clean_remotes, /* name */
be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
+ 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[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(msg_received),
+ ( &(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(msg_received),
+ be_str_weak(clean_remotes),
&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: conf_to_log
-********************************************************************/
-be_local_closure(Matter_Device_conf_to_log, /* 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
+ ( &(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
})
)
);
@@ -125,151 +161,9 @@ be_local_closure(Matter_Device_save_before_restart, /* name */
/********************************************************************
-** Solidified function: register_native_classes
+** Solidified function: stop
********************************************************************/
-be_local_closure(Matter_Device_register_native_classes, /* name */
- be_nested_proto(
- 12, /* nstack */
- 3, /* 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(string),
- /* K2 */ be_nested_str_weak(members),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(get),
- /* K5 */ be_nested_str_weak(class),
- /* K6 */ be_nested_str_weak(find),
- /* K7 */ be_nested_str_weak(Plugin_),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(register_plugin_class),
- /* K10 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(register_native_classes),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
- 0x60140010, // 0002 GETGBL R5 G16
- 0x8C180702, // 0003 GETMET R6 R3 K2
- 0xB8220600, // 0004 GETNGBL R8 K3
- 0x7C180400, // 0005 CALL R6 2
- 0x7C140200, // 0006 CALL R5 1
- 0xA8020014, // 0007 EXBLK 0 #001D
- 0x5C180A00, // 0008 MOVE R6 R5
- 0x7C180000, // 0009 CALL R6 0
- 0x8C1C0704, // 000A GETMET R7 R3 K4
- 0xB8260600, // 000B GETNGBL R9 K3
- 0x5C280C00, // 000C MOVE R10 R6
- 0x7C1C0600, // 000D CALL R7 3
- 0x60200004, // 000E GETGBL R8 G4
- 0x5C240E00, // 000F MOVE R9 R7
- 0x7C200200, // 0010 CALL R8 1
- 0x1C201105, // 0011 EQ R8 R8 K5
- 0x78220008, // 0012 JMPF R8 #001C
- 0x8C200906, // 0013 GETMET R8 R4 K6
- 0x5C280C00, // 0014 MOVE R10 R6
- 0x582C0007, // 0015 LDCONST R11 K7
- 0x7C200600, // 0016 CALL R8 3
- 0x1C201108, // 0017 EQ R8 R8 K8
- 0x78220002, // 0018 JMPF R8 #001C
- 0x8C200109, // 0019 GETMET R8 R0 K9
- 0x5C280E00, // 001A MOVE R10 R7
- 0x7C200400, // 001B CALL R8 2
- 0x7001FFEA, // 001C JMP #0008
- 0x5814000A, // 001D LDCONST R5 K10
- 0xAC140200, // 001E CATCH R5 1 0
- 0xB0080000, // 001F RAISE 2 R0 R0
- 0x80000000, // 0020 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** 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: every_250ms
-********************************************************************/
-be_local_closure(Matter_Device_every_250ms, /* name */
+be_local_closure(Matter_Device_stop, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
@@ -279,32 +173,157 @@ be_local_closure(Matter_Device_every_250ms, /* name */
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),
+ ( &(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(every_250ms),
+ be_str_weak(stop),
&be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ ( &(const binstruction[10]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 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
+ 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: 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: mdns_announce_op_discovery_all_fabrics
+********************************************************************/
+be_local_closure(Matter_Device_mdns_announce_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_announce_op_discovery),
+ /* K5 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(mdns_announce_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
})
)
);
@@ -437,6 +456,571 @@ be_local_closure(Matter_Device_mdns_remove_PASE, /* name */
/*******************************************************************/
+/********************************************************************
+** 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: 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: 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: 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: 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: process_attribute_expansion
+********************************************************************/
+be_local_closure(Matter_Device_process_attribute_expansion, /* name */
+ be_nested_proto(
+ 24, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 0, /* 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(keys),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(stop_iteration),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_const_int(0),
+ }),
+ be_str_weak(keys_sorted),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x60040012, // 0000 GETGBL R1 G18
+ 0x7C040000, // 0001 CALL R1 0
+ 0x60080010, // 0002 GETGBL R2 G16
+ 0x8C0C0100, // 0003 GETMET R3 R0 K0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x7C080200, // 0005 CALL R2 1
+ 0xA8020005, // 0006 EXBLK 0 #000D
+ 0x5C0C0400, // 0007 MOVE R3 R2
+ 0x7C0C0000, // 0008 CALL R3 0
+ 0x8C100301, // 0009 GETMET R4 R1 K1
+ 0x5C180600, // 000A MOVE R6 R3
+ 0x7C100400, // 000B CALL R4 2
+ 0x7001FFF9, // 000C JMP #0007
+ 0x58080002, // 000D LDCONST R2 K2
+ 0xAC080200, // 000E CATCH R2 1 0
+ 0xB0080000, // 000F RAISE 2 R0 R0
+ 0x60080010, // 0010 GETGBL R2 G16
+ 0x600C000C, // 0011 GETGBL R3 G12
+ 0x5C100200, // 0012 MOVE R4 R1
+ 0x7C0C0200, // 0013 CALL R3 1
+ 0x040C0703, // 0014 SUB R3 R3 K3
+ 0x400E0603, // 0015 CONNECT R3 K3 R3
+ 0x7C080200, // 0016 CALL R2 1
+ 0xA8020010, // 0017 EXBLK 0 #0029
+ 0x5C0C0400, // 0018 MOVE R3 R2
+ 0x7C0C0000, // 0019 CALL R3 0
+ 0x94100203, // 001A GETIDX R4 R1 R3
+ 0x5C140600, // 001B MOVE R5 R3
+ 0x24180B04, // 001C GT R6 R5 K4
+ 0x781A0008, // 001D JMPF R6 #0027
+ 0x04180B03, // 001E SUB R6 R5 K3
+ 0x94180206, // 001F GETIDX R6 R1 R6
+ 0x24180C04, // 0020 GT R6 R6 R4
+ 0x781A0004, // 0021 JMPF R6 #0027
+ 0x04180B03, // 0022 SUB R6 R5 K3
+ 0x94180206, // 0023 GETIDX R6 R1 R6
+ 0x98040A06, // 0024 SETIDX R1 R5 R6
+ 0x04140B03, // 0025 SUB R5 R5 K3
+ 0x7001FFF4, // 0026 JMP #001C
+ 0x98040A04, // 0027 SETIDX R1 R5 R4
+ 0x7001FFEE, // 0028 JMP #0018
+ 0x58080002, // 0029 LDCONST R2 K2
+ 0xAC080200, // 002A CATCH R2 1 0
+ 0xB0080000, // 002B RAISE 2 R0 R0
+ 0x80040200, // 002C RET 1 R1
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[16]) { /* constants */
+ /* K0 */ be_nested_str_weak(endpoint),
+ /* K1 */ be_nested_str_weak(cluster),
+ /* K2 */ be_nested_str_weak(attribute),
+ /* K3 */ be_nested_str_weak(plugins),
+ /* K4 */ be_nested_str_weak(get_endpoint),
+ /* K5 */ be_nested_str_weak(contains),
+ /* K6 */ be_nested_str_weak(get_cluster_list),
+ /* K7 */ be_nested_str_weak(get_attribute_list),
+ /* K8 */ be_nested_str_weak(push),
+ /* K9 */ be_nested_str_weak(stop_iteration),
+ /* K10 */ be_nested_str_weak(status),
+ /* K11 */ be_nested_str_weak(matter),
+ /* K12 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
+ /* K13 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
+ /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE),
+ }),
+ be_str_weak(process_attribute_expansion),
+ &be_const_str_solidified,
+ ( &(const binstruction[203]) { /* code */
+ 0x840C0000, // 0000 CLOSURE R3 P0
+ 0x88100300, // 0001 GETMBR R4 R1 K0
+ 0x88140301, // 0002 GETMBR R5 R1 K1
+ 0x88180302, // 0003 GETMBR R6 R1 K2
+ 0x501C0000, // 0004 LDBOOL R7 0 0
+ 0x50200000, // 0005 LDBOOL R8 0 0
+ 0x50240000, // 0006 LDBOOL R9 0 0
+ 0x88280300, // 0007 GETMBR R10 R1 K0
+ 0x4C2C0000, // 0008 LDNIL R11
+ 0x2028140B, // 0009 NE R10 R10 R11
+ 0x782A0007, // 000A JMPF R10 #0013
+ 0x88280301, // 000B GETMBR R10 R1 K1
+ 0x4C2C0000, // 000C LDNIL R11
+ 0x2028140B, // 000D NE R10 R10 R11
+ 0x782A0003, // 000E JMPF R10 #0013
+ 0x88280302, // 000F GETMBR R10 R1 K2
+ 0x4C2C0000, // 0010 LDNIL R11
+ 0x2028140B, // 0011 NE R10 R10 R11
+ 0x742A0000, // 0012 JMPT R10 #0014
+ 0x50280001, // 0013 LDBOOL R10 0 1
+ 0x50280200, // 0014 LDBOOL R10 1 0
+ 0x602C0013, // 0015 GETGBL R11 G19
+ 0x7C2C0000, // 0016 CALL R11 0
+ 0x60300010, // 0017 GETGBL R12 G16
+ 0x88340103, // 0018 GETMBR R13 R0 K3
+ 0x7C300200, // 0019 CALL R12 1
+ 0xA8020053, // 001A EXBLK 0 #006F
+ 0x5C341800, // 001B MOVE R13 R12
+ 0x7C340000, // 001C CALL R13 0
+ 0x8C381B04, // 001D GETMET R14 R13 K4
+ 0x7C380200, // 001E CALL R14 1
+ 0x4C3C0000, // 001F LDNIL R15
+ 0x203C080F, // 0020 NE R15 R4 R15
+ 0x783E0002, // 0021 JMPF R15 #0025
+ 0x203C1C04, // 0022 NE R15 R14 R4
+ 0x783E0000, // 0023 JMPF R15 #0025
+ 0x7001FFF5, // 0024 JMP #001B
+ 0x8C3C1705, // 0025 GETMET R15 R11 K5
+ 0x5C441C00, // 0026 MOVE R17 R14
+ 0x7C3C0400, // 0027 CALL R15 2
+ 0x743E0002, // 0028 JMPT R15 #002C
+ 0x603C0013, // 0029 GETGBL R15 G19
+ 0x7C3C0000, // 002A CALL R15 0
+ 0x982C1C0F, // 002B SETIDX R11 R14 R15
+ 0x501C0200, // 002C LDBOOL R7 1 0
+ 0x8C3C1B06, // 002D GETMET R15 R13 K6
+ 0x7C3C0200, // 002E CALL R15 1
+ 0x60400010, // 002F GETGBL R16 G16
+ 0x5C441E00, // 0030 MOVE R17 R15
+ 0x7C400200, // 0031 CALL R16 1
+ 0xA8020037, // 0032 EXBLK 0 #006B
+ 0x5C442000, // 0033 MOVE R17 R16
+ 0x7C440000, // 0034 CALL R17 0
+ 0x4C480000, // 0035 LDNIL R18
+ 0x20480A12, // 0036 NE R18 R5 R18
+ 0x784A0002, // 0037 JMPF R18 #003B
+ 0x20482205, // 0038 NE R18 R17 R5
+ 0x784A0000, // 0039 JMPF R18 #003B
+ 0x7001FFF7, // 003A JMP #0033
+ 0x9448160E, // 003B GETIDX R18 R11 R14
+ 0x8C482505, // 003C GETMET R18 R18 K5
+ 0x5C502200, // 003D MOVE R20 R17
+ 0x7C480400, // 003E CALL R18 2
+ 0x744A0003, // 003F JMPT R18 #0044
+ 0x9448160E, // 0040 GETIDX R18 R11 R14
+ 0x604C0013, // 0041 GETGBL R19 G19
+ 0x7C4C0000, // 0042 CALL R19 0
+ 0x98482213, // 0043 SETIDX R18 R17 R19
+ 0x50200200, // 0044 LDBOOL R8 1 0
+ 0x8C481B07, // 0045 GETMET R18 R13 K7
+ 0x5C502200, // 0046 MOVE R20 R17
+ 0x7C480400, // 0047 CALL R18 2
+ 0x604C0010, // 0048 GETGBL R19 G16
+ 0x5C502400, // 0049 MOVE R20 R18
+ 0x7C4C0200, // 004A CALL R19 1
+ 0xA802001A, // 004B EXBLK 0 #0067
+ 0x5C502600, // 004C MOVE R20 R19
+ 0x7C500000, // 004D CALL R20 0
+ 0x4C540000, // 004E LDNIL R21
+ 0x20540C15, // 004F NE R21 R6 R21
+ 0x78560002, // 0050 JMPF R21 #0054
+ 0x20542806, // 0051 NE R21 R20 R6
+ 0x78560000, // 0052 JMPF R21 #0054
+ 0x7001FFF7, // 0053 JMP #004C
+ 0x9454160E, // 0054 GETIDX R21 R11 R14
+ 0x94542A11, // 0055 GETIDX R21 R21 R17
+ 0x8C542B05, // 0056 GETMET R21 R21 K5
+ 0x5C5C2800, // 0057 MOVE R23 R20
+ 0x7C540400, // 0058 CALL R21 2
+ 0x74560004, // 0059 JMPT R21 #005F
+ 0x9454160E, // 005A GETIDX R21 R11 R14
+ 0x94542A11, // 005B GETIDX R21 R21 R17
+ 0x60580012, // 005C GETGBL R22 G18
+ 0x7C580000, // 005D CALL R22 0
+ 0x98542816, // 005E SETIDX R21 R20 R22
+ 0x50240200, // 005F LDBOOL R9 1 0
+ 0x9454160E, // 0060 GETIDX R21 R11 R14
+ 0x94542A11, // 0061 GETIDX R21 R21 R17
+ 0x94542A14, // 0062 GETIDX R21 R21 R20
+ 0x8C542B08, // 0063 GETMET R21 R21 K8
+ 0x5C5C1A00, // 0064 MOVE R23 R13
+ 0x7C540400, // 0065 CALL R21 2
+ 0x7001FFE4, // 0066 JMP #004C
+ 0x584C0009, // 0067 LDCONST R19 K9
+ 0xAC4C0200, // 0068 CATCH R19 1 0
+ 0xB0080000, // 0069 RAISE 2 R0 R0
+ 0x7001FFC7, // 006A JMP #0033
+ 0x58400009, // 006B LDCONST R16 K9
+ 0xAC400200, // 006C CATCH R16 1 0
+ 0xB0080000, // 006D RAISE 2 R0 R0
+ 0x7001FFAB, // 006E JMP #001B
+ 0x58300009, // 006F LDCONST R12 K9
+ 0xAC300200, // 0070 CATCH R12 1 0
+ 0xB0080000, // 0071 RAISE 2 R0 R0
+ 0x60300010, // 0072 GETGBL R12 G16
+ 0x5C340600, // 0073 MOVE R13 R3
+ 0x5C381600, // 0074 MOVE R14 R11
+ 0x7C340200, // 0075 CALL R13 1
+ 0x7C300200, // 0076 CALL R12 1
+ 0xA8020033, // 0077 EXBLK 0 #00AC
+ 0x5C341800, // 0078 MOVE R13 R12
+ 0x7C340000, // 0079 CALL R13 0
+ 0x60380010, // 007A GETGBL R14 G16
+ 0x5C3C0600, // 007B MOVE R15 R3
+ 0x9440160D, // 007C GETIDX R16 R11 R13
+ 0x7C3C0200, // 007D CALL R15 1
+ 0x7C380200, // 007E CALL R14 1
+ 0xA8020027, // 007F EXBLK 0 #00A8
+ 0x5C3C1C00, // 0080 MOVE R15 R14
+ 0x7C3C0000, // 0081 CALL R15 0
+ 0x60400010, // 0082 GETGBL R16 G16
+ 0x5C440600, // 0083 MOVE R17 R3
+ 0x9448160D, // 0084 GETIDX R18 R11 R13
+ 0x9448240F, // 0085 GETIDX R18 R18 R15
+ 0x7C440200, // 0086 CALL R17 1
+ 0x7C400200, // 0087 CALL R16 1
+ 0xA802001A, // 0088 EXBLK 0 #00A4
+ 0x5C442000, // 0089 MOVE R17 R16
+ 0x7C440000, // 008A CALL R17 0
+ 0x60480010, // 008B GETGBL R18 G16
+ 0x944C160D, // 008C GETIDX R19 R11 R13
+ 0x944C260F, // 008D GETIDX R19 R19 R15
+ 0x944C2611, // 008E GETIDX R19 R19 R17
+ 0x7C480200, // 008F CALL R18 1
+ 0xA802000E, // 0090 EXBLK 0 #00A0
+ 0x5C4C2400, // 0091 MOVE R19 R18
+ 0x7C4C0000, // 0092 CALL R19 0
+ 0x9006000D, // 0093 SETMBR R1 K0 R13
+ 0x9006020F, // 0094 SETMBR R1 K1 R15
+ 0x90060411, // 0095 SETMBR R1 K2 R17
+ 0x5C500400, // 0096 MOVE R20 R2
+ 0x5C542600, // 0097 MOVE R21 R19
+ 0x5C580200, // 0098 MOVE R22 R1
+ 0x5C5C1400, // 0099 MOVE R23 R10
+ 0x7C500600, // 009A CALL R20 3
+ 0x782A0002, // 009B JMPF R10 #009F
+ 0x78520001, // 009C JMPF R20 #009F
+ 0xA8040004, // 009D EXBLK 1 4
+ 0x80002A00, // 009E RET 0
+ 0x7001FFF0, // 009F JMP #0091
+ 0x58480009, // 00A0 LDCONST R18 K9
+ 0xAC480200, // 00A1 CATCH R18 1 0
+ 0xB0080000, // 00A2 RAISE 2 R0 R0
+ 0x7001FFE4, // 00A3 JMP #0089
+ 0x58400009, // 00A4 LDCONST R16 K9
+ 0xAC400200, // 00A5 CATCH R16 1 0
+ 0xB0080000, // 00A6 RAISE 2 R0 R0
+ 0x7001FFD7, // 00A7 JMP #0080
+ 0x58380009, // 00A8 LDCONST R14 K9
+ 0xAC380200, // 00A9 CATCH R14 1 0
+ 0xB0080000, // 00AA RAISE 2 R0 R0
+ 0x7001FFCB, // 00AB JMP #0078
+ 0x58300009, // 00AC LDCONST R12 K9
+ 0xAC300200, // 00AD CATCH R12 1 0
+ 0xB0080000, // 00AE RAISE 2 R0 R0
+ 0x782A0019, // 00AF JMPF R10 #00CA
+ 0x5C300E00, // 00B0 MOVE R12 R7
+ 0x74320003, // 00B1 JMPT R12 #00B6
+ 0xB8321600, // 00B2 GETNGBL R12 K11
+ 0x8830190C, // 00B3 GETMBR R12 R12 K12
+ 0x9006140C, // 00B4 SETMBR R1 K10 R12
+ 0x7002000E, // 00B5 JMP #00C5
+ 0x5C301000, // 00B6 MOVE R12 R8
+ 0x74320003, // 00B7 JMPT R12 #00BC
+ 0xB8321600, // 00B8 GETNGBL R12 K11
+ 0x8830190D, // 00B9 GETMBR R12 R12 K13
+ 0x9006140C, // 00BA SETMBR R1 K10 R12
+ 0x70020008, // 00BB JMP #00C5
+ 0x5C301200, // 00BC MOVE R12 R9
+ 0x74320003, // 00BD JMPT R12 #00C2
+ 0xB8321600, // 00BE GETNGBL R12 K11
+ 0x8830190E, // 00BF GETMBR R12 R12 K14
+ 0x9006140C, // 00C0 SETMBR R1 K10 R12
+ 0x70020002, // 00C1 JMP #00C5
+ 0xB8321600, // 00C2 GETNGBL R12 K11
+ 0x8830190F, // 00C3 GETMBR R12 R12 K15
+ 0x9006140C, // 00C4 SETMBR R1 K10 R12
+ 0x5C300400, // 00C5 MOVE R12 R2
+ 0x4C340000, // 00C6 LDNIL R13
+ 0x5C380200, // 00C7 MOVE R14 R1
+ 0x503C0200, // 00C8 LDBOOL R15 1 0
+ 0x7C300600, // 00C9 CALL R12 3
+ 0x80000000, // 00CA RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: _instantiate_plugins_from_config
********************************************************************/
@@ -644,11 +1228,11 @@ be_local_closure(Matter_Device__instantiate_plugins_from_config, /* name */
/********************************************************************
-** Solidified function: start_root_basic_commissioning
+** Solidified function: start_operational_discovery
********************************************************************/
-be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
+be_local_closure(Matter_Device_start_operational_discovery, /* name */
be_nested_proto(
- 13, /* nstack */
+ 7, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -656,69 +1240,288 @@ be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
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),
+ ( &(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: 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: 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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: bridge_add_endpoint
+********************************************************************/
+be_local_closure(Matter_Device_bridge_add_endpoint, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[21]) { /* constants */
+ /* K0 */ be_nested_str_weak(plugins_classes),
+ /* K1 */ be_nested_str_weak(find),
/* 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),
+ /* K4 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
+ /* K5 */ be_nested_str_weak(_X27_X20skipping),
+ /* K6 */ be_const_int(3),
+ /* K7 */ be_nested_str_weak(next_ep),
+ /* K8 */ be_nested_str_weak(plugins),
+ /* K9 */ be_nested_str_weak(push),
+ /* K10 */ be_nested_str_weak(type),
+ /* K11 */ be_nested_str_weak(keys),
+ /* K12 */ be_nested_str_weak(stop_iteration),
+ /* K13 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s),
+ /* K14 */ be_nested_str_weak(conf_to_log),
+ /* K15 */ be_const_int(2),
+ /* K16 */ be_nested_str_weak(plugins_config),
+ /* K17 */ be_nested_str_weak(plugins_persist),
+ /* K18 */ be_const_int(1),
+ /* K19 */ be_nested_str_weak(save_param),
+ /* K20 */ be_nested_str_weak(signal_endpoints_changed),
}),
- be_str_weak(start_root_basic_commissioning),
+ be_str_weak(bridge_add_endpoint),
&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
+ ( &(const binstruction[70]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x4C100000, // 0004 LDNIL R4
+ 0x1C100604, // 0005 EQ R4 R3 R4
+ 0x78120009, // 0006 JMPF R4 #0011
+ 0xB8120400, // 0007 GETNGBL R4 K2
+ 0x8C100903, // 0008 GETMET R4 R4 K3
+ 0x60180008, // 0009 GETGBL R6 G8
+ 0x5C1C0200, // 000A MOVE R7 R1
+ 0x7C180200, // 000B CALL R6 1
+ 0x001A0806, // 000C ADD R6 K4 R6
+ 0x00180D05, // 000D ADD R6 R6 K5
+ 0x581C0006, // 000E LDCONST R7 K6
+ 0x7C100600, // 000F CALL R4 3
+ 0x80000800, // 0010 RET 0
+ 0x88100107, // 0011 GETMBR R4 R0 K7
+ 0x60140008, // 0012 GETGBL R5 G8
+ 0x5C180800, // 0013 MOVE R6 R4
+ 0x7C140200, // 0014 CALL R5 1
+ 0x5C180600, // 0015 MOVE R6 R3
+ 0x5C1C0000, // 0016 MOVE R7 R0
+ 0x5C200800, // 0017 MOVE R8 R4
+ 0x5C240400, // 0018 MOVE R9 R2
+ 0x7C180600, // 0019 CALL R6 3
+ 0x881C0108, // 001A GETMBR R7 R0 K8
+ 0x8C1C0F09, // 001B GETMET R7 R7 K9
+ 0x5C240C00, // 001C MOVE R9 R6
+ 0x7C1C0400, // 001D CALL R7 2
+ 0x601C0013, // 001E GETGBL R7 G19
+ 0x7C1C0000, // 001F CALL R7 0
+ 0x981E1401, // 0020 SETIDX R7 K10 R1
+ 0x60200010, // 0021 GETGBL R8 G16
+ 0x8C24050B, // 0022 GETMET R9 R2 K11
+ 0x7C240200, // 0023 CALL R9 1
+ 0x7C200200, // 0024 CALL R8 1
+ 0xA8020004, // 0025 EXBLK 0 #002B
+ 0x5C241000, // 0026 MOVE R9 R8
+ 0x7C240000, // 0027 CALL R9 0
+ 0x94280409, // 0028 GETIDX R10 R2 R9
+ 0x981C120A, // 0029 SETIDX R7 R9 R10
+ 0x7001FFFA, // 002A JMP #0026
+ 0x5820000C, // 002B LDCONST R8 K12
+ 0xAC200200, // 002C CATCH R8 1 0
+ 0xB0080000, // 002D RAISE 2 R0 R0
+ 0xB8220400, // 002E GETNGBL R8 K2
+ 0x8C201103, // 002F GETMET R8 R8 K3
+ 0x60280018, // 0030 GETGBL R10 G24
+ 0x582C000D, // 0031 LDCONST R11 K13
+ 0x5C300800, // 0032 MOVE R12 R4
+ 0x5C340200, // 0033 MOVE R13 R1
+ 0x8C38010E, // 0034 GETMET R14 R0 K14
+ 0x5C400400, // 0035 MOVE R16 R2
+ 0x7C380400, // 0036 CALL R14 2
+ 0x7C280800, // 0037 CALL R10 4
+ 0x582C000F, // 0038 LDCONST R11 K15
+ 0x7C200600, // 0039 CALL R8 3
+ 0x88200110, // 003A GETMBR R8 R0 K16
+ 0x98200A07, // 003B SETIDX R8 R5 R7
+ 0x50200200, // 003C LDBOOL R8 1 0
+ 0x90022208, // 003D SETMBR R0 K17 R8
+ 0x88200107, // 003E GETMBR R8 R0 K7
+ 0x00201112, // 003F ADD R8 R8 K18
+ 0x90020E08, // 0040 SETMBR R0 K7 R8
+ 0x8C200113, // 0041 GETMET R8 R0 K19
+ 0x7C200200, // 0042 CALL R8 1
+ 0x8C200114, // 0043 GETMET R8 R0 K20
+ 0x7C200200, // 0044 CALL R8 1
+ 0x80040800, // 0045 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** 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
})
)
);
@@ -802,101 +1605,28 @@ be_local_closure(Matter_Device_compute_qrcode_content, /* name */
/********************************************************************
-** Solidified function: bridge_remove_endpoint
+** Solidified function: is_commissioning_open
********************************************************************/
-be_local_closure(Matter_Device_bridge_remove_endpoint, /* name */
+be_local_closure(Matter_Device_is_commissioning_open, /* name */
be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
+ 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[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_nested_str_weak(save_param),
- /* K12 */ be_nested_str_weak(signal_endpoints_changed),
- /* K13 */ be_const_int(0),
- /* K14 */ be_nested_str_weak(plugins),
- /* K15 */ be_nested_str_weak(get_endpoint),
- /* K16 */ be_const_int(1),
- /* K17 */ be_nested_str_weak(clean_remotes),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
}),
- be_str_weak(bridge_remove_endpoint),
+ be_str_weak(is_commissioning_open),
&be_const_str_solidified,
- ( &(const binstruction[60]) { /* 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
- 0x8C18010B, // 001F GETMET R6 R0 K11
- 0x7C180200, // 0020 CALL R6 1
- 0x8C18010C, // 0021 GETMET R6 R0 K12
- 0x7C180200, // 0022 CALL R6 1
- 0x5818000D, // 0023 LDCONST R6 K13
- 0x601C000C, // 0024 GETGBL R7 G12
- 0x8820010E, // 0025 GETMBR R8 R0 K14
- 0x7C1C0200, // 0026 CALL R7 1
- 0x141C0C07, // 0027 LT R7 R6 R7
- 0x781E000F, // 0028 JMPF R7 #0039
- 0x881C010E, // 0029 GETMBR R7 R0 K14
- 0x941C0E06, // 002A GETIDX R7 R7 R6
- 0x8C1C0F0F, // 002B GETMET R7 R7 K15
- 0x7C1C0200, // 002C CALL R7 1
- 0x1C1C0207, // 002D EQ R7 R1 R7
- 0x781E0007, // 002E JMPF R7 #0037
- 0x881C010E, // 002F GETMBR R7 R0 K14
- 0x8C1C0F09, // 0030 GETMET R7 R7 K9
- 0x5C240C00, // 0031 MOVE R9 R6
- 0x7C1C0400, // 0032 CALL R7 2
- 0x8C1C010C, // 0033 GETMET R7 R0 K12
- 0x7C1C0200, // 0034 CALL R7 1
- 0x70020002, // 0035 JMP #0039
- 0x70020000, // 0036 JMP #0038
- 0x00180D10, // 0037 ADD R6 R6 K16
- 0x7001FFEA, // 0038 JMP #0024
- 0x8C1C0111, // 0039 GETMET R7 R0 K17
- 0x7C1C0200, // 003A CALL R7 1
- 0x80000000, // 003B 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
})
)
);
@@ -985,6 +1715,3061 @@ be_local_closure(Matter_Device_sort_distinct, /* name */
/*******************************************************************/
+/********************************************************************
+** 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_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: 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_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: 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_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: 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: 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: 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: 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: 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[46]) { /* 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_classes),
+ /* K14 */ be_nested_str_weak(plugins_config_remotes),
+ /* K15 */ be_nested_str_weak(register_native_classes),
+ /* K16 */ be_nested_str_weak(vendorid),
+ /* K17 */ be_nested_str_weak(VENDOR_ID),
+ /* K18 */ be_nested_str_weak(productid),
+ /* K19 */ be_nested_str_weak(PRODUCT_ID),
+ /* K20 */ be_nested_str_weak(root_iterations),
+ /* K21 */ be_nested_str_weak(PBKDF_ITERATIONS),
+ /* K22 */ be_nested_str_weak(next_ep),
+ /* K23 */ be_const_int(1),
+ /* K24 */ be_nested_str_weak(root_salt),
+ /* K25 */ be_nested_str_weak(random),
+ /* K26 */ be_nested_str_weak(ipv4only),
+ /* K27 */ be_nested_str_weak(disable_bridge_mode),
+ /* K28 */ be_nested_str_weak(load_param),
+ /* K29 */ be_nested_str_weak(sessions),
+ /* K30 */ be_nested_str_weak(Session_Store),
+ /* K31 */ be_nested_str_weak(load_fabrics),
+ /* K32 */ be_nested_str_weak(message_handler),
+ /* K33 */ be_nested_str_weak(MessageHandler),
+ /* K34 */ be_nested_str_weak(ui),
+ /* K35 */ be_nested_str_weak(wifi),
+ /* K36 */ be_nested_str_weak(up),
+ /* K37 */ be_nested_str_weak(eth),
+ /* K38 */ be_nested_str_weak(start),
+ /* K39 */ be_nested_str_weak(add_rule),
+ /* K40 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K41 */ be_nested_str_weak(matter_start),
+ /* K42 */ be_nested_str_weak(Eth_X23Connected),
+ /* K43 */ be_nested_str_weak(_init_basic_commissioning),
+ /* K44 */ be_nested_str_weak(add_driver),
+ /* K45 */ be_nested_str_weak(register_commands),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[112]) { /* 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
+ 0x60080013, // 001C GETGBL R2 G19
+ 0x7C080000, // 001D CALL R2 0
+ 0x90021C02, // 001E SETMBR R0 K14 R2
+ 0x8C08010F, // 001F GETMET R2 R0 K15
+ 0x7C080200, // 0020 CALL R2 1
+ 0x88080111, // 0021 GETMBR R2 R0 K17
+ 0x90022002, // 0022 SETMBR R0 K16 R2
+ 0x88080113, // 0023 GETMBR R2 R0 K19
+ 0x90022402, // 0024 SETMBR R0 K18 R2
+ 0x88080115, // 0025 GETMBR R2 R0 K21
+ 0x90022802, // 0026 SETMBR R0 K20 R2
+ 0x90022D17, // 0027 SETMBR R0 K22 K23
+ 0x8C080319, // 0028 GETMET R2 R1 K25
+ 0x5412000F, // 0029 LDINT R4 16
+ 0x7C080400, // 002A CALL R2 2
+ 0x90023002, // 002B SETMBR R0 K24 R2
+ 0x50080000, // 002C LDBOOL R2 0 0
+ 0x90023402, // 002D SETMBR R0 K26 R2
+ 0x50080000, // 002E LDBOOL R2 0 0
+ 0x90023602, // 002F SETMBR R0 K27 R2
+ 0x8C08011C, // 0030 GETMET R2 R0 K28
+ 0x7C080200, // 0031 CALL R2 1
+ 0xB80A0600, // 0032 GETNGBL R2 K3
+ 0x8C08051E, // 0033 GETMET R2 R2 K30
+ 0x5C100000, // 0034 MOVE R4 R0
+ 0x7C080400, // 0035 CALL R2 2
+ 0x90023A02, // 0036 SETMBR R0 K29 R2
+ 0x8808011D, // 0037 GETMBR R2 R0 K29
+ 0x8C08051F, // 0038 GETMET R2 R2 K31
+ 0x7C080200, // 0039 CALL R2 1
+ 0xB80A0600, // 003A GETNGBL R2 K3
+ 0x8C080521, // 003B GETMET R2 R2 K33
+ 0x5C100000, // 003C MOVE R4 R0
+ 0x7C080400, // 003D CALL R2 2
+ 0x90024002, // 003E SETMBR R0 K32 R2
+ 0xB80A0600, // 003F GETNGBL R2 K3
+ 0x8C080505, // 0040 GETMET R2 R2 K5
+ 0x5C100000, // 0041 MOVE R4 R0
+ 0x7C080400, // 0042 CALL R2 2
+ 0x90024402, // 0043 SETMBR R0 K34 R2
+ 0xB80A0200, // 0044 GETNGBL R2 K1
+ 0x8C080523, // 0045 GETMET R2 R2 K35
+ 0x7C080200, // 0046 CALL R2 1
+ 0x94080524, // 0047 GETIDX R2 R2 K36
+ 0x740A0004, // 0048 JMPT R2 #004E
+ 0xB80A0200, // 0049 GETNGBL R2 K1
+ 0x8C080525, // 004A GETMET R2 R2 K37
+ 0x7C080200, // 004B CALL R2 1
+ 0x94080524, // 004C GETIDX R2 R2 K36
+ 0x780A0001, // 004D JMPF R2 #0050
+ 0x8C080126, // 004E GETMET R2 R0 K38
+ 0x7C080200, // 004F CALL R2 1
+ 0xB80A0200, // 0050 GETNGBL R2 K1
+ 0x8C080523, // 0051 GETMET R2 R2 K35
+ 0x7C080200, // 0052 CALL R2 1
+ 0x94080524, // 0053 GETIDX R2 R2 K36
+ 0x740A0005, // 0054 JMPT R2 #005B
+ 0xB80A0200, // 0055 GETNGBL R2 K1
+ 0x8C080527, // 0056 GETMET R2 R2 K39
+ 0x58100028, // 0057 LDCONST R4 K40
+ 0x84140000, // 0058 CLOSURE R5 P0
+ 0x58180029, // 0059 LDCONST R6 K41
+ 0x7C080800, // 005A CALL R2 4
+ 0xB80A0200, // 005B GETNGBL R2 K1
+ 0x8C080525, // 005C GETMET R2 R2 K37
+ 0x7C080200, // 005D CALL R2 1
+ 0x94080524, // 005E GETIDX R2 R2 K36
+ 0x740A0005, // 005F JMPT R2 #0066
+ 0xB80A0200, // 0060 GETNGBL R2 K1
+ 0x8C080527, // 0061 GETMET R2 R2 K39
+ 0x5810002A, // 0062 LDCONST R4 K42
+ 0x84140001, // 0063 CLOSURE R5 P1
+ 0x58180029, // 0064 LDCONST R6 K41
+ 0x7C080800, // 0065 CALL R2 4
+ 0x8C08012B, // 0066 GETMET R2 R0 K43
+ 0x7C080200, // 0067 CALL R2 1
+ 0xB80A0200, // 0068 GETNGBL R2 K1
+ 0x8C08052C, // 0069 GETMET R2 R2 K44
+ 0x5C100000, // 006A MOVE R4 R0
+ 0x7C080400, // 006B CALL R2 2
+ 0x8C08012D, // 006C GETMET R2 R0 K45
+ 0x7C080200, // 006D CALL R2 1
+ 0xA0000000, // 006E CLOSE R0
+ 0x80000000, // 006F 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: 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: 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: 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*[ 1]) {
+ 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
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(add_cmd),
+ /* K2 */ be_nested_str_weak(MtrJoin),
+ }),
+ be_str_weak(register_commands),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* 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
+ 0xA0000000, // 0005 CLOSE R0
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: autoconf_device_map
+********************************************************************/
+be_local_closure(Matter_Device_autoconf_device_map, /* name */
+ be_nested_proto(
+ 20, /* 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(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),
+ }),
+ be_str_weak(autoconf_device_map),
+ &be_const_str_solidified,
+ ( &(const binstruction[198]) { /* 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: _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: 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
+ 0x00040301, // 0001 ADD R1 R1 K1
+ 0x90020001, // 0002 SETMBR R0 K0 R1
+ 0x80000000, // 0003 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: 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: _mdns_announce_hostname
+********************************************************************/
+be_local_closure(Matter_Device__mdns_announce_hostname, /* 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[26]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(start),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(eth),
+ /* K5 */ be_nested_str_weak(hostname_eth),
+ /* K6 */ be_nested_str_weak(replace),
+ /* K7 */ be_nested_str_weak(find),
+ /* K8 */ be_nested_str_weak(mac),
+ /* K9 */ be_nested_str_weak(_X3A),
+ /* K10 */ be_nested_str_weak(),
+ /* K11 */ be_nested_str_weak(ipv4only),
+ /* K12 */ be_nested_str_weak(add_hostname),
+ /* K13 */ be_nested_str_weak(ip6local),
+ /* K14 */ be_nested_str_weak(ip),
+ /* K15 */ be_nested_str_weak(ip6),
+ /* K16 */ be_nested_str_weak(log),
+ /* K17 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29),
+ /* K18 */ be_const_int(3),
+ /* K19 */ be_nested_str_weak(wifi),
+ /* K20 */ be_nested_str_weak(hostname_wifi),
+ /* K21 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27),
+ /* K22 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K23 */ be_nested_str_weak(_X7C),
+ /* K24 */ be_const_int(2),
+ /* K25 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics),
+ }),
+ be_str_weak(_mdns_announce_hostname),
+ &be_const_str_solidified,
+ ( &(const binstruction[140]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40E0200, // 0001 IMPORT R3 K1
+ 0x8C100502, // 0002 GETMET R4 R2 K2
+ 0x7C100200, // 0003 CALL R4 1
+ 0xA8020072, // 0004 EXBLK 0 #0078
+ 0x78060030, // 0005 JMPF R1 #0037
+ 0xB8120600, // 0006 GETNGBL R4 K3
+ 0x8C100904, // 0007 GETMET R4 R4 K4
+ 0x7C100200, // 0008 CALL R4 1
+ 0x8C140706, // 0009 GETMET R5 R3 K6
+ 0x8C1C0907, // 000A GETMET R7 R4 K7
+ 0x58240008, // 000B LDCONST R9 K8
+ 0x7C1C0400, // 000C CALL R7 2
+ 0x58200009, // 000D LDCONST R8 K9
+ 0x5824000A, // 000E LDCONST R9 K10
+ 0x7C140800, // 000F CALL R5 4
+ 0x90020A05, // 0010 SETMBR R0 K5 R5
+ 0x8814010B, // 0011 GETMBR R5 R0 K11
+ 0x7416000F, // 0012 JMPT R5 #0023
+ 0x8C14050C, // 0013 GETMET R5 R2 K12
+ 0x881C0105, // 0014 GETMBR R7 R0 K5
+ 0x8C200907, // 0015 GETMET R8 R4 K7
+ 0x5828000D, // 0016 LDCONST R10 K13
+ 0x582C000A, // 0017 LDCONST R11 K10
+ 0x7C200600, // 0018 CALL R8 3
+ 0x8C240907, // 0019 GETMET R9 R4 K7
+ 0x582C000E, // 001A LDCONST R11 K14
+ 0x5830000A, // 001B LDCONST R12 K10
+ 0x7C240600, // 001C CALL R9 3
+ 0x8C280907, // 001D GETMET R10 R4 K7
+ 0x5830000F, // 001E LDCONST R12 K15
+ 0x5834000A, // 001F LDCONST R13 K10
+ 0x7C280600, // 0020 CALL R10 3
+ 0x7C140A00, // 0021 CALL R5 5
+ 0x70020012, // 0022 JMP #0036
+ 0xB8160600, // 0023 GETNGBL R5 K3
+ 0x8C140B10, // 0024 GETMET R5 R5 K16
+ 0x601C0018, // 0025 GETGBL R7 G24
+ 0x58200011, // 0026 LDCONST R8 K17
+ 0x88240105, // 0027 GETMBR R9 R0 K5
+ 0x8C280907, // 0028 GETMET R10 R4 K7
+ 0x5830000E, // 0029 LDCONST R12 K14
+ 0x5834000A, // 002A LDCONST R13 K10
+ 0x7C280600, // 002B CALL R10 3
+ 0x7C1C0600, // 002C CALL R7 3
+ 0x58200012, // 002D LDCONST R8 K18
+ 0x7C140600, // 002E CALL R5 3
+ 0x8C14050C, // 002F GETMET R5 R2 K12
+ 0x881C0105, // 0030 GETMBR R7 R0 K5
+ 0x8C200907, // 0031 GETMET R8 R4 K7
+ 0x5828000E, // 0032 LDCONST R10 K14
+ 0x582C000A, // 0033 LDCONST R11 K10
+ 0x7C200600, // 0034 CALL R8 3
+ 0x7C140600, // 0035 CALL R5 3
+ 0x7002002F, // 0036 JMP #0067
+ 0xB8120600, // 0037 GETNGBL R4 K3
+ 0x8C100913, // 0038 GETMET R4 R4 K19
+ 0x7C100200, // 0039 CALL R4 1
+ 0x8C140706, // 003A GETMET R5 R3 K6
+ 0x8C1C0907, // 003B GETMET R7 R4 K7
+ 0x58240008, // 003C LDCONST R9 K8
+ 0x7C1C0400, // 003D CALL R7 2
+ 0x58200009, // 003E LDCONST R8 K9
+ 0x5824000A, // 003F LDCONST R9 K10
+ 0x7C140800, // 0040 CALL R5 4
+ 0x90022805, // 0041 SETMBR R0 K20 R5
+ 0x8814010B, // 0042 GETMBR R5 R0 K11
+ 0x7416000F, // 0043 JMPT R5 #0054
+ 0x8C14050C, // 0044 GETMET R5 R2 K12
+ 0x881C0114, // 0045 GETMBR R7 R0 K20
+ 0x8C200907, // 0046 GETMET R8 R4 K7
+ 0x5828000D, // 0047 LDCONST R10 K13
+ 0x582C000A, // 0048 LDCONST R11 K10
+ 0x7C200600, // 0049 CALL R8 3
+ 0x8C240907, // 004A GETMET R9 R4 K7
+ 0x582C000E, // 004B LDCONST R11 K14
+ 0x5830000A, // 004C LDCONST R12 K10
+ 0x7C240600, // 004D CALL R9 3
+ 0x8C280907, // 004E GETMET R10 R4 K7
+ 0x5830000F, // 004F LDCONST R12 K15
+ 0x5834000A, // 0050 LDCONST R13 K10
+ 0x7C280600, // 0051 CALL R10 3
+ 0x7C140A00, // 0052 CALL R5 5
+ 0x70020012, // 0053 JMP #0067
+ 0xB8160600, // 0054 GETNGBL R5 K3
+ 0x8C140B10, // 0055 GETMET R5 R5 K16
+ 0x601C0018, // 0056 GETGBL R7 G24
+ 0x58200011, // 0057 LDCONST R8 K17
+ 0x88240105, // 0058 GETMBR R9 R0 K5
+ 0x8C280907, // 0059 GETMET R10 R4 K7
+ 0x5830000E, // 005A LDCONST R12 K14
+ 0x5834000A, // 005B LDCONST R13 K10
+ 0x7C280600, // 005C CALL R10 3
+ 0x7C1C0600, // 005D CALL R7 3
+ 0x58200012, // 005E LDCONST R8 K18
+ 0x7C140600, // 005F CALL R5 3
+ 0x8C14050C, // 0060 GETMET R5 R2 K12
+ 0x881C0114, // 0061 GETMBR R7 R0 K20
+ 0x8C200907, // 0062 GETMET R8 R4 K7
+ 0x5828000E, // 0063 LDCONST R10 K14
+ 0x582C000A, // 0064 LDCONST R11 K10
+ 0x7C200600, // 0065 CALL R8 3
+ 0x7C140600, // 0066 CALL R5 3
+ 0xB8120600, // 0067 GETNGBL R4 K3
+ 0x8C100910, // 0068 GETMET R4 R4 K16
+ 0x60180018, // 0069 GETGBL R6 G24
+ 0x581C0015, // 006A LDCONST R7 K21
+ 0x78060001, // 006B JMPF R1 #006E
+ 0x58200004, // 006C LDCONST R8 K4
+ 0x70020000, // 006D JMP #006F
+ 0x58200013, // 006E LDCONST R8 K19
+ 0x78060001, // 006F JMPF R1 #0072
+ 0x88240105, // 0070 GETMBR R9 R0 K5
+ 0x70020000, // 0071 JMP #0073
+ 0x88240114, // 0072 GETMBR R9 R0 K20
+ 0x7C180600, // 0073 CALL R6 3
+ 0x581C0012, // 0074 LDCONST R7 K18
+ 0x7C100600, // 0075 CALL R4 3
+ 0xA8040001, // 0076 EXBLK 1 1
+ 0x70020010, // 0077 JMP #0089
+ 0xAC100002, // 0078 CATCH R4 0 2
+ 0x7002000D, // 0079 JMP #0088
+ 0xB81A0600, // 007A GETNGBL R6 K3
+ 0x8C180D10, // 007B GETMET R6 R6 K16
+ 0x60200008, // 007C GETGBL R8 G8
+ 0x5C240800, // 007D MOVE R9 R4
+ 0x7C200200, // 007E CALL R8 1
+ 0x00222C08, // 007F ADD R8 K22 R8
+ 0x00201117, // 0080 ADD R8 R8 K23
+ 0x60240008, // 0081 GETGBL R9 G8
+ 0x5C280A00, // 0082 MOVE R10 R5
+ 0x7C240200, // 0083 CALL R9 1
+ 0x00201009, // 0084 ADD R8 R8 R9
+ 0x58240018, // 0085 LDCONST R9 K24
+ 0x7C180600, // 0086 CALL R6 3
+ 0x70020000, // 0087 JMP #0089
+ 0xB0080000, // 0088 RAISE 2 R0 R0
+ 0x8C100119, // 0089 GETMET R4 R0 K25
+ 0x7C100200, // 008A CALL R4 1
+ 0x80000000, // 008B 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 */
+ 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(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: 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: 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: 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: 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: 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
+ 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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: conf_to_log
+********************************************************************/
+be_local_closure(Matter_Device_conf_to_log, /* 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: mdns_remove_op_discovery_all_fabrics
+********************************************************************/
+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: _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: 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: register_plugin_class
+********************************************************************/
+be_local_closure(Matter_Device_register_plugin_class, /* 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(introspect),
+ /* K1 */ be_nested_str_weak(get),
+ /* K2 */ be_nested_str_weak(TYPE),
+ /* K3 */ be_nested_str_weak(plugins_classes),
+ }),
+ be_str_weak(register_plugin_class),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x58180002, // 0003 LDCONST R6 K2
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x780E0001, // 0005 JMPF R3 #0008
+ 0x88100103, // 0006 GETMBR R4 R0 K3
+ 0x98100601, // 0007 SETIDX R4 R3 R1
+ 0x80000000, // 0008 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: register_native_classes
+********************************************************************/
+be_local_closure(Matter_Device_register_native_classes, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 3, /* 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(string),
+ /* K2 */ be_nested_str_weak(members),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(get),
+ /* K5 */ be_nested_str_weak(class),
+ /* K6 */ be_nested_str_weak(find),
+ /* K7 */ be_nested_str_weak(Plugin_),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str_weak(register_plugin_class),
+ /* K10 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(register_native_classes),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xA4120200, // 0001 IMPORT R4 K1
+ 0x60140010, // 0002 GETGBL R5 G16
+ 0x8C180702, // 0003 GETMET R6 R3 K2
+ 0xB8220600, // 0004 GETNGBL R8 K3
+ 0x7C180400, // 0005 CALL R6 2
+ 0x7C140200, // 0006 CALL R5 1
+ 0xA8020014, // 0007 EXBLK 0 #001D
+ 0x5C180A00, // 0008 MOVE R6 R5
+ 0x7C180000, // 0009 CALL R6 0
+ 0x8C1C0704, // 000A GETMET R7 R3 K4
+ 0xB8260600, // 000B GETNGBL R9 K3
+ 0x5C280C00, // 000C MOVE R10 R6
+ 0x7C1C0600, // 000D CALL R7 3
+ 0x60200004, // 000E GETGBL R8 G4
+ 0x5C240E00, // 000F MOVE R9 R7
+ 0x7C200200, // 0010 CALL R8 1
+ 0x1C201105, // 0011 EQ R8 R8 K5
+ 0x78220008, // 0012 JMPF R8 #001C
+ 0x8C200906, // 0013 GETMET R8 R4 K6
+ 0x5C280C00, // 0014 MOVE R10 R6
+ 0x582C0007, // 0015 LDCONST R11 K7
+ 0x7C200600, // 0016 CALL R8 3
+ 0x1C201108, // 0017 EQ R8 R8 K8
+ 0x78220002, // 0018 JMPF R8 #001C
+ 0x8C200109, // 0019 GETMET R8 R0 K9
+ 0x5C280E00, // 001A MOVE R10 R7
+ 0x7C200400, // 001B CALL R8 2
+ 0x7001FFEA, // 001C JMP #0008
+ 0x5814000A, // 001D LDCONST R5 K10
+ 0xAC140200, // 001E CATCH R5 1 0
+ 0xB0080000, // 001F RAISE 2 R0 R0
+ 0x80000000, // 0020 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(Matter_Device_start, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* 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(_trigger_read_sensors),
+ }),
+ 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[ 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),
+ }),
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* 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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** 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: 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: _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: mdns_announce_PASE
********************************************************************/
@@ -1287,122 +5072,11 @@ be_local_closure(Matter_Device_mdns_announce_PASE, /* name */
/********************************************************************
-** Solidified function: register_http_remote
+** Solidified function: save_param
********************************************************************/
-be_local_closure(Matter_Device_register_http_remote, /* name */
+be_local_closure(Matter_Device_save_param, /* 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
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** 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: event_fabrics_saved
-********************************************************************/
-be_local_closure(Matter_Device_event_fabrics_saved, /* name */
- be_nested_proto(
- 3, /* nstack */
+ 10, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1410,28 +5084,123 @@ be_local_closure(Matter_Device_event_fabrics_saved, /* name */
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),
+ ( &(const bvalue[30]) { /* constants */
+ /* K0 */ be_nested_str_weak(json),
+ /* K1 */ be_nested_str_weak(update_remotes_info),
+ /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i),
+ /* K3 */ be_nested_str_weak(root_discriminator),
+ /* K4 */ be_nested_str_weak(root_passcode),
+ /* K5 */ be_nested_str_weak(ipv4only),
+ /* K6 */ be_nested_str_weak(true),
+ /* K7 */ be_nested_str_weak(false),
+ /* K8 */ be_nested_str_weak(disable_bridge_mode),
+ /* K9 */ be_nested_str_weak(next_ep),
+ /* K10 */ be_nested_str_weak(plugins_persist),
+ /* K11 */ be_nested_str_weak(_X2C_X22config_X22_X3A),
+ /* K12 */ be_nested_str_weak(dump),
+ /* K13 */ be_nested_str_weak(plugins_config),
+ /* K14 */ be_nested_str_weak(plugins_config_remotes),
+ /* K15 */ be_const_int(0),
+ /* K16 */ be_nested_str_weak(_X2C_X22remotes_X22_X3A),
+ /* K17 */ be_nested_str_weak(_X7D),
+ /* K18 */ be_nested_str_weak(FILENAME),
+ /* K19 */ be_nested_str_weak(w),
+ /* K20 */ be_nested_str_weak(write),
+ /* K21 */ be_nested_str_weak(close),
+ /* K22 */ be_nested_str_weak(tasmota),
+ /* K23 */ be_nested_str_weak(log),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s),
+ /* K25 */ be_nested_str_weak(_X20and_X20configuration),
+ /* K26 */ be_nested_str_weak(),
+ /* K27 */ be_const_int(2),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
+ /* K29 */ be_nested_str_weak(_X7C),
}),
- be_str_weak(event_fabrics_saved),
+ be_str_weak(save_param),
&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
+ ( &(const binstruction[82]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x8C080101, // 0001 GETMET R2 R0 K1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x60080018, // 0003 GETGBL R2 G24
+ 0x580C0002, // 0004 LDCONST R3 K2
+ 0x88100103, // 0005 GETMBR R4 R0 K3
+ 0x88140104, // 0006 GETMBR R5 R0 K4
+ 0x88180105, // 0007 GETMBR R6 R0 K5
+ 0x781A0001, // 0008 JMPF R6 #000B
+ 0x58180006, // 0009 LDCONST R6 K6
+ 0x70020000, // 000A JMP #000C
+ 0x58180007, // 000B LDCONST R6 K7
+ 0x881C0108, // 000C GETMBR R7 R0 K8
+ 0x781E0001, // 000D JMPF R7 #0010
+ 0x581C0006, // 000E LDCONST R7 K6
+ 0x70020000, // 000F JMP #0011
+ 0x581C0007, // 0010 LDCONST R7 K7
+ 0x88200109, // 0011 GETMBR R8 R0 K9
+ 0x7C080C00, // 0012 CALL R2 6
+ 0x880C010A, // 0013 GETMBR R3 R0 K10
+ 0x780E000E, // 0014 JMPF R3 #0024
+ 0x0008050B, // 0015 ADD R2 R2 K11
+ 0x8C0C030C, // 0016 GETMET R3 R1 K12
+ 0x8814010D, // 0017 GETMBR R5 R0 K13
+ 0x7C0C0400, // 0018 CALL R3 2
+ 0x00080403, // 0019 ADD R2 R2 R3
+ 0x600C000C, // 001A GETGBL R3 G12
+ 0x8810010E, // 001B GETMBR R4 R0 K14
+ 0x7C0C0200, // 001C CALL R3 1
+ 0x240C070F, // 001D GT R3 R3 K15
+ 0x780E0004, // 001E JMPF R3 #0024
+ 0x00080510, // 001F ADD R2 R2 K16
+ 0x8C0C030C, // 0020 GETMET R3 R1 K12
+ 0x8814010E, // 0021 GETMBR R5 R0 K14
+ 0x7C0C0400, // 0022 CALL R3 2
+ 0x00080403, // 0023 ADD R2 R2 R3
+ 0x00080511, // 0024 ADD R2 R2 K17
+ 0xA8020018, // 0025 EXBLK 0 #003F
+ 0x600C0011, // 0026 GETGBL R3 G17
+ 0x88100112, // 0027 GETMBR R4 R0 K18
+ 0x58140013, // 0028 LDCONST R5 K19
+ 0x7C0C0400, // 0029 CALL R3 2
+ 0x8C100714, // 002A GETMET R4 R3 K20
+ 0x5C180400, // 002B MOVE R6 R2
+ 0x7C100400, // 002C CALL R4 2
+ 0x8C100715, // 002D GETMET R4 R3 K21
+ 0x7C100200, // 002E CALL R4 1
+ 0xB8122C00, // 002F GETNGBL R4 K22
+ 0x8C100917, // 0030 GETMET R4 R4 K23
+ 0x60180018, // 0031 GETGBL R6 G24
+ 0x581C0018, // 0032 LDCONST R7 K24
+ 0x8820010A, // 0033 GETMBR R8 R0 K10
+ 0x78220001, // 0034 JMPF R8 #0037
+ 0x58200019, // 0035 LDCONST R8 K25
+ 0x70020000, // 0036 JMP #0038
+ 0x5820001A, // 0037 LDCONST R8 K26
+ 0x7C180400, // 0038 CALL R6 2
+ 0x581C001B, // 0039 LDCONST R7 K27
+ 0x7C100600, // 003A CALL R4 3
+ 0xA8040001, // 003B EXBLK 1 1
+ 0x80040400, // 003C RET 1 R2
+ 0xA8040001, // 003D EXBLK 1 1
+ 0x70020011, // 003E JMP #0051
+ 0xAC0C0002, // 003F CATCH R3 0 2
+ 0x7002000E, // 0040 JMP #0050
+ 0xB8162C00, // 0041 GETNGBL R5 K22
+ 0x8C140B17, // 0042 GETMET R5 R5 K23
+ 0x601C0008, // 0043 GETGBL R7 G8
+ 0x5C200600, // 0044 MOVE R8 R3
+ 0x7C1C0200, // 0045 CALL R7 1
+ 0x001E3807, // 0046 ADD R7 K28 R7
+ 0x001C0F1D, // 0047 ADD R7 R7 K29
+ 0x60200008, // 0048 GETGBL R8 G8
+ 0x5C240800, // 0049 MOVE R9 R4
+ 0x7C200200, // 004A CALL R8 1
+ 0x001C0E08, // 004B ADD R7 R7 R8
+ 0x5820001B, // 004C LDCONST R8 K27
+ 0x7C140600, // 004D CALL R5 3
+ 0x80040400, // 004E RET 1 R2
+ 0x70020000, // 004F JMP #0051
+ 0xB0080000, // 0050 RAISE 2 R0 R0
+ 0x80000000, // 0051 RET 0
})
)
);
@@ -1439,354 +5208,11 @@ be_local_closure(Matter_Device_event_fabrics_saved, /* name */
/********************************************************************
-** Solidified function: register_commands
+** Solidified function: start_mdns_announce_hostnames
********************************************************************/
-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*[ 1]) {
- 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
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(add_cmd),
- /* K2 */ be_nested_str_weak(MtrJoin),
- }),
- be_str_weak(register_commands),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* 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
- 0xA0000000, // 0005 CLOSE R0
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_commissioning_complete_deferred
-********************************************************************/
-be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */
+be_local_closure(Matter_Device_start_mdns_announce_hostnames, /* 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: _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: 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: 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: init
-********************************************************************/
-be_local_closure(Matter_Device_init, /* name */
- be_nested_proto(
- 7, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1805,24 +5231,25 @@ be_local_closure(Matter_Device_init, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(start),
+ /* 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_start),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
}),
be_str_weak(_anonymous_),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
+ ( &(const binstruction[10]) { /* 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
+ 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(
@@ -1837,181 +5264,75 @@ be_local_closure(Matter_Device_init, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(start),
+ /* 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_start),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
}),
be_str_weak(_anonymous_),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
+ ( &(const binstruction[10]) { /* 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
+ 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[43]) { /* 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(started),
- /* K7 */ be_nested_str_weak(tick),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(plugins),
- /* K10 */ be_nested_str_weak(plugins_persist),
- /* K11 */ be_nested_str_weak(plugins_classes),
- /* K12 */ be_nested_str_weak(plugins_config_remotes),
- /* K13 */ be_nested_str_weak(register_native_classes),
- /* 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(load_param),
- /* K26 */ be_nested_str_weak(sessions),
- /* K27 */ be_nested_str_weak(Session_Store),
- /* K28 */ be_nested_str_weak(load_fabrics),
- /* K29 */ be_nested_str_weak(message_handler),
- /* K30 */ be_nested_str_weak(MessageHandler),
- /* K31 */ be_nested_str_weak(ui),
- /* K32 */ be_nested_str_weak(wifi),
- /* K33 */ be_nested_str_weak(up),
- /* K34 */ be_nested_str_weak(eth),
- /* K35 */ be_nested_str_weak(start),
- /* K36 */ be_nested_str_weak(add_rule),
- /* K37 */ be_nested_str_weak(Wifi_X23Connected),
- /* K38 */ be_nested_str_weak(matter_start),
- /* K39 */ be_nested_str_weak(Eth_X23Connected),
- /* K40 */ be_nested_str_weak(_init_basic_commissioning),
- /* K41 */ be_nested_str_weak(add_driver),
- /* K42 */ be_nested_str_weak(register_commands),
+ ( &(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(init),
+ be_str_weak(start_mdns_announce_hostnames),
&be_const_str_solidified,
- ( &(const binstruction[105]) { /* 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
- 0x50080000, // 000C LDBOOL R2 0 0
- 0x90020C02, // 000D SETMBR R0 K6 R2
- 0x90020F08, // 000E SETMBR R0 K7 K8
- 0x60080012, // 000F GETGBL R2 G18
- 0x7C080000, // 0010 CALL R2 0
- 0x90021202, // 0011 SETMBR R0 K9 R2
- 0x50080000, // 0012 LDBOOL R2 0 0
- 0x90021402, // 0013 SETMBR R0 K10 R2
- 0x60080013, // 0014 GETGBL R2 G19
- 0x7C080000, // 0015 CALL R2 0
- 0x90021602, // 0016 SETMBR R0 K11 R2
- 0x60080013, // 0017 GETGBL R2 G19
- 0x7C080000, // 0018 CALL R2 0
- 0x90021802, // 0019 SETMBR R0 K12 R2
- 0x8C08010D, // 001A GETMET R2 R0 K13
- 0x7C080200, // 001B CALL R2 1
- 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
- 0x8C080119, // 0029 GETMET R2 R0 K25
- 0x7C080200, // 002A CALL R2 1
- 0xB80A0600, // 002B GETNGBL R2 K3
- 0x8C08051B, // 002C GETMET R2 R2 K27
- 0x5C100000, // 002D MOVE R4 R0
- 0x7C080400, // 002E CALL R2 2
- 0x90023402, // 002F SETMBR R0 K26 R2
- 0x8808011A, // 0030 GETMBR R2 R0 K26
- 0x8C08051C, // 0031 GETMET R2 R2 K28
- 0x7C080200, // 0032 CALL R2 1
- 0xB80A0600, // 0033 GETNGBL R2 K3
- 0x8C08051E, // 0034 GETMET R2 R2 K30
- 0x5C100000, // 0035 MOVE R4 R0
- 0x7C080400, // 0036 CALL R2 2
- 0x90023A02, // 0037 SETMBR R0 K29 R2
- 0xB80A0600, // 0038 GETNGBL R2 K3
- 0x8C080505, // 0039 GETMET R2 R2 K5
- 0x5C100000, // 003A MOVE R4 R0
- 0x7C080400, // 003B CALL R2 2
- 0x90023E02, // 003C SETMBR R0 K31 R2
- 0xB80A0200, // 003D GETNGBL R2 K1
- 0x8C080520, // 003E GETMET R2 R2 K32
- 0x7C080200, // 003F CALL R2 1
- 0x94080521, // 0040 GETIDX R2 R2 K33
- 0x740A0004, // 0041 JMPT R2 #0047
- 0xB80A0200, // 0042 GETNGBL R2 K1
- 0x8C080522, // 0043 GETMET R2 R2 K34
- 0x7C080200, // 0044 CALL R2 1
- 0x94080521, // 0045 GETIDX R2 R2 K33
- 0x780A0001, // 0046 JMPF R2 #0049
- 0x8C080123, // 0047 GETMET R2 R0 K35
- 0x7C080200, // 0048 CALL R2 1
- 0xB80A0200, // 0049 GETNGBL R2 K1
- 0x8C080520, // 004A GETMET R2 R2 K32
- 0x7C080200, // 004B CALL R2 1
- 0x94080521, // 004C GETIDX R2 R2 K33
- 0x740A0005, // 004D JMPT R2 #0054
- 0xB80A0200, // 004E GETNGBL R2 K1
- 0x8C080524, // 004F GETMET R2 R2 K36
- 0x58100025, // 0050 LDCONST R4 K37
- 0x84140000, // 0051 CLOSURE R5 P0
- 0x58180026, // 0052 LDCONST R6 K38
- 0x7C080800, // 0053 CALL R2 4
- 0xB80A0200, // 0054 GETNGBL R2 K1
- 0x8C080522, // 0055 GETMET R2 R2 K34
- 0x7C080200, // 0056 CALL R2 1
- 0x94080521, // 0057 GETIDX R2 R2 K33
- 0x740A0005, // 0058 JMPT R2 #005F
- 0xB80A0200, // 0059 GETNGBL R2 K1
- 0x8C080524, // 005A GETMET R2 R2 K36
- 0x58100027, // 005B LDCONST R4 K39
- 0x84140001, // 005C CLOSURE R5 P1
- 0x58180026, // 005D LDCONST R6 K38
- 0x7C080800, // 005E CALL R2 4
- 0x8C080128, // 005F GETMET R2 R0 K40
- 0x7C080200, // 0060 CALL R2 1
- 0xB80A0200, // 0061 GETNGBL R2 K1
- 0x8C080529, // 0062 GETMET R2 R2 K41
- 0x5C100000, // 0063 MOVE R4 R0
- 0x7C080400, // 0064 CALL R2 2
- 0x8C08012A, // 0065 GETMET R2 R0 K42
- 0x7C080200, // 0066 CALL R2 1
- 0xA0000000, // 0067 CLOSE R0
- 0x80000000, // 0068 RET 0
+ ( &(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
})
)
);
@@ -2019,11 +5340,11 @@ be_local_closure(Matter_Device_init, /* name */
/********************************************************************
-** Solidified function: k2l
+** Solidified function: k2l_num
********************************************************************/
-be_local_closure(Matter_Device_k2l, /* name */
+be_local_closure(Matter_Device_k2l_num, /* name */
be_nested_proto(
- 8, /* nstack */
+ 9, /* nstack */
1, /* argc */
4, /* varg */
0, /* has upvals */
@@ -2039,9 +5360,9 @@ be_local_closure(Matter_Device_k2l, /* name */
/* K4 */ be_const_int(1),
/* K5 */ be_const_int(0),
}),
- be_str_weak(k2l),
+ be_str_weak(k2l_num),
&be_const_str_solidified,
- ( &(const binstruction[50]) { /* code */
+ ( &(const binstruction[52]) { /* code */
0x58040000, // 0000 LDCONST R1 K0
0x60080012, // 0001 GETGBL R2 G18
0x7C080000, // 0002 CALL R2 0
@@ -2053,45 +5374,47 @@ be_local_closure(Matter_Device_k2l, /* name */
0x8C100101, // 0008 GETMET R4 R0 K1
0x7C100200, // 0009 CALL R4 1
0x7C0C0200, // 000A CALL R3 1
- 0xA8020005, // 000B EXBLK 0 #0012
+ 0xA8020007, // 000B EXBLK 0 #0014
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
+ 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
})
)
);
@@ -2099,11 +5422,11 @@ be_local_closure(Matter_Device_k2l, /* name */
/********************************************************************
-** Solidified function: adjust_next_ep
+** Solidified function: autoconf_device
********************************************************************/
-be_local_closure(Matter_Device_adjust_next_ep, /* name */
+be_local_closure(Matter_Device_autoconf_device, /* name */
be_nested_proto(
- 5, /* nstack */
+ 6, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -2111,37 +5434,140 @@ be_local_closure(Matter_Device_adjust_next_ep, /* name */
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),
+ ( &(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(adjust_next_ep),
+ be_str_weak(autoconf_device),
&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
+ ( &(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
- 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
+ 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: 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
})
)
);
@@ -2309,3354 +5735,28 @@ be_local_closure(Matter_Device_autoconf_sensors_list, /* name */
/*******************************************************************/
-/********************************************************************
-** 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
- 0x00040301, // 0001 ADD R1 R1 K1
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x80000000, // 0003 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: 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: 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: 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: 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: remove_fabric
-********************************************************************/
-be_local_closure(Matter_Device_remove_fabric, /* 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[20]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(find_children_fabrics),
- /* K2 */ be_nested_str_weak(get_fabric_index),
- /* K3 */ be_nested_str_weak(find_fabric_by_index),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(log),
- /* K6 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20),
- /* K7 */ be_nested_str_weak(get_fabric_id),
- /* K8 */ be_nested_str_weak(copy),
- /* K9 */ be_nested_str_weak(reverse),
- /* K10 */ be_nested_str_weak(tohex),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(message_handler),
- /* K13 */ be_nested_str_weak(im),
- /* K14 */ be_nested_str_weak(subs_shop),
- /* K15 */ be_nested_str_weak(remove_by_fabric),
- /* K16 */ be_nested_str_weak(mdns_remove_op_discovery),
- /* K17 */ be_nested_str_weak(remove_fabric),
- /* K18 */ be_nested_str_weak(stop_iteration),
- /* K19 */ be_nested_str_weak(save_fabrics),
- }),
- be_str_weak(remove_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[56]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x8C100302, // 0002 GETMET R4 R1 K2
- 0x7C100200, // 0003 CALL R4 1
- 0x7C080400, // 0004 CALL R2 2
- 0x4C0C0000, // 0005 LDNIL R3
- 0x1C0C0403, // 0006 EQ R3 R2 R3
- 0x780E0000, // 0007 JMPF R3 #0009
- 0x80000600, // 0008 RET 0
- 0x600C0010, // 0009 GETGBL R3 G16
- 0x5C100400, // 000A MOVE R4 R2
- 0x7C0C0200, // 000B CALL R3 1
- 0xA8020023, // 000C EXBLK 0 #0031
- 0x5C100600, // 000D MOVE R4 R3
- 0x7C100000, // 000E CALL R4 0
- 0x88140100, // 000F GETMBR R5 R0 K0
- 0x8C140B03, // 0010 GETMET R5 R5 K3
- 0x5C1C0800, // 0011 MOVE R7 R4
- 0x7C140400, // 0012 CALL R5 2
- 0x4C180000, // 0013 LDNIL R6
- 0x20180A06, // 0014 NE R6 R5 R6
- 0x781A0019, // 0015 JMPF R6 #0030
- 0xB81A0800, // 0016 GETNGBL R6 K4
- 0x8C180D05, // 0017 GETMET R6 R6 K5
- 0x8C200B07, // 0018 GETMET R8 R5 K7
- 0x7C200200, // 0019 CALL R8 1
- 0x8C201108, // 001A GETMET R8 R8 K8
- 0x7C200200, // 001B CALL R8 1
- 0x8C201109, // 001C GETMET R8 R8 K9
- 0x7C200200, // 001D CALL R8 1
- 0x8C20110A, // 001E GETMET R8 R8 K10
- 0x7C200200, // 001F CALL R8 1
- 0x00220C08, // 0020 ADD R8 K6 R8
- 0x5824000B, // 0021 LDCONST R9 K11
- 0x7C180600, // 0022 CALL R6 3
- 0x8818010C, // 0023 GETMBR R6 R0 K12
- 0x88180D0D, // 0024 GETMBR R6 R6 K13
- 0x88180D0E, // 0025 GETMBR R6 R6 K14
- 0x8C180D0F, // 0026 GETMET R6 R6 K15
- 0x5C200A00, // 0027 MOVE R8 R5
- 0x7C180400, // 0028 CALL R6 2
- 0x8C180110, // 0029 GETMET R6 R0 K16
- 0x5C200A00, // 002A MOVE R8 R5
- 0x7C180400, // 002B CALL R6 2
- 0x88180100, // 002C GETMBR R6 R0 K0
- 0x8C180D11, // 002D GETMET R6 R6 K17
- 0x5C200A00, // 002E MOVE R8 R5
- 0x7C180400, // 002F CALL R6 2
- 0x7001FFDB, // 0030 JMP #000D
- 0x580C0012, // 0031 LDCONST R3 K18
- 0xAC0C0200, // 0032 CATCH R3 1 0
- 0xB0080000, // 0033 RAISE 2 R0 R0
- 0x880C0100, // 0034 GETMBR R3 R0 K0
- 0x8C0C0713, // 0035 GETMET R3 R3 K19
- 0x7C0C0200, // 0036 CALL R3 1
- 0x80000000, // 0037 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: 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: 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(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: 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: 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: 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[17]) { /* 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(tasmota),
- /* K11 */ be_nested_str_weak(log),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20),
- /* K13 */ be_nested_str_weak(addr),
- /* K14 */ be_const_int(3),
- /* K15 */ be_nested_str_weak(close),
- /* K16 */ be_nested_str_weak(remove),
- }),
- be_str_weak(clean_remotes),
- &be_const_str_solidified,
- ( &(const binstruction[66]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x780A003D, // 0002 JMPF R2 #0041
- 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
- 0x600C0010, // 0027 GETGBL R3 G16
- 0x8C100509, // 0028 GETMET R4 R2 K9
- 0x7C100200, // 0029 CALL R4 1
- 0x7C0C0200, // 002A CALL R3 1
- 0xA8020011, // 002B EXBLK 0 #003E
- 0x5C100600, // 002C MOVE R4 R3
- 0x7C100000, // 002D CALL R4 0
- 0x94140404, // 002E GETIDX R5 R2 R4
- 0x1C140B02, // 002F EQ R5 R5 K2
- 0x7816000B, // 0030 JMPF R5 #003D
- 0xB8161400, // 0031 GETNGBL R5 K10
- 0x8C140B0B, // 0032 GETMET R5 R5 K11
- 0x881C090D, // 0033 GETMBR R7 R4 K13
- 0x001E1807, // 0034 ADD R7 K12 R7
- 0x5820000E, // 0035 LDCONST R8 K14
- 0x7C140600, // 0036 CALL R5 3
- 0x8C14090F, // 0037 GETMET R5 R4 K15
- 0x7C140200, // 0038 CALL R5 1
- 0x88140101, // 0039 GETMBR R5 R0 K1
- 0x8C140B10, // 003A GETMET R5 R5 K16
- 0x5C1C0800, // 003B MOVE R7 R4
- 0x7C140400, // 003C CALL R5 2
- 0x7001FFED, // 003D JMP #002C
- 0x580C0003, // 003E LDCONST R3 K3
- 0xAC0C0200, // 003F CATCH R3 1 0
- 0xB0080000, // 0040 RAISE 2 R0 R0
- 0x80000000, // 0041 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_announce_op_discovery_all_fabrics
-********************************************************************/
-be_local_closure(Matter_Device_mdns_announce_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_announce_op_discovery),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(mdns_announce_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: _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: 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: 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: 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: start
-********************************************************************/
-be_local_closure(Matter_Device_start, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* 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(_trigger_read_sensors),
- }),
- 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[ 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),
- }),
- be_str_weak(start),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* 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
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: bridge_add_endpoint
-********************************************************************/
-be_local_closure(Matter_Device_bridge_add_endpoint, /* name */
- be_nested_proto(
- 17, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_classes),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
- /* K5 */ be_nested_str_weak(_X27_X20skipping),
- /* K6 */ be_const_int(3),
- /* K7 */ be_nested_str_weak(next_ep),
- /* K8 */ be_nested_str_weak(plugins),
- /* K9 */ be_nested_str_weak(push),
- /* K10 */ be_nested_str_weak(type),
- /* K11 */ be_nested_str_weak(keys),
- /* K12 */ be_nested_str_weak(stop_iteration),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s),
- /* K14 */ be_nested_str_weak(conf_to_log),
- /* K15 */ be_const_int(2),
- /* K16 */ be_nested_str_weak(plugins_config),
- /* K17 */ be_nested_str_weak(plugins_persist),
- /* K18 */ be_const_int(1),
- /* K19 */ be_nested_str_weak(save_param),
- /* K20 */ be_nested_str_weak(signal_endpoints_changed),
- }),
- be_str_weak(bridge_add_endpoint),
- &be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x4C100000, // 0004 LDNIL R4
- 0x1C100604, // 0005 EQ R4 R3 R4
- 0x78120009, // 0006 JMPF R4 #0011
- 0xB8120400, // 0007 GETNGBL R4 K2
- 0x8C100903, // 0008 GETMET R4 R4 K3
- 0x60180008, // 0009 GETGBL R6 G8
- 0x5C1C0200, // 000A MOVE R7 R1
- 0x7C180200, // 000B CALL R6 1
- 0x001A0806, // 000C ADD R6 K4 R6
- 0x00180D05, // 000D ADD R6 R6 K5
- 0x581C0006, // 000E LDCONST R7 K6
- 0x7C100600, // 000F CALL R4 3
- 0x80000800, // 0010 RET 0
- 0x88100107, // 0011 GETMBR R4 R0 K7
- 0x60140008, // 0012 GETGBL R5 G8
- 0x5C180800, // 0013 MOVE R6 R4
- 0x7C140200, // 0014 CALL R5 1
- 0x5C180600, // 0015 MOVE R6 R3
- 0x5C1C0000, // 0016 MOVE R7 R0
- 0x5C200800, // 0017 MOVE R8 R4
- 0x5C240400, // 0018 MOVE R9 R2
- 0x7C180600, // 0019 CALL R6 3
- 0x881C0108, // 001A GETMBR R7 R0 K8
- 0x8C1C0F09, // 001B GETMET R7 R7 K9
- 0x5C240C00, // 001C MOVE R9 R6
- 0x7C1C0400, // 001D CALL R7 2
- 0x601C0013, // 001E GETGBL R7 G19
- 0x7C1C0000, // 001F CALL R7 0
- 0x981E1401, // 0020 SETIDX R7 K10 R1
- 0x60200010, // 0021 GETGBL R8 G16
- 0x8C24050B, // 0022 GETMET R9 R2 K11
- 0x7C240200, // 0023 CALL R9 1
- 0x7C200200, // 0024 CALL R8 1
- 0xA8020004, // 0025 EXBLK 0 #002B
- 0x5C241000, // 0026 MOVE R9 R8
- 0x7C240000, // 0027 CALL R9 0
- 0x94280409, // 0028 GETIDX R10 R2 R9
- 0x981C120A, // 0029 SETIDX R7 R9 R10
- 0x7001FFFA, // 002A JMP #0026
- 0x5820000C, // 002B LDCONST R8 K12
- 0xAC200200, // 002C CATCH R8 1 0
- 0xB0080000, // 002D RAISE 2 R0 R0
- 0xB8220400, // 002E GETNGBL R8 K2
- 0x8C201103, // 002F GETMET R8 R8 K3
- 0x60280018, // 0030 GETGBL R10 G24
- 0x582C000D, // 0031 LDCONST R11 K13
- 0x5C300800, // 0032 MOVE R12 R4
- 0x5C340200, // 0033 MOVE R13 R1
- 0x8C38010E, // 0034 GETMET R14 R0 K14
- 0x5C400400, // 0035 MOVE R16 R2
- 0x7C380400, // 0036 CALL R14 2
- 0x7C280800, // 0037 CALL R10 4
- 0x582C000F, // 0038 LDCONST R11 K15
- 0x7C200600, // 0039 CALL R8 3
- 0x88200110, // 003A GETMBR R8 R0 K16
- 0x98200A07, // 003B SETIDX R8 R5 R7
- 0x50200200, // 003C LDBOOL R8 1 0
- 0x90022208, // 003D SETMBR R0 K17 R8
- 0x88200107, // 003E GETMBR R8 R0 K7
- 0x00201112, // 003F ADD R8 R8 K18
- 0x90020E08, // 0040 SETMBR R0 K7 R8
- 0x8C200113, // 0041 GETMET R8 R0 K19
- 0x7C200200, // 0042 CALL R8 1
- 0x8C200114, // 0043 GETMET R8 R0 K20
- 0x7C200200, // 0044 CALL R8 1
- 0x80040800, // 0045 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** 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: 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: 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: 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: register_plugin_class
-********************************************************************/
-be_local_closure(Matter_Device_register_plugin_class, /* 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[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(get),
- /* K2 */ be_nested_str_weak(TYPE),
- /* K3 */ be_nested_str_weak(plugins_classes),
- }),
- be_str_weak(register_plugin_class),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x58180002, // 0003 LDCONST R6 K2
- 0x7C0C0600, // 0004 CALL R3 3
- 0x780E0001, // 0005 JMPF R3 #0008
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x98100601, // 0007 SETIDX R4 R3 R1
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: save_param
-********************************************************************/
-be_local_closure(Matter_Device_save_param, /* 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[30]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(update_remotes_info),
- /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i),
- /* K3 */ be_nested_str_weak(root_discriminator),
- /* K4 */ be_nested_str_weak(root_passcode),
- /* K5 */ be_nested_str_weak(ipv4only),
- /* K6 */ be_nested_str_weak(true),
- /* K7 */ be_nested_str_weak(false),
- /* K8 */ be_nested_str_weak(next_ep),
- /* K9 */ be_nested_str_weak(plugins_persist),
- /* K10 */ be_nested_str_weak(_X2C_X22config_X22_X3A),
- /* K11 */ be_nested_str_weak(dump),
- /* K12 */ be_nested_str_weak(plugins_config),
- /* K13 */ be_nested_str_weak(plugins_config_remotes),
- /* K14 */ be_const_int(0),
- /* K15 */ be_nested_str_weak(_X2C_X22remotes_X22_X3A),
- /* K16 */ be_nested_str_weak(_X7D),
- /* K17 */ be_nested_str_weak(FILENAME),
- /* K18 */ be_nested_str_weak(w),
- /* K19 */ be_nested_str_weak(write),
- /* K20 */ be_nested_str_weak(close),
- /* K21 */ be_nested_str_weak(tasmota),
- /* K22 */ be_nested_str_weak(log),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s),
- /* K24 */ be_nested_str_weak(_X20and_X20configuration),
- /* K25 */ be_nested_str_weak(),
- /* K26 */ be_const_int(3),
- /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
- /* K28 */ be_nested_str_weak(_X7C),
- /* K29 */ be_const_int(2),
- }),
- be_str_weak(save_param),
- &be_const_str_solidified,
- ( &(const binstruction[77]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x60080018, // 0003 GETGBL R2 G24
- 0x580C0002, // 0004 LDCONST R3 K2
- 0x88100103, // 0005 GETMBR R4 R0 K3
- 0x88140104, // 0006 GETMBR R5 R0 K4
- 0x88180105, // 0007 GETMBR R6 R0 K5
- 0x781A0001, // 0008 JMPF R6 #000B
- 0x58180006, // 0009 LDCONST R6 K6
- 0x70020000, // 000A JMP #000C
- 0x58180007, // 000B LDCONST R6 K7
- 0x881C0108, // 000C GETMBR R7 R0 K8
- 0x7C080A00, // 000D CALL R2 5
- 0x880C0109, // 000E GETMBR R3 R0 K9
- 0x780E000E, // 000F JMPF R3 #001F
- 0x0008050A, // 0010 ADD R2 R2 K10
- 0x8C0C030B, // 0011 GETMET R3 R1 K11
- 0x8814010C, // 0012 GETMBR R5 R0 K12
- 0x7C0C0400, // 0013 CALL R3 2
- 0x00080403, // 0014 ADD R2 R2 R3
- 0x600C000C, // 0015 GETGBL R3 G12
- 0x8810010D, // 0016 GETMBR R4 R0 K13
- 0x7C0C0200, // 0017 CALL R3 1
- 0x240C070E, // 0018 GT R3 R3 K14
- 0x780E0004, // 0019 JMPF R3 #001F
- 0x0008050F, // 001A ADD R2 R2 K15
- 0x8C0C030B, // 001B GETMET R3 R1 K11
- 0x8814010D, // 001C GETMBR R5 R0 K13
- 0x7C0C0400, // 001D CALL R3 2
- 0x00080403, // 001E ADD R2 R2 R3
- 0x00080510, // 001F ADD R2 R2 K16
- 0xA8020018, // 0020 EXBLK 0 #003A
- 0x600C0011, // 0021 GETGBL R3 G17
- 0x88100111, // 0022 GETMBR R4 R0 K17
- 0x58140012, // 0023 LDCONST R5 K18
- 0x7C0C0400, // 0024 CALL R3 2
- 0x8C100713, // 0025 GETMET R4 R3 K19
- 0x5C180400, // 0026 MOVE R6 R2
- 0x7C100400, // 0027 CALL R4 2
- 0x8C100714, // 0028 GETMET R4 R3 K20
- 0x7C100200, // 0029 CALL R4 1
- 0xB8122A00, // 002A GETNGBL R4 K21
- 0x8C100916, // 002B GETMET R4 R4 K22
- 0x60180018, // 002C GETGBL R6 G24
- 0x581C0017, // 002D LDCONST R7 K23
- 0x88200109, // 002E GETMBR R8 R0 K9
- 0x78220001, // 002F JMPF R8 #0032
- 0x58200018, // 0030 LDCONST R8 K24
- 0x70020000, // 0031 JMP #0033
- 0x58200019, // 0032 LDCONST R8 K25
- 0x7C180400, // 0033 CALL R6 2
- 0x581C001A, // 0034 LDCONST R7 K26
- 0x7C100600, // 0035 CALL R4 3
- 0xA8040001, // 0036 EXBLK 1 1
- 0x80040400, // 0037 RET 1 R2
- 0xA8040001, // 0038 EXBLK 1 1
- 0x70020011, // 0039 JMP #004C
- 0xAC0C0002, // 003A CATCH R3 0 2
- 0x7002000E, // 003B JMP #004B
- 0xB8162A00, // 003C GETNGBL R5 K21
- 0x8C140B16, // 003D GETMET R5 R5 K22
- 0x601C0008, // 003E GETGBL R7 G8
- 0x5C200600, // 003F MOVE R8 R3
- 0x7C1C0200, // 0040 CALL R7 1
- 0x001E3607, // 0041 ADD R7 K27 R7
- 0x001C0F1C, // 0042 ADD R7 R7 K28
- 0x60200008, // 0043 GETGBL R8 G8
- 0x5C240800, // 0044 MOVE R9 R4
- 0x7C200200, // 0045 CALL R8 1
- 0x001C0E08, // 0046 ADD R7 R7 R8
- 0x5820001D, // 0047 LDCONST R8 K29
- 0x7C140600, // 0048 CALL R5 3
- 0x80040400, // 0049 RET 1 R2
- 0x70020000, // 004A JMP #004C
- 0xB0080000, // 004B RAISE 2 R0 R0
- 0x80000000, // 004C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _mdns_announce_hostname
-********************************************************************/
-be_local_closure(Matter_Device__mdns_announce_hostname, /* 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[26]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(start),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(eth),
- /* K5 */ be_nested_str_weak(hostname_eth),
- /* K6 */ be_nested_str_weak(replace),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(mac),
- /* K9 */ be_nested_str_weak(_X3A),
- /* K10 */ be_nested_str_weak(),
- /* K11 */ be_nested_str_weak(ipv4only),
- /* K12 */ be_nested_str_weak(add_hostname),
- /* K13 */ be_nested_str_weak(ip6local),
- /* K14 */ be_nested_str_weak(ip),
- /* K15 */ be_nested_str_weak(ip6),
- /* K16 */ be_nested_str_weak(log),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29),
- /* K18 */ be_const_int(3),
- /* K19 */ be_nested_str_weak(wifi),
- /* K20 */ be_nested_str_weak(hostname_wifi),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K23 */ be_nested_str_weak(_X7C),
- /* K24 */ be_const_int(2),
- /* K25 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics),
- }),
- be_str_weak(_mdns_announce_hostname),
- &be_const_str_solidified,
- ( &(const binstruction[140]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x8C100502, // 0002 GETMET R4 R2 K2
- 0x7C100200, // 0003 CALL R4 1
- 0xA8020072, // 0004 EXBLK 0 #0078
- 0x78060030, // 0005 JMPF R1 #0037
- 0xB8120600, // 0006 GETNGBL R4 K3
- 0x8C100904, // 0007 GETMET R4 R4 K4
- 0x7C100200, // 0008 CALL R4 1
- 0x8C140706, // 0009 GETMET R5 R3 K6
- 0x8C1C0907, // 000A GETMET R7 R4 K7
- 0x58240008, // 000B LDCONST R9 K8
- 0x7C1C0400, // 000C CALL R7 2
- 0x58200009, // 000D LDCONST R8 K9
- 0x5824000A, // 000E LDCONST R9 K10
- 0x7C140800, // 000F CALL R5 4
- 0x90020A05, // 0010 SETMBR R0 K5 R5
- 0x8814010B, // 0011 GETMBR R5 R0 K11
- 0x7416000F, // 0012 JMPT R5 #0023
- 0x8C14050C, // 0013 GETMET R5 R2 K12
- 0x881C0105, // 0014 GETMBR R7 R0 K5
- 0x8C200907, // 0015 GETMET R8 R4 K7
- 0x5828000D, // 0016 LDCONST R10 K13
- 0x582C000A, // 0017 LDCONST R11 K10
- 0x7C200600, // 0018 CALL R8 3
- 0x8C240907, // 0019 GETMET R9 R4 K7
- 0x582C000E, // 001A LDCONST R11 K14
- 0x5830000A, // 001B LDCONST R12 K10
- 0x7C240600, // 001C CALL R9 3
- 0x8C280907, // 001D GETMET R10 R4 K7
- 0x5830000F, // 001E LDCONST R12 K15
- 0x5834000A, // 001F LDCONST R13 K10
- 0x7C280600, // 0020 CALL R10 3
- 0x7C140A00, // 0021 CALL R5 5
- 0x70020012, // 0022 JMP #0036
- 0xB8160600, // 0023 GETNGBL R5 K3
- 0x8C140B10, // 0024 GETMET R5 R5 K16
- 0x601C0018, // 0025 GETGBL R7 G24
- 0x58200011, // 0026 LDCONST R8 K17
- 0x88240105, // 0027 GETMBR R9 R0 K5
- 0x8C280907, // 0028 GETMET R10 R4 K7
- 0x5830000E, // 0029 LDCONST R12 K14
- 0x5834000A, // 002A LDCONST R13 K10
- 0x7C280600, // 002B CALL R10 3
- 0x7C1C0600, // 002C CALL R7 3
- 0x58200012, // 002D LDCONST R8 K18
- 0x7C140600, // 002E CALL R5 3
- 0x8C14050C, // 002F GETMET R5 R2 K12
- 0x881C0105, // 0030 GETMBR R7 R0 K5
- 0x8C200907, // 0031 GETMET R8 R4 K7
- 0x5828000E, // 0032 LDCONST R10 K14
- 0x582C000A, // 0033 LDCONST R11 K10
- 0x7C200600, // 0034 CALL R8 3
- 0x7C140600, // 0035 CALL R5 3
- 0x7002002F, // 0036 JMP #0067
- 0xB8120600, // 0037 GETNGBL R4 K3
- 0x8C100913, // 0038 GETMET R4 R4 K19
- 0x7C100200, // 0039 CALL R4 1
- 0x8C140706, // 003A GETMET R5 R3 K6
- 0x8C1C0907, // 003B GETMET R7 R4 K7
- 0x58240008, // 003C LDCONST R9 K8
- 0x7C1C0400, // 003D CALL R7 2
- 0x58200009, // 003E LDCONST R8 K9
- 0x5824000A, // 003F LDCONST R9 K10
- 0x7C140800, // 0040 CALL R5 4
- 0x90022805, // 0041 SETMBR R0 K20 R5
- 0x8814010B, // 0042 GETMBR R5 R0 K11
- 0x7416000F, // 0043 JMPT R5 #0054
- 0x8C14050C, // 0044 GETMET R5 R2 K12
- 0x881C0114, // 0045 GETMBR R7 R0 K20
- 0x8C200907, // 0046 GETMET R8 R4 K7
- 0x5828000D, // 0047 LDCONST R10 K13
- 0x582C000A, // 0048 LDCONST R11 K10
- 0x7C200600, // 0049 CALL R8 3
- 0x8C240907, // 004A GETMET R9 R4 K7
- 0x582C000E, // 004B LDCONST R11 K14
- 0x5830000A, // 004C LDCONST R12 K10
- 0x7C240600, // 004D CALL R9 3
- 0x8C280907, // 004E GETMET R10 R4 K7
- 0x5830000F, // 004F LDCONST R12 K15
- 0x5834000A, // 0050 LDCONST R13 K10
- 0x7C280600, // 0051 CALL R10 3
- 0x7C140A00, // 0052 CALL R5 5
- 0x70020012, // 0053 JMP #0067
- 0xB8160600, // 0054 GETNGBL R5 K3
- 0x8C140B10, // 0055 GETMET R5 R5 K16
- 0x601C0018, // 0056 GETGBL R7 G24
- 0x58200011, // 0057 LDCONST R8 K17
- 0x88240105, // 0058 GETMBR R9 R0 K5
- 0x8C280907, // 0059 GETMET R10 R4 K7
- 0x5830000E, // 005A LDCONST R12 K14
- 0x5834000A, // 005B LDCONST R13 K10
- 0x7C280600, // 005C CALL R10 3
- 0x7C1C0600, // 005D CALL R7 3
- 0x58200012, // 005E LDCONST R8 K18
- 0x7C140600, // 005F CALL R5 3
- 0x8C14050C, // 0060 GETMET R5 R2 K12
- 0x881C0114, // 0061 GETMBR R7 R0 K20
- 0x8C200907, // 0062 GETMET R8 R4 K7
- 0x5828000E, // 0063 LDCONST R10 K14
- 0x582C000A, // 0064 LDCONST R11 K10
- 0x7C200600, // 0065 CALL R8 3
- 0x7C140600, // 0066 CALL R5 3
- 0xB8120600, // 0067 GETNGBL R4 K3
- 0x8C100910, // 0068 GETMET R4 R4 K16
- 0x60180018, // 0069 GETGBL R6 G24
- 0x581C0015, // 006A LDCONST R7 K21
- 0x78060001, // 006B JMPF R1 #006E
- 0x58200004, // 006C LDCONST R8 K4
- 0x70020000, // 006D JMP #006F
- 0x58200013, // 006E LDCONST R8 K19
- 0x78060001, // 006F JMPF R1 #0072
- 0x88240105, // 0070 GETMBR R9 R0 K5
- 0x70020000, // 0071 JMP #0073
- 0x88240114, // 0072 GETMBR R9 R0 K20
- 0x7C180600, // 0073 CALL R6 3
- 0x581C0012, // 0074 LDCONST R7 K18
- 0x7C100600, // 0075 CALL R4 3
- 0xA8040001, // 0076 EXBLK 1 1
- 0x70020010, // 0077 JMP #0089
- 0xAC100002, // 0078 CATCH R4 0 2
- 0x7002000D, // 0079 JMP #0088
- 0xB81A0600, // 007A GETNGBL R6 K3
- 0x8C180D10, // 007B GETMET R6 R6 K16
- 0x60200008, // 007C GETGBL R8 G8
- 0x5C240800, // 007D MOVE R9 R4
- 0x7C200200, // 007E CALL R8 1
- 0x00222C08, // 007F ADD R8 K22 R8
- 0x00201117, // 0080 ADD R8 R8 K23
- 0x60240008, // 0081 GETGBL R9 G8
- 0x5C280A00, // 0082 MOVE R10 R5
- 0x7C240200, // 0083 CALL R9 1
- 0x00201009, // 0084 ADD R8 R8 R9
- 0x58240018, // 0085 LDCONST R9 K24
- 0x7C180600, // 0086 CALL R6 3
- 0x70020000, // 0087 JMP #0089
- 0xB0080000, // 0088 RAISE 2 R0 R0
- 0x8C100119, // 0089 GETMET R4 R0 K25
- 0x7C100200, // 008A CALL R4 1
- 0x80000000, // 008B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_attribute_expansion
-********************************************************************/
-be_local_closure(Matter_Device_process_attribute_expansion, /* name */
- be_nested_proto(
- 24, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 0, /* 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(keys),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(stop_iteration),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(keys_sorted),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x60040012, // 0000 GETGBL R1 G18
- 0x7C040000, // 0001 CALL R1 0
- 0x60080010, // 0002 GETGBL R2 G16
- 0x8C0C0100, // 0003 GETMET R3 R0 K0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x7C080200, // 0005 CALL R2 1
- 0xA8020005, // 0006 EXBLK 0 #000D
- 0x5C0C0400, // 0007 MOVE R3 R2
- 0x7C0C0000, // 0008 CALL R3 0
- 0x8C100301, // 0009 GETMET R4 R1 K1
- 0x5C180600, // 000A MOVE R6 R3
- 0x7C100400, // 000B CALL R4 2
- 0x7001FFF9, // 000C JMP #0007
- 0x58080002, // 000D LDCONST R2 K2
- 0xAC080200, // 000E CATCH R2 1 0
- 0xB0080000, // 000F RAISE 2 R0 R0
- 0x60080010, // 0010 GETGBL R2 G16
- 0x600C000C, // 0011 GETGBL R3 G12
- 0x5C100200, // 0012 MOVE R4 R1
- 0x7C0C0200, // 0013 CALL R3 1
- 0x040C0703, // 0014 SUB R3 R3 K3
- 0x400E0603, // 0015 CONNECT R3 K3 R3
- 0x7C080200, // 0016 CALL R2 1
- 0xA8020010, // 0017 EXBLK 0 #0029
- 0x5C0C0400, // 0018 MOVE R3 R2
- 0x7C0C0000, // 0019 CALL R3 0
- 0x94100203, // 001A GETIDX R4 R1 R3
- 0x5C140600, // 001B MOVE R5 R3
- 0x24180B04, // 001C GT R6 R5 K4
- 0x781A0008, // 001D JMPF R6 #0027
- 0x04180B03, // 001E SUB R6 R5 K3
- 0x94180206, // 001F GETIDX R6 R1 R6
- 0x24180C04, // 0020 GT R6 R6 R4
- 0x781A0004, // 0021 JMPF R6 #0027
- 0x04180B03, // 0022 SUB R6 R5 K3
- 0x94180206, // 0023 GETIDX R6 R1 R6
- 0x98040A06, // 0024 SETIDX R1 R5 R6
- 0x04140B03, // 0025 SUB R5 R5 K3
- 0x7001FFF4, // 0026 JMP #001C
- 0x98040A04, // 0027 SETIDX R1 R5 R4
- 0x7001FFEE, // 0028 JMP #0018
- 0x58080002, // 0029 LDCONST R2 K2
- 0xAC080200, // 002A CATCH R2 1 0
- 0xB0080000, // 002B RAISE 2 R0 R0
- 0x80040200, // 002C RET 1 R1
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- /* K1 */ be_nested_str_weak(cluster),
- /* K2 */ be_nested_str_weak(attribute),
- /* K3 */ be_nested_str_weak(plugins),
- /* K4 */ be_nested_str_weak(get_endpoint),
- /* K5 */ be_nested_str_weak(contains),
- /* K6 */ be_nested_str_weak(get_cluster_list),
- /* K7 */ be_nested_str_weak(get_attribute_list),
- /* K8 */ be_nested_str_weak(push),
- /* K9 */ be_nested_str_weak(stop_iteration),
- /* K10 */ be_nested_str_weak(status),
- /* K11 */ be_nested_str_weak(matter),
- /* K12 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
- /* K13 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
- /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE),
- }),
- be_str_weak(process_attribute_expansion),
- &be_const_str_solidified,
- ( &(const binstruction[205]) { /* code */
- 0x840C0000, // 0000 CLOSURE R3 P0
- 0x88100300, // 0001 GETMBR R4 R1 K0
- 0x50140000, // 0002 LDBOOL R5 0 0
- 0x88180301, // 0003 GETMBR R6 R1 K1
- 0x501C0000, // 0004 LDBOOL R7 0 0
- 0x88200302, // 0005 GETMBR R8 R1 K2
- 0x50240000, // 0006 LDBOOL R9 0 0
- 0x88280300, // 0007 GETMBR R10 R1 K0
- 0x4C2C0000, // 0008 LDNIL R11
- 0x2028140B, // 0009 NE R10 R10 R11
- 0x782A0007, // 000A JMPF R10 #0013
- 0x88280301, // 000B GETMBR R10 R1 K1
- 0x4C2C0000, // 000C LDNIL R11
- 0x2028140B, // 000D NE R10 R10 R11
- 0x782A0003, // 000E JMPF R10 #0013
- 0x88280302, // 000F GETMBR R10 R1 K2
- 0x4C2C0000, // 0010 LDNIL R11
- 0x2028140B, // 0011 NE R10 R10 R11
- 0x742A0000, // 0012 JMPT R10 #0014
- 0x50280001, // 0013 LDBOOL R10 0 1
- 0x50280200, // 0014 LDBOOL R10 1 0
- 0x602C0013, // 0015 GETGBL R11 G19
- 0x7C2C0000, // 0016 CALL R11 0
- 0x60300010, // 0017 GETGBL R12 G16
- 0x88340103, // 0018 GETMBR R13 R0 K3
- 0x7C300200, // 0019 CALL R12 1
- 0xA8020055, // 001A EXBLK 0 #0071
- 0x5C341800, // 001B MOVE R13 R12
- 0x7C340000, // 001C CALL R13 0
- 0x8C381B04, // 001D GETMET R14 R13 K4
- 0x7C380200, // 001E CALL R14 1
- 0x4C3C0000, // 001F LDNIL R15
- 0x203C080F, // 0020 NE R15 R4 R15
- 0x783E0002, // 0021 JMPF R15 #0025
- 0x203C1C04, // 0022 NE R15 R14 R4
- 0x783E0000, // 0023 JMPF R15 #0025
- 0x7001FFF5, // 0024 JMP #001B
- 0x8C3C1705, // 0025 GETMET R15 R11 K5
- 0x5C441C00, // 0026 MOVE R17 R14
- 0x7C3C0400, // 0027 CALL R15 2
- 0x743E0002, // 0028 JMPT R15 #002C
- 0x603C0013, // 0029 GETGBL R15 G19
- 0x7C3C0000, // 002A CALL R15 0
- 0x982C1C0F, // 002B SETIDX R11 R14 R15
- 0x50140200, // 002C LDBOOL R5 1 0
- 0x8C3C1B06, // 002D GETMET R15 R13 K6
- 0x5C441C00, // 002E MOVE R17 R14
- 0x7C3C0400, // 002F CALL R15 2
- 0x60400010, // 0030 GETGBL R16 G16
- 0x5C441E00, // 0031 MOVE R17 R15
- 0x7C400200, // 0032 CALL R16 1
- 0xA8020038, // 0033 EXBLK 0 #006D
- 0x5C442000, // 0034 MOVE R17 R16
- 0x7C440000, // 0035 CALL R17 0
- 0x4C480000, // 0036 LDNIL R18
- 0x20480C12, // 0037 NE R18 R6 R18
- 0x784A0002, // 0038 JMPF R18 #003C
- 0x20482206, // 0039 NE R18 R17 R6
- 0x784A0000, // 003A JMPF R18 #003C
- 0x7001FFF7, // 003B JMP #0034
- 0x9448160E, // 003C GETIDX R18 R11 R14
- 0x8C482505, // 003D GETMET R18 R18 K5
- 0x5C502200, // 003E MOVE R20 R17
- 0x7C480400, // 003F CALL R18 2
- 0x744A0003, // 0040 JMPT R18 #0045
- 0x9448160E, // 0041 GETIDX R18 R11 R14
- 0x604C0013, // 0042 GETGBL R19 G19
- 0x7C4C0000, // 0043 CALL R19 0
- 0x98482213, // 0044 SETIDX R18 R17 R19
- 0x501C0200, // 0045 LDBOOL R7 1 0
- 0x8C481B07, // 0046 GETMET R18 R13 K7
- 0x5C501C00, // 0047 MOVE R20 R14
- 0x5C542200, // 0048 MOVE R21 R17
- 0x7C480600, // 0049 CALL R18 3
- 0x604C0010, // 004A GETGBL R19 G16
- 0x5C502400, // 004B MOVE R20 R18
- 0x7C4C0200, // 004C CALL R19 1
- 0xA802001A, // 004D EXBLK 0 #0069
- 0x5C502600, // 004E MOVE R20 R19
- 0x7C500000, // 004F CALL R20 0
- 0x4C540000, // 0050 LDNIL R21
- 0x20541015, // 0051 NE R21 R8 R21
- 0x78560002, // 0052 JMPF R21 #0056
- 0x20542808, // 0053 NE R21 R20 R8
- 0x78560000, // 0054 JMPF R21 #0056
- 0x7001FFF7, // 0055 JMP #004E
- 0x9454160E, // 0056 GETIDX R21 R11 R14
- 0x94542A11, // 0057 GETIDX R21 R21 R17
- 0x8C542B05, // 0058 GETMET R21 R21 K5
- 0x5C5C2800, // 0059 MOVE R23 R20
- 0x7C540400, // 005A CALL R21 2
- 0x74560004, // 005B JMPT R21 #0061
- 0x9454160E, // 005C GETIDX R21 R11 R14
- 0x94542A11, // 005D GETIDX R21 R21 R17
- 0x60580012, // 005E GETGBL R22 G18
- 0x7C580000, // 005F CALL R22 0
- 0x98542816, // 0060 SETIDX R21 R20 R22
- 0x50240200, // 0061 LDBOOL R9 1 0
- 0x9454160E, // 0062 GETIDX R21 R11 R14
- 0x94542A11, // 0063 GETIDX R21 R21 R17
- 0x94542A14, // 0064 GETIDX R21 R21 R20
- 0x8C542B08, // 0065 GETMET R21 R21 K8
- 0x5C5C1A00, // 0066 MOVE R23 R13
- 0x7C540400, // 0067 CALL R21 2
- 0x7001FFE4, // 0068 JMP #004E
- 0x584C0009, // 0069 LDCONST R19 K9
- 0xAC4C0200, // 006A CATCH R19 1 0
- 0xB0080000, // 006B RAISE 2 R0 R0
- 0x7001FFC6, // 006C JMP #0034
- 0x58400009, // 006D LDCONST R16 K9
- 0xAC400200, // 006E CATCH R16 1 0
- 0xB0080000, // 006F RAISE 2 R0 R0
- 0x7001FFA9, // 0070 JMP #001B
- 0x58300009, // 0071 LDCONST R12 K9
- 0xAC300200, // 0072 CATCH R12 1 0
- 0xB0080000, // 0073 RAISE 2 R0 R0
- 0x60300010, // 0074 GETGBL R12 G16
- 0x5C340600, // 0075 MOVE R13 R3
- 0x5C381600, // 0076 MOVE R14 R11
- 0x7C340200, // 0077 CALL R13 1
- 0x7C300200, // 0078 CALL R12 1
- 0xA8020033, // 0079 EXBLK 0 #00AE
- 0x5C341800, // 007A MOVE R13 R12
- 0x7C340000, // 007B CALL R13 0
- 0x60380010, // 007C GETGBL R14 G16
- 0x5C3C0600, // 007D MOVE R15 R3
- 0x9440160D, // 007E GETIDX R16 R11 R13
- 0x7C3C0200, // 007F CALL R15 1
- 0x7C380200, // 0080 CALL R14 1
- 0xA8020027, // 0081 EXBLK 0 #00AA
- 0x5C3C1C00, // 0082 MOVE R15 R14
- 0x7C3C0000, // 0083 CALL R15 0
- 0x60400010, // 0084 GETGBL R16 G16
- 0x5C440600, // 0085 MOVE R17 R3
- 0x9448160D, // 0086 GETIDX R18 R11 R13
- 0x9448240F, // 0087 GETIDX R18 R18 R15
- 0x7C440200, // 0088 CALL R17 1
- 0x7C400200, // 0089 CALL R16 1
- 0xA802001A, // 008A EXBLK 0 #00A6
- 0x5C442000, // 008B MOVE R17 R16
- 0x7C440000, // 008C CALL R17 0
- 0x60480010, // 008D GETGBL R18 G16
- 0x944C160D, // 008E GETIDX R19 R11 R13
- 0x944C260F, // 008F GETIDX R19 R19 R15
- 0x944C2611, // 0090 GETIDX R19 R19 R17
- 0x7C480200, // 0091 CALL R18 1
- 0xA802000E, // 0092 EXBLK 0 #00A2
- 0x5C4C2400, // 0093 MOVE R19 R18
- 0x7C4C0000, // 0094 CALL R19 0
- 0x9006000D, // 0095 SETMBR R1 K0 R13
- 0x9006020F, // 0096 SETMBR R1 K1 R15
- 0x90060411, // 0097 SETMBR R1 K2 R17
- 0x5C500400, // 0098 MOVE R20 R2
- 0x5C542600, // 0099 MOVE R21 R19
- 0x5C580200, // 009A MOVE R22 R1
- 0x5C5C1400, // 009B MOVE R23 R10
- 0x7C500600, // 009C CALL R20 3
- 0x782A0002, // 009D JMPF R10 #00A1
- 0x78520001, // 009E JMPF R20 #00A1
- 0xA8040004, // 009F EXBLK 1 4
- 0x80002A00, // 00A0 RET 0
- 0x7001FFF0, // 00A1 JMP #0093
- 0x58480009, // 00A2 LDCONST R18 K9
- 0xAC480200, // 00A3 CATCH R18 1 0
- 0xB0080000, // 00A4 RAISE 2 R0 R0
- 0x7001FFE4, // 00A5 JMP #008B
- 0x58400009, // 00A6 LDCONST R16 K9
- 0xAC400200, // 00A7 CATCH R16 1 0
- 0xB0080000, // 00A8 RAISE 2 R0 R0
- 0x7001FFD7, // 00A9 JMP #0082
- 0x58380009, // 00AA LDCONST R14 K9
- 0xAC380200, // 00AB CATCH R14 1 0
- 0xB0080000, // 00AC RAISE 2 R0 R0
- 0x7001FFCB, // 00AD JMP #007A
- 0x58300009, // 00AE LDCONST R12 K9
- 0xAC300200, // 00AF CATCH R12 1 0
- 0xB0080000, // 00B0 RAISE 2 R0 R0
- 0x782A0019, // 00B1 JMPF R10 #00CC
- 0x5C300A00, // 00B2 MOVE R12 R5
- 0x74320003, // 00B3 JMPT R12 #00B8
- 0xB8321600, // 00B4 GETNGBL R12 K11
- 0x8830190C, // 00B5 GETMBR R12 R12 K12
- 0x9006140C, // 00B6 SETMBR R1 K10 R12
- 0x7002000E, // 00B7 JMP #00C7
- 0x5C300E00, // 00B8 MOVE R12 R7
- 0x74320003, // 00B9 JMPT R12 #00BE
- 0xB8321600, // 00BA GETNGBL R12 K11
- 0x8830190D, // 00BB GETMBR R12 R12 K13
- 0x9006140C, // 00BC SETMBR R1 K10 R12
- 0x70020008, // 00BD JMP #00C7
- 0x5C301200, // 00BE MOVE R12 R9
- 0x74320003, // 00BF JMPT R12 #00C4
- 0xB8321600, // 00C0 GETNGBL R12 K11
- 0x8830190E, // 00C1 GETMBR R12 R12 K14
- 0x9006140C, // 00C2 SETMBR R1 K10 R12
- 0x70020002, // 00C3 JMP #00C7
- 0xB8321600, // 00C4 GETNGBL R12 K11
- 0x8830190F, // 00C5 GETMBR R12 R12 K15
- 0x9006140C, // 00C6 SETMBR R1 K10 R12
- 0x5C300400, // 00C7 MOVE R12 R2
- 0x4C340000, // 00C8 LDNIL R13
- 0x5C380200, // 00C9 MOVE R14 R1
- 0x503C0200, // 00CA LDBOOL R15 1 0
- 0x7C300600, // 00CB CALL R12 3
- 0x80000000, // 00CC 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: 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[34]) { /* 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(next_ep),
- /* K13 */ be_nested_str_weak(nextep),
- /* K14 */ be_nested_str_weak(plugins_config),
- /* K15 */ be_nested_str_weak(config),
- /* K16 */ be_nested_str_weak(tasmota),
- /* K17 */ be_nested_str_weak(log),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20load_config_X20_X3D_X20),
- /* K19 */ be_const_int(3),
- /* K20 */ be_nested_str_weak(adjust_next_ep),
- /* K21 */ be_nested_str_weak(plugins_persist),
- /* K22 */ be_nested_str_weak(plugins_config_remotes),
- /* K23 */ be_nested_str_weak(remotes),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20),
- /* K25 */ be_nested_str_weak(io_error),
- /* K26 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A),
- /* K27 */ be_nested_str_weak(_X7C),
- /* K28 */ be_const_int(2),
- /* K29 */ be_nested_str_weak(random),
- /* K30 */ be_nested_str_weak(get),
- /* K31 */ be_const_int(0),
- /* K32 */ be_nested_str_weak(generate_random_passcode),
- /* K33 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(load_param),
- &be_const_str_solidified,
- ( &(const binstruction[120]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA8020046, // 0001 EXBLK 0 #0049
- 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
- 0x8C180B07, // 001E GETMET R6 R5 K7
- 0x5820000D, // 001F LDCONST R8 K13
- 0x8824010C, // 0020 GETMBR R9 R0 K12
- 0x7C180600, // 0021 CALL R6 3
- 0x90021806, // 0022 SETMBR R0 K12 R6
- 0x8C180B07, // 0023 GETMET R6 R5 K7
- 0x5820000F, // 0024 LDCONST R8 K15
- 0x7C180400, // 0025 CALL R6 2
- 0x90021C06, // 0026 SETMBR R0 K14 R6
- 0x8818010E, // 0027 GETMBR R6 R0 K14
- 0x4C1C0000, // 0028 LDNIL R7
- 0x20180C07, // 0029 NE R6 R6 R7
- 0x781A000B, // 002A JMPF R6 #0037
- 0xB81A2000, // 002B GETNGBL R6 K16
- 0x8C180D11, // 002C GETMET R6 R6 K17
- 0x60200008, // 002D GETGBL R8 G8
- 0x8824010E, // 002E GETMBR R9 R0 K14
- 0x7C200200, // 002F CALL R8 1
- 0x00222408, // 0030 ADD R8 K18 R8
- 0x58240013, // 0031 LDCONST R9 K19
- 0x7C180600, // 0032 CALL R6 3
- 0x8C180114, // 0033 GETMET R6 R0 K20
- 0x7C180200, // 0034 CALL R6 1
- 0x50180200, // 0035 LDBOOL R6 1 0
- 0x90022A06, // 0036 SETMBR R0 K21 R6
- 0x8C180B07, // 0037 GETMET R6 R5 K7
- 0x58200017, // 0038 LDCONST R8 K23
- 0x60240013, // 0039 GETGBL R9 G19
- 0x7C240000, // 003A CALL R9 0
- 0x7C180600, // 003B CALL R6 3
- 0x90022C06, // 003C SETMBR R0 K22 R6
- 0x88180116, // 003D GETMBR R6 R0 K22
- 0x781A0007, // 003E JMPF R6 #0047
- 0xB81A2000, // 003F GETNGBL R6 K16
- 0x8C180D11, // 0040 GETMET R6 R6 K17
- 0x60200008, // 0041 GETGBL R8 G8
- 0x88240116, // 0042 GETMBR R9 R0 K22
- 0x7C200200, // 0043 CALL R8 1
- 0x00223008, // 0044 ADD R8 K24 R8
- 0x58240013, // 0045 LDCONST R9 K19
- 0x7C180600, // 0046 CALL R6 3
- 0xA8040001, // 0047 EXBLK 1 1
- 0x70020012, // 0048 JMP #005C
- 0xAC080002, // 0049 CATCH R2 0 2
- 0x7002000F, // 004A JMP #005B
- 0x20100519, // 004B NE R4 R2 K25
- 0x7812000C, // 004C JMPF R4 #005A
- 0xB8122000, // 004D GETNGBL R4 K16
- 0x8C100911, // 004E GETMET R4 R4 K17
- 0x60180008, // 004F GETGBL R6 G8
- 0x5C1C0400, // 0050 MOVE R7 R2
- 0x7C180200, // 0051 CALL R6 1
- 0x001A3406, // 0052 ADD R6 K26 R6
- 0x00180D1B, // 0053 ADD R6 R6 K27
- 0x601C0008, // 0054 GETGBL R7 G8
- 0x5C200600, // 0055 MOVE R8 R3
- 0x7C1C0200, // 0056 CALL R7 1
- 0x00180C07, // 0057 ADD R6 R6 R7
- 0x581C001C, // 0058 LDCONST R7 K28
- 0x7C100600, // 0059 CALL R4 3
- 0x70020000, // 005A JMP #005C
- 0xB0080000, // 005B RAISE 2 R0 R0
- 0x50080000, // 005C LDBOOL R2 0 0
- 0x880C0106, // 005D GETMBR R3 R0 K6
- 0x4C100000, // 005E LDNIL R4
- 0x1C0C0604, // 005F EQ R3 R3 R4
- 0x780E000A, // 0060 JMPF R3 #006C
- 0x8C0C031D, // 0061 GETMET R3 R1 K29
- 0x5814001C, // 0062 LDCONST R5 K28
- 0x7C0C0400, // 0063 CALL R3 2
- 0x8C0C071E, // 0064 GETMET R3 R3 K30
- 0x5814001F, // 0065 LDCONST R5 K31
- 0x5818001C, // 0066 LDCONST R6 K28
- 0x7C0C0600, // 0067 CALL R3 3
- 0x54120FFE, // 0068 LDINT R4 4095
- 0x2C0C0604, // 0069 AND R3 R3 R4
- 0x90020C03, // 006A SETMBR R0 K6 R3
- 0x50080200, // 006B LDBOOL R2 1 0
- 0x880C0109, // 006C GETMBR R3 R0 K9
- 0x4C100000, // 006D LDNIL R4
- 0x1C0C0604, // 006E EQ R3 R3 R4
- 0x780E0003, // 006F JMPF R3 #0074
- 0x8C0C0120, // 0070 GETMET R3 R0 K32
- 0x7C0C0200, // 0071 CALL R3 1
- 0x90021203, // 0072 SETMBR R0 K9 R3
- 0x50080200, // 0073 LDBOOL R2 1 0
- 0x780A0001, // 0074 JMPF R2 #0077
- 0x8C0C0121, // 0075 GETMET R3 R0 K33
- 0x7C0C0200, // 0076 CALL R3 1
- 0x80000000, // 0077 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: 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: 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: autoconf_device_map
-********************************************************************/
-be_local_closure(Matter_Device_autoconf_device_map, /* name */
- be_nested_proto(
- 20, /* 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(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_X20_X3D_X20_X25s_X2C_X20relay2_X20_X3D_X20_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),
- }),
- be_str_weak(autoconf_device_map),
- &be_const_str_solidified,
- ( &(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
- 0x78260051, // 0041 JMPF R9 #0094
- 0x8C240F13, // 0042 GETMET R9 R7 K19
- 0x582C0014, // 0043 LDCONST R11 K20
- 0x7C240400, // 0044 CALL R9 2
- 0x7826004D, // 0045 JMPF R9 #0094
- 0x941C0F14, // 0046 GETIDX R7 R7 K20
- 0x58240007, // 0047 LDCONST R9 K7
- 0x50280200, // 0048 LDBOOL R10 1 0
- 0x782A0049, // 0049 JMPF R10 #0094
- 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
- 0x70020040, // 0052 JMP #0094
- 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
- 0x583C0007, // 0061 LDCONST R15 K7
- 0x7C300600, // 0062 CALL R12 3
- 0x04301901, // 0063 SUB R12 R12 K1
- 0x8C341704, // 0064 GETMET R13 R11 K4
- 0x583C0018, // 0065 LDCONST R15 K24
- 0x58400007, // 0066 LDCONST R16 K7
- 0x7C340600, // 0067 CALL R13 3
- 0x04341B01, // 0068 SUB R13 R13 K1
- 0x28381907, // 0069 GE R14 R12 K7
- 0x783A0002, // 006A JMPF R14 #006E
- 0x8C381119, // 006B GETMET R14 R8 K25
- 0x5C401800, // 006C MOVE R16 R12
- 0x7C380400, // 006D CALL R14 2
- 0x28381B07, // 006E GE R14 R13 K7
- 0x783A0002, // 006F JMPF R14 #0073
- 0x8C381119, // 0070 GETMET R14 R8 K25
- 0x5C401A00, // 0071 MOVE R16 R13
- 0x7C380400, // 0072 CALL R14 2
- 0xB83A1A00, // 0073 GETNGBL R14 K13
- 0x8C381D10, // 0074 GETMET R14 R14 K16
- 0x60400018, // 0075 GETGBL R16 G24
- 0x5844001A, // 0076 LDCONST R17 K26
- 0x5C481800, // 0077 MOVE R18 R12
- 0x5C4C1A00, // 0078 MOVE R19 R13
- 0x7C400600, // 0079 CALL R16 3
- 0x58440012, // 007A LDCONST R17 K18
- 0x7C380600, // 007B CALL R14 3
- 0x8C381704, // 007C GETMET R14 R11 K4
- 0x5840001B, // 007D LDCONST R16 K27
- 0x7C380400, // 007E CALL R14 2
- 0x783A0002, // 007F JMPF R14 #0083
- 0x943C1D0A, // 0080 GETIDX R15 R14 K10
- 0x243C1F07, // 0081 GT R15 R15 K7
- 0x743E0000, // 0082 JMPT R15 #0084
- 0x503C0001, // 0083 LDBOOL R15 0 1
- 0x503C0200, // 0084 LDBOOL R15 1 0
- 0x60400008, // 0085 GETGBL R16 G8
- 0x5C440600, // 0086 MOVE R17 R3
- 0x7C400200, // 0087 CALL R16 1
- 0x60440013, // 0088 GETGBL R17 G19
- 0x7C440000, // 0089 CALL R17 0
- 0x783E0001, // 008A JMPF R15 #008D
- 0x5848001C, // 008B LDCONST R18 K28
- 0x70020000, // 008C JMP #008E
- 0x5848001D, // 008D LDCONST R18 K29
- 0x98461012, // 008E SETIDX R17 K8 R18
- 0x98463A09, // 008F SETIDX R17 K29 R9
- 0x98082011, // 0090 SETIDX R2 R16 R17
- 0x000C0701, // 0091 ADD R3 R3 K1
- 0x00241301, // 0092 ADD R9 R9 K1
- 0x7001FFB3, // 0093 JMP #0048
- 0x6024000C, // 0094 GETGBL R9 G12
- 0xB82A1A00, // 0095 GETNGBL R10 K13
- 0x8C28151E, // 0096 GETMET R10 R10 K30
- 0x7C280200, // 0097 CALL R10 1
- 0x7C240200, // 0098 CALL R9 1
- 0x58280007, // 0099 LDCONST R10 K7
- 0x78120000, // 009A JMPF R4 #009C
- 0x04241301, // 009B SUB R9 R9 K1
- 0x142C1409, // 009C LT R11 R10 R9
- 0x782E0010, // 009D JMPF R11 #00AF
- 0x8C2C1104, // 009E GETMET R11 R8 K4
- 0x5C341400, // 009F MOVE R13 R10
- 0x7C2C0400, // 00A0 CALL R11 2
- 0x4C300000, // 00A1 LDNIL R12
- 0x1C2C160C, // 00A2 EQ R11 R11 R12
- 0x782E0008, // 00A3 JMPF R11 #00AD
- 0x602C0008, // 00A4 GETGBL R11 G8
- 0x5C300600, // 00A5 MOVE R12 R3
- 0x7C2C0200, // 00A6 CALL R11 1
- 0x60300013, // 00A7 GETGBL R12 G19
- 0x7C300000, // 00A8 CALL R12 0
- 0x9832111F, // 00A9 SETIDX R12 K8 K31
- 0x98323E0A, // 00AA SETIDX R12 K31 R10
- 0x9808160C, // 00AB SETIDX R2 R11 R12
- 0x000C0701, // 00AC ADD R3 R3 K1
- 0x00281501, // 00AD ADD R10 R10 K1
- 0x7001FFEC, // 00AE JMP #009C
- 0x8C2C0320, // 00AF GETMET R11 R1 K32
- 0xB8361A00, // 00B0 GETNGBL R13 K13
- 0x8C341B21, // 00B1 GETMET R13 R13 K33
- 0x7C340200, // 00B2 CALL R13 1
- 0x7C2C0400, // 00B3 CALL R11 2
- 0x8C300122, // 00B4 GETMET R12 R0 K34
- 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
- 0x000C0701, // 00C1 ADD R3 R3 K1
- 0x7001FFF7, // 00C2 JMP #00BB
- 0x58340023, // 00C3 LDCONST R13 K35
- 0xAC340200, // 00C4 CATCH R13 1 0
- 0xB0080000, // 00C5 RAISE 2 R0 R0
- 0x80040400, // 00C6 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** 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: mdns_remove_op_discovery_all_fabrics
-********************************************************************/
-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: 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: 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_udp
-********************************************************************/
-be_local_closure(Matter_Device__start_udp, /* 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(
- 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[27]) { /* 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
- 0x58100007, // 0011 LDCONST R4 K7
- 0x5C140200, // 0012 MOVE R5 R1
- 0x7C080600, // 0013 CALL R2 3
- 0x90020002, // 0014 SETMBR R0 K0 R2
- 0x88080100, // 0015 GETMBR R2 R0 K0
- 0x8C080508, // 0016 GETMET R2 R2 K8
- 0x84100000, // 0017 CLOSURE R4 P0
- 0x7C080400, // 0018 CALL R2 2
- 0xA0000000, // 0019 CLOSE R0
- 0x80000000, // 001A 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 class: Matter_Device
********************************************************************/
be_local_class(Matter_Device,
- 35,
+ 37,
NULL,
- be_nested_map(107,
+ be_nested_map(110,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(msg_received, -1), be_const_closure(Matter_Device_msg_received_closure) },
- { be_const_key_weak(PASSCODE_INVALID, 91), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ { be_const_key_weak(clean_remotes, -1), be_const_closure(Matter_Device_clean_remotes_closure) },
+ { be_const_key_weak(plugins, 84), be_const_var(1) },
+ { be_const_key_weak(autoconf_sensors_list, 41), be_const_closure(Matter_Device_autoconf_sensors_list_closure) },
+ { be_const_key_weak(tick, -1), be_const_var(11) },
+ { be_const_key_weak(process_attribute_read_solo, -1), be_const_closure(Matter_Device_process_attribute_read_solo_closure) },
+ { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(26) },
+ { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) },
+ { be_const_key_weak(commissioning_iterations, -1), be_const_var(13) },
+ { be_const_key_weak(root_passcode, -1), be_const_var(29) },
+ { 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(mdns_remove_PASE, -1), be_const_closure(Matter_Device_mdns_remove_PASE_closure) },
+ { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(Matter_Device_bridge_add_endpoint_closure) },
+ { be_const_key_weak(root_discriminator, 35), be_const_var(28) },
+ { be_const_key_weak(PASSCODE_INVALID, -1), 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),
@@ -5672,111 +5772,102 @@ be_local_class(Matter_Device,
be_const_int(12345678),
be_const_int(87654321),
})) ) } )) },
- { be_const_key_weak(signal_endpoints_changed, 56), be_const_closure(Matter_Device_signal_endpoints_changed_closure) },
- { be_const_key_weak(register_native_classes, 65), be_const_closure(Matter_Device_register_native_classes_closure) },
- { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(Matter_Device__compute_pbkdf_closure) },
- { be_const_key_weak(hostname_eth, -1), be_const_var(21) },
- { be_const_key_weak(productid, -1), be_const_var(23) },
- { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) },
- { be_const_key_weak(_start_udp, -1), be_const_closure(Matter_Device__start_udp_closure) },
- { be_const_key_weak(started, 69), be_const_var(0) },
- { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) },
- { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) },
- { be_const_key_weak(root_discriminator, -1), be_const_var(27) },
- { be_const_key_weak(root_w0, 98), be_const_var(33) },
- { be_const_key_weak(mdns_remove_PASE, 27), be_const_closure(Matter_Device_mdns_remove_PASE_closure) },
- { be_const_key_weak(ui, -1), be_const_var(9) },
- { be_const_key_weak(commissioning_w0, -1), be_const_var(15) },
- { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(19) },
- { be_const_key_weak(bridge_remove_endpoint, 15), be_const_closure(Matter_Device_bridge_remove_endpoint_closure) },
- { be_const_key_weak(save_before_restart, 5), be_const_closure(Matter_Device_save_before_restart_closure) },
- { be_const_key_weak(k2l, -1), be_const_static_closure(Matter_Device_k2l_closure) },
- { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(Matter_Device_mdns_announce_PASE_closure) },
- { be_const_key_weak(vendorid, -1), be_const_var(22) },
- { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) },
- { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(Matter_Device_get_plugin_class_arg_closure) },
- { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(Matter_Device_event_fabrics_saved_closure) },
- { be_const_key_weak(register_commands, 16), be_const_closure(Matter_Device_register_commands_closure) },
- { be_const_key_weak(VENDOR_ID, 106), be_const_int(65521) },
- { be_const_key_weak(plugins_config_remotes, -1), be_const_var(5) },
- { be_const_key_weak(commissioning_iterations, -1), be_const_var(12) },
- { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(Matter_Device__init_basic_commissioning_closure) },
- { be_const_key_weak(plugins_config, 93), be_const_var(4) },
- { be_const_key_weak(commissioning_admin_fabric, 57), be_const_var(17) },
- { be_const_key_weak(mdns_pase_wifi, 10), be_const_var(25) },
- { be_const_key_weak(root_passcode, -1), be_const_var(28) },
- { be_const_key_weak(register_http_remote, 99), be_const_closure(Matter_Device_register_http_remote_closure) },
- { be_const_key_weak(start_operational_discovery, -1), be_const_closure(Matter_Device_start_operational_discovery_closure) },
- { be_const_key_weak(compute_qrcode_content, 20), be_const_closure(Matter_Device_compute_qrcode_content_closure) },
- { be_const_key_weak(adjust_next_ep, -1), be_const_closure(Matter_Device_adjust_next_ep_closure) },
- { be_const_key_weak(update_remotes_info, -1), be_const_closure(Matter_Device_update_remotes_info_closure) },
- { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(Matter_Device_autoconf_sensors_list_closure) },
- { be_const_key_weak(next_ep, -1), be_const_var(30) },
- { be_const_key_weak(message_handler, -1), be_const_var(7) },
- { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(Matter_Device_start_basic_commissioning_closure) },
- { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(Matter_Device_get_plugin_class_displayname_closure) },
- { be_const_key_weak(hostname_wifi, 36), be_const_var(20) },
+ { be_const_key_weak(stop_basic_commissioning, 90), be_const_closure(Matter_Device_stop_basic_commissioning_closure) },
{ be_const_key_weak(start_commissioning_complete, -1), be_const_closure(Matter_Device_start_commissioning_complete_closure) },
- { be_const_key_weak(stop, 60), be_const_closure(Matter_Device_stop_closure) },
- { be_const_key_weak(remove_fabric, -1), be_const_closure(Matter_Device_remove_fabric_closure) },
- { be_const_key_weak(generate_random_passcode, 52), be_const_closure(Matter_Device_generate_random_passcode_closure) },
- { be_const_key_weak(received_ack, -1), be_const_closure(Matter_Device_received_ack_closure) },
- { be_const_key_weak(MtrJoin, 39), be_const_closure(Matter_Device_MtrJoin_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(load_param, -1), be_const_closure(Matter_Device_load_param_closure) },
- { be_const_key_weak(ipv4only, 1), be_const_var(29) },
- { be_const_key_weak(stop_basic_commissioning, 41), be_const_closure(Matter_Device_stop_basic_commissioning_closure) },
- { be_const_key_weak(commissioning_salt, -1), be_const_var(14) },
- { be_const_key_weak(commissioning_discriminator, 44), be_const_var(13) },
- { be_const_key_weak(sessions, -1), be_const_var(8) },
- { be_const_key_weak(start_commissioning_complete_deferred, 49), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) },
- { be_const_key_weak(root_L, 23), be_const_var(34) },
- { be_const_key_weak(plugins_persist, -1), be_const_var(2) },
- { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) },
- { be_const_key_weak(tick, 61), be_const_var(10) },
- { be_const_key_weak(register_plugin_class, 87), be_const_closure(Matter_Device_register_plugin_class_closure) },
- { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) },
- { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(Matter_Device_is_root_commissioning_open_closure) },
- { be_const_key_weak(plugins, -1), be_const_var(1) },
- { be_const_key_weak(start, -1), be_const_closure(Matter_Device_start_closure) },
- { be_const_key_weak(commissioning_L, 68), be_const_var(16) },
- { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(Matter_Device_bridge_add_endpoint_closure) },
- { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) },
- { be_const_key_weak(conf_to_log, 74), be_const_static_closure(Matter_Device_conf_to_log_closure) },
- { be_const_key_weak(udp_server, -1), be_const_var(6) },
- { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(Matter_Device_get_plugin_remote_info_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Device_invoke_request_closure) },
- { be_const_key_weak(msg_send, 67), be_const_closure(Matter_Device_msg_send_closure) },
- { be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Device_attribute_updated_closure) },
- { be_const_key_weak(every_250ms, 64), be_const_closure(Matter_Device_every_250ms_closure) },
- { be_const_key_weak(save_param, -1), be_const_closure(Matter_Device_save_param_closure) },
- { be_const_key_weak(commissioning_open, -1), be_const_var(11) },
- { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(Matter_Device__mdns_announce_hostname_closure) },
- { be_const_key_weak(PASE_TIMEOUT, 32), be_const_int(600) },
+ { be_const_key_weak(root_iterations, -1), be_const_var(33) },
+ { be_const_key_weak(get_plugin_remote_info, 94), be_const_closure(Matter_Device_get_plugin_remote_info_closure) },
+ { be_const_key_weak(sessions, -1), be_const_var(9) },
+ { be_const_key_weak(commissioning_L, -1), be_const_var(17) },
+ { be_const_key_weak(commissioning_admin_fabric, 82), be_const_var(18) },
+ { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(20) },
+ { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) },
{ be_const_key_weak(process_attribute_expansion, -1), be_const_closure(Matter_Device_process_attribute_expansion_closure) },
- { be_const_key_weak(_instantiate_plugins_from_config, 55), be_const_closure(Matter_Device__instantiate_plugins_from_config_closure) },
- { be_const_key_weak(every_50ms, 53), be_const_closure(Matter_Device_every_50ms_closure) },
- { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) },
- { be_const_key_weak(clean_remotes, -1), be_const_closure(Matter_Device_clean_remotes_closure) },
- { be_const_key_weak(mdns_pase_eth, -1), be_const_var(24) },
+ { be_const_key_weak(hostname_eth, 63), be_const_var(22) },
+ { be_const_key_weak(autoconf_device, 78), be_const_closure(Matter_Device_autoconf_device_closure) },
+ { be_const_key_weak(next_ep, -1), be_const_var(32) },
+ { be_const_key_weak(stop, 92), be_const_closure(Matter_Device_stop_closure) },
+ { be_const_key_weak(msg_received, 36), be_const_closure(Matter_Device_msg_received_closure) },
+ { be_const_key_weak(k2l, -1), be_const_static_closure(Matter_Device_k2l_closure) },
+ { be_const_key_weak(register_http_remote, 11), be_const_closure(Matter_Device_register_http_remote_closure) },
+ { be_const_key_weak(get_plugin_class_arg, 106), be_const_closure(Matter_Device_get_plugin_class_arg_closure) },
+ { be_const_key_weak(FILENAME, 91), be_nested_str_weak(_matter_device_X2Ejson) },
+ { be_const_key_weak(compute_manual_pairing_code, 104), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) },
{ be_const_key_weak(is_commissioning_open, -1), be_const_closure(Matter_Device_is_commissioning_open_closure) },
- { be_const_key_weak(autoconf_device_map, -1), be_const_closure(Matter_Device_autoconf_device_map_closure) },
- { be_const_key_weak(http_remotes, -1), be_const_var(26) },
- { be_const_key_weak(autoconf_device, 34), be_const_closure(Matter_Device_autoconf_device_closure) },
- { be_const_key_weak(root_salt, 58), be_const_var(32) },
- { 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(k2l_num, -1), be_const_static_closure(Matter_Device_k2l_num_closure) },
- { be_const_key_weak(start_mdns_announce_hostnames, 22), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) },
+ { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(Matter_Device_event_fabrics_saved_closure) },
+ { be_const_key_weak(root_L, 48), be_const_var(36) },
+ { be_const_key_weak(compute_qrcode_content, 22), be_const_closure(Matter_Device_compute_qrcode_content_closure) },
+ { be_const_key_weak(plugins_config_remotes, -1), be_const_var(5) },
+ { be_const_key_weak(commissioning_open, 25), be_const_var(12) },
+ { be_const_key_weak(every_250ms, 83), be_const_closure(Matter_Device_every_250ms_closure) },
+ { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) },
+ { be_const_key_weak(sort_distinct, 29), be_const_static_closure(Matter_Device_sort_distinct_closure) },
+ { be_const_key_weak(save_param, -1), be_const_closure(Matter_Device_save_param_closure) },
{ be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(Matter_Device_find_plugin_by_endpoint_closure) },
- { be_const_key_weak(sort_distinct, -1), be_const_static_closure(Matter_Device_sort_distinct_closure) },
+ { be_const_key_weak(_compute_pbkdf, 64), be_const_closure(Matter_Device__compute_pbkdf_closure) },
+ { be_const_key_weak(started, -1), be_const_var(0) },
+ { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(Matter_Device_signal_endpoints_changed_closure) },
+ { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(Matter_Device_start_basic_commissioning_closure) },
+ { be_const_key_weak(start, -1), be_const_closure(Matter_Device_start_closure) },
+ { be_const_key_weak(udp_server, -1), be_const_var(6) },
+ { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) },
+ { be_const_key_weak(commissioning_w0, 100), be_const_var(16) },
+ { be_const_key_weak(commissioning_salt, 99), be_const_var(15) },
+ { be_const_key_weak(PRODUCT_ID, 44), be_const_int(32768) },
+ { be_const_key_weak(mdns_pase_eth, 96), be_const_var(25) },
+ { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) },
+ { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) },
+ { be_const_key_weak(_start_udp, 57), be_const_closure(Matter_Device__start_udp_closure) },
+ { be_const_key_weak(load_param, -1), be_const_closure(Matter_Device_load_param_closure) },
+ { be_const_key_weak(register_native_classes, -1), be_const_closure(Matter_Device_register_native_classes_closure) },
+ { be_const_key_weak(register_commands, -1), be_const_closure(Matter_Device_register_commands_closure) },
+ { be_const_key_weak(autoconf_device_map, -1), be_const_closure(Matter_Device_autoconf_device_map_closure) },
+ { be_const_key_weak(received_ack, -1), be_const_closure(Matter_Device_received_ack_closure) },
+ { be_const_key_weak(disable_bridge_mode, -1), be_const_var(31) },
+ { be_const_key_weak(start_commissioning_complete_deferred, 93), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) },
+ { be_const_key_weak(plugins_config, -1), be_const_var(4) },
+ { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) },
+ { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(Matter_Device__mdns_announce_hostname_closure) },
+ { be_const_key_weak(register_plugin_class, -1), be_const_closure(Matter_Device_register_plugin_class_closure) },
+ { be_const_key_weak(plugins_persist, -1), be_const_var(2) },
+ { be_const_key_weak(generate_random_passcode, 49), be_const_closure(Matter_Device_generate_random_passcode_closure) },
+ { be_const_key_weak(profiler, 21), be_const_var(7) },
+ { be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Device_attribute_updated_closure) },
+ { be_const_key_weak(MtrJoin, 3), be_const_closure(Matter_Device_MtrJoin_closure) },
+ { be_const_key_weak(init, 79), be_const_closure(Matter_Device_init_closure) },
+ { be_const_key_weak(get_plugin_class_displayname, 70), be_const_closure(Matter_Device_get_plugin_class_displayname_closure) },
+ { be_const_key_weak(bridge_remove_endpoint, 60), be_const_closure(Matter_Device_bridge_remove_endpoint_closure) },
+ { be_const_key_weak(message_handler, -1), be_const_var(8) },
+ { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(Matter_Device_start_root_basic_commissioning_closure) },
+ { be_const_key_weak(ipv4only, -1), be_const_var(30) },
+ { be_const_key_weak(productid, -1), be_const_var(24) },
+ { 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(conf_to_log, 33), be_const_static_closure(Matter_Device_conf_to_log_closure) },
+ { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(Matter_Device__instantiate_plugins_from_config_closure) },
+ { be_const_key_weak(root_w0, 73), be_const_var(35) },
+ { be_const_key_weak(hostname_wifi, -1), be_const_var(21) },
+ { be_const_key_weak(invoke_request, 69), be_const_closure(Matter_Device_invoke_request_closure) },
+ { be_const_key_weak(every_50ms, 66), be_const_closure(Matter_Device_every_50ms_closure) },
+ { be_const_key_weak(_init_basic_commissioning, 45), be_const_closure(Matter_Device__init_basic_commissioning_closure) },
+ { be_const_key_weak(adjust_next_ep, -1), be_const_closure(Matter_Device_adjust_next_ep_closure) },
+ { be_const_key_weak(root_salt, -1), be_const_var(34) },
+ { be_const_key_weak(ui, 108), be_const_var(10) },
+ { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) },
+ { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(Matter_Device__trigger_read_sensors_closure) },
+ { be_const_key_weak(update_remotes_info, 47), be_const_closure(Matter_Device_update_remotes_info_closure) },
{ be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_closure) },
- { be_const_key_weak(_trigger_read_sensors, 11), be_const_closure(Matter_Device__trigger_read_sensors_closure) },
- { be_const_key_weak(root_iterations, -1), be_const_var(31) },
- { be_const_key_weak(commissioning_instance_wifi, 8), be_const_var(18) },
- { be_const_key_weak(init, 6), be_const_closure(Matter_Device_init_closure) },
- { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) },
- { be_const_key_weak(start_root_basic_commissioning, 2), be_const_closure(Matter_Device_start_root_basic_commissioning_closure) },
+ { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(Matter_Device_mdns_announce_PASE_closure) },
+ { be_const_key_weak(save_before_restart, 43), be_const_closure(Matter_Device_save_before_restart_closure) },
+ { be_const_key_weak(msg_send, -1), be_const_closure(Matter_Device_msg_send_closure) },
+ { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) },
+ { be_const_key_weak(k2l_num, -1), be_const_static_closure(Matter_Device_k2l_num_closure) },
+ { be_const_key_weak(vendorid, -1), be_const_var(23) },
+ { be_const_key_weak(http_remotes, -1), be_const_var(27) },
{ be_const_key_weak(plugins_classes, -1), be_const_var(3) },
+ { be_const_key_weak(commissioning_discriminator, -1), be_const_var(14) },
+ { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(Matter_Device_is_root_commissioning_open_closure) },
+ { be_const_key_weak(remove_fabric, -1), be_const_closure(Matter_Device_remove_fabric_closure) },
+ { be_const_key_weak(start_operational_discovery, -1), be_const_closure(Matter_Device_start_operational_discovery_closure) },
+ { be_const_key_weak(PBKDF_ITERATIONS, 2), be_const_int(1000) },
})),
be_str_weak(Matter_Device)
);
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 59867c307..4888f31a9 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
@@ -129,11 +129,10 @@ be_local_closure(Matter_Expirable_has_expired, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
+ ( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(rtc),
- /* K2 */ be_nested_str_weak(utc),
- /* K3 */ be_nested_str_weak(_expiration),
+ /* K1 */ be_nested_str_weak(rtc_utc),
+ /* K2 */ be_nested_str_weak(_expiration),
}),
be_str_weak(has_expired),
&be_const_str_solidified,
@@ -144,12 +143,12 @@ be_local_closure(Matter_Expirable_has_expired, /* name */
0xB80A0000, // 0003 GETNGBL R2 K0
0x8C080501, // 0004 GETMET R2 R2 K1
0x7C080200, // 0005 CALL R2 1
- 0x94040502, // 0006 GETIDX R1 R2 K2
- 0x88080103, // 0007 GETMBR R2 R0 K3
+ 0x5C040400, // 0006 MOVE R1 R2
+ 0x88080102, // 0007 GETMBR R2 R0 K2
0x4C0C0000, // 0008 LDNIL R3
0x20080403, // 0009 NE R2 R2 R3
0x780A0002, // 000A JMPF R2 #000E
- 0x88080103, // 000B GETMBR R2 R0 K3
+ 0x88080102, // 000B GETMBR R2 R0 K2
0x28080202, // 000C GE R2 R1 R2
0x80040400, // 000D RET 1 R2
0x50080000, // 000E LDBOOL R2 0 0
@@ -224,11 +223,10 @@ be_local_closure(Matter_Expirable_set_expire_in_seconds, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
+ ( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(rtc),
- /* K2 */ be_nested_str_weak(utc),
- /* K3 */ be_nested_str_weak(set_expire_time),
+ /* K1 */ be_nested_str_weak(rtc_utc),
+ /* K2 */ be_nested_str_weak(set_expire_time),
}),
be_str_weak(set_expire_in_seconds),
&be_const_str_solidified,
@@ -243,8 +241,8 @@ be_local_closure(Matter_Expirable_set_expire_in_seconds, /* name */
0xB80E0000, // 0007 GETNGBL R3 K0
0x8C0C0701, // 0008 GETMET R3 R3 K1
0x7C0C0200, // 0009 CALL R3 1
- 0x94080702, // 000A GETIDX R2 R3 K2
- 0x8C0C0103, // 000B GETMET R3 R0 K3
+ 0x5C080600, // 000A MOVE R2 R3
+ 0x8C0C0102, // 000B GETMET R3 R0 K2
0x00140401, // 000C ADD R5 R2 R1
0x7C0C0400, // 000D CALL R3 2
0x80000000, // 000E 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 af3123804..046f20836 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
@@ -151,44 +151,51 @@ be_local_closure(Matter_Fabric_add_session, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
+ ( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(_sessions),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(_MAX_CASE),
- /* K3 */ be_nested_str_weak(remove),
- /* K4 */ be_nested_str_weak(get_oldest_session),
- /* K5 */ be_nested_str_weak(push),
+ /* K3 */ be_nested_str_weak(get_oldest_session),
+ /* K4 */ be_nested_str_weak(remove),
+ /* K5 */ be_nested_str_weak(_store),
+ /* K6 */ be_nested_str_weak(remove_session),
+ /* K7 */ be_nested_str_weak(push),
}),
be_str_weak(add_session),
&be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
+ ( &(const binstruction[32]) { /* 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
- 0x780A0012, // 0006 JMPF R2 #001A
+ 0x780A0017, // 0006 JMPF R2 #001F
0x6008000C, // 0007 GETGBL R2 G12
0x880C0100, // 0008 GETMBR R3 R0 K0
0x7C080200, // 0009 CALL R2 1
0x880C0102, // 000A GETMBR R3 R0 K2
0x28080403, // 000B GE R2 R2 R3
- 0x780A0008, // 000C JMPF R2 #0016
- 0x88080100, // 000D GETMBR R2 R0 K0
- 0x8C080503, // 000E GETMET R2 R2 K3
- 0x88100100, // 000F GETMBR R4 R0 K0
- 0x8C100901, // 0010 GETMET R4 R4 K1
- 0x8C180104, // 0011 GETMET R6 R0 K4
- 0x7C180200, // 0012 CALL R6 1
- 0x7C100400, // 0013 CALL R4 2
- 0x7C080400, // 0014 CALL R2 2
- 0x7001FFF0, // 0015 JMP #0007
- 0x88080100, // 0016 GETMBR R2 R0 K0
- 0x8C080505, // 0017 GETMET R2 R2 K5
- 0x5C100200, // 0018 MOVE R4 R1
- 0x7C080400, // 0019 CALL R2 2
- 0x80000000, // 001A RET 0
+ 0x780A000D, // 000C JMPF R2 #001B
+ 0x8C080103, // 000D GETMET R2 R0 K3
+ 0x7C080200, // 000E CALL R2 1
+ 0x880C0100, // 000F GETMBR R3 R0 K0
+ 0x8C0C0704, // 0010 GETMET R3 R3 K4
+ 0x88140100, // 0011 GETMBR R5 R0 K0
+ 0x8C140B01, // 0012 GETMET R5 R5 K1
+ 0x5C1C0400, // 0013 MOVE R7 R2
+ 0x7C140400, // 0014 CALL R5 2
+ 0x7C0C0400, // 0015 CALL R3 2
+ 0x880C0105, // 0016 GETMBR R3 R0 K5
+ 0x8C0C0706, // 0017 GETMET R3 R3 K6
+ 0x5C140400, // 0018 MOVE R5 R2
+ 0x7C0C0400, // 0019 CALL R3 2
+ 0x7001FFEB, // 001A JMP #0007
+ 0x88080100, // 001B GETMBR R2 R0 K0
+ 0x8C080507, // 001C GETMET R2 R2 K7
+ 0x5C100200, // 001D MOVE R4 R1
+ 0x7C080400, // 001E CALL R2 2
+ 0x80000000, // 001F RET 0
})
)
);
@@ -382,7 +389,7 @@ be_local_closure(Matter_Fabric_init, /* 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(crypto),
/* K1 */ be_nested_str_weak(_store),
/* K2 */ be_nested_str_weak(_sessions),
@@ -392,19 +399,18 @@ be_local_closure(Matter_Fabric_init, /* name */
/* K6 */ be_nested_str_weak(),
/* K7 */ be_nested_str_weak(created),
/* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(rtc),
- /* K10 */ be_nested_str_weak(utc),
- /* K11 */ be_nested_str_weak(_counter_group_data_snd_impl),
- /* K12 */ be_nested_str_weak(Counter),
- /* K13 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
- /* K14 */ be_nested_str_weak(counter_group_data_snd),
- /* K15 */ be_nested_str_weak(next),
- /* K16 */ be_nested_str_weak(_GROUP_SND_INCR),
- /* K17 */ be_nested_str_weak(counter_group_ctrl_snd),
+ /* 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[33]) { /* code */
+ ( &(const binstruction[32]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x90020201, // 0001 SETMBR R0 K1 R1
0xB80E0600, // 0002 GETNGBL R3 K3
@@ -415,29 +421,28 @@ be_local_closure(Matter_Fabric_init, /* name */
0xB80E1000, // 0007 GETNGBL R3 K8
0x8C0C0709, // 0008 GETMET R3 R3 K9
0x7C0C0200, // 0009 CALL R3 1
- 0x940C070A, // 000A GETIDX R3 R3 K10
- 0x90020E03, // 000B SETMBR R0 K7 R3
- 0xB80E0600, // 000C GETNGBL R3 K3
- 0x8C0C070C, // 000D GETMET R3 R3 K12
- 0x7C0C0200, // 000E CALL R3 1
- 0x90021603, // 000F SETMBR R0 K11 R3
- 0xB80E0600, // 0010 GETNGBL R3 K3
- 0x8C0C070C, // 0011 GETMET R3 R3 K12
- 0x7C0C0200, // 0012 CALL R3 1
- 0x90021A03, // 0013 SETMBR R0 K13 R3
- 0x880C010B, // 0014 GETMBR R3 R0 K11
- 0x8C0C070F, // 0015 GETMET R3 R3 K15
- 0x7C0C0200, // 0016 CALL R3 1
- 0x88100110, // 0017 GETMBR R4 R0 K16
- 0x000C0604, // 0018 ADD R3 R3 R4
- 0x90021C03, // 0019 SETMBR R0 K14 R3
- 0x880C010B, // 001A GETMBR R3 R0 K11
- 0x8C0C070F, // 001B GETMET R3 R3 K15
- 0x7C0C0200, // 001C CALL R3 1
- 0x88100110, // 001D GETMBR R4 R0 K16
- 0x000C0604, // 001E ADD R3 R3 R4
- 0x90022203, // 001F SETMBR R0 K17 R3
- 0x80000000, // 0020 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h
index 3b78d3ab2..ee1c0bc37 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h
@@ -19,28 +19,26 @@ be_local_closure(Matter_HTTP_remote_device_is_alive, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
+ ( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(reachable),
/* K1 */ be_nested_str_weak(reachable_utc),
/* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(rtc),
- /* K4 */ be_nested_str_weak(utc),
+ /* K3 */ be_nested_str_weak(rtc_utc),
}),
be_str_weak(device_is_alive),
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x78060007, // 0000 JMPF R1 #0009
+ ( &(const binstruction[11]) { /* code */
+ 0x78060006, // 0000 JMPF R1 #0008
0x50080200, // 0001 LDBOOL R2 1 0
0x90020002, // 0002 SETMBR R0 K0 R2
0xB80A0400, // 0003 GETNGBL R2 K2
0x8C080503, // 0004 GETMET R2 R2 K3
0x7C080200, // 0005 CALL R2 1
- 0x94080504, // 0006 GETIDX R2 R2 K4
- 0x90020202, // 0007 SETMBR R0 K1 R2
- 0x70020001, // 0008 JMP #000B
- 0x50080000, // 0009 LDBOOL R2 0 0
- 0x90020002, // 000A SETMBR R0 K0 R2
- 0x80000000, // 000B RET 0
+ 0x90020202, // 0006 SETMBR R0 K1 R2
+ 0x70020001, // 0007 JMP #000A
+ 0x50080000, // 0008 LDBOOL R2 0 0
+ 0x90020002, // 0009 SETMBR R0 K0 R2
+ 0x80000000, // 000A RET 0
})
)
);
@@ -60,7 +58,7 @@ be_local_closure(Matter_HTTP_remote_parse_update, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
+ ( &(const bvalue[28]) { /* constants */
/* K0 */ be_const_int(0),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(DeviceName),
@@ -87,7 +85,8 @@ be_local_closure(Matter_HTTP_remote_parse_update, /* name */
/* K23 */ be_nested_str_weak(Mac),
/* K24 */ be_nested_str_weak(mac),
/* K25 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20mac_X3D_X27_X25s_X27),
- /* K26 */ be_nested_str_weak(info_changed),
+ /* K26 */ be_nested_str_weak(UPDATE_CMD5),
+ /* K27 */ be_nested_str_weak(info_changed),
}),
be_str_weak(parse_update),
&be_const_str_solidified,
@@ -230,11 +229,11 @@ be_local_closure(Matter_HTTP_remote_parse_update, /* name */
0x7C140600, // 0087 CALL R5 3
0x500C0200, // 0088 LDBOOL R3 1 0
0x8C14010C, // 0089 GETMET R5 R0 K12
- 0x881C010D, // 008A GETMBR R7 R0 K13
+ 0x881C011A, // 008A GETMBR R7 R0 K26
0x8820010E, // 008B GETMBR R8 R0 K14
0x7C140600, // 008C CALL R5 3
0x780E0001, // 008D JMPF R3 #0090
- 0x8C10011A, // 008E GETMET R4 R0 K26
+ 0x8C10011B, // 008E GETMET R4 R0 K27
0x7C100200, // 008F CALL R4 1
0x80000000, // 0090 RET 0
})
@@ -459,36 +458,34 @@ be_local_closure(Matter_HTTP_remote_web_last_seen, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
+ ( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(reachable_utc),
/* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(rtc),
- /* K4 */ be_nested_str_weak(utc),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(seconds_to_dhm),
+ /* K3 */ be_nested_str_weak(rtc_utc),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(seconds_to_dhm),
}),
be_str_weak(web_last_seen),
&be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
+ ( &(const binstruction[17]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x5409FFFE, // 0001 LDINT R2 -1
0x880C0101, // 0002 GETMBR R3 R0 K1
0x4C100000, // 0003 LDNIL R4
0x200C0604, // 0004 NE R3 R3 R4
- 0x780E0006, // 0005 JMPF R3 #000D
+ 0x780E0005, // 0005 JMPF R3 #000C
0xB80E0400, // 0006 GETNGBL R3 K2
0x8C0C0703, // 0007 GETMET R3 R3 K3
0x7C0C0200, // 0008 CALL R3 1
- 0x940C0704, // 0009 GETIDX R3 R3 K4
- 0x88100101, // 000A GETMBR R4 R0 K1
- 0x040C0604, // 000B SUB R3 R3 R4
- 0x5C080600, // 000C MOVE R2 R3
- 0xB80E0A00, // 000D GETNGBL R3 K5
- 0x8C0C0706, // 000E GETMET R3 R3 K6
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x80040600, // 0011 RET 1 R3
+ 0x88100101, // 0009 GETMBR R4 R0 K1
+ 0x040C0604, // 000A SUB R3 R3 R4
+ 0x5C080600, // 000B MOVE R2 R3
+ 0xB80E0800, // 000C GETNGBL R3 K4
+ 0x8C0C0705, // 000D GETMET R3 R3 K5
+ 0x5C140400, // 000E MOVE R5 R2
+ 0x7C0C0400, // 000F CALL R3 2
+ 0x80040600, // 0010 RET 1 R3
})
)
);
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 c6fed00fd..e9a29ad82 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
@@ -7,11 +7,11 @@
extern const bclass be_class_Matter_IM;
/********************************************************************
-** Solidified function: expire_sendqueue
+** Solidified function: every_250ms
********************************************************************/
-be_local_closure(Matter_IM_expire_sendqueue, /* name */
+be_local_closure(Matter_IM_every_250ms, /* name */
be_nested_proto(
- 6, /* nstack */
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -19,43 +19,826 @@ be_local_closure(Matter_IM_expire_sendqueue, /* name */
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(send_queue),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(time_reached),
- /* K4 */ be_nested_str_weak(expiration),
- /* K5 */ be_nested_str_weak(reached_timeout),
- /* K6 */ be_nested_str_weak(remove),
- /* K7 */ be_const_int(1),
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(subs_shop),
+ /* K1 */ be_nested_str_weak(every_250ms),
}),
- be_str_weak(expire_sendqueue),
+ be_str_weak(every_250ms),
&be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x6008000C, // 0001 GETGBL R2 G12
- 0x880C0101, // 0002 GETMBR R3 R0 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x14080202, // 0004 LT R2 R1 R2
- 0x780A000F, // 0005 JMPF R2 #0016
- 0x88080101, // 0006 GETMBR R2 R0 K1
- 0x94080401, // 0007 GETIDX R2 R2 R1
- 0xB80E0400, // 0008 GETNGBL R3 K2
- 0x8C0C0703, // 0009 GETMET R3 R3 K3
- 0x88140504, // 000A GETMBR R5 R2 K4
- 0x7C0C0400, // 000B CALL R3 2
- 0x780E0006, // 000C JMPF R3 #0014
- 0x8C0C0505, // 000D GETMET R3 R2 K5
- 0x7C0C0200, // 000E CALL R3 1
- 0x880C0101, // 000F GETMBR R3 R0 K1
- 0x8C0C0706, // 0010 GETMET R3 R3 K6
- 0x5C140200, // 0011 MOVE R5 R1
- 0x7C0C0400, // 0012 CALL R3 2
- 0x70020000, // 0013 JMP #0015
- 0x00040307, // 0014 ADD R1 R1 K7
- 0x7001FFEA, // 0015 JMP #0001
- 0x4C080000, // 0016 LDNIL R2
- 0x80040400, // 0017 RET 1 R2
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_incoming_ack
+********************************************************************/
+be_local_closure(Matter_IM_process_incoming_ack, /* 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(find_sendqueue_by_exchangeid),
+ /* K1 */ be_nested_str_weak(exchange_id),
+ /* K2 */ be_nested_str_weak(ack_received),
+ }),
+ be_str_weak(process_incoming_ack),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x88100301, // 0001 GETMBR R4 R1 K1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x780A0003, // 0003 JMPF R2 #0008
+ 0x8C0C0502, // 0004 GETMET R3 R2 K2
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x80040600, // 0007 RET 1 R3
+ 0x500C0000, // 0008 LDBOOL R3 0 0
+ 0x80040600, // 0009 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: subscribe_response
+********************************************************************/
+be_local_closure(Matter_IM_subscribe_response, /* 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[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(SubscribeResponseMessage),
+ /* K2 */ be_nested_str_weak(from_TLV),
+ }),
+ be_str_weak(subscribe_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x50100000, // 0006 LDBOOL R4 0 0
+ 0x80040800, // 0007 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_write_response
+********************************************************************/
+be_local_closure(Matter_IM_process_write_response, /* 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[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(WriteResponseMessage),
+ /* K2 */ be_nested_str_weak(from_TLV),
+ }),
+ be_str_weak(process_write_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x50100000, // 0006 LDBOOL R4 0 0
+ 0x80040800, // 0007 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_status_response
+********************************************************************/
+be_local_closure(Matter_IM_process_status_response, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 3, /* 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(findsubval),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid),
+ /* K3 */ be_nested_str_weak(exchange_id),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(SUCCESS),
+ /* K6 */ be_nested_str_weak(status_ok_received),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(log),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found),
+ /* K10 */ be_nested_str_weak(session),
+ /* K11 */ be_nested_str_weak(local_session_id),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_nested_str_weak(status_error_received),
+ /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid),
+ }),
+ be_str_weak(process_status_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x8C0C0500, // 0000 GETMET R3 R2 K0
+ 0x58140001, // 0001 LDCONST R5 K1
+ 0x541A00FE, // 0002 LDINT R6 255
+ 0x7C0C0600, // 0003 CALL R3 3
+ 0x8C100102, // 0004 GETMET R4 R0 K2
+ 0x88180303, // 0005 GETMBR R6 R1 K3
+ 0x7C100400, // 0006 CALL R4 2
+ 0xB8160800, // 0007 GETNGBL R5 K4
+ 0x88140B05, // 0008 GETMBR R5 R5 K5
+ 0x1C140605, // 0009 EQ R5 R3 R5
+ 0x78160010, // 000A JMPF R5 #001C
+ 0x78120004, // 000B JMPF R4 #0011
+ 0x8C140906, // 000C GETMET R5 R4 K6
+ 0x5C1C0200, // 000D MOVE R7 R1
+ 0x7C140400, // 000E CALL R5 2
+ 0x80040A00, // 000F RET 1 R5
+ 0x70020009, // 0010 JMP #001B
+ 0xB8160E00, // 0011 GETNGBL R5 K7
+ 0x8C140B08, // 0012 GETMET R5 R5 K8
+ 0x601C0018, // 0013 GETGBL R7 G24
+ 0x58200009, // 0014 LDCONST R8 K9
+ 0x8824030A, // 0015 GETMBR R9 R1 K10
+ 0x8824130B, // 0016 GETMBR R9 R9 K11
+ 0x88280303, // 0017 GETMBR R10 R1 K3
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x54220003, // 0019 LDINT R8 4
+ 0x7C140600, // 001A CALL R5 3
+ 0x7002000E, // 001B JMP #002B
+ 0xB8160E00, // 001C GETNGBL R5 K7
+ 0x8C140B08, // 001D GETMET R5 R5 K8
+ 0x601C0018, // 001E GETGBL R7 G24
+ 0x5820000C, // 001F LDCONST R8 K12
+ 0x5C240600, // 0020 MOVE R9 R3
+ 0x7C1C0400, // 0021 CALL R7 2
+ 0x5820000D, // 0022 LDCONST R8 K13
+ 0x7C140600, // 0023 CALL R5 3
+ 0x78120005, // 0024 JMPF R4 #002B
+ 0x8C14090E, // 0025 GETMET R5 R4 K14
+ 0x5C1C0200, // 0026 MOVE R7 R1
+ 0x7C140400, // 0027 CALL R5 2
+ 0x8C14010F, // 0028 GETMET R5 R0 K15
+ 0x881C0303, // 0029 GETMBR R7 R1 K3
+ 0x7C140400, // 002A CALL R5 2
+ 0x50140000, // 002B LDBOOL R5 0 0
+ 0x80040A00, // 002C RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_timed_request
+********************************************************************/
+be_local_closure(Matter_IM_process_timed_request, /* 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[12]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TimedRequestMessage),
+ /* K2 */ be_nested_str_weak(from_TLV),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(log),
+ /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i),
+ /* K6 */ be_nested_str_weak(session),
+ /* K7 */ be_nested_str_weak(local_session_id),
+ /* K8 */ be_nested_str_weak(timeout),
+ /* K9 */ be_const_int(3),
+ /* K10 */ be_nested_str_weak(send_status),
+ /* K11 */ be_nested_str_weak(SUCCESS),
+ }),
+ be_str_weak(process_timed_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0xB8120600, // 0006 GETNGBL R4 K3
+ 0x8C100904, // 0007 GETMET R4 R4 K4
+ 0x60180018, // 0008 GETGBL R6 G24
+ 0x581C0005, // 0009 LDCONST R7 K5
+ 0x88200306, // 000A GETMBR R8 R1 K6
+ 0x88201107, // 000B GETMBR R8 R8 K7
+ 0x88240708, // 000C GETMBR R9 R3 K8
+ 0x7C180600, // 000D CALL R6 3
+ 0x581C0009, // 000E LDCONST R7 K9
+ 0x7C100600, // 000F CALL R4 3
+ 0x8C10010A, // 0010 GETMET R4 R0 K10
+ 0x5C180200, // 0011 MOVE R6 R1
+ 0xB81E0000, // 0012 GETNGBL R7 K0
+ 0x881C0F0B, // 0013 GETMBR R7 R7 K11
+ 0x7C100600, // 0014 CALL R4 3
+ 0x50100200, // 0015 LDBOOL R4 1 0
+ 0x80040800, // 0016 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attributedata2raw
+********************************************************************/
+be_local_closure(Matter_IM_attributedata2raw, /* 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[ 7]) { /* constants */
+ /* K0 */ be_nested_str_weak(add),
+ /* K1 */ be_const_int(355795236),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_nested_str_weak(path2raw),
+ /* K4 */ be_nested_str_weak(tag_sub),
+ /* K5 */ be_const_int(2),
+ /* K6 */ be_nested_str_weak(tlv2raw),
+ }),
+ be_str_weak(attributedata2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x8C140300, // 0000 GETMET R5 R1 K0
+ 0x581C0001, // 0001 LDCONST R7 K1
+ 0x5421FFFB, // 0002 LDINT R8 -4
+ 0x7C140600, // 0003 CALL R5 3
+ 0x8C140300, // 0004 GETMET R5 R1 K0
+ 0x581C0002, // 0005 LDCONST R7 K2
+ 0x5421FFFD, // 0006 LDINT R8 -2
+ 0x7C140600, // 0007 CALL R5 3
+ 0x8C140103, // 0008 GETMET R5 R0 K3
+ 0x5C1C0200, // 0009 MOVE R7 R1
+ 0x5C200400, // 000A MOVE R8 R2
+ 0x58240002, // 000B LDCONST R9 K2
+ 0x5C280800, // 000C MOVE R10 R4
+ 0x7C140A00, // 000D CALL R5 5
+ 0x900E0905, // 000E SETMBR R3 K4 K5
+ 0x8C140706, // 000F GETMET R5 R3 K6
+ 0x5C1C0200, // 0010 MOVE R7 R1
+ 0x7C140400, // 0011 CALL R5 2
+ 0x8C140300, // 0012 GETMET R5 R1 K0
+ 0x541E1817, // 0013 LDINT R7 6168
+ 0x5421FFFD, // 0014 LDINT R8 -2
+ 0x7C140600, // 0015 CALL R5 3
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_invoke_request_solo
+********************************************************************/
+be_local_closure(Matter_IM_process_invoke_request_solo, /* name */
+ be_nested_proto(
+ 16, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[45]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(profiler),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(invoke_request_solo_start),
+ /* K4 */ be_nested_str_weak(msg),
+ /* K5 */ be_nested_str_weak(status),
+ /* K6 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
+ /* K7 */ be_nested_str_weak(get_command_name),
+ /* K8 */ be_nested_str_weak(cluster),
+ /* K9 */ be_nested_str_weak(command),
+ /* K10 */ be_nested_str_weak(device),
+ /* K11 */ be_nested_str_weak(invoke_request),
+ /* K12 */ be_nested_str_weak(session),
+ /* K13 */ be_nested_str_weak(command_fields),
+ /* K14 */ be_nested_str_weak(COMMAND_X20DONE),
+ /* K15 */ be_nested_str_weak(_X28),
+ /* K16 */ be_nested_str_weak(_X29_X20),
+ /* K17 */ be_nested_str_weak(),
+ /* K18 */ be_nested_str_weak(endpoint),
+ /* K19 */ be_const_int(0),
+ /* K20 */ be_const_int(2),
+ /* K21 */ be_const_int(3),
+ /* K22 */ be_nested_str_weak(tasmota),
+ /* K23 */ be_nested_str_weak(loglevel),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
+ /* K25 */ be_nested_str_weak(local_session_id),
+ /* K26 */ be_nested_str_weak(add),
+ /* K27 */ be_const_int(354943030),
+ /* K28 */ be_const_int(1),
+ /* K29 */ be_nested_str_weak(SUCCESS),
+ /* K30 */ be_nested_str_weak(invokeresponse2raw),
+ /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
+ /* K32 */ be_nested_str_weak(exchange_id),
+ /* K33 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
+ /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
+ /* K35 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
+ /* K36 */ be_const_int(405077761),
+ /* K37 */ be_nested_str_weak(build_response),
+ /* K38 */ be_nested_str_weak(message_handler),
+ /* K39 */ be_nested_str_weak(raw),
+ /* K40 */ be_nested_str_weak(clear),
+ /* K41 */ be_nested_str_weak(encode_frame),
+ /* K42 */ be_nested_str_weak(encrypt),
+ /* K43 */ be_nested_str_weak(send_response_frame),
+ /* K44 */ be_nested_str_weak(RESPONSE_X20SENT),
+ }),
+ be_str_weak(process_invoke_request_solo),
+ &be_const_str_solidified,
+ ( &(const binstruction[214]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x880C0701, // 0001 GETMBR R3 R3 K1
+ 0x8C0C0702, // 0002 GETMET R3 R3 K2
+ 0x58140003, // 0003 LDCONST R5 K3
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0x900A0801, // 0005 SETMBR R2 K4 R1
+ 0xB80E0000, // 0006 GETNGBL R3 K0
+ 0x880C0706, // 0007 GETMBR R3 R3 K6
+ 0x900A0A03, // 0008 SETMBR R2 K5 R3
+ 0xB80E0000, // 0009 GETNGBL R3 K0
+ 0x8C0C0707, // 000A GETMET R3 R3 K7
+ 0x88140508, // 000B GETMBR R5 R2 K8
+ 0x88180509, // 000C GETMBR R6 R2 K9
+ 0x7C0C0600, // 000D CALL R3 3
+ 0x60100008, // 000E GETGBL R4 G8
+ 0x5C140400, // 000F MOVE R5 R2
+ 0x7C100200, // 0010 CALL R4 1
+ 0x8814010A, // 0011 GETMBR R5 R0 K10
+ 0x8C140B0B, // 0012 GETMET R5 R5 K11
+ 0x881C030C, // 0013 GETMBR R7 R1 K12
+ 0x8820050D, // 0014 GETMBR R8 R2 K13
+ 0x5C240400, // 0015 MOVE R9 R2
+ 0x7C140800, // 0016 CALL R5 4
+ 0xB81A0000, // 0017 GETNGBL R6 K0
+ 0x88180D01, // 0018 GETMBR R6 R6 K1
+ 0x8C180D02, // 0019 GETMET R6 R6 K2
+ 0x5820000E, // 001A LDCONST R8 K14
+ 0x7C180400, // 001B CALL R6 2
+ 0x88180502, // 001C GETMBR R6 R2 K2
+ 0x4C1C0000, // 001D LDNIL R7
+ 0x20180C07, // 001E NE R6 R6 R7
+ 0x781A0005, // 001F JMPF R6 #0026
+ 0x60180008, // 0020 GETGBL R6 G8
+ 0x881C0502, // 0021 GETMBR R7 R2 K2
+ 0x7C180200, // 0022 CALL R6 1
+ 0x001A1E06, // 0023 ADD R6 K15 R6
+ 0x00180D10, // 0024 ADD R6 R6 K16
+ 0x70020000, // 0025 JMP #0027
+ 0x58180011, // 0026 LDCONST R6 K17
+ 0x881C0512, // 0027 GETMBR R7 R2 K18
+ 0x201C0F13, // 0028 NE R7 R7 K19
+ 0x781E0001, // 0029 JMPF R7 #002C
+ 0x581C0014, // 002A LDCONST R7 K20
+ 0x70020000, // 002B JMP #002D
+ 0x581C0015, // 002C LDCONST R7 K21
+ 0xB8222C00, // 002D GETNGBL R8 K22
+ 0x8C201117, // 002E GETMET R8 R8 K23
+ 0x5C280E00, // 002F MOVE R10 R7
+ 0x7C200400, // 0030 CALL R8 2
+ 0x7822000E, // 0031 JMPF R8 #0041
+ 0xB8222C00, // 0032 GETNGBL R8 K22
+ 0x8C201102, // 0033 GETMET R8 R8 K2
+ 0x60280018, // 0034 GETGBL R10 G24
+ 0x582C0018, // 0035 LDCONST R11 K24
+ 0x8830030C, // 0036 GETMBR R12 R1 K12
+ 0x88301919, // 0037 GETMBR R12 R12 K25
+ 0x5C340800, // 0038 MOVE R13 R4
+ 0x780E0001, // 0039 JMPF R3 #003C
+ 0x5C380600, // 003A MOVE R14 R3
+ 0x70020000, // 003B JMP #003D
+ 0x58380011, // 003C LDCONST R14 K17
+ 0x5C3C0C00, // 003D MOVE R15 R6
+ 0x7C280A00, // 003E CALL R10 5
+ 0x5C2C0E00, // 003F MOVE R11 R7
+ 0x7C200600, // 0040 CALL R8 3
+ 0x4C200000, // 0041 LDNIL R8
+ 0x900A0408, // 0042 SETMBR R2 K2 R8
+ 0x60200015, // 0043 GETGBL R8 G21
+ 0x5426002F, // 0044 LDINT R9 48
+ 0x7C200200, // 0045 CALL R8 1
+ 0x8C24111A, // 0046 GETMET R9 R8 K26
+ 0x582C001B, // 0047 LDCONST R11 K27
+ 0x5431FFFB, // 0048 LDINT R12 -4
+ 0x7C240600, // 0049 CALL R9 3
+ 0x8C24111A, // 004A GETMET R9 R8 K26
+ 0x582C001C, // 004B LDCONST R11 K28
+ 0x5830001C, // 004C LDCONST R12 K28
+ 0x7C240600, // 004D CALL R9 3
+ 0x50240200, // 004E LDBOOL R9 1 0
+ 0x1C240A09, // 004F EQ R9 R5 R9
+ 0x74260004, // 0050 JMPT R9 #0056
+ 0x88240505, // 0051 GETMBR R9 R2 K5
+ 0xB82A0000, // 0052 GETNGBL R10 K0
+ 0x8828151D, // 0053 GETMBR R10 R10 K29
+ 0x1C24120A, // 0054 EQ R9 R9 R10
+ 0x78260017, // 0055 JMPF R9 #006E
+ 0xB8260000, // 0056 GETNGBL R9 K0
+ 0x8824131D, // 0057 GETMBR R9 R9 K29
+ 0x900A0A09, // 0058 SETMBR R2 K5 R9
+ 0x8C24011E, // 0059 GETMET R9 R0 K30
+ 0x5C2C1000, // 005A MOVE R11 R8
+ 0x5C300400, // 005B MOVE R12 R2
+ 0x4C340000, // 005C LDNIL R13
+ 0x7C240800, // 005D CALL R9 4
+ 0xB8262C00, // 005E GETNGBL R9 K22
+ 0x8C241317, // 005F GETMET R9 R9 K23
+ 0x582C0015, // 0060 LDCONST R11 K21
+ 0x7C240400, // 0061 CALL R9 2
+ 0x78260009, // 0062 JMPF R9 #006D
+ 0xB8262C00, // 0063 GETNGBL R9 K22
+ 0x8C241302, // 0064 GETMET R9 R9 K2
+ 0x602C0018, // 0065 GETGBL R11 G24
+ 0x5830001F, // 0066 LDCONST R12 K31
+ 0x8834030C, // 0067 GETMBR R13 R1 K12
+ 0x88341B19, // 0068 GETMBR R13 R13 K25
+ 0x88380320, // 0069 GETMBR R14 R1 K32
+ 0x7C2C0600, // 006A CALL R11 3
+ 0x58300015, // 006B LDCONST R12 K21
+ 0x7C240600, // 006C CALL R9 3
+ 0x70020046, // 006D JMP #00B5
+ 0x4C240000, // 006E LDNIL R9
+ 0x20240A09, // 006F NE R9 R5 R9
+ 0x78260018, // 0070 JMPF R9 #008A
+ 0x8C24011E, // 0071 GETMET R9 R0 K30
+ 0x5C2C1000, // 0072 MOVE R11 R8
+ 0x5C300400, // 0073 MOVE R12 R2
+ 0x5C340A00, // 0074 MOVE R13 R5
+ 0x7C240800, // 0075 CALL R9 4
+ 0x5C240600, // 0076 MOVE R9 R3
+ 0x74260000, // 0077 JMPT R9 #0079
+ 0x580C0011, // 0078 LDCONST R3 K17
+ 0xB8262C00, // 0079 GETNGBL R9 K22
+ 0x8C241317, // 007A GETMET R9 R9 K23
+ 0x582C0015, // 007B LDCONST R11 K21
+ 0x7C240400, // 007C CALL R9 2
+ 0x7826000A, // 007D JMPF R9 #0089
+ 0xB8262C00, // 007E GETNGBL R9 K22
+ 0x8C241302, // 007F GETMET R9 R9 K2
+ 0x602C0018, // 0080 GETGBL R11 G24
+ 0x58300021, // 0081 LDCONST R12 K33
+ 0x8834030C, // 0082 GETMBR R13 R1 K12
+ 0x88341B19, // 0083 GETMBR R13 R13 K25
+ 0x5C380400, // 0084 MOVE R14 R2
+ 0x5C3C0600, // 0085 MOVE R15 R3
+ 0x7C2C0800, // 0086 CALL R11 4
+ 0x58300015, // 0087 LDCONST R12 K21
+ 0x7C240600, // 0088 CALL R9 3
+ 0x7002002A, // 0089 JMP #00B5
+ 0x88240505, // 008A GETMBR R9 R2 K5
+ 0x4C280000, // 008B LDNIL R10
+ 0x2024120A, // 008C NE R9 R9 R10
+ 0x78260015, // 008D JMPF R9 #00A4
+ 0x8C24011E, // 008E GETMET R9 R0 K30
+ 0x5C2C1000, // 008F MOVE R11 R8
+ 0x5C300400, // 0090 MOVE R12 R2
+ 0x4C340000, // 0091 LDNIL R13
+ 0x7C240800, // 0092 CALL R9 4
+ 0xB8262C00, // 0093 GETNGBL R9 K22
+ 0x8C241317, // 0094 GETMET R9 R9 K23
+ 0x582C0015, // 0095 LDCONST R11 K21
+ 0x7C240400, // 0096 CALL R9 2
+ 0x7826000A, // 0097 JMPF R9 #00A3
+ 0xB8262C00, // 0098 GETNGBL R9 K22
+ 0x8C241302, // 0099 GETMET R9 R9 K2
+ 0x602C0018, // 009A GETGBL R11 G24
+ 0x58300022, // 009B LDCONST R12 K34
+ 0x8834030C, // 009C GETMBR R13 R1 K12
+ 0x88341B19, // 009D GETMBR R13 R13 K25
+ 0x88380505, // 009E GETMBR R14 R2 K5
+ 0x883C0320, // 009F GETMBR R15 R1 K32
+ 0x7C2C0800, // 00A0 CALL R11 4
+ 0x58300015, // 00A1 LDCONST R12 K21
+ 0x7C240600, // 00A2 CALL R9 3
+ 0x70020010, // 00A3 JMP #00B5
+ 0xB8262C00, // 00A4 GETNGBL R9 K22
+ 0x8C241317, // 00A5 GETMET R9 R9 K23
+ 0x582C0015, // 00A6 LDCONST R11 K21
+ 0x7C240400, // 00A7 CALL R9 2
+ 0x78260009, // 00A8 JMPF R9 #00B3
+ 0xB8262C00, // 00A9 GETNGBL R9 K22
+ 0x8C241302, // 00AA GETMET R9 R9 K2
+ 0x602C0018, // 00AB GETGBL R11 G24
+ 0x58300023, // 00AC LDCONST R12 K35
+ 0x8834030C, // 00AD GETMBR R13 R1 K12
+ 0x88341B19, // 00AE GETMBR R13 R13 K25
+ 0x88380320, // 00AF GETMBR R14 R1 K32
+ 0x7C2C0600, // 00B0 CALL R11 3
+ 0x58300015, // 00B1 LDCONST R12 K21
+ 0x7C240600, // 00B2 CALL R9 3
+ 0x50240000, // 00B3 LDBOOL R9 0 0
+ 0x80041200, // 00B4 RET 1 R9
+ 0x8C24111A, // 00B5 GETMET R9 R8 K26
+ 0x582C0024, // 00B6 LDCONST R11 K36
+ 0x5431FFFB, // 00B7 LDINT R12 -4
+ 0x7C240600, // 00B8 CALL R9 3
+ 0x8C24111A, // 00B9 GETMET R9 R8 K26
+ 0x542E0017, // 00BA LDINT R11 24
+ 0x5830001C, // 00BB LDCONST R12 K28
+ 0x7C240600, // 00BC CALL R9 3
+ 0x8C240325, // 00BD GETMET R9 R1 K37
+ 0x542E0008, // 00BE LDINT R11 9
+ 0x50300200, // 00BF LDBOOL R12 1 0
+ 0x7C240600, // 00C0 CALL R9 3
+ 0x8828010A, // 00C1 GETMBR R10 R0 K10
+ 0x88281526, // 00C2 GETMBR R10 R10 K38
+ 0x882C0327, // 00C3 GETMBR R11 R1 K39
+ 0x8C301728, // 00C4 GETMET R12 R11 K40
+ 0x7C300200, // 00C5 CALL R12 1
+ 0x8C301329, // 00C6 GETMET R12 R9 K41
+ 0x5C381000, // 00C7 MOVE R14 R8
+ 0x5C3C1600, // 00C8 MOVE R15 R11
+ 0x7C300600, // 00C9 CALL R12 3
+ 0x8C30132A, // 00CA GETMET R12 R9 K42
+ 0x7C300200, // 00CB CALL R12 1
+ 0x8C30152B, // 00CC GETMET R12 R10 K43
+ 0x5C381200, // 00CD MOVE R14 R9
+ 0x7C300400, // 00CE CALL R12 2
+ 0xB8320000, // 00CF GETNGBL R12 K0
+ 0x88301901, // 00D0 GETMBR R12 R12 K1
+ 0x8C301902, // 00D1 GETMET R12 R12 K2
+ 0x5838002C, // 00D2 LDCONST R14 K44
+ 0x7C300400, // 00D3 CALL R12 2
+ 0x50300200, // 00D4 LDBOOL R12 1 0
+ 0x80041800, // 00D5 RET 1 R12
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invokeresponse2raw
+********************************************************************/
+be_local_closure(Matter_IM_invokeresponse2raw, /* 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[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(add),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_nested_str_weak(endpoint),
+ /* K3 */ be_const_int(2),
+ /* K4 */ be_nested_str_weak(cluster),
+ /* K5 */ be_nested_str_weak(command),
+ /* K6 */ be_nested_str_weak(status),
+ /* K7 */ be_nested_str_weak(matter),
+ /* K8 */ be_nested_str_weak(SUCCESS),
+ /* K9 */ be_nested_str_weak(tag_sub),
+ /* K10 */ be_nested_str_weak(tlv2raw),
+ }),
+ be_str_weak(invokeresponse2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[148]) { /* code */
+ 0x8C100300, // 0000 GETMET R4 R1 K0
+ 0x541A0014, // 0001 LDINT R6 21
+ 0x581C0001, // 0002 LDCONST R7 K1
+ 0x7C100600, // 0003 CALL R4 3
+ 0x4C100000, // 0004 LDNIL R4
+ 0x1C100604, // 0005 EQ R4 R3 R4
+ 0x78120004, // 0006 JMPF R4 #000C
+ 0x8C100300, // 0007 GETMET R4 R1 K0
+ 0x541A3500, // 0008 LDINT R6 13569
+ 0x541DFFFD, // 0009 LDINT R7 -2
+ 0x7C100600, // 000A CALL R4 3
+ 0x70020003, // 000B JMP #0010
+ 0x8C100300, // 000C GETMET R4 R1 K0
+ 0x541A34FF, // 000D LDINT R6 13568
+ 0x541DFFFD, // 000E LDINT R7 -2
+ 0x7C100600, // 000F CALL R4 3
+ 0x8C100300, // 0010 GETMET R4 R1 K0
+ 0x541A36FF, // 0011 LDINT R6 14080
+ 0x541DFFFD, // 0012 LDINT R7 -2
+ 0x7C100600, // 0013 CALL R4 3
+ 0x88100502, // 0014 GETMBR R4 R2 K2
+ 0x541600FE, // 0015 LDINT R5 255
+ 0x18100805, // 0016 LE R4 R4 R5
+ 0x78120008, // 0017 JMPF R4 #0021
+ 0x8C100300, // 0018 GETMET R4 R1 K0
+ 0x541A23FF, // 0019 LDINT R6 9216
+ 0x541DFFFD, // 001A LDINT R7 -2
+ 0x7C100600, // 001B CALL R4 3
+ 0x8C100300, // 001C GETMET R4 R1 K0
+ 0x88180502, // 001D GETMBR R6 R2 K2
+ 0x581C0001, // 001E LDCONST R7 K1
+ 0x7C100600, // 001F CALL R4 3
+ 0x70020007, // 0020 JMP #0029
+ 0x8C100300, // 0021 GETMET R4 R1 K0
+ 0x541A24FF, // 0022 LDINT R6 9472
+ 0x541DFFFD, // 0023 LDINT R7 -2
+ 0x7C100600, // 0024 CALL R4 3
+ 0x8C100300, // 0025 GETMET R4 R1 K0
+ 0x88180502, // 0026 GETMBR R6 R2 K2
+ 0x581C0003, // 0027 LDCONST R7 K3
+ 0x7C100600, // 0028 CALL R4 3
+ 0x88100504, // 0029 GETMBR R4 R2 K4
+ 0x541600FE, // 002A LDINT R5 255
+ 0x18100805, // 002B LE R4 R4 R5
+ 0x78120008, // 002C JMPF R4 #0036
+ 0x8C100300, // 002D GETMET R4 R1 K0
+ 0x541A2400, // 002E LDINT R6 9217
+ 0x541DFFFD, // 002F LDINT R7 -2
+ 0x7C100600, // 0030 CALL R4 3
+ 0x8C100300, // 0031 GETMET R4 R1 K0
+ 0x88180504, // 0032 GETMBR R6 R2 K4
+ 0x581C0001, // 0033 LDCONST R7 K1
+ 0x7C100600, // 0034 CALL R4 3
+ 0x70020014, // 0035 JMP #004B
+ 0x88100504, // 0036 GETMBR R4 R2 K4
+ 0x5416FFFE, // 0037 LDINT R5 65535
+ 0x18100805, // 0038 LE R4 R4 R5
+ 0x78120008, // 0039 JMPF R4 #0043
+ 0x8C100300, // 003A GETMET R4 R1 K0
+ 0x541A2500, // 003B LDINT R6 9473
+ 0x541DFFFD, // 003C LDINT R7 -2
+ 0x7C100600, // 003D CALL R4 3
+ 0x8C100300, // 003E GETMET R4 R1 K0
+ 0x88180504, // 003F GETMBR R6 R2 K4
+ 0x581C0003, // 0040 LDCONST R7 K3
+ 0x7C100600, // 0041 CALL R4 3
+ 0x70020007, // 0042 JMP #004B
+ 0x8C100300, // 0043 GETMET R4 R1 K0
+ 0x541A2600, // 0044 LDINT R6 9729
+ 0x541DFFFD, // 0045 LDINT R7 -2
+ 0x7C100600, // 0046 CALL R4 3
+ 0x8C100300, // 0047 GETMET R4 R1 K0
+ 0x88180504, // 0048 GETMBR R6 R2 K4
+ 0x541E0003, // 0049 LDINT R7 4
+ 0x7C100600, // 004A CALL R4 3
+ 0x88100505, // 004B GETMBR R4 R2 K5
+ 0x541600FE, // 004C LDINT R5 255
+ 0x18100805, // 004D LE R4 R4 R5
+ 0x78120008, // 004E JMPF R4 #0058
+ 0x8C100300, // 004F GETMET R4 R1 K0
+ 0x541A2401, // 0050 LDINT R6 9218
+ 0x541DFFFD, // 0051 LDINT R7 -2
+ 0x7C100600, // 0052 CALL R4 3
+ 0x8C100300, // 0053 GETMET R4 R1 K0
+ 0x88180505, // 0054 GETMBR R6 R2 K5
+ 0x581C0001, // 0055 LDCONST R7 K1
+ 0x7C100600, // 0056 CALL R4 3
+ 0x70020014, // 0057 JMP #006D
+ 0x88100505, // 0058 GETMBR R4 R2 K5
+ 0x5416FFFE, // 0059 LDINT R5 65535
+ 0x18100805, // 005A LE R4 R4 R5
+ 0x78120008, // 005B JMPF R4 #0065
+ 0x8C100300, // 005C GETMET R4 R1 K0
+ 0x541A2501, // 005D LDINT R6 9474
+ 0x541DFFFD, // 005E LDINT R7 -2
+ 0x7C100600, // 005F CALL R4 3
+ 0x8C100300, // 0060 GETMET R4 R1 K0
+ 0x88180505, // 0061 GETMBR R6 R2 K5
+ 0x581C0003, // 0062 LDCONST R7 K3
+ 0x7C100600, // 0063 CALL R4 3
+ 0x70020007, // 0064 JMP #006D
+ 0x8C100300, // 0065 GETMET R4 R1 K0
+ 0x541A2601, // 0066 LDINT R6 9730
+ 0x541DFFFD, // 0067 LDINT R7 -2
+ 0x7C100600, // 0068 CALL R4 3
+ 0x8C100300, // 0069 GETMET R4 R1 K0
+ 0x88180505, // 006A GETMBR R6 R2 K5
+ 0x541E0003, // 006B LDINT R7 4
+ 0x7C100600, // 006C CALL R4 3
+ 0x8C100300, // 006D GETMET R4 R1 K0
+ 0x541A0017, // 006E LDINT R6 24
+ 0x581C0001, // 006F LDCONST R7 K1
+ 0x7C100600, // 0070 CALL R4 3
+ 0x4C100000, // 0071 LDNIL R4
+ 0x1C100604, // 0072 EQ R4 R3 R4
+ 0x78120016, // 0073 JMPF R4 #008B
+ 0x88100506, // 0074 GETMBR R4 R2 K6
+ 0x4C140000, // 0075 LDNIL R5
+ 0x1C140805, // 0076 EQ R5 R4 R5
+ 0x78160001, // 0077 JMPF R5 #007A
+ 0xB8160E00, // 0078 GETNGBL R5 K7
+ 0x88100B08, // 0079 GETMBR R4 R5 K8
+ 0x8C140300, // 007A GETMET R5 R1 K0
+ 0x541E3500, // 007B LDINT R7 13569
+ 0x5421FFFD, // 007C LDINT R8 -2
+ 0x7C140600, // 007D CALL R5 3
+ 0x8C140300, // 007E GETMET R5 R1 K0
+ 0x541E23FF, // 007F LDINT R7 9216
+ 0x5421FFFD, // 0080 LDINT R8 -2
+ 0x7C140600, // 0081 CALL R5 3
+ 0x8C140300, // 0082 GETMET R5 R1 K0
+ 0x881C0506, // 0083 GETMBR R7 R2 K6
+ 0x58200001, // 0084 LDCONST R8 K1
+ 0x7C140600, // 0085 CALL R5 3
+ 0x8C140300, // 0086 GETMET R5 R1 K0
+ 0x541E0017, // 0087 LDINT R7 24
+ 0x58200001, // 0088 LDCONST R8 K1
+ 0x7C140600, // 0089 CALL R5 3
+ 0x70020003, // 008A JMP #008F
+ 0x900E1301, // 008B SETMBR R3 K9 K1
+ 0x8C10070A, // 008C GETMET R4 R3 K10
+ 0x5C180200, // 008D MOVE R6 R1
+ 0x7C100400, // 008E CALL R4 2
+ 0x8C100300, // 008F GETMET R4 R1 K0
+ 0x541A1817, // 0090 LDINT R6 6168
+ 0x541DFFFD, // 0091 LDINT R7 -2
+ 0x7C100600, // 0092 CALL R4 3
+ 0x80000000, // 0093 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_ack_now
+********************************************************************/
+be_local_closure(Matter_IM_send_ack_now, /* 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(session),
+ /* K1 */ be_nested_str_weak(_message_handler),
+ /* K2 */ be_nested_str_weak(send_encrypted_ack),
+ }),
+ be_str_weak(send_ack_now),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x80000400, // 0003 RET 0
+ 0x88080300, // 0004 GETMBR R2 R1 K0
+ 0x88080501, // 0005 GETMBR R2 R2 K1
+ 0x8C080502, // 0006 GETMET R2 R2 K2
+ 0x5C100200, // 0007 MOVE R4 R1
+ 0x50140000, // 0008 LDBOOL R5 0 0
+ 0x7C080600, // 0009 CALL R2 3
+ 0x80000000, // 000A RET 0
})
)
);
@@ -75,329 +858,293 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[43]) { /* constants */
+ ( &(const bvalue[44]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Path),
- /* K2 */ be_nested_str_weak(InvokeRequestMessage),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(invoke_requests),
- /* K5 */ be_nested_str_weak(InvokeResponseMessage),
- /* K6 */ be_nested_str_weak(suppress_response),
- /* K7 */ be_nested_str_weak(invoke_responses),
- /* K8 */ be_nested_str_weak(endpoint),
- /* K9 */ be_nested_str_weak(command_path),
- /* K10 */ be_nested_str_weak(cluster),
- /* K11 */ be_nested_str_weak(command),
- /* K12 */ be_nested_str_weak(status),
- /* K13 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
- /* K14 */ be_nested_str_weak(get_command_name),
- /* K15 */ be_nested_str_weak(device),
- /* K16 */ be_nested_str_weak(invoke_request),
- /* K17 */ be_nested_str_weak(session),
- /* K18 */ be_nested_str_weak(command_fields),
- /* K19 */ be_nested_str_weak(log),
- /* K20 */ be_nested_str_weak(_X28),
- /* K21 */ be_nested_str_weak(_X29_X20),
- /* K22 */ be_nested_str_weak(),
- /* K23 */ be_nested_str_weak(tasmota),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
- /* K25 */ be_nested_str_weak(local_session_id),
- /* K26 */ be_const_int(0),
- /* K27 */ be_const_int(2),
- /* K28 */ be_const_int(3),
- /* K29 */ be_nested_str_weak(InvokeResponseIB),
- /* K30 */ be_nested_str_weak(SUCCESS),
- /* K31 */ be_nested_str_weak(CommandStatusIB),
- /* K32 */ be_nested_str_weak(CommandPathIB),
- /* K33 */ be_nested_str_weak(StatusIB),
- /* K34 */ be_nested_str_weak(push),
- /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
- /* K36 */ be_nested_str_weak(exchange_id),
- /* K37 */ be_nested_str_weak(CommandDataIB),
- /* K38 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
- /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
- /* K40 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
- /* K41 */ be_nested_str_weak(stop_iteration),
- /* K42 */ be_nested_str_weak(send_invoke_response),
+ /* K1 */ be_nested_str_weak(profiler),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(invoke_request_start),
+ /* K4 */ be_nested_str_weak(Path),
+ /* K5 */ be_nested_str_weak(msg),
+ /* K6 */ be_nested_str_weak(InvokeRequestMessage),
+ /* K7 */ be_nested_str_weak(from_TLV),
+ /* K8 */ be_nested_str_weak(invoke_requests),
+ /* K9 */ be_nested_str_weak(InvokeResponseMessage),
+ /* K10 */ be_nested_str_weak(suppress_response),
+ /* K11 */ be_nested_str_weak(invoke_responses),
+ /* K12 */ be_nested_str_weak(endpoint),
+ /* K13 */ be_nested_str_weak(command_path),
+ /* K14 */ be_nested_str_weak(cluster),
+ /* K15 */ be_nested_str_weak(command),
+ /* K16 */ be_nested_str_weak(status),
+ /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
+ /* K18 */ be_nested_str_weak(get_command_name),
+ /* K19 */ be_nested_str_weak(device),
+ /* K20 */ be_nested_str_weak(invoke_request),
+ /* K21 */ be_nested_str_weak(session),
+ /* K22 */ be_nested_str_weak(command_fields),
+ /* K23 */ be_nested_str_weak(COMMAND_X20DONE),
+ /* K24 */ be_nested_str_weak(_X28),
+ /* K25 */ be_nested_str_weak(_X29_X20),
+ /* K26 */ be_nested_str_weak(),
+ /* K27 */ be_nested_str_weak(tasmota),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
+ /* K29 */ be_nested_str_weak(local_session_id),
+ /* K30 */ be_const_int(0),
+ /* K31 */ be_const_int(2),
+ /* K32 */ be_const_int(3),
+ /* K33 */ be_nested_str_weak(SUCCESS),
+ /* K34 */ be_nested_str_weak(invokeresponse2raw),
+ /* K35 */ be_nested_str_weak(push),
+ /* K36 */ be_nested_str_weak(loglevel),
+ /* K37 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
+ /* K38 */ be_nested_str_weak(exchange_id),
+ /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
+ /* K40 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
+ /* K41 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
+ /* K42 */ be_nested_str_weak(stop_iteration),
+ /* K43 */ be_nested_str_weak(send_invoke_response),
}),
be_str_weak(process_invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[275]) { /* code */
+ ( &(const binstruction[238]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0xB8120000, // 0003 GETNGBL R4 K0
- 0x8C100902, // 0004 GETMET R4 R4 K2
- 0x7C100200, // 0005 CALL R4 1
- 0x8C100903, // 0006 GETMET R4 R4 K3
- 0x5C180400, // 0007 MOVE R6 R2
- 0x7C100400, // 0008 CALL R4 2
- 0x88140904, // 0009 GETMBR R5 R4 K4
- 0x4C180000, // 000A LDNIL R6
- 0x20140A06, // 000B NE R5 R5 R6
- 0x78160104, // 000C JMPF R5 #0112
- 0xB8160000, // 000D GETNGBL R5 K0
- 0x8C140B05, // 000E GETMET R5 R5 K5
- 0x7C140200, // 000F CALL R5 1
- 0x50180000, // 0010 LDBOOL R6 0 0
- 0x90160C06, // 0011 SETMBR R5 K6 R6
- 0x60180012, // 0012 GETGBL R6 G18
- 0x7C180000, // 0013 CALL R6 0
- 0x90160E06, // 0014 SETMBR R5 K7 R6
- 0x60180010, // 0015 GETGBL R6 G16
- 0x881C0904, // 0016 GETMBR R7 R4 K4
- 0x7C180200, // 0017 CALL R6 1
- 0xA80200E7, // 0018 EXBLK 0 #0101
- 0x5C1C0C00, // 0019 MOVE R7 R6
- 0x7C1C0000, // 001A CALL R7 0
- 0x88200F09, // 001B GETMBR R8 R7 K9
- 0x88201108, // 001C GETMBR R8 R8 K8
- 0x900E1008, // 001D SETMBR R3 K8 R8
- 0x88200F09, // 001E GETMBR R8 R7 K9
- 0x8820110A, // 001F GETMBR R8 R8 K10
- 0x900E1408, // 0020 SETMBR R3 K10 R8
- 0x88200F09, // 0021 GETMBR R8 R7 K9
- 0x8820110B, // 0022 GETMBR R8 R8 K11
- 0x900E1608, // 0023 SETMBR R3 K11 R8
- 0xB8220000, // 0024 GETNGBL R8 K0
- 0x8820110D, // 0025 GETMBR R8 R8 K13
- 0x900E1808, // 0026 SETMBR R3 K12 R8
- 0xB8220000, // 0027 GETNGBL R8 K0
- 0x8C20110E, // 0028 GETMET R8 R8 K14
- 0x8828070A, // 0029 GETMBR R10 R3 K10
- 0x882C070B, // 002A GETMBR R11 R3 K11
- 0x7C200600, // 002B CALL R8 3
- 0x60240008, // 002C GETGBL R9 G8
- 0x5C280600, // 002D MOVE R10 R3
- 0x7C240200, // 002E CALL R9 1
- 0x8828010F, // 002F GETMBR R10 R0 K15
- 0x8C281510, // 0030 GETMET R10 R10 K16
- 0x88300311, // 0031 GETMBR R12 R1 K17
- 0x88340F12, // 0032 GETMBR R13 R7 K18
- 0x5C380600, // 0033 MOVE R14 R3
- 0x7C280800, // 0034 CALL R10 4
- 0x882C0713, // 0035 GETMBR R11 R3 K19
- 0x4C300000, // 0036 LDNIL R12
- 0x202C160C, // 0037 NE R11 R11 R12
- 0x782E0005, // 0038 JMPF R11 #003F
- 0x602C0008, // 0039 GETGBL R11 G8
- 0x88300713, // 003A GETMBR R12 R3 K19
- 0x7C2C0200, // 003B CALL R11 1
- 0x002E280B, // 003C ADD R11 K20 R11
- 0x002C1715, // 003D ADD R11 R11 K21
- 0x70020000, // 003E JMP #0040
- 0x582C0016, // 003F LDCONST R11 K22
- 0xB8322E00, // 0040 GETNGBL R12 K23
- 0x8C301913, // 0041 GETMET R12 R12 K19
- 0x60380018, // 0042 GETGBL R14 G24
- 0x583C0018, // 0043 LDCONST R15 K24
- 0x88400311, // 0044 GETMBR R16 R1 K17
- 0x88402119, // 0045 GETMBR R16 R16 K25
- 0x5C441200, // 0046 MOVE R17 R9
- 0x78220001, // 0047 JMPF R8 #004A
- 0x5C481000, // 0048 MOVE R18 R8
+ 0x880C0701, // 0001 GETMBR R3 R3 K1
+ 0x8C0C0702, // 0002 GETMET R3 R3 K2
+ 0x58140003, // 0003 LDCONST R5 K3
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0xB80E0000, // 0005 GETNGBL R3 K0
+ 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x900E0A01, // 0008 SETMBR R3 K5 R1
+ 0xB8120000, // 0009 GETNGBL R4 K0
+ 0x8C100906, // 000A GETMET R4 R4 K6
+ 0x7C100200, // 000B CALL R4 1
+ 0x8C100907, // 000C GETMET R4 R4 K7
+ 0x5C180400, // 000D MOVE R6 R2
+ 0x7C100400, // 000E CALL R4 2
+ 0x88140908, // 000F GETMBR R5 R4 K8
+ 0x4C180000, // 0010 LDNIL R6
+ 0x20140A06, // 0011 NE R5 R5 R6
+ 0x781600D9, // 0012 JMPF R5 #00ED
+ 0xB8160000, // 0013 GETNGBL R5 K0
+ 0x8C140B09, // 0014 GETMET R5 R5 K9
+ 0x7C140200, // 0015 CALL R5 1
+ 0x50180000, // 0016 LDBOOL R6 0 0
+ 0x90161406, // 0017 SETMBR R5 K10 R6
+ 0x60180012, // 0018 GETGBL R6 G18
+ 0x7C180000, // 0019 CALL R6 0
+ 0x90161606, // 001A SETMBR R5 K11 R6
+ 0x60180010, // 001B GETGBL R6 G16
+ 0x881C0908, // 001C GETMBR R7 R4 K8
+ 0x7C180200, // 001D CALL R6 1
+ 0xA80200BC, // 001E EXBLK 0 #00DC
+ 0x5C1C0C00, // 001F MOVE R7 R6
+ 0x7C1C0000, // 0020 CALL R7 0
+ 0x88200F0D, // 0021 GETMBR R8 R7 K13
+ 0x8820110C, // 0022 GETMBR R8 R8 K12
+ 0x900E1808, // 0023 SETMBR R3 K12 R8
+ 0x88200F0D, // 0024 GETMBR R8 R7 K13
+ 0x8820110E, // 0025 GETMBR R8 R8 K14
+ 0x900E1C08, // 0026 SETMBR R3 K14 R8
+ 0x88200F0D, // 0027 GETMBR R8 R7 K13
+ 0x8820110F, // 0028 GETMBR R8 R8 K15
+ 0x900E1E08, // 0029 SETMBR R3 K15 R8
+ 0xB8220000, // 002A GETNGBL R8 K0
+ 0x88201111, // 002B GETMBR R8 R8 K17
+ 0x900E2008, // 002C SETMBR R3 K16 R8
+ 0xB8220000, // 002D GETNGBL R8 K0
+ 0x8C201112, // 002E GETMET R8 R8 K18
+ 0x8828070E, // 002F GETMBR R10 R3 K14
+ 0x882C070F, // 0030 GETMBR R11 R3 K15
+ 0x7C200600, // 0031 CALL R8 3
+ 0x60240008, // 0032 GETGBL R9 G8
+ 0x5C280600, // 0033 MOVE R10 R3
+ 0x7C240200, // 0034 CALL R9 1
+ 0x88280113, // 0035 GETMBR R10 R0 K19
+ 0x8C281514, // 0036 GETMET R10 R10 K20
+ 0x88300315, // 0037 GETMBR R12 R1 K21
+ 0x88340F16, // 0038 GETMBR R13 R7 K22
+ 0x5C380600, // 0039 MOVE R14 R3
+ 0x7C280800, // 003A CALL R10 4
+ 0xB82E0000, // 003B GETNGBL R11 K0
+ 0x882C1701, // 003C GETMBR R11 R11 K1
+ 0x8C2C1702, // 003D GETMET R11 R11 K2
+ 0x58340017, // 003E LDCONST R13 K23
+ 0x7C2C0400, // 003F CALL R11 2
+ 0x882C0702, // 0040 GETMBR R11 R3 K2
+ 0x4C300000, // 0041 LDNIL R12
+ 0x202C160C, // 0042 NE R11 R11 R12
+ 0x782E0005, // 0043 JMPF R11 #004A
+ 0x602C0008, // 0044 GETGBL R11 G8
+ 0x88300702, // 0045 GETMBR R12 R3 K2
+ 0x7C2C0200, // 0046 CALL R11 1
+ 0x002E300B, // 0047 ADD R11 K24 R11
+ 0x002C1719, // 0048 ADD R11 R11 K25
0x70020000, // 0049 JMP #004B
- 0x58480016, // 004A LDCONST R18 K22
- 0x5C4C1600, // 004B MOVE R19 R11
- 0x7C380A00, // 004C CALL R14 5
- 0x883C0708, // 004D GETMBR R15 R3 K8
- 0x203C1F1A, // 004E NE R15 R15 K26
- 0x783E0001, // 004F JMPF R15 #0052
- 0x583C001B, // 0050 LDCONST R15 K27
- 0x70020000, // 0051 JMP #0053
- 0x583C001C, // 0052 LDCONST R15 K28
- 0x7C300600, // 0053 CALL R12 3
- 0x4C300000, // 0054 LDNIL R12
- 0x900E260C, // 0055 SETMBR R3 K19 R12
- 0xB8320000, // 0056 GETNGBL R12 K0
- 0x8C30191D, // 0057 GETMET R12 R12 K29
- 0x7C300200, // 0058 CALL R12 1
- 0x50340200, // 0059 LDBOOL R13 1 0
- 0x1C34140D, // 005A EQ R13 R10 R13
- 0x74360004, // 005B JMPT R13 #0061
- 0x8834070C, // 005C GETMBR R13 R3 K12
- 0xB83A0000, // 005D GETNGBL R14 K0
- 0x88381D1E, // 005E GETMBR R14 R14 K30
- 0x1C341A0E, // 005F EQ R13 R13 R14
- 0x7836002D, // 0060 JMPF R13 #008F
- 0xB8360000, // 0061 GETNGBL R13 K0
- 0x8C341B1F, // 0062 GETMET R13 R13 K31
- 0x7C340200, // 0063 CALL R13 1
- 0x9032180D, // 0064 SETMBR R12 K12 R13
- 0x8834190C, // 0065 GETMBR R13 R12 K12
- 0xB83A0000, // 0066 GETNGBL R14 K0
- 0x8C381D20, // 0067 GETMET R14 R14 K32
- 0x7C380200, // 0068 CALL R14 1
- 0x9036120E, // 0069 SETMBR R13 K9 R14
- 0x8834190C, // 006A GETMBR R13 R12 K12
- 0x88341B09, // 006B GETMBR R13 R13 K9
- 0x88380708, // 006C GETMBR R14 R3 K8
- 0x9036100E, // 006D SETMBR R13 K8 R14
- 0x8834190C, // 006E GETMBR R13 R12 K12
- 0x88341B09, // 006F GETMBR R13 R13 K9
- 0x8838070A, // 0070 GETMBR R14 R3 K10
- 0x9036140E, // 0071 SETMBR R13 K10 R14
- 0x8834190C, // 0072 GETMBR R13 R12 K12
- 0x88341B09, // 0073 GETMBR R13 R13 K9
- 0x8838070B, // 0074 GETMBR R14 R3 K11
- 0x9036160E, // 0075 SETMBR R13 K11 R14
- 0x8834190C, // 0076 GETMBR R13 R12 K12
- 0xB83A0000, // 0077 GETNGBL R14 K0
- 0x8C381D21, // 0078 GETMET R14 R14 K33
- 0x7C380200, // 0079 CALL R14 1
- 0x9036180E, // 007A SETMBR R13 K12 R14
- 0x8834190C, // 007B GETMBR R13 R12 K12
- 0x88341B0C, // 007C GETMBR R13 R13 K12
- 0xB83A0000, // 007D GETNGBL R14 K0
- 0x88381D1E, // 007E GETMBR R14 R14 K30
- 0x9036180E, // 007F SETMBR R13 K12 R14
- 0x88340B07, // 0080 GETMBR R13 R5 K7
- 0x8C341B22, // 0081 GETMET R13 R13 K34
- 0x5C3C1800, // 0082 MOVE R15 R12
- 0x7C340400, // 0083 CALL R13 2
- 0xB8362E00, // 0084 GETNGBL R13 K23
- 0x8C341B13, // 0085 GETMET R13 R13 K19
- 0x603C0018, // 0086 GETGBL R15 G24
- 0x58400023, // 0087 LDCONST R16 K35
- 0x88440311, // 0088 GETMBR R17 R1 K17
- 0x88442319, // 0089 GETMBR R17 R17 K25
- 0x88480324, // 008A GETMBR R18 R1 K36
- 0x7C3C0600, // 008B CALL R15 3
- 0x5840001C, // 008C LDCONST R16 K28
- 0x7C340600, // 008D CALL R13 3
- 0x70020070, // 008E JMP #0100
- 0x4C340000, // 008F LDNIL R13
- 0x2034140D, // 0090 NE R13 R10 R13
- 0x78360031, // 0091 JMPF R13 #00C4
- 0xB8360000, // 0092 GETNGBL R13 K0
- 0x8C341B25, // 0093 GETMET R13 R13 K37
- 0x7C340200, // 0094 CALL R13 1
- 0x9032160D, // 0095 SETMBR R12 K11 R13
- 0x8834190B, // 0096 GETMBR R13 R12 K11
- 0xB83A0000, // 0097 GETNGBL R14 K0
- 0x8C381D20, // 0098 GETMET R14 R14 K32
- 0x7C380200, // 0099 CALL R14 1
- 0x9036120E, // 009A SETMBR R13 K9 R14
- 0x8834190B, // 009B GETMBR R13 R12 K11
- 0x88341B09, // 009C GETMBR R13 R13 K9
- 0x88380708, // 009D GETMBR R14 R3 K8
- 0x9036100E, // 009E SETMBR R13 K8 R14
- 0x8834190B, // 009F GETMBR R13 R12 K11
- 0x88341B09, // 00A0 GETMBR R13 R13 K9
- 0x8838070A, // 00A1 GETMBR R14 R3 K10
- 0x9036140E, // 00A2 SETMBR R13 K10 R14
- 0x8834190B, // 00A3 GETMBR R13 R12 K11
- 0x88341B09, // 00A4 GETMBR R13 R13 K9
- 0x8838070B, // 00A5 GETMBR R14 R3 K11
- 0x9036160E, // 00A6 SETMBR R13 K11 R14
- 0x8834190B, // 00A7 GETMBR R13 R12 K11
- 0x9036240A, // 00A8 SETMBR R13 K18 R10
- 0x88340B07, // 00A9 GETMBR R13 R5 K7
- 0x8C341B22, // 00AA GETMET R13 R13 K34
- 0x5C3C1800, // 00AB MOVE R15 R12
- 0x7C340400, // 00AC CALL R13 2
- 0xB8360000, // 00AD GETNGBL R13 K0
- 0x8C341B0E, // 00AE GETMET R13 R13 K14
- 0x883C070A, // 00AF GETMBR R15 R3 K10
- 0x8840070B, // 00B0 GETMBR R16 R3 K11
- 0x7C340600, // 00B1 CALL R13 3
- 0x5C201A00, // 00B2 MOVE R8 R13
- 0xB8362E00, // 00B3 GETNGBL R13 K23
- 0x8C341B13, // 00B4 GETMET R13 R13 K19
- 0x603C0018, // 00B5 GETGBL R15 G24
- 0x58400026, // 00B6 LDCONST R16 K38
- 0x88440311, // 00B7 GETMBR R17 R1 K17
- 0x88442319, // 00B8 GETMBR R17 R17 K25
- 0x60480008, // 00B9 GETGBL R18 G8
- 0x5C4C0600, // 00BA MOVE R19 R3
- 0x7C480200, // 00BB CALL R18 1
- 0x78220001, // 00BC JMPF R8 #00BF
- 0x5C4C1000, // 00BD MOVE R19 R8
- 0x70020000, // 00BE JMP #00C0
- 0x584C0016, // 00BF LDCONST R19 K22
- 0x7C3C0800, // 00C0 CALL R15 4
- 0x5840001C, // 00C1 LDCONST R16 K28
- 0x7C340600, // 00C2 CALL R13 3
- 0x7002003B, // 00C3 JMP #0100
- 0x8834070C, // 00C4 GETMBR R13 R3 K12
- 0x4C380000, // 00C5 LDNIL R14
- 0x20341A0E, // 00C6 NE R13 R13 R14
- 0x7836002D, // 00C7 JMPF R13 #00F6
- 0xB8360000, // 00C8 GETNGBL R13 K0
- 0x8C341B1F, // 00C9 GETMET R13 R13 K31
- 0x7C340200, // 00CA CALL R13 1
- 0x9032180D, // 00CB SETMBR R12 K12 R13
- 0x8834190C, // 00CC GETMBR R13 R12 K12
- 0xB83A0000, // 00CD GETNGBL R14 K0
- 0x8C381D20, // 00CE GETMET R14 R14 K32
- 0x7C380200, // 00CF CALL R14 1
- 0x9036120E, // 00D0 SETMBR R13 K9 R14
- 0x8834190C, // 00D1 GETMBR R13 R12 K12
- 0x88341B09, // 00D2 GETMBR R13 R13 K9
- 0x88380708, // 00D3 GETMBR R14 R3 K8
- 0x9036100E, // 00D4 SETMBR R13 K8 R14
- 0x8834190C, // 00D5 GETMBR R13 R12 K12
- 0x88341B09, // 00D6 GETMBR R13 R13 K9
- 0x8838070A, // 00D7 GETMBR R14 R3 K10
- 0x9036140E, // 00D8 SETMBR R13 K10 R14
- 0x8834190C, // 00D9 GETMBR R13 R12 K12
- 0x88341B09, // 00DA GETMBR R13 R13 K9
- 0x8838070B, // 00DB GETMBR R14 R3 K11
- 0x9036160E, // 00DC SETMBR R13 K11 R14
- 0x8834190C, // 00DD GETMBR R13 R12 K12
- 0xB83A0000, // 00DE GETNGBL R14 K0
- 0x8C381D21, // 00DF GETMET R14 R14 K33
- 0x7C380200, // 00E0 CALL R14 1
- 0x9036180E, // 00E1 SETMBR R13 K12 R14
- 0x8834190C, // 00E2 GETMBR R13 R12 K12
- 0x88341B0C, // 00E3 GETMBR R13 R13 K12
- 0x8838070C, // 00E4 GETMBR R14 R3 K12
- 0x9036180E, // 00E5 SETMBR R13 K12 R14
- 0x88340B07, // 00E6 GETMBR R13 R5 K7
- 0x8C341B22, // 00E7 GETMET R13 R13 K34
- 0x5C3C1800, // 00E8 MOVE R15 R12
- 0x7C340400, // 00E9 CALL R13 2
- 0xB8362E00, // 00EA GETNGBL R13 K23
- 0x8C341B13, // 00EB GETMET R13 R13 K19
- 0x603C0018, // 00EC GETGBL R15 G24
- 0x58400027, // 00ED LDCONST R16 K39
- 0x88440311, // 00EE GETMBR R17 R1 K17
- 0x88442319, // 00EF GETMBR R17 R17 K25
- 0x8848070C, // 00F0 GETMBR R18 R3 K12
- 0x884C0324, // 00F1 GETMBR R19 R1 K36
- 0x7C3C0800, // 00F2 CALL R15 4
- 0x5840001C, // 00F3 LDCONST R16 K28
- 0x7C340600, // 00F4 CALL R13 3
- 0x70020009, // 00F5 JMP #0100
- 0xB8362E00, // 00F6 GETNGBL R13 K23
- 0x8C341B13, // 00F7 GETMET R13 R13 K19
- 0x603C0018, // 00F8 GETGBL R15 G24
- 0x58400028, // 00F9 LDCONST R16 K40
- 0x88440311, // 00FA GETMBR R17 R1 K17
- 0x88442319, // 00FB GETMBR R17 R17 K25
- 0x88480324, // 00FC GETMBR R18 R1 K36
- 0x7C3C0600, // 00FD CALL R15 3
- 0x5840001C, // 00FE LDCONST R16 K28
- 0x7C340600, // 00FF CALL R13 3
- 0x7001FF17, // 0100 JMP #0019
- 0x58180029, // 0101 LDCONST R6 K41
- 0xAC180200, // 0102 CATCH R6 1 0
- 0xB0080000, // 0103 RAISE 2 R0 R0
- 0x6018000C, // 0104 GETGBL R6 G12
- 0x881C0B07, // 0105 GETMBR R7 R5 K7
- 0x7C180200, // 0106 CALL R6 1
- 0x24180D1A, // 0107 GT R6 R6 K26
- 0x781A0004, // 0108 JMPF R6 #010E
- 0x8C18012A, // 0109 GETMET R6 R0 K42
- 0x5C200200, // 010A MOVE R8 R1
- 0x5C240A00, // 010B MOVE R9 R5
- 0x7C180600, // 010C CALL R6 3
- 0x70020001, // 010D JMP #0110
- 0x50180000, // 010E LDBOOL R6 0 0
- 0x80040C00, // 010F RET 1 R6
- 0x50180200, // 0110 LDBOOL R6 1 0
- 0x80040C00, // 0111 RET 1 R6
- 0x80000000, // 0112 RET 0
+ 0x582C001A, // 004A LDCONST R11 K26
+ 0xB8323600, // 004B GETNGBL R12 K27
+ 0x8C301902, // 004C GETMET R12 R12 K2
+ 0x60380018, // 004D GETGBL R14 G24
+ 0x583C001C, // 004E LDCONST R15 K28
+ 0x88400315, // 004F GETMBR R16 R1 K21
+ 0x8840211D, // 0050 GETMBR R16 R16 K29
+ 0x5C441200, // 0051 MOVE R17 R9
+ 0x78220001, // 0052 JMPF R8 #0055
+ 0x5C481000, // 0053 MOVE R18 R8
+ 0x70020000, // 0054 JMP #0056
+ 0x5848001A, // 0055 LDCONST R18 K26
+ 0x5C4C1600, // 0056 MOVE R19 R11
+ 0x7C380A00, // 0057 CALL R14 5
+ 0x883C070C, // 0058 GETMBR R15 R3 K12
+ 0x203C1F1E, // 0059 NE R15 R15 K30
+ 0x783E0001, // 005A JMPF R15 #005D
+ 0x583C001F, // 005B LDCONST R15 K31
+ 0x70020000, // 005C JMP #005E
+ 0x583C0020, // 005D LDCONST R15 K32
+ 0x7C300600, // 005E CALL R12 3
+ 0x4C300000, // 005F LDNIL R12
+ 0x900E040C, // 0060 SETMBR R3 K2 R12
+ 0x60300015, // 0061 GETGBL R12 G21
+ 0x5436001F, // 0062 LDINT R13 32
+ 0x7C300200, // 0063 CALL R12 1
+ 0x50340200, // 0064 LDBOOL R13 1 0
+ 0x1C34140D, // 0065 EQ R13 R10 R13
+ 0x74360004, // 0066 JMPT R13 #006C
+ 0x88340710, // 0067 GETMBR R13 R3 K16
+ 0xB83A0000, // 0068 GETNGBL R14 K0
+ 0x88381D21, // 0069 GETMBR R14 R14 K33
+ 0x1C341A0E, // 006A EQ R13 R13 R14
+ 0x7836001B, // 006B JMPF R13 #0088
+ 0xB8360000, // 006C GETNGBL R13 K0
+ 0x88341B21, // 006D GETMBR R13 R13 K33
+ 0x900E200D, // 006E SETMBR R3 K16 R13
+ 0x8C340122, // 006F GETMET R13 R0 K34
+ 0x5C3C1800, // 0070 MOVE R15 R12
+ 0x5C400600, // 0071 MOVE R16 R3
+ 0x4C440000, // 0072 LDNIL R17
+ 0x7C340800, // 0073 CALL R13 4
+ 0x88340B0B, // 0074 GETMBR R13 R5 K11
+ 0x8C341B23, // 0075 GETMET R13 R13 K35
+ 0x5C3C1800, // 0076 MOVE R15 R12
+ 0x7C340400, // 0077 CALL R13 2
+ 0xB8363600, // 0078 GETNGBL R13 K27
+ 0x8C341B24, // 0079 GETMET R13 R13 K36
+ 0x583C0020, // 007A LDCONST R15 K32
+ 0x7C340400, // 007B CALL R13 2
+ 0x78360009, // 007C JMPF R13 #0087
+ 0xB8363600, // 007D GETNGBL R13 K27
+ 0x8C341B02, // 007E GETMET R13 R13 K2
+ 0x603C0018, // 007F GETGBL R15 G24
+ 0x58400025, // 0080 LDCONST R16 K37
+ 0x88440315, // 0081 GETMBR R17 R1 K21
+ 0x8844231D, // 0082 GETMBR R17 R17 K29
+ 0x88480326, // 0083 GETMBR R18 R1 K38
+ 0x7C3C0600, // 0084 CALL R15 3
+ 0x58400020, // 0085 LDCONST R16 K32
+ 0x7C340600, // 0086 CALL R13 3
+ 0x70020052, // 0087 JMP #00DB
+ 0x4C340000, // 0088 LDNIL R13
+ 0x2034140D, // 0089 NE R13 R10 R13
+ 0x78360022, // 008A JMPF R13 #00AE
+ 0x8C340122, // 008B GETMET R13 R0 K34
+ 0x5C3C1800, // 008C MOVE R15 R12
+ 0x5C400600, // 008D MOVE R16 R3
+ 0x5C441400, // 008E MOVE R17 R10
+ 0x7C340800, // 008F CALL R13 4
+ 0x88340B0B, // 0090 GETMBR R13 R5 K11
+ 0x8C341B23, // 0091 GETMET R13 R13 K35
+ 0x5C3C1800, // 0092 MOVE R15 R12
+ 0x7C340400, // 0093 CALL R13 2
+ 0xB8360000, // 0094 GETNGBL R13 K0
+ 0x8C341B12, // 0095 GETMET R13 R13 K18
+ 0x883C070E, // 0096 GETMBR R15 R3 K14
+ 0x8840070F, // 0097 GETMBR R16 R3 K15
+ 0x7C340600, // 0098 CALL R13 3
+ 0x5C201A00, // 0099 MOVE R8 R13
+ 0x5C341000, // 009A MOVE R13 R8
+ 0x74360000, // 009B JMPT R13 #009D
+ 0x5820001A, // 009C LDCONST R8 K26
+ 0xB8363600, // 009D GETNGBL R13 K27
+ 0x8C341B24, // 009E GETMET R13 R13 K36
+ 0x583C0020, // 009F LDCONST R15 K32
+ 0x7C340400, // 00A0 CALL R13 2
+ 0x7836000A, // 00A1 JMPF R13 #00AD
+ 0xB8363600, // 00A2 GETNGBL R13 K27
+ 0x8C341B02, // 00A3 GETMET R13 R13 K2
+ 0x603C0018, // 00A4 GETGBL R15 G24
+ 0x58400027, // 00A5 LDCONST R16 K39
+ 0x88440315, // 00A6 GETMBR R17 R1 K21
+ 0x8844231D, // 00A7 GETMBR R17 R17 K29
+ 0x5C480600, // 00A8 MOVE R18 R3
+ 0x5C4C1000, // 00A9 MOVE R19 R8
+ 0x7C3C0800, // 00AA CALL R15 4
+ 0x58400020, // 00AB LDCONST R16 K32
+ 0x7C340600, // 00AC CALL R13 3
+ 0x7002002C, // 00AD JMP #00DB
+ 0x88340710, // 00AE GETMBR R13 R3 K16
+ 0x4C380000, // 00AF LDNIL R14
+ 0x20341A0E, // 00B0 NE R13 R13 R14
+ 0x78360019, // 00B1 JMPF R13 #00CC
+ 0x8C340122, // 00B2 GETMET R13 R0 K34
+ 0x5C3C1800, // 00B3 MOVE R15 R12
+ 0x5C400600, // 00B4 MOVE R16 R3
+ 0x4C440000, // 00B5 LDNIL R17
+ 0x7C340800, // 00B6 CALL R13 4
+ 0x88340B0B, // 00B7 GETMBR R13 R5 K11
+ 0x8C341B23, // 00B8 GETMET R13 R13 K35
+ 0x5C3C1800, // 00B9 MOVE R15 R12
+ 0x7C340400, // 00BA CALL R13 2
+ 0xB8363600, // 00BB GETNGBL R13 K27
+ 0x8C341B24, // 00BC GETMET R13 R13 K36
+ 0x583C0020, // 00BD LDCONST R15 K32
+ 0x7C340400, // 00BE CALL R13 2
+ 0x7836000A, // 00BF JMPF R13 #00CB
+ 0xB8363600, // 00C0 GETNGBL R13 K27
+ 0x8C341B02, // 00C1 GETMET R13 R13 K2
+ 0x603C0018, // 00C2 GETGBL R15 G24
+ 0x58400028, // 00C3 LDCONST R16 K40
+ 0x88440315, // 00C4 GETMBR R17 R1 K21
+ 0x8844231D, // 00C5 GETMBR R17 R17 K29
+ 0x88480710, // 00C6 GETMBR R18 R3 K16
+ 0x884C0326, // 00C7 GETMBR R19 R1 K38
+ 0x7C3C0800, // 00C8 CALL R15 4
+ 0x58400020, // 00C9 LDCONST R16 K32
+ 0x7C340600, // 00CA CALL R13 3
+ 0x7002000E, // 00CB JMP #00DB
+ 0xB8363600, // 00CC GETNGBL R13 K27
+ 0x8C341B24, // 00CD GETMET R13 R13 K36
+ 0x583C0020, // 00CE LDCONST R15 K32
+ 0x7C340400, // 00CF CALL R13 2
+ 0x78360009, // 00D0 JMPF R13 #00DB
+ 0xB8363600, // 00D1 GETNGBL R13 K27
+ 0x8C341B02, // 00D2 GETMET R13 R13 K2
+ 0x603C0018, // 00D3 GETGBL R15 G24
+ 0x58400029, // 00D4 LDCONST R16 K41
+ 0x88440315, // 00D5 GETMBR R17 R1 K21
+ 0x8844231D, // 00D6 GETMBR R17 R17 K29
+ 0x88480326, // 00D7 GETMBR R18 R1 K38
+ 0x7C3C0600, // 00D8 CALL R15 3
+ 0x58400020, // 00D9 LDCONST R16 K32
+ 0x7C340600, // 00DA CALL R13 3
+ 0x7001FF42, // 00DB JMP #001F
+ 0x5818002A, // 00DC LDCONST R6 K42
+ 0xAC180200, // 00DD CATCH R6 1 0
+ 0xB0080000, // 00DE RAISE 2 R0 R0
+ 0x6018000C, // 00DF GETGBL R6 G12
+ 0x881C0B0B, // 00E0 GETMBR R7 R5 K11
+ 0x7C180200, // 00E1 CALL R6 1
+ 0x24180D1E, // 00E2 GT R6 R6 K30
+ 0x781A0004, // 00E3 JMPF R6 #00E9
+ 0x8C18012B, // 00E4 GETMET R6 R0 K43
+ 0x5C200200, // 00E5 MOVE R8 R1
+ 0x5C240A00, // 00E6 MOVE R9 R5
+ 0x7C180600, // 00E7 CALL R6 3
+ 0x70020001, // 00E8 JMP #00EB
+ 0x50180000, // 00E9 LDBOOL R6 0 0
+ 0x80040C00, // 00EA RET 1 R6
+ 0x50180200, // 00EB LDBOOL R6 1 0
+ 0x80040C00, // 00EC RET 1 R6
+ 0x80000000, // 00ED RET 0
})
)
);
@@ -405,11 +1152,11 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */
/********************************************************************
-** Solidified function: subscribe_request
+** Solidified function: process_read_request
********************************************************************/
-be_local_closure(Matter_IM_subscribe_request, /* name */
+be_local_closure(Matter_IM_process_read_request, /* name */
be_nested_proto(
- 17, /* nstack */
+ 9, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@@ -417,117 +1164,121 @@ be_local_closure(Matter_IM_subscribe_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[29]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(SubscribeRequestMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- /* K3 */ be_nested_str_weak(keep_subscriptions),
- /* K4 */ be_nested_str_weak(subs_shop),
- /* K5 */ be_nested_str_weak(remove_by_session),
- /* K6 */ be_nested_str_weak(session),
- /* K7 */ be_nested_str_weak(new_subscription),
- /* K8 */ be_nested_str_weak(Path),
- /* K9 */ be_nested_str_weak(attributes_requests),
- /* K10 */ be_nested_str_weak(endpoint),
- /* K11 */ be_nested_str_weak(cluster),
- /* K12 */ be_nested_str_weak(attribute),
- /* K13 */ be_nested_str_weak(push),
- /* K14 */ be_nested_str_weak(stop_iteration),
- /* K15 */ be_nested_str_weak(tasmota),
- /* K16 */ be_nested_str_weak(log),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i),
- /* K18 */ be_nested_str_weak(local_session_id),
- /* K19 */ be_nested_str_weak(concat),
- /* K20 */ be_nested_str_weak(_X20),
- /* K21 */ be_nested_str_weak(min_interval),
- /* K22 */ be_nested_str_weak(max_interval),
- /* K23 */ be_const_int(1),
- /* K24 */ be_const_int(0),
- /* K25 */ be_nested_str_weak(subscription_id),
- /* K26 */ be_const_int(3),
- /* K27 */ be_nested_str_weak(_inner_process_read_request),
- /* K28 */ be_nested_str_weak(send_subscribe_response),
+ /* K1 */ be_nested_str_weak(profiler),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(read_request_start),
+ /* K4 */ be_nested_str_weak(ReadRequestMessage),
+ /* K5 */ be_nested_str_weak(from_TLV),
+ /* K6 */ be_nested_str_weak(attributes_requests),
+ /* K7 */ be_nested_str_weak(_inner_process_read_request),
+ /* K8 */ be_nested_str_weak(session),
+ /* K9 */ be_nested_str_weak(send_report_data),
}),
- be_str_weak(subscribe_request),
+ be_str_weak(process_read_request),
&be_const_str_solidified,
- ( &(const binstruction[77]) { /* code */
+ ( &(const binstruction[26]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x880C0701, // 0001 GETMBR R3 R3 K1
+ 0x8C0C0702, // 0002 GETMET R3 R3 K2
+ 0x58140003, // 0003 LDCONST R5 K3
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0xB80E0000, // 0005 GETNGBL R3 K0
+ 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C0C0705, // 0008 GETMET R3 R3 K5
+ 0x5C140400, // 0009 MOVE R5 R2
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x88100706, // 000B GETMBR R4 R3 K6
+ 0x4C140000, // 000C LDNIL R5
+ 0x20100805, // 000D NE R4 R4 R5
+ 0x78120008, // 000E JMPF R4 #0018
+ 0x8C100107, // 000F GETMET R4 R0 K7
+ 0x88180308, // 0010 GETMBR R6 R1 K8
+ 0x5C1C0600, // 0011 MOVE R7 R3
+ 0x5C200200, // 0012 MOVE R8 R1
+ 0x7C100800, // 0013 CALL R4 4
+ 0x8C140109, // 0014 GETMET R5 R0 K9
+ 0x5C1C0200, // 0015 MOVE R7 R1
+ 0x5C200800, // 0016 MOVE R8 R4
+ 0x7C140600, // 0017 CALL R5 3
+ 0x50100200, // 0018 LDBOOL R4 1 0
+ 0x80040800, // 0019 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_invoke_response
+********************************************************************/
+be_local_closure(Matter_IM_send_invoke_response, /* 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(send_queue),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(IM_InvokeResponse),
+ }),
+ be_str_weak(send_invoke_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x88100703, // 0006 GETMBR R4 R3 K3
- 0x74120003, // 0007 JMPT R4 #000C
- 0x88100104, // 0008 GETMBR R4 R0 K4
- 0x8C100905, // 0009 GETMET R4 R4 K5
- 0x88180306, // 000A GETMBR R6 R1 K6
- 0x7C100400, // 000B CALL R4 2
- 0x88100104, // 000C GETMBR R4 R0 K4
- 0x8C100907, // 000D GETMET R4 R4 K7
- 0x88180306, // 000E GETMBR R6 R1 K6
- 0x5C1C0600, // 000F MOVE R7 R3
- 0x7C100600, // 0010 CALL R4 3
- 0x60140012, // 0011 GETGBL R5 G18
- 0x7C140000, // 0012 CALL R5 0
- 0xB81A0000, // 0013 GETNGBL R6 K0
- 0x8C180D08, // 0014 GETMET R6 R6 K8
- 0x7C180200, // 0015 CALL R6 1
- 0x601C0010, // 0016 GETGBL R7 G16
- 0x88200709, // 0017 GETMBR R8 R3 K9
- 0x7C1C0200, // 0018 CALL R7 1
- 0xA802000D, // 0019 EXBLK 0 #0028
- 0x5C200E00, // 001A MOVE R8 R7
- 0x7C200000, // 001B CALL R8 0
- 0x8824110A, // 001C GETMBR R9 R8 K10
- 0x901A1409, // 001D SETMBR R6 K10 R9
- 0x8824110B, // 001E GETMBR R9 R8 K11
- 0x901A1609, // 001F SETMBR R6 K11 R9
- 0x8824110C, // 0020 GETMBR R9 R8 K12
- 0x901A1809, // 0021 SETMBR R6 K12 R9
- 0x8C240B0D, // 0022 GETMET R9 R5 K13
- 0x602C0008, // 0023 GETGBL R11 G8
- 0x5C300C00, // 0024 MOVE R12 R6
- 0x7C2C0200, // 0025 CALL R11 1
- 0x7C240400, // 0026 CALL R9 2
- 0x7001FFF1, // 0027 JMP #001A
- 0x581C000E, // 0028 LDCONST R7 K14
- 0xAC1C0200, // 0029 CATCH R7 1 0
- 0xB0080000, // 002A RAISE 2 R0 R0
- 0xB81E1E00, // 002B GETNGBL R7 K15
- 0x8C1C0F10, // 002C GETMET R7 R7 K16
- 0x60240018, // 002D GETGBL R9 G24
- 0x58280011, // 002E LDCONST R10 K17
- 0x882C0306, // 002F GETMBR R11 R1 K6
- 0x882C1712, // 0030 GETMBR R11 R11 K18
- 0x8C300B13, // 0031 GETMET R12 R5 K19
- 0x58380014, // 0032 LDCONST R14 K20
- 0x7C300400, // 0033 CALL R12 2
- 0x88340915, // 0034 GETMBR R13 R4 K21
- 0x88380916, // 0035 GETMBR R14 R4 K22
- 0x883C0703, // 0036 GETMBR R15 R3 K3
- 0x783E0001, // 0037 JMPF R15 #003A
- 0x583C0017, // 0038 LDCONST R15 K23
- 0x70020000, // 0039 JMP #003B
- 0x583C0018, // 003A LDCONST R15 K24
- 0x88400919, // 003B GETMBR R16 R4 K25
- 0x7C240E00, // 003C CALL R9 7
- 0x5828001A, // 003D LDCONST R10 K26
- 0x7C1C0600, // 003E CALL R7 3
- 0x8C1C011B, // 003F GETMET R7 R0 K27
- 0x88240306, // 0040 GETMBR R9 R1 K6
- 0x5C280600, // 0041 MOVE R10 R3
- 0x502C0200, // 0042 LDBOOL R11 1 0
- 0x7C1C0800, // 0043 CALL R7 4
- 0x88200919, // 0044 GETMBR R8 R4 K25
- 0x901E3208, // 0045 SETMBR R7 K25 R8
- 0x8C20011C, // 0046 GETMET R8 R0 K28
- 0x5C280200, // 0047 MOVE R10 R1
- 0x5C2C0E00, // 0048 MOVE R11 R7
- 0x5C300800, // 0049 MOVE R12 R4
- 0x7C200800, // 004A CALL R8 4
- 0x50200200, // 004B LDBOOL R8 1 0
- 0x80041000, // 004C RET 1 R8
+ 0xB8160400, // 0002 GETNGBL R5 K2
+ 0x8C140B03, // 0003 GETMET R5 R5 K3
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x5C200400, // 0005 MOVE R8 R2
+ 0x7C140600, // 0006 CALL R5 3
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_write_response
+********************************************************************/
+be_local_closure(Matter_IM_send_write_response, /* 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(send_queue),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(IM_WriteResponse),
+ }),
+ be_str_weak(send_write_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0xB8160400, // 0002 GETNGBL R5 K2
+ 0x8C140B03, // 0003 GETMET R5 R5 K3
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x5C200400, // 0005 MOVE R8 R2
+ 0x7C140600, // 0006 CALL R5 3
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x80000000, // 0008 RET 0
})
)
);
@@ -720,7 +1471,7 @@ be_local_closure(Matter_IM_process_write_request, /* name */
),
}),
1, /* has constants */
- ( &(const bvalue[29]) { /* constants */
+ ( &(const bvalue[30]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(WriteRequestMessage),
/* K2 */ be_nested_str_weak(from_TLV),
@@ -728,32 +1479,33 @@ be_local_closure(Matter_IM_process_write_request, /* name */
/* K4 */ be_nested_str_weak(device),
/* K5 */ be_nested_str_weak(get_active_endpoints),
/* K6 */ be_nested_str_weak(Path),
- /* K7 */ be_nested_str_weak(write_requests),
- /* K8 */ be_nested_str_weak(WriteResponseMessage),
- /* K9 */ be_nested_str_weak(write_responses),
- /* K10 */ be_nested_str_weak(path),
- /* K11 */ be_nested_str_weak(data),
- /* K12 */ be_nested_str_weak(endpoint),
- /* K13 */ be_nested_str_weak(cluster),
- /* K14 */ be_nested_str_weak(attribute),
- /* K15 */ be_nested_str_weak(status),
- /* K16 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K17 */ be_nested_str_weak(INVALID_ACTION),
- /* K18 */ be_nested_str_weak(get_attribute_name),
- /* K19 */ be_nested_str_weak(tasmota),
- /* K20 */ be_nested_str_weak(log),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20),
- /* K22 */ be_nested_str_weak(_X20_X28),
- /* K23 */ be_nested_str_weak(_X29),
- /* K24 */ be_nested_str_weak(),
- /* K25 */ be_const_int(3),
- /* K26 */ be_nested_str_weak(process_attribute_expansion),
- /* K27 */ be_nested_str_weak(stop_iteration),
- /* K28 */ be_nested_str_weak(send_write_response),
+ /* K7 */ be_nested_str_weak(msg),
+ /* K8 */ be_nested_str_weak(write_requests),
+ /* K9 */ be_nested_str_weak(WriteResponseMessage),
+ /* K10 */ be_nested_str_weak(write_responses),
+ /* K11 */ be_nested_str_weak(path),
+ /* K12 */ be_nested_str_weak(data),
+ /* K13 */ be_nested_str_weak(endpoint),
+ /* K14 */ be_nested_str_weak(cluster),
+ /* K15 */ be_nested_str_weak(attribute),
+ /* K16 */ be_nested_str_weak(status),
+ /* K17 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K18 */ be_nested_str_weak(INVALID_ACTION),
+ /* K19 */ be_nested_str_weak(get_attribute_name),
+ /* K20 */ be_nested_str_weak(tasmota),
+ /* K21 */ be_nested_str_weak(log),
+ /* K22 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20),
+ /* K23 */ be_nested_str_weak(_X20_X28),
+ /* K24 */ be_nested_str_weak(_X29),
+ /* K25 */ be_nested_str_weak(),
+ /* K26 */ be_const_int(3),
+ /* K27 */ be_nested_str_weak(process_attribute_expansion),
+ /* K28 */ be_nested_str_weak(stop_iteration),
+ /* K29 */ be_nested_str_weak(send_write_response),
}),
be_str_weak(process_write_request),
&be_const_str_solidified,
- ( &(const binstruction[103]) { /* code */
+ ( &(const binstruction[104]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1
0x7C0C0200, // 0002 CALL R3 1
@@ -768,95 +1520,96 @@ be_local_closure(Matter_IM_process_write_request, /* name */
0xB81E0000, // 000B GETNGBL R7 K0
0x8C1C0F06, // 000C GETMET R7 R7 K6
0x7C1C0200, // 000D CALL R7 1
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x4C240000, // 000F LDNIL R9
- 0x20201009, // 0010 NE R8 R8 R9
- 0x78220051, // 0011 JMPF R8 #0064
- 0xB8220000, // 0012 GETNGBL R8 K0
- 0x8C201108, // 0013 GETMET R8 R8 K8
- 0x7C200200, // 0014 CALL R8 1
- 0x60240012, // 0015 GETGBL R9 G18
- 0x7C240000, // 0016 CALL R9 0
- 0x90221209, // 0017 SETMBR R8 K9 R9
- 0x60240010, // 0018 GETGBL R9 G16
- 0x88280707, // 0019 GETMBR R10 R3 K7
- 0x7C240200, // 001A CALL R9 1
- 0xA802003D, // 001B EXBLK 0 #005A
- 0x5C281200, // 001C MOVE R10 R9
- 0x7C280000, // 001D CALL R10 0
- 0x882C150A, // 001E GETMBR R11 R10 K10
- 0x8830150B, // 001F GETMBR R12 R10 K11
- 0x8834170C, // 0020 GETMBR R13 R11 K12
- 0x901E180D, // 0021 SETMBR R7 K12 R13
- 0x8834170D, // 0022 GETMBR R13 R11 K13
- 0x901E1A0D, // 0023 SETMBR R7 K13 R13
- 0x8834170E, // 0024 GETMBR R13 R11 K14
- 0x901E1C0D, // 0025 SETMBR R7 K14 R13
- 0xB8360000, // 0026 GETNGBL R13 K0
- 0x88341B10, // 0027 GETMBR R13 R13 K16
- 0x901E1E0D, // 0028 SETMBR R7 K15 R13
- 0x88340F0D, // 0029 GETMBR R13 R7 K13
- 0x4C380000, // 002A LDNIL R14
- 0x1C341A0E, // 002B EQ R13 R13 R14
- 0x74360003, // 002C JMPT R13 #0031
- 0x88340F0E, // 002D GETMBR R13 R7 K14
- 0x4C380000, // 002E LDNIL R14
- 0x1C341A0E, // 002F EQ R13 R13 R14
- 0x7836000A, // 0030 JMPF R13 #003C
- 0xB8360000, // 0031 GETNGBL R13 K0
- 0x88341B11, // 0032 GETMBR R13 R13 K17
- 0x901E1E0D, // 0033 SETMBR R7 K15 R13
- 0x5C340C00, // 0034 MOVE R13 R6
- 0x5C381000, // 0035 MOVE R14 R8
- 0x4C3C0000, // 0036 LDNIL R15
- 0x5C400E00, // 0037 MOVE R16 R7
- 0x4C440000, // 0038 LDNIL R17
- 0x50480200, // 0039 LDBOOL R18 1 0
- 0x7C340A00, // 003A CALL R13 5
- 0x7001FFDF, // 003B JMP #001C
- 0x88340F0C, // 003C GETMBR R13 R7 K12
- 0x4C380000, // 003D LDNIL R14
- 0x1C341A0E, // 003E EQ R13 R13 R14
- 0x78360012, // 003F JMPF R13 #0053
- 0xB8360000, // 0040 GETNGBL R13 K0
- 0x8C341B12, // 0041 GETMET R13 R13 K18
- 0x883C0F0D, // 0042 GETMBR R15 R7 K13
- 0x88400F0E, // 0043 GETMBR R16 R7 K14
- 0x7C340600, // 0044 CALL R13 3
- 0xB83A2600, // 0045 GETNGBL R14 K19
- 0x8C381D14, // 0046 GETMET R14 R14 K20
- 0x60400008, // 0047 GETGBL R16 G8
- 0x5C440E00, // 0048 MOVE R17 R7
- 0x7C400200, // 0049 CALL R16 1
- 0x00422A10, // 004A ADD R16 K21 R16
- 0x78360002, // 004B JMPF R13 #004F
- 0x00462C0D, // 004C ADD R17 K22 R13
- 0x00442317, // 004D ADD R17 R17 K23
- 0x70020000, // 004E JMP #0050
- 0x58440018, // 004F LDCONST R17 K24
- 0x00402011, // 0050 ADD R16 R16 R17
- 0x58440019, // 0051 LDCONST R17 K25
- 0x7C380600, // 0052 CALL R14 3
- 0x88340104, // 0053 GETMBR R13 R0 K4
- 0x8C341B1A, // 0054 GETMET R13 R13 K26
- 0x5C3C0E00, // 0055 MOVE R15 R7
- 0x84400001, // 0056 CLOSURE R16 P1
- 0x7C340600, // 0057 CALL R13 3
- 0xA0240000, // 0058 CLOSE R9
- 0x7001FFC1, // 0059 JMP #001C
- 0x5824001B, // 005A LDCONST R9 K27
- 0xAC240200, // 005B CATCH R9 1 0
- 0xB0080000, // 005C RAISE 2 R0 R0
- 0x5C240800, // 005D MOVE R9 R4
- 0x74260003, // 005E JMPT R9 #0063
- 0x8C24011C, // 005F GETMET R9 R0 K28
- 0x5C2C0200, // 0060 MOVE R11 R1
- 0x5C301000, // 0061 MOVE R12 R8
- 0x7C240600, // 0062 CALL R9 3
- 0xA0200000, // 0063 CLOSE R8
- 0x50200200, // 0064 LDBOOL R8 1 0
- 0xA0000000, // 0065 CLOSE R0
- 0x80041000, // 0066 RET 1 R8
+ 0x901E0E01, // 000E SETMBR R7 K7 R1
+ 0x88200708, // 000F GETMBR R8 R3 K8
+ 0x4C240000, // 0010 LDNIL R9
+ 0x20201009, // 0011 NE R8 R8 R9
+ 0x78220051, // 0012 JMPF R8 #0065
+ 0xB8220000, // 0013 GETNGBL R8 K0
+ 0x8C201109, // 0014 GETMET R8 R8 K9
+ 0x7C200200, // 0015 CALL R8 1
+ 0x60240012, // 0016 GETGBL R9 G18
+ 0x7C240000, // 0017 CALL R9 0
+ 0x90221409, // 0018 SETMBR R8 K10 R9
+ 0x60240010, // 0019 GETGBL R9 G16
+ 0x88280708, // 001A GETMBR R10 R3 K8
+ 0x7C240200, // 001B CALL R9 1
+ 0xA802003D, // 001C EXBLK 0 #005B
+ 0x5C281200, // 001D MOVE R10 R9
+ 0x7C280000, // 001E CALL R10 0
+ 0x882C150B, // 001F GETMBR R11 R10 K11
+ 0x8830150C, // 0020 GETMBR R12 R10 K12
+ 0x8834170D, // 0021 GETMBR R13 R11 K13
+ 0x901E1A0D, // 0022 SETMBR R7 K13 R13
+ 0x8834170E, // 0023 GETMBR R13 R11 K14
+ 0x901E1C0D, // 0024 SETMBR R7 K14 R13
+ 0x8834170F, // 0025 GETMBR R13 R11 K15
+ 0x901E1E0D, // 0026 SETMBR R7 K15 R13
+ 0xB8360000, // 0027 GETNGBL R13 K0
+ 0x88341B11, // 0028 GETMBR R13 R13 K17
+ 0x901E200D, // 0029 SETMBR R7 K16 R13
+ 0x88340F0E, // 002A GETMBR R13 R7 K14
+ 0x4C380000, // 002B LDNIL R14
+ 0x1C341A0E, // 002C EQ R13 R13 R14
+ 0x74360003, // 002D JMPT R13 #0032
+ 0x88340F0F, // 002E GETMBR R13 R7 K15
+ 0x4C380000, // 002F LDNIL R14
+ 0x1C341A0E, // 0030 EQ R13 R13 R14
+ 0x7836000A, // 0031 JMPF R13 #003D
+ 0xB8360000, // 0032 GETNGBL R13 K0
+ 0x88341B12, // 0033 GETMBR R13 R13 K18
+ 0x901E200D, // 0034 SETMBR R7 K16 R13
+ 0x5C340C00, // 0035 MOVE R13 R6
+ 0x5C381000, // 0036 MOVE R14 R8
+ 0x4C3C0000, // 0037 LDNIL R15
+ 0x5C400E00, // 0038 MOVE R16 R7
+ 0x4C440000, // 0039 LDNIL R17
+ 0x50480200, // 003A LDBOOL R18 1 0
+ 0x7C340A00, // 003B CALL R13 5
+ 0x7001FFDF, // 003C JMP #001D
+ 0x88340F0D, // 003D GETMBR R13 R7 K13
+ 0x4C380000, // 003E LDNIL R14
+ 0x1C341A0E, // 003F EQ R13 R13 R14
+ 0x78360012, // 0040 JMPF R13 #0054
+ 0xB8360000, // 0041 GETNGBL R13 K0
+ 0x8C341B13, // 0042 GETMET R13 R13 K19
+ 0x883C0F0E, // 0043 GETMBR R15 R7 K14
+ 0x88400F0F, // 0044 GETMBR R16 R7 K15
+ 0x7C340600, // 0045 CALL R13 3
+ 0xB83A2800, // 0046 GETNGBL R14 K20
+ 0x8C381D15, // 0047 GETMET R14 R14 K21
+ 0x60400008, // 0048 GETGBL R16 G8
+ 0x5C440E00, // 0049 MOVE R17 R7
+ 0x7C400200, // 004A CALL R16 1
+ 0x00422C10, // 004B ADD R16 K22 R16
+ 0x78360002, // 004C JMPF R13 #0050
+ 0x00462E0D, // 004D ADD R17 K23 R13
+ 0x00442318, // 004E ADD R17 R17 K24
+ 0x70020000, // 004F JMP #0051
+ 0x58440019, // 0050 LDCONST R17 K25
+ 0x00402011, // 0051 ADD R16 R16 R17
+ 0x5844001A, // 0052 LDCONST R17 K26
+ 0x7C380600, // 0053 CALL R14 3
+ 0x88340104, // 0054 GETMBR R13 R0 K4
+ 0x8C341B1B, // 0055 GETMET R13 R13 K27
+ 0x5C3C0E00, // 0056 MOVE R15 R7
+ 0x84400001, // 0057 CLOSURE R16 P1
+ 0x7C340600, // 0058 CALL R13 3
+ 0xA0240000, // 0059 CLOSE R9
+ 0x7001FFC1, // 005A JMP #001D
+ 0x5824001C, // 005B LDCONST R9 K28
+ 0xAC240200, // 005C CATCH R9 1 0
+ 0xB0080000, // 005D RAISE 2 R0 R0
+ 0x5C240800, // 005E MOVE R9 R4
+ 0x74260003, // 005F JMPT R9 #0064
+ 0x8C24011D, // 0060 GETMET R9 R0 K29
+ 0x5C2C0200, // 0061 MOVE R11 R1
+ 0x5C301000, // 0062 MOVE R12 R8
+ 0x7C240600, // 0063 CALL R9 3
+ 0xA0200000, // 0064 CLOSE R8
+ 0x50200200, // 0065 LDBOOL R8 1 0
+ 0xA0000000, // 0066 CLOSE R0
+ 0x80041000, // 0067 RET 1 R8
})
)
);
@@ -864,36 +1617,252 @@ be_local_closure(Matter_IM_process_write_request, /* name */
/********************************************************************
-** Solidified function: send_write_response
+** Solidified function: path2raw
********************************************************************/
-be_local_closure(Matter_IM_send_write_response, /* name */
+be_local_closure(Matter_IM_path2raw, /* name */
be_nested_proto(
9, /* nstack */
- 3, /* argc */
+ 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(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_WriteResponse),
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(add),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_nested_str_weak(endpoint),
+ /* K3 */ be_const_int(2),
+ /* K4 */ be_nested_str_weak(cluster),
+ /* K5 */ be_nested_str_weak(attribute),
}),
- be_str_weak(send_write_response),
+ be_str_weak(path2raw),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C140600, // 0006 CALL R5 3
- 0x7C0C0400, // 0007 CALL R3 2
- 0x80000000, // 0008 RET 0
+ ( &(const binstruction[107]) { /* code */
+ 0x8C140300, // 0000 GETMET R5 R1 K0
+ 0x541E0036, // 0001 LDINT R7 55
+ 0x58200001, // 0002 LDCONST R8 K1
+ 0x7C140600, // 0003 CALL R5 3
+ 0x8C140300, // 0004 GETMET R5 R1 K0
+ 0x5C1C0600, // 0005 MOVE R7 R3
+ 0x58200001, // 0006 LDCONST R8 K1
+ 0x7C140600, // 0007 CALL R5 3
+ 0x88140502, // 0008 GETMBR R5 R2 K2
+ 0x541A00FE, // 0009 LDINT R6 255
+ 0x18140A06, // 000A LE R5 R5 R6
+ 0x78160008, // 000B JMPF R5 #0015
+ 0x8C140300, // 000C GETMET R5 R1 K0
+ 0x541E2401, // 000D LDINT R7 9218
+ 0x5421FFFD, // 000E LDINT R8 -2
+ 0x7C140600, // 000F CALL R5 3
+ 0x8C140300, // 0010 GETMET R5 R1 K0
+ 0x881C0502, // 0011 GETMBR R7 R2 K2
+ 0x58200001, // 0012 LDCONST R8 K1
+ 0x7C140600, // 0013 CALL R5 3
+ 0x70020007, // 0014 JMP #001D
+ 0x8C140300, // 0015 GETMET R5 R1 K0
+ 0x541E2501, // 0016 LDINT R7 9474
+ 0x5421FFFD, // 0017 LDINT R8 -2
+ 0x7C140600, // 0018 CALL R5 3
+ 0x8C140300, // 0019 GETMET R5 R1 K0
+ 0x881C0502, // 001A GETMBR R7 R2 K2
+ 0x58200003, // 001B LDCONST R8 K3
+ 0x7C140600, // 001C CALL R5 3
+ 0x88140504, // 001D GETMBR R5 R2 K4
+ 0x541A00FE, // 001E LDINT R6 255
+ 0x18140A06, // 001F LE R5 R5 R6
+ 0x78160008, // 0020 JMPF R5 #002A
+ 0x8C140300, // 0021 GETMET R5 R1 K0
+ 0x541E2402, // 0022 LDINT R7 9219
+ 0x5421FFFD, // 0023 LDINT R8 -2
+ 0x7C140600, // 0024 CALL R5 3
+ 0x8C140300, // 0025 GETMET R5 R1 K0
+ 0x881C0504, // 0026 GETMBR R7 R2 K4
+ 0x58200001, // 0027 LDCONST R8 K1
+ 0x7C140600, // 0028 CALL R5 3
+ 0x70020014, // 0029 JMP #003F
+ 0x88140504, // 002A GETMBR R5 R2 K4
+ 0x541AFFFE, // 002B LDINT R6 65535
+ 0x18140A06, // 002C LE R5 R5 R6
+ 0x78160008, // 002D JMPF R5 #0037
+ 0x8C140300, // 002E GETMET R5 R1 K0
+ 0x541E2502, // 002F LDINT R7 9475
+ 0x5421FFFD, // 0030 LDINT R8 -2
+ 0x7C140600, // 0031 CALL R5 3
+ 0x8C140300, // 0032 GETMET R5 R1 K0
+ 0x881C0504, // 0033 GETMBR R7 R2 K4
+ 0x58200003, // 0034 LDCONST R8 K3
+ 0x7C140600, // 0035 CALL R5 3
+ 0x70020007, // 0036 JMP #003F
+ 0x8C140300, // 0037 GETMET R5 R1 K0
+ 0x541E2602, // 0038 LDINT R7 9731
+ 0x5421FFFD, // 0039 LDINT R8 -2
+ 0x7C140600, // 003A CALL R5 3
+ 0x8C140300, // 003B GETMET R5 R1 K0
+ 0x881C0504, // 003C GETMBR R7 R2 K4
+ 0x54220003, // 003D LDINT R8 4
+ 0x7C140600, // 003E CALL R5 3
+ 0x88140505, // 003F GETMBR R5 R2 K5
+ 0x541A00FE, // 0040 LDINT R6 255
+ 0x18140A06, // 0041 LE R5 R5 R6
+ 0x78160008, // 0042 JMPF R5 #004C
+ 0x8C140300, // 0043 GETMET R5 R1 K0
+ 0x541E2403, // 0044 LDINT R7 9220
+ 0x5421FFFD, // 0045 LDINT R8 -2
+ 0x7C140600, // 0046 CALL R5 3
+ 0x8C140300, // 0047 GETMET R5 R1 K0
+ 0x881C0505, // 0048 GETMBR R7 R2 K5
+ 0x58200001, // 0049 LDCONST R8 K1
+ 0x7C140600, // 004A CALL R5 3
+ 0x70020014, // 004B JMP #0061
+ 0x88140505, // 004C GETMBR R5 R2 K5
+ 0x541AFFFE, // 004D LDINT R6 65535
+ 0x18140A06, // 004E LE R5 R5 R6
+ 0x78160008, // 004F JMPF R5 #0059
+ 0x8C140300, // 0050 GETMET R5 R1 K0
+ 0x541E2503, // 0051 LDINT R7 9476
+ 0x5421FFFD, // 0052 LDINT R8 -2
+ 0x7C140600, // 0053 CALL R5 3
+ 0x8C140300, // 0054 GETMET R5 R1 K0
+ 0x881C0505, // 0055 GETMBR R7 R2 K5
+ 0x58200003, // 0056 LDCONST R8 K3
+ 0x7C140600, // 0057 CALL R5 3
+ 0x70020007, // 0058 JMP #0061
+ 0x8C140300, // 0059 GETMET R5 R1 K0
+ 0x541E2603, // 005A LDINT R7 9732
+ 0x5421FFFD, // 005B LDINT R8 -2
+ 0x7C140600, // 005C CALL R5 3
+ 0x8C140300, // 005D GETMET R5 R1 K0
+ 0x881C0505, // 005E GETMBR R7 R2 K5
+ 0x54220003, // 005F LDINT R8 4
+ 0x7C140600, // 0060 CALL R5 3
+ 0x78120003, // 0061 JMPF R4 #0066
+ 0x8C140300, // 0062 GETMET R5 R1 K0
+ 0x541E3404, // 0063 LDINT R7 13317
+ 0x5421FFFD, // 0064 LDINT R8 -2
+ 0x7C140600, // 0065 CALL R5 3
+ 0x8C140300, // 0066 GETMET R5 R1 K0
+ 0x541E0017, // 0067 LDINT R7 24
+ 0x58200001, // 0068 LDCONST R8 K1
+ 0x7C140600, // 0069 CALL R5 3
+ 0x80000000, // 006A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_subscribe_update
+********************************************************************/
+be_local_closure(Matter_IM_send_subscribe_update, /* 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[25]) { /* constants */
+ /* K0 */ be_nested_str_weak(session),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(ReadRequestMessage),
+ /* K3 */ be_nested_str_weak(fabric_filtered),
+ /* K4 */ be_nested_str_weak(attributes_requests),
+ /* K5 */ be_nested_str_weak(updates),
+ /* K6 */ be_nested_str_weak(AttributePathIB),
+ /* K7 */ be_nested_str_weak(endpoint),
+ /* K8 */ be_nested_str_weak(cluster),
+ /* K9 */ be_nested_str_weak(attribute),
+ /* K10 */ be_nested_str_weak(push),
+ /* K11 */ be_nested_str_weak(stop_iteration),
+ /* K12 */ be_nested_str_weak(tasmota),
+ /* K13 */ be_nested_str_weak(log),
+ /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
+ /* K15 */ be_nested_str_weak(local_session_id),
+ /* K16 */ be_nested_str_weak(subscription_id),
+ /* K17 */ be_const_int(3),
+ /* K18 */ be_nested_str_weak(is_keep_alive),
+ /* K19 */ be_nested_str_weak(_inner_process_read_request),
+ /* K20 */ be_nested_str_weak(suppress_response),
+ /* K21 */ be_nested_str_weak(IM_ReportDataSubscribed),
+ /* K22 */ be_nested_str_weak(_message_handler),
+ /* K23 */ be_nested_str_weak(send_queue),
+ /* K24 */ be_nested_str_weak(send_enqueued),
+ }),
+ be_str_weak(send_subscribe_update),
+ &be_const_str_solidified,
+ ( &(const binstruction[67]) { /* code */
+ 0x88080300, // 0000 GETMBR R2 R1 K0
+ 0xB80E0200, // 0001 GETNGBL R3 K1
+ 0x8C0C0702, // 0002 GETMET R3 R3 K2
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x50100000, // 0004 LDBOOL R4 0 0
+ 0x900E0604, // 0005 SETMBR R3 K3 R4
+ 0x60100012, // 0006 GETGBL R4 G18
+ 0x7C100000, // 0007 CALL R4 0
+ 0x900E0804, // 0008 SETMBR R3 K4 R4
+ 0x60100010, // 0009 GETGBL R4 G16
+ 0x88140305, // 000A GETMBR R5 R1 K5
+ 0x7C100200, // 000B CALL R4 1
+ 0xA802000F, // 000C EXBLK 0 #001D
+ 0x5C140800, // 000D MOVE R5 R4
+ 0x7C140000, // 000E CALL R5 0
+ 0xB81A0200, // 000F GETNGBL R6 K1
+ 0x8C180D06, // 0010 GETMET R6 R6 K6
+ 0x7C180200, // 0011 CALL R6 1
+ 0x881C0B07, // 0012 GETMBR R7 R5 K7
+ 0x901A0E07, // 0013 SETMBR R6 K7 R7
+ 0x881C0B08, // 0014 GETMBR R7 R5 K8
+ 0x901A1007, // 0015 SETMBR R6 K8 R7
+ 0x881C0B09, // 0016 GETMBR R7 R5 K9
+ 0x901A1207, // 0017 SETMBR R6 K9 R7
+ 0x881C0704, // 0018 GETMBR R7 R3 K4
+ 0x8C1C0F0A, // 0019 GETMET R7 R7 K10
+ 0x5C240C00, // 001A MOVE R9 R6
+ 0x7C1C0400, // 001B CALL R7 2
+ 0x7001FFEF, // 001C JMP #000D
+ 0x5810000B, // 001D LDCONST R4 K11
+ 0xAC100200, // 001E CATCH R4 1 0
+ 0xB0080000, // 001F RAISE 2 R0 R0
+ 0xB8121800, // 0020 GETNGBL R4 K12
+ 0x8C10090D, // 0021 GETMET R4 R4 K13
+ 0x60180018, // 0022 GETGBL R6 G24
+ 0x581C000E, // 0023 LDCONST R7 K14
+ 0x8820050F, // 0024 GETMBR R8 R2 K15
+ 0x88240310, // 0025 GETMBR R9 R1 K16
+ 0x7C180600, // 0026 CALL R6 3
+ 0x581C0011, // 0027 LDCONST R7 K17
+ 0x7C100600, // 0028 CALL R4 3
+ 0x50100000, // 0029 LDBOOL R4 0 0
+ 0x90062404, // 002A SETMBR R1 K18 R4
+ 0x8C100113, // 002B GETMET R4 R0 K19
+ 0x5C180400, // 002C MOVE R6 R2
+ 0x5C1C0600, // 002D MOVE R7 R3
+ 0x4C200000, // 002E LDNIL R8
+ 0x7C100800, // 002F CALL R4 4
+ 0x50140000, // 0030 LDBOOL R5 0 0
+ 0x90122805, // 0031 SETMBR R4 K20 R5
+ 0x88140310, // 0032 GETMBR R5 R1 K16
+ 0x90122005, // 0033 SETMBR R4 K16 R5
+ 0xB8160200, // 0034 GETNGBL R5 K1
+ 0x8C140B15, // 0035 GETMET R5 R5 K21
+ 0x881C0516, // 0036 GETMBR R7 R2 K22
+ 0x5C200400, // 0037 MOVE R8 R2
+ 0x5C240800, // 0038 MOVE R9 R4
+ 0x5C280200, // 0039 MOVE R10 R1
+ 0x7C140A00, // 003A CALL R5 5
+ 0x88180117, // 003B GETMBR R6 R0 K23
+ 0x8C180D0A, // 003C GETMET R6 R6 K10
+ 0x5C200A00, // 003D MOVE R8 R5
+ 0x7C180400, // 003E CALL R6 2
+ 0x8C180118, // 003F GETMET R6 R0 K24
+ 0x88200516, // 0040 GETMBR R8 R2 K22
+ 0x7C180400, // 0041 CALL R6 2
+ 0x80000000, // 0042 RET 0
})
)
);
@@ -953,6 +1922,223 @@ be_local_closure(Matter_IM_remove_sendqueue_by_exchangeid, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: process_incoming
+********************************************************************/
+be_local_closure(Matter_IM_process_incoming, /* 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[25]) { /* constants */
+ /* K0 */ be_nested_str_weak(opcode),
+ /* K1 */ be_const_int(2),
+ /* K2 */ be_nested_str_weak(read_request_solo),
+ /* K3 */ be_nested_str_weak(from_raw),
+ /* K4 */ be_nested_str_weak(raw),
+ /* K5 */ be_nested_str_weak(app_payload_idx),
+ /* K6 */ be_nested_str_weak(process_read_request_solo),
+ /* K7 */ be_nested_str_weak(invoke_request_solo),
+ /* K8 */ be_nested_str_weak(process_invoke_request_solo),
+ /* K9 */ be_nested_str_weak(matter),
+ /* K10 */ be_nested_str_weak(TLV),
+ /* K11 */ be_nested_str_weak(parse),
+ /* K12 */ be_const_int(1),
+ /* K13 */ be_nested_str_weak(process_status_response),
+ /* K14 */ be_nested_str_weak(process_read_request),
+ /* K15 */ be_const_int(3),
+ /* K16 */ be_nested_str_weak(send_ack_now),
+ /* K17 */ be_nested_str_weak(subscribe_request),
+ /* K18 */ be_nested_str_weak(subscribe_response),
+ /* K19 */ be_nested_str_weak(report_data),
+ /* K20 */ be_nested_str_weak(process_write_request),
+ /* K21 */ be_nested_str_weak(process_write_response),
+ /* K22 */ be_nested_str_weak(process_invoke_request),
+ /* K23 */ be_nested_str_weak(process_invoke_response),
+ /* K24 */ be_nested_str_weak(process_timed_request),
+ }),
+ be_str_weak(process_incoming),
+ &be_const_str_solidified,
+ ( &(const binstruction[133]) { /* code */
+ 0x88080300, // 0000 GETMBR R2 R1 K0
+ 0x1C0C0501, // 0001 EQ R3 R2 K1
+ 0x780E000D, // 0002 JMPF R3 #0011
+ 0x880C0102, // 0003 GETMBR R3 R0 K2
+ 0x8C0C0703, // 0004 GETMET R3 R3 K3
+ 0x88140304, // 0005 GETMBR R5 R1 K4
+ 0x88180305, // 0006 GETMBR R6 R1 K5
+ 0x7C0C0600, // 0007 CALL R3 3
+ 0x4C100000, // 0008 LDNIL R4
+ 0x20100604, // 0009 NE R4 R3 R4
+ 0x78120004, // 000A JMPF R4 #0010
+ 0x8C100106, // 000B GETMET R4 R0 K6
+ 0x5C180200, // 000C MOVE R6 R1
+ 0x5C1C0600, // 000D MOVE R7 R3
+ 0x7C100600, // 000E CALL R4 3
+ 0x80040800, // 000F RET 1 R4
+ 0x7002000F, // 0010 JMP #0021
+ 0x540E0007, // 0011 LDINT R3 8
+ 0x1C0C0403, // 0012 EQ R3 R2 R3
+ 0x780E000C, // 0013 JMPF R3 #0021
+ 0x880C0107, // 0014 GETMBR R3 R0 K7
+ 0x8C0C0703, // 0015 GETMET R3 R3 K3
+ 0x88140304, // 0016 GETMBR R5 R1 K4
+ 0x88180305, // 0017 GETMBR R6 R1 K5
+ 0x7C0C0600, // 0018 CALL R3 3
+ 0x4C100000, // 0019 LDNIL R4
+ 0x20100604, // 001A NE R4 R3 R4
+ 0x78120004, // 001B JMPF R4 #0021
+ 0x8C100108, // 001C GETMET R4 R0 K8
+ 0x5C180200, // 001D MOVE R6 R1
+ 0x5C1C0600, // 001E MOVE R7 R3
+ 0x7C100600, // 001F CALL R4 3
+ 0x80040800, // 0020 RET 1 R4
+ 0xB80E1200, // 0021 GETNGBL R3 K9
+ 0x880C070A, // 0022 GETMBR R3 R3 K10
+ 0x8C0C070B, // 0023 GETMET R3 R3 K11
+ 0x88140304, // 0024 GETMBR R5 R1 K4
+ 0x88180305, // 0025 GETMBR R6 R1 K5
+ 0x7C0C0600, // 0026 CALL R3 3
+ 0x1C10050C, // 0027 EQ R4 R2 K12
+ 0x78120005, // 0028 JMPF R4 #002F
+ 0x8C10010D, // 0029 GETMET R4 R0 K13
+ 0x5C180200, // 002A MOVE R6 R1
+ 0x5C1C0600, // 002B MOVE R7 R3
+ 0x7C100600, // 002C CALL R4 3
+ 0x80040800, // 002D RET 1 R4
+ 0x70020053, // 002E JMP #0083
+ 0x1C100501, // 002F EQ R4 R2 K1
+ 0x78120005, // 0030 JMPF R4 #0037
+ 0x8C10010E, // 0031 GETMET R4 R0 K14
+ 0x5C180200, // 0032 MOVE R6 R1
+ 0x5C1C0600, // 0033 MOVE R7 R3
+ 0x7C100600, // 0034 CALL R4 3
+ 0x80040800, // 0035 RET 1 R4
+ 0x7002004B, // 0036 JMP #0083
+ 0x1C10050F, // 0037 EQ R4 R2 K15
+ 0x78120008, // 0038 JMPF R4 #0042
+ 0x8C100110, // 0039 GETMET R4 R0 K16
+ 0x5C180200, // 003A MOVE R6 R1
+ 0x7C100400, // 003B CALL R4 2
+ 0x8C100111, // 003C GETMET R4 R0 K17
+ 0x5C180200, // 003D MOVE R6 R1
+ 0x5C1C0600, // 003E MOVE R7 R3
+ 0x7C100600, // 003F CALL R4 3
+ 0x80040800, // 0040 RET 1 R4
+ 0x70020040, // 0041 JMP #0083
+ 0x54120003, // 0042 LDINT R4 4
+ 0x1C100404, // 0043 EQ R4 R2 R4
+ 0x78120005, // 0044 JMPF R4 #004B
+ 0x8C100112, // 0045 GETMET R4 R0 K18
+ 0x5C180200, // 0046 MOVE R6 R1
+ 0x5C1C0600, // 0047 MOVE R7 R3
+ 0x7C100600, // 0048 CALL R4 3
+ 0x80040800, // 0049 RET 1 R4
+ 0x70020037, // 004A JMP #0083
+ 0x54120004, // 004B LDINT R4 5
+ 0x1C100404, // 004C EQ R4 R2 R4
+ 0x78120005, // 004D JMPF R4 #0054
+ 0x8C100113, // 004E GETMET R4 R0 K19
+ 0x5C180200, // 004F MOVE R6 R1
+ 0x5C1C0600, // 0050 MOVE R7 R3
+ 0x7C100600, // 0051 CALL R4 3
+ 0x80040800, // 0052 RET 1 R4
+ 0x7002002E, // 0053 JMP #0083
+ 0x54120005, // 0054 LDINT R4 6
+ 0x1C100404, // 0055 EQ R4 R2 R4
+ 0x78120008, // 0056 JMPF R4 #0060
+ 0x8C100110, // 0057 GETMET R4 R0 K16
+ 0x5C180200, // 0058 MOVE R6 R1
+ 0x7C100400, // 0059 CALL R4 2
+ 0x8C100114, // 005A GETMET R4 R0 K20
+ 0x5C180200, // 005B MOVE R6 R1
+ 0x5C1C0600, // 005C MOVE R7 R3
+ 0x7C100600, // 005D CALL R4 3
+ 0x80040800, // 005E RET 1 R4
+ 0x70020022, // 005F JMP #0083
+ 0x54120006, // 0060 LDINT R4 7
+ 0x1C100404, // 0061 EQ R4 R2 R4
+ 0x78120005, // 0062 JMPF R4 #0069
+ 0x8C100115, // 0063 GETMET R4 R0 K21
+ 0x5C180200, // 0064 MOVE R6 R1
+ 0x5C1C0600, // 0065 MOVE R7 R3
+ 0x7C100600, // 0066 CALL R4 3
+ 0x80040800, // 0067 RET 1 R4
+ 0x70020019, // 0068 JMP #0083
+ 0x54120007, // 0069 LDINT R4 8
+ 0x1C100404, // 006A EQ R4 R2 R4
+ 0x78120005, // 006B JMPF R4 #0072
+ 0x8C100116, // 006C GETMET R4 R0 K22
+ 0x5C180200, // 006D MOVE R6 R1
+ 0x5C1C0600, // 006E MOVE R7 R3
+ 0x7C100600, // 006F CALL R4 3
+ 0x80040800, // 0070 RET 1 R4
+ 0x70020010, // 0071 JMP #0083
+ 0x54120008, // 0072 LDINT R4 9
+ 0x1C100404, // 0073 EQ R4 R2 R4
+ 0x78120005, // 0074 JMPF R4 #007B
+ 0x8C100117, // 0075 GETMET R4 R0 K23
+ 0x5C180200, // 0076 MOVE R6 R1
+ 0x5C1C0600, // 0077 MOVE R7 R3
+ 0x7C100600, // 0078 CALL R4 3
+ 0x80040800, // 0079 RET 1 R4
+ 0x70020007, // 007A JMP #0083
+ 0x54120009, // 007B LDINT R4 10
+ 0x1C100404, // 007C EQ R4 R2 R4
+ 0x78120004, // 007D JMPF R4 #0083
+ 0x8C100118, // 007E GETMET R4 R0 K24
+ 0x5C180200, // 007F MOVE R6 R1
+ 0x5C1C0600, // 0080 MOVE R7 R3
+ 0x7C100600, // 0081 CALL R4 3
+ 0x80040800, // 0082 RET 1 R4
+ 0x50100000, // 0083 LDBOOL R4 0 0
+ 0x80040800, // 0084 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_invoke_response
+********************************************************************/
+be_local_closure(Matter_IM_process_invoke_response, /* 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[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(InvokeResponseMessage),
+ /* K2 */ be_nested_str_weak(from_TLV),
+ }),
+ be_str_weak(process_invoke_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x50100000, // 0006 LDBOOL R4 0 0
+ 0x80040800, // 0007 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: every_second
********************************************************************/
@@ -982,33 +2168,36 @@ be_local_closure(Matter_IM_every_second, /* name */
/********************************************************************
-** Solidified function: send_ack_now
+** Solidified function: send_status
********************************************************************/
-be_local_closure(Matter_IM_send_ack_now, /* name */
+be_local_closure(Matter_IM_send_status, /* name */
be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
+ 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(_message_handler),
- /* K2 */ be_nested_str_weak(send_encrypted_ack),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(send_queue),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(IM_Status),
}),
- be_str_weak(send_ack_now),
+ be_str_weak(send_status),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x5C100200, // 0003 MOVE R4 R1
- 0x50140000, // 0004 LDBOOL R5 0 0
- 0x7C080600, // 0005 CALL R2 3
- 0x80000000, // 0006 RET 0
+ ( &(const binstruction[ 9]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0xB8160400, // 0002 GETNGBL R5 K2
+ 0x8C140B03, // 0003 GETMET R5 R5 K3
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x5C200400, // 0005 MOVE R8 R2
+ 0x7C140600, // 0006 CALL R5 3
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x80000000, // 0008 RET 0
})
)
);
@@ -1016,29 +2205,570 @@ be_local_closure(Matter_IM_send_ack_now, /* name */
/********************************************************************
-** Solidified function: every_250ms
+** Solidified function: _inner_process_read_request
********************************************************************/
-be_local_closure(Matter_IM_every_250ms, /* name */
+be_local_closure(Matter_IM__inner_process_read_request, /* name */
be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
+ 19, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 2]) {
+ be_nested_proto(
+ 20, /* nstack */
+ 4, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 3]) { /* upvals */
+ be_local_const_upval(1, 1),
+ be_local_const_upval(1, 0),
+ be_local_const_upval(1, 4),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[35]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(get_attribute_name),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(attribute),
+ /* K5 */ be_nested_str_weak(_X20_X28),
+ /* K6 */ be_nested_str_weak(_X29),
+ /* K7 */ be_nested_str_weak(),
+ /* K8 */ be_nested_str_weak(read_attribute),
+ /* K9 */ be_nested_str_weak(tlv_solo),
+ /* K10 */ be_nested_str_weak(to_str_val),
+ /* K11 */ be_nested_str_weak(is_list),
+ /* K12 */ be_nested_str_weak(is_array),
+ /* K13 */ be_nested_str_weak(encode_len),
+ /* K14 */ be_nested_str_weak(IM_ReportData),
+ /* K15 */ be_nested_str_weak(MAX_MESSAGE),
+ /* K16 */ be_nested_str_weak(Matter_TLV_array),
+ /* K17 */ be_nested_str_weak(attributedata2raw),
+ /* K18 */ be_nested_str_weak(push),
+ /* K19 */ be_nested_str_weak(val),
+ /* K20 */ be_nested_str_weak(stop_iteration),
+ /* K21 */ be_nested_str_weak(tasmota),
+ /* K22 */ be_nested_str_weak(log),
+ /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
+ /* K24 */ be_nested_str_weak(local_session_id),
+ /* K25 */ be_const_int(3),
+ /* K26 */ be_nested_str_weak(status),
+ /* K27 */ be_nested_str_weak(attributestatus2raw),
+ /* K28 */ be_nested_str_weak(loglevel),
+ /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
+ /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
+ /* K32 */ be_const_int(0),
+ /* K33 */ be_nested_str_weak(attribute_reports),
+ /* K34 */ be_const_int(1),
+ }),
+ be_str_weak(read_single_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[233]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0xB8160000, // 0002 GETNGBL R5 K0
+ 0x8C140B02, // 0003 GETMET R5 R5 K2
+ 0x881C0503, // 0004 GETMBR R7 R2 K3
+ 0x88200504, // 0005 GETMBR R8 R2 K4
+ 0x7C140600, // 0006 CALL R5 3
+ 0x78160002, // 0007 JMPF R5 #000B
+ 0x001A0A05, // 0008 ADD R6 K5 R5
+ 0x00180D06, // 0009 ADD R6 R6 K6
+ 0x70020000, // 000A JMP #000C
+ 0x58180007, // 000B LDCONST R6 K7
+ 0x5C140C00, // 000C MOVE R5 R6
+ 0x4C180000, // 000D LDNIL R6
+ 0x20180206, // 000E NE R6 R1 R6
+ 0x781A0006, // 000F JMPF R6 #0017
+ 0x8C180308, // 0010 GETMET R6 R1 K8
+ 0x68200000, // 0011 GETUPV R8 U0
+ 0x5C240400, // 0012 MOVE R9 R2
+ 0x68280001, // 0013 GETUPV R10 U1
+ 0x88281509, // 0014 GETMBR R10 R10 K9
+ 0x7C180800, // 0015 CALL R6 4
+ 0x70020000, // 0016 JMP #0018
+ 0x4C180000, // 0017 LDNIL R6
+ 0x501C0200, // 0018 LDBOOL R7 1 0
+ 0x4C200000, // 0019 LDNIL R8
+ 0x4C240000, // 001A LDNIL R9
+ 0x20240C09, // 001B NE R9 R6 R9
+ 0x78260054, // 001C JMPF R9 #0072
+ 0x58240007, // 001D LDCONST R9 K7
+ 0x68280002, // 001E GETUPV R10 U2
+ 0x742A0002, // 001F JMPT R10 #0023
+ 0x8C280D0A, // 0020 GETMET R10 R6 K10
+ 0x7C280200, // 0021 CALL R10 1
+ 0x5C241400, // 0022 MOVE R9 R10
+ 0x88280D0B, // 0023 GETMBR R10 R6 K11
+ 0x742A0001, // 0024 JMPT R10 #0027
+ 0x88280D0C, // 0025 GETMBR R10 R6 K12
+ 0x782A0031, // 0026 JMPF R10 #0059
+ 0x8C280D0D, // 0027 GETMET R10 R6 K13
+ 0x7C280200, // 0028 CALL R10 1
+ 0xB82E0000, // 0029 GETNGBL R11 K0
+ 0x882C170E, // 002A GETMBR R11 R11 K14
+ 0x882C170F, // 002B GETMBR R11 R11 K15
+ 0x2428140B, // 002C GT R10 R10 R11
+ 0x782A002A, // 002D JMPF R10 #0059
+ 0x60280012, // 002E GETGBL R10 G18
+ 0x7C280000, // 002F CALL R10 0
+ 0x5C201400, // 0030 MOVE R8 R10
+ 0x60280015, // 0031 GETGBL R10 G21
+ 0x542E002F, // 0032 LDINT R11 48
+ 0x7C280200, // 0033 CALL R10 1
+ 0x8C2C0910, // 0034 GETMET R11 R4 K16
+ 0x7C2C0200, // 0035 CALL R11 1
+ 0x68300001, // 0036 GETUPV R12 U1
+ 0x8C301911, // 0037 GETMET R12 R12 K17
+ 0x5C381400, // 0038 MOVE R14 R10
+ 0x5C3C0400, // 0039 MOVE R15 R2
+ 0x5C401600, // 003A MOVE R16 R11
+ 0x50440000, // 003B LDBOOL R17 0 0
+ 0x7C300A00, // 003C CALL R12 5
+ 0x8C301112, // 003D GETMET R12 R8 K18
+ 0x5C381400, // 003E MOVE R14 R10
+ 0x7C300400, // 003F CALL R12 2
+ 0x60300010, // 0040 GETGBL R12 G16
+ 0x88340D13, // 0041 GETMBR R13 R6 K19
+ 0x7C300200, // 0042 CALL R12 1
+ 0xA8020010, // 0043 EXBLK 0 #0055
+ 0x5C341800, // 0044 MOVE R13 R12
+ 0x7C340000, // 0045 CALL R13 0
+ 0x60380015, // 0046 GETGBL R14 G21
+ 0x543E002F, // 0047 LDINT R15 48
+ 0x7C380200, // 0048 CALL R14 1
+ 0x5C281C00, // 0049 MOVE R10 R14
+ 0x68380001, // 004A GETUPV R14 U1
+ 0x8C381D11, // 004B GETMET R14 R14 K17
+ 0x5C401400, // 004C MOVE R16 R10
+ 0x5C440400, // 004D MOVE R17 R2
+ 0x5C481A00, // 004E MOVE R18 R13
+ 0x504C0200, // 004F LDBOOL R19 1 0
+ 0x7C380A00, // 0050 CALL R14 5
+ 0x8C381112, // 0051 GETMET R14 R8 K18
+ 0x5C401400, // 0052 MOVE R16 R10
+ 0x7C380400, // 0053 CALL R14 2
+ 0x7001FFEE, // 0054 JMP #0044
+ 0x58300014, // 0055 LDCONST R12 K20
+ 0xAC300200, // 0056 CATCH R12 1 0
+ 0xB0080000, // 0057 RAISE 2 R0 R0
+ 0x70020009, // 0058 JMP #0063
+ 0x60280015, // 0059 GETGBL R10 G21
+ 0x542E002F, // 005A LDINT R11 48
+ 0x7C280200, // 005B CALL R10 1
+ 0x5C201400, // 005C MOVE R8 R10
+ 0x68280001, // 005D GETUPV R10 U1
+ 0x8C281511, // 005E GETMET R10 R10 K17
+ 0x5C301000, // 005F MOVE R12 R8
+ 0x5C340400, // 0060 MOVE R13 R2
+ 0x5C380C00, // 0061 MOVE R14 R6
+ 0x7C280800, // 0062 CALL R10 4
+ 0x68280002, // 0063 GETUPV R10 U2
+ 0x742A000B, // 0064 JMPT R10 #0071
+ 0xB82A2A00, // 0065 GETNGBL R10 K21
+ 0x8C281516, // 0066 GETMET R10 R10 K22
+ 0x60300018, // 0067 GETGBL R12 G24
+ 0x58340017, // 0068 LDCONST R13 K23
+ 0x68380000, // 0069 GETUPV R14 U0
+ 0x88381D18, // 006A GETMBR R14 R14 K24
+ 0x5C3C0400, // 006B MOVE R15 R2
+ 0x5C400A00, // 006C MOVE R16 R5
+ 0x5C441200, // 006D MOVE R17 R9
+ 0x7C300A00, // 006E CALL R12 5
+ 0x58340019, // 006F LDCONST R13 K25
+ 0x7C280600, // 0070 CALL R10 3
+ 0x70020038, // 0071 JMP #00AB
+ 0x8824051A, // 0072 GETMBR R9 R2 K26
+ 0x4C280000, // 0073 LDNIL R10
+ 0x2024120A, // 0074 NE R9 R9 R10
+ 0x78260026, // 0075 JMPF R9 #009D
+ 0x780E0024, // 0076 JMPF R3 #009C
+ 0x60240015, // 0077 GETGBL R9 G21
+ 0x542A002F, // 0078 LDINT R10 48
+ 0x7C240200, // 0079 CALL R9 1
+ 0x5C201200, // 007A MOVE R8 R9
+ 0x68240001, // 007B GETUPV R9 U1
+ 0x8C24131B, // 007C GETMET R9 R9 K27
+ 0x5C2C1000, // 007D MOVE R11 R8
+ 0x5C300400, // 007E MOVE R12 R2
+ 0x8834051A, // 007F GETMBR R13 R2 K26
+ 0x7C240800, // 0080 CALL R9 4
+ 0xB8262A00, // 0081 GETNGBL R9 K21
+ 0x8C24131C, // 0082 GETMET R9 R9 K28
+ 0x582C0019, // 0083 LDCONST R11 K25
+ 0x7C240400, // 0084 CALL R9 2
+ 0x78260015, // 0085 JMPF R9 #009C
+ 0xB8262A00, // 0086 GETNGBL R9 K21
+ 0x8C241316, // 0087 GETMET R9 R9 K22
+ 0x602C0018, // 0088 GETGBL R11 G24
+ 0x5830001D, // 0089 LDCONST R12 K29
+ 0x68340000, // 008A GETUPV R13 U0
+ 0x88341B18, // 008B GETMBR R13 R13 K24
+ 0x60380008, // 008C GETGBL R14 G8
+ 0x5C3C0400, // 008D MOVE R15 R2
+ 0x7C380200, // 008E CALL R14 1
+ 0x5C3C0A00, // 008F MOVE R15 R5
+ 0x8840051A, // 0090 GETMBR R16 R2 K26
+ 0x8844051A, // 0091 GETMBR R17 R2 K26
+ 0xB84A0000, // 0092 GETNGBL R18 K0
+ 0x8848251E, // 0093 GETMBR R18 R18 K30
+ 0x1C442212, // 0094 EQ R17 R17 R18
+ 0x78460001, // 0095 JMPF R17 #0098
+ 0x5844001E, // 0096 LDCONST R17 K30
+ 0x70020000, // 0097 JMP #0099
+ 0x58440007, // 0098 LDCONST R17 K7
+ 0x7C2C0C00, // 0099 CALL R11 6
+ 0x58300019, // 009A LDCONST R12 K25
+ 0x7C240600, // 009B CALL R9 3
+ 0x7002000D, // 009C JMP #00AB
+ 0xB8262A00, // 009D GETNGBL R9 K21
+ 0x8C241316, // 009E GETMET R9 R9 K22
+ 0x602C0018, // 009F GETGBL R11 G24
+ 0x5830001F, // 00A0 LDCONST R12 K31
+ 0x68340000, // 00A1 GETUPV R13 U0
+ 0x88341B18, // 00A2 GETMBR R13 R13 K24
+ 0x60380008, // 00A3 GETGBL R14 G8
+ 0x5C3C0400, // 00A4 MOVE R15 R2
+ 0x7C380200, // 00A5 CALL R14 1
+ 0x5C3C0A00, // 00A6 MOVE R15 R5
+ 0x7C2C0800, // 00A7 CALL R11 4
+ 0x58300019, // 00A8 LDCONST R12 K25
+ 0x7C240600, // 00A9 CALL R9 3
+ 0x501C0000, // 00AA LDBOOL R7 0 0
+ 0x6024000F, // 00AB GETGBL R9 G15
+ 0x5C281000, // 00AC MOVE R10 R8
+ 0x602C0012, // 00AD GETGBL R11 G18
+ 0x7C240400, // 00AE CALL R9 2
+ 0x78260001, // 00AF JMPF R9 #00B2
+ 0x58240020, // 00B0 LDCONST R9 K32
+ 0x70020000, // 00B1 JMP #00B3
+ 0x4C240000, // 00B2 LDNIL R9
+ 0x4C280000, // 00B3 LDNIL R10
+ 0x2028100A, // 00B4 NE R10 R8 R10
+ 0x782A0031, // 00B5 JMPF R10 #00E8
+ 0x4C280000, // 00B6 LDNIL R10
+ 0x1C28120A, // 00B7 EQ R10 R9 R10
+ 0x782A0001, // 00B8 JMPF R10 #00BB
+ 0x5C281000, // 00B9 MOVE R10 R8
+ 0x70020000, // 00BA JMP #00BC
+ 0x94281009, // 00BB GETIDX R10 R8 R9
+ 0x602C000C, // 00BC GETGBL R11 G12
+ 0x88300121, // 00BD GETMBR R12 R0 K33
+ 0x7C2C0200, // 00BE CALL R11 1
+ 0x1C2C1720, // 00BF EQ R11 R11 K32
+ 0x782E0004, // 00C0 JMPF R11 #00C6
+ 0x882C0121, // 00C1 GETMBR R11 R0 K33
+ 0x8C2C1712, // 00C2 GETMET R11 R11 K18
+ 0x5C341400, // 00C3 MOVE R13 R10
+ 0x7C2C0400, // 00C4 CALL R11 2
+ 0x70020014, // 00C5 JMP #00DB
+ 0x542DFFFE, // 00C6 LDINT R11 -1
+ 0x88300121, // 00C7 GETMBR R12 R0 K33
+ 0x942C180B, // 00C8 GETIDX R11 R12 R11
+ 0x6034000C, // 00C9 GETGBL R13 G12
+ 0x5C381600, // 00CA MOVE R14 R11
+ 0x7C340200, // 00CB CALL R13 1
+ 0x6038000C, // 00CC GETGBL R14 G12
+ 0x5C3C1400, // 00CD MOVE R15 R10
+ 0x7C380200, // 00CE CALL R14 1
+ 0x00341A0E, // 00CF ADD R13 R13 R14
+ 0xB83A0000, // 00D0 GETNGBL R14 K0
+ 0x88381D0E, // 00D1 GETMBR R14 R14 K14
+ 0x88381D0F, // 00D2 GETMBR R14 R14 K15
+ 0x18341A0E, // 00D3 LE R13 R13 R14
+ 0x78360001, // 00D4 JMPF R13 #00D7
+ 0x4034160A, // 00D5 CONNECT R13 R11 R10
+ 0x70020003, // 00D6 JMP #00DB
+ 0x88300121, // 00D7 GETMBR R12 R0 K33
+ 0x8C301912, // 00D8 GETMET R12 R12 K18
+ 0x5C381400, // 00D9 MOVE R14 R10
+ 0x7C300400, // 00DA CALL R12 2
+ 0x4C2C0000, // 00DB LDNIL R11
+ 0x1C2C120B, // 00DC EQ R11 R9 R11
+ 0x782E0001, // 00DD JMPF R11 #00E0
+ 0x4C200000, // 00DE LDNIL R8
+ 0x70020006, // 00DF JMP #00E7
+ 0x00241322, // 00E0 ADD R9 R9 K34
+ 0x602C000C, // 00E1 GETGBL R11 G12
+ 0x5C301000, // 00E2 MOVE R12 R8
+ 0x7C2C0200, // 00E3 CALL R11 1
+ 0x282C120B, // 00E4 GE R11 R9 R11
+ 0x782E0000, // 00E5 JMPF R11 #00E7
+ 0x4C200000, // 00E6 LDNIL R8
+ 0x7001FFCA, // 00E7 JMP #00B3
+ 0x80040E00, // 00E8 RET 1 R7
+ })
+ ),
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 2]) { /* upvals */
+ be_local_const_upval(1, 5),
+ be_local_const_upval(1, 8),
+ }),
+ 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[ 7]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x68100001, // 0001 GETUPV R4 U1
+ 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[25]) { /* constants */
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(get_active_endpoints),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(Path),
+ /* K4 */ be_nested_str_weak(msg),
+ /* K5 */ be_nested_str_weak(ReportDataMessage),
+ /* K6 */ be_nested_str_weak(attribute_reports),
+ /* K7 */ be_nested_str_weak(attributes_requests),
+ /* K8 */ be_nested_str_weak(endpoint),
+ /* K9 */ be_nested_str_weak(cluster),
+ /* K10 */ be_nested_str_weak(attribute),
+ /* K11 */ be_nested_str_weak(fabric_filtered),
+ /* K12 */ be_nested_str_weak(status),
+ /* K13 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K14 */ be_nested_str_weak(get_attribute_name),
+ /* K15 */ be_nested_str_weak(tasmota),
+ /* K16 */ be_nested_str_weak(log),
+ /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s),
+ /* K18 */ be_nested_str_weak(local_session_id),
+ /* K19 */ be_nested_str_weak(_X20_X28),
+ /* K20 */ be_nested_str_weak(_X29),
+ /* K21 */ be_nested_str_weak(),
+ /* K22 */ be_const_int(3),
+ /* K23 */ be_nested_str_weak(process_attribute_expansion),
+ /* K24 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(_inner_process_read_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[96]) { /* code */
+ 0x84140000, // 0000 CLOSURE R5 P0
+ 0x88180100, // 0001 GETMBR R6 R0 K0
+ 0x8C180D01, // 0002 GETMET R6 R6 K1
+ 0x7C180200, // 0003 CALL R6 1
+ 0xB81E0400, // 0004 GETNGBL R7 K2
+ 0x8C1C0F03, // 0005 GETMET R7 R7 K3
+ 0x7C1C0200, // 0006 CALL R7 1
+ 0x901E0803, // 0007 SETMBR R7 K4 R3
+ 0xB8220400, // 0008 GETNGBL R8 K2
+ 0x8C201105, // 0009 GETMET R8 R8 K5
+ 0x7C200200, // 000A CALL R8 1
+ 0x60240012, // 000B GETGBL R9 G18
+ 0x7C240000, // 000C CALL R9 0
+ 0x90220C09, // 000D SETMBR R8 K6 R9
+ 0x60240010, // 000E GETGBL R9 G16
+ 0x88280507, // 000F GETMBR R10 R2 K7
+ 0x7C240200, // 0010 CALL R9 1
+ 0xA8020048, // 0011 EXBLK 0 #005B
+ 0x5C281200, // 0012 MOVE R10 R9
+ 0x7C280000, // 0013 CALL R10 0
+ 0x882C1508, // 0014 GETMBR R11 R10 K8
+ 0x901E100B, // 0015 SETMBR R7 K8 R11
+ 0x882C1509, // 0016 GETMBR R11 R10 K9
+ 0x901E120B, // 0017 SETMBR R7 K9 R11
+ 0x882C150A, // 0018 GETMBR R11 R10 K10
+ 0x901E140B, // 0019 SETMBR R7 K10 R11
+ 0x882C050B, // 001A GETMBR R11 R2 K11
+ 0x901E160B, // 001B SETMBR R7 K11 R11
+ 0xB82E0400, // 001C GETNGBL R11 K2
+ 0x882C170D, // 001D GETMBR R11 R11 K13
+ 0x901E180B, // 001E SETMBR R7 K12 R11
+ 0x882C0F08, // 001F GETMBR R11 R7 K8
+ 0x4C300000, // 0020 LDNIL R12
+ 0x1C2C160C, // 0021 EQ R11 R11 R12
+ 0x742E0007, // 0022 JMPT R11 #002B
+ 0x882C0F09, // 0023 GETMBR R11 R7 K9
+ 0x4C300000, // 0024 LDNIL R12
+ 0x1C2C160C, // 0025 EQ R11 R11 R12
+ 0x742E0003, // 0026 JMPT R11 #002B
+ 0x882C0F0A, // 0027 GETMBR R11 R7 K10
+ 0x4C300000, // 0028 LDNIL R12
+ 0x1C2C160C, // 0029 EQ R11 R11 R12
+ 0x782E0029, // 002A JMPF R11 #0055
+ 0x882C0F09, // 002B GETMBR R11 R7 K9
+ 0x4C300000, // 002C LDNIL R12
+ 0x202C160C, // 002D NE R11 R11 R12
+ 0x782E001A, // 002E JMPF R11 #004A
+ 0x882C0F0A, // 002F GETMBR R11 R7 K10
+ 0x4C300000, // 0030 LDNIL R12
+ 0x202C160C, // 0031 NE R11 R11 R12
+ 0x782E0016, // 0032 JMPF R11 #004A
+ 0xB82E0400, // 0033 GETNGBL R11 K2
+ 0x8C2C170E, // 0034 GETMET R11 R11 K14
+ 0x88340F09, // 0035 GETMBR R13 R7 K9
+ 0x88380F0A, // 0036 GETMBR R14 R7 K10
+ 0x7C2C0600, // 0037 CALL R11 3
+ 0xB8321E00, // 0038 GETNGBL R12 K15
+ 0x8C301910, // 0039 GETMET R12 R12 K16
+ 0x60380018, // 003A GETGBL R14 G24
+ 0x583C0011, // 003B LDCONST R15 K17
+ 0x88400312, // 003C GETMBR R16 R1 K18
+ 0x60440008, // 003D GETGBL R17 G8
+ 0x5C480E00, // 003E MOVE R18 R7
+ 0x7C440200, // 003F CALL R17 1
+ 0x782E0002, // 0040 JMPF R11 #0044
+ 0x004A260B, // 0041 ADD R18 K19 R11
+ 0x00482514, // 0042 ADD R18 R18 K20
+ 0x70020000, // 0043 JMP #0045
+ 0x58480015, // 0044 LDCONST R18 K21
+ 0x00442212, // 0045 ADD R17 R17 R18
+ 0x7C380600, // 0046 CALL R14 3
+ 0x583C0016, // 0047 LDCONST R15 K22
+ 0x7C300600, // 0048 CALL R12 3
+ 0x7002000A, // 0049 JMP #0055
+ 0xB82E1E00, // 004A GETNGBL R11 K15
+ 0x8C2C1710, // 004B GETMET R11 R11 K16
+ 0x60340018, // 004C GETGBL R13 G24
+ 0x58380011, // 004D LDCONST R14 K17
+ 0x883C0312, // 004E GETMBR R15 R1 K18
+ 0x60400008, // 004F GETGBL R16 G8
+ 0x5C440E00, // 0050 MOVE R17 R7
+ 0x7C400200, // 0051 CALL R16 1
+ 0x7C340600, // 0052 CALL R13 3
+ 0x58380016, // 0053 LDCONST R14 K22
+ 0x7C2C0600, // 0054 CALL R11 3
+ 0x882C0100, // 0055 GETMBR R11 R0 K0
+ 0x8C2C1717, // 0056 GETMET R11 R11 K23
+ 0x5C340E00, // 0057 MOVE R13 R7
+ 0x84380001, // 0058 CLOSURE R14 P1
+ 0x7C2C0600, // 0059 CALL R11 3
+ 0x7001FFB6, // 005A JMP #0012
+ 0x58240018, // 005B LDCONST R9 K24
+ 0xAC240200, // 005C CATCH R9 1 0
+ 0xB0080000, // 005D RAISE 2 R0 R0
+ 0xA0000000, // 005E CLOSE R0
+ 0x80041000, // 005F RET 1 R8
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: report_data
+********************************************************************/
+be_local_closure(Matter_IM_report_data, /* 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[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(subs_shop),
- /* K1 */ be_nested_str_weak(every_250ms),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(ReportDataMessage),
+ /* K2 */ be_nested_str_weak(from_TLV),
}),
- be_str_weak(every_250ms),
+ be_str_weak(report_data),
&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
- 0x80000000, // 0003 RET 0
+ ( &(const binstruction[ 8]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x50100000, // 0006 LDBOOL R4 0 0
+ 0x80040800, // 0007 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attributestatus2raw
+********************************************************************/
+be_local_closure(Matter_IM_attributestatus2raw, /* 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[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(add),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_nested_str_weak(path2raw),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(status),
+ /* K5 */ be_const_int(2),
+ }),
+ be_str_weak(attributestatus2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[47]) { /* code */
+ 0x8C100300, // 0000 GETMET R4 R1 K0
+ 0x541A0014, // 0001 LDINT R6 21
+ 0x581C0001, // 0002 LDCONST R7 K1
+ 0x7C100600, // 0003 CALL R4 3
+ 0x8C100300, // 0004 GETMET R4 R1 K0
+ 0x541A34FF, // 0005 LDINT R6 13568
+ 0x541DFFFD, // 0006 LDINT R7 -2
+ 0x7C100600, // 0007 CALL R4 3
+ 0x8C100102, // 0008 GETMET R4 R0 K2
+ 0x5C180200, // 0009 MOVE R6 R1
+ 0x5C1C0400, // 000A MOVE R7 R2
+ 0x58200003, // 000B LDCONST R8 K3
+ 0x7C100800, // 000C CALL R4 4
+ 0x8C100300, // 000D GETMET R4 R1 K0
+ 0x541A3500, // 000E LDINT R6 13569
+ 0x541DFFFD, // 000F LDINT R7 -2
+ 0x7C100600, // 0010 CALL R4 3
+ 0x88100504, // 0011 GETMBR R4 R2 K4
+ 0x541600FE, // 0012 LDINT R5 255
+ 0x18100805, // 0013 LE R4 R4 R5
+ 0x78120008, // 0014 JMPF R4 #001E
+ 0x8C100300, // 0015 GETMET R4 R1 K0
+ 0x541A23FF, // 0016 LDINT R6 9216
+ 0x541DFFFD, // 0017 LDINT R7 -2
+ 0x7C100600, // 0018 CALL R4 3
+ 0x8C100300, // 0019 GETMET R4 R1 K0
+ 0x88180504, // 001A GETMBR R6 R2 K4
+ 0x581C0001, // 001B LDCONST R7 K1
+ 0x7C100600, // 001C CALL R4 3
+ 0x70020007, // 001D JMP #0026
+ 0x8C100300, // 001E GETMET R4 R1 K0
+ 0x541A24FF, // 001F LDINT R6 9472
+ 0x541DFFFD, // 0020 LDINT R7 -2
+ 0x7C100600, // 0021 CALL R4 3
+ 0x8C100300, // 0022 GETMET R4 R1 K0
+ 0x88180504, // 0023 GETMBR R6 R2 K4
+ 0x581C0005, // 0024 LDCONST R7 K5
+ 0x7C100600, // 0025 CALL R4 3
+ 0x8C100300, // 0026 GETMET R4 R1 K0
+ 0x541A1817, // 0027 LDINT R6 6168
+ 0x541DFFFD, // 0028 LDINT R7 -2
+ 0x7C100600, // 0029 CALL R4 3
+ 0x8C100300, // 002A GETMET R4 R1 K0
+ 0x541A0017, // 002B LDINT R6 24
+ 0x581C0001, // 002C LDCONST R7 K1
+ 0x7C100600, // 002D CALL R4 3
+ 0x80000000, // 002E RET 0
})
)
);
@@ -1084,9 +2814,9 @@ be_local_closure(Matter_IM_send_subscribe_response, /* name */
/********************************************************************
-** Solidified function: send_invoke_response
+** Solidified function: send_report_data
********************************************************************/
-be_local_closure(Matter_IM_send_invoke_response, /* name */
+be_local_closure(Matter_IM_send_report_data, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
@@ -1100,9 +2830,9 @@ be_local_closure(Matter_IM_send_invoke_response, /* name */
/* K0 */ be_nested_str_weak(send_queue),
/* K1 */ be_nested_str_weak(push),
/* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_InvokeResponse),
+ /* K3 */ be_nested_str_weak(IM_ReportData),
}),
- be_str_weak(send_invoke_response),
+ be_str_weak(send_report_data),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0
@@ -1120,661 +2850,6 @@ be_local_closure(Matter_IM_send_invoke_response, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: send_status
-********************************************************************/
-be_local_closure(Matter_IM_send_status, /* 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[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_Status),
- }),
- be_str_weak(send_status),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C140600, // 0006 CALL R5 3
- 0x7C0C0400, // 0007 CALL R3 2
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: subscribe_response
-********************************************************************/
-be_local_closure(Matter_IM_subscribe_response, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(SubscribeResponseMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(subscribe_response),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_incoming
-********************************************************************/
-be_local_closure(Matter_IM_process_incoming, /* 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[21]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(parse),
- /* K3 */ be_nested_str_weak(raw),
- /* K4 */ be_nested_str_weak(app_payload_idx),
- /* K5 */ be_nested_str_weak(findsubval),
- /* K6 */ be_nested_str_weak(opcode),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(process_status_response),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(send_ack_now),
- /* K11 */ be_nested_str_weak(process_read_request),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(subscribe_request),
- /* K14 */ be_nested_str_weak(subscribe_response),
- /* K15 */ be_nested_str_weak(report_data),
- /* K16 */ be_nested_str_weak(process_write_request),
- /* K17 */ be_nested_str_weak(process_write_response),
- /* K18 */ be_nested_str_weak(process_invoke_request),
- /* K19 */ be_nested_str_weak(process_invoke_response),
- /* K20 */ be_nested_str_weak(process_timed_request),
- }),
- be_str_weak(process_incoming),
- &be_const_str_solidified,
- ( &(const binstruction[110]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x88100303, // 0003 GETMBR R4 R1 K3
- 0x88140304, // 0004 GETMBR R5 R1 K4
- 0x7C080600, // 0005 CALL R2 3
- 0x8C0C0505, // 0006 GETMET R3 R2 K5
- 0x541600FE, // 0007 LDINT R5 255
- 0x7C0C0400, // 0008 CALL R3 2
- 0x88100306, // 0009 GETMBR R4 R1 K6
- 0x1C140907, // 000A EQ R5 R4 K7
- 0x78160005, // 000B JMPF R5 #0012
- 0x8C140108, // 000C GETMET R5 R0 K8
- 0x5C1C0200, // 000D MOVE R7 R1
- 0x5C200400, // 000E MOVE R8 R2
- 0x7C140600, // 000F CALL R5 3
- 0x80040A00, // 0010 RET 1 R5
- 0x70020059, // 0011 JMP #006C
- 0x1C140909, // 0012 EQ R5 R4 K9
- 0x78160008, // 0013 JMPF R5 #001D
- 0x8C14010A, // 0014 GETMET R5 R0 K10
- 0x5C1C0200, // 0015 MOVE R7 R1
- 0x7C140400, // 0016 CALL R5 2
- 0x8C14010B, // 0017 GETMET R5 R0 K11
- 0x5C1C0200, // 0018 MOVE R7 R1
- 0x5C200400, // 0019 MOVE R8 R2
- 0x7C140600, // 001A CALL R5 3
- 0x80040A00, // 001B RET 1 R5
- 0x7002004E, // 001C JMP #006C
- 0x1C14090C, // 001D EQ R5 R4 K12
- 0x78160008, // 001E JMPF R5 #0028
- 0x8C14010A, // 001F GETMET R5 R0 K10
- 0x5C1C0200, // 0020 MOVE R7 R1
- 0x7C140400, // 0021 CALL R5 2
- 0x8C14010D, // 0022 GETMET R5 R0 K13
- 0x5C1C0200, // 0023 MOVE R7 R1
- 0x5C200400, // 0024 MOVE R8 R2
- 0x7C140600, // 0025 CALL R5 3
- 0x80040A00, // 0026 RET 1 R5
- 0x70020043, // 0027 JMP #006C
- 0x54160003, // 0028 LDINT R5 4
- 0x1C140805, // 0029 EQ R5 R4 R5
- 0x78160005, // 002A JMPF R5 #0031
- 0x8C14010E, // 002B GETMET R5 R0 K14
- 0x5C1C0200, // 002C MOVE R7 R1
- 0x5C200400, // 002D MOVE R8 R2
- 0x7C140600, // 002E CALL R5 3
- 0x80040A00, // 002F RET 1 R5
- 0x7002003A, // 0030 JMP #006C
- 0x54160004, // 0031 LDINT R5 5
- 0x1C140805, // 0032 EQ R5 R4 R5
- 0x78160005, // 0033 JMPF R5 #003A
- 0x8C14010F, // 0034 GETMET R5 R0 K15
- 0x5C1C0200, // 0035 MOVE R7 R1
- 0x5C200400, // 0036 MOVE R8 R2
- 0x7C140600, // 0037 CALL R5 3
- 0x80040A00, // 0038 RET 1 R5
- 0x70020031, // 0039 JMP #006C
- 0x54160005, // 003A LDINT R5 6
- 0x1C140805, // 003B EQ R5 R4 R5
- 0x78160008, // 003C JMPF R5 #0046
- 0x8C14010A, // 003D GETMET R5 R0 K10
- 0x5C1C0200, // 003E MOVE R7 R1
- 0x7C140400, // 003F CALL R5 2
- 0x8C140110, // 0040 GETMET R5 R0 K16
- 0x5C1C0200, // 0041 MOVE R7 R1
- 0x5C200400, // 0042 MOVE R8 R2
- 0x7C140600, // 0043 CALL R5 3
- 0x80040A00, // 0044 RET 1 R5
- 0x70020025, // 0045 JMP #006C
- 0x54160006, // 0046 LDINT R5 7
- 0x1C140805, // 0047 EQ R5 R4 R5
- 0x78160005, // 0048 JMPF R5 #004F
- 0x8C140111, // 0049 GETMET R5 R0 K17
- 0x5C1C0200, // 004A MOVE R7 R1
- 0x5C200400, // 004B MOVE R8 R2
- 0x7C140600, // 004C CALL R5 3
- 0x80040A00, // 004D RET 1 R5
- 0x7002001C, // 004E JMP #006C
- 0x54160007, // 004F LDINT R5 8
- 0x1C140805, // 0050 EQ R5 R4 R5
- 0x78160008, // 0051 JMPF R5 #005B
- 0x8C14010A, // 0052 GETMET R5 R0 K10
- 0x5C1C0200, // 0053 MOVE R7 R1
- 0x7C140400, // 0054 CALL R5 2
- 0x8C140112, // 0055 GETMET R5 R0 K18
- 0x5C1C0200, // 0056 MOVE R7 R1
- 0x5C200400, // 0057 MOVE R8 R2
- 0x7C140600, // 0058 CALL R5 3
- 0x80040A00, // 0059 RET 1 R5
- 0x70020010, // 005A JMP #006C
- 0x54160008, // 005B LDINT R5 9
- 0x1C140805, // 005C EQ R5 R4 R5
- 0x78160005, // 005D JMPF R5 #0064
- 0x8C140113, // 005E GETMET R5 R0 K19
- 0x5C1C0200, // 005F MOVE R7 R1
- 0x5C200400, // 0060 MOVE R8 R2
- 0x7C140600, // 0061 CALL R5 3
- 0x80040A00, // 0062 RET 1 R5
- 0x70020007, // 0063 JMP #006C
- 0x54160009, // 0064 LDINT R5 10
- 0x1C140805, // 0065 EQ R5 R4 R5
- 0x78160004, // 0066 JMPF R5 #006C
- 0x8C140114, // 0067 GETMET R5 R0 K20
- 0x5C1C0200, // 0068 MOVE R7 R1
- 0x5C200400, // 0069 MOVE R8 R2
- 0x7C140600, // 006A CALL R5 3
- 0x80040A00, // 006B RET 1 R5
- 0x50140000, // 006C LDBOOL R5 0 0
- 0x80040A00, // 006D RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _inner_process_read_request
-********************************************************************/
-be_local_closure(Matter_IM__inner_process_read_request, /* name */
- be_nested_proto(
- 18, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 23, /* nstack */
- 4, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 1),
- be_local_const_upval(1, 3),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[38]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(get_attribute_name),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_nested_str_weak(_X20_X28),
- /* K6 */ be_nested_str_weak(_X29),
- /* K7 */ be_nested_str_weak(),
- /* K8 */ be_nested_str_weak(read_attribute),
- /* K9 */ be_nested_str_weak(AttributeReportIB),
- /* K10 */ be_nested_str_weak(attribute_data),
- /* K11 */ be_nested_str_weak(AttributeDataIB),
- /* K12 */ be_nested_str_weak(data_version),
- /* K13 */ be_const_int(1),
- /* K14 */ be_nested_str_weak(path),
- /* K15 */ be_nested_str_weak(AttributePathIB),
- /* K16 */ be_nested_str_weak(endpoint),
- /* K17 */ be_nested_str_weak(data),
- /* K18 */ be_nested_str_weak(to_TLV),
- /* K19 */ be_nested_str_weak(encode_len),
- /* K20 */ be_nested_str_weak(tlv2raw),
- /* K21 */ be_nested_str_weak(tasmota),
- /* K22 */ be_nested_str_weak(log),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
- /* K24 */ be_nested_str_weak(local_session_id),
- /* K25 */ be_const_int(3),
- /* K26 */ be_nested_str_weak(status),
- /* K27 */ be_nested_str_weak(attribute_status),
- /* K28 */ be_nested_str_weak(AttributeStatusIB),
- /* K29 */ be_nested_str_weak(StatusIB),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
- /* K31 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
- /* K33 */ be_nested_str_weak(attribute_reports),
- /* K34 */ be_const_int(0),
- /* K35 */ be_nested_str_weak(push),
- /* K36 */ be_nested_str_weak(IM_ReportData),
- /* K37 */ be_nested_str_weak(MAX_MESSAGE),
- }),
- be_str_weak(read_single_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[205]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0xB8160000, // 0002 GETNGBL R5 K0
- 0x8C140B02, // 0003 GETMET R5 R5 K2
- 0x881C0503, // 0004 GETMBR R7 R2 K3
- 0x88200504, // 0005 GETMBR R8 R2 K4
- 0x7C140600, // 0006 CALL R5 3
- 0x78160002, // 0007 JMPF R5 #000B
- 0x001A0A05, // 0008 ADD R6 K5 R5
- 0x00180D06, // 0009 ADD R6 R6 K6
- 0x70020000, // 000A JMP #000C
- 0x58180007, // 000B LDCONST R6 K7
- 0x5C140C00, // 000C MOVE R5 R6
- 0x4C180000, // 000D LDNIL R6
- 0x20180206, // 000E NE R6 R1 R6
- 0x781A0004, // 000F JMPF R6 #0015
- 0x8C180308, // 0010 GETMET R6 R1 K8
- 0x68200000, // 0011 GETUPV R8 U0
- 0x5C240400, // 0012 MOVE R9 R2
- 0x7C180600, // 0013 CALL R6 3
- 0x70020000, // 0014 JMP #0016
- 0x4C180000, // 0015 LDNIL R6
- 0x501C0200, // 0016 LDBOOL R7 1 0
- 0x4C200000, // 0017 LDNIL R8
- 0x4C240000, // 0018 LDNIL R9
- 0x20240C09, // 0019 NE R9 R6 R9
- 0x7826003A, // 001A JMPF R9 #0056
- 0x60240008, // 001B GETGBL R9 G8
- 0x5C280C00, // 001C MOVE R10 R6
- 0x7C240200, // 001D CALL R9 1
- 0xB82A0000, // 001E GETNGBL R10 K0
- 0x8C281509, // 001F GETMET R10 R10 K9
- 0x7C280200, // 0020 CALL R10 1
- 0xB82E0000, // 0021 GETNGBL R11 K0
- 0x8C2C170B, // 0022 GETMET R11 R11 K11
- 0x7C2C0200, // 0023 CALL R11 1
- 0x902A140B, // 0024 SETMBR R10 K10 R11
- 0x882C150A, // 0025 GETMBR R11 R10 K10
- 0x902E190D, // 0026 SETMBR R11 K12 K13
- 0x882C150A, // 0027 GETMBR R11 R10 K10
- 0xB8320000, // 0028 GETNGBL R12 K0
- 0x8C30190F, // 0029 GETMET R12 R12 K15
- 0x7C300200, // 002A CALL R12 1
- 0x902E1C0C, // 002B SETMBR R11 K14 R12
- 0x882C150A, // 002C GETMBR R11 R10 K10
- 0x882C170E, // 002D GETMBR R11 R11 K14
- 0x88300510, // 002E GETMBR R12 R2 K16
- 0x902E200C, // 002F SETMBR R11 K16 R12
- 0x882C150A, // 0030 GETMBR R11 R10 K10
- 0x882C170E, // 0031 GETMBR R11 R11 K14
- 0x88300503, // 0032 GETMBR R12 R2 K3
- 0x902E060C, // 0033 SETMBR R11 K3 R12
- 0x882C150A, // 0034 GETMBR R11 R10 K10
- 0x882C170E, // 0035 GETMBR R11 R11 K14
- 0x88300504, // 0036 GETMBR R12 R2 K4
- 0x902E080C, // 0037 SETMBR R11 K4 R12
- 0x882C150A, // 0038 GETMBR R11 R10 K10
- 0x902E2206, // 0039 SETMBR R11 K17 R6
- 0x8C2C1512, // 003A GETMET R11 R10 K18
- 0x7C2C0200, // 003B CALL R11 1
- 0x8C301713, // 003C GETMET R12 R11 K19
- 0x7C300200, // 003D CALL R12 1
- 0x60340015, // 003E GETGBL R13 G21
- 0x5C381800, // 003F MOVE R14 R12
- 0x7C340200, // 0040 CALL R13 1
- 0x8C381714, // 0041 GETMET R14 R11 K20
- 0x5C401A00, // 0042 MOVE R16 R13
- 0x7C380400, // 0043 CALL R14 2
- 0x5C201C00, // 0044 MOVE R8 R14
- 0x68380001, // 0045 GETUPV R14 U1
- 0x743A000D, // 0046 JMPT R14 #0055
- 0xB83A2A00, // 0047 GETNGBL R14 K21
- 0x8C381D16, // 0048 GETMET R14 R14 K22
- 0x60400018, // 0049 GETGBL R16 G24
- 0x58440017, // 004A LDCONST R17 K23
- 0x68480000, // 004B GETUPV R18 U0
- 0x88482518, // 004C GETMBR R18 R18 K24
- 0x604C0008, // 004D GETGBL R19 G8
- 0x5C500400, // 004E MOVE R20 R2
- 0x7C4C0200, // 004F CALL R19 1
- 0x5C500A00, // 0050 MOVE R20 R5
- 0x5C541200, // 0051 MOVE R21 R9
- 0x7C400A00, // 0052 CALL R16 5
- 0x58440019, // 0053 LDCONST R17 K25
- 0x7C380600, // 0054 CALL R14 3
- 0x70020055, // 0055 JMP #00AC
- 0x8824051A, // 0056 GETMBR R9 R2 K26
- 0x4C280000, // 0057 LDNIL R10
- 0x2024120A, // 0058 NE R9 R9 R10
- 0x78260043, // 0059 JMPF R9 #009E
- 0x780E0041, // 005A JMPF R3 #009D
- 0xB8260000, // 005B GETNGBL R9 K0
- 0x8C241309, // 005C GETMET R9 R9 K9
- 0x7C240200, // 005D CALL R9 1
- 0xB82A0000, // 005E GETNGBL R10 K0
- 0x8C28151C, // 005F GETMET R10 R10 K28
- 0x7C280200, // 0060 CALL R10 1
- 0x9026360A, // 0061 SETMBR R9 K27 R10
- 0x8828131B, // 0062 GETMBR R10 R9 K27
- 0xB82E0000, // 0063 GETNGBL R11 K0
- 0x8C2C170F, // 0064 GETMET R11 R11 K15
- 0x7C2C0200, // 0065 CALL R11 1
- 0x902A1C0B, // 0066 SETMBR R10 K14 R11
- 0x8828131B, // 0067 GETMBR R10 R9 K27
- 0xB82E0000, // 0068 GETNGBL R11 K0
- 0x8C2C171D, // 0069 GETMET R11 R11 K29
- 0x7C2C0200, // 006A CALL R11 1
- 0x902A340B, // 006B SETMBR R10 K26 R11
- 0x8828131B, // 006C GETMBR R10 R9 K27
- 0x8828150E, // 006D GETMBR R10 R10 K14
- 0x882C0510, // 006E GETMBR R11 R2 K16
- 0x902A200B, // 006F SETMBR R10 K16 R11
- 0x8828131B, // 0070 GETMBR R10 R9 K27
- 0x8828150E, // 0071 GETMBR R10 R10 K14
- 0x882C0503, // 0072 GETMBR R11 R2 K3
- 0x902A060B, // 0073 SETMBR R10 K3 R11
- 0x8828131B, // 0074 GETMBR R10 R9 K27
- 0x8828150E, // 0075 GETMBR R10 R10 K14
- 0x882C0504, // 0076 GETMBR R11 R2 K4
- 0x902A080B, // 0077 SETMBR R10 K4 R11
- 0x8828131B, // 0078 GETMBR R10 R9 K27
- 0x8828151A, // 0079 GETMBR R10 R10 K26
- 0x882C051A, // 007A GETMBR R11 R2 K26
- 0x902A340B, // 007B SETMBR R10 K26 R11
- 0x8C281312, // 007C GETMET R10 R9 K18
- 0x7C280200, // 007D CALL R10 1
- 0x8C2C1513, // 007E GETMET R11 R10 K19
- 0x7C2C0200, // 007F CALL R11 1
- 0x60300015, // 0080 GETGBL R12 G21
- 0x5C341600, // 0081 MOVE R13 R11
- 0x7C300200, // 0082 CALL R12 1
- 0x8C341514, // 0083 GETMET R13 R10 K20
- 0x5C3C1800, // 0084 MOVE R15 R12
- 0x7C340400, // 0085 CALL R13 2
- 0x5C201A00, // 0086 MOVE R8 R13
- 0xB8362A00, // 0087 GETNGBL R13 K21
- 0x8C341B16, // 0088 GETMET R13 R13 K22
- 0x603C0018, // 0089 GETGBL R15 G24
- 0x5840001E, // 008A LDCONST R16 K30
- 0x68440000, // 008B GETUPV R17 U0
- 0x88442318, // 008C GETMBR R17 R17 K24
- 0x60480008, // 008D GETGBL R18 G8
- 0x5C4C0400, // 008E MOVE R19 R2
- 0x7C480200, // 008F CALL R18 1
- 0x5C4C0A00, // 0090 MOVE R19 R5
- 0x8850051A, // 0091 GETMBR R20 R2 K26
- 0x8854051A, // 0092 GETMBR R21 R2 K26
- 0xB85A0000, // 0093 GETNGBL R22 K0
- 0x88582D1F, // 0094 GETMBR R22 R22 K31
- 0x1C542A16, // 0095 EQ R21 R21 R22
- 0x78560001, // 0096 JMPF R21 #0099
- 0x5854001F, // 0097 LDCONST R21 K31
- 0x70020000, // 0098 JMP #009A
- 0x58540007, // 0099 LDCONST R21 K7
- 0x7C3C0C00, // 009A CALL R15 6
- 0x58400019, // 009B LDCONST R16 K25
- 0x7C340600, // 009C CALL R13 3
- 0x7002000D, // 009D JMP #00AC
- 0xB8262A00, // 009E GETNGBL R9 K21
- 0x8C241316, // 009F GETMET R9 R9 K22
- 0x602C0018, // 00A0 GETGBL R11 G24
- 0x58300020, // 00A1 LDCONST R12 K32
- 0x68340000, // 00A2 GETUPV R13 U0
- 0x88341B18, // 00A3 GETMBR R13 R13 K24
- 0x60380008, // 00A4 GETGBL R14 G8
- 0x5C3C0400, // 00A5 MOVE R15 R2
- 0x7C380200, // 00A6 CALL R14 1
- 0x5C3C0A00, // 00A7 MOVE R15 R5
- 0x7C2C0800, // 00A8 CALL R11 4
- 0x58300019, // 00A9 LDCONST R12 K25
- 0x7C240600, // 00AA CALL R9 3
- 0x501C0000, // 00AB LDBOOL R7 0 0
- 0x7822001E, // 00AC JMPF R8 #00CC
- 0x6024000C, // 00AD GETGBL R9 G12
- 0x88280121, // 00AE GETMBR R10 R0 K33
- 0x7C240200, // 00AF CALL R9 1
- 0x1C241322, // 00B0 EQ R9 R9 K34
- 0x78260004, // 00B1 JMPF R9 #00B7
- 0x88240121, // 00B2 GETMBR R9 R0 K33
- 0x8C241323, // 00B3 GETMET R9 R9 K35
- 0x5C2C1000, // 00B4 MOVE R11 R8
- 0x7C240400, // 00B5 CALL R9 2
- 0x70020014, // 00B6 JMP #00CC
- 0x5425FFFE, // 00B7 LDINT R9 -1
- 0x88280121, // 00B8 GETMBR R10 R0 K33
- 0x94241409, // 00B9 GETIDX R9 R10 R9
- 0x602C000C, // 00BA GETGBL R11 G12
- 0x5C301200, // 00BB MOVE R12 R9
- 0x7C2C0200, // 00BC CALL R11 1
- 0x6030000C, // 00BD GETGBL R12 G12
- 0x5C341000, // 00BE MOVE R13 R8
- 0x7C300200, // 00BF CALL R12 1
- 0x002C160C, // 00C0 ADD R11 R11 R12
- 0xB8320000, // 00C1 GETNGBL R12 K0
- 0x88301924, // 00C2 GETMBR R12 R12 K36
- 0x88301925, // 00C3 GETMBR R12 R12 K37
- 0x182C160C, // 00C4 LE R11 R11 R12
- 0x782E0001, // 00C5 JMPF R11 #00C8
- 0x402C1208, // 00C6 CONNECT R11 R9 R8
- 0x70020003, // 00C7 JMP #00CC
- 0x88280121, // 00C8 GETMBR R10 R0 K33
- 0x8C281523, // 00C9 GETMET R10 R10 K35
- 0x5C301000, // 00CA MOVE R12 R8
- 0x7C280400, // 00CB CALL R10 2
- 0x80040E00, // 00CC RET 1 R7
- })
- ),
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 4),
- be_local_const_upval(1, 7),
- }),
- 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[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x68100001, // 0001 GETUPV R4 U1
- 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[23]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(get_active_endpoints),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Path),
- /* K4 */ be_nested_str_weak(ReportDataMessage),
- /* K5 */ be_nested_str_weak(attribute_reports),
- /* K6 */ be_nested_str_weak(attributes_requests),
- /* K7 */ be_nested_str_weak(endpoint),
- /* K8 */ be_nested_str_weak(cluster),
- /* K9 */ be_nested_str_weak(attribute),
- /* K10 */ be_nested_str_weak(status),
- /* K11 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K12 */ be_nested_str_weak(get_attribute_name),
- /* K13 */ be_nested_str_weak(tasmota),
- /* K14 */ be_nested_str_weak(log),
- /* K15 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s),
- /* K16 */ be_nested_str_weak(local_session_id),
- /* K17 */ be_nested_str_weak(_X20_X28),
- /* K18 */ be_nested_str_weak(_X29),
- /* K19 */ be_nested_str_weak(),
- /* K20 */ be_const_int(3),
- /* K21 */ be_nested_str_weak(process_attribute_expansion),
- /* K22 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(_inner_process_read_request),
- &be_const_str_solidified,
- ( &(const binstruction[93]) { /* code */
- 0x84100000, // 0000 CLOSURE R4 P0
- 0x88140100, // 0001 GETMBR R5 R0 K0
- 0x8C140B01, // 0002 GETMET R5 R5 K1
- 0x7C140200, // 0003 CALL R5 1
- 0xB81A0400, // 0004 GETNGBL R6 K2
- 0x8C180D03, // 0005 GETMET R6 R6 K3
- 0x7C180200, // 0006 CALL R6 1
- 0xB81E0400, // 0007 GETNGBL R7 K2
- 0x8C1C0F04, // 0008 GETMET R7 R7 K4
- 0x7C1C0200, // 0009 CALL R7 1
- 0x60200012, // 000A GETGBL R8 G18
- 0x7C200000, // 000B CALL R8 0
- 0x901E0A08, // 000C SETMBR R7 K5 R8
- 0x60200010, // 000D GETGBL R8 G16
- 0x88240506, // 000E GETMBR R9 R2 K6
- 0x7C200200, // 000F CALL R8 1
- 0xA8020046, // 0010 EXBLK 0 #0058
- 0x5C241000, // 0011 MOVE R9 R8
- 0x7C240000, // 0012 CALL R9 0
- 0x88281307, // 0013 GETMBR R10 R9 K7
- 0x901A0E0A, // 0014 SETMBR R6 K7 R10
- 0x88281308, // 0015 GETMBR R10 R9 K8
- 0x901A100A, // 0016 SETMBR R6 K8 R10
- 0x88281309, // 0017 GETMBR R10 R9 K9
- 0x901A120A, // 0018 SETMBR R6 K9 R10
- 0xB82A0400, // 0019 GETNGBL R10 K2
- 0x8828150B, // 001A GETMBR R10 R10 K11
- 0x901A140A, // 001B SETMBR R6 K10 R10
- 0x88280D07, // 001C GETMBR R10 R6 K7
- 0x4C2C0000, // 001D LDNIL R11
- 0x1C28140B, // 001E EQ R10 R10 R11
- 0x742A0007, // 001F JMPT R10 #0028
- 0x88280D08, // 0020 GETMBR R10 R6 K8
- 0x4C2C0000, // 0021 LDNIL R11
- 0x1C28140B, // 0022 EQ R10 R10 R11
- 0x742A0003, // 0023 JMPT R10 #0028
- 0x88280D09, // 0024 GETMBR R10 R6 K9
- 0x4C2C0000, // 0025 LDNIL R11
- 0x1C28140B, // 0026 EQ R10 R10 R11
- 0x782A0029, // 0027 JMPF R10 #0052
- 0x88280D08, // 0028 GETMBR R10 R6 K8
- 0x4C2C0000, // 0029 LDNIL R11
- 0x2028140B, // 002A NE R10 R10 R11
- 0x782A001A, // 002B JMPF R10 #0047
- 0x88280D09, // 002C GETMBR R10 R6 K9
- 0x4C2C0000, // 002D LDNIL R11
- 0x2028140B, // 002E NE R10 R10 R11
- 0x782A0016, // 002F JMPF R10 #0047
- 0xB82A0400, // 0030 GETNGBL R10 K2
- 0x8C28150C, // 0031 GETMET R10 R10 K12
- 0x88300D08, // 0032 GETMBR R12 R6 K8
- 0x88340D09, // 0033 GETMBR R13 R6 K9
- 0x7C280600, // 0034 CALL R10 3
- 0xB82E1A00, // 0035 GETNGBL R11 K13
- 0x8C2C170E, // 0036 GETMET R11 R11 K14
- 0x60340018, // 0037 GETGBL R13 G24
- 0x5838000F, // 0038 LDCONST R14 K15
- 0x883C0310, // 0039 GETMBR R15 R1 K16
- 0x60400008, // 003A GETGBL R16 G8
- 0x5C440C00, // 003B MOVE R17 R6
- 0x7C400200, // 003C CALL R16 1
- 0x782A0002, // 003D JMPF R10 #0041
- 0x0046220A, // 003E ADD R17 K17 R10
- 0x00442312, // 003F ADD R17 R17 K18
- 0x70020000, // 0040 JMP #0042
- 0x58440013, // 0041 LDCONST R17 K19
- 0x00402011, // 0042 ADD R16 R16 R17
- 0x7C340600, // 0043 CALL R13 3
- 0x58380014, // 0044 LDCONST R14 K20
- 0x7C2C0600, // 0045 CALL R11 3
- 0x7002000A, // 0046 JMP #0052
- 0xB82A1A00, // 0047 GETNGBL R10 K13
- 0x8C28150E, // 0048 GETMET R10 R10 K14
- 0x60300018, // 0049 GETGBL R12 G24
- 0x5834000F, // 004A LDCONST R13 K15
- 0x88380310, // 004B GETMBR R14 R1 K16
- 0x603C0008, // 004C GETGBL R15 G8
- 0x5C400C00, // 004D MOVE R16 R6
- 0x7C3C0200, // 004E CALL R15 1
- 0x7C300600, // 004F CALL R12 3
- 0x58340014, // 0050 LDCONST R13 K20
- 0x7C280600, // 0051 CALL R10 3
- 0x88280100, // 0052 GETMBR R10 R0 K0
- 0x8C281515, // 0053 GETMET R10 R10 K21
- 0x5C300C00, // 0054 MOVE R12 R6
- 0x84340001, // 0055 CLOSURE R13 P1
- 0x7C280600, // 0056 CALL R10 3
- 0x7001FFB8, // 0057 JMP #0011
- 0x58200016, // 0058 LDCONST R8 K22
- 0xAC200200, // 0059 CATCH R8 1 0
- 0xB0080000, // 005A RAISE 2 R0 R0
- 0xA0000000, // 005B CLOSE R0
- 0x80040E00, // 005C RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: find_sendqueue_by_exchangeid
********************************************************************/
@@ -1826,48 +2901,11 @@ be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */
/********************************************************************
-** Solidified function: process_incoming_ack
+** Solidified function: process_read_request_solo
********************************************************************/
-be_local_closure(Matter_IM_process_incoming_ack, /* name */
+be_local_closure(Matter_IM_process_read_request_solo, /* 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(find_sendqueue_by_exchangeid),
- /* K1 */ be_nested_str_weak(exchange_id),
- /* K2 */ be_nested_str_weak(ack_received),
- }),
- be_str_weak(process_incoming_ack),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x88100301, // 0001 GETMBR R4 R1 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x780A0003, // 0003 JMPF R2 #0008
- 0x8C0C0502, // 0004 GETMET R3 R2 K2
- 0x5C140200, // 0005 MOVE R5 R1
- 0x7C0C0400, // 0006 CALL R3 2
- 0x80040600, // 0007 RET 1 R3
- 0x500C0000, // 0008 LDBOOL R3 0 0
- 0x80040600, // 0009 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_read_request
-********************************************************************/
-be_local_closure(Matter_IM_process_read_request, /* name */
- be_nested_proto(
- 9, /* nstack */
+ 20, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1875,310 +2913,317 @@ be_local_closure(Matter_IM_process_read_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(ReadRequestMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- /* K3 */ be_nested_str_weak(attributes_requests),
- /* K4 */ be_nested_str_weak(_inner_process_read_request),
- /* K5 */ be_nested_str_weak(session),
- /* K6 */ be_nested_str_weak(send_report_data),
- }),
- be_str_weak(process_read_request),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x88100703, // 0006 GETMBR R4 R3 K3
- 0x4C140000, // 0007 LDNIL R5
- 0x20100805, // 0008 NE R4 R4 R5
- 0x78120007, // 0009 JMPF R4 #0012
- 0x8C100104, // 000A GETMET R4 R0 K4
- 0x88180305, // 000B GETMBR R6 R1 K5
- 0x5C1C0600, // 000C MOVE R7 R3
- 0x7C100600, // 000D CALL R4 3
- 0x8C140106, // 000E GETMET R5 R0 K6
- 0x5C1C0200, // 000F MOVE R7 R1
- 0x5C200800, // 0010 MOVE R8 R4
- 0x7C140600, // 0011 CALL R5 3
- 0x50100200, // 0012 LDBOOL R4 1 0
- 0x80040800, // 0013 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_report_data
-********************************************************************/
-be_local_closure(Matter_IM_send_report_data, /* 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[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_ReportData),
- }),
- be_str_weak(send_report_data),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C140600, // 0006 CALL R5 3
- 0x7C0C0400, // 0007 CALL R3 2
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_status_response
-********************************************************************/
-be_local_closure(Matter_IM_process_status_response, /* name */
- be_nested_proto(
- 11, /* nstack */
- 3, /* 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(findsubval),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid),
- /* K3 */ be_nested_str_weak(exchange_id),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(SUCCESS),
- /* K6 */ be_nested_str_weak(status_ok_received),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found),
- /* K10 */ be_nested_str_weak(session),
- /* K11 */ be_nested_str_weak(local_session_id),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(status_error_received),
- /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid),
- }),
- be_str_weak(process_status_response),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x8C0C0500, // 0000 GETMET R3 R2 K0
- 0x58140001, // 0001 LDCONST R5 K1
- 0x541A00FE, // 0002 LDINT R6 255
- 0x7C0C0600, // 0003 CALL R3 3
- 0x8C100102, // 0004 GETMET R4 R0 K2
- 0x88180303, // 0005 GETMBR R6 R1 K3
- 0x7C100400, // 0006 CALL R4 2
- 0xB8160800, // 0007 GETNGBL R5 K4
- 0x88140B05, // 0008 GETMBR R5 R5 K5
- 0x1C140605, // 0009 EQ R5 R3 R5
- 0x78160010, // 000A JMPF R5 #001C
- 0x78120004, // 000B JMPF R4 #0011
- 0x8C140906, // 000C GETMET R5 R4 K6
- 0x5C1C0200, // 000D MOVE R7 R1
- 0x7C140400, // 000E CALL R5 2
- 0x80040A00, // 000F RET 1 R5
- 0x70020009, // 0010 JMP #001B
- 0xB8160E00, // 0011 GETNGBL R5 K7
- 0x8C140B08, // 0012 GETMET R5 R5 K8
- 0x601C0018, // 0013 GETGBL R7 G24
- 0x58200009, // 0014 LDCONST R8 K9
- 0x8824030A, // 0015 GETMBR R9 R1 K10
- 0x8824130B, // 0016 GETMBR R9 R9 K11
- 0x88280303, // 0017 GETMBR R10 R1 K3
- 0x7C1C0600, // 0018 CALL R7 3
- 0x54220003, // 0019 LDINT R8 4
- 0x7C140600, // 001A CALL R5 3
- 0x7002000E, // 001B JMP #002B
- 0xB8160E00, // 001C GETNGBL R5 K7
- 0x8C140B08, // 001D GETMET R5 R5 K8
- 0x601C0018, // 001E GETGBL R7 G24
- 0x5820000C, // 001F LDCONST R8 K12
- 0x5C240600, // 0020 MOVE R9 R3
- 0x7C1C0400, // 0021 CALL R7 2
- 0x5820000D, // 0022 LDCONST R8 K13
- 0x7C140600, // 0023 CALL R5 3
- 0x78120005, // 0024 JMPF R4 #002B
- 0x8C14090E, // 0025 GETMET R5 R4 K14
- 0x5C1C0200, // 0026 MOVE R7 R1
- 0x7C140400, // 0027 CALL R5 2
- 0x8C14010F, // 0028 GETMET R5 R0 K15
- 0x881C0303, // 0029 GETMBR R7 R1 K3
- 0x7C140400, // 002A CALL R5 2
- 0x50140000, // 002B LDBOOL R5 0 0
- 0x80040A00, // 002C RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_write_response
-********************************************************************/
-be_local_closure(Matter_IM_process_write_response, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(WriteResponseMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(process_write_response),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_subscribe_update
-********************************************************************/
-be_local_closure(Matter_IM_send_subscribe_update, /* 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[25]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
+ ( &(const bvalue[55]) { /* constants */
+ /* K0 */ be_nested_str_weak(status),
/* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(ReadRequestMessage),
- /* K3 */ be_nested_str_weak(fabric_filtered),
- /* K4 */ be_nested_str_weak(attributes_requests),
- /* K5 */ be_nested_str_weak(updates),
- /* K6 */ be_nested_str_weak(AttributePathIB),
- /* K7 */ be_nested_str_weak(endpoint),
- /* K8 */ be_nested_str_weak(cluster),
- /* K9 */ be_nested_str_weak(attribute),
- /* K10 */ be_nested_str_weak(push),
- /* K11 */ be_nested_str_weak(stop_iteration),
- /* K12 */ be_nested_str_weak(tasmota),
- /* K13 */ be_nested_str_weak(log),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
- /* K15 */ be_nested_str_weak(local_session_id),
- /* K16 */ be_nested_str_weak(subscription_id),
- /* K17 */ be_const_int(3),
- /* K18 */ be_nested_str_weak(is_keep_alive),
- /* K19 */ be_nested_str_weak(_inner_process_read_request),
- /* K20 */ be_nested_str_weak(suppress_response),
- /* K21 */ be_nested_str_weak(IM_ReportDataSubscribed),
- /* K22 */ be_nested_str_weak(_message_handler),
- /* K23 */ be_nested_str_weak(send_queue),
- /* K24 */ be_nested_str_weak(send_enqueued),
+ /* K2 */ be_nested_str_weak(INVALID_ACTION),
+ /* K3 */ be_nested_str_weak(msg),
+ /* K4 */ be_nested_str_weak(device),
+ /* K5 */ be_nested_str_weak(process_attribute_read_solo),
+ /* K6 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K7 */ be_nested_str_weak(read_attribute),
+ /* K8 */ be_nested_str_weak(session),
+ /* K9 */ be_nested_str_weak(tlv_solo),
+ /* K10 */ be_nested_str_weak(profiler),
+ /* K11 */ be_nested_str_weak(log),
+ /* K12 */ be_nested_str_weak(read_request_solo_X20read_X20done),
+ /* K13 */ be_nested_str_weak(is_list),
+ /* K14 */ be_nested_str_weak(is_array),
+ /* K15 */ be_nested_str_weak(encode_len),
+ /* K16 */ be_nested_str_weak(IM_ReportData),
+ /* K17 */ be_nested_str_weak(MAX_MESSAGE),
+ /* K18 */ be_nested_str_weak(tasmota),
+ /* K19 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo),
+ /* K20 */ be_const_int(3),
+ /* K21 */ be_nested_str_weak(TLV),
+ /* K22 */ be_nested_str_weak(parse),
+ /* K23 */ be_nested_str_weak(raw),
+ /* K24 */ be_nested_str_weak(app_payload_idx),
+ /* K25 */ be_nested_str_weak(process_read_request),
+ /* K26 */ be_nested_str_weak(add),
+ /* K27 */ be_const_int(1),
+ /* K28 */ be_nested_str_weak(attributedata2raw),
+ /* K29 */ be_const_int(405077761),
+ /* K30 */ be_nested_str_weak(attributestatus2raw),
+ /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED),
+ /* K32 */ be_nested_str_weak(local_session_id),
+ /* K33 */ be_nested_str_weak(build_response),
+ /* K34 */ be_nested_str_weak(message_handler),
+ /* K35 */ be_nested_str_weak(clear),
+ /* K36 */ be_nested_str_weak(encode_frame),
+ /* K37 */ be_nested_str_weak(encrypt),
+ /* K38 */ be_nested_str_weak(loglevel),
+ /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
+ /* K40 */ be_nested_str_weak(message_counter),
+ /* K41 */ be_nested_str_weak(exchange_id),
+ /* K42 */ be_nested_str_weak(ack_message_counter),
+ /* K43 */ be_nested_str_weak(send_response_frame),
+ /* K44 */ be_nested_str_weak(RESPONSE_X20SENT),
+ /* K45 */ be_nested_str_weak(get_attribute_name),
+ /* K46 */ be_nested_str_weak(cluster),
+ /* K47 */ be_nested_str_weak(attribute),
+ /* K48 */ be_nested_str_weak(_X20_X28),
+ /* K49 */ be_nested_str_weak(_X29),
+ /* K50 */ be_nested_str_weak(),
+ /* K51 */ be_nested_str_weak(to_str_val),
+ /* K52 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
+ /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
+ /* K54 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
}),
- be_str_weak(send_subscribe_update),
+ be_str_weak(process_read_request_solo),
&be_const_str_solidified,
- ( &(const binstruction[66]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0xB80E0200, // 0001 GETNGBL R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x7C0C0200, // 0003 CALL R3 1
- 0x50100000, // 0004 LDBOOL R4 0 0
- 0x900E0604, // 0005 SETMBR R3 K3 R4
- 0x60100012, // 0006 GETGBL R4 G18
- 0x7C100000, // 0007 CALL R4 0
- 0x900E0804, // 0008 SETMBR R3 K4 R4
- 0x60100010, // 0009 GETGBL R4 G16
- 0x88140305, // 000A GETMBR R5 R1 K5
- 0x7C100200, // 000B CALL R4 1
- 0xA802000F, // 000C EXBLK 0 #001D
- 0x5C140800, // 000D MOVE R5 R4
- 0x7C140000, // 000E CALL R5 0
- 0xB81A0200, // 000F GETNGBL R6 K1
- 0x8C180D06, // 0010 GETMET R6 R6 K6
- 0x7C180200, // 0011 CALL R6 1
- 0x881C0B07, // 0012 GETMBR R7 R5 K7
- 0x901A0E07, // 0013 SETMBR R6 K7 R7
- 0x881C0B08, // 0014 GETMBR R7 R5 K8
- 0x901A1007, // 0015 SETMBR R6 K8 R7
- 0x881C0B09, // 0016 GETMBR R7 R5 K9
- 0x901A1207, // 0017 SETMBR R6 K9 R7
- 0x881C0704, // 0018 GETMBR R7 R3 K4
- 0x8C1C0F0A, // 0019 GETMET R7 R7 K10
- 0x5C240C00, // 001A MOVE R9 R6
- 0x7C1C0400, // 001B CALL R7 2
- 0x7001FFEF, // 001C JMP #000D
- 0x5810000B, // 001D LDCONST R4 K11
- 0xAC100200, // 001E CATCH R4 1 0
- 0xB0080000, // 001F RAISE 2 R0 R0
- 0xB8121800, // 0020 GETNGBL R4 K12
- 0x8C10090D, // 0021 GETMET R4 R4 K13
- 0x60180018, // 0022 GETGBL R6 G24
- 0x581C000E, // 0023 LDCONST R7 K14
- 0x8820050F, // 0024 GETMBR R8 R2 K15
- 0x88240310, // 0025 GETMBR R9 R1 K16
- 0x7C180600, // 0026 CALL R6 3
- 0x581C0011, // 0027 LDCONST R7 K17
- 0x7C100600, // 0028 CALL R4 3
- 0x50100000, // 0029 LDBOOL R4 0 0
- 0x90062404, // 002A SETMBR R1 K18 R4
- 0x8C100113, // 002B GETMET R4 R0 K19
- 0x5C180400, // 002C MOVE R6 R2
- 0x5C1C0600, // 002D MOVE R7 R3
- 0x7C100600, // 002E CALL R4 3
- 0x50140000, // 002F LDBOOL R5 0 0
- 0x90122805, // 0030 SETMBR R4 K20 R5
- 0x88140310, // 0031 GETMBR R5 R1 K16
- 0x90122005, // 0032 SETMBR R4 K16 R5
- 0xB8160200, // 0033 GETNGBL R5 K1
- 0x8C140B15, // 0034 GETMET R5 R5 K21
- 0x881C0516, // 0035 GETMBR R7 R2 K22
- 0x5C200400, // 0036 MOVE R8 R2
- 0x5C240800, // 0037 MOVE R9 R4
- 0x5C280200, // 0038 MOVE R10 R1
- 0x7C140A00, // 0039 CALL R5 5
- 0x88180117, // 003A GETMBR R6 R0 K23
- 0x8C180D0A, // 003B GETMET R6 R6 K10
- 0x5C200A00, // 003C MOVE R8 R5
- 0x7C180400, // 003D CALL R6 2
- 0x8C180118, // 003E GETMET R6 R0 K24
- 0x88200516, // 003F GETMBR R8 R2 K22
- 0x7C180400, // 0040 CALL R6 2
- 0x80000000, // 0041 RET 0
+ ( &(const binstruction[251]) { /* code */
+ 0xB80E0200, // 0000 GETNGBL R3 K1
+ 0x880C0702, // 0001 GETMBR R3 R3 K2
+ 0x900A0003, // 0002 SETMBR R2 K0 R3
+ 0x900A0601, // 0003 SETMBR R2 K3 R1
+ 0x880C0104, // 0004 GETMBR R3 R0 K4
+ 0x8C0C0705, // 0005 GETMET R3 R3 K5
+ 0x5C140400, // 0006 MOVE R5 R2
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x4C100000, // 0008 LDNIL R4
+ 0x4C140000, // 0009 LDNIL R5
+ 0x4C180000, // 000A LDNIL R6
+ 0x20180606, // 000B NE R6 R3 R6
+ 0x781A0008, // 000C JMPF R6 #0016
+ 0xB81A0200, // 000D GETNGBL R6 K1
+ 0x88180D06, // 000E GETMBR R6 R6 K6
+ 0x900A0006, // 000F SETMBR R2 K0 R6
+ 0x8C180707, // 0010 GETMET R6 R3 K7
+ 0x88200308, // 0011 GETMBR R8 R1 K8
+ 0x5C240400, // 0012 MOVE R9 R2
+ 0x88280109, // 0013 GETMBR R10 R0 K9
+ 0x7C180800, // 0014 CALL R6 4
+ 0x5C100C00, // 0015 MOVE R4 R6
+ 0xB81A0200, // 0016 GETNGBL R6 K1
+ 0x88180D0A, // 0017 GETMBR R6 R6 K10
+ 0x8C180D0B, // 0018 GETMET R6 R6 K11
+ 0x5820000C, // 0019 LDCONST R8 K12
+ 0x7C180400, // 001A CALL R6 2
+ 0x4C180000, // 001B LDNIL R6
+ 0x20180806, // 001C NE R6 R4 R6
+ 0x781A0037, // 001D JMPF R6 #0056
+ 0x8818090D, // 001E GETMBR R6 R4 K13
+ 0x741A0001, // 001F JMPT R6 #0022
+ 0x8818090E, // 0020 GETMBR R6 R4 K14
+ 0x781A0019, // 0021 JMPF R6 #003C
+ 0x8C18090F, // 0022 GETMET R6 R4 K15
+ 0x7C180200, // 0023 CALL R6 1
+ 0xB81E0200, // 0024 GETNGBL R7 K1
+ 0x881C0F10, // 0025 GETMBR R7 R7 K16
+ 0x881C0F11, // 0026 GETMBR R7 R7 K17
+ 0x24180C07, // 0027 GT R6 R6 R7
+ 0x781A0012, // 0028 JMPF R6 #003C
+ 0x4C100000, // 0029 LDNIL R4
+ 0xB81A2400, // 002A GETNGBL R6 K18
+ 0x8C180D0B, // 002B GETMET R6 R6 K11
+ 0x60200018, // 002C GETGBL R8 G24
+ 0x58240013, // 002D LDCONST R9 K19
+ 0x7C200200, // 002E CALL R8 1
+ 0x58240014, // 002F LDCONST R9 K20
+ 0x7C180600, // 0030 CALL R6 3
+ 0xB81A0200, // 0031 GETNGBL R6 K1
+ 0x88180D15, // 0032 GETMBR R6 R6 K21
+ 0x8C180D16, // 0033 GETMET R6 R6 K22
+ 0x88200317, // 0034 GETMBR R8 R1 K23
+ 0x88240318, // 0035 GETMBR R9 R1 K24
+ 0x7C180600, // 0036 CALL R6 3
+ 0x8C1C0119, // 0037 GETMET R7 R0 K25
+ 0x5C240200, // 0038 MOVE R9 R1
+ 0x5C280C00, // 0039 MOVE R10 R6
+ 0x7C1C0600, // 003A CALL R7 3
+ 0x80040E00, // 003B RET 1 R7
+ 0x60180015, // 003C GETGBL R6 G21
+ 0x541E002F, // 003D LDINT R7 48
+ 0x7C180200, // 003E CALL R6 1
+ 0x5C140C00, // 003F MOVE R5 R6
+ 0x8C180B1A, // 0040 GETMET R6 R5 K26
+ 0x54220014, // 0041 LDINT R8 21
+ 0x5824001B, // 0042 LDCONST R9 K27
+ 0x7C180600, // 0043 CALL R6 3
+ 0x8C180B1A, // 0044 GETMET R6 R5 K26
+ 0x54223600, // 0045 LDINT R8 13825
+ 0x5425FFFD, // 0046 LDINT R9 -2
+ 0x7C180600, // 0047 CALL R6 3
+ 0x8C18011C, // 0048 GETMET R6 R0 K28
+ 0x5C200A00, // 0049 MOVE R8 R5
+ 0x5C240400, // 004A MOVE R9 R2
+ 0x5C280800, // 004B MOVE R10 R4
+ 0x7C180800, // 004C CALL R6 4
+ 0x8C180B1A, // 004D GETMET R6 R5 K26
+ 0x5820001D, // 004E LDCONST R8 K29
+ 0x5425FFFB, // 004F LDINT R9 -4
+ 0x7C180600, // 0050 CALL R6 3
+ 0x8C180B1A, // 0051 GETMET R6 R5 K26
+ 0x54220017, // 0052 LDINT R8 24
+ 0x5824001B, // 0053 LDCONST R9 K27
+ 0x7C180600, // 0054 CALL R6 3
+ 0x70020029, // 0055 JMP #0080
+ 0x88180500, // 0056 GETMBR R6 R2 K0
+ 0x4C1C0000, // 0057 LDNIL R7
+ 0x20180C07, // 0058 NE R6 R6 R7
+ 0x781A0019, // 0059 JMPF R6 #0074
+ 0x60180015, // 005A GETGBL R6 G21
+ 0x541E002F, // 005B LDINT R7 48
+ 0x7C180200, // 005C CALL R6 1
+ 0x5C140C00, // 005D MOVE R5 R6
+ 0x8C180B1A, // 005E GETMET R6 R5 K26
+ 0x54220014, // 005F LDINT R8 21
+ 0x5824001B, // 0060 LDCONST R9 K27
+ 0x7C180600, // 0061 CALL R6 3
+ 0x8C180B1A, // 0062 GETMET R6 R5 K26
+ 0x54223600, // 0063 LDINT R8 13825
+ 0x5425FFFD, // 0064 LDINT R9 -2
+ 0x7C180600, // 0065 CALL R6 3
+ 0x8C18011E, // 0066 GETMET R6 R0 K30
+ 0x5C200A00, // 0067 MOVE R8 R5
+ 0x5C240400, // 0068 MOVE R9 R2
+ 0x88280500, // 0069 GETMBR R10 R2 K0
+ 0x7C180800, // 006A CALL R6 4
+ 0x8C180B1A, // 006B GETMET R6 R5 K26
+ 0x5820001D, // 006C LDCONST R8 K29
+ 0x5425FFFB, // 006D LDINT R9 -4
+ 0x7C180600, // 006E CALL R6 3
+ 0x8C180B1A, // 006F GETMET R6 R5 K26
+ 0x54220017, // 0070 LDINT R8 24
+ 0x5824001B, // 0071 LDCONST R9 K27
+ 0x7C180600, // 0072 CALL R6 3
+ 0x7002000B, // 0073 JMP #0080
+ 0xB81A2400, // 0074 GETNGBL R6 K18
+ 0x8C180D0B, // 0075 GETMET R6 R6 K11
+ 0x60200018, // 0076 GETGBL R8 G24
+ 0x5824001F, // 0077 LDCONST R9 K31
+ 0x88280308, // 0078 GETMBR R10 R1 K8
+ 0x88281520, // 0079 GETMBR R10 R10 K32
+ 0x5C2C0400, // 007A MOVE R11 R2
+ 0x7C200600, // 007B CALL R8 3
+ 0x58240014, // 007C LDCONST R9 K20
+ 0x7C180600, // 007D CALL R6 3
+ 0x50180000, // 007E LDBOOL R6 0 0
+ 0x80040C00, // 007F RET 1 R6
+ 0x8C180321, // 0080 GETMET R6 R1 K33
+ 0x54220004, // 0081 LDINT R8 5
+ 0x50240200, // 0082 LDBOOL R9 1 0
+ 0x7C180600, // 0083 CALL R6 3
+ 0x881C0104, // 0084 GETMBR R7 R0 K4
+ 0x881C0F22, // 0085 GETMBR R7 R7 K34
+ 0x88200317, // 0086 GETMBR R8 R1 K23
+ 0x8C241123, // 0087 GETMET R9 R8 K35
+ 0x7C240200, // 0088 CALL R9 1
+ 0x8C240D24, // 0089 GETMET R9 R6 K36
+ 0x5C2C0A00, // 008A MOVE R11 R5
+ 0x5C301000, // 008B MOVE R12 R8
+ 0x7C240600, // 008C CALL R9 3
+ 0x8C240D25, // 008D GETMET R9 R6 K37
+ 0x7C240200, // 008E CALL R9 1
+ 0xB8262400, // 008F GETNGBL R9 K18
+ 0x8C241326, // 0090 GETMET R9 R9 K38
+ 0x542E0003, // 0091 LDINT R11 4
+ 0x7C240400, // 0092 CALL R9 2
+ 0x7826000B, // 0093 JMPF R9 #00A0
+ 0xB8262400, // 0094 GETNGBL R9 K18
+ 0x8C24130B, // 0095 GETMET R9 R9 K11
+ 0x602C0018, // 0096 GETGBL R11 G24
+ 0x58300027, // 0097 LDCONST R12 K39
+ 0x88340D08, // 0098 GETMBR R13 R6 K8
+ 0x88341B20, // 0099 GETMBR R13 R13 K32
+ 0x88380D28, // 009A GETMBR R14 R6 K40
+ 0x883C0D29, // 009B GETMBR R15 R6 K41
+ 0x88400D2A, // 009C GETMBR R16 R6 K42
+ 0x7C2C0A00, // 009D CALL R11 5
+ 0x54320003, // 009E LDINT R12 4
+ 0x7C240600, // 009F CALL R9 3
+ 0x8C240F2B, // 00A0 GETMET R9 R7 K43
+ 0x5C2C0C00, // 00A1 MOVE R11 R6
+ 0x7C240400, // 00A2 CALL R9 2
+ 0xB8260200, // 00A3 GETNGBL R9 K1
+ 0x8824130A, // 00A4 GETMBR R9 R9 K10
+ 0x8C24130B, // 00A5 GETMET R9 R9 K11
+ 0x582C002C, // 00A6 LDCONST R11 K44
+ 0x7C240400, // 00A7 CALL R9 2
+ 0xB8260200, // 00A8 GETNGBL R9 K1
+ 0x8C24132D, // 00A9 GETMET R9 R9 K45
+ 0x882C052E, // 00AA GETMBR R11 R2 K46
+ 0x8830052F, // 00AB GETMBR R12 R2 K47
+ 0x7C240600, // 00AC CALL R9 3
+ 0x78260002, // 00AD JMPF R9 #00B1
+ 0x002A6009, // 00AE ADD R10 K48 R9
+ 0x00281531, // 00AF ADD R10 R10 K49
+ 0x70020000, // 00B0 JMP #00B2
+ 0x58280032, // 00B1 LDCONST R10 K50
+ 0x5C241400, // 00B2 MOVE R9 R10
+ 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
+ 0xB82E2400, // 00BD GETNGBL R11 K18
+ 0x8C2C170B, // 00BE GETMET R11 R11 K11
+ 0x60340018, // 00BF GETGBL R13 G24
+ 0x58380034, // 00C0 LDCONST R14 K52
+ 0x883C0308, // 00C1 GETMBR R15 R1 K8
+ 0x883C1F20, // 00C2 GETMBR R15 R15 K32
+ 0x5C400400, // 00C3 MOVE R16 R2
+ 0x5C441200, // 00C4 MOVE R17 R9
+ 0x5C481400, // 00C5 MOVE R18 R10
+ 0x7C340A00, // 00C6 CALL R13 5
+ 0x58380014, // 00C7 LDCONST R14 K20
+ 0x7C2C0600, // 00C8 CALL R11 3
+ 0x7002002E, // 00C9 JMP #00F9
+ 0x88280500, // 00CA GETMBR R10 R2 K0
+ 0x4C2C0000, // 00CB LDNIL R11
+ 0x2028140B, // 00CC NE R10 R10 R11
+ 0x782A001A, // 00CD JMPF R10 #00E9
+ 0x88280500, // 00CE GETMBR R10 R2 K0
+ 0xB82E0200, // 00CF GETNGBL R11 K1
+ 0x882C1706, // 00D0 GETMBR R11 R11 K6
+ 0x1C28140B, // 00D1 EQ R10 R10 R11
+ 0x782A0001, // 00D2 JMPF R10 #00D5
+ 0x58280006, // 00D3 LDCONST R10 K6
+ 0x70020000, // 00D4 JMP #00D6
+ 0x58280032, // 00D5 LDCONST R10 K50
+ 0xB82E2400, // 00D6 GETNGBL R11 K18
+ 0x8C2C1726, // 00D7 GETMET R11 R11 K38
+ 0x58340014, // 00D8 LDCONST R13 K20
+ 0x7C2C0400, // 00D9 CALL R11 2
+ 0x782E000C, // 00DA JMPF R11 #00E8
+ 0xB82E2400, // 00DB GETNGBL R11 K18
+ 0x8C2C170B, // 00DC GETMET R11 R11 K11
+ 0x60340018, // 00DD GETGBL R13 G24
+ 0x58380035, // 00DE LDCONST R14 K53
+ 0x883C0308, // 00DF GETMBR R15 R1 K8
+ 0x883C1F20, // 00E0 GETMBR R15 R15 K32
+ 0x5C400400, // 00E1 MOVE R16 R2
+ 0x5C441200, // 00E2 MOVE R17 R9
+ 0x88480500, // 00E3 GETMBR R18 R2 K0
+ 0x5C4C1400, // 00E4 MOVE R19 R10
+ 0x7C340C00, // 00E5 CALL R13 6
+ 0x58380014, // 00E6 LDCONST R14 K20
+ 0x7C2C0600, // 00E7 CALL R11 3
+ 0x7002000F, // 00E8 JMP #00F9
+ 0xB82A2400, // 00E9 GETNGBL R10 K18
+ 0x8C281526, // 00EA GETMET R10 R10 K38
+ 0x58300014, // 00EB LDCONST R12 K20
+ 0x7C280400, // 00EC CALL R10 2
+ 0x782A000A, // 00ED JMPF R10 #00F9
+ 0xB82A2400, // 00EE GETNGBL R10 K18
+ 0x8C28150B, // 00EF GETMET R10 R10 K11
+ 0x60300018, // 00F0 GETGBL R12 G24
+ 0x58340036, // 00F1 LDCONST R13 K54
+ 0x88380308, // 00F2 GETMBR R14 R1 K8
+ 0x88381D20, // 00F3 GETMBR R14 R14 K32
+ 0x5C3C0400, // 00F4 MOVE R15 R2
+ 0x5C401200, // 00F5 MOVE R16 R9
+ 0x7C300800, // 00F6 CALL R12 4
+ 0x58340014, // 00F7 LDCONST R13 K20
+ 0x7C280600, // 00F8 CALL R10 3
+ 0x50280200, // 00F9 LDBOOL R10 1 0
+ 0x80041400, // 00FA RET 1 R10
})
)
);
@@ -2255,135 +3300,6 @@ be_local_closure(Matter_IM_send_enqueued, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: process_timed_request
-********************************************************************/
-be_local_closure(Matter_IM_process_timed_request, /* 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[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TimedRequestMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(log),
- /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i),
- /* K6 */ be_nested_str_weak(session),
- /* K7 */ be_nested_str_weak(local_session_id),
- /* K8 */ be_nested_str_weak(timeout),
- /* K9 */ be_const_int(3),
- /* K10 */ be_nested_str_weak(send_status),
- /* K11 */ be_nested_str_weak(SUCCESS),
- }),
- be_str_weak(process_timed_request),
- &be_const_str_solidified,
- ( &(const binstruction[23]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0xB8120600, // 0006 GETNGBL R4 K3
- 0x8C100904, // 0007 GETMET R4 R4 K4
- 0x60180018, // 0008 GETGBL R6 G24
- 0x581C0005, // 0009 LDCONST R7 K5
- 0x88200306, // 000A GETMBR R8 R1 K6
- 0x88201107, // 000B GETMBR R8 R8 K7
- 0x88240708, // 000C GETMBR R9 R3 K8
- 0x7C180600, // 000D CALL R6 3
- 0x581C0009, // 000E LDCONST R7 K9
- 0x7C100600, // 000F CALL R4 3
- 0x8C10010A, // 0010 GETMET R4 R0 K10
- 0x5C180200, // 0011 MOVE R6 R1
- 0xB81E0000, // 0012 GETNGBL R7 K0
- 0x881C0F0B, // 0013 GETMBR R7 R7 K11
- 0x7C100600, // 0014 CALL R4 3
- 0x50100200, // 0015 LDBOOL R4 1 0
- 0x80040800, // 0016 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: report_data
-********************************************************************/
-be_local_closure(Matter_IM_report_data, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(ReportDataMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(report_data),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_invoke_response
-********************************************************************/
-be_local_closure(Matter_IM_process_invoke_response, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(InvokeResponseMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(process_invoke_response),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: init
********************************************************************/
@@ -2397,16 +3313,23 @@ be_local_closure(Matter_IM_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(device),
/* K1 */ be_nested_str_weak(send_queue),
/* K2 */ be_nested_str_weak(subs_shop),
/* K3 */ be_nested_str_weak(matter),
/* K4 */ be_nested_str_weak(IM_Subscription_Shop),
+ /* K5 */ be_nested_str_weak(read_request_solo),
+ /* K6 */ be_nested_str_weak(ReadRequestMessage_solo),
+ /* K7 */ be_nested_str_weak(invoke_request_solo),
+ /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo),
+ /* K9 */ be_nested_str_weak(tlv_solo),
+ /* K10 */ be_nested_str_weak(TLV),
+ /* K11 */ be_nested_str_weak(Matter_TLV_item),
}),
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
+ ( &(const binstruction[23]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x60080012, // 0001 GETGBL R2 G18
0x7C080000, // 0002 CALL R2 0
@@ -2416,7 +3339,232 @@ be_local_closure(Matter_IM_init, /* name */
0x5C100000, // 0006 MOVE R4 R0
0x7C080400, // 0007 CALL R2 2
0x90020402, // 0008 SETMBR R0 K2 R2
- 0x80000000, // 0009 RET 0
+ 0xB80A0600, // 0009 GETNGBL R2 K3
+ 0x8C080506, // 000A GETMET R2 R2 K6
+ 0x7C080200, // 000B CALL R2 1
+ 0x90020A02, // 000C SETMBR R0 K5 R2
+ 0xB80A0600, // 000D GETNGBL R2 K3
+ 0x8C080508, // 000E GETMET R2 R2 K8
+ 0x7C080200, // 000F CALL R2 1
+ 0x90020E02, // 0010 SETMBR R0 K7 R2
+ 0xB80A0600, // 0011 GETNGBL R2 K3
+ 0x8808050A, // 0012 GETMBR R2 R2 K10
+ 0x8C08050B, // 0013 GETMET R2 R2 K11
+ 0x7C080200, // 0014 CALL R2 1
+ 0x90021202, // 0015 SETMBR R0 K9 R2
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: expire_sendqueue
+********************************************************************/
+be_local_closure(Matter_IM_expire_sendqueue, /* 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[ 8]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(send_queue),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(time_reached),
+ /* K4 */ be_nested_str_weak(expiration),
+ /* K5 */ be_nested_str_weak(reached_timeout),
+ /* K6 */ be_nested_str_weak(remove),
+ /* K7 */ be_const_int(1),
+ }),
+ be_str_weak(expire_sendqueue),
+ &be_const_str_solidified,
+ ( &(const binstruction[24]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x6008000C, // 0001 GETGBL R2 G12
+ 0x880C0101, // 0002 GETMBR R3 R0 K1
+ 0x7C080200, // 0003 CALL R2 1
+ 0x14080202, // 0004 LT R2 R1 R2
+ 0x780A000F, // 0005 JMPF R2 #0016
+ 0x88080101, // 0006 GETMBR R2 R0 K1
+ 0x94080401, // 0007 GETIDX R2 R2 R1
+ 0xB80E0400, // 0008 GETNGBL R3 K2
+ 0x8C0C0703, // 0009 GETMET R3 R3 K3
+ 0x88140504, // 000A GETMBR R5 R2 K4
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x780E0006, // 000C JMPF R3 #0014
+ 0x8C0C0505, // 000D GETMET R3 R2 K5
+ 0x7C0C0200, // 000E CALL R3 1
+ 0x880C0101, // 000F GETMBR R3 R0 K1
+ 0x8C0C0706, // 0010 GETMET R3 R3 K6
+ 0x5C140200, // 0011 MOVE R5 R1
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0x70020000, // 0013 JMP #0015
+ 0x00040307, // 0014 ADD R1 R1 K7
+ 0x7001FFEA, // 0015 JMP #0001
+ 0x4C080000, // 0016 LDNIL R2
+ 0x80040400, // 0017 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: subscribe_request
+********************************************************************/
+be_local_closure(Matter_IM_subscribe_request, /* name */
+ be_nested_proto(
+ 18, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[33]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(SubscribeRequestMessage),
+ /* K2 */ be_nested_str_weak(from_TLV),
+ /* K3 */ be_nested_str_weak(keep_subscriptions),
+ /* K4 */ be_nested_str_weak(subs_shop),
+ /* K5 */ be_nested_str_weak(remove_by_session),
+ /* K6 */ be_nested_str_weak(session),
+ /* K7 */ be_nested_str_weak(new_subscription),
+ /* K8 */ be_nested_str_weak(Path),
+ /* K9 */ be_nested_str_weak(msg),
+ /* K10 */ be_nested_str_weak(attributes_requests),
+ /* K11 */ be_nested_str_weak(endpoint),
+ /* K12 */ be_nested_str_weak(cluster),
+ /* K13 */ be_nested_str_weak(attribute),
+ /* K14 */ be_nested_str_weak(push),
+ /* K15 */ be_nested_str_weak(stop_iteration),
+ /* K16 */ be_nested_str_weak(tasmota),
+ /* K17 */ be_nested_str_weak(log),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s),
+ /* K19 */ be_nested_str_weak(local_session_id),
+ /* K20 */ be_nested_str_weak(concat),
+ /* K21 */ be_nested_str_weak(_X20),
+ /* K22 */ be_nested_str_weak(min_interval),
+ /* K23 */ be_nested_str_weak(max_interval),
+ /* K24 */ be_const_int(1),
+ /* K25 */ be_const_int(0),
+ /* K26 */ be_nested_str_weak(subscription_id),
+ /* K27 */ be_nested_str_weak(fabric_filtered),
+ /* K28 */ be_const_int(3),
+ /* K29 */ be_nested_str_weak(event_requests),
+ /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X25_X256i_X29_X20event_requests_size_X3D_X25s),
+ /* K31 */ be_nested_str_weak(_inner_process_read_request),
+ /* K32 */ be_nested_str_weak(send_subscribe_response),
+ }),
+ be_str_weak(subscribe_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[99]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x88100703, // 0006 GETMBR R4 R3 K3
+ 0x74120003, // 0007 JMPT R4 #000C
+ 0x88100104, // 0008 GETMBR R4 R0 K4
+ 0x8C100905, // 0009 GETMET R4 R4 K5
+ 0x88180306, // 000A GETMBR R6 R1 K6
+ 0x7C100400, // 000B CALL R4 2
+ 0x88100104, // 000C GETMBR R4 R0 K4
+ 0x8C100907, // 000D GETMET R4 R4 K7
+ 0x88180306, // 000E GETMBR R6 R1 K6
+ 0x5C1C0600, // 000F MOVE R7 R3
+ 0x7C100600, // 0010 CALL R4 3
+ 0x60140012, // 0011 GETGBL R5 G18
+ 0x7C140000, // 0012 CALL R5 0
+ 0xB81A0000, // 0013 GETNGBL R6 K0
+ 0x8C180D08, // 0014 GETMET R6 R6 K8
+ 0x7C180200, // 0015 CALL R6 1
+ 0x901A1201, // 0016 SETMBR R6 K9 R1
+ 0x601C0010, // 0017 GETGBL R7 G16
+ 0x8820070A, // 0018 GETMBR R8 R3 K10
+ 0x7C1C0200, // 0019 CALL R7 1
+ 0xA802000D, // 001A EXBLK 0 #0029
+ 0x5C200E00, // 001B MOVE R8 R7
+ 0x7C200000, // 001C CALL R8 0
+ 0x8824110B, // 001D GETMBR R9 R8 K11
+ 0x901A1609, // 001E SETMBR R6 K11 R9
+ 0x8824110C, // 001F GETMBR R9 R8 K12
+ 0x901A1809, // 0020 SETMBR R6 K12 R9
+ 0x8824110D, // 0021 GETMBR R9 R8 K13
+ 0x901A1A09, // 0022 SETMBR R6 K13 R9
+ 0x8C240B0E, // 0023 GETMET R9 R5 K14
+ 0x602C0008, // 0024 GETGBL R11 G8
+ 0x5C300C00, // 0025 MOVE R12 R6
+ 0x7C2C0200, // 0026 CALL R11 1
+ 0x7C240400, // 0027 CALL R9 2
+ 0x7001FFF1, // 0028 JMP #001B
+ 0x581C000F, // 0029 LDCONST R7 K15
+ 0xAC1C0200, // 002A CATCH R7 1 0
+ 0xB0080000, // 002B RAISE 2 R0 R0
+ 0xB81E2000, // 002C GETNGBL R7 K16
+ 0x8C1C0F11, // 002D GETMET R7 R7 K17
+ 0x60240018, // 002E GETGBL R9 G24
+ 0x58280012, // 002F LDCONST R10 K18
+ 0x882C0306, // 0030 GETMBR R11 R1 K6
+ 0x882C1713, // 0031 GETMBR R11 R11 K19
+ 0x8C300B14, // 0032 GETMET R12 R5 K20
+ 0x58380015, // 0033 LDCONST R14 K21
+ 0x7C300400, // 0034 CALL R12 2
+ 0x88340916, // 0035 GETMBR R13 R4 K22
+ 0x88380917, // 0036 GETMBR R14 R4 K23
+ 0x883C0703, // 0037 GETMBR R15 R3 K3
+ 0x783E0001, // 0038 JMPF R15 #003B
+ 0x583C0018, // 0039 LDCONST R15 K24
+ 0x70020000, // 003A JMP #003C
+ 0x583C0019, // 003B LDCONST R15 K25
+ 0x8840091A, // 003C GETMBR R16 R4 K26
+ 0x8844071B, // 003D GETMBR R17 R3 K27
+ 0x7C241000, // 003E CALL R9 8
+ 0x5828001C, // 003F LDCONST R10 K28
+ 0x7C1C0600, // 0040 CALL R7 3
+ 0x881C071D, // 0041 GETMBR R7 R3 K29
+ 0x4C200000, // 0042 LDNIL R8
+ 0x201C0E08, // 0043 NE R7 R7 R8
+ 0x781E000E, // 0044 JMPF R7 #0054
+ 0x601C000C, // 0045 GETGBL R7 G12
+ 0x8820071D, // 0046 GETMBR R8 R3 K29
+ 0x7C1C0200, // 0047 CALL R7 1
+ 0x241C0F19, // 0048 GT R7 R7 K25
+ 0x781E0009, // 0049 JMPF R7 #0054
+ 0xB81E2000, // 004A GETNGBL R7 K16
+ 0x8C1C0F11, // 004B GETMET R7 R7 K17
+ 0x60240018, // 004C GETGBL R9 G24
+ 0x5828001E, // 004D LDCONST R10 K30
+ 0x602C000C, // 004E GETGBL R11 G12
+ 0x8830071D, // 004F GETMBR R12 R3 K29
+ 0x7C2C0200, // 0050 CALL R11 1
+ 0x7C240400, // 0051 CALL R9 2
+ 0x5828001C, // 0052 LDCONST R10 K28
+ 0x7C1C0600, // 0053 CALL R7 3
+ 0x8C1C011F, // 0054 GETMET R7 R0 K31
+ 0x88240306, // 0055 GETMBR R9 R1 K6
+ 0x5C280600, // 0056 MOVE R10 R3
+ 0x5C2C0200, // 0057 MOVE R11 R1
+ 0x50300200, // 0058 LDBOOL R12 1 0
+ 0x7C1C0A00, // 0059 CALL R7 5
+ 0x8820091A, // 005A GETMBR R8 R4 K26
+ 0x901E3408, // 005B SETMBR R7 K26 R8
+ 0x8C200120, // 005C GETMET R8 R0 K32
+ 0x5C280200, // 005D MOVE R10 R1
+ 0x5C2C0E00, // 005E MOVE R11 R7
+ 0x5C300800, // 005F MOVE R12 R4
+ 0x7C200800, // 0060 CALL R8 4
+ 0x50200200, // 0061 LDBOOL R8 1 0
+ 0x80041000, // 0062 RET 1 R8
})
)
);
@@ -2501,41 +3649,50 @@ be_local_closure(Matter_IM_send_subscribe_heartbeat, /* name */
** Solidified class: Matter_IM
********************************************************************/
be_local_class(Matter_IM,
- 3,
+ 6,
NULL,
- be_nested_map(31,
+ be_nested_map(40,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(Matter_IM_send_subscribe_heartbeat_closure) },
- { be_const_key_weak(subs_shop, 23), be_const_var(1) },
- { be_const_key_weak(send_queue, 30), be_const_var(2) },
- { be_const_key_weak(process_invoke_request, -1), be_const_closure(Matter_IM_process_invoke_request_closure) },
- { be_const_key_weak(subscribe_request, -1), be_const_closure(Matter_IM_subscribe_request_closure) },
- { be_const_key_weak(process_write_request, 11), be_const_closure(Matter_IM_process_write_request_closure) },
- { be_const_key_weak(send_write_response, -1), be_const_closure(Matter_IM_send_write_response_closure) },
- { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) },
- { be_const_key_weak(every_second, -1), be_const_closure(Matter_IM_every_second_closure) },
- { be_const_key_weak(send_ack_now, -1), be_const_closure(Matter_IM_send_ack_now_closure) },
{ be_const_key_weak(every_250ms, -1), be_const_closure(Matter_IM_every_250ms_closure) },
- { be_const_key_weak(send_invoke_response, -1), be_const_closure(Matter_IM_send_invoke_response_closure) },
- { be_const_key_weak(process_invoke_response, 21), be_const_closure(Matter_IM_process_invoke_response_closure) },
- { be_const_key_weak(_inner_process_read_request, -1), be_const_closure(Matter_IM__inner_process_read_request_closure) },
- { be_const_key_weak(subscribe_response, 22), be_const_closure(Matter_IM_subscribe_response_closure) },
- { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) },
- { be_const_key_weak(send_subscribe_response, 18), be_const_closure(Matter_IM_send_subscribe_response_closure) },
- { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_find_sendqueue_by_exchangeid_closure) },
- { be_const_key_weak(process_incoming_ack, 13), be_const_closure(Matter_IM_process_incoming_ack_closure) },
- { be_const_key_weak(process_read_request, -1), be_const_closure(Matter_IM_process_read_request_closure) },
- { be_const_key_weak(send_report_data, -1), be_const_closure(Matter_IM_send_report_data_closure) },
- { be_const_key_weak(process_timed_request, -1), be_const_closure(Matter_IM_process_timed_request_closure) },
+ { be_const_key_weak(process_incoming_ack, -1), be_const_closure(Matter_IM_process_incoming_ack_closure) },
+ { be_const_key_weak(send_ack_now, -1), be_const_closure(Matter_IM_send_ack_now_closure) },
+ { be_const_key_weak(subscribe_response, -1), be_const_closure(Matter_IM_subscribe_response_closure) },
+ { be_const_key_weak(process_write_response, -1), be_const_closure(Matter_IM_process_write_response_closure) },
{ be_const_key_weak(process_status_response, -1), be_const_closure(Matter_IM_process_status_response_closure) },
- { be_const_key_weak(send_subscribe_update, 28), be_const_closure(Matter_IM_send_subscribe_update_closure) },
- { be_const_key_weak(send_enqueued, -1), be_const_closure(Matter_IM_send_enqueued_closure) },
- { be_const_key_weak(process_write_response, 12), be_const_closure(Matter_IM_process_write_response_closure) },
- { be_const_key_weak(report_data, 0), be_const_closure(Matter_IM_report_data_closure) },
- { be_const_key_weak(device, -1), be_const_var(0) },
+ { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(Matter_IM_send_subscribe_heartbeat_closure) },
+ { be_const_key_weak(attributedata2raw, 12), be_const_closure(Matter_IM_attributedata2raw_closure) },
+ { be_const_key_weak(subscribe_request, 37), be_const_closure(Matter_IM_subscribe_request_closure) },
+ { be_const_key_weak(send_subscribe_update, -1), be_const_closure(Matter_IM_send_subscribe_update_closure) },
+ { be_const_key_weak(invokeresponse2raw, 2), be_const_closure(Matter_IM_invokeresponse2raw_closure) },
+ { be_const_key_weak(read_request_solo, 38), be_const_var(3) },
+ { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) },
+ { be_const_key_weak(process_invoke_request_solo, 8), be_const_closure(Matter_IM_process_invoke_request_solo_closure) },
+ { be_const_key_weak(send_invoke_response, -1), be_const_closure(Matter_IM_send_invoke_response_closure) },
+ { be_const_key_weak(send_write_response, 6), be_const_closure(Matter_IM_send_write_response_closure) },
+ { be_const_key_weak(process_write_request, -1), be_const_closure(Matter_IM_process_write_request_closure) },
+ { be_const_key_weak(every_second, -1), be_const_closure(Matter_IM_every_second_closure) },
+ { be_const_key_weak(path2raw, -1), be_const_closure(Matter_IM_path2raw_closure) },
+ { be_const_key_weak(invoke_request_solo, -1), be_const_var(4) },
+ { be_const_key_weak(_inner_process_read_request, -1), be_const_closure(Matter_IM__inner_process_read_request_closure) },
+ { be_const_key_weak(tlv_solo, -1), be_const_var(5) },
+ { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) },
+ { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_find_sendqueue_by_exchangeid_closure) },
+ { be_const_key_weak(send_report_data, -1), be_const_closure(Matter_IM_send_report_data_closure) },
+ { be_const_key_weak(process_invoke_request, 17), be_const_closure(Matter_IM_process_invoke_request_closure) },
{ be_const_key_weak(send_status, -1), be_const_closure(Matter_IM_send_status_closure) },
+ { be_const_key_weak(subs_shop, 20), be_const_var(1) },
+ { be_const_key_weak(process_timed_request, 32), be_const_closure(Matter_IM_process_timed_request_closure) },
+ { be_const_key_weak(attributestatus2raw, 23), be_const_closure(Matter_IM_attributestatus2raw_closure) },
+ { be_const_key_weak(send_subscribe_response, -1), be_const_closure(Matter_IM_send_subscribe_response_closure) },
+ { be_const_key_weak(process_invoke_response, 24), be_const_closure(Matter_IM_process_invoke_response_closure) },
+ { be_const_key_weak(report_data, 9), be_const_closure(Matter_IM_report_data_closure) },
+ { be_const_key_weak(process_read_request_solo, -1), be_const_closure(Matter_IM_process_read_request_solo_closure) },
+ { be_const_key_weak(send_enqueued, -1), be_const_closure(Matter_IM_send_enqueued_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_IM_init_closure) },
{ be_const_key_weak(expire_sendqueue, -1), be_const_closure(Matter_IM_expire_sendqueue_closure) },
+ { be_const_key_weak(process_read_request, -1), be_const_closure(Matter_IM_process_read_request_closure) },
+ { be_const_key_weak(device, -1), be_const_var(0) },
+ { be_const_key_weak(send_queue, -1), be_const_var(2) },
})),
be_str_weak(Matter_IM)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h
index 365641ecd..1ffcdfd5e 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h
@@ -2822,6 +2822,194 @@ void be_load_Matter_ReadRequestMessage_class(bvm *vm) {
be_pop(vm, 1);
}
+extern const bclass be_class_Matter_ReadRequestMessage_solo;
+
+/********************************************************************
+** Solidified function: from_raw
+********************************************************************/
+be_local_closure(Matter_ReadRequestMessage_solo_from_raw, /* name */
+ be_nested_proto(
+ 11, /* 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(reset),
+ /* K1 */ be_nested_str_weak(get),
+ /* K2 */ be_const_int(355860503),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_const_int(3),
+ /* K6 */ be_nested_str_weak(endpoint),
+ /* K7 */ be_nested_str_weak(cluster),
+ /* K8 */ be_nested_str_weak(attribute),
+ /* K9 */ be_nested_str_weak(fabric_filtered),
+ }),
+ be_str_weak(from_raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[131]) { /* code */
+ 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x7C0C0200, // 0001 CALL R3 1
+ 0x600C000C, // 0002 GETGBL R3 G12
+ 0x5C100200, // 0003 MOVE R4 R1
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x4C100000, // 0005 LDNIL R4
+ 0x8C140301, // 0006 GETMET R5 R1 K1
+ 0x5C1C0400, // 0007 MOVE R7 R2
+ 0x5421FFFB, // 0008 LDINT R8 -4
+ 0x7C140600, // 0009 CALL R5 3
+ 0x20140B02, // 000A NE R5 R5 K2
+ 0x78160001, // 000B JMPF R5 #000E
+ 0x4C140000, // 000C LDNIL R5
+ 0x80040A00, // 000D RET 1 R5
+ 0x54160003, // 000E LDINT R5 4
+ 0x00080405, // 000F ADD R2 R2 R5
+ 0x14140403, // 0010 LT R5 R2 R3
+ 0x7816002D, // 0011 JMPF R5 #0040
+ 0x8C140301, // 0012 GETMET R5 R1 K1
+ 0x001C0503, // 0013 ADD R7 R2 K3
+ 0x58200003, // 0014 LDCONST R8 K3
+ 0x7C140600, // 0015 CALL R5 3
+ 0x8C180301, // 0016 GETMET R6 R1 K1
+ 0x5C200400, // 0017 MOVE R8 R2
+ 0x58240003, // 0018 LDCONST R9 K3
+ 0x7C180600, // 0019 CALL R6 3
+ 0x541E0023, // 001A LDINT R7 36
+ 0x1C1C0C07, // 001B EQ R7 R6 R7
+ 0x781E0006, // 001C JMPF R7 #0024
+ 0x8C1C0301, // 001D GETMET R7 R1 K1
+ 0x00240504, // 001E ADD R9 R2 K4
+ 0x58280003, // 001F LDCONST R10 K3
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x5C100E00, // 0021 MOVE R4 R7
+ 0x00080505, // 0022 ADD R2 R2 K5
+ 0x7002000B, // 0023 JMP #0030
+ 0x541E0024, // 0024 LDINT R7 37
+ 0x1C1C0C07, // 0025 EQ R7 R6 R7
+ 0x781E0007, // 0026 JMPF R7 #002F
+ 0x8C1C0301, // 0027 GETMET R7 R1 K1
+ 0x00240504, // 0028 ADD R9 R2 K4
+ 0x58280004, // 0029 LDCONST R10 K4
+ 0x7C1C0600, // 002A CALL R7 3
+ 0x5C100E00, // 002B MOVE R4 R7
+ 0x541E0003, // 002C LDINT R7 4
+ 0x00080407, // 002D ADD R2 R2 R7
+ 0x70020000, // 002E JMP #0030
+ 0x7002000F, // 002F JMP #0040
+ 0x1C1C0B04, // 0030 EQ R7 R5 K4
+ 0x781E0001, // 0031 JMPF R7 #0034
+ 0x90020C04, // 0032 SETMBR R0 K6 R4
+ 0x7002000A, // 0033 JMP #003F
+ 0x1C1C0B05, // 0034 EQ R7 R5 K5
+ 0x781E0001, // 0035 JMPF R7 #0038
+ 0x90020E04, // 0036 SETMBR R0 K7 R4
+ 0x70020006, // 0037 JMP #003F
+ 0x541E0003, // 0038 LDINT R7 4
+ 0x1C1C0A07, // 0039 EQ R7 R5 R7
+ 0x781E0001, // 003A JMPF R7 #003D
+ 0x90021004, // 003B SETMBR R0 K8 R4
+ 0x70020001, // 003C JMP #003F
+ 0x4C1C0000, // 003D LDNIL R7
+ 0x80040E00, // 003E RET 1 R7
+ 0x7001FFCF, // 003F JMP #0010
+ 0x8C140301, // 0040 GETMET R5 R1 K1
+ 0x5C1C0400, // 0041 MOVE R7 R2
+ 0x5421FFFD, // 0042 LDINT R8 -2
+ 0x7C140600, // 0043 CALL R5 3
+ 0x5C100A00, // 0044 MOVE R4 R5
+ 0x54161817, // 0045 LDINT R5 6168
+ 0x20140805, // 0046 NE R5 R4 R5
+ 0x78160001, // 0047 JMPF R5 #004A
+ 0x4C140000, // 0048 LDNIL R5
+ 0x80040A00, // 0049 RET 1 R5
+ 0x00080504, // 004A ADD R2 R2 K4
+ 0x8C140301, // 004B GETMET R5 R1 K1
+ 0x5C1C0400, // 004C MOVE R7 R2
+ 0x5421FFFD, // 004D LDINT R8 -2
+ 0x7C140600, // 004E CALL R5 3
+ 0x5C100A00, // 004F MOVE R4 R5
+ 0x54162802, // 0050 LDINT R5 10243
+ 0x1C140805, // 0051 EQ R5 R4 R5
+ 0x78160003, // 0052 JMPF R5 #0057
+ 0x50140000, // 0053 LDBOOL R5 0 0
+ 0x90021205, // 0054 SETMBR R0 K9 R5
+ 0x00080504, // 0055 ADD R2 R2 K4
+ 0x70020005, // 0056 JMP #005D
+ 0x54162902, // 0057 LDINT R5 10499
+ 0x1C140805, // 0058 EQ R5 R4 R5
+ 0x78160002, // 0059 JMPF R5 #005D
+ 0x50140200, // 005A LDBOOL R5 1 0
+ 0x90021205, // 005B SETMBR R0 K9 R5
+ 0x00080504, // 005C ADD R2 R2 K4
+ 0x8C140301, // 005D GETMET R5 R1 K1
+ 0x5C1C0400, // 005E MOVE R7 R2
+ 0x5421FFFD, // 005F LDINT R8 -2
+ 0x7C140600, // 0060 CALL R5 3
+ 0x5C100A00, // 0061 MOVE R4 R5
+ 0x541624FE, // 0062 LDINT R5 9471
+ 0x1C140805, // 0063 EQ R5 R4 R5
+ 0x78160000, // 0064 JMPF R5 #0066
+ 0x00080505, // 0065 ADD R2 R2 K5
+ 0x8C140301, // 0066 GETMET R5 R1 K1
+ 0x5C1C0400, // 0067 MOVE R7 R2
+ 0x58200003, // 0068 LDCONST R8 K3
+ 0x7C140600, // 0069 CALL R5 3
+ 0x541A0017, // 006A LDINT R6 24
+ 0x20140A06, // 006B NE R5 R5 R6
+ 0x78160001, // 006C JMPF R5 #006F
+ 0x4C140000, // 006D LDNIL R5
+ 0x80040A00, // 006E RET 1 R5
+ 0x00080503, // 006F ADD R2 R2 K3
+ 0x88140106, // 0070 GETMBR R5 R0 K6
+ 0x4C180000, // 0071 LDNIL R6
+ 0x1C140A06, // 0072 EQ R5 R5 R6
+ 0x7416000B, // 0073 JMPT R5 #0080
+ 0x88140107, // 0074 GETMBR R5 R0 K7
+ 0x4C180000, // 0075 LDNIL R6
+ 0x1C140A06, // 0076 EQ R5 R5 R6
+ 0x74160007, // 0077 JMPT R5 #0080
+ 0x88140108, // 0078 GETMBR R5 R0 K8
+ 0x4C180000, // 0079 LDNIL R6
+ 0x1C140A06, // 007A EQ R5 R5 R6
+ 0x74160003, // 007B JMPT R5 #0080
+ 0x88140109, // 007C GETMBR R5 R0 K9
+ 0x4C180000, // 007D LDNIL R6
+ 0x1C140A06, // 007E EQ R5 R5 R6
+ 0x78160001, // 007F JMPF R5 #0082
+ 0x4C140000, // 0080 LDNIL R5
+ 0x80040A00, // 0081 RET 1 R5
+ 0x80040000, // 0082 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_ReadRequestMessage_solo
+********************************************************************/
+extern const bclass be_class_Matter_Path;
+be_local_class(Matter_ReadRequestMessage_solo,
+ 0,
+ &be_class_Matter_Path,
+ be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(from_raw, -1), be_const_closure(Matter_ReadRequestMessage_solo_from_raw_closure) },
+ })),
+ be_str_weak(Matter_ReadRequestMessage_solo)
+);
+/*******************************************************************/
+
+void be_load_Matter_ReadRequestMessage_solo_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_ReadRequestMessage_solo);
+ be_setglobal(vm, "Matter_ReadRequestMessage_solo");
+ be_pop(vm, 1);
+}
+
extern const bclass be_class_Matter_ReportDataMessage;
/********************************************************************
@@ -3886,6 +4074,281 @@ void be_load_Matter_InvokeRequestMessage_class(bvm *vm) {
be_pop(vm, 1);
}
+extern const bclass be_class_Matter_InvokeRequestMessage_solo;
+
+/********************************************************************
+** Solidified function: reset
+********************************************************************/
+be_local_closure(Matter_InvokeRequestMessage_solo_reset, /* 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(reset),
+ /* K1 */ be_nested_str_weak(SuppressResponse),
+ /* K2 */ be_nested_str_weak(TimedRequest),
+ /* K3 */ be_nested_str_weak(command_fields),
+ }),
+ be_str_weak(reset),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x60080003, // 0001 GETGBL R2 G3
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C080200, // 0003 CALL R2 1
+ 0x8C080500, // 0004 GETMET R2 R2 K0
+ 0x7C080200, // 0005 CALL R2 1
+ 0x90020201, // 0006 SETMBR R0 K1 R1
+ 0x90020401, // 0007 SETMBR R0 K2 R1
+ 0x90020601, // 0008 SETMBR R0 K3 R1
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: from_raw
+********************************************************************/
+be_local_closure(Matter_InvokeRequestMessage_solo_from_raw, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 3, /* 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(reset),
+ /* K1 */ be_nested_str_weak(get),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_nested_str_weak(SuppressResponse),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_const_int(3),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(endpoint),
+ /* K8 */ be_nested_str_weak(cluster),
+ /* K9 */ be_nested_str_weak(command),
+ /* K10 */ be_nested_str_weak(command_fields),
+ /* K11 */ be_nested_str_weak(matter),
+ /* K12 */ be_nested_str_weak(TLV),
+ /* K13 */ be_nested_str_weak(parse),
+ /* K14 */ be_nested_str_weak(next_idx),
+ /* K15 */ be_const_int(620691736),
+ }),
+ be_str_weak(from_raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[170]) { /* code */
+ 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x7C0C0200, // 0001 CALL R3 1
+ 0x600C000C, // 0002 GETGBL R3 G12
+ 0x5C100200, // 0003 MOVE R4 R1
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x4C100000, // 0005 LDNIL R4
+ 0x8C140301, // 0006 GETMET R5 R1 K1
+ 0x5C1C0400, // 0007 MOVE R7 R2
+ 0x58200002, // 0008 LDCONST R8 K2
+ 0x7C140600, // 0009 CALL R5 3
+ 0x541A0014, // 000A LDINT R6 21
+ 0x20140A06, // 000B NE R5 R5 R6
+ 0x78160001, // 000C JMPF R5 #000F
+ 0x4C140000, // 000D LDNIL R5
+ 0x80040A00, // 000E RET 1 R5
+ 0x00080502, // 000F ADD R2 R2 K2
+ 0x8C140301, // 0010 GETMET R5 R1 K1
+ 0x5C1C0400, // 0011 MOVE R7 R2
+ 0x5421FFFD, // 0012 LDINT R8 -2
+ 0x7C140600, // 0013 CALL R5 3
+ 0x5C100A00, // 0014 MOVE R4 R5
+ 0x541627FF, // 0015 LDINT R5 10240
+ 0x1C140805, // 0016 EQ R5 R4 R5
+ 0x74160002, // 0017 JMPT R5 #001B
+ 0x541628FF, // 0018 LDINT R5 10496
+ 0x1C140805, // 0019 EQ R5 R4 R5
+ 0x78160003, // 001A JMPF R5 #001F
+ 0x541628FF, // 001B LDINT R5 10496
+ 0x1C140805, // 001C EQ R5 R4 R5
+ 0x90020605, // 001D SETMBR R0 K3 R5
+ 0x00080504, // 001E ADD R2 R2 K4
+ 0x8C140301, // 001F GETMET R5 R1 K1
+ 0x5C1C0400, // 0020 MOVE R7 R2
+ 0x5421FFFD, // 0021 LDINT R8 -2
+ 0x7C140600, // 0022 CALL R5 3
+ 0x5C100A00, // 0023 MOVE R4 R5
+ 0x54162800, // 0024 LDINT R5 10241
+ 0x1C140805, // 0025 EQ R5 R4 R5
+ 0x74160002, // 0026 JMPT R5 #002A
+ 0x54162900, // 0027 LDINT R5 10497
+ 0x1C140805, // 0028 EQ R5 R4 R5
+ 0x78160003, // 0029 JMPF R5 #002E
+ 0x54162900, // 002A LDINT R5 10497
+ 0x1C140805, // 002B EQ R5 R4 R5
+ 0x90020605, // 002C SETMBR R0 K3 R5
+ 0x00080504, // 002D ADD R2 R2 K4
+ 0x8C140301, // 002E GETMET R5 R1 K1
+ 0x5C1C0400, // 002F MOVE R7 R2
+ 0x5421FFFD, // 0030 LDINT R8 -2
+ 0x7C140600, // 0031 CALL R5 3
+ 0x541A3601, // 0032 LDINT R6 13826
+ 0x20140A06, // 0033 NE R5 R5 R6
+ 0x78160001, // 0034 JMPF R5 #0037
+ 0x4C140000, // 0035 LDNIL R5
+ 0x80040A00, // 0036 RET 1 R5
+ 0x00080504, // 0037 ADD R2 R2 K4
+ 0x8C140301, // 0038 GETMET R5 R1 K1
+ 0x5C1C0400, // 0039 MOVE R7 R2
+ 0x58200002, // 003A LDCONST R8 K2
+ 0x7C140600, // 003B CALL R5 3
+ 0x541A0014, // 003C LDINT R6 21
+ 0x20140A06, // 003D NE R5 R5 R6
+ 0x78160001, // 003E JMPF R5 #0041
+ 0x4C140000, // 003F LDNIL R5
+ 0x80040A00, // 0040 RET 1 R5
+ 0x00080502, // 0041 ADD R2 R2 K2
+ 0x8C140301, // 0042 GETMET R5 R1 K1
+ 0x5C1C0400, // 0043 MOVE R7 R2
+ 0x5421FFFD, // 0044 LDINT R8 -2
+ 0x7C140600, // 0045 CALL R5 3
+ 0x541A36FF, // 0046 LDINT R6 14080
+ 0x20140A06, // 0047 NE R5 R5 R6
+ 0x78160001, // 0048 JMPF R5 #004B
+ 0x4C140000, // 0049 LDNIL R5
+ 0x80040A00, // 004A RET 1 R5
+ 0x00080504, // 004B ADD R2 R2 K4
+ 0x14140403, // 004C LT R5 R2 R3
+ 0x7816002C, // 004D JMPF R5 #007B
+ 0x8C140301, // 004E GETMET R5 R1 K1
+ 0x001C0502, // 004F ADD R7 R2 K2
+ 0x58200002, // 0050 LDCONST R8 K2
+ 0x7C140600, // 0051 CALL R5 3
+ 0x8C180301, // 0052 GETMET R6 R1 K1
+ 0x5C200400, // 0053 MOVE R8 R2
+ 0x58240002, // 0054 LDCONST R9 K2
+ 0x7C180600, // 0055 CALL R6 3
+ 0x541E0023, // 0056 LDINT R7 36
+ 0x1C1C0C07, // 0057 EQ R7 R6 R7
+ 0x781E0006, // 0058 JMPF R7 #0060
+ 0x8C1C0301, // 0059 GETMET R7 R1 K1
+ 0x00240504, // 005A ADD R9 R2 K4
+ 0x58280002, // 005B LDCONST R10 K2
+ 0x7C1C0600, // 005C CALL R7 3
+ 0x5C100E00, // 005D MOVE R4 R7
+ 0x00080505, // 005E ADD R2 R2 K5
+ 0x7002000B, // 005F JMP #006C
+ 0x541E0024, // 0060 LDINT R7 37
+ 0x1C1C0C07, // 0061 EQ R7 R6 R7
+ 0x781E0007, // 0062 JMPF R7 #006B
+ 0x8C1C0301, // 0063 GETMET R7 R1 K1
+ 0x00240504, // 0064 ADD R9 R2 K4
+ 0x58280004, // 0065 LDCONST R10 K4
+ 0x7C1C0600, // 0066 CALL R7 3
+ 0x5C100E00, // 0067 MOVE R4 R7
+ 0x541E0003, // 0068 LDINT R7 4
+ 0x00080407, // 0069 ADD R2 R2 R7
+ 0x70020000, // 006A JMP #006C
+ 0x7002000E, // 006B JMP #007B
+ 0x1C1C0B06, // 006C EQ R7 R5 K6
+ 0x781E0001, // 006D JMPF R7 #0070
+ 0x90020E04, // 006E SETMBR R0 K7 R4
+ 0x70020009, // 006F JMP #007A
+ 0x1C1C0B02, // 0070 EQ R7 R5 K2
+ 0x781E0001, // 0071 JMPF R7 #0074
+ 0x90021004, // 0072 SETMBR R0 K8 R4
+ 0x70020005, // 0073 JMP #007A
+ 0x1C1C0B04, // 0074 EQ R7 R5 K4
+ 0x781E0001, // 0075 JMPF R7 #0078
+ 0x90021204, // 0076 SETMBR R0 K9 R4
+ 0x70020001, // 0077 JMP #007A
+ 0x4C1C0000, // 0078 LDNIL R7
+ 0x80040E00, // 0079 RET 1 R7
+ 0x7001FFD0, // 007A JMP #004C
+ 0x8C140301, // 007B GETMET R5 R1 K1
+ 0x5C1C0400, // 007C MOVE R7 R2
+ 0x58200002, // 007D LDCONST R8 K2
+ 0x7C140600, // 007E CALL R5 3
+ 0x541A0017, // 007F LDINT R6 24
+ 0x20140A06, // 0080 NE R5 R5 R6
+ 0x78160001, // 0081 JMPF R5 #0084
+ 0x4C140000, // 0082 LDNIL R5
+ 0x80040A00, // 0083 RET 1 R5
+ 0x00080502, // 0084 ADD R2 R2 K2
+ 0x8C140301, // 0085 GETMET R5 R1 K1
+ 0x5C1C0400, // 0086 MOVE R7 R2
+ 0x5421FFFD, // 0087 LDINT R8 -2
+ 0x7C140600, // 0088 CALL R5 3
+ 0x541A3500, // 0089 LDINT R6 13569
+ 0x20140A06, // 008A NE R5 R5 R6
+ 0x78160001, // 008B JMPF R5 #008E
+ 0x4C140000, // 008C LDNIL R5
+ 0x80040A00, // 008D RET 1 R5
+ 0xB8161600, // 008E GETNGBL R5 K11
+ 0x88140B0C, // 008F GETMBR R5 R5 K12
+ 0x8C140B0D, // 0090 GETMET R5 R5 K13
+ 0x5C1C0200, // 0091 MOVE R7 R1
+ 0x5C200400, // 0092 MOVE R8 R2
+ 0x7C140600, // 0093 CALL R5 3
+ 0x90021405, // 0094 SETMBR R0 K10 R5
+ 0x8814010A, // 0095 GETMBR R5 R0 K10
+ 0x88080B0E, // 0096 GETMBR R2 R5 K14
+ 0x8C180301, // 0097 GETMET R6 R1 K1
+ 0x5C200400, // 0098 MOVE R8 R2
+ 0x5425FFFD, // 0099 LDINT R9 -2
+ 0x7C180600, // 009A CALL R6 3
+ 0x541E1817, // 009B LDINT R7 6168
+ 0x20180C07, // 009C NE R6 R6 R7
+ 0x781A0001, // 009D JMPF R6 #00A0
+ 0x4C180000, // 009E LDNIL R6
+ 0x80040C00, // 009F RET 1 R6
+ 0x00080504, // 00A0 ADD R2 R2 K4
+ 0x8C140301, // 00A1 GETMET R5 R1 K1
+ 0x5C1C0400, // 00A2 MOVE R7 R2
+ 0x5421FFFB, // 00A3 LDINT R8 -4
+ 0x7C140600, // 00A4 CALL R5 3
+ 0x20140B0F, // 00A5 NE R5 R5 K15
+ 0x78160001, // 00A6 JMPF R5 #00A9
+ 0x4C140000, // 00A7 LDNIL R5
+ 0x80040A00, // 00A8 RET 1 R5
+ 0x80040000, // 00A9 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_InvokeRequestMessage_solo
+********************************************************************/
+extern const bclass be_class_Matter_Path;
+be_local_class(Matter_InvokeRequestMessage_solo,
+ 3,
+ &be_class_Matter_Path,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(SuppressResponse, 4), be_const_var(0) },
+ { be_const_key_weak(command_fields, 3), be_const_var(2) },
+ { be_const_key_weak(reset, -1), be_const_closure(Matter_InvokeRequestMessage_solo_reset_closure) },
+ { be_const_key_weak(from_raw, -1), be_const_closure(Matter_InvokeRequestMessage_solo_from_raw_closure) },
+ { be_const_key_weak(TimedRequest, -1), be_const_var(1) },
+ })),
+ be_str_weak(Matter_InvokeRequestMessage_solo)
+);
+/*******************************************************************/
+
+void be_load_Matter_InvokeRequestMessage_solo_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_InvokeRequestMessage_solo);
+ be_setglobal(vm, "Matter_InvokeRequestMessage_solo");
+ be_pop(vm, 1);
+}
+
extern const bclass be_class_Matter_InvokeResponseMessage;
/********************************************************************
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
index 58a362bcb..61bae0147 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
@@ -7,99 +7,30 @@
extern const bclass be_class_Matter_IM_Message;
/********************************************************************
-** Solidified function: status_error_received
+** Solidified function: init
********************************************************************/
-be_local_closure(Matter_IM_Message_status_error_received, /* name */
+be_local_closure(Matter_IM_Message_init, /* 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(status_error_received),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_im
-********************************************************************/
-be_local_closure(Matter_IM_Message_send_im, /* name */
- be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
+ 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[18]) { /* constants */
- /* K0 */ be_nested_str_weak(ready),
- /* K1 */ be_nested_str_weak(resp),
- /* K2 */ be_nested_str_weak(encode_frame),
- /* K3 */ be_nested_str_weak(data),
- /* K4 */ be_nested_str_weak(to_TLV),
- /* K5 */ be_nested_str_weak(tlv2raw),
- /* K6 */ be_nested_str_weak(encrypt),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
- /* K10 */ be_nested_str_weak(session),
- /* K11 */ be_nested_str_weak(local_session_id),
- /* K12 */ be_nested_str_weak(message_counter),
- /* K13 */ be_nested_str_weak(exchange_id),
- /* K14 */ be_nested_str_weak(ack_message_counter),
- /* K15 */ be_nested_str_weak(send_response_frame),
- /* K16 */ be_nested_str_weak(last_counter),
- /* K17 */ be_nested_str_weak(finish),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(reset),
}),
- be_str_weak(send_im),
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[34]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0001, // 0001 JMPT R2 #0004
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x80040400, // 0003 RET 1 R2
- 0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C0C0502, // 0005 GETMET R3 R2 K2
- 0x88140103, // 0006 GETMBR R5 R0 K3
- 0x8C140B04, // 0007 GETMET R5 R5 K4
- 0x7C140200, // 0008 CALL R5 1
- 0x8C140B05, // 0009 GETMET R5 R5 K5
- 0x7C140200, // 000A CALL R5 1
- 0x7C0C0400, // 000B CALL R3 2
- 0x8C0C0506, // 000C GETMET R3 R2 K6
- 0x7C0C0200, // 000D CALL R3 1
- 0xB80E0E00, // 000E GETNGBL R3 K7
- 0x8C0C0708, // 000F GETMET R3 R3 K8
- 0x60140018, // 0010 GETGBL R5 G24
- 0x58180009, // 0011 LDCONST R6 K9
- 0x881C050A, // 0012 GETMBR R7 R2 K10
- 0x881C0F0B, // 0013 GETMBR R7 R7 K11
- 0x8820050C, // 0014 GETMBR R8 R2 K12
- 0x8824050D, // 0015 GETMBR R9 R2 K13
- 0x8828050E, // 0016 GETMBR R10 R2 K14
- 0x7C140A00, // 0017 CALL R5 5
- 0x541A0003, // 0018 LDINT R6 4
- 0x7C0C0600, // 0019 CALL R3 3
- 0x8C0C030F, // 001A GETMET R3 R1 K15
- 0x5C140400, // 001B MOVE R5 R2
- 0x7C0C0400, // 001C CALL R3 2
- 0x880C050C, // 001D GETMBR R3 R2 K12
- 0x90022003, // 001E SETMBR R0 K16 R3
- 0x500C0200, // 001F LDBOOL R3 1 0
- 0x90022203, // 0020 SETMBR R0 K17 R3
- 0x80000000, // 0021 RET 0
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C100100, // 0000 GETMET R4 R0 K0
+ 0x5C180200, // 0001 MOVE R6 R1
+ 0x5C1C0400, // 0002 MOVE R7 R2
+ 0x5C200600, // 0003 MOVE R8 R3
+ 0x7C100800, // 0004 CALL R4 4
+ 0x80000000, // 0005 RET 0
})
)
);
@@ -136,9 +67,116 @@ be_local_closure(Matter_IM_Message_get_exchangeid, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified function: send_im
********************************************************************/
-be_local_closure(Matter_IM_Message_init, /* name */
+be_local_closure(Matter_IM_Message_send_im, /* 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[19]) { /* constants */
+ /* K0 */ be_nested_str_weak(ready),
+ /* K1 */ be_nested_str_weak(resp),
+ /* K2 */ be_nested_str_weak(data),
+ /* K3 */ be_nested_str_weak(to_TLV),
+ /* K4 */ be_nested_str_weak(tlv2raw),
+ /* K5 */ be_nested_str_weak(encode_frame),
+ /* K6 */ be_nested_str_weak(encrypt),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(loglevel),
+ /* K9 */ be_nested_str_weak(log),
+ /* K10 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
+ /* K11 */ be_nested_str_weak(session),
+ /* K12 */ be_nested_str_weak(local_session_id),
+ /* K13 */ be_nested_str_weak(message_counter),
+ /* K14 */ be_nested_str_weak(exchange_id),
+ /* K15 */ be_nested_str_weak(ack_message_counter),
+ /* K16 */ be_nested_str_weak(send_response_frame),
+ /* K17 */ be_nested_str_weak(last_counter),
+ /* K18 */ be_nested_str_weak(finish),
+ }),
+ be_str_weak(send_im),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x740A0001, // 0001 JMPT R2 #0004
+ 0x50080000, // 0002 LDBOOL R2 0 0
+ 0x80040400, // 0003 RET 1 R2
+ 0x88080101, // 0004 GETMBR R2 R0 K1
+ 0x880C0102, // 0005 GETMBR R3 R0 K2
+ 0x8C0C0703, // 0006 GETMET R3 R3 K3
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C100704, // 0008 GETMET R4 R3 K4
+ 0x7C100200, // 0009 CALL R4 1
+ 0x8C140505, // 000A GETMET R5 R2 K5
+ 0x5C1C0800, // 000B MOVE R7 R4
+ 0x7C140400, // 000C CALL R5 2
+ 0x8C140506, // 000D GETMET R5 R2 K6
+ 0x7C140200, // 000E CALL R5 1
+ 0xB8160E00, // 000F GETNGBL R5 K7
+ 0x8C140B08, // 0010 GETMET R5 R5 K8
+ 0x541E0003, // 0011 LDINT R7 4
+ 0x7C140400, // 0012 CALL R5 2
+ 0x7816000B, // 0013 JMPF R5 #0020
+ 0xB8160E00, // 0014 GETNGBL R5 K7
+ 0x8C140B09, // 0015 GETMET R5 R5 K9
+ 0x601C0018, // 0016 GETGBL R7 G24
+ 0x5820000A, // 0017 LDCONST R8 K10
+ 0x8824050B, // 0018 GETMBR R9 R2 K11
+ 0x8824130C, // 0019 GETMBR R9 R9 K12
+ 0x8828050D, // 001A GETMBR R10 R2 K13
+ 0x882C050E, // 001B GETMBR R11 R2 K14
+ 0x8830050F, // 001C GETMBR R12 R2 K15
+ 0x7C1C0A00, // 001D CALL R7 5
+ 0x54220003, // 001E LDINT R8 4
+ 0x7C140600, // 001F CALL R5 3
+ 0x8C140310, // 0020 GETMET R5 R1 K16
+ 0x5C1C0400, // 0021 MOVE R7 R2
+ 0x7C140400, // 0022 CALL R5 2
+ 0x8814050D, // 0023 GETMBR R5 R2 K13
+ 0x90022205, // 0024 SETMBR R0 K17 R5
+ 0x50140200, // 0025 LDBOOL R5 1 0
+ 0x90022405, // 0026 SETMBR R0 K18 R5
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: status_error_received
+********************************************************************/
+be_local_closure(Matter_IM_Message_status_error_received, /* 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(status_error_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: reset
+********************************************************************/
+be_local_closure(Matter_IM_Message_reset, /* name */
be_nested_proto(
8, /* nstack */
4, /* argc */
@@ -148,7 +186,7 @@ be_local_closure(Matter_IM_Message_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
+ ( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(resp),
/* K1 */ be_nested_str_weak(build_response),
/* K2 */ be_nested_str_weak(ready),
@@ -159,10 +197,11 @@ be_local_closure(Matter_IM_Message_init, /* name */
/* K7 */ be_nested_str_weak(last_counter),
/* K8 */ be_const_int(0),
/* K9 */ be_nested_str_weak(finish),
+ /* K10 */ be_nested_str_weak(data),
}),
- be_str_weak(init),
+ be_str_weak(reset),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
+ ( &(const binstruction[19]) { /* code */
0x8C100301, // 0000 GETMET R4 R1 K1
0x5C180400, // 0001 MOVE R6 R2
0x5C1C0600, // 0002 MOVE R7 R3
@@ -179,43 +218,9 @@ be_local_closure(Matter_IM_Message_init, /* name */
0x90020F08, // 000D SETMBR R0 K7 K8
0x50100000, // 000E LDBOOL R4 0 0
0x90021204, // 000F SETMBR R0 K9 R4
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: ack_received
-********************************************************************/
-be_local_closure(Matter_IM_Message_ack_received, /* 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[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(expiration),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(MSG_TIMEOUT),
- }),
- be_str_weak(ack_received),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80A0200, // 0000 GETNGBL R2 K1
- 0x8C080502, // 0001 GETMET R2 R2 K2
- 0x7C080200, // 0002 CALL R2 1
- 0x880C0103, // 0003 GETMBR R3 R0 K3
- 0x00080403, // 0004 ADD R2 R2 R3
- 0x90020002, // 0005 SETMBR R0 K0 R2
- 0x50080000, // 0006 LDBOOL R2 0 0
- 0x80040400, // 0007 RET 1 R2
+ 0x4C100000, // 0010 LDNIL R4
+ 0x90021404, // 0011 SETMBR R0 K10 R4
+ 0x80000000, // 0012 RET 0
})
)
);
@@ -298,28 +303,65 @@ be_local_closure(Matter_IM_Message_status_ok_received, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: ack_received
+********************************************************************/
+be_local_closure(Matter_IM_Message_ack_received, /* 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(expiration),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(millis),
+ /* K3 */ be_nested_str_weak(MSG_TIMEOUT),
+ }),
+ be_str_weak(ack_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0xB80A0200, // 0000 GETNGBL R2 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
+ 0x7C080200, // 0002 CALL R2 1
+ 0x880C0103, // 0003 GETMBR R3 R0 K3
+ 0x00080403, // 0004 ADD R2 R2 R3
+ 0x90020002, // 0005 SETMBR R0 K0 R2
+ 0x50080000, // 0006 LDBOOL R2 0 0
+ 0x80040400, // 0007 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_IM_Message
********************************************************************/
be_local_class(Matter_IM_Message,
6,
NULL,
- be_nested_map(14,
+ be_nested_map(15,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(5000) },
- { be_const_key_weak(data, -1), be_const_var(4) },
+ { be_const_key_weak(init, 11), be_const_closure(Matter_IM_Message_init_closure) },
+ { be_const_key_weak(get_exchangeid, 10), be_const_closure(Matter_IM_Message_get_exchangeid_closure) },
+ { be_const_key_weak(reset, -1), be_const_closure(Matter_IM_Message_reset_closure) },
{ be_const_key_weak(send_im, -1), be_const_closure(Matter_IM_Message_send_im_closure) },
- { be_const_key_weak(status_ok_received, -1), be_const_closure(Matter_IM_Message_status_ok_received_closure) },
- { be_const_key_weak(get_exchangeid, 0), be_const_closure(Matter_IM_Message_get_exchangeid_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_IM_Message_init_closure) },
- { be_const_key_weak(expiration, -1), be_const_var(0) },
- { be_const_key_weak(resp, -1), be_const_var(1) },
- { be_const_key_weak(finish, 13), be_const_var(3) },
- { be_const_key_weak(last_counter, 6), be_const_var(5) },
- { be_const_key_weak(ack_received, 9), be_const_closure(Matter_IM_Message_ack_received_closure) },
+ { be_const_key_weak(status_error_received, -1), be_const_closure(Matter_IM_Message_status_error_received_closure) },
+ { be_const_key_weak(finish, -1), be_const_var(3) },
+ { be_const_key_weak(status_ok_received, 2), be_const_closure(Matter_IM_Message_status_ok_received_closure) },
+ { be_const_key_weak(last_counter, -1), be_const_var(5) },
{ be_const_key_weak(reached_timeout, -1), be_const_closure(Matter_IM_Message_reached_timeout_closure) },
- { be_const_key_weak(status_error_received, 3), be_const_closure(Matter_IM_Message_status_error_received_closure) },
- { be_const_key_weak(ready, -1), be_const_var(2) },
+ { be_const_key_weak(resp, -1), be_const_var(1) },
+ { be_const_key_weak(data, -1), be_const_var(4) },
+ { be_const_key_weak(expiration, -1), be_const_var(0) },
+ { be_const_key_weak(ready, 6), be_const_var(2) },
+ { be_const_key_weak(MSG_TIMEOUT, 5), be_const_int(5000) },
+ { be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_Message_ack_received_closure) },
})),
be_str_weak(Matter_IM_Message)
);
@@ -749,7 +791,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
+ ( &(const bvalue[21]) { /* constants */
/* K0 */ be_nested_str_weak(ready),
/* K1 */ be_nested_str_weak(data),
/* K2 */ be_nested_str_weak(attribute_reports),
@@ -762,18 +804,19 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
/* K9 */ be_nested_str_weak(encode_frame),
/* K10 */ be_nested_str_weak(encrypt),
/* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(log),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i),
- /* K14 */ be_nested_str_weak(session),
- /* K15 */ be_nested_str_weak(local_session_id),
- /* K16 */ be_nested_str_weak(ack_message_counter),
- /* K17 */ be_nested_str_weak(message_counter),
- /* K18 */ be_nested_str_weak(send_response_frame),
- /* K19 */ be_nested_str_weak(last_counter),
+ /* K12 */ be_nested_str_weak(loglevel),
+ /* K13 */ be_nested_str_weak(log),
+ /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i),
+ /* K15 */ be_nested_str_weak(session),
+ /* K16 */ be_nested_str_weak(local_session_id),
+ /* K17 */ be_nested_str_weak(ack_message_counter),
+ /* K18 */ be_nested_str_weak(message_counter),
+ /* K19 */ be_nested_str_weak(send_response_frame),
+ /* K20 */ be_nested_str_weak(last_counter),
}),
be_str_weak(send_im),
&be_const_str_solidified,
- ( &(const binstruction[69]) { /* code */
+ ( &(const binstruction[74]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x740A0001, // 0001 JMPT R2 #0004
0x50080000, // 0002 LDBOOL R2 0 0
@@ -783,7 +826,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
0x880C0702, // 0006 GETMBR R3 R3 K2
0x7C080200, // 0007 CALL R2 1
0x24080503, // 0008 GT R2 R2 K3
- 0x780A002C, // 0009 JMPF R2 #0037
+ 0x780A0031, // 0009 JMPF R2 #003C
0x88080104, // 000A GETMBR R2 R0 K4
0x780A000F, // 000B JMPF R2 #001C
0x60080003, // 000C GETGBL R2 G3
@@ -801,7 +844,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
0x90020002, // 0018 SETMBR R0 K0 R2
0x50080000, // 0019 LDBOOL R2 0 0
0x90020C02, // 001A SETMBR R0 K6 R2
- 0x70020019, // 001B JMP #0036
+ 0x7002001E, // 001B JMP #003B
0x88080107, // 001C GETMBR R2 R0 K7
0x8C080508, // 001D GETMET R2 R2 K8
0x50100000, // 001E LDBOOL R4 0 0
@@ -812,37 +855,42 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
0x7C0C0200, // 0023 CALL R3 1
0xB80E1600, // 0024 GETNGBL R3 K11
0x8C0C070C, // 0025 GETMET R3 R3 K12
- 0x60140018, // 0026 GETGBL R5 G24
- 0x5818000D, // 0027 LDCONST R6 K13
- 0x881C050E, // 0028 GETMBR R7 R2 K14
- 0x881C0F0F, // 0029 GETMBR R7 R7 K15
- 0x88200510, // 002A GETMBR R8 R2 K16
- 0x88240511, // 002B GETMBR R9 R2 K17
- 0x7C140800, // 002C CALL R5 4
- 0x541A0003, // 002D LDINT R6 4
- 0x7C0C0600, // 002E CALL R3 3
- 0x8C0C0312, // 002F GETMET R3 R1 K18
- 0x5C140400, // 0030 MOVE R5 R2
- 0x7C0C0400, // 0031 CALL R3 2
- 0x880C0511, // 0032 GETMBR R3 R2 K17
- 0x90022603, // 0033 SETMBR R0 K19 R3
- 0x500C0200, // 0034 LDBOOL R3 1 0
- 0x90020C03, // 0035 SETMBR R0 K6 R3
- 0x7002000C, // 0036 JMP #0044
- 0x88080104, // 0037 GETMBR R2 R0 K4
- 0x780A0008, // 0038 JMPF R2 #0042
- 0x60080003, // 0039 GETGBL R2 G3
- 0x5C0C0000, // 003A MOVE R3 R0
- 0x7C080200, // 003B CALL R2 1
- 0x8C080505, // 003C GETMET R2 R2 K5
- 0x5C100200, // 003D MOVE R4 R1
- 0x7C080400, // 003E CALL R2 2
- 0x50080000, // 003F LDBOOL R2 0 0
- 0x90020802, // 0040 SETMBR R0 K4 R2
- 0x70020001, // 0041 JMP #0044
- 0x50080200, // 0042 LDBOOL R2 1 0
- 0x90020C02, // 0043 SETMBR R0 K6 R2
- 0x80000000, // 0044 RET 0
+ 0x54160003, // 0026 LDINT R5 4
+ 0x7C0C0400, // 0027 CALL R3 2
+ 0x780E000A, // 0028 JMPF R3 #0034
+ 0xB80E1600, // 0029 GETNGBL R3 K11
+ 0x8C0C070D, // 002A GETMET R3 R3 K13
+ 0x60140018, // 002B GETGBL R5 G24
+ 0x5818000E, // 002C LDCONST R6 K14
+ 0x881C050F, // 002D GETMBR R7 R2 K15
+ 0x881C0F10, // 002E GETMBR R7 R7 K16
+ 0x88200511, // 002F GETMBR R8 R2 K17
+ 0x88240512, // 0030 GETMBR R9 R2 K18
+ 0x7C140800, // 0031 CALL R5 4
+ 0x541A0003, // 0032 LDINT R6 4
+ 0x7C0C0600, // 0033 CALL R3 3
+ 0x8C0C0313, // 0034 GETMET R3 R1 K19
+ 0x5C140400, // 0035 MOVE R5 R2
+ 0x7C0C0400, // 0036 CALL R3 2
+ 0x880C0512, // 0037 GETMBR R3 R2 K18
+ 0x90022803, // 0038 SETMBR R0 K20 R3
+ 0x500C0200, // 0039 LDBOOL R3 1 0
+ 0x90020C03, // 003A SETMBR R0 K6 R3
+ 0x7002000C, // 003B JMP #0049
+ 0x88080104, // 003C GETMBR R2 R0 K4
+ 0x780A0008, // 003D JMPF R2 #0047
+ 0x60080003, // 003E GETGBL R2 G3
+ 0x5C0C0000, // 003F MOVE R3 R0
+ 0x7C080200, // 0040 CALL R2 1
+ 0x8C080505, // 0041 GETMET R2 R2 K5
+ 0x5C100200, // 0042 MOVE R4 R1
+ 0x7C080400, // 0043 CALL R2 2
+ 0x50080000, // 0044 LDBOOL R2 0 0
+ 0x90020802, // 0045 SETMBR R0 K4 R2
+ 0x70020001, // 0046 JMP #0049
+ 0x50080200, // 0047 LDBOOL R2 1 0
+ 0x90020C02, // 0048 SETMBR R0 K6 R2
+ 0x80000000, // 0049 RET 0
})
)
);
@@ -1343,38 +1391,44 @@ be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
+ ( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
- /* K3 */ be_nested_str_weak(session),
- /* K4 */ be_nested_str_weak(local_session_id),
- /* K5 */ be_nested_str_weak(sub),
- /* K6 */ be_nested_str_weak(subscription_id),
- /* K7 */ be_const_int(3),
- /* K8 */ be_nested_str_weak(status_ok_received),
+ /* K1 */ be_nested_str_weak(loglevel),
+ /* K2 */ be_const_int(3),
+ /* K3 */ be_nested_str_weak(log),
+ /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
+ /* K5 */ be_nested_str_weak(session),
+ /* K6 */ be_nested_str_weak(local_session_id),
+ /* K7 */ be_nested_str_weak(sub),
+ /* K8 */ be_nested_str_weak(subscription_id),
+ /* K9 */ be_nested_str_weak(status_ok_received),
}),
be_str_weak(status_ok_received),
&be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
+ ( &(const binstruction[23]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x8C080501, // 0001 GETMET R2 R2 K1
- 0x60100018, // 0002 GETGBL R4 G24
- 0x58140002, // 0003 LDCONST R5 K2
- 0x88180303, // 0004 GETMBR R6 R1 K3
- 0x88180D04, // 0005 GETMBR R6 R6 K4
- 0x881C0105, // 0006 GETMBR R7 R0 K5
- 0x881C0F06, // 0007 GETMBR R7 R7 K6
- 0x7C100600, // 0008 CALL R4 3
- 0x58140007, // 0009 LDCONST R5 K7
- 0x7C080600, // 000A CALL R2 3
- 0x60080003, // 000B GETGBL R2 G3
- 0x5C0C0000, // 000C MOVE R3 R0
- 0x7C080200, // 000D CALL R2 1
- 0x8C080508, // 000E GETMET R2 R2 K8
- 0x5C100200, // 000F MOVE R4 R1
- 0x7C080400, // 0010 CALL R2 2
- 0x80040400, // 0011 RET 1 R2
+ 0x58100002, // 0002 LDCONST R4 K2
+ 0x7C080400, // 0003 CALL R2 2
+ 0x780A000A, // 0004 JMPF R2 #0010
+ 0xB80A0000, // 0005 GETNGBL R2 K0
+ 0x8C080503, // 0006 GETMET R2 R2 K3
+ 0x60100018, // 0007 GETGBL R4 G24
+ 0x58140004, // 0008 LDCONST R5 K4
+ 0x88180305, // 0009 GETMBR R6 R1 K5
+ 0x88180D06, // 000A GETMBR R6 R6 K6
+ 0x881C0107, // 000B GETMBR R7 R0 K7
+ 0x881C0F08, // 000C GETMBR R7 R7 K8
+ 0x7C100600, // 000D CALL R4 3
+ 0x58140002, // 000E LDCONST R5 K2
+ 0x7C080600, // 000F CALL R2 3
+ 0x60080003, // 0010 GETGBL R2 G3
+ 0x5C0C0000, // 0011 MOVE R3 R0
+ 0x7C080200, // 0012 CALL R2 1
+ 0x8C080509, // 0013 GETMET R2 R2 K9
+ 0x5C100200, // 0014 MOVE R4 R1
+ 0x7C080400, // 0015 CALL R2 2
+ 0x80040400, // 0016 RET 1 R2
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
index f4c65420e..08f9cf707 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
@@ -12,16 +12,16 @@ extern const bclass be_class_Matter_Frame;
be_local_closure(Matter_Frame_encode_frame, /* name */
be_nested_proto(
7, /* nstack */
- 2, /* argc */
+ 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(flags),
- /* K1 */ be_const_int(0),
+ ( &(const bvalue[29]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(flags),
/* K2 */ be_nested_str_weak(flag_s),
/* K3 */ be_nested_str_weak(flag_dsiz),
/* K4 */ be_const_int(3),
@@ -48,158 +48,166 @@ be_local_closure(Matter_Frame_encode_frame, /* name */
/* K25 */ be_nested_str_weak(protocol_id),
/* K26 */ be_nested_str_weak(ack_message_counter),
/* K27 */ be_nested_str_weak(app_payload_idx),
- /* K28 */ be_nested_str_weak(debug),
- /* K29 */ be_nested_str_weak(raw),
+ /* K28 */ be_nested_str_weak(raw),
}),
be_str_weak(encode_frame),
&be_const_str_solidified,
- ( &(const binstruction[146]) { /* code */
- 0x60080015, // 0000 GETGBL R2 G21
- 0x7C080000, // 0001 CALL R2 0
- 0x880C0100, // 0002 GETMBR R3 R0 K0
- 0x4C100000, // 0003 LDNIL R4
- 0x1C0C0604, // 0004 EQ R3 R3 R4
- 0x780E000D, // 0005 JMPF R3 #0014
- 0x90020101, // 0006 SETMBR R0 K0 K1
- 0x880C0102, // 0007 GETMBR R3 R0 K2
- 0x780E0003, // 0008 JMPF R3 #000D
- 0x880C0100, // 0009 GETMBR R3 R0 K0
- 0x54120003, // 000A LDINT R4 4
- 0x300C0604, // 000B OR R3 R3 R4
- 0x90020003, // 000C SETMBR R0 K0 R3
- 0x880C0103, // 000D GETMBR R3 R0 K3
- 0x780E0004, // 000E JMPF R3 #0014
- 0x880C0100, // 000F GETMBR R3 R0 K0
- 0x88100103, // 0010 GETMBR R4 R0 K3
- 0x2C100904, // 0011 AND R4 R4 K4
- 0x300C0604, // 0012 OR R3 R3 R4
- 0x90020003, // 0013 SETMBR R0 K0 R3
- 0x8C0C0505, // 0014 GETMET R3 R2 K5
- 0x88140100, // 0015 GETMBR R5 R0 K0
- 0x58180006, // 0016 LDCONST R6 K6
- 0x7C0C0600, // 0017 CALL R3 3
- 0x8C0C0505, // 0018 GETMET R3 R2 K5
- 0x88140107, // 0019 GETMBR R5 R0 K7
- 0x78160001, // 001A JMPF R5 #001D
- 0x88140107, // 001B GETMBR R5 R0 K7
- 0x70020000, // 001C JMP #001E
- 0x58140001, // 001D LDCONST R5 K1
- 0x58180008, // 001E LDCONST R6 K8
- 0x7C0C0600, // 001F CALL R3 3
- 0x880C0109, // 0020 GETMBR R3 R0 K9
- 0x4C100000, // 0021 LDNIL R4
- 0x1C0C0604, // 0022 EQ R3 R3 R4
- 0x780E0013, // 0023 JMPF R3 #0038
- 0x90021301, // 0024 SETMBR R0 K9 K1
- 0x880C010A, // 0025 GETMBR R3 R0 K10
- 0x780E0003, // 0026 JMPF R3 #002B
- 0x880C0109, // 0027 GETMBR R3 R0 K9
- 0x5412007F, // 0028 LDINT R4 128
- 0x300C0604, // 0029 OR R3 R3 R4
- 0x90021203, // 002A SETMBR R0 K9 R3
- 0x880C010B, // 002B GETMBR R3 R0 K11
- 0x780E0003, // 002C JMPF R3 #0031
- 0x880C0109, // 002D GETMBR R3 R0 K9
- 0x5412003F, // 002E LDINT R4 64
- 0x300C0604, // 002F OR R3 R3 R4
- 0x90021203, // 0030 SETMBR R0 K9 R3
- 0x880C010C, // 0031 GETMBR R3 R0 K12
- 0x780E0004, // 0032 JMPF R3 #0038
+ ( &(const binstruction[155]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E000A, // 0002 JMPF R3 #000E
+ 0x600C0015, // 0003 GETGBL R3 G21
+ 0x5412000F, // 0004 LDINT R4 16
+ 0x78060003, // 0005 JMPF R1 #000A
+ 0x6014000C, // 0006 GETGBL R5 G12
+ 0x5C180200, // 0007 MOVE R6 R1
+ 0x7C140200, // 0008 CALL R5 1
+ 0x70020000, // 0009 JMP #000B
+ 0x58140000, // 000A LDCONST R5 K0
+ 0x00100805, // 000B ADD R4 R4 R5
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x5C080600, // 000D MOVE R2 R3
+ 0x880C0101, // 000E GETMBR R3 R0 K1
+ 0x4C100000, // 000F LDNIL R4
+ 0x1C0C0604, // 0010 EQ R3 R3 R4
+ 0x780E000D, // 0011 JMPF R3 #0020
+ 0x90020300, // 0012 SETMBR R0 K1 K0
+ 0x880C0102, // 0013 GETMBR R3 R0 K2
+ 0x780E0003, // 0014 JMPF R3 #0019
+ 0x880C0101, // 0015 GETMBR R3 R0 K1
+ 0x54120003, // 0016 LDINT R4 4
+ 0x300C0604, // 0017 OR R3 R3 R4
+ 0x90020203, // 0018 SETMBR R0 K1 R3
+ 0x880C0103, // 0019 GETMBR R3 R0 K3
+ 0x780E0004, // 001A JMPF R3 #0020
+ 0x880C0101, // 001B GETMBR R3 R0 K1
+ 0x88100103, // 001C GETMBR R4 R0 K3
+ 0x2C100904, // 001D AND R4 R4 K4
+ 0x300C0604, // 001E OR R3 R3 R4
+ 0x90020203, // 001F SETMBR R0 K1 R3
+ 0x8C0C0505, // 0020 GETMET R3 R2 K5
+ 0x88140101, // 0021 GETMBR R5 R0 K1
+ 0x58180006, // 0022 LDCONST R6 K6
+ 0x7C0C0600, // 0023 CALL R3 3
+ 0x8C0C0505, // 0024 GETMET R3 R2 K5
+ 0x88140107, // 0025 GETMBR R5 R0 K7
+ 0x78160001, // 0026 JMPF R5 #0029
+ 0x88140107, // 0027 GETMBR R5 R0 K7
+ 0x70020000, // 0028 JMP #002A
+ 0x58140000, // 0029 LDCONST R5 K0
+ 0x58180008, // 002A LDCONST R6 K8
+ 0x7C0C0600, // 002B CALL R3 3
+ 0x880C0109, // 002C GETMBR R3 R0 K9
+ 0x4C100000, // 002D LDNIL R4
+ 0x1C0C0604, // 002E EQ R3 R3 R4
+ 0x780E0013, // 002F JMPF R3 #0044
+ 0x90021300, // 0030 SETMBR R0 K9 K0
+ 0x880C010A, // 0031 GETMBR R3 R0 K10
+ 0x780E0003, // 0032 JMPF R3 #0037
0x880C0109, // 0033 GETMBR R3 R0 K9
- 0x8810010C, // 0034 GETMBR R4 R0 K12
- 0x2C100904, // 0035 AND R4 R4 K4
- 0x300C0604, // 0036 OR R3 R3 R4
- 0x90021203, // 0037 SETMBR R0 K9 R3
- 0x8C0C0505, // 0038 GETMET R3 R2 K5
- 0x88140109, // 0039 GETMBR R5 R0 K9
- 0x58180006, // 003A LDCONST R6 K6
- 0x7C0C0600, // 003B CALL R3 3
- 0x8C0C0505, // 003C GETMET R3 R2 K5
- 0x8814010D, // 003D GETMBR R5 R0 K13
- 0x541A0003, // 003E LDINT R6 4
- 0x7C0C0600, // 003F CALL R3 3
- 0x880C0102, // 0040 GETMBR R3 R0 K2
- 0x780E0001, // 0041 JMPF R3 #0044
- 0x880C010E, // 0042 GETMBR R3 R0 K14
- 0x400C0403, // 0043 CONNECT R3 R2 R3
- 0x880C0103, // 0044 GETMBR R3 R0 K3
- 0x1C0C0706, // 0045 EQ R3 R3 K6
- 0x780E0001, // 0046 JMPF R3 #0049
- 0x880C010F, // 0047 GETMBR R3 R0 K15
- 0x400C0403, // 0048 CONNECT R3 R2 R3
- 0x880C0103, // 0049 GETMBR R3 R0 K3
- 0x1C0C0708, // 004A EQ R3 R3 K8
- 0x780E0003, // 004B JMPF R3 #0050
- 0x8C0C0505, // 004C GETMET R3 R2 K5
- 0x88140110, // 004D GETMBR R5 R0 K16
- 0x58180008, // 004E LDCONST R6 K8
- 0x7C0C0600, // 004F CALL R3 3
- 0x600C000C, // 0050 GETGBL R3 G12
- 0x5C100400, // 0051 MOVE R4 R2
- 0x7C0C0200, // 0052 CALL R3 1
- 0x90022203, // 0053 SETMBR R0 K17 R3
- 0x880C0112, // 0054 GETMBR R3 R0 K18
- 0x4C100000, // 0055 LDNIL R4
- 0x1C0C0604, // 0056 EQ R3 R3 R4
- 0x780E0016, // 0057 JMPF R3 #006F
- 0x90022501, // 0058 SETMBR R0 K18 K1
- 0x880C0113, // 0059 GETMBR R3 R0 K19
- 0x780E0003, // 005A JMPF R3 #005F
- 0x880C0112, // 005B GETMBR R3 R0 K18
- 0x5412000F, // 005C LDINT R4 16
- 0x300C0604, // 005D OR R3 R3 R4
- 0x90022403, // 005E SETMBR R0 K18 R3
- 0x880C0114, // 005F GETMBR R3 R0 K20
- 0x780E0003, // 0060 JMPF R3 #0065
- 0x880C0112, // 0061 GETMBR R3 R0 K18
- 0x54120003, // 0062 LDINT R4 4
- 0x300C0604, // 0063 OR R3 R3 R4
- 0x90022403, // 0064 SETMBR R0 K18 R3
- 0x880C0115, // 0065 GETMBR R3 R0 K21
- 0x780E0002, // 0066 JMPF R3 #006A
+ 0x5412007F, // 0034 LDINT R4 128
+ 0x300C0604, // 0035 OR R3 R3 R4
+ 0x90021203, // 0036 SETMBR R0 K9 R3
+ 0x880C010B, // 0037 GETMBR R3 R0 K11
+ 0x780E0003, // 0038 JMPF R3 #003D
+ 0x880C0109, // 0039 GETMBR R3 R0 K9
+ 0x5412003F, // 003A LDINT R4 64
+ 0x300C0604, // 003B OR R3 R3 R4
+ 0x90021203, // 003C SETMBR R0 K9 R3
+ 0x880C010C, // 003D GETMBR R3 R0 K12
+ 0x780E0004, // 003E JMPF R3 #0044
+ 0x880C0109, // 003F GETMBR R3 R0 K9
+ 0x8810010C, // 0040 GETMBR R4 R0 K12
+ 0x2C100904, // 0041 AND R4 R4 K4
+ 0x300C0604, // 0042 OR R3 R3 R4
+ 0x90021203, // 0043 SETMBR R0 K9 R3
+ 0x8C0C0505, // 0044 GETMET R3 R2 K5
+ 0x88140109, // 0045 GETMBR R5 R0 K9
+ 0x58180006, // 0046 LDCONST R6 K6
+ 0x7C0C0600, // 0047 CALL R3 3
+ 0x8C0C0505, // 0048 GETMET R3 R2 K5
+ 0x8814010D, // 0049 GETMBR R5 R0 K13
+ 0x541A0003, // 004A LDINT R6 4
+ 0x7C0C0600, // 004B CALL R3 3
+ 0x880C0102, // 004C GETMBR R3 R0 K2
+ 0x780E0001, // 004D JMPF R3 #0050
+ 0x880C010E, // 004E GETMBR R3 R0 K14
+ 0x400C0403, // 004F CONNECT R3 R2 R3
+ 0x880C0103, // 0050 GETMBR R3 R0 K3
+ 0x1C0C0706, // 0051 EQ R3 R3 K6
+ 0x780E0001, // 0052 JMPF R3 #0055
+ 0x880C010F, // 0053 GETMBR R3 R0 K15
+ 0x400C0403, // 0054 CONNECT R3 R2 R3
+ 0x880C0103, // 0055 GETMBR R3 R0 K3
+ 0x1C0C0708, // 0056 EQ R3 R3 K8
+ 0x780E0003, // 0057 JMPF R3 #005C
+ 0x8C0C0505, // 0058 GETMET R3 R2 K5
+ 0x88140110, // 0059 GETMBR R5 R0 K16
+ 0x58180008, // 005A LDCONST R6 K8
+ 0x7C0C0600, // 005B CALL R3 3
+ 0x600C000C, // 005C GETGBL R3 G12
+ 0x5C100400, // 005D MOVE R4 R2
+ 0x7C0C0200, // 005E CALL R3 1
+ 0x90022203, // 005F SETMBR R0 K17 R3
+ 0x880C0112, // 0060 GETMBR R3 R0 K18
+ 0x4C100000, // 0061 LDNIL R4
+ 0x1C0C0604, // 0062 EQ R3 R3 R4
+ 0x780E0016, // 0063 JMPF R3 #007B
+ 0x90022500, // 0064 SETMBR R0 K18 K0
+ 0x880C0113, // 0065 GETMBR R3 R0 K19
+ 0x780E0003, // 0066 JMPF R3 #006B
0x880C0112, // 0067 GETMBR R3 R0 K18
- 0x300C0708, // 0068 OR R3 R3 K8
- 0x90022403, // 0069 SETMBR R0 K18 R3
- 0x880C0116, // 006A GETMBR R3 R0 K22
- 0x780E0002, // 006B JMPF R3 #006F
- 0x880C0112, // 006C GETMBR R3 R0 K18
- 0x300C0706, // 006D OR R3 R3 K6
- 0x90022403, // 006E SETMBR R0 K18 R3
- 0x8C0C0505, // 006F GETMET R3 R2 K5
- 0x88140112, // 0070 GETMBR R5 R0 K18
- 0x58180006, // 0071 LDCONST R6 K6
- 0x7C0C0600, // 0072 CALL R3 3
- 0x8C0C0505, // 0073 GETMET R3 R2 K5
- 0x88140117, // 0074 GETMBR R5 R0 K23
- 0x58180006, // 0075 LDCONST R6 K6
- 0x7C0C0600, // 0076 CALL R3 3
- 0x8C0C0505, // 0077 GETMET R3 R2 K5
- 0x88140118, // 0078 GETMBR R5 R0 K24
- 0x541AFFFE, // 0079 LDINT R6 65535
- 0x2C140A06, // 007A AND R5 R5 R6
- 0x58180008, // 007B LDCONST R6 K8
- 0x7C0C0600, // 007C CALL R3 3
- 0x8C0C0505, // 007D GETMET R3 R2 K5
- 0x88140119, // 007E GETMBR R5 R0 K25
- 0x58180008, // 007F LDCONST R6 K8
- 0x7C0C0600, // 0080 CALL R3 3
- 0x880C0115, // 0081 GETMBR R3 R0 K21
- 0x780E0003, // 0082 JMPF R3 #0087
+ 0x5412000F, // 0068 LDINT R4 16
+ 0x300C0604, // 0069 OR R3 R3 R4
+ 0x90022403, // 006A SETMBR R0 K18 R3
+ 0x880C0114, // 006B GETMBR R3 R0 K20
+ 0x780E0003, // 006C JMPF R3 #0071
+ 0x880C0112, // 006D GETMBR R3 R0 K18
+ 0x54120003, // 006E LDINT R4 4
+ 0x300C0604, // 006F OR R3 R3 R4
+ 0x90022403, // 0070 SETMBR R0 K18 R3
+ 0x880C0115, // 0071 GETMBR R3 R0 K21
+ 0x780E0002, // 0072 JMPF R3 #0076
+ 0x880C0112, // 0073 GETMBR R3 R0 K18
+ 0x300C0708, // 0074 OR R3 R3 K8
+ 0x90022403, // 0075 SETMBR R0 K18 R3
+ 0x880C0116, // 0076 GETMBR R3 R0 K22
+ 0x780E0002, // 0077 JMPF R3 #007B
+ 0x880C0112, // 0078 GETMBR R3 R0 K18
+ 0x300C0706, // 0079 OR R3 R3 K6
+ 0x90022403, // 007A SETMBR R0 K18 R3
+ 0x8C0C0505, // 007B GETMET R3 R2 K5
+ 0x88140112, // 007C GETMBR R5 R0 K18
+ 0x58180006, // 007D LDCONST R6 K6
+ 0x7C0C0600, // 007E CALL R3 3
+ 0x8C0C0505, // 007F GETMET R3 R2 K5
+ 0x88140117, // 0080 GETMBR R5 R0 K23
+ 0x58180006, // 0081 LDCONST R6 K6
+ 0x7C0C0600, // 0082 CALL R3 3
0x8C0C0505, // 0083 GETMET R3 R2 K5
- 0x8814011A, // 0084 GETMBR R5 R0 K26
- 0x541A0003, // 0085 LDINT R6 4
- 0x7C0C0600, // 0086 CALL R3 3
- 0x600C000C, // 0087 GETGBL R3 G12
- 0x5C100400, // 0088 MOVE R4 R2
- 0x7C0C0200, // 0089 CALL R3 1
- 0x90023603, // 008A SETMBR R0 K27 R3
- 0x78060000, // 008B JMPF R1 #008D
- 0x400C0401, // 008C CONNECT R3 R2 R1
- 0x8C0C011C, // 008D GETMET R3 R0 K28
- 0x5C140400, // 008E MOVE R5 R2
- 0x7C0C0400, // 008F CALL R3 2
- 0x90023A02, // 0090 SETMBR R0 K29 R2
- 0x80040400, // 0091 RET 1 R2
+ 0x88140118, // 0084 GETMBR R5 R0 K24
+ 0x541AFFFE, // 0085 LDINT R6 65535
+ 0x2C140A06, // 0086 AND R5 R5 R6
+ 0x58180008, // 0087 LDCONST R6 K8
+ 0x7C0C0600, // 0088 CALL R3 3
+ 0x8C0C0505, // 0089 GETMET R3 R2 K5
+ 0x88140119, // 008A GETMBR R5 R0 K25
+ 0x58180008, // 008B LDCONST R6 K8
+ 0x7C0C0600, // 008C CALL R3 3
+ 0x880C0115, // 008D GETMBR R3 R0 K21
+ 0x780E0003, // 008E JMPF R3 #0093
+ 0x8C0C0505, // 008F GETMET R3 R2 K5
+ 0x8814011A, // 0090 GETMBR R5 R0 K26
+ 0x541A0003, // 0091 LDINT R6 4
+ 0x7C0C0600, // 0092 CALL R3 3
+ 0x600C000C, // 0093 GETGBL R3 G12
+ 0x5C100400, // 0094 MOVE R4 R2
+ 0x7C0C0200, // 0095 CALL R3 1
+ 0x90023603, // 0096 SETMBR R0 K27 R3
+ 0x78060000, // 0097 JMPF R1 #0099
+ 0x400C0401, // 0098 CONNECT R3 R2 R1
+ 0x90023802, // 0099 SETMBR R0 K28 R2
+ 0x80040400, // 009A RET 1 R2
})
)
);
@@ -211,7 +219,7 @@ be_local_closure(Matter_Frame_encode_frame, /* name */
********************************************************************/
be_local_closure(Matter_Frame_encrypt, /* name */
be_nested_proto(
- 15, /* nstack */
+ 23, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -219,85 +227,92 @@ be_local_closure(Matter_Frame_encrypt, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
+ ( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(raw),
/* K2 */ be_nested_str_weak(session),
- /* K3 */ be_nested_str_weak(get_r2i),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(payload_idx),
- /* K6 */ be_const_int(1),
- /* K7 */ be_const_int(2147483647),
+ /* K3 */ be_nested_str_weak(payload_idx),
+ /* K4 */ be_nested_str_weak(get_r2i),
+ /* K5 */ be_nested_str_weak(message_handler),
+ /* K6 */ be_nested_str_weak(_n_bytes),
+ /* K7 */ be_nested_str_weak(clear),
/* K8 */ be_nested_str_weak(add),
/* K9 */ be_nested_str_weak(flags),
- /* K10 */ be_nested_str_weak(message_counter),
- /* K11 */ be_nested_str_weak(is_CASE),
- /* K12 */ be_nested_str_weak(get_device_id),
- /* K13 */ be_nested_str_weak(resize),
- /* K14 */ be_nested_str_weak(AES_CCM),
- /* K15 */ be_nested_str_weak(encrypt),
- /* K16 */ be_nested_str_weak(tag),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_nested_str_weak(message_counter),
+ /* K12 */ be_nested_str_weak(is_CASE),
+ /* K13 */ be_nested_str_weak(get_device_id),
+ /* K14 */ be_nested_str_weak(resize),
+ /* K15 */ be_nested_str_weak(AES_CCM),
+ /* K16 */ be_nested_str_weak(encrypt1),
+ /* K17 */ be_const_int(0),
}),
be_str_weak(encrypt),
&be_const_str_solidified,
- ( &(const binstruction[57]) { /* code */
+ ( &(const binstruction[63]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x88080101, // 0001 GETMBR R2 R0 K1
0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x8C100703, // 0003 GETMET R4 R3 K3
- 0x7C100200, // 0004 CALL R4 1
- 0x88140105, // 0005 GETMBR R5 R0 K5
- 0x04140B06, // 0006 SUB R5 R5 K6
- 0x40160805, // 0007 CONNECT R5 K4 R5
- 0x94140405, // 0008 GETIDX R5 R2 R5
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x40180D07, // 000A CONNECT R6 R6 K7
- 0x94180406, // 000B GETIDX R6 R2 R6
- 0x601C0015, // 000C GETGBL R7 G21
- 0x7C1C0000, // 000D CALL R7 0
- 0x8C200F08, // 000E GETMET R8 R7 K8
- 0x88280109, // 000F GETMBR R10 R0 K9
- 0x582C0006, // 0010 LDCONST R11 K6
- 0x7C200600, // 0011 CALL R8 3
- 0x8C200F08, // 0012 GETMET R8 R7 K8
- 0x8828010A, // 0013 GETMBR R10 R0 K10
- 0x542E0003, // 0014 LDINT R11 4
- 0x7C200600, // 0015 CALL R8 3
- 0x8C20070B, // 0016 GETMET R8 R3 K11
+ 0x88100103, // 0003 GETMBR R4 R0 K3
+ 0x5416000F, // 0004 LDINT R5 16
+ 0x8C180704, // 0005 GETMET R6 R3 K4
+ 0x7C180200, // 0006 CALL R6 1
+ 0x881C0105, // 0007 GETMBR R7 R0 K5
+ 0x881C0F06, // 0008 GETMBR R7 R7 K6
+ 0x8C200F07, // 0009 GETMET R8 R7 K7
+ 0x7C200200, // 000A CALL R8 1
+ 0x8C200F08, // 000B GETMET R8 R7 K8
+ 0x88280109, // 000C GETMBR R10 R0 K9
+ 0x582C000A, // 000D LDCONST R11 K10
+ 0x7C200600, // 000E CALL R8 3
+ 0x8C200F08, // 000F GETMET R8 R7 K8
+ 0x8828010B, // 0010 GETMBR R10 R0 K11
+ 0x542E0003, // 0011 LDINT R11 4
+ 0x7C200600, // 0012 CALL R8 3
+ 0x8C20070C, // 0013 GETMET R8 R3 K12
+ 0x7C200200, // 0014 CALL R8 1
+ 0x78220005, // 0015 JMPF R8 #001C
+ 0x8C20070D, // 0016 GETMET R8 R3 K13
0x7C200200, // 0017 CALL R8 1
- 0x78220005, // 0018 JMPF R8 #001F
- 0x8C20070C, // 0019 GETMET R8 R3 K12
+ 0x78220002, // 0018 JMPF R8 #001C
+ 0x8C20070D, // 0019 GETMET R8 R3 K13
0x7C200200, // 001A CALL R8 1
- 0x78220002, // 001B JMPF R8 #001F
- 0x8C20070C, // 001C GETMET R8 R3 K12
- 0x7C200200, // 001D CALL R8 1
- 0x40200E08, // 001E CONNECT R8 R7 R8
- 0x8C200F0D, // 001F GETMET R8 R7 K13
- 0x542A000C, // 0020 LDINT R10 13
- 0x7C200400, // 0021 CALL R8 2
- 0x8C20030E, // 0022 GETMET R8 R1 K14
- 0x5C280800, // 0023 MOVE R10 R4
- 0x5C2C0E00, // 0024 MOVE R11 R7
- 0x5C300A00, // 0025 MOVE R12 R5
- 0x6034000C, // 0026 GETGBL R13 G12
- 0x5C380C00, // 0027 MOVE R14 R6
- 0x7C340200, // 0028 CALL R13 1
- 0x543A000F, // 0029 LDINT R14 16
- 0x7C200C00, // 002A CALL R8 6
- 0x8C24110F, // 002B GETMET R9 R8 K15
- 0x5C2C0C00, // 002C MOVE R11 R6
- 0x7C240400, // 002D CALL R9 2
- 0x8C281110, // 002E GETMET R10 R8 K16
- 0x7C280200, // 002F CALL R10 1
- 0x882C0101, // 0030 GETMBR R11 R0 K1
- 0x8C2C170D, // 0031 GETMET R11 R11 K13
- 0x88340105, // 0032 GETMBR R13 R0 K5
- 0x7C2C0400, // 0033 CALL R11 2
- 0x882C0101, // 0034 GETMBR R11 R0 K1
- 0x402C1609, // 0035 CONNECT R11 R11 R9
- 0x882C0101, // 0036 GETMBR R11 R0 K1
- 0x402C160A, // 0037 CONNECT R11 R11 R10
- 0x80000000, // 0038 RET 0
+ 0x40200E08, // 001B CONNECT R8 R7 R8
+ 0x8C200F0E, // 001C GETMET R8 R7 K14
+ 0x542A000C, // 001D LDINT R10 13
+ 0x7C200400, // 001E CALL R8 2
+ 0x8C20050E, // 001F GETMET R8 R2 K14
+ 0x6028000C, // 0020 GETGBL R10 G12
+ 0x5C2C0400, // 0021 MOVE R11 R2
+ 0x7C280200, // 0022 CALL R10 1
+ 0x00281405, // 0023 ADD R10 R10 R5
+ 0x7C200400, // 0024 CALL R8 2
+ 0x8820030F, // 0025 GETMBR R8 R1 K15
+ 0x8C201110, // 0026 GETMET R8 R8 K16
+ 0x5C280C00, // 0027 MOVE R10 R6
+ 0x5C2C0E00, // 0028 MOVE R11 R7
+ 0x58300011, // 0029 LDCONST R12 K17
+ 0x6034000C, // 002A GETGBL R13 G12
+ 0x5C380E00, // 002B MOVE R14 R7
+ 0x7C340200, // 002C CALL R13 1
+ 0x5C380400, // 002D MOVE R14 R2
+ 0x583C0011, // 002E LDCONST R15 K17
+ 0x5C400800, // 002F MOVE R16 R4
+ 0x5C440400, // 0030 MOVE R17 R2
+ 0x5C480800, // 0031 MOVE R18 R4
+ 0x604C000C, // 0032 GETGBL R19 G12
+ 0x5C500400, // 0033 MOVE R20 R2
+ 0x7C4C0200, // 0034 CALL R19 1
+ 0x044C2604, // 0035 SUB R19 R19 R4
+ 0x044C2605, // 0036 SUB R19 R19 R5
+ 0x5C500400, // 0037 MOVE R20 R2
+ 0x6054000C, // 0038 GETGBL R21 G12
+ 0x5C580400, // 0039 MOVE R22 R2
+ 0x7C540200, // 003A CALL R21 1
+ 0x04542A05, // 003B SUB R21 R21 R5
+ 0x5C580A00, // 003C MOVE R22 R5
+ 0x7C201C00, // 003D CALL R8 14
+ 0x80000000, // 003E RET 0
})
)
);
@@ -1011,7 +1026,7 @@ be_local_closure(Matter_Frame_decode_payload, /* name */
********************************************************************/
be_local_closure(Matter_Frame_decrypt, /* name */
be_nested_proto(
- 16, /* nstack */
+ 23, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1019,11 +1034,11 @@ be_local_closure(Matter_Frame_decrypt, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
+ ( &(const bvalue[30]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(session),
/* K2 */ be_nested_str_weak(raw),
- /* K3 */ be_const_int(2147483647),
+ /* K3 */ be_nested_str_weak(payload_idx),
/* K4 */ be_nested_str_weak(get_i2r),
/* K5 */ be_nested_str_weak(sec_p),
/* K6 */ be_nested_str_weak(tasmota),
@@ -1031,131 +1046,145 @@ be_local_closure(Matter_Frame_decrypt, /* name */
/* K8 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO),
/* K9 */ be_const_int(2),
/* K10 */ be_nested_str_weak(get_i2r_privacy),
- /* K11 */ be_nested_str_weak(add),
- /* K12 */ be_nested_str_weak(local_session_id),
- /* K13 */ be_nested_str_weak(payload_idx),
+ /* K11 */ be_const_int(2147483647),
+ /* K12 */ be_nested_str_weak(add),
+ /* K13 */ be_nested_str_weak(local_session_id),
/* K14 */ be_const_int(1),
/* K15 */ be_nested_str_weak(AES_CTR),
/* K16 */ be_nested_str_weak(decrypt),
/* K17 */ be_const_int(0),
/* K18 */ be_const_int(3),
- /* K19 */ be_nested_str_weak(flags),
- /* K20 */ be_nested_str_weak(message_counter),
- /* K21 */ be_nested_str_weak(source_node_id),
- /* K22 */ be_nested_str_weak(peer_node_id),
- /* K23 */ be_nested_str_weak(resize),
- /* K24 */ be_nested_str_weak(AES_CCM),
- /* K25 */ be_nested_str_weak(tag),
- /* K26 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC),
+ /* K19 */ be_nested_str_weak(message_handler),
+ /* K20 */ be_nested_str_weak(_n_bytes),
+ /* K21 */ be_nested_str_weak(clear),
+ /* K22 */ be_nested_str_weak(flags),
+ /* K23 */ be_nested_str_weak(message_counter),
+ /* K24 */ be_nested_str_weak(source_node_id),
+ /* K25 */ be_nested_str_weak(peer_node_id),
+ /* K26 */ be_nested_str_weak(resize),
+ /* K27 */ be_nested_str_weak(AES_CCM),
+ /* K28 */ be_nested_str_weak(decrypt1),
+ /* K29 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC),
}),
be_str_weak(decrypt),
&be_const_str_solidified,
- ( &(const binstruction[105]) { /* code */
+ ( &(const binstruction[116]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x88080101, // 0001 GETMBR R2 R0 K1
0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x5411FFEF, // 0003 LDINT R4 -16
- 0x40100903, // 0004 CONNECT R4 R4 K3
- 0x94100604, // 0005 GETIDX R4 R3 R4
- 0x8C140504, // 0006 GETMET R5 R2 K4
- 0x7C140200, // 0007 CALL R5 1
- 0x88180105, // 0008 GETMBR R6 R0 K5
- 0x781A0029, // 0009 JMPF R6 #0034
- 0xB81A0C00, // 000A GETNGBL R6 K6
- 0x8C180D07, // 000B GETMET R6 R6 K7
- 0x58200008, // 000C LDCONST R8 K8
- 0x58240009, // 000D LDCONST R9 K9
- 0x7C180600, // 000E CALL R6 3
- 0x8C18050A, // 000F GETMET R6 R2 K10
- 0x7C180200, // 0010 CALL R6 1
- 0x601C0015, // 0011 GETGBL R7 G21
- 0x7C1C0000, // 0012 CALL R7 0
- 0x8C1C0F0B, // 0013 GETMET R7 R7 K11
- 0x8824010C, // 0014 GETMBR R9 R0 K12
- 0x5429FFFD, // 0015 LDINT R10 -2
- 0x7C1C0600, // 0016 CALL R7 3
- 0x54220004, // 0017 LDINT R8 5
- 0x5426000E, // 0018 LDINT R9 15
- 0x40201009, // 0019 CONNECT R8 R8 R9
- 0x94200808, // 001A GETIDX R8 R4 R8
- 0x001C0E08, // 001B ADD R7 R7 R8
- 0x54220003, // 001C LDINT R8 4
- 0x8824010D, // 001D GETMBR R9 R0 K13
- 0x0424130E, // 001E SUB R9 R9 K14
- 0x40201009, // 001F CONNECT R8 R8 R9
- 0x88240102, // 0020 GETMBR R9 R0 K2
- 0x94201208, // 0021 GETIDX R8 R9 R8
- 0x8C28030F, // 0022 GETMET R10 R1 K15
- 0x5C300C00, // 0023 MOVE R12 R6
- 0x7C280400, // 0024 CALL R10 2
- 0x8C281510, // 0025 GETMET R10 R10 K16
- 0x5C301000, // 0026 MOVE R12 R8
- 0x5C340E00, // 0027 MOVE R13 R7
- 0x58380009, // 0028 LDCONST R14 K9
- 0x7C280800, // 0029 CALL R10 4
- 0x5C241400, // 002A MOVE R9 R10
- 0x402A2312, // 002B CONNECT R10 K17 K18
- 0x882C0102, // 002C GETMBR R11 R0 K2
- 0x9428160A, // 002D GETIDX R10 R11 R10
- 0x00281409, // 002E ADD R10 R10 R9
- 0x882C010D, // 002F GETMBR R11 R0 K13
- 0x402C1703, // 0030 CONNECT R11 R11 K3
- 0x942C100B, // 0031 GETIDX R11 R8 R11
- 0x0028140B, // 0032 ADD R10 R10 R11
- 0x9002040A, // 0033 SETMBR R0 K2 R10
- 0x8818010D, // 0034 GETMBR R6 R0 K13
- 0x04180D0E, // 0035 SUB R6 R6 K14
- 0x401A2206, // 0036 CONNECT R6 K17 R6
- 0x94180606, // 0037 GETIDX R6 R3 R6
- 0x881C010D, // 0038 GETMBR R7 R0 K13
- 0x5421FFEE, // 0039 LDINT R8 -17
- 0x401C0E08, // 003A CONNECT R7 R7 R8
- 0x941C0607, // 003B GETIDX R7 R3 R7
- 0x60200015, // 003C GETGBL R8 G21
- 0x7C200000, // 003D CALL R8 0
- 0x8C24110B, // 003E GETMET R9 R8 K11
- 0x882C0113, // 003F GETMBR R11 R0 K19
- 0x5830000E, // 0040 LDCONST R12 K14
- 0x7C240600, // 0041 CALL R9 3
- 0x8C24110B, // 0042 GETMET R9 R8 K11
- 0x882C0114, // 0043 GETMBR R11 R0 K20
- 0x54320003, // 0044 LDINT R12 4
- 0x7C240600, // 0045 CALL R9 3
- 0x88240115, // 0046 GETMBR R9 R0 K21
- 0x78260001, // 0047 JMPF R9 #004A
- 0x40241103, // 0048 CONNECT R9 R8 K3
- 0x70020006, // 0049 JMP #0051
- 0x88240516, // 004A GETMBR R9 R2 K22
- 0x78260001, // 004B JMPF R9 #004E
- 0x88240516, // 004C GETMBR R9 R2 K22
- 0x40241009, // 004D CONNECT R9 R8 R9
- 0x8C241117, // 004E GETMET R9 R8 K23
- 0x542E000C, // 004F LDINT R11 13
- 0x7C240400, // 0050 CALL R9 2
- 0x8C240318, // 0051 GETMET R9 R1 K24
- 0x5C2C0A00, // 0052 MOVE R11 R5
- 0x5C301000, // 0053 MOVE R12 R8
- 0x5C340C00, // 0054 MOVE R13 R6
- 0x6038000C, // 0055 GETGBL R14 G12
- 0x5C3C0E00, // 0056 MOVE R15 R7
- 0x7C380200, // 0057 CALL R14 1
- 0x543E000F, // 0058 LDINT R15 16
- 0x7C240C00, // 0059 CALL R9 6
- 0x8C281310, // 005A GETMET R10 R9 K16
- 0x5C300E00, // 005B MOVE R12 R7
- 0x7C280400, // 005C CALL R10 2
- 0x8C2C1319, // 005D GETMET R11 R9 K25
- 0x7C2C0200, // 005E CALL R11 1
- 0x20301604, // 005F NE R12 R11 R4
- 0x78320006, // 0060 JMPF R12 #0068
- 0xB8320C00, // 0061 GETNGBL R12 K6
- 0x8C301907, // 0062 GETMET R12 R12 K7
- 0x5838001A, // 0063 LDCONST R14 K26
- 0x583C0012, // 0064 LDCONST R15 K18
- 0x7C300600, // 0065 CALL R12 3
- 0x4C300000, // 0066 LDNIL R12
- 0x80041800, // 0067 RET 1 R12
- 0x80041400, // 0068 RET 1 R10
+ 0x88100103, // 0003 GETMBR R4 R0 K3
+ 0x5416000F, // 0004 LDINT R5 16
+ 0x8C180504, // 0005 GETMET R6 R2 K4
+ 0x7C180200, // 0006 CALL R6 1
+ 0x881C0105, // 0007 GETMBR R7 R0 K5
+ 0x781E002C, // 0008 JMPF R7 #0036
+ 0xB81E0C00, // 0009 GETNGBL R7 K6
+ 0x8C1C0F07, // 000A GETMET R7 R7 K7
+ 0x58240008, // 000B LDCONST R9 K8
+ 0x58280009, // 000C LDCONST R10 K9
+ 0x7C1C0600, // 000D CALL R7 3
+ 0x8C1C050A, // 000E GETMET R7 R2 K10
+ 0x7C1C0200, // 000F CALL R7 1
+ 0x5421FFEF, // 0010 LDINT R8 -16
+ 0x4020110B, // 0011 CONNECT R8 R8 K11
+ 0x94200608, // 0012 GETIDX R8 R3 R8
+ 0x60240015, // 0013 GETGBL R9 G21
+ 0x7C240000, // 0014 CALL R9 0
+ 0x8C24130C, // 0015 GETMET R9 R9 K12
+ 0x882C010D, // 0016 GETMBR R11 R0 K13
+ 0x5431FFFD, // 0017 LDINT R12 -2
+ 0x7C240600, // 0018 CALL R9 3
+ 0x542A0004, // 0019 LDINT R10 5
+ 0x542E000E, // 001A LDINT R11 15
+ 0x4028140B, // 001B CONNECT R10 R10 R11
+ 0x9428100A, // 001C GETIDX R10 R8 R10
+ 0x0024120A, // 001D ADD R9 R9 R10
+ 0x542A0003, // 001E LDINT R10 4
+ 0x882C0103, // 001F GETMBR R11 R0 K3
+ 0x042C170E, // 0020 SUB R11 R11 K14
+ 0x4028140B, // 0021 CONNECT R10 R10 R11
+ 0x882C0102, // 0022 GETMBR R11 R0 K2
+ 0x9428160A, // 0023 GETIDX R10 R11 R10
+ 0x8C30030F, // 0024 GETMET R12 R1 K15
+ 0x5C380E00, // 0025 MOVE R14 R7
+ 0x7C300400, // 0026 CALL R12 2
+ 0x8C301910, // 0027 GETMET R12 R12 K16
+ 0x5C381400, // 0028 MOVE R14 R10
+ 0x5C3C1200, // 0029 MOVE R15 R9
+ 0x58400009, // 002A LDCONST R16 K9
+ 0x7C300800, // 002B CALL R12 4
+ 0x5C2C1800, // 002C MOVE R11 R12
+ 0x40322312, // 002D CONNECT R12 K17 K18
+ 0x88340102, // 002E GETMBR R13 R0 K2
+ 0x94301A0C, // 002F GETIDX R12 R13 R12
+ 0x0030180B, // 0030 ADD R12 R12 R11
+ 0x88340103, // 0031 GETMBR R13 R0 K3
+ 0x40341B0B, // 0032 CONNECT R13 R13 K11
+ 0x9434140D, // 0033 GETIDX R13 R10 R13
+ 0x0030180D, // 0034 ADD R12 R12 R13
+ 0x9002040C, // 0035 SETMBR R0 K2 R12
+ 0x881C0113, // 0036 GETMBR R7 R0 K19
+ 0x881C0F14, // 0037 GETMBR R7 R7 K20
+ 0x8C200F15, // 0038 GETMET R8 R7 K21
+ 0x7C200200, // 0039 CALL R8 1
+ 0x8C200F0C, // 003A GETMET R8 R7 K12
+ 0x88280116, // 003B GETMBR R10 R0 K22
+ 0x582C000E, // 003C LDCONST R11 K14
+ 0x7C200600, // 003D CALL R8 3
+ 0x8C200F0C, // 003E GETMET R8 R7 K12
+ 0x88280117, // 003F GETMBR R10 R0 K23
+ 0x542E0003, // 0040 LDINT R11 4
+ 0x7C200600, // 0041 CALL R8 3
+ 0x88200118, // 0042 GETMBR R8 R0 K24
+ 0x78220001, // 0043 JMPF R8 #0046
+ 0x40200F0B, // 0044 CONNECT R8 R7 K11
+ 0x70020006, // 0045 JMP #004D
+ 0x88200519, // 0046 GETMBR R8 R2 K25
+ 0x78220001, // 0047 JMPF R8 #004A
+ 0x88200519, // 0048 GETMBR R8 R2 K25
+ 0x40200E08, // 0049 CONNECT R8 R7 R8
+ 0x8C200F1A, // 004A GETMET R8 R7 K26
+ 0x542A000C, // 004B LDINT R10 13
+ 0x7C200400, // 004C CALL R8 2
+ 0x8820031B, // 004D GETMBR R8 R1 K27
+ 0x8C20111C, // 004E GETMET R8 R8 K28
+ 0x5C280C00, // 004F MOVE R10 R6
+ 0x5C2C0E00, // 0050 MOVE R11 R7
+ 0x58300011, // 0051 LDCONST R12 K17
+ 0x6034000C, // 0052 GETGBL R13 G12
+ 0x5C380E00, // 0053 MOVE R14 R7
+ 0x7C340200, // 0054 CALL R13 1
+ 0x5C380600, // 0055 MOVE R14 R3
+ 0x583C0011, // 0056 LDCONST R15 K17
+ 0x5C400800, // 0057 MOVE R16 R4
+ 0x5C440600, // 0058 MOVE R17 R3
+ 0x5C480800, // 0059 MOVE R18 R4
+ 0x604C000C, // 005A GETGBL R19 G12
+ 0x5C500600, // 005B MOVE R20 R3
+ 0x7C4C0200, // 005C CALL R19 1
+ 0x044C2604, // 005D SUB R19 R19 R4
+ 0x044C2605, // 005E SUB R19 R19 R5
+ 0x5C500600, // 005F MOVE R20 R3
+ 0x6054000C, // 0060 GETGBL R21 G12
+ 0x5C580600, // 0061 MOVE R22 R3
+ 0x7C540200, // 0062 CALL R21 1
+ 0x04542A05, // 0063 SUB R21 R21 R5
+ 0x5C580A00, // 0064 MOVE R22 R5
+ 0x7C201C00, // 0065 CALL R8 14
+ 0x78220006, // 0066 JMPF R8 #006E
+ 0x8C24071A, // 0067 GETMET R9 R3 K26
+ 0x602C000C, // 0068 GETGBL R11 G12
+ 0x5C300600, // 0069 MOVE R12 R3
+ 0x7C2C0200, // 006A CALL R11 1
+ 0x042C1605, // 006B SUB R11 R11 R5
+ 0x7C240400, // 006C CALL R9 2
+ 0x70020004, // 006D JMP #0073
+ 0xB8260C00, // 006E GETNGBL R9 K6
+ 0x8C241307, // 006F GETMET R9 R9 K7
+ 0x582C001D, // 0070 LDCONST R11 K29
+ 0x58300012, // 0071 LDCONST R12 K18
+ 0x7C240600, // 0072 CALL R9 3
+ 0x80041000, // 0073 RET 1 R8
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
index c420713a7..3dd940012 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
@@ -7,9 +7,9 @@
extern const bclass be_class_Matter_MessageHandler;
/********************************************************************
-** Solidified function: send_response_frame
+** Solidified function: init
********************************************************************/
-be_local_closure(Matter_MessageHandler_send_response_frame, /* name */
+be_local_closure(Matter_MessageHandler_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
@@ -19,18 +19,41 @@ be_local_closure(Matter_MessageHandler_send_response_frame, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
+ ( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(msg_send),
+ /* K1 */ be_nested_str_weak(commissioning),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(Commisioning_Context),
+ /* K4 */ be_nested_str_weak(im),
+ /* K5 */ be_nested_str_weak(IM),
+ /* K6 */ be_nested_str_weak(control_message),
+ /* K7 */ be_nested_str_weak(Control_Message),
+ /* K8 */ be_nested_str_weak(_n_bytes),
}),
- be_str_weak(send_response_frame),
+ be_str_weak(init),
&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
+ ( &(const binstruction[21]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0xB80A0400, // 0001 GETNGBL R2 K2
+ 0x8C080503, // 0002 GETMET R2 R2 K3
+ 0x5C100000, // 0003 MOVE R4 R0
+ 0x7C080400, // 0004 CALL R2 2
+ 0x90020202, // 0005 SETMBR R0 K1 R2
+ 0xB80A0400, // 0006 GETNGBL R2 K2
+ 0x8C080505, // 0007 GETMET R2 R2 K5
+ 0x5C100200, // 0008 MOVE R4 R1
+ 0x7C080400, // 0009 CALL R2 2
+ 0x90020802, // 000A SETMBR R0 K4 R2
+ 0xB80A0400, // 000B GETNGBL R2 K2
+ 0x8C080507, // 000C GETMET R2 R2 K7
+ 0x5C100000, // 000D MOVE R4 R0
+ 0x7C080400, // 000E CALL R2 2
+ 0x90020C02, // 000F SETMBR R0 K6 R2
+ 0x60080015, // 0010 GETGBL R2 G21
+ 0x540E000F, // 0011 LDINT R3 16
+ 0x7C080200, // 0012 CALL R2 1
+ 0x90021002, // 0013 SETMBR R0 K8 R2
+ 0x80000000, // 0014 RET 0
})
)
);
@@ -50,27 +73,28 @@ be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
+ ( &(const bvalue[15]) { /* constants */
/* K0 */ be_nested_str_weak(x_flag_r),
/* K1 */ be_nested_str_weak(build_standalone_ack),
/* K2 */ be_nested_str_weak(encode_frame),
/* K3 */ be_nested_str_weak(encrypt),
/* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(log),
- /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
- /* K7 */ be_nested_str_weak(session),
- /* K8 */ be_nested_str_weak(local_session_id),
- /* K9 */ be_nested_str_weak(ack_message_counter),
- /* K10 */ be_nested_str_weak(message_counter),
- /* K11 */ be_nested_str_weak(_X7Breliable_X7D),
- /* K12 */ be_nested_str_weak(),
- /* K13 */ be_nested_str_weak(send_response_frame),
+ /* K5 */ be_nested_str_weak(loglevel),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
+ /* K8 */ be_nested_str_weak(session),
+ /* K9 */ be_nested_str_weak(local_session_id),
+ /* K10 */ be_nested_str_weak(ack_message_counter),
+ /* K11 */ be_nested_str_weak(message_counter),
+ /* K12 */ be_nested_str_weak(_X7Breliable_X7D),
+ /* K13 */ be_nested_str_weak(),
+ /* K14 */ be_nested_str_weak(send_response_frame),
}),
be_str_weak(send_encrypted_ack),
&be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
+ ( &(const binstruction[33]) { /* code */
0x880C0300, // 0000 GETMBR R3 R1 K0
- 0x780E0018, // 0001 JMPF R3 #001B
+ 0x780E001D, // 0001 JMPF R3 #0020
0x8C0C0301, // 0002 GETMET R3 R1 K1
0x5C140400, // 0003 MOVE R5 R2
0x7C0C0400, // 0004 CALL R3 2
@@ -80,23 +104,626 @@ be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */
0x7C100200, // 0008 CALL R4 1
0xB8120800, // 0009 GETNGBL R4 K4
0x8C100905, // 000A GETMET R4 R4 K5
- 0x60180018, // 000B GETGBL R6 G24
- 0x581C0006, // 000C LDCONST R7 K6
- 0x88200707, // 000D GETMBR R8 R3 K7
- 0x88201108, // 000E GETMBR R8 R8 K8
- 0x88240709, // 000F GETMBR R9 R3 K9
- 0x8828070A, // 0010 GETMBR R10 R3 K10
- 0x780A0001, // 0011 JMPF R2 #0014
- 0x582C000B, // 0012 LDCONST R11 K11
- 0x70020000, // 0013 JMP #0015
- 0x582C000C, // 0014 LDCONST R11 K12
- 0x7C180A00, // 0015 CALL R6 5
- 0x541E0003, // 0016 LDINT R7 4
- 0x7C100600, // 0017 CALL R4 3
- 0x8C10010D, // 0018 GETMET R4 R0 K13
- 0x5C180600, // 0019 MOVE R6 R3
- 0x7C100400, // 001A CALL R4 2
- 0x80000000, // 001B RET 0
+ 0x541A0003, // 000B LDINT R6 4
+ 0x7C100400, // 000C CALL R4 2
+ 0x7812000E, // 000D JMPF R4 #001D
+ 0xB8120800, // 000E GETNGBL R4 K4
+ 0x8C100906, // 000F GETMET R4 R4 K6
+ 0x60180018, // 0010 GETGBL R6 G24
+ 0x581C0007, // 0011 LDCONST R7 K7
+ 0x88200708, // 0012 GETMBR R8 R3 K8
+ 0x88201109, // 0013 GETMBR R8 R8 K9
+ 0x8824070A, // 0014 GETMBR R9 R3 K10
+ 0x8828070B, // 0015 GETMBR R10 R3 K11
+ 0x780A0001, // 0016 JMPF R2 #0019
+ 0x582C000C, // 0017 LDCONST R11 K12
+ 0x70020000, // 0018 JMP #001A
+ 0x582C000D, // 0019 LDCONST R11 K13
+ 0x7C180A00, // 001A CALL R6 5
+ 0x541E0003, // 001B LDINT R7 4
+ 0x7C100600, // 001C CALL R4 3
+ 0x8C10010E, // 001D GETMET R4 R0 K14
+ 0x5C180600, // 001E MOVE R6 R3
+ 0x7C100400, // 001F CALL R4 2
+ 0x80000000, // 0020 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: msg_received
+********************************************************************/
+be_local_closure(Matter_MessageHandler_msg_received, /* name */
+ be_nested_proto(
+ 19, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[70]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(profiler),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(msg_received),
+ /* K4 */ be_nested_str_weak(Frame),
+ /* K5 */ be_nested_str_weak(decode_header),
+ /* K6 */ be_nested_str_weak(sec_p),
+ /* K7 */ be_nested_str_weak(device),
+ /* K8 */ be_nested_str_weak(sessions),
+ /* K9 */ be_nested_str_weak(find_session_source_id_unsecure),
+ /* K10 */ be_nested_str_weak(source_node_id),
+ /* K11 */ be_nested_str_weak(control_message),
+ /* K12 */ be_nested_str_weak(process_incoming_control_message),
+ /* K13 */ be_nested_str_weak(local_session_id),
+ /* K14 */ be_const_int(0),
+ /* K15 */ be_nested_str_weak(sec_sesstype),
+ /* K16 */ be_nested_str_weak(_ip),
+ /* K17 */ be_nested_str_weak(_port),
+ /* K18 */ be_nested_str_weak(_message_handler),
+ /* K19 */ be_nested_str_weak(session),
+ /* K20 */ be_nested_str_weak(_counter_insecure_rcv),
+ /* K21 */ be_nested_str_weak(validate),
+ /* K22 */ be_nested_str_weak(message_counter),
+ /* K23 */ be_nested_str_weak(tasmota),
+ /* K24 */ be_nested_str_weak(loglevel),
+ /* K25 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i),
+ /* K26 */ be_nested_str_weak(val),
+ /* K27 */ be_nested_str_weak(send_simple_ack),
+ /* K28 */ be_nested_str_weak(decode_payload),
+ /* K29 */ be_nested_str_weak(received_ack),
+ /* K30 */ be_nested_str_weak(opcode),
+ /* K31 */ be_nested_str_weak(get_opcode_name),
+ /* K32 */ be_nested_str_weak(0x_X2502X),
+ /* K33 */ be_const_int(3),
+ /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K35 */ be_nested_str_weak(exchange_id),
+ /* K36 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K37 */ be_nested_str_weak(x_flag_r),
+ /* K38 */ be_nested_str_weak(_X7Breliable_X7D_X20),
+ /* K39 */ be_nested_str_weak(),
+ /* K40 */ be_nested_str_weak(ack_message_counter),
+ /* K41 */ be_nested_str_weak(commissioning),
+ /* K42 */ be_nested_str_weak(process_incoming),
+ /* K43 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i),
+ /* K44 */ be_nested_str_weak(get_session_by_local_session_id),
+ /* K45 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D),
+ /* K46 */ be_nested_str_weak(counter_rcv_validate),
+ /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20),
+ /* K48 */ be_nested_str_weak(_X20counter_X3D),
+ /* K49 */ be_nested_str_weak(counter_rcv),
+ /* K50 */ be_nested_str_weak(send_encrypted_ack),
+ /* K51 */ be_nested_str_weak(decrypt),
+ /* K52 */ be_nested_str_weak(msg_received_header_frame_decrypted),
+ /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A),
+ /* K54 */ be_nested_str_weak(protocol_id),
+ /* K55 */ be_nested_str_weak(_X20opcode_X3D),
+ /* K56 */ be_nested_str_weak(_X20exchange_id_X3D),
+ /* K57 */ be_nested_str_weak(im),
+ /* K58 */ be_nested_str_weak(process_incoming_ack),
+ /* K59 */ be_nested_str_weak(send_enqueued),
+ /* K60 */ be_const_int(1),
+ /* K61 */ be_nested_str_weak(process_IM_start),
+ /* K62 */ be_nested_str_weak(process_IM_end),
+ /* K63 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
+ /* K64 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
+ /* K65 */ be_nested_str_weak(_X3B),
+ /* K66 */ be_const_int(2),
+ /* K67 */ be_nested_str_weak(_debug_present),
+ /* K68 */ be_nested_str_weak(debug),
+ /* K69 */ be_nested_str_weak(traceback),
+ }),
+ be_str_weak(msg_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[365]) { /* code */
+ 0x50100000, // 0000 LDBOOL R4 0 0
+ 0xB8160000, // 0001 GETNGBL R5 K0
+ 0x88140B01, // 0002 GETMBR R5 R5 K1
+ 0x8C140B02, // 0003 GETMET R5 R5 K2
+ 0x581C0003, // 0004 LDCONST R7 K3
+ 0x7C140400, // 0005 CALL R5 2
+ 0xA802014B, // 0006 EXBLK 0 #0153
+ 0xB8160000, // 0007 GETNGBL R5 K0
+ 0x8C140B04, // 0008 GETMET R5 R5 K4
+ 0x5C1C0000, // 0009 MOVE R7 R0
+ 0x5C200200, // 000A MOVE R8 R1
+ 0x5C240400, // 000B MOVE R9 R2
+ 0x5C280600, // 000C MOVE R10 R3
+ 0x7C140A00, // 000D CALL R5 5
+ 0x8C180B05, // 000E GETMET R6 R5 K5
+ 0x7C180200, // 000F CALL R6 1
+ 0x5C1C0C00, // 0010 MOVE R7 R6
+ 0x741E0002, // 0011 JMPT R7 #0015
+ 0x501C0000, // 0012 LDBOOL R7 0 0
+ 0xA8040001, // 0013 EXBLK 1 1
+ 0x80040E00, // 0014 RET 1 R7
+ 0x881C0B06, // 0015 GETMBR R7 R5 K6
+ 0x781E000C, // 0016 JMPF R7 #0024
+ 0x881C0107, // 0017 GETMBR R7 R0 K7
+ 0x881C0F08, // 0018 GETMBR R7 R7 K8
+ 0x8C1C0F09, // 0019 GETMET R7 R7 K9
+ 0x88240B0A, // 001A GETMBR R9 R5 K10
+ 0x542A0059, // 001B LDINT R10 90
+ 0x7C1C0600, // 001C CALL R7 3
+ 0x8820010B, // 001D GETMBR R8 R0 K11
+ 0x8C20110C, // 001E GETMET R8 R8 K12
+ 0x5C280A00, // 001F MOVE R10 R5
+ 0x7C200400, // 0020 CALL R8 2
+ 0xA8040001, // 0021 EXBLK 1 1
+ 0x80041000, // 0022 RET 1 R8
+ 0x7002012A, // 0023 JMP #014F
+ 0x881C0B0D, // 0024 GETMBR R7 R5 K13
+ 0x1C1C0F0E, // 0025 EQ R7 R7 K14
+ 0x781E007F, // 0026 JMPF R7 #00A7
+ 0x881C0B0F, // 0027 GETMBR R7 R5 K15
+ 0x1C1C0F0E, // 0028 EQ R7 R7 K14
+ 0x781E007C, // 0029 JMPF R7 #00A7
+ 0x881C0107, // 002A GETMBR R7 R0 K7
+ 0x881C0F08, // 002B GETMBR R7 R7 K8
+ 0x8C1C0F09, // 002C GETMET R7 R7 K9
+ 0x88240B0A, // 002D GETMBR R9 R5 K10
+ 0x542A0059, // 002E LDINT R10 90
+ 0x7C1C0600, // 002F CALL R7 3
+ 0x780A0000, // 0030 JMPF R2 #0032
+ 0x901E2002, // 0031 SETMBR R7 K16 R2
+ 0x780E0000, // 0032 JMPF R3 #0034
+ 0x901E2203, // 0033 SETMBR R7 K17 R3
+ 0x901E2400, // 0034 SETMBR R7 K18 R0
+ 0x90162607, // 0035 SETMBR R5 K19 R7
+ 0x88200F14, // 0036 GETMBR R8 R7 K20
+ 0x8C201115, // 0037 GETMET R8 R8 K21
+ 0x88280B16, // 0038 GETMBR R10 R5 K22
+ 0x502C0000, // 0039 LDBOOL R11 0 0
+ 0x7C200600, // 003A CALL R8 3
+ 0x74220016, // 003B JMPT R8 #0053
+ 0xB8222E00, // 003C GETNGBL R8 K23
+ 0x8C201118, // 003D GETMET R8 R8 K24
+ 0x542A0003, // 003E LDINT R10 4
+ 0x7C200400, // 003F CALL R8 2
+ 0x7822000A, // 0040 JMPF R8 #004C
+ 0xB8222E00, // 0041 GETNGBL R8 K23
+ 0x8C201102, // 0042 GETMET R8 R8 K2
+ 0x60280018, // 0043 GETGBL R10 G24
+ 0x582C0019, // 0044 LDCONST R11 K25
+ 0x88300B16, // 0045 GETMBR R12 R5 K22
+ 0x88340F14, // 0046 GETMBR R13 R7 K20
+ 0x8C341B1A, // 0047 GETMET R13 R13 K26
+ 0x7C340200, // 0048 CALL R13 1
+ 0x7C280600, // 0049 CALL R10 3
+ 0x542E0003, // 004A LDINT R11 4
+ 0x7C200600, // 004B CALL R8 3
+ 0x8C20011B, // 004C GETMET R8 R0 K27
+ 0x5C280A00, // 004D MOVE R10 R5
+ 0x502C0000, // 004E LDBOOL R11 0 0
+ 0x7C200600, // 004F CALL R8 3
+ 0x50200000, // 0050 LDBOOL R8 0 0
+ 0xA8040001, // 0051 EXBLK 1 1
+ 0x80041000, // 0052 RET 1 R8
+ 0x8C200B1C, // 0053 GETMET R8 R5 K28
+ 0x7C200200, // 0054 CALL R8 1
+ 0x74220002, // 0055 JMPT R8 #0059
+ 0x50200000, // 0056 LDBOOL R8 0 0
+ 0xA8040001, // 0057 EXBLK 1 1
+ 0x80041000, // 0058 RET 1 R8
+ 0x88200107, // 0059 GETMBR R8 R0 K7
+ 0x8C20111D, // 005A GETMET R8 R8 K29
+ 0x5C280A00, // 005B MOVE R10 R5
+ 0x7C200400, // 005C CALL R8 2
+ 0x88200B1E, // 005D GETMBR R8 R5 K30
+ 0x5426000F, // 005E LDINT R9 16
+ 0x20201009, // 005F NE R8 R8 R9
+ 0x7822001D, // 0060 JMPF R8 #007F
+ 0xB8220000, // 0061 GETNGBL R8 K0
+ 0x8C20111F, // 0062 GETMET R8 R8 K31
+ 0x88280B1E, // 0063 GETMBR R10 R5 K30
+ 0x7C200400, // 0064 CALL R8 2
+ 0x5C241000, // 0065 MOVE R9 R8
+ 0x74260004, // 0066 JMPT R9 #006C
+ 0x60240018, // 0067 GETGBL R9 G24
+ 0x58280020, // 0068 LDCONST R10 K32
+ 0x882C0B1E, // 0069 GETMBR R11 R5 K30
+ 0x7C240400, // 006A CALL R9 2
+ 0x5C201200, // 006B MOVE R8 R9
+ 0xB8262E00, // 006C GETNGBL R9 K23
+ 0x8C241318, // 006D GETMET R9 R9 K24
+ 0x582C0021, // 006E LDCONST R11 K33
+ 0x7C240400, // 006F CALL R9 2
+ 0x7826000C, // 0070 JMPF R9 #007E
+ 0xB8262E00, // 0071 GETNGBL R9 K23
+ 0x8C241302, // 0072 GETMET R9 R9 K2
+ 0x602C0018, // 0073 GETGBL R11 G24
+ 0x58300022, // 0074 LDCONST R12 K34
+ 0x88340F0D, // 0075 GETMBR R13 R7 K13
+ 0x5C381000, // 0076 MOVE R14 R8
+ 0x883C0B16, // 0077 GETMBR R15 R5 K22
+ 0x88400B23, // 0078 GETMBR R16 R5 K35
+ 0x5C440400, // 0079 MOVE R17 R2
+ 0x5C480600, // 007A MOVE R18 R3
+ 0x7C2C0E00, // 007B CALL R11 7
+ 0x58300021, // 007C LDCONST R12 K33
+ 0x7C240600, // 007D CALL R9 3
+ 0x70020018, // 007E JMP #0098
+ 0xB8222E00, // 007F GETNGBL R8 K23
+ 0x8C201118, // 0080 GETMET R8 R8 K24
+ 0x542A0003, // 0081 LDINT R10 4
+ 0x7C200400, // 0082 CALL R8 2
+ 0x78220013, // 0083 JMPF R8 #0098
+ 0xB8222E00, // 0084 GETNGBL R8 K23
+ 0x8C201102, // 0085 GETMET R8 R8 K2
+ 0x60280018, // 0086 GETGBL R10 G24
+ 0x582C0024, // 0087 LDCONST R11 K36
+ 0x88300F0D, // 0088 GETMBR R12 R7 K13
+ 0x88340B16, // 0089 GETMBR R13 R5 K22
+ 0x88380B25, // 008A GETMBR R14 R5 K37
+ 0x783A0001, // 008B JMPF R14 #008E
+ 0x58380026, // 008C LDCONST R14 K38
+ 0x70020000, // 008D JMP #008F
+ 0x58380027, // 008E LDCONST R14 K39
+ 0x883C0B23, // 008F GETMBR R15 R5 K35
+ 0x60400008, // 0090 GETGBL R16 G8
+ 0x88440B28, // 0091 GETMBR R17 R5 K40
+ 0x7C400200, // 0092 CALL R16 1
+ 0x5C440400, // 0093 MOVE R17 R2
+ 0x5C480600, // 0094 MOVE R18 R3
+ 0x7C281000, // 0095 CALL R10 8
+ 0x542E0003, // 0096 LDINT R11 4
+ 0x7C200600, // 0097 CALL R8 3
+ 0x88200129, // 0098 GETMBR R8 R0 K41
+ 0x8C20112A, // 0099 GETMET R8 R8 K42
+ 0x5C280A00, // 009A MOVE R10 R5
+ 0x7C200400, // 009B CALL R8 2
+ 0x5C101000, // 009C MOVE R4 R8
+ 0x5C200800, // 009D MOVE R8 R4
+ 0x74220003, // 009E JMPT R8 #00A3
+ 0x8C20011B, // 009F GETMET R8 R0 K27
+ 0x5C280A00, // 00A0 MOVE R10 R5
+ 0x502C0000, // 00A1 LDBOOL R11 0 0
+ 0x7C200600, // 00A2 CALL R8 3
+ 0x50200200, // 00A3 LDBOOL R8 1 0
+ 0xA8040001, // 00A4 EXBLK 1 1
+ 0x80041000, // 00A5 RET 1 R8
+ 0x700200A7, // 00A6 JMP #014F
+ 0xB81E2E00, // 00A7 GETNGBL R7 K23
+ 0x8C1C0F18, // 00A8 GETMET R7 R7 K24
+ 0x54260003, // 00A9 LDINT R9 4
+ 0x7C1C0400, // 00AA CALL R7 2
+ 0x781E0008, // 00AB JMPF R7 #00B5
+ 0xB81E2E00, // 00AC GETNGBL R7 K23
+ 0x8C1C0F02, // 00AD GETMET R7 R7 K2
+ 0x60240018, // 00AE GETGBL R9 G24
+ 0x5828002B, // 00AF LDCONST R10 K43
+ 0x882C0B0D, // 00B0 GETMBR R11 R5 K13
+ 0x88300B16, // 00B1 GETMBR R12 R5 K22
+ 0x7C240600, // 00B2 CALL R9 3
+ 0x542A0003, // 00B3 LDINT R10 4
+ 0x7C1C0600, // 00B4 CALL R7 3
+ 0x881C0107, // 00B5 GETMBR R7 R0 K7
+ 0x881C0F08, // 00B6 GETMBR R7 R7 K8
+ 0x8C1C0F2C, // 00B7 GETMET R7 R7 K44
+ 0x88240B0D, // 00B8 GETMBR R9 R5 K13
+ 0x7C1C0400, // 00B9 CALL R7 2
+ 0x4C200000, // 00BA LDNIL R8
+ 0x1C200E08, // 00BB EQ R8 R7 R8
+ 0x7822000A, // 00BC JMPF R8 #00C8
+ 0xB8222E00, // 00BD GETNGBL R8 K23
+ 0x8C201102, // 00BE GETMET R8 R8 K2
+ 0x60280008, // 00BF GETGBL R10 G8
+ 0x882C0B0D, // 00C0 GETMBR R11 R5 K13
+ 0x7C280200, // 00C1 CALL R10 1
+ 0x002A5A0A, // 00C2 ADD R10 K45 R10
+ 0x582C0021, // 00C3 LDCONST R11 K33
+ 0x7C200600, // 00C4 CALL R8 3
+ 0x50200000, // 00C5 LDBOOL R8 0 0
+ 0xA8040001, // 00C6 EXBLK 1 1
+ 0x80041000, // 00C7 RET 1 R8
+ 0x780A0000, // 00C8 JMPF R2 #00CA
+ 0x901E2002, // 00C9 SETMBR R7 K16 R2
+ 0x780E0000, // 00CA JMPF R3 #00CC
+ 0x901E2203, // 00CB SETMBR R7 K17 R3
+ 0x901E2400, // 00CC SETMBR R7 K18 R0
+ 0x90162607, // 00CD SETMBR R5 K19 R7
+ 0x8C200F2E, // 00CE GETMET R8 R7 K46
+ 0x88280B16, // 00CF GETMBR R10 R5 K22
+ 0x502C0200, // 00D0 LDBOOL R11 1 0
+ 0x7C200600, // 00D1 CALL R8 3
+ 0x74220018, // 00D2 JMPT R8 #00EC
+ 0xB8222E00, // 00D3 GETNGBL R8 K23
+ 0x8C201118, // 00D4 GETMET R8 R8 K24
+ 0x58280021, // 00D5 LDCONST R10 K33
+ 0x7C200400, // 00D6 CALL R8 2
+ 0x7822000C, // 00D7 JMPF R8 #00E5
+ 0xB8222E00, // 00D8 GETNGBL R8 K23
+ 0x8C201102, // 00D9 GETMET R8 R8 K2
+ 0x60280008, // 00DA GETGBL R10 G8
+ 0x882C0B16, // 00DB GETMBR R11 R5 K22
+ 0x7C280200, // 00DC CALL R10 1
+ 0x002A5E0A, // 00DD ADD R10 K47 R10
+ 0x00281530, // 00DE ADD R10 R10 K48
+ 0x602C0008, // 00DF GETGBL R11 G8
+ 0x88300F31, // 00E0 GETMBR R12 R7 K49
+ 0x7C2C0200, // 00E1 CALL R11 1
+ 0x0028140B, // 00E2 ADD R10 R10 R11
+ 0x582C0021, // 00E3 LDCONST R11 K33
+ 0x7C200600, // 00E4 CALL R8 3
+ 0x8C200132, // 00E5 GETMET R8 R0 K50
+ 0x5C280A00, // 00E6 MOVE R10 R5
+ 0x502C0000, // 00E7 LDBOOL R11 0 0
+ 0x7C200600, // 00E8 CALL R8 3
+ 0x50200000, // 00E9 LDBOOL R8 0 0
+ 0xA8040001, // 00EA EXBLK 1 1
+ 0x80041000, // 00EB RET 1 R8
+ 0x8C200B33, // 00EC GETMET R8 R5 K51
+ 0x7C200200, // 00ED CALL R8 1
+ 0xB8260000, // 00EE GETNGBL R9 K0
+ 0x88241301, // 00EF GETMBR R9 R9 K1
+ 0x8C241302, // 00F0 GETMET R9 R9 K2
+ 0x582C0034, // 00F1 LDCONST R11 K52
+ 0x7C240400, // 00F2 CALL R9 2
+ 0x5C241000, // 00F3 MOVE R9 R8
+ 0x74260002, // 00F4 JMPT R9 #00F8
+ 0x50240000, // 00F5 LDBOOL R9 0 0
+ 0xA8040001, // 00F6 EXBLK 1 1
+ 0x80041200, // 00F7 RET 1 R9
+ 0x8C240B1C, // 00F8 GETMET R9 R5 K28
+ 0x7C240200, // 00F9 CALL R9 1
+ 0xB8262E00, // 00FA GETNGBL R9 K23
+ 0x8C241318, // 00FB GETMET R9 R9 K24
+ 0x542E0003, // 00FC LDINT R11 4
+ 0x7C240400, // 00FD CALL R9 2
+ 0x78260013, // 00FE JMPF R9 #0113
+ 0xB8262E00, // 00FF GETNGBL R9 K23
+ 0x8C241302, // 0100 GETMET R9 R9 K2
+ 0x602C0008, // 0101 GETGBL R11 G8
+ 0x88300B36, // 0102 GETMBR R12 R5 K54
+ 0x7C2C0200, // 0103 CALL R11 1
+ 0x002E6A0B, // 0104 ADD R11 K53 R11
+ 0x002C1737, // 0105 ADD R11 R11 K55
+ 0x60300008, // 0106 GETGBL R12 G8
+ 0x88340B1E, // 0107 GETMBR R13 R5 K30
+ 0x7C300200, // 0108 CALL R12 1
+ 0x002C160C, // 0109 ADD R11 R11 R12
+ 0x002C1738, // 010A ADD R11 R11 K56
+ 0x60300008, // 010B GETGBL R12 G8
+ 0x88340B23, // 010C GETMBR R13 R5 K35
+ 0x543AFFFE, // 010D LDINT R14 65535
+ 0x2C341A0E, // 010E AND R13 R13 R14
+ 0x7C300200, // 010F CALL R12 1
+ 0x002C160C, // 0110 ADD R11 R11 R12
+ 0x54320003, // 0111 LDINT R12 4
+ 0x7C240600, // 0112 CALL R9 3
+ 0x88240107, // 0113 GETMBR R9 R0 K7
+ 0x8C24131D, // 0114 GETMET R9 R9 K29
+ 0x5C2C0A00, // 0115 MOVE R11 R5
+ 0x7C240400, // 0116 CALL R9 2
+ 0x88240B36, // 0117 GETMBR R9 R5 K54
+ 0x1C28130E, // 0118 EQ R10 R9 K14
+ 0x782A000F, // 0119 JMPF R10 #012A
+ 0x88280B1E, // 011A GETMBR R10 R5 K30
+ 0x542E000F, // 011B LDINT R11 16
+ 0x1C28140B, // 011C EQ R10 R10 R11
+ 0x782A0009, // 011D JMPF R10 #0128
+ 0x88280139, // 011E GETMBR R10 R0 K57
+ 0x8C28153A, // 011F GETMET R10 R10 K58
+ 0x5C300A00, // 0120 MOVE R12 R5
+ 0x7C280400, // 0121 CALL R10 2
+ 0x5C101400, // 0122 MOVE R4 R10
+ 0x78120003, // 0123 JMPF R4 #0128
+ 0x88280139, // 0124 GETMBR R10 R0 K57
+ 0x8C28153B, // 0125 GETMET R10 R10 K59
+ 0x5C300000, // 0126 MOVE R12 R0
+ 0x7C280400, // 0127 CALL R10 2
+ 0x50100200, // 0128 LDBOOL R4 1 0
+ 0x70020024, // 0129 JMP #014F
+ 0x1C28133C, // 012A EQ R10 R9 K60
+ 0x782A001A, // 012B JMPF R10 #0147
+ 0xB82A0000, // 012C GETNGBL R10 K0
+ 0x88281501, // 012D GETMBR R10 R10 K1
+ 0x8C281502, // 012E GETMET R10 R10 K2
+ 0x5830003D, // 012F LDCONST R12 K61
+ 0x7C280400, // 0130 CALL R10 2
+ 0x88280139, // 0131 GETMBR R10 R0 K57
+ 0x8C28152A, // 0132 GETMET R10 R10 K42
+ 0x5C300A00, // 0133 MOVE R12 R5
+ 0x7C280400, // 0134 CALL R10 2
+ 0x5C101400, // 0135 MOVE R4 R10
+ 0xB82A0000, // 0136 GETNGBL R10 K0
+ 0x88281501, // 0137 GETMBR R10 R10 K1
+ 0x8C281502, // 0138 GETMET R10 R10 K2
+ 0x5830003E, // 0139 LDCONST R12 K62
+ 0x7C280400, // 013A CALL R10 2
+ 0x78120004, // 013B JMPF R4 #0141
+ 0x88280139, // 013C GETMBR R10 R0 K57
+ 0x8C28153B, // 013D GETMET R10 R10 K59
+ 0x5C300000, // 013E MOVE R12 R0
+ 0x7C280400, // 013F CALL R10 2
+ 0x70020003, // 0140 JMP #0145
+ 0x8C280132, // 0141 GETMET R10 R0 K50
+ 0x5C300A00, // 0142 MOVE R12 R5
+ 0x50340200, // 0143 LDBOOL R13 1 0
+ 0x7C280600, // 0144 CALL R10 3
+ 0x50100200, // 0145 LDBOOL R4 1 0
+ 0x70020007, // 0146 JMP #014F
+ 0xB82A2E00, // 0147 GETNGBL R10 K23
+ 0x8C281502, // 0148 GETMET R10 R10 K2
+ 0x60300008, // 0149 GETGBL R12 G8
+ 0x5C341200, // 014A MOVE R13 R9
+ 0x7C300200, // 014B CALL R12 1
+ 0x00327E0C, // 014C ADD R12 K63 R12
+ 0x58340021, // 014D LDCONST R13 K33
+ 0x7C280600, // 014E CALL R10 3
+ 0xA8040001, // 014F EXBLK 1 1
+ 0x80040800, // 0150 RET 1 R4
+ 0xA8040001, // 0151 EXBLK 1 1
+ 0x70020018, // 0152 JMP #016C
+ 0xAC140002, // 0153 CATCH R5 0 2
+ 0x70020015, // 0154 JMP #016B
+ 0xB81E2E00, // 0155 GETNGBL R7 K23
+ 0x8C1C0F02, // 0156 GETMET R7 R7 K2
+ 0x60240008, // 0157 GETGBL R9 G8
+ 0x5C280A00, // 0158 MOVE R10 R5
+ 0x7C240200, // 0159 CALL R9 1
+ 0x00268009, // 015A ADD R9 K64 R9
+ 0x00241341, // 015B ADD R9 R9 K65
+ 0x60280008, // 015C GETGBL R10 G8
+ 0x5C2C0C00, // 015D MOVE R11 R6
+ 0x7C280200, // 015E CALL R10 1
+ 0x0024120A, // 015F ADD R9 R9 R10
+ 0x58280042, // 0160 LDCONST R10 K66
+ 0x7C1C0600, // 0161 CALL R7 3
+ 0xB81E2E00, // 0162 GETNGBL R7 K23
+ 0x881C0F43, // 0163 GETMBR R7 R7 K67
+ 0x781E0002, // 0164 JMPF R7 #0168
+ 0xA41E8800, // 0165 IMPORT R7 K68
+ 0x8C200F45, // 0166 GETMET R8 R7 K69
+ 0x7C200200, // 0167 CALL R8 1
+ 0x501C0000, // 0168 LDBOOL R7 0 0
+ 0x80040E00, // 0169 RET 1 R7
+ 0x70020000, // 016A JMP #016C
+ 0xB0080000, // 016B RAISE 2 R0 R0
+ 0x80000000, // 016C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_response_frame
+********************************************************************/
+be_local_closure(Matter_MessageHandler_send_response_frame, /* 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[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(profiler),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(send_response_frame),
+ /* K4 */ be_nested_str_weak(device),
+ /* K5 */ be_nested_str_weak(msg_send),
+ }),
+ be_str_weak(send_response_frame),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x88080501, // 0001 GETMBR R2 R2 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x58100003, // 0003 LDCONST R4 K3
+ 0x7C080400, // 0004 CALL R2 2
+ 0x88080104, // 0005 GETMBR R2 R0 K4
+ 0x8C080505, // 0006 GETMET R2 R2 K5
+ 0x5C100200, // 0007 MOVE R4 R1
+ 0x7C080400, // 0008 CALL R2 2
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_simple_ack
+********************************************************************/
+be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 3, /* 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(x_flag_r),
+ /* K1 */ be_nested_str_weak(build_standalone_ack),
+ /* K2 */ be_nested_str_weak(encode_frame),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(loglevel),
+ /* K5 */ be_nested_str_weak(log),
+ /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
+ /* K7 */ be_nested_str_weak(session),
+ /* K8 */ be_nested_str_weak(local_session_id),
+ /* K9 */ be_nested_str_weak(ack_message_counter),
+ /* K10 */ be_nested_str_weak(message_counter),
+ /* K11 */ be_nested_str_weak(_X7Breliable_X7D),
+ /* K12 */ be_nested_str_weak(),
+ /* K13 */ be_nested_str_weak(send_response_frame),
+ }),
+ be_str_weak(send_simple_ack),
+ &be_const_str_solidified,
+ ( &(const binstruction[31]) { /* code */
+ 0x880C0300, // 0000 GETMBR R3 R1 K0
+ 0x780E001B, // 0001 JMPF R3 #001E
+ 0x8C0C0301, // 0002 GETMET R3 R1 K1
+ 0x5C140400, // 0003 MOVE R5 R2
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0x8C100702, // 0005 GETMET R4 R3 K2
+ 0x7C100200, // 0006 CALL R4 1
+ 0xB8120600, // 0007 GETNGBL R4 K3
+ 0x8C100904, // 0008 GETMET R4 R4 K4
+ 0x541A0003, // 0009 LDINT R6 4
+ 0x7C100400, // 000A CALL R4 2
+ 0x7812000E, // 000B JMPF R4 #001B
+ 0xB8120600, // 000C GETNGBL R4 K3
+ 0x8C100905, // 000D GETMET R4 R4 K5
+ 0x60180018, // 000E GETGBL R6 G24
+ 0x581C0006, // 000F LDCONST R7 K6
+ 0x88200707, // 0010 GETMBR R8 R3 K7
+ 0x88201108, // 0011 GETMBR R8 R8 K8
+ 0x88240709, // 0012 GETMBR R9 R3 K9
+ 0x8828070A, // 0013 GETMBR R10 R3 K10
+ 0x780A0001, // 0014 JMPF R2 #0017
+ 0x582C000B, // 0015 LDCONST R11 K11
+ 0x70020000, // 0016 JMP #0018
+ 0x582C000C, // 0017 LDCONST R11 K12
+ 0x7C180A00, // 0018 CALL R6 5
+ 0x541E0003, // 0019 LDINT R7 4
+ 0x7C100600, // 001A CALL R4 3
+ 0x8C10010D, // 001B GETMET R4 R0 K13
+ 0x5C180600, // 001C MOVE R6 R3
+ 0x7C100400, // 001D CALL R4 2
+ 0x80000000, // 001E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_250ms
+********************************************************************/
+be_local_closure(Matter_MessageHandler_every_250ms, /* 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(im),
+ /* K1 */ be_nested_str_weak(every_250ms),
+ }),
+ be_str_weak(every_250ms),
+ &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
+ 0x80000000, // 0003 RET 0
})
)
);
@@ -137,580 +764,26 @@ be_local_closure(Matter_MessageHandler_every_second, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: send_simple_ack
-********************************************************************/
-be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */
- be_nested_proto(
- 12, /* nstack */
- 3, /* 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(x_flag_r),
- /* K1 */ be_nested_str_weak(build_standalone_ack),
- /* K2 */ be_nested_str_weak(encode_frame),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(log),
- /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
- /* K6 */ be_nested_str_weak(session),
- /* K7 */ be_nested_str_weak(local_session_id),
- /* K8 */ be_nested_str_weak(ack_message_counter),
- /* K9 */ be_nested_str_weak(message_counter),
- /* K10 */ be_nested_str_weak(_X7Breliable_X7D),
- /* K11 */ be_nested_str_weak(),
- /* K12 */ be_nested_str_weak(send_response_frame),
- }),
- be_str_weak(send_simple_ack),
- &be_const_str_solidified,
- ( &(const binstruction[26]) { /* code */
- 0x880C0300, // 0000 GETMBR R3 R1 K0
- 0x780E0016, // 0001 JMPF R3 #0019
- 0x8C0C0301, // 0002 GETMET R3 R1 K1
- 0x5C140400, // 0003 MOVE R5 R2
- 0x7C0C0400, // 0004 CALL R3 2
- 0x8C100702, // 0005 GETMET R4 R3 K2
- 0x7C100200, // 0006 CALL R4 1
- 0xB8120600, // 0007 GETNGBL R4 K3
- 0x8C100904, // 0008 GETMET R4 R4 K4
- 0x60180018, // 0009 GETGBL R6 G24
- 0x581C0005, // 000A LDCONST R7 K5
- 0x88200706, // 000B GETMBR R8 R3 K6
- 0x88201107, // 000C GETMBR R8 R8 K7
- 0x88240708, // 000D GETMBR R9 R3 K8
- 0x88280709, // 000E GETMBR R10 R3 K9
- 0x780A0001, // 000F JMPF R2 #0012
- 0x582C000A, // 0010 LDCONST R11 K10
- 0x70020000, // 0011 JMP #0013
- 0x582C000B, // 0012 LDCONST R11 K11
- 0x7C180A00, // 0013 CALL R6 5
- 0x541E0003, // 0014 LDINT R7 4
- 0x7C100600, // 0015 CALL R4 3
- 0x8C10010C, // 0016 GETMET R4 R0 K12
- 0x5C180600, // 0017 MOVE R6 R3
- 0x7C100400, // 0018 CALL R4 2
- 0x80000000, // 0019 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: msg_received
-********************************************************************/
-be_local_closure(Matter_MessageHandler_msg_received, /* name */
- be_nested_proto(
- 19, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[66]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Frame),
- /* K2 */ be_nested_str_weak(decode_header),
- /* K3 */ be_nested_str_weak(sec_p),
- /* K4 */ be_nested_str_weak(device),
- /* K5 */ be_nested_str_weak(sessions),
- /* K6 */ be_nested_str_weak(find_session_source_id_unsecure),
- /* K7 */ be_nested_str_weak(source_node_id),
- /* K8 */ be_nested_str_weak(control_message),
- /* K9 */ be_nested_str_weak(process_incoming_control_message),
- /* K10 */ be_nested_str_weak(local_session_id),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(sec_sesstype),
- /* K13 */ be_nested_str_weak(_ip),
- /* K14 */ be_nested_str_weak(_port),
- /* K15 */ be_nested_str_weak(_message_handler),
- /* K16 */ be_nested_str_weak(session),
- /* K17 */ be_nested_str_weak(_counter_insecure_rcv),
- /* K18 */ be_nested_str_weak(validate),
- /* K19 */ be_nested_str_weak(message_counter),
- /* K20 */ be_nested_str_weak(tasmota),
- /* K21 */ be_nested_str_weak(log),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i),
- /* K23 */ be_nested_str_weak(val),
- /* K24 */ be_nested_str_weak(send_simple_ack),
- /* K25 */ be_nested_str_weak(decode_payload),
- /* K26 */ be_nested_str_weak(received_ack),
- /* K27 */ be_nested_str_weak(opcode),
- /* K28 */ be_nested_str_weak(get_opcode_name),
- /* K29 */ be_nested_str_weak(0x_X2502X),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i),
- /* K31 */ be_nested_str_weak(exchange_id),
- /* K32 */ be_const_int(3),
- /* K33 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
- /* K34 */ be_nested_str_weak(x_flag_r),
- /* K35 */ be_nested_str_weak(_X7Breliable_X7D_X20),
- /* K36 */ be_nested_str_weak(),
- /* K37 */ be_nested_str_weak(ack_message_counter),
- /* K38 */ be_nested_str_weak(commissioning),
- /* K39 */ be_nested_str_weak(process_incoming),
- /* K40 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i),
- /* K41 */ be_nested_str_weak(get_session_by_local_session_id),
- /* K42 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D),
- /* K43 */ be_nested_str_weak(counter_rcv_validate),
- /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20),
- /* K45 */ be_nested_str_weak(_X20counter_X3D),
- /* K46 */ be_nested_str_weak(counter_rcv),
- /* K47 */ be_nested_str_weak(send_encrypted_ack),
- /* K48 */ be_nested_str_weak(decrypt),
- /* K49 */ be_nested_str_weak(raw),
- /* K50 */ be_nested_str_weak(payload_idx),
- /* K51 */ be_const_int(1),
- /* K52 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A),
- /* K53 */ be_nested_str_weak(protocol_id),
- /* K54 */ be_nested_str_weak(_X20opcode_X3D),
- /* K55 */ be_nested_str_weak(_X20exchange_id_X3D),
- /* K56 */ be_nested_str_weak(im),
- /* K57 */ be_nested_str_weak(process_incoming_ack),
- /* K58 */ be_nested_str_weak(send_enqueued),
- /* K59 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
- /* K60 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
- /* K61 */ be_nested_str_weak(_X3B),
- /* K62 */ be_const_int(2),
- /* K63 */ be_nested_str_weak(_debug_present),
- /* K64 */ be_nested_str_weak(debug),
- /* K65 */ be_nested_str_weak(traceback),
- }),
- be_str_weak(msg_received),
- &be_const_str_solidified,
- ( &(const binstruction[323]) { /* code */
- 0x50100000, // 0000 LDBOOL R4 0 0
- 0xA8020126, // 0001 EXBLK 0 #0129
- 0xB8160000, // 0002 GETNGBL R5 K0
- 0x8C140B01, // 0003 GETMET R5 R5 K1
- 0x5C1C0000, // 0004 MOVE R7 R0
- 0x5C200200, // 0005 MOVE R8 R1
- 0x5C240400, // 0006 MOVE R9 R2
- 0x5C280600, // 0007 MOVE R10 R3
- 0x7C140A00, // 0008 CALL R5 5
- 0x8C180B02, // 0009 GETMET R6 R5 K2
- 0x7C180200, // 000A CALL R6 1
- 0x5C1C0C00, // 000B MOVE R7 R6
- 0x741E0002, // 000C JMPT R7 #0010
- 0x501C0000, // 000D LDBOOL R7 0 0
- 0xA8040001, // 000E EXBLK 1 1
- 0x80040E00, // 000F RET 1 R7
- 0x881C0B03, // 0010 GETMBR R7 R5 K3
- 0x781E000C, // 0011 JMPF R7 #001F
- 0x881C0104, // 0012 GETMBR R7 R0 K4
- 0x881C0F05, // 0013 GETMBR R7 R7 K5
- 0x8C1C0F06, // 0014 GETMET R7 R7 K6
- 0x88240B07, // 0015 GETMBR R9 R5 K7
- 0x542A0059, // 0016 LDINT R10 90
- 0x7C1C0600, // 0017 CALL R7 3
- 0x88200108, // 0018 GETMBR R8 R0 K8
- 0x8C201109, // 0019 GETMET R8 R8 K9
- 0x5C280A00, // 001A MOVE R10 R5
- 0x7C200400, // 001B CALL R8 2
- 0xA8040001, // 001C EXBLK 1 1
- 0x80041000, // 001D RET 1 R8
- 0x70020105, // 001E JMP #0125
- 0x881C0B0A, // 001F GETMBR R7 R5 K10
- 0x1C1C0F0B, // 0020 EQ R7 R7 K11
- 0x781E0070, // 0021 JMPF R7 #0093
- 0x881C0B0C, // 0022 GETMBR R7 R5 K12
- 0x1C1C0F0B, // 0023 EQ R7 R7 K11
- 0x781E006D, // 0024 JMPF R7 #0093
- 0x881C0104, // 0025 GETMBR R7 R0 K4
- 0x881C0F05, // 0026 GETMBR R7 R7 K5
- 0x8C1C0F06, // 0027 GETMET R7 R7 K6
- 0x88240B07, // 0028 GETMBR R9 R5 K7
- 0x542A0059, // 0029 LDINT R10 90
- 0x7C1C0600, // 002A CALL R7 3
- 0x780A0000, // 002B JMPF R2 #002D
- 0x901E1A02, // 002C SETMBR R7 K13 R2
- 0x780E0000, // 002D JMPF R3 #002F
- 0x901E1C03, // 002E SETMBR R7 K14 R3
- 0x901E1E00, // 002F SETMBR R7 K15 R0
- 0x90162007, // 0030 SETMBR R5 K16 R7
- 0x88200F11, // 0031 GETMBR R8 R7 K17
- 0x8C201112, // 0032 GETMET R8 R8 K18
- 0x88280B13, // 0033 GETMBR R10 R5 K19
- 0x502C0000, // 0034 LDBOOL R11 0 0
- 0x7C200600, // 0035 CALL R8 3
- 0x74220011, // 0036 JMPT R8 #0049
- 0xB8222800, // 0037 GETNGBL R8 K20
- 0x8C201115, // 0038 GETMET R8 R8 K21
- 0x60280018, // 0039 GETGBL R10 G24
- 0x582C0016, // 003A LDCONST R11 K22
- 0x88300B13, // 003B GETMBR R12 R5 K19
- 0x88340F11, // 003C GETMBR R13 R7 K17
- 0x8C341B17, // 003D GETMET R13 R13 K23
- 0x7C340200, // 003E CALL R13 1
- 0x7C280600, // 003F CALL R10 3
- 0x542E0003, // 0040 LDINT R11 4
- 0x7C200600, // 0041 CALL R8 3
- 0x8C200118, // 0042 GETMET R8 R0 K24
- 0x5C280A00, // 0043 MOVE R10 R5
- 0x502C0000, // 0044 LDBOOL R11 0 0
- 0x7C200600, // 0045 CALL R8 3
- 0x50200000, // 0046 LDBOOL R8 0 0
- 0xA8040001, // 0047 EXBLK 1 1
- 0x80041000, // 0048 RET 1 R8
- 0x8C200B19, // 0049 GETMET R8 R5 K25
- 0x7C200200, // 004A CALL R8 1
- 0x74220002, // 004B JMPT R8 #004F
- 0x50200000, // 004C LDBOOL R8 0 0
- 0xA8040001, // 004D EXBLK 1 1
- 0x80041000, // 004E RET 1 R8
- 0x88200104, // 004F GETMBR R8 R0 K4
- 0x8C20111A, // 0050 GETMET R8 R8 K26
- 0x5C280A00, // 0051 MOVE R10 R5
- 0x7C200400, // 0052 CALL R8 2
- 0x88200B1B, // 0053 GETMBR R8 R5 K27
- 0x5426000F, // 0054 LDINT R9 16
- 0x20201009, // 0055 NE R8 R8 R9
- 0x78220018, // 0056 JMPF R8 #0070
- 0xB8220000, // 0057 GETNGBL R8 K0
- 0x8C20111C, // 0058 GETMET R8 R8 K28
- 0x88280B1B, // 0059 GETMBR R10 R5 K27
- 0x7C200400, // 005A CALL R8 2
- 0x5C241000, // 005B MOVE R9 R8
- 0x74260004, // 005C JMPT R9 #0062
- 0x60240018, // 005D GETGBL R9 G24
- 0x5828001D, // 005E LDCONST R10 K29
- 0x882C0B1B, // 005F GETMBR R11 R5 K27
- 0x7C240400, // 0060 CALL R9 2
- 0x5C201200, // 0061 MOVE R8 R9
- 0xB8262800, // 0062 GETNGBL R9 K20
- 0x8C241315, // 0063 GETMET R9 R9 K21
- 0x602C0018, // 0064 GETGBL R11 G24
- 0x5830001E, // 0065 LDCONST R12 K30
- 0x88340F0A, // 0066 GETMBR R13 R7 K10
- 0x5C381000, // 0067 MOVE R14 R8
- 0x883C0B13, // 0068 GETMBR R15 R5 K19
- 0x88400B1F, // 0069 GETMBR R16 R5 K31
- 0x5C440400, // 006A MOVE R17 R2
- 0x5C480600, // 006B MOVE R18 R3
- 0x7C2C0E00, // 006C CALL R11 7
- 0x58300020, // 006D LDCONST R12 K32
- 0x7C240600, // 006E CALL R9 3
- 0x70020013, // 006F JMP #0084
- 0xB8222800, // 0070 GETNGBL R8 K20
- 0x8C201115, // 0071 GETMET R8 R8 K21
- 0x60280018, // 0072 GETGBL R10 G24
- 0x582C0021, // 0073 LDCONST R11 K33
- 0x88300F0A, // 0074 GETMBR R12 R7 K10
- 0x88340B13, // 0075 GETMBR R13 R5 K19
- 0x88380B22, // 0076 GETMBR R14 R5 K34
- 0x783A0001, // 0077 JMPF R14 #007A
- 0x58380023, // 0078 LDCONST R14 K35
- 0x70020000, // 0079 JMP #007B
- 0x58380024, // 007A LDCONST R14 K36
- 0x883C0B1F, // 007B GETMBR R15 R5 K31
- 0x60400008, // 007C GETGBL R16 G8
- 0x88440B25, // 007D GETMBR R17 R5 K37
- 0x7C400200, // 007E CALL R16 1
- 0x5C440400, // 007F MOVE R17 R2
- 0x5C480600, // 0080 MOVE R18 R3
- 0x7C281000, // 0081 CALL R10 8
- 0x542E0003, // 0082 LDINT R11 4
- 0x7C200600, // 0083 CALL R8 3
- 0x88200126, // 0084 GETMBR R8 R0 K38
- 0x8C201127, // 0085 GETMET R8 R8 K39
- 0x5C280A00, // 0086 MOVE R10 R5
- 0x7C200400, // 0087 CALL R8 2
- 0x5C101000, // 0088 MOVE R4 R8
- 0x5C200800, // 0089 MOVE R8 R4
- 0x74220003, // 008A JMPT R8 #008F
- 0x8C200118, // 008B GETMET R8 R0 K24
- 0x5C280A00, // 008C MOVE R10 R5
- 0x502C0000, // 008D LDBOOL R11 0 0
- 0x7C200600, // 008E CALL R8 3
- 0x50200200, // 008F LDBOOL R8 1 0
- 0xA8040001, // 0090 EXBLK 1 1
- 0x80041000, // 0091 RET 1 R8
- 0x70020091, // 0092 JMP #0125
- 0xB81E2800, // 0093 GETNGBL R7 K20
- 0x8C1C0F15, // 0094 GETMET R7 R7 K21
- 0x60240018, // 0095 GETGBL R9 G24
- 0x58280028, // 0096 LDCONST R10 K40
- 0x882C0B0A, // 0097 GETMBR R11 R5 K10
- 0x88300B13, // 0098 GETMBR R12 R5 K19
- 0x7C240600, // 0099 CALL R9 3
- 0x542A0003, // 009A LDINT R10 4
- 0x7C1C0600, // 009B CALL R7 3
- 0x881C0104, // 009C GETMBR R7 R0 K4
- 0x881C0F05, // 009D GETMBR R7 R7 K5
- 0x8C1C0F29, // 009E GETMET R7 R7 K41
- 0x88240B0A, // 009F GETMBR R9 R5 K10
- 0x7C1C0400, // 00A0 CALL R7 2
- 0x4C200000, // 00A1 LDNIL R8
- 0x1C200E08, // 00A2 EQ R8 R7 R8
- 0x7822000A, // 00A3 JMPF R8 #00AF
- 0xB8222800, // 00A4 GETNGBL R8 K20
- 0x8C201115, // 00A5 GETMET R8 R8 K21
- 0x60280008, // 00A6 GETGBL R10 G8
- 0x882C0B0A, // 00A7 GETMBR R11 R5 K10
- 0x7C280200, // 00A8 CALL R10 1
- 0x002A540A, // 00A9 ADD R10 K42 R10
- 0x582C0020, // 00AA LDCONST R11 K32
- 0x7C200600, // 00AB CALL R8 3
- 0x50200000, // 00AC LDBOOL R8 0 0
- 0xA8040001, // 00AD EXBLK 1 1
- 0x80041000, // 00AE RET 1 R8
- 0x780A0000, // 00AF JMPF R2 #00B1
- 0x901E1A02, // 00B0 SETMBR R7 K13 R2
- 0x780E0000, // 00B1 JMPF R3 #00B3
- 0x901E1C03, // 00B2 SETMBR R7 K14 R3
- 0x901E1E00, // 00B3 SETMBR R7 K15 R0
- 0x90162007, // 00B4 SETMBR R5 K16 R7
- 0x8C200F2B, // 00B5 GETMET R8 R7 K43
- 0x88280B13, // 00B6 GETMBR R10 R5 K19
- 0x502C0200, // 00B7 LDBOOL R11 1 0
- 0x7C200600, // 00B8 CALL R8 3
- 0x74220013, // 00B9 JMPT R8 #00CE
- 0xB8222800, // 00BA GETNGBL R8 K20
- 0x8C201115, // 00BB GETMET R8 R8 K21
- 0x60280008, // 00BC GETGBL R10 G8
- 0x882C0B13, // 00BD GETMBR R11 R5 K19
- 0x7C280200, // 00BE CALL R10 1
- 0x002A580A, // 00BF ADD R10 K44 R10
- 0x0028152D, // 00C0 ADD R10 R10 K45
- 0x602C0008, // 00C1 GETGBL R11 G8
- 0x88300F2E, // 00C2 GETMBR R12 R7 K46
- 0x7C2C0200, // 00C3 CALL R11 1
- 0x0028140B, // 00C4 ADD R10 R10 R11
- 0x542E0003, // 00C5 LDINT R11 4
- 0x7C200600, // 00C6 CALL R8 3
- 0x8C20012F, // 00C7 GETMET R8 R0 K47
- 0x5C280A00, // 00C8 MOVE R10 R5
- 0x502C0000, // 00C9 LDBOOL R11 0 0
- 0x7C200600, // 00CA CALL R8 3
- 0x50200000, // 00CB LDBOOL R8 0 0
- 0xA8040001, // 00CC EXBLK 1 1
- 0x80041000, // 00CD RET 1 R8
- 0x8C200B30, // 00CE GETMET R8 R5 K48
- 0x7C200200, // 00CF CALL R8 1
- 0x5C241000, // 00D0 MOVE R9 R8
- 0x74260002, // 00D1 JMPT R9 #00D5
- 0x50240000, // 00D2 LDBOOL R9 0 0
- 0xA8040001, // 00D3 EXBLK 1 1
- 0x80041200, // 00D4 RET 1 R9
- 0x88240B32, // 00D5 GETMBR R9 R5 K50
- 0x04241333, // 00D6 SUB R9 R9 K51
- 0x40261609, // 00D7 CONNECT R9 K11 R9
- 0x88280B31, // 00D8 GETMBR R10 R5 K49
- 0x94241409, // 00D9 GETIDX R9 R10 R9
- 0x90166209, // 00DA SETMBR R5 K49 R9
- 0x88240B31, // 00DB GETMBR R9 R5 K49
- 0x40241208, // 00DC CONNECT R9 R9 R8
- 0x8C240B19, // 00DD GETMET R9 R5 K25
- 0x7C240200, // 00DE CALL R9 1
- 0xB8262800, // 00DF GETNGBL R9 K20
- 0x8C241315, // 00E0 GETMET R9 R9 K21
- 0x602C0008, // 00E1 GETGBL R11 G8
- 0x88300B35, // 00E2 GETMBR R12 R5 K53
- 0x7C2C0200, // 00E3 CALL R11 1
- 0x002E680B, // 00E4 ADD R11 K52 R11
- 0x002C1736, // 00E5 ADD R11 R11 K54
- 0x60300008, // 00E6 GETGBL R12 G8
- 0x88340B1B, // 00E7 GETMBR R13 R5 K27
- 0x7C300200, // 00E8 CALL R12 1
- 0x002C160C, // 00E9 ADD R11 R11 R12
- 0x002C1737, // 00EA ADD R11 R11 K55
- 0x60300008, // 00EB GETGBL R12 G8
- 0x88340B1F, // 00EC GETMBR R13 R5 K31
- 0x543AFFFE, // 00ED LDINT R14 65535
- 0x2C341A0E, // 00EE AND R13 R13 R14
- 0x7C300200, // 00EF CALL R12 1
- 0x002C160C, // 00F0 ADD R11 R11 R12
- 0x54320003, // 00F1 LDINT R12 4
- 0x7C240600, // 00F2 CALL R9 3
- 0x88240104, // 00F3 GETMBR R9 R0 K4
- 0x8C24131A, // 00F4 GETMET R9 R9 K26
- 0x5C2C0A00, // 00F5 MOVE R11 R5
- 0x7C240400, // 00F6 CALL R9 2
- 0x88240B35, // 00F7 GETMBR R9 R5 K53
- 0x1C28130B, // 00F8 EQ R10 R9 K11
- 0x782A000F, // 00F9 JMPF R10 #010A
- 0x88280B1B, // 00FA GETMBR R10 R5 K27
- 0x542E000F, // 00FB LDINT R11 16
- 0x1C28140B, // 00FC EQ R10 R10 R11
- 0x782A0009, // 00FD JMPF R10 #0108
- 0x88280138, // 00FE GETMBR R10 R0 K56
- 0x8C281539, // 00FF GETMET R10 R10 K57
- 0x5C300A00, // 0100 MOVE R12 R5
- 0x7C280400, // 0101 CALL R10 2
- 0x5C101400, // 0102 MOVE R4 R10
- 0x78120003, // 0103 JMPF R4 #0108
- 0x88280138, // 0104 GETMBR R10 R0 K56
- 0x8C28153A, // 0105 GETMET R10 R10 K58
- 0x5C300000, // 0106 MOVE R12 R0
- 0x7C280400, // 0107 CALL R10 2
- 0x50100200, // 0108 LDBOOL R4 1 0
- 0x7002001A, // 0109 JMP #0125
- 0x1C281333, // 010A EQ R10 R9 K51
- 0x782A0010, // 010B JMPF R10 #011D
- 0x88280138, // 010C GETMBR R10 R0 K56
- 0x8C281527, // 010D GETMET R10 R10 K39
- 0x5C300A00, // 010E MOVE R12 R5
- 0x7C280400, // 010F CALL R10 2
- 0x5C101400, // 0110 MOVE R4 R10
- 0x78120004, // 0111 JMPF R4 #0117
- 0x88280138, // 0112 GETMBR R10 R0 K56
- 0x8C28153A, // 0113 GETMET R10 R10 K58
- 0x5C300000, // 0114 MOVE R12 R0
- 0x7C280400, // 0115 CALL R10 2
- 0x70020003, // 0116 JMP #011B
- 0x8C28012F, // 0117 GETMET R10 R0 K47
- 0x5C300A00, // 0118 MOVE R12 R5
- 0x50340200, // 0119 LDBOOL R13 1 0
- 0x7C280600, // 011A CALL R10 3
- 0x50100200, // 011B LDBOOL R4 1 0
- 0x70020007, // 011C JMP #0125
- 0xB82A2800, // 011D GETNGBL R10 K20
- 0x8C281515, // 011E GETMET R10 R10 K21
- 0x60300008, // 011F GETGBL R12 G8
- 0x5C341200, // 0120 MOVE R13 R9
- 0x7C300200, // 0121 CALL R12 1
- 0x0032760C, // 0122 ADD R12 K59 R12
- 0x58340020, // 0123 LDCONST R13 K32
- 0x7C280600, // 0124 CALL R10 3
- 0xA8040001, // 0125 EXBLK 1 1
- 0x80040800, // 0126 RET 1 R4
- 0xA8040001, // 0127 EXBLK 1 1
- 0x70020018, // 0128 JMP #0142
- 0xAC140002, // 0129 CATCH R5 0 2
- 0x70020015, // 012A JMP #0141
- 0xB81E2800, // 012B GETNGBL R7 K20
- 0x8C1C0F15, // 012C GETMET R7 R7 K21
- 0x60240008, // 012D GETGBL R9 G8
- 0x5C280A00, // 012E MOVE R10 R5
- 0x7C240200, // 012F CALL R9 1
- 0x00267809, // 0130 ADD R9 K60 R9
- 0x0024133D, // 0131 ADD R9 R9 K61
- 0x60280008, // 0132 GETGBL R10 G8
- 0x5C2C0C00, // 0133 MOVE R11 R6
- 0x7C280200, // 0134 CALL R10 1
- 0x0024120A, // 0135 ADD R9 R9 R10
- 0x5828003E, // 0136 LDCONST R10 K62
- 0x7C1C0600, // 0137 CALL R7 3
- 0xB81E2800, // 0138 GETNGBL R7 K20
- 0x881C0F3F, // 0139 GETMBR R7 R7 K63
- 0x781E0002, // 013A JMPF R7 #013E
- 0xA41E8000, // 013B IMPORT R7 K64
- 0x8C200F41, // 013C GETMET R8 R7 K65
- 0x7C200200, // 013D CALL R8 1
- 0x501C0000, // 013E LDBOOL R7 0 0
- 0x80040E00, // 013F RET 1 R7
- 0x70020000, // 0140 JMP #0142
- 0xB0080000, // 0141 RAISE 2 R0 R0
- 0x80000000, // 0142 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_250ms
-********************************************************************/
-be_local_closure(Matter_MessageHandler_every_250ms, /* 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(im),
- /* K1 */ be_nested_str_weak(every_250ms),
- }),
- be_str_weak(every_250ms),
- &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
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_MessageHandler_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[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(commissioning),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Commisioning_Context),
- /* K4 */ be_nested_str_weak(im),
- /* K5 */ be_nested_str_weak(IM),
- /* K6 */ be_nested_str_weak(control_message),
- /* K7 */ be_nested_str_weak(Control_Message),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0xB80A0400, // 0001 GETNGBL R2 K2
- 0x8C080503, // 0002 GETMET R2 R2 K3
- 0x5C100000, // 0003 MOVE R4 R0
- 0x7C080400, // 0004 CALL R2 2
- 0x90020202, // 0005 SETMBR R0 K1 R2
- 0xB80A0400, // 0006 GETNGBL R2 K2
- 0x8C080505, // 0007 GETMET R2 R2 K5
- 0x5C100200, // 0008 MOVE R4 R1
- 0x7C080400, // 0009 CALL R2 2
- 0x90020802, // 000A SETMBR R0 K4 R2
- 0xB80A0400, // 000B GETNGBL R2 K2
- 0x8C080507, // 000C GETMET R2 R2 K7
- 0x5C100000, // 000D MOVE R4 R0
- 0x7C080400, // 000E CALL R2 2
- 0x90020C02, // 000F SETMBR R0 K6 R2
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_MessageHandler
********************************************************************/
be_local_class(Matter_MessageHandler,
- 4,
+ 5,
NULL,
- be_nested_map(11,
+ be_nested_map(12,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(im, 3), be_const_var(2) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_MessageHandler_init_closure) },
+ { be_const_key_weak(commissioning, -1), be_const_var(1) },
+ { be_const_key_weak(_n_bytes, 7), be_const_var(4) },
{ be_const_key_weak(send_encrypted_ack, -1), be_const_closure(Matter_MessageHandler_send_encrypted_ack_closure) },
+ { be_const_key_weak(init, 5), be_const_closure(Matter_MessageHandler_init_closure) },
+ { be_const_key_weak(msg_received, -1), be_const_closure(Matter_MessageHandler_msg_received_closure) },
+ { be_const_key_weak(im, 11), be_const_var(2) },
{ be_const_key_weak(every_second, -1), be_const_closure(Matter_MessageHandler_every_second_closure) },
{ be_const_key_weak(every_250ms, -1), be_const_closure(Matter_MessageHandler_every_250ms_closure) },
- { be_const_key_weak(device, -1), be_const_var(0) },
- { be_const_key_weak(msg_received, -1), be_const_closure(Matter_MessageHandler_msg_received_closure) },
- { be_const_key_weak(control_message, 4), be_const_var(3) },
- { be_const_key_weak(commissioning, -1), be_const_var(1) },
{ be_const_key_weak(send_simple_ack, 1), be_const_closure(Matter_MessageHandler_send_simple_ack_closure) },
- { be_const_key_weak(send_response_frame, 0), be_const_closure(Matter_MessageHandler_send_response_frame_closure) },
+ { be_const_key_weak(send_response_frame, 6), be_const_closure(Matter_MessageHandler_send_response_frame_closure) },
+ { be_const_key_weak(control_message, -1), be_const_var(3) },
+ { be_const_key_weak(device, -1), be_const_var(0) },
})),
be_str_weak(Matter_MessageHandler)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h
index b81e7a973..bab7d9909 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h
@@ -19,7 +19,7 @@ be_local_closure(Matter_Path_tostring, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
+ ( &(const bvalue[15]) { /* constants */
/* K0 */ be_nested_str_weak(),
/* K1 */ be_nested_str_weak(endpoint),
/* K2 */ be_nested_str_weak(_X5B_X2502X_X5D),
@@ -30,14 +30,16 @@ be_local_closure(Matter_Path_tostring, /* name */
/* K7 */ be_nested_str_weak(attribute),
/* K8 */ be_nested_str_weak(_X2504X),
/* K9 */ be_nested_str_weak(command),
- /* K10 */ be_nested_str_weak(_X2A_X2A_X2A_X2A),
- /* K11 */ be_nested_str_weak(Exception_X3E_X20),
- /* K12 */ be_nested_str_weak(_X2C_X20),
+ /* K10 */ be_nested_str_weak(fabric_filtered),
+ /* K11 */ be_nested_str_weak(_X21),
+ /* K12 */ be_nested_str_weak(_X2A_X2A_X2A_X2A),
+ /* K13 */ be_nested_str_weak(Exception_X3E_X20),
+ /* K14 */ be_nested_str_weak(_X2C_X20),
}),
be_str_weak(tostring),
&be_const_str_solidified,
- ( &(const binstruction[74]) { /* code */
- 0xA8020039, // 0000 EXBLK 0 #003B
+ ( &(const binstruction[77]) { /* code */
+ 0xA802003C, // 0000 EXBLK 0 #003E
0x58040000, // 0001 LDCONST R1 K0
0x88080101, // 0002 GETMBR R2 R0 K1
0x4C0C0000, // 0003 LDNIL R3
@@ -83,34 +85,79 @@ be_local_closure(Matter_Path_tostring, /* name */
0x70020000, // 002B JMP #002D
0x58080000, // 002C LDCONST R2 K0
0x00040202, // 002D ADD R1 R1 R2
- 0x88080107, // 002E GETMBR R2 R0 K7
- 0x4C0C0000, // 002F LDNIL R3
- 0x1C080403, // 0030 EQ R2 R2 R3
- 0x780A0004, // 0031 JMPF R2 #0037
- 0x88080109, // 0032 GETMBR R2 R0 K9
- 0x4C0C0000, // 0033 LDNIL R3
- 0x1C080403, // 0034 EQ R2 R2 R3
- 0x780A0000, // 0035 JMPF R2 #0037
- 0x0004030A, // 0036 ADD R1 R1 K10
- 0xA8040001, // 0037 EXBLK 1 1
- 0x80040200, // 0038 RET 1 R1
- 0xA8040001, // 0039 EXBLK 1 1
- 0x7002000D, // 003A JMP #0049
- 0xAC040002, // 003B CATCH R1 0 2
- 0x7002000A, // 003C JMP #0048
- 0x600C0008, // 003D GETGBL R3 G8
- 0x5C100200, // 003E MOVE R4 R1
- 0x7C0C0200, // 003F CALL R3 1
- 0x000E1603, // 0040 ADD R3 K11 R3
- 0x000C070C, // 0041 ADD R3 R3 K12
- 0x60100008, // 0042 GETGBL R4 G8
- 0x5C140400, // 0043 MOVE R5 R2
- 0x7C100200, // 0044 CALL R4 1
- 0x000C0604, // 0045 ADD R3 R3 R4
- 0x80040600, // 0046 RET 1 R3
- 0x70020000, // 0047 JMP #0049
- 0xB0080000, // 0048 RAISE 2 R0 R0
- 0x80000000, // 0049 RET 0
+ 0x8808010A, // 002E GETMBR R2 R0 K10
+ 0x780A0000, // 002F JMPF R2 #0031
+ 0x0004030B, // 0030 ADD R1 R1 K11
+ 0x88080107, // 0031 GETMBR R2 R0 K7
+ 0x4C0C0000, // 0032 LDNIL R3
+ 0x1C080403, // 0033 EQ R2 R2 R3
+ 0x780A0004, // 0034 JMPF R2 #003A
+ 0x88080109, // 0035 GETMBR R2 R0 K9
+ 0x4C0C0000, // 0036 LDNIL R3
+ 0x1C080403, // 0037 EQ R2 R2 R3
+ 0x780A0000, // 0038 JMPF R2 #003A
+ 0x0004030C, // 0039 ADD R1 R1 K12
+ 0xA8040001, // 003A EXBLK 1 1
+ 0x80040200, // 003B RET 1 R1
+ 0xA8040001, // 003C EXBLK 1 1
+ 0x7002000D, // 003D JMP #004C
+ 0xAC040002, // 003E CATCH R1 0 2
+ 0x7002000A, // 003F JMP #004B
+ 0x600C0008, // 0040 GETGBL R3 G8
+ 0x5C100200, // 0041 MOVE R4 R1
+ 0x7C0C0200, // 0042 CALL R3 1
+ 0x000E1A03, // 0043 ADD R3 K13 R3
+ 0x000C070E, // 0044 ADD R3 R3 K14
+ 0x60100008, // 0045 GETGBL R4 G8
+ 0x5C140400, // 0046 MOVE R5 R2
+ 0x7C100200, // 0047 CALL R4 1
+ 0x000C0604, // 0048 ADD R3 R3 R4
+ 0x80040600, // 0049 RET 1 R3
+ 0x70020000, // 004A JMP #004C
+ 0xB0080000, // 004B RAISE 2 R0 R0
+ 0x80000000, // 004C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: reset
+********************************************************************/
+be_local_closure(Matter_Path_reset, /* 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[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(endpoint),
+ /* K1 */ be_nested_str_weak(cluster),
+ /* K2 */ be_nested_str_weak(attribute),
+ /* K3 */ be_nested_str_weak(fabric_filtered),
+ /* K4 */ be_nested_str_weak(command),
+ /* K5 */ be_nested_str_weak(status),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(msg),
+ }),
+ be_str_weak(reset),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x90020201, // 0002 SETMBR R0 K1 R1
+ 0x90020401, // 0003 SETMBR R0 K2 R1
+ 0x90020601, // 0004 SETMBR R0 K3 R1
+ 0x90020801, // 0005 SETMBR R0 K4 R1
+ 0x90020A01, // 0006 SETMBR R0 K5 R1
+ 0x90020C01, // 0007 SETMBR R0 K6 R1
+ 0x90020E01, // 0008 SETMBR R0 K7 R1
+ 0x80000000, // 0009 RET 0
})
)
);
@@ -121,17 +168,20 @@ be_local_closure(Matter_Path_tostring, /* name */
** Solidified class: Matter_Path
********************************************************************/
be_local_class(Matter_Path,
- 6,
+ 8,
NULL,
- be_nested_map(7,
+ be_nested_map(10,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(log, 4), be_const_var(5) },
- { be_const_key_weak(command, 2), be_const_var(3) },
- { be_const_key_weak(status, -1), be_const_var(4) },
- { be_const_key_weak(tostring, -1), be_const_closure(Matter_Path_tostring_closure) },
- { be_const_key_weak(cluster, 5), be_const_var(1) },
- { be_const_key_weak(endpoint, -1), be_const_var(0) },
{ be_const_key_weak(attribute, -1), be_const_var(2) },
+ { be_const_key_weak(log, 0), be_const_var(6) },
+ { be_const_key_weak(fabric_filtered, 6), be_const_var(3) },
+ { be_const_key_weak(command, -1), be_const_var(4) },
+ { be_const_key_weak(msg, -1), be_const_var(7) },
+ { be_const_key_weak(tostring, -1), be_const_closure(Matter_Path_tostring_closure) },
+ { be_const_key_weak(reset, -1), be_const_closure(Matter_Path_reset_closure) },
+ { be_const_key_weak(cluster, -1), be_const_var(1) },
+ { be_const_key_weak(endpoint, 3), be_const_var(0) },
+ { be_const_key_weak(status, -1), be_const_var(5) },
})),
be_str_weak(Matter_Path)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h
index e24e49c2e..806c7361f 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h
@@ -6,6 +6,159 @@
extern const bclass be_class_Matter_Plugin;
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_init, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 4, /* 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(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),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* 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
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_event
+********************************************************************/
+be_local_closure(Matter_Plugin_read_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(read_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x80040A00, // 0001 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** 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: 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 */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(write_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x80040800, // 0001 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: ui_conf_to_string
+********************************************************************/
+be_local_closure(Matter_Plugin_ui_conf_to_string, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* 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_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[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: every_250ms
********************************************************************/
@@ -68,13 +221,258 @@ be_local_closure(Matter_Plugin_every_250ms, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: contains_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_contains_attribute, /* name */
+ be_nested_proto(
+ 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(clusters),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_const_int(1),
+ }),
+ be_str_weak(contains_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x4C100000, // 0004 LDNIL R4
+ 0x20100604, // 0005 NE R4 R3 R4
+ 0x7812000C, // 0006 JMPF R4 #0014
+ 0x58100002, // 0007 LDCONST R4 K2
+ 0x6014000C, // 0008 GETGBL R5 G12
+ 0x5C180600, // 0009 MOVE R6 R3
+ 0x7C140200, // 000A CALL R5 1
+ 0x14140805, // 000B LT R5 R4 R5
+ 0x78160006, // 000C JMPF R5 #0014
+ 0x94140604, // 000D GETIDX R5 R3 R4
+ 0x1C140A02, // 000E EQ R5 R5 R2
+ 0x78160001, // 000F JMPF R5 #0012
+ 0x50140200, // 0010 LDBOOL R5 1 0
+ 0x80040A00, // 0011 RET 1 R5
+ 0x00100903, // 0012 ADD R4 R4 K3
+ 0x7001FFF3, // 0013 JMP #0008
+ 0x50100000, // 0014 LDBOOL R4 0 0
+ 0x80040800, // 0015 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_sensors
+********************************************************************/
+be_local_closure(Matter_Plugin_parse_sensors, /* 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(parse_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: has
+********************************************************************/
+be_local_closure(Matter_Plugin_has, /* 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(clusters),
+ /* K1 */ be_nested_str_weak(contains),
+ /* K2 */ be_nested_str_weak(endpoints),
+ /* K3 */ be_nested_str_weak(find),
+ }),
+ be_str_weak(has),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x780E0006, // 0004 JMPF R3 #000C
+ 0x880C0102, // 0005 GETMBR R3 R0 K2
+ 0x8C0C0703, // 0006 GETMET R3 R3 K3
+ 0x5C140400, // 0007 MOVE R5 R2
+ 0x7C0C0400, // 0008 CALL R3 2
+ 0x4C100000, // 0009 LDNIL R4
+ 0x200C0604, // 000A NE R3 R3 R4
+ 0x740E0000, // 000B JMPT R3 #000D
+ 0x500C0001, // 000C LDBOOL R3 0 1
+ 0x500C0200, // 000D LDBOOL R3 1 0
+ 0x80040600, // 000E RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(Matter_Plugin_parse_configuration, /* 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(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** 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: subscribe_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_subscribe_attribute, /* 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_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x80040A00, // 0001 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: ack_request
+********************************************************************/
+be_local_closure(Matter_Plugin_ack_request, /* 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[ 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),
+ }),
+ be_str_weak(ack_request),
+ &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
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: get_cluster_list
********************************************************************/
be_local_closure(Matter_Plugin_get_cluster_list, /* name */
be_nested_proto(
- 8, /* nstack */
- 2, /* argc */
+ 7, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -90,24 +488,213 @@ be_local_closure(Matter_Plugin_get_cluster_list, /* name */
be_str_weak(get_cluster_list),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0x60080012, // 0000 GETGBL R2 G18
- 0x7C080000, // 0001 CALL R2 0
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x88100100, // 0003 GETMBR R4 R0 K0
- 0x8C100901, // 0004 GETMET R4 R4 K1
- 0x7C100200, // 0005 CALL R4 1
- 0x7C0C0200, // 0006 CALL R3 1
+ 0x60040012, // 0000 GETGBL R1 G18
+ 0x7C040000, // 0001 CALL R1 0
+ 0x60080010, // 0002 GETGBL R2 G16
+ 0x880C0100, // 0003 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0004 GETMET R3 R3 K1
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x7C080200, // 0006 CALL R2 1
0xA8020005, // 0007 EXBLK 0 #000E
- 0x5C100600, // 0008 MOVE R4 R3
- 0x7C100000, // 0009 CALL R4 0
- 0x8C140502, // 000A GETMET R5 R2 K2
- 0x5C1C0800, // 000B MOVE R7 R4
- 0x7C140400, // 000C CALL R5 2
+ 0x5C0C0400, // 0008 MOVE R3 R2
+ 0x7C0C0000, // 0009 CALL R3 0
+ 0x8C100302, // 000A GETMET R4 R1 K2
+ 0x5C180600, // 000B MOVE R6 R3
+ 0x7C100400, // 000C CALL R4 2
0x7001FFF9, // 000D JMP #0008
- 0x580C0003, // 000E LDCONST R3 K3
- 0xAC0C0200, // 000F CATCH R3 1 0
+ 0x58080003, // 000E LDCONST R2 K3
+ 0xAC080200, // 000F CATCH R2 1 0
0xB0080000, // 0010 RAISE 2 R0 R0
- 0x80040400, // 0011 RET 1 R2
+ 0x80040200, // 0011 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_read_attribute, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 4, /* 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(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(attribute),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(Matter_TLV_array),
+ /* K6 */ be_nested_str_weak(TYPES),
+ /* K7 */ be_nested_str_weak(keys),
+ /* K8 */ be_nested_str_weak(add_struct),
+ /* K9 */ be_nested_str_weak(add_TLV),
+ /* K10 */ be_nested_str_weak(U2),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(stop_iteration),
+ /* K13 */ be_nested_str_weak(get_cluster_list),
+ /* K14 */ be_nested_str_weak(U4),
+ /* 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),
+ }),
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[114]) { /* 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
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E001B, // 0008 JMPF R7 #0025
+ 0x8C1C0905, // 0009 GETMET R7 R4 K5
+ 0x7C1C0200, // 000A CALL R7 1
+ 0x88200106, // 000B GETMBR R8 R0 K6
+ 0x60240010, // 000C GETGBL R9 G16
+ 0x8C281107, // 000D GETMET R10 R8 K7
+ 0x7C280200, // 000E CALL R10 1
+ 0x7C240200, // 000F CALL R9 1
+ 0xA802000E, // 0010 EXBLK 0 #0020
+ 0x5C281200, // 0011 MOVE R10 R9
+ 0x7C280000, // 0012 CALL R10 0
+ 0x8C2C0F08, // 0013 GETMET R11 R7 K8
+ 0x7C2C0200, // 0014 CALL R11 1
+ 0x8C301709, // 0015 GETMET R12 R11 K9
+ 0x58380004, // 0016 LDCONST R14 K4
+ 0x883C090A, // 0017 GETMBR R15 R4 K10
+ 0x5C401400, // 0018 MOVE R16 R10
+ 0x7C300800, // 0019 CALL R12 4
+ 0x8C301709, // 001A GETMET R12 R11 K9
+ 0x5838000B, // 001B LDCONST R14 K11
+ 0x883C090A, // 001C GETMBR R15 R4 K10
+ 0x9440100A, // 001D GETIDX R16 R8 R10
+ 0x7C300800, // 001E CALL R12 4
+ 0x7001FFF0, // 001F JMP #0011
+ 0x5824000C, // 0020 LDCONST R9 K12
+ 0xAC240200, // 0021 CATCH R9 1 0
+ 0xB0080000, // 0022 RAISE 2 R0 R0
+ 0x80040E00, // 0023 RET 1 R7
+ 0x70020032, // 0024 JMP #0058
+ 0x1C1C0D0B, // 0025 EQ R7 R6 K11
+ 0x781E0013, // 0026 JMPF R7 #003B
+ 0x8C1C0905, // 0027 GETMET R7 R4 K5
+ 0x7C1C0200, // 0028 CALL R7 1
+ 0x60200010, // 0029 GETGBL R8 G16
+ 0x8C24010D, // 002A GETMET R9 R0 K13
+ 0x7C240200, // 002B CALL R9 1
+ 0x7C200200, // 002C CALL R8 1
+ 0xA8020007, // 002D EXBLK 0 #0036
+ 0x5C241000, // 002E MOVE R9 R8
+ 0x7C240000, // 002F CALL R9 0
+ 0x8C280F09, // 0030 GETMET R10 R7 K9
+ 0x4C300000, // 0031 LDNIL R12
+ 0x8834090E, // 0032 GETMBR R13 R4 K14
+ 0x5C381200, // 0033 MOVE R14 R9
+ 0x7C280800, // 0034 CALL R10 4
+ 0x7001FFF7, // 0035 JMP #002E
+ 0x5820000C, // 0036 LDCONST R8 K12
+ 0xAC200200, // 0037 CATCH R8 1 0
+ 0xB0080000, // 0038 RAISE 2 R0 R0
+ 0x80040E00, // 0039 RET 1 R7
+ 0x7002001C, // 003A JMP #0058
+ 0x1C1C0D0F, // 003B EQ R7 R6 K15
+ 0x781E0003, // 003C JMPF R7 #0041
+ 0x8C1C0905, // 003D GETMET R7 R4 K5
+ 0x7C1C0200, // 003E CALL R7 1
+ 0x80040E00, // 003F RET 1 R7
+ 0x70020016, // 0040 JMP #0058
+ 0x1C1C0D10, // 0041 EQ R7 R6 K16
+ 0x781E0003, // 0042 JMPF R7 #0047
+ 0x8C1C0905, // 0043 GETMET R7 R4 K5
+ 0x7C1C0200, // 0044 CALL R7 1
+ 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
+ 0x8C1C0711, // 004A GETMET R7 R3 K17
+ 0x8824090E, // 004B GETMBR R9 R4 K14
+ 0x58280004, // 004C LDCONST R10 K4
+ 0x7C1C0600, // 004D CALL R7 3
+ 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
+ 0x8C1C0711, // 0053 GETMET R7 R3 K17
+ 0x8824090E, // 0054 GETMBR R9 R4 K14
+ 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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** 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
})
)
);
@@ -142,49 +729,34 @@ be_local_closure(Matter_Plugin__X3Clambda_X3E, /* name */
/********************************************************************
-** Solidified function: is_local_device
+** Solidified function: attribute_updated
********************************************************************/
-be_local_closure(Matter_Plugin_is_local_device, /* name */
+be_local_closure(Matter_Plugin_attribute_updated, /* 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: write_attribute
-********************************************************************/
-be_local_closure(Matter_Plugin_write_attribute, /* name */
- be_nested_proto(
- 5, /* nstack */
+ 10, /* 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(write_attribute),
+ 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[ 2]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x80040800, // 0001 RET 1 R4
+ ( &(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
})
)
);
@@ -216,6 +788,151 @@ be_local_closure(Matter_Plugin_invoke_request, /* name */
/*******************************************************************/
+/********************************************************************
+** 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),
+ /* K1 */ be_nested_str_weak(device),
+ /* K2 */ be_nested_str_weak(update_shadow),
+ }),
+ be_str_weak(update_shadow_lazy),
+ &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: 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: 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: 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: update_shadow
+********************************************************************/
+be_local_closure(Matter_Plugin_update_shadow, /* 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: consolidate_clusters
********************************************************************/
@@ -319,317 +1036,13 @@ be_local_closure(Matter_Plugin_consolidate_clusters, /* name */
/*******************************************************************/
-/********************************************************************
-** 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: parse_sensors
-********************************************************************/
-be_local_closure(Matter_Plugin_parse_sensors, /* 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(parse_sensors),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: has
-********************************************************************/
-be_local_closure(Matter_Plugin_has, /* 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(clusters),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(endpoints),
- /* K3 */ be_nested_str_weak(find),
- }),
- be_str_weak(has),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x780E0006, // 0004 JMPF R3 #000C
- 0x880C0102, // 0005 GETMBR R3 R0 K2
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x5C140400, // 0007 MOVE R5 R2
- 0x7C0C0400, // 0008 CALL R3 2
- 0x4C100000, // 0009 LDNIL R4
- 0x200C0604, // 000A NE R3 R3 R4
- 0x740E0000, // 000B JMPT R3 #000D
- 0x500C0001, // 000C LDBOOL R3 0 1
- 0x500C0200, // 000D LDBOOL R3 1 0
- 0x80040600, // 000E RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** 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),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(update_shadow),
- }),
- be_str_weak(update_shadow_lazy),
- &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: 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: init
-********************************************************************/
-be_local_closure(Matter_Plugin_init, /* name */
- be_nested_proto(
- 7, /* nstack */
- 4, /* 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(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),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* 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
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_event
-********************************************************************/
-be_local_closure(Matter_Plugin_read_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(read_event),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x80040A00, // 0001 RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: subscribe_attribute
-********************************************************************/
-be_local_closure(Matter_Plugin_subscribe_attribute, /* 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_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x80040A00, // 0001 RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-be_local_closure(Matter_Plugin_parse_configuration, /* 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(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 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_attribute_list
********************************************************************/
be_local_closure(Matter_Plugin_get_attribute_list, /* name */
be_nested_proto(
- 7, /* nstack */
- 3, /* argc */
+ 6, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -643,302 +1056,13 @@ be_local_closure(Matter_Plugin_get_attribute_list, /* name */
be_str_weak(get_attribute_list),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140400, // 0002 MOVE R5 R2
- 0x60180012, // 0003 GETGBL R6 G18
- 0x7C180000, // 0004 CALL R6 0
- 0x7C0C0600, // 0005 CALL R3 3
- 0x80040600, // 0006 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** 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: update_shadow
-********************************************************************/
-be_local_closure(Matter_Plugin_update_shadow, /* 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: read_attribute
-********************************************************************/
-be_local_closure(Matter_Plugin_read_attribute, /* name */
- be_nested_proto(
- 16, /* nstack */
- 3, /* 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(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(Matter_TLV_array),
- /* K6 */ be_nested_str_weak(TYPES),
- /* K7 */ be_nested_str_weak(keys),
- /* K8 */ be_nested_str_weak(add_struct),
- /* K9 */ be_nested_str_weak(add_TLV),
- /* K10 */ be_nested_str_weak(U2),
- /* K11 */ be_const_int(1),
- /* K12 */ be_nested_str_weak(stop_iteration),
- /* K13 */ be_nested_str_weak(get_cluster_list),
- /* K14 */ be_nested_str_weak(U4),
- /* K15 */ be_const_int(2),
- /* K16 */ be_const_int(3),
- /* K17 */ be_nested_str_weak(create_TLV),
- /* K18 */ be_nested_str_weak(BOOL),
- /* K19 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[113]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A001C, // 0004 LDINT R6 29
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0051, // 0006 JMPF R6 #0059
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A001B, // 0008 JMPF R6 #0025
- 0x8C180705, // 0009 GETMET R6 R3 K5
- 0x7C180200, // 000A CALL R6 1
- 0x881C0106, // 000B GETMBR R7 R0 K6
- 0x60200010, // 000C GETGBL R8 G16
- 0x8C240F07, // 000D GETMET R9 R7 K7
- 0x7C240200, // 000E CALL R9 1
- 0x7C200200, // 000F CALL R8 1
- 0xA802000E, // 0010 EXBLK 0 #0020
- 0x5C241000, // 0011 MOVE R9 R8
- 0x7C240000, // 0012 CALL R9 0
- 0x8C280D08, // 0013 GETMET R10 R6 K8
- 0x7C280200, // 0014 CALL R10 1
- 0x8C2C1509, // 0015 GETMET R11 R10 K9
- 0x58340004, // 0016 LDCONST R13 K4
- 0x8838070A, // 0017 GETMBR R14 R3 K10
- 0x5C3C1200, // 0018 MOVE R15 R9
- 0x7C2C0800, // 0019 CALL R11 4
- 0x8C2C1509, // 001A GETMET R11 R10 K9
- 0x5834000B, // 001B LDCONST R13 K11
- 0x8838070A, // 001C GETMBR R14 R3 K10
- 0x943C0E09, // 001D GETIDX R15 R7 R9
- 0x7C2C0800, // 001E CALL R11 4
- 0x7001FFF0, // 001F JMP #0011
- 0x5820000C, // 0020 LDCONST R8 K12
- 0xAC200200, // 0021 CATCH R8 1 0
- 0xB0080000, // 0022 RAISE 2 R0 R0
- 0x80040C00, // 0023 RET 1 R6
- 0x70020032, // 0024 JMP #0058
- 0x1C180B0B, // 0025 EQ R6 R5 K11
- 0x781A0013, // 0026 JMPF R6 #003B
- 0x8C180705, // 0027 GETMET R6 R3 K5
- 0x7C180200, // 0028 CALL R6 1
- 0x601C0010, // 0029 GETGBL R7 G16
- 0x8C20010D, // 002A GETMET R8 R0 K13
- 0x7C200200, // 002B CALL R8 1
- 0x7C1C0200, // 002C CALL R7 1
- 0xA8020007, // 002D EXBLK 0 #0036
- 0x5C200E00, // 002E MOVE R8 R7
- 0x7C200000, // 002F CALL R8 0
- 0x8C240D09, // 0030 GETMET R9 R6 K9
- 0x4C2C0000, // 0031 LDNIL R11
- 0x8830070E, // 0032 GETMBR R12 R3 K14
- 0x5C341000, // 0033 MOVE R13 R8
- 0x7C240800, // 0034 CALL R9 4
- 0x7001FFF7, // 0035 JMP #002E
- 0x581C000C, // 0036 LDCONST R7 K12
- 0xAC1C0200, // 0037 CATCH R7 1 0
- 0xB0080000, // 0038 RAISE 2 R0 R0
- 0x80040C00, // 0039 RET 1 R6
- 0x7002001C, // 003A JMP #0058
- 0x1C180B0F, // 003B EQ R6 R5 K15
- 0x781A0003, // 003C JMPF R6 #0041
- 0x8C180705, // 003D GETMET R6 R3 K5
- 0x7C180200, // 003E CALL R6 1
- 0x80040C00, // 003F RET 1 R6
- 0x70020016, // 0040 JMP #0058
- 0x1C180B10, // 0041 EQ R6 R5 K16
- 0x781A0003, // 0042 JMPF R6 #0047
- 0x8C180705, // 0043 GETMET R6 R3 K5
- 0x7C180200, // 0044 CALL R6 1
- 0x80040C00, // 0045 RET 1 R6
- 0x70020010, // 0046 JMP #0058
- 0x541AFFFB, // 0047 LDINT R6 65532
- 0x1C180A06, // 0048 EQ R6 R5 R6
- 0x781A0005, // 0049 JMPF R6 #0050
- 0x8C180711, // 004A GETMET R6 R3 K17
- 0x8820070E, // 004B GETMBR R8 R3 K14
- 0x58240004, // 004C LDCONST R9 K4
- 0x7C180600, // 004D CALL R6 3
- 0x80040C00, // 004E RET 1 R6
- 0x70020007, // 004F JMP #0058
- 0x541AFFFC, // 0050 LDINT R6 65533
- 0x1C180A06, // 0051 EQ R6 R5 R6
- 0x781A0004, // 0052 JMPF R6 #0058
- 0x8C180711, // 0053 GETMET R6 R3 K17
- 0x8820070E, // 0054 GETMBR R8 R3 K14
- 0x5824000B, // 0055 LDCONST R9 K11
- 0x7C180600, // 0056 CALL R6 3
- 0x80040C00, // 0057 RET 1 R6
- 0x70020016, // 0058 JMP #0070
- 0x541A0038, // 0059 LDINT R6 57
- 0x1C180806, // 005A EQ R6 R4 R6
- 0x781A0011, // 005B JMPF R6 #006E
- 0x541A0010, // 005C LDINT R6 17
- 0x1C180A06, // 005D EQ R6 R5 R6
- 0x781A0005, // 005E JMPF R6 #0065
- 0x8C180711, // 005F GETMET R6 R3 K17
- 0x88200712, // 0060 GETMBR R8 R3 K18
- 0x5824000B, // 0061 LDCONST R9 K11
- 0x7C180600, // 0062 CALL R6 3
- 0x80040C00, // 0063 RET 1 R6
- 0x70020007, // 0064 JMP #006D
- 0x60180003, // 0065 GETGBL R6 G3
- 0x5C1C0000, // 0066 MOVE R7 R0
- 0x7C180200, // 0067 CALL R6 1
- 0x8C180D13, // 0068 GETMET R6 R6 K19
- 0x5C200200, // 0069 MOVE R8 R1
- 0x5C240400, // 006A MOVE R9 R2
- 0x7C180600, // 006B CALL R6 3
- 0x80040C00, // 006C RET 1 R6
- 0x70020001, // 006D JMP #0070
- 0x4C180000, // 006E LDNIL R6
- 0x80040C00, // 006F RET 1 R6
- 0x80000000, // 0070 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** 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: ui_conf_to_string
-********************************************************************/
-be_local_closure(Matter_Plugin_ui_conf_to_string, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* 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_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[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
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x60140012, // 0003 GETGBL R5 G18
+ 0x7C140000, // 0004 CALL R5 0
+ 0x7C080600, // 0005 CALL R2 3
+ 0x80040400, // 0006 RET 1 R2
})
)
);
@@ -951,35 +1075,20 @@ be_local_closure(Matter_Plugin_ui_conf_to_string, /* name */
be_local_class(Matter_Plugin,
5,
NULL,
- be_nested_map(34,
+ be_nested_map(37,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(every_250ms, 18), be_const_closure(Matter_Plugin_every_250ms_closure) },
- { be_const_key_weak(get_cluster_list, 3), be_const_closure(Matter_Plugin_get_cluster_list_closure) },
- { be_const_key_weak(NAME, -1), be_nested_str_weak() },
- { be_const_key_weak(device, -1), be_const_var(1) },
- { be_const_key_weak(tick, -1), be_const_var(4) },
- { be_const_key_weak(write_attribute, 27), be_const_closure(Matter_Plugin_write_attribute_closure) },
- { be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) },
- { be_const_key_weak(invoke_request, 6), be_const_closure(Matter_Plugin_invoke_request_closure) },
- { be_const_key_weak(consolidate_clusters, 29), be_const_closure(Matter_Plugin_consolidate_clusters_closure) },
- { be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Plugin_attribute_updated_closure) },
- { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(Matter_Plugin_update_shadow_lazy_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(is_local_device, 10), be_const_closure(Matter_Plugin_is_local_device_closure) },
- { be_const_key_weak(get_endpoint, -1), be_const_closure(Matter_Plugin_get_endpoint_closure) },
- { be_const_key_weak(clusters, -1), be_const_var(3) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_init_closure) },
{ be_const_key_weak(read_event, 11), be_const_closure(Matter_Plugin_read_event_closure) },
- { be_const_key_weak(read_attribute, 24), be_const_closure(Matter_Plugin_read_attribute_closure) },
- { be_const_key_weak(update_next, -1), be_const_var(0) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
- { 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(timed_request, -1), be_const_closure(Matter_Plugin_timed_request_closure) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_update_shadow_closure) },
+ { be_const_key_weak(tick, -1), be_const_var(4) },
+ { be_const_key_weak(is_local_device, 18), be_const_closure(Matter_Plugin_is_local_device_closure) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak() },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(get_attribute_list, -1), be_const_closure(Matter_Plugin_get_attribute_list_closure) },
+ { be_const_key_weak(ui_conf_to_string, 26), be_const_static_closure(Matter_Plugin_ui_conf_to_string_closure) },
+ { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Plugin_every_250ms_closure) },
+ { be_const_key_weak(ack_request, -1), be_const_closure(Matter_Plugin_ack_request_closure) },
+ { be_const_key_weak(NAME, -1), be_nested_str_weak() },
+ { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_parse_sensors_closure) },
+ { be_const_key_weak(CLUSTERS, 36), 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, {
@@ -999,12 +1108,30 @@ be_local_class(Matter_Plugin,
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_parse_configuration_closure) },
- { be_const_key_weak(ARG_TYPE, 17), be_const_static_closure(Matter_Plugin__X3Clambda_X3E_closure) },
- { be_const_key_weak(subscribe_attribute, 33), be_const_closure(Matter_Plugin_subscribe_attribute_closure) },
- { be_const_key_weak(ui_conf_to_string, -1), be_const_static_closure(Matter_Plugin_ui_conf_to_string_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(contains_cluster, -1), be_const_closure(Matter_Plugin_contains_cluster_closure) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin__X3Clambda_X3E_closure) },
+ { be_const_key_weak(has, 8), be_const_closure(Matter_Plugin_has_closure) },
+ { be_const_key_weak(device, 4), be_const_var(1) },
+ { be_const_key_weak(timed_request, -1), be_const_closure(Matter_Plugin_timed_request_closure) },
+ { be_const_key_weak(get_cluster_list, -1), be_const_closure(Matter_Plugin_get_cluster_list_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) },
+ { be_const_key_weak(ARG, 14), be_nested_str_weak() },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_invoke_request_closure) },
+ { be_const_key_weak(subscribe_attribute, 24), be_const_closure(Matter_Plugin_subscribe_attribute_closure) },
+ { be_const_key_weak(get_endpoint, 30), be_const_closure(Matter_Plugin_get_endpoint_closure) },
+ { be_const_key_weak(write_attribute, 28), be_const_closure(Matter_Plugin_write_attribute_closure) },
+ { be_const_key_weak(ARG_HINT, 22), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(Matter_Plugin_update_shadow_lazy_closure) },
+ { be_const_key_weak(clusters, -1), be_const_var(3) },
+ { be_const_key_weak(endpoint, -1), be_const_var(2) },
+ { be_const_key_weak(attribute_updated, 15), be_const_closure(Matter_Plugin_attribute_updated_closure) },
+ { be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) },
+ { be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_update_shadow_closure) },
+ { be_const_key_weak(consolidate_clusters, -1), be_const_closure(Matter_Plugin_consolidate_clusters_closure) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak() },
- { be_const_key_weak(endpoint, 4), be_const_var(2) },
- { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_parse_sensors_closure) },
+ { be_const_key_weak(update_next, 5), be_const_var(0) },
+ { be_const_key_weak(contains_attribute, -1), be_const_closure(Matter_Plugin_contains_attribute_closure) },
})),
be_str_weak(Matter_Plugin)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h
index 79fc33df1..f681758cc 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h
@@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Aggregator;
********************************************************************/
be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */
be_nested_proto(
- 15, /* nstack */
- 3, /* argc */
+ 16, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -35,60 +35,62 @@ be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A001C, // 0004 LDINT R6 29
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0024, // 0006 JMPF R6 #002C
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A0019, // 0008 JMPF R6 #0023
- 0x8C180705, // 0009 GETMET R6 R3 K5
- 0x7C180200, // 000A CALL R6 1
- 0x881C0106, // 000B GETMBR R7 R0 K6
- 0x8C1C0F07, // 000C GETMET R7 R7 K7
- 0x50240200, // 000D LDBOOL R9 1 0
- 0x7C1C0400, // 000E CALL R7 2
- 0x60200010, // 000F GETGBL R8 G16
- 0x5C240E00, // 0010 MOVE R9 R7
- 0x7C200200, // 0011 CALL R8 1
+ ( &(const binstruction[55]) { /* 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
- 0x5C241000, // 0013 MOVE R9 R8
- 0x7C240000, // 0014 CALL R9 0
- 0x542AFEFF, // 0015 LDINT R10 65280
- 0x1428120A, // 0016 LT R10 R9 R10
- 0x782A0004, // 0017 JMPF R10 #001D
- 0x8C280D08, // 0018 GETMET R10 R6 K8
- 0x4C300000, // 0019 LDNIL R12
- 0x88340709, // 001A GETMBR R13 R3 K9
- 0x5C381200, // 001B MOVE R14 R9
- 0x7C280800, // 001C CALL R10 4
+ 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
- 0x5820000A, // 001E LDCONST R8 K10
- 0xAC200200, // 001F CATCH R8 1 0
+ 0x5824000A, // 001E LDCONST R9 K10
+ 0xAC240200, // 001F CATCH R9 1 0
0xB0080000, // 0020 RAISE 2 R0 R0
- 0x80040C00, // 0021 RET 1 R6
- 0x70020007, // 0022 JMP #002B
- 0x60180003, // 0023 GETGBL R6 G3
- 0x5C1C0000, // 0024 MOVE R7 R0
- 0x7C180200, // 0025 CALL R6 1
- 0x8C180D0B, // 0026 GETMET R6 R6 K11
- 0x5C200200, // 0027 MOVE R8 R1
- 0x5C240400, // 0028 MOVE R9 R2
- 0x7C180600, // 0029 CALL R6 3
- 0x80040C00, // 002A RET 1 R6
- 0x70020007, // 002B JMP #0034
- 0x60180003, // 002C GETGBL R6 G3
- 0x5C1C0000, // 002D MOVE R7 R0
- 0x7C180200, // 002E CALL R6 1
- 0x8C180D0B, // 002F GETMET R6 R6 K11
- 0x5C200200, // 0030 MOVE R8 R1
- 0x5C240400, // 0031 MOVE R9 R2
- 0x7C180600, // 0032 CALL R6 3
- 0x80040C00, // 0033 RET 1 R6
- 0x80000000, // 0034 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h
index e35ae514d..32305eea5 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h
@@ -567,8 +567,8 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_web_values_prefix, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
be_nested_proto(
- 13, /* nstack */
- 3, /* argc */
+ 14, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -586,7 +586,7 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
/* K7 */ be_nested_str_weak(get_info),
/* K8 */ be_nested_str_weak(find),
/* K9 */ be_nested_str_weak(name),
- /* K10 */ be_nested_str_weak(create_TLV),
+ /* K10 */ be_nested_str_weak(set),
/* K11 */ be_nested_str_weak(UTF1),
/* K12 */ be_nested_str_weak(NULL),
/* K13 */ be_nested_str_weak(version),
@@ -600,120 +600,122 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[113]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0038, // 0004 LDINT R6 57
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0060, // 0006 JMPF R6 #0068
- 0xA41A0800, // 0007 IMPORT R6 K4
- 0x1C1C0B05, // 0008 EQ R7 R5 K5
- 0x781E0012, // 0009 JMPF R7 #001D
- 0x881C0106, // 000A GETMBR R7 R0 K6
- 0x8C1C0F07, // 000B GETMET R7 R7 K7
- 0x7C1C0200, // 000C CALL R7 1
- 0x8C1C0F08, // 000D GETMET R7 R7 K8
- 0x58240009, // 000E LDCONST R9 K9
- 0x7C1C0400, // 000F CALL R7 2
- 0x781E0005, // 0010 JMPF R7 #0017
- 0x8C20070A, // 0011 GETMET R8 R3 K10
- 0x8828070B, // 0012 GETMBR R10 R3 K11
- 0x5C2C0E00, // 0013 MOVE R11 R7
- 0x7C200600, // 0014 CALL R8 3
- 0x80041000, // 0015 RET 1 R8
+ ( &(const binstruction[115]) { /* 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
+ 0xA41E0800, // 0007 IMPORT R7 K4
+ 0x1C200D05, // 0008 EQ R8 R6 K5
+ 0x78220012, // 0009 JMPF R8 #001D
+ 0x88200106, // 000A GETMBR R8 R0 K6
+ 0x8C201107, // 000B GETMET R8 R8 K7
+ 0x7C200200, // 000C CALL R8 1
+ 0x8C201108, // 000D GETMET R8 R8 K8
+ 0x58280009, // 000E LDCONST R10 K9
+ 0x7C200400, // 000F CALL R8 2
+ 0x78220005, // 0010 JMPF R8 #0017
+ 0x8C24070A, // 0011 GETMET R9 R3 K10
+ 0x882C090B, // 0012 GETMBR R11 R4 K11
+ 0x5C301000, // 0013 MOVE R12 R8
+ 0x7C240600, // 0014 CALL R9 3
+ 0x80041200, // 0015 RET 1 R9
0x70020004, // 0016 JMP #001C
- 0x8C20070A, // 0017 GETMET R8 R3 K10
- 0x8828070C, // 0018 GETMBR R10 R3 K12
- 0x4C2C0000, // 0019 LDNIL R11
- 0x7C200600, // 001A CALL R8 3
- 0x80041000, // 001B RET 1 R8
- 0x70020049, // 001C JMP #0067
- 0x541E0009, // 001D LDINT R7 10
- 0x1C1C0A07, // 001E EQ R7 R5 R7
- 0x781E001B, // 001F JMPF R7 #003C
- 0x881C0106, // 0020 GETMBR R7 R0 K6
- 0x8C1C0F07, // 0021 GETMET R7 R7 K7
- 0x7C1C0200, // 0022 CALL R7 1
- 0x8C1C0F08, // 0023 GETMET R7 R7 K8
- 0x5824000D, // 0024 LDCONST R9 K13
- 0x7C1C0400, // 0025 CALL R7 2
- 0x781E000E, // 0026 JMPF R7 #0036
- 0x8C200D08, // 0027 GETMET R8 R6 K8
- 0x5C280E00, // 0028 MOVE R10 R7
- 0x582C000E, // 0029 LDCONST R11 K14
- 0x7C200600, // 002A CALL R8 3
- 0x2424110F, // 002B GT R9 R8 K15
- 0x78260002, // 002C JMPF R9 #0030
- 0x04241110, // 002D SUB R9 R8 K16
- 0x40261E09, // 002E CONNECT R9 K15 R9
- 0x941C0E09, // 002F GETIDX R7 R7 R9
- 0x8C24070A, // 0030 GETMET R9 R3 K10
- 0x882C070B, // 0031 GETMBR R11 R3 K11
- 0x5C300E00, // 0032 MOVE R12 R7
- 0x7C240600, // 0033 CALL R9 3
- 0x80041200, // 0034 RET 1 R9
+ 0x8C24070A, // 0017 GETMET R9 R3 K10
+ 0x882C090C, // 0018 GETMBR R11 R4 K12
+ 0x4C300000, // 0019 LDNIL R12
+ 0x7C240600, // 001A CALL R9 3
+ 0x80041200, // 001B RET 1 R9
+ 0x7002004A, // 001C JMP #0068
+ 0x54220009, // 001D LDINT R8 10
+ 0x1C200C08, // 001E EQ R8 R6 R8
+ 0x7822001B, // 001F JMPF R8 #003C
+ 0x88200106, // 0020 GETMBR R8 R0 K6
+ 0x8C201107, // 0021 GETMET R8 R8 K7
+ 0x7C200200, // 0022 CALL R8 1
+ 0x8C201108, // 0023 GETMET R8 R8 K8
+ 0x5828000D, // 0024 LDCONST R10 K13
+ 0x7C200400, // 0025 CALL R8 2
+ 0x7822000E, // 0026 JMPF R8 #0036
+ 0x8C240F08, // 0027 GETMET R9 R7 K8
+ 0x5C2C1000, // 0028 MOVE R11 R8
+ 0x5830000E, // 0029 LDCONST R12 K14
+ 0x7C240600, // 002A CALL R9 3
+ 0x2428130F, // 002B GT R10 R9 K15
+ 0x782A0002, // 002C JMPF R10 #0030
+ 0x04281310, // 002D SUB R10 R9 K16
+ 0x402A1E0A, // 002E CONNECT R10 K15 R10
+ 0x9420100A, // 002F GETIDX R8 R8 R10
+ 0x8C28070A, // 0030 GETMET R10 R3 K10
+ 0x8830090B, // 0031 GETMBR R12 R4 K11
+ 0x5C341000, // 0032 MOVE R13 R8
+ 0x7C280600, // 0033 CALL R10 3
+ 0x80041400, // 0034 RET 1 R10
0x70020004, // 0035 JMP #003B
- 0x8C20070A, // 0036 GETMET R8 R3 K10
- 0x8828070C, // 0037 GETMBR R10 R3 K12
- 0x4C2C0000, // 0038 LDNIL R11
- 0x7C200600, // 0039 CALL R8 3
- 0x80041000, // 003A RET 1 R8
- 0x7002002A, // 003B JMP #0067
- 0x541E000E, // 003C LDINT R7 15
- 0x1C1C0A07, // 003D EQ R7 R5 R7
- 0x741E0002, // 003E JMPT R7 #0042
- 0x541E0011, // 003F LDINT R7 18
- 0x1C1C0A07, // 0040 EQ R7 R5 R7
- 0x781E0012, // 0041 JMPF R7 #0055
- 0x881C0106, // 0042 GETMBR R7 R0 K6
- 0x8C1C0F07, // 0043 GETMET R7 R7 K7
- 0x7C1C0200, // 0044 CALL R7 1
- 0x8C1C0F08, // 0045 GETMET R7 R7 K8
- 0x58240011, // 0046 LDCONST R9 K17
- 0x7C1C0400, // 0047 CALL R7 2
- 0x781E0005, // 0048 JMPF R7 #004F
- 0x8C20070A, // 0049 GETMET R8 R3 K10
- 0x8828070B, // 004A GETMBR R10 R3 K11
- 0x5C2C0E00, // 004B MOVE R11 R7
- 0x7C200600, // 004C CALL R8 3
- 0x80041000, // 004D RET 1 R8
+ 0x8C24070A, // 0036 GETMET R9 R3 K10
+ 0x882C090C, // 0037 GETMBR R11 R4 K12
+ 0x4C300000, // 0038 LDNIL R12
+ 0x7C240600, // 0039 CALL R9 3
+ 0x80041200, // 003A RET 1 R9
+ 0x7002002B, // 003B JMP #0068
+ 0x5422000E, // 003C LDINT R8 15
+ 0x1C200C08, // 003D EQ R8 R6 R8
+ 0x74220002, // 003E JMPT R8 #0042
+ 0x54220011, // 003F LDINT R8 18
+ 0x1C200C08, // 0040 EQ R8 R6 R8
+ 0x78220012, // 0041 JMPF R8 #0055
+ 0x88200106, // 0042 GETMBR R8 R0 K6
+ 0x8C201107, // 0043 GETMET R8 R8 K7
+ 0x7C200200, // 0044 CALL R8 1
+ 0x8C201108, // 0045 GETMET R8 R8 K8
+ 0x58280011, // 0046 LDCONST R10 K17
+ 0x7C200400, // 0047 CALL R8 2
+ 0x78220005, // 0048 JMPF R8 #004F
+ 0x8C24070A, // 0049 GETMET R9 R3 K10
+ 0x882C090B, // 004A GETMBR R11 R4 K11
+ 0x5C301000, // 004B MOVE R12 R8
+ 0x7C240600, // 004C CALL R9 3
+ 0x80041200, // 004D RET 1 R9
0x70020004, // 004E JMP #0054
- 0x8C20070A, // 004F GETMET R8 R3 K10
- 0x8828070C, // 0050 GETMBR R10 R3 K12
- 0x4C2C0000, // 0051 LDNIL R11
- 0x7C200600, // 0052 CALL R8 3
- 0x80041000, // 0053 RET 1 R8
- 0x70020011, // 0054 JMP #0067
- 0x541E0010, // 0055 LDINT R7 17
- 0x1C1C0A07, // 0056 EQ R7 R5 R7
- 0x781E0006, // 0057 JMPF R7 #005F
- 0x8C1C070A, // 0058 GETMET R7 R3 K10
- 0x88240712, // 0059 GETMBR R9 R3 K18
- 0x88280106, // 005A GETMBR R10 R0 K6
- 0x88281513, // 005B GETMBR R10 R10 K19
- 0x7C1C0600, // 005C CALL R7 3
- 0x80040E00, // 005D RET 1 R7
- 0x70020007, // 005E JMP #0067
- 0x601C0003, // 005F GETGBL R7 G3
- 0x5C200000, // 0060 MOVE R8 R0
- 0x7C1C0200, // 0061 CALL R7 1
- 0x8C1C0F14, // 0062 GETMET R7 R7 K20
- 0x5C240200, // 0063 MOVE R9 R1
- 0x5C280400, // 0064 MOVE R10 R2
- 0x7C1C0600, // 0065 CALL R7 3
- 0x80040E00, // 0066 RET 1 R7
- 0x70020007, // 0067 JMP #0070
- 0x60180003, // 0068 GETGBL R6 G3
- 0x5C1C0000, // 0069 MOVE R7 R0
- 0x7C180200, // 006A CALL R6 1
- 0x8C180D14, // 006B GETMET R6 R6 K20
- 0x5C200200, // 006C MOVE R8 R1
- 0x5C240400, // 006D MOVE R9 R2
- 0x7C180600, // 006E CALL R6 3
- 0x80040C00, // 006F RET 1 R6
- 0x80000000, // 0070 RET 0
+ 0x8C24070A, // 004F GETMET R9 R3 K10
+ 0x882C090C, // 0050 GETMBR R11 R4 K12
+ 0x4C300000, // 0051 LDNIL R12
+ 0x7C240600, // 0052 CALL R9 3
+ 0x80041200, // 0053 RET 1 R9
+ 0x70020012, // 0054 JMP #0068
+ 0x54220010, // 0055 LDINT R8 17
+ 0x1C200C08, // 0056 EQ R8 R6 R8
+ 0x78220006, // 0057 JMPF R8 #005F
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h
index c27611d23..635323adf 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h
@@ -139,8 +139,8 @@ be_local_closure(Matter_Plugin_Bridge_Light0_init, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -154,7 +154,7 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* 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),
@@ -162,51 +162,52 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[44]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0005, // 0004 LDINT R6 6
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A001B, // 0006 JMPF R6 #0023
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A0005, // 000A JMPF R6 #0011
- 0x8C180706, // 000B GETMET R6 R3 K6
- 0x88200707, // 000C GETMBR R8 R3 K7
- 0x88240108, // 000D GETMBR R9 R0 K8
- 0x7C180600, // 000E CALL R6 3
- 0x80040C00, // 000F RET 1 R6
+ ( &(const binstruction[45]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0005, // 000A JMPF R7 #0011
+ 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
- 0x541AFFFB, // 0011 LDINT R6 65532
- 0x1C180A06, // 0012 EQ R6 R5 R6
- 0x781A0005, // 0013 JMPF R6 #001A
- 0x8C180706, // 0014 GETMET R6 R3 K6
- 0x88200709, // 0015 GETMBR R8 R3 K9
- 0x58240005, // 0016 LDCONST R9 K5
- 0x7C180600, // 0017 CALL R6 3
- 0x80040C00, // 0018 RET 1 R6
+ 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
- 0x541AFFFC, // 001A LDINT R6 65533
- 0x1C180A06, // 001B EQ R6 R5 R6
- 0x781A0004, // 001C JMPF R6 #0022
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200709, // 001E GETMBR R8 R3 K9
- 0x54260003, // 001F LDINT R9 4
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
- 0x70020007, // 0022 JMP #002B
- 0x60180003, // 0023 GETGBL R6 G3
- 0x5C1C0000, // 0024 MOVE R7 R0
- 0x7C180200, // 0025 CALL R6 1
- 0x8C180D0A, // 0026 GETMET R6 R6 K10
- 0x5C200200, // 0027 MOVE R8 R1
- 0x5C240400, // 0028 MOVE R9 R2
- 0x7C180600, // 0029 CALL R6 3
- 0x80040C00, // 002A RET 1 R6
- 0x80000000, // 002B RET 0
+ 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
})
)
);
@@ -300,57 +301,54 @@ be_local_closure(Matter_Plugin_Bridge_Light0_invoke_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
+ ( &(const bvalue[ 9]) { /* 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_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set_onoff),
- /* K7 */ be_const_int(1),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(shadow_onoff),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(set_onoff),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[36]) { /* code */
+ ( &(const binstruction[34]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E001B, // 0006 JMPF R7 #0023
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0005, // 000A JMPF R7 #0011
- 0x8C1C0106, // 000B GETMET R7 R0 K6
- 0x50240000, // 000C LDBOOL R9 0 0
- 0x7C1C0400, // 000D CALL R7 2
- 0x501C0200, // 000E LDBOOL R7 1 0
- 0x80040E00, // 000F RET 1 R7
- 0x70020011, // 0010 JMP #0023
- 0x1C1C0D07, // 0011 EQ R7 R6 K7
- 0x781E0005, // 0012 JMPF R7 #0019
- 0x8C1C0106, // 0013 GETMET R7 R0 K6
- 0x50240200, // 0014 LDBOOL R9 1 0
- 0x7C1C0400, // 0015 CALL R7 2
- 0x501C0200, // 0016 LDBOOL R7 1 0
- 0x80040E00, // 0017 RET 1 R7
- 0x70020009, // 0018 JMP #0023
- 0x1C1C0D08, // 0019 EQ R7 R6 K8
- 0x781E0007, // 001A JMPF R7 #0023
- 0x8C1C0106, // 001B GETMET R7 R0 K6
- 0x88240109, // 001C GETMBR R9 R0 K9
- 0x78260000, // 001D JMPF R9 #001F
- 0x50240001, // 001E LDBOOL R9 0 1
- 0x50240200, // 001F LDBOOL R9 1 0
- 0x7C1C0400, // 0020 CALL R7 2
- 0x501C0200, // 0021 LDBOOL R7 1 0
- 0x80040E00, // 0022 RET 1 R7
- 0x80000000, // 0023 RET 0
+ 0x781E0019, // 0006 JMPF R7 #0021
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0005, // 0008 JMPF R7 #000F
+ 0x8C1C0105, // 0009 GETMET R7 R0 K5
+ 0x50240000, // 000A LDBOOL R9 0 0
+ 0x7C1C0400, // 000B CALL R7 2
+ 0x501C0200, // 000C LDBOOL R7 1 0
+ 0x80040E00, // 000D RET 1 R7
+ 0x70020011, // 000E JMP #0021
+ 0x1C1C0D06, // 000F EQ R7 R6 K6
+ 0x781E0005, // 0010 JMPF R7 #0017
+ 0x8C1C0105, // 0011 GETMET R7 R0 K5
+ 0x50240200, // 0012 LDBOOL R9 1 0
+ 0x7C1C0400, // 0013 CALL R7 2
+ 0x501C0200, // 0014 LDBOOL R7 1 0
+ 0x80040E00, // 0015 RET 1 R7
+ 0x70020009, // 0016 JMP #0021
+ 0x1C1C0D07, // 0017 EQ R7 R6 K7
+ 0x781E0007, // 0018 JMPF R7 #0021
+ 0x8C1C0105, // 0019 GETMET R7 R0 K5
+ 0x88240108, // 001A GETMBR R9 R0 K8
+ 0x78260000, // 001B JMPF R9 #001D
+ 0x50240001, // 001C LDBOOL R9 0 1
+ 0x50240200, // 001D LDBOOL R9 1 0
+ 0x7C1C0400, // 001E CALL R7 2
+ 0x501C0200, // 001F LDBOOL R7 1 0
+ 0x80040E00, // 0020 RET 1 R7
+ 0x80000000, // 0021 RET 0
})
)
);
@@ -484,7 +482,7 @@ be_local_class(Matter_Plugin_Bridge_Light0,
})) ) } )) },
{ be_const_key_weak(read_attribute, 9), be_const_closure(Matter_Plugin_Bridge_Light0_read_attribute_closure) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Bridge_Light0_invoke_request_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Power_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Power_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light0) },
{ be_const_key_weak(shadow_onoff, -1), be_const_var(1) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h
index 79242c156..e14326c29 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h
@@ -19,115 +19,112 @@ be_local_closure(Matter_Plugin_Bridge_Light1_invoke_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
+ ( &(const bvalue[14]) { /* 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_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(findsubval),
- /* K7 */ be_nested_str_weak(set_bri),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(bri_X3A),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(2),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(set_onoff),
- /* K14 */ be_nested_str_weak(invoke_request),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(findsubval),
+ /* K6 */ be_nested_str_weak(set_bri),
+ /* K7 */ be_nested_str_weak(log),
+ /* K8 */ be_nested_str_weak(bri_X3A),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_const_int(3),
+ /* K12 */ be_nested_str_weak(set_onoff),
+ /* K13 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[89]) { /* code */
+ ( &(const binstruction[87]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E0007, // 0004 LDINT R7 8
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0047, // 0006 JMPF R7 #004F
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E000D, // 000A JMPF R7 #0019
- 0x8C1C0506, // 000B GETMET R7 R2 K6
- 0x58240005, // 000C LDCONST R9 K5
- 0x7C1C0400, // 000D CALL R7 2
- 0x8C200107, // 000E GETMET R8 R0 K7
- 0x5C280E00, // 000F MOVE R10 R7
- 0x7C200400, // 0010 CALL R8 2
- 0x60200008, // 0011 GETGBL R8 G8
- 0x5C240E00, // 0012 MOVE R9 R7
- 0x7C200200, // 0013 CALL R8 1
- 0x00221208, // 0014 ADD R8 K9 R8
- 0x900E1008, // 0015 SETMBR R3 K8 R8
- 0x50200200, // 0016 LDBOOL R8 1 0
- 0x80041000, // 0017 RET 1 R8
- 0x70020034, // 0018 JMP #004E
- 0x1C1C0D0A, // 0019 EQ R7 R6 K10
- 0x781E0002, // 001A JMPF R7 #001E
- 0x501C0200, // 001B LDBOOL R7 1 0
- 0x80040E00, // 001C RET 1 R7
- 0x7002002F, // 001D JMP #004E
- 0x1C1C0D0B, // 001E EQ R7 R6 K11
- 0x781E0002, // 001F JMPF R7 #0023
- 0x501C0200, // 0020 LDBOOL R7 1 0
- 0x80040E00, // 0021 RET 1 R7
- 0x7002002A, // 0022 JMP #004E
- 0x1C1C0D0C, // 0023 EQ R7 R6 K12
- 0x781E0002, // 0024 JMPF R7 #0028
- 0x501C0200, // 0025 LDBOOL R7 1 0
- 0x80040E00, // 0026 RET 1 R7
- 0x70020025, // 0027 JMP #004E
- 0x541E0003, // 0028 LDINT R7 4
- 0x1C1C0C07, // 0029 EQ R7 R6 R7
- 0x781E0011, // 002A JMPF R7 #003D
- 0x8C1C0506, // 002B GETMET R7 R2 K6
- 0x58240005, // 002C LDCONST R9 K5
- 0x7C1C0400, // 002D CALL R7 2
- 0x8C200107, // 002E GETMET R8 R0 K7
- 0x5C280E00, // 002F MOVE R10 R7
- 0x7C200400, // 0030 CALL R8 2
- 0x24200F05, // 0031 GT R8 R7 K5
- 0x8C24010D, // 0032 GETMET R9 R0 K13
- 0x5C2C1000, // 0033 MOVE R11 R8
- 0x7C240400, // 0034 CALL R9 2
- 0x60240008, // 0035 GETGBL R9 G8
- 0x5C280E00, // 0036 MOVE R10 R7
- 0x7C240200, // 0037 CALL R9 1
- 0x00261209, // 0038 ADD R9 K9 R9
- 0x900E1009, // 0039 SETMBR R3 K8 R9
- 0x50240200, // 003A LDBOOL R9 1 0
- 0x80041200, // 003B RET 1 R9
- 0x70020010, // 003C JMP #004E
- 0x541E0004, // 003D LDINT R7 5
- 0x1C1C0C07, // 003E EQ R7 R6 R7
- 0x781E0002, // 003F JMPF R7 #0043
- 0x501C0200, // 0040 LDBOOL R7 1 0
- 0x80040E00, // 0041 RET 1 R7
- 0x7002000A, // 0042 JMP #004E
- 0x541E0005, // 0043 LDINT R7 6
- 0x1C1C0C07, // 0044 EQ R7 R6 R7
- 0x781E0002, // 0045 JMPF R7 #0049
- 0x501C0200, // 0046 LDBOOL R7 1 0
- 0x80040E00, // 0047 RET 1 R7
- 0x70020004, // 0048 JMP #004E
- 0x541E0006, // 0049 LDINT R7 7
- 0x1C1C0C07, // 004A EQ R7 R6 R7
- 0x781E0001, // 004B JMPF R7 #004E
- 0x501C0200, // 004C LDBOOL R7 1 0
- 0x80040E00, // 004D RET 1 R7
- 0x70020008, // 004E JMP #0058
- 0x601C0003, // 004F GETGBL R7 G3
- 0x5C200000, // 0050 MOVE R8 R0
- 0x7C1C0200, // 0051 CALL R7 1
- 0x8C1C0F0E, // 0052 GETMET R7 R7 K14
- 0x5C240200, // 0053 MOVE R9 R1
- 0x5C280400, // 0054 MOVE R10 R2
- 0x5C2C0600, // 0055 MOVE R11 R3
- 0x7C1C0800, // 0056 CALL R7 4
- 0x80040E00, // 0057 RET 1 R7
- 0x80000000, // 0058 RET 0
+ 0x781E0045, // 0006 JMPF R7 #004D
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000D, // 0008 JMPF R7 #0017
+ 0x8C1C0505, // 0009 GETMET R7 R2 K5
+ 0x58240004, // 000A LDCONST R9 K4
+ 0x7C1C0400, // 000B CALL R7 2
+ 0x8C200106, // 000C GETMET R8 R0 K6
+ 0x5C280E00, // 000D MOVE R10 R7
+ 0x7C200400, // 000E CALL R8 2
+ 0x60200008, // 000F GETGBL R8 G8
+ 0x5C240E00, // 0010 MOVE R9 R7
+ 0x7C200200, // 0011 CALL R8 1
+ 0x00221008, // 0012 ADD R8 K8 R8
+ 0x900E0E08, // 0013 SETMBR R3 K7 R8
+ 0x50200200, // 0014 LDBOOL R8 1 0
+ 0x80041000, // 0015 RET 1 R8
+ 0x70020034, // 0016 JMP #004C
+ 0x1C1C0D09, // 0017 EQ R7 R6 K9
+ 0x781E0002, // 0018 JMPF R7 #001C
+ 0x501C0200, // 0019 LDBOOL R7 1 0
+ 0x80040E00, // 001A RET 1 R7
+ 0x7002002F, // 001B JMP #004C
+ 0x1C1C0D0A, // 001C EQ R7 R6 K10
+ 0x781E0002, // 001D JMPF R7 #0021
+ 0x501C0200, // 001E LDBOOL R7 1 0
+ 0x80040E00, // 001F RET 1 R7
+ 0x7002002A, // 0020 JMP #004C
+ 0x1C1C0D0B, // 0021 EQ R7 R6 K11
+ 0x781E0002, // 0022 JMPF R7 #0026
+ 0x501C0200, // 0023 LDBOOL R7 1 0
+ 0x80040E00, // 0024 RET 1 R7
+ 0x70020025, // 0025 JMP #004C
+ 0x541E0003, // 0026 LDINT R7 4
+ 0x1C1C0C07, // 0027 EQ R7 R6 R7
+ 0x781E0011, // 0028 JMPF R7 #003B
+ 0x8C1C0505, // 0029 GETMET R7 R2 K5
+ 0x58240004, // 002A LDCONST R9 K4
+ 0x7C1C0400, // 002B CALL R7 2
+ 0x8C200106, // 002C GETMET R8 R0 K6
+ 0x5C280E00, // 002D MOVE R10 R7
+ 0x7C200400, // 002E CALL R8 2
+ 0x24200F04, // 002F GT R8 R7 K4
+ 0x8C24010C, // 0030 GETMET R9 R0 K12
+ 0x5C2C1000, // 0031 MOVE R11 R8
+ 0x7C240400, // 0032 CALL R9 2
+ 0x60240008, // 0033 GETGBL R9 G8
+ 0x5C280E00, // 0034 MOVE R10 R7
+ 0x7C240200, // 0035 CALL R9 1
+ 0x00261009, // 0036 ADD R9 K8 R9
+ 0x900E0E09, // 0037 SETMBR R3 K7 R9
+ 0x50240200, // 0038 LDBOOL R9 1 0
+ 0x80041200, // 0039 RET 1 R9
+ 0x70020010, // 003A JMP #004C
+ 0x541E0004, // 003B LDINT R7 5
+ 0x1C1C0C07, // 003C EQ R7 R6 R7
+ 0x781E0002, // 003D JMPF R7 #0041
+ 0x501C0200, // 003E LDBOOL R7 1 0
+ 0x80040E00, // 003F RET 1 R7
+ 0x7002000A, // 0040 JMP #004C
+ 0x541E0005, // 0041 LDINT R7 6
+ 0x1C1C0C07, // 0042 EQ R7 R6 R7
+ 0x781E0002, // 0043 JMPF R7 #0047
+ 0x501C0200, // 0044 LDBOOL R7 1 0
+ 0x80040E00, // 0045 RET 1 R7
+ 0x70020004, // 0046 JMP #004C
+ 0x541E0006, // 0047 LDINT R7 7
+ 0x1C1C0C07, // 0048 EQ R7 R6 R7
+ 0x781E0001, // 0049 JMPF R7 #004C
+ 0x501C0200, // 004A LDBOOL R7 1 0
+ 0x80040E00, // 004B RET 1 R7
+ 0x70020008, // 004C JMP #0056
+ 0x601C0003, // 004D GETGBL R7 G3
+ 0x5C200000, // 004E MOVE R8 R0
+ 0x7C1C0200, // 004F CALL R7 1
+ 0x8C1C0F0D, // 0050 GETMET R7 R7 K13
+ 0x5C240200, // 0051 MOVE R9 R1
+ 0x5C280400, // 0052 MOVE R10 R2
+ 0x5C2C0600, // 0053 MOVE R11 R3
+ 0x7C1C0800, // 0054 CALL R7 4
+ 0x80040E00, // 0055 RET 1 R7
+ 0x80000000, // 0056 RET 0
})
)
);
@@ -139,8 +136,8 @@ be_local_closure(Matter_Plugin_Bridge_Light1_invoke_request, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -155,7 +152,7 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(shadow_bri),
- /* K7 */ be_nested_str_weak(create_TLV),
+ /* K7 */ be_nested_str_weak(set),
/* K8 */ be_nested_str_weak(U1),
/* K9 */ be_nested_str_weak(NULL),
/* K10 */ be_const_int(2),
@@ -166,105 +163,106 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[98]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0007, // 0004 LDINT R6 8
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0051, // 0006 JMPF R6 #0059
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A000F, // 000A JMPF R6 #001B
- 0x88180106, // 000B GETMBR R6 R0 K6
- 0x4C1C0000, // 000C LDNIL R7
- 0x20180C07, // 000D NE R6 R6 R7
- 0x781A0005, // 000E JMPF R6 #0015
- 0x8C180707, // 000F GETMET R6 R3 K7
- 0x88200708, // 0010 GETMBR R8 R3 K8
- 0x88240106, // 0011 GETMBR R9 R0 K6
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(const binstruction[99]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E000F, // 000A JMPF R7 #001B
+ 0x881C0106, // 000B GETMBR R7 R0 K6
+ 0x4C200000, // 000C LDNIL R8
+ 0x201C0E08, // 000D NE R7 R7 R8
+ 0x781E0005, // 000E JMPF R7 #0015
+ 0x8C1C0707, // 000F GETMET R7 R3 K7
+ 0x88240908, // 0010 GETMBR R9 R4 K8
+ 0x88280106, // 0011 GETMBR R10 R0 K6
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180707, // 0015 GETMET R6 R3 K7
- 0x88200709, // 0016 GETMBR R8 R3 K9
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0707, // 0015 GETMET R7 R3 K7
+ 0x88240909, // 0016 GETMBR R9 R4 K9
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x7002003C, // 001A JMP #0058
- 0x1C180B0A, // 001B EQ R6 R5 K10
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180707, // 001D GETMET R6 R3 K7
- 0x88200708, // 001E GETMBR R8 R3 K8
- 0x58240005, // 001F LDCONST R9 K5
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
+ 0x1C1C0D0A, // 001B EQ R7 R6 K10
+ 0x781E0005, // 001C JMPF R7 #0023
+ 0x8C1C0707, // 001D GETMET R7 R3 K7
+ 0x88240908, // 001E GETMBR R9 R4 K8
+ 0x58280005, // 001F LDCONST R10 K5
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x80040E00, // 0021 RET 1 R7
0x70020034, // 0022 JMP #0058
- 0x1C180B0B, // 0023 EQ R6 R5 K11
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180707, // 0025 GETMET R6 R3 K7
- 0x88200708, // 0026 GETMBR R8 R3 K8
- 0x542600FD, // 0027 LDINT R9 254
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x1C1C0D0B, // 0023 EQ R7 R6 K11
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 0x8C1C0707, // 0025 GETMET R7 R3 K7
+ 0x88240908, // 0026 GETMBR R9 R4 K8
+ 0x542A00FD, // 0027 LDINT R10 254
+ 0x7C1C0600, // 0028 CALL R7 3
+ 0x80040E00, // 0029 RET 1 R7
0x7002002C, // 002A JMP #0058
- 0x541A000E, // 002B LDINT R6 15
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180707, // 002E GETMET R6 R3 K7
- 0x88200708, // 002F GETMBR R8 R3 K8
- 0x58240005, // 0030 LDCONST R9 K5
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 0x541E000E, // 002B LDINT R7 15
+ 0x1C1C0C07, // 002C EQ R7 R6 R7
+ 0x781E0005, // 002D JMPF R7 #0034
+ 0x8C1C0707, // 002E GETMET R7 R3 K7
+ 0x88240908, // 002F GETMBR R9 R4 K8
+ 0x58280005, // 0030 LDCONST R10 K5
+ 0x7C1C0600, // 0031 CALL R7 3
+ 0x80040E00, // 0032 RET 1 R7
0x70020023, // 0033 JMP #0058
- 0x541A0010, // 0034 LDINT R6 17
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A000F, // 0036 JMPF R6 #0047
- 0x88180106, // 0037 GETMBR R6 R0 K6
- 0x4C1C0000, // 0038 LDNIL R7
- 0x20180C07, // 0039 NE R6 R6 R7
- 0x781A0005, // 003A JMPF R6 #0041
- 0x8C180707, // 003B GETMET R6 R3 K7
- 0x88200708, // 003C GETMBR R8 R3 K8
- 0x88240106, // 003D GETMBR R9 R0 K6
- 0x7C180600, // 003E CALL R6 3
- 0x80040C00, // 003F RET 1 R6
+ 0x541E0010, // 0034 LDINT R7 17
+ 0x1C1C0C07, // 0035 EQ R7 R6 R7
+ 0x781E000F, // 0036 JMPF R7 #0047
+ 0x881C0106, // 0037 GETMBR R7 R0 K6
+ 0x4C200000, // 0038 LDNIL R8
+ 0x201C0E08, // 0039 NE R7 R7 R8
+ 0x781E0005, // 003A JMPF R7 #0041
+ 0x8C1C0707, // 003B GETMET R7 R3 K7
+ 0x88240908, // 003C GETMBR R9 R4 K8
+ 0x88280106, // 003D GETMBR R10 R0 K6
+ 0x7C1C0600, // 003E CALL R7 3
+ 0x80040E00, // 003F RET 1 R7
0x70020004, // 0040 JMP #0046
- 0x8C180707, // 0041 GETMET R6 R3 K7
- 0x88200709, // 0042 GETMBR R8 R3 K9
- 0x4C240000, // 0043 LDNIL R9
- 0x7C180600, // 0044 CALL R6 3
- 0x80040C00, // 0045 RET 1 R6
+ 0x8C1C0707, // 0041 GETMET R7 R3 K7
+ 0x88240909, // 0042 GETMBR R9 R4 K9
+ 0x4C280000, // 0043 LDNIL R10
+ 0x7C1C0600, // 0044 CALL R7 3
+ 0x80040E00, // 0045 RET 1 R7
0x70020010, // 0046 JMP #0058
- 0x541AFFFB, // 0047 LDINT R6 65532
- 0x1C180A06, // 0048 EQ R6 R5 R6
- 0x781A0005, // 0049 JMPF R6 #0050
- 0x8C180707, // 004A GETMET R6 R3 K7
- 0x8820070C, // 004B GETMBR R8 R3 K12
- 0x5824000D, // 004C LDCONST R9 K13
- 0x7C180600, // 004D CALL R6 3
- 0x80040C00, // 004E RET 1 R6
+ 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
+ 0x80040E00, // 004E RET 1 R7
0x70020007, // 004F JMP #0058
- 0x541AFFFC, // 0050 LDINT R6 65533
- 0x1C180A06, // 0051 EQ R6 R5 R6
- 0x781A0004, // 0052 JMPF R6 #0058
- 0x8C180707, // 0053 GETMET R6 R3 K7
- 0x8820070C, // 0054 GETMBR R8 R3 K12
- 0x54260004, // 0055 LDINT R9 5
- 0x7C180600, // 0056 CALL R6 3
- 0x80040C00, // 0057 RET 1 R6
- 0x70020007, // 0058 JMP #0061
- 0x60180003, // 0059 GETGBL R6 G3
- 0x5C1C0000, // 005A MOVE R7 R0
- 0x7C180200, // 005B CALL R6 1
- 0x8C180D0E, // 005C GETMET R6 R6 K14
- 0x5C200200, // 005D MOVE R8 R1
- 0x5C240400, // 005E MOVE R9 R2
- 0x7C180600, // 005F CALL R6 3
- 0x80040C00, // 0060 RET 1 R6
- 0x80000000, // 0061 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h
index b38775852..1dc7e126f 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h
@@ -260,86 +260,83 @@ be_local_closure(Matter_Plugin_Bridge_Light2_invoke_request, /* 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),
/* K3 */ be_nested_str_weak(command),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_nested_str_weak(findsubval),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(ct_min),
- /* K8 */ be_nested_str_weak(ct_max),
- /* K9 */ be_nested_str_weak(set_ct),
- /* K10 */ be_nested_str_weak(log),
- /* K11 */ be_nested_str_weak(ct_X3A),
- /* K12 */ be_nested_str_weak(invoke_request),
+ /* K4 */ be_nested_str_weak(findsubval),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(ct_min),
+ /* K7 */ be_nested_str_weak(ct_max),
+ /* K8 */ be_nested_str_weak(set_ct),
+ /* K9 */ be_nested_str_weak(log),
+ /* K10 */ be_nested_str_weak(ct_X3A),
+ /* K11 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[62]) { /* code */
+ ( &(const binstruction[60]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E02FF, // 0004 LDINT R7 768
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E002C, // 0006 JMPF R7 #0034
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x541E0009, // 0009 LDINT R7 10
- 0x1C1C0C07, // 000A EQ R7 R6 R7
- 0x781E0015, // 000B JMPF R7 #0022
- 0x8C1C0505, // 000C GETMET R7 R2 K5
- 0x58240006, // 000D LDCONST R9 K6
- 0x7C1C0400, // 000E CALL R7 2
- 0x88200107, // 000F GETMBR R8 R0 K7
- 0x14200E08, // 0010 LT R8 R7 R8
- 0x78220000, // 0011 JMPF R8 #0013
- 0x881C0107, // 0012 GETMBR R7 R0 K7
- 0x88200108, // 0013 GETMBR R8 R0 K8
- 0x24200E08, // 0014 GT R8 R7 R8
- 0x78220000, // 0015 JMPF R8 #0017
- 0x881C0108, // 0016 GETMBR R7 R0 K8
- 0x8C200109, // 0017 GETMET R8 R0 K9
- 0x5C280E00, // 0018 MOVE R10 R7
- 0x7C200400, // 0019 CALL R8 2
- 0x60200008, // 001A GETGBL R8 G8
- 0x5C240E00, // 001B MOVE R9 R7
- 0x7C200200, // 001C CALL R8 1
- 0x00221608, // 001D ADD R8 K11 R8
- 0x900E1408, // 001E SETMBR R3 K10 R8
- 0x50200200, // 001F LDBOOL R8 1 0
- 0x80041000, // 0020 RET 1 R8
- 0x70020010, // 0021 JMP #0033
- 0x541E0046, // 0022 LDINT R7 71
- 0x1C1C0C07, // 0023 EQ R7 R6 R7
- 0x781E0002, // 0024 JMPF R7 #0028
- 0x501C0200, // 0025 LDBOOL R7 1 0
- 0x80040E00, // 0026 RET 1 R7
- 0x7002000A, // 0027 JMP #0033
- 0x541E004A, // 0028 LDINT R7 75
- 0x1C1C0C07, // 0029 EQ R7 R6 R7
- 0x781E0002, // 002A JMPF R7 #002E
- 0x501C0200, // 002B LDBOOL R7 1 0
- 0x80040E00, // 002C RET 1 R7
- 0x70020004, // 002D JMP #0033
- 0x541E004B, // 002E LDINT R7 76
- 0x1C1C0C07, // 002F EQ R7 R6 R7
- 0x781E0001, // 0030 JMPF R7 #0033
- 0x501C0200, // 0031 LDBOOL R7 1 0
- 0x80040E00, // 0032 RET 1 R7
- 0x70020008, // 0033 JMP #003D
- 0x601C0003, // 0034 GETGBL R7 G3
- 0x5C200000, // 0035 MOVE R8 R0
- 0x7C1C0200, // 0036 CALL R7 1
- 0x8C1C0F0C, // 0037 GETMET R7 R7 K12
- 0x5C240200, // 0038 MOVE R9 R1
- 0x5C280400, // 0039 MOVE R10 R2
- 0x5C2C0600, // 003A MOVE R11 R3
- 0x7C1C0800, // 003B CALL R7 4
- 0x80040E00, // 003C RET 1 R7
- 0x80000000, // 003D RET 0
+ 0x781E002A, // 0006 JMPF R7 #0032
+ 0x541E0009, // 0007 LDINT R7 10
+ 0x1C1C0C07, // 0008 EQ R7 R6 R7
+ 0x781E0015, // 0009 JMPF R7 #0020
+ 0x8C1C0504, // 000A GETMET R7 R2 K4
+ 0x58240005, // 000B LDCONST R9 K5
+ 0x7C1C0400, // 000C CALL R7 2
+ 0x88200106, // 000D GETMBR R8 R0 K6
+ 0x14200E08, // 000E LT R8 R7 R8
+ 0x78220000, // 000F JMPF R8 #0011
+ 0x881C0106, // 0010 GETMBR R7 R0 K6
+ 0x88200107, // 0011 GETMBR R8 R0 K7
+ 0x24200E08, // 0012 GT R8 R7 R8
+ 0x78220000, // 0013 JMPF R8 #0015
+ 0x881C0107, // 0014 GETMBR R7 R0 K7
+ 0x8C200108, // 0015 GETMET R8 R0 K8
+ 0x5C280E00, // 0016 MOVE R10 R7
+ 0x7C200400, // 0017 CALL R8 2
+ 0x60200008, // 0018 GETGBL R8 G8
+ 0x5C240E00, // 0019 MOVE R9 R7
+ 0x7C200200, // 001A CALL R8 1
+ 0x00221408, // 001B ADD R8 K10 R8
+ 0x900E1208, // 001C SETMBR R3 K9 R8
+ 0x50200200, // 001D LDBOOL R8 1 0
+ 0x80041000, // 001E RET 1 R8
+ 0x70020010, // 001F JMP #0031
+ 0x541E0046, // 0020 LDINT R7 71
+ 0x1C1C0C07, // 0021 EQ R7 R6 R7
+ 0x781E0002, // 0022 JMPF R7 #0026
+ 0x501C0200, // 0023 LDBOOL R7 1 0
+ 0x80040E00, // 0024 RET 1 R7
+ 0x7002000A, // 0025 JMP #0031
+ 0x541E004A, // 0026 LDINT R7 75
+ 0x1C1C0C07, // 0027 EQ R7 R6 R7
+ 0x781E0002, // 0028 JMPF R7 #002C
+ 0x501C0200, // 0029 LDBOOL R7 1 0
+ 0x80040E00, // 002A RET 1 R7
+ 0x70020004, // 002B JMP #0031
+ 0x541E004B, // 002C LDINT R7 76
+ 0x1C1C0C07, // 002D EQ R7 R6 R7
+ 0x781E0001, // 002E JMPF R7 #0031
+ 0x501C0200, // 002F LDBOOL R7 1 0
+ 0x80040E00, // 0030 RET 1 R7
+ 0x70020008, // 0031 JMP #003B
+ 0x601C0003, // 0032 GETGBL R7 G3
+ 0x5C200000, // 0033 MOVE R8 R0
+ 0x7C1C0200, // 0034 CALL R7 1
+ 0x8C1C0F0B, // 0035 GETMET R7 R7 K11
+ 0x5C240200, // 0036 MOVE R9 R1
+ 0x5C280400, // 0037 MOVE R10 R2
+ 0x5C2C0600, // 0038 MOVE R11 R3
+ 0x7C1C0800, // 0039 CALL R7 4
+ 0x80040E00, // 003A RET 1 R7
+ 0x80000000, // 003B RET 0
})
)
);
@@ -394,8 +391,8 @@ be_local_closure(Matter_Plugin_Bridge_Light2_update_ct_minmax, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -409,7 +406,7 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_nested_str_weak(shadow_ct),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U1),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(2),
@@ -421,107 +418,108 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[100]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A02FF, // 0004 LDINT R6 768
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0053, // 0006 JMPF R6 #005B
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x541A0006, // 0009 LDINT R6 7
- 0x1C180A06, // 000A EQ R6 R5 R6
- 0x781A000F, // 000B JMPF R6 #001C
- 0x88180105, // 000C GETMBR R6 R0 K5
- 0x4C1C0000, // 000D LDNIL R7
- 0x20180C07, // 000E NE R6 R6 R7
- 0x781A0005, // 000F JMPF R6 #0016
- 0x8C180706, // 0010 GETMET R6 R3 K6
- 0x88200707, // 0011 GETMBR R8 R3 K7
- 0x88240105, // 0012 GETMBR R9 R0 K5
- 0x7C180600, // 0013 CALL R6 3
- 0x80040C00, // 0014 RET 1 R6
+ ( &(const binstruction[101]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x541E0006, // 0009 LDINT R7 7
+ 0x1C1C0C07, // 000A EQ R7 R6 R7
+ 0x781E000F, // 000B JMPF R7 #001C
+ 0x881C0105, // 000C GETMBR R7 R0 K5
+ 0x4C200000, // 000D LDNIL R8
+ 0x201C0E08, // 000E NE R7 R7 R8
+ 0x781E0005, // 000F JMPF R7 #0016
+ 0x8C1C0706, // 0010 GETMET R7 R3 K6
+ 0x88240907, // 0011 GETMBR R9 R4 K7
+ 0x88280105, // 0012 GETMBR R10 R0 K5
+ 0x7C1C0600, // 0013 CALL R7 3
+ 0x80040E00, // 0014 RET 1 R7
0x70020004, // 0015 JMP #001B
- 0x8C180706, // 0016 GETMET R6 R3 K6
- 0x88200708, // 0017 GETMBR R8 R3 K8
- 0x4C240000, // 0018 LDNIL R9
- 0x7C180600, // 0019 CALL R6 3
- 0x80040C00, // 001A RET 1 R6
+ 0x8C1C0706, // 0016 GETMET R7 R3 K6
+ 0x88240908, // 0017 GETMBR R9 R4 K8
+ 0x4C280000, // 0018 LDNIL R10
+ 0x7C1C0600, // 0019 CALL R7 3
+ 0x80040E00, // 001A RET 1 R7
0x7002003D, // 001B JMP #005A
- 0x541A0007, // 001C LDINT R6 8
- 0x1C180A06, // 001D EQ R6 R5 R6
- 0x781A0005, // 001E JMPF R6 #0025
- 0x8C180706, // 001F GETMET R6 R3 K6
- 0x88200707, // 0020 GETMBR R8 R3 K7
- 0x58240009, // 0021 LDCONST R9 K9
- 0x7C180600, // 0022 CALL R6 3
- 0x80040C00, // 0023 RET 1 R6
+ 0x541E0007, // 001C LDINT R7 8
+ 0x1C1C0C07, // 001D EQ R7 R6 R7
+ 0x781E0005, // 001E JMPF R7 #0025
+ 0x8C1C0706, // 001F GETMET R7 R3 K6
+ 0x88240907, // 0020 GETMBR R9 R4 K7
+ 0x58280009, // 0021 LDCONST R10 K9
+ 0x7C1C0600, // 0022 CALL R7 3
+ 0x80040E00, // 0023 RET 1 R7
0x70020034, // 0024 JMP #005A
- 0x541A000E, // 0025 LDINT R6 15
- 0x1C180A06, // 0026 EQ R6 R5 R6
- 0x781A0005, // 0027 JMPF R6 #002E
- 0x8C180706, // 0028 GETMET R6 R3 K6
- 0x88200707, // 0029 GETMBR R8 R3 K7
- 0x5824000A, // 002A LDCONST R9 K10
- 0x7C180600, // 002B CALL R6 3
- 0x80040C00, // 002C RET 1 R6
+ 0x541E000E, // 0025 LDINT R7 15
+ 0x1C1C0C07, // 0026 EQ R7 R6 R7
+ 0x781E0005, // 0027 JMPF R7 #002E
+ 0x8C1C0706, // 0028 GETMET R7 R3 K6
+ 0x88240907, // 0029 GETMBR R9 R4 K7
+ 0x5828000A, // 002A LDCONST R10 K10
+ 0x7C1C0600, // 002B CALL R7 3
+ 0x80040E00, // 002C RET 1 R7
0x7002002B, // 002D JMP #005A
- 0x541A400A, // 002E LDINT R6 16395
- 0x1C180A06, // 002F EQ R6 R5 R6
- 0x781A0005, // 0030 JMPF R6 #0037
- 0x8C180706, // 0031 GETMET R6 R3 K6
- 0x88200707, // 0032 GETMBR R8 R3 K7
- 0x8824010B, // 0033 GETMBR R9 R0 K11
- 0x7C180600, // 0034 CALL R6 3
- 0x80040C00, // 0035 RET 1 R6
+ 0x541E400A, // 002E LDINT R7 16395
+ 0x1C1C0C07, // 002F EQ R7 R6 R7
+ 0x781E0005, // 0030 JMPF R7 #0037
+ 0x8C1C0706, // 0031 GETMET R7 R3 K6
+ 0x88240907, // 0032 GETMBR R9 R4 K7
+ 0x8828010B, // 0033 GETMBR R10 R0 K11
+ 0x7C1C0600, // 0034 CALL R7 3
+ 0x80040E00, // 0035 RET 1 R7
0x70020022, // 0036 JMP #005A
- 0x541A400B, // 0037 LDINT R6 16396
- 0x1C180A06, // 0038 EQ R6 R5 R6
- 0x781A0005, // 0039 JMPF R6 #0040
- 0x8C180706, // 003A GETMET R6 R3 K6
- 0x88200707, // 003B GETMBR R8 R3 K7
- 0x8824010C, // 003C GETMBR R9 R0 K12
- 0x7C180600, // 003D CALL R6 3
- 0x80040C00, // 003E RET 1 R6
+ 0x541E400B, // 0037 LDINT R7 16396
+ 0x1C1C0C07, // 0038 EQ R7 R6 R7
+ 0x781E0005, // 0039 JMPF R7 #0040
+ 0x8C1C0706, // 003A GETMET R7 R3 K6
+ 0x88240907, // 003B GETMBR R9 R4 K7
+ 0x8828010C, // 003C GETMBR R10 R0 K12
+ 0x7C1C0600, // 003D CALL R7 3
+ 0x80040E00, // 003E RET 1 R7
0x70020019, // 003F JMP #005A
- 0x541A4009, // 0040 LDINT R6 16394
- 0x1C180A06, // 0041 EQ R6 R5 R6
- 0x781A0005, // 0042 JMPF R6 #0049
- 0x8C180706, // 0043 GETMET R6 R3 K6
- 0x8820070D, // 0044 GETMBR R8 R3 K13
- 0x5426000F, // 0045 LDINT R9 16
- 0x7C180600, // 0046 CALL R6 3
- 0x80040C00, // 0047 RET 1 R6
+ 0x541E4009, // 0040 LDINT R7 16394
+ 0x1C1C0C07, // 0041 EQ R7 R6 R7
+ 0x781E0005, // 0042 JMPF R7 #0049
+ 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
- 0x541AFFFB, // 0049 LDINT R6 65532
- 0x1C180A06, // 004A EQ R6 R5 R6
- 0x781A0005, // 004B JMPF R6 #0052
- 0x8C180706, // 004C GETMET R6 R3 K6
- 0x8820070D, // 004D GETMBR R8 R3 K13
- 0x5426000F, // 004E LDINT R9 16
- 0x7C180600, // 004F CALL R6 3
- 0x80040C00, // 0050 RET 1 R6
+ 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
+ 0x80040E00, // 0050 RET 1 R7
0x70020007, // 0051 JMP #005A
- 0x541AFFFC, // 0052 LDINT R6 65533
- 0x1C180A06, // 0053 EQ R6 R5 R6
- 0x781A0004, // 0054 JMPF R6 #005A
- 0x8C180706, // 0055 GETMET R6 R3 K6
- 0x8820070D, // 0056 GETMBR R8 R3 K13
- 0x54260004, // 0057 LDINT R9 5
- 0x7C180600, // 0058 CALL R6 3
- 0x80040C00, // 0059 RET 1 R6
- 0x70020007, // 005A JMP #0063
- 0x60180003, // 005B GETGBL R6 G3
- 0x5C1C0000, // 005C MOVE R7 R0
- 0x7C180200, // 005D CALL R6 1
- 0x8C180D0E, // 005E GETMET R6 R6 K14
- 0x5C200200, // 005F MOVE R8 R1
- 0x5C240400, // 0060 MOVE R9 R2
- 0x7C180600, // 0061 CALL R6 3
- 0x80040C00, // 0062 RET 1 R6
- 0x80000000, // 0063 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h
index c4ce2b977..f5cd9c4ae 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h
@@ -308,135 +308,132 @@ be_local_closure(Matter_Plugin_Bridge_Light3_invoke_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
+ ( &(const bvalue[16]) { /* 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_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(findsubval),
- /* K7 */ be_nested_str_weak(set_hue),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(hue_X3A),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(2),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(set_sat),
- /* K14 */ be_nested_str_weak(sat_X3A),
- /* K15 */ be_nested_str_weak(_X20sat_X3A),
- /* K16 */ be_nested_str_weak(invoke_request),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(findsubval),
+ /* K6 */ be_nested_str_weak(set_hue),
+ /* K7 */ be_nested_str_weak(log),
+ /* K8 */ be_nested_str_weak(hue_X3A),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_const_int(3),
+ /* K12 */ be_nested_str_weak(set_sat),
+ /* K13 */ be_nested_str_weak(sat_X3A),
+ /* K14 */ be_nested_str_weak(_X20sat_X3A),
+ /* K15 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[107]) { /* code */
+ ( &(const binstruction[105]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E02FF, // 0004 LDINT R7 768
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0059, // 0006 JMPF R7 #0061
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E000D, // 000A JMPF R7 #0019
- 0x8C1C0506, // 000B GETMET R7 R2 K6
- 0x58240005, // 000C LDCONST R9 K5
- 0x7C1C0400, // 000D CALL R7 2
- 0x8C200107, // 000E GETMET R8 R0 K7
- 0x5C280E00, // 000F MOVE R10 R7
- 0x7C200400, // 0010 CALL R8 2
- 0x60200008, // 0011 GETGBL R8 G8
- 0x5C240E00, // 0012 MOVE R9 R7
- 0x7C200200, // 0013 CALL R8 1
- 0x00221208, // 0014 ADD R8 K9 R8
- 0x900E1008, // 0015 SETMBR R3 K8 R8
- 0x50200200, // 0016 LDBOOL R8 1 0
- 0x80041000, // 0017 RET 1 R8
- 0x70020046, // 0018 JMP #0060
- 0x1C1C0D0A, // 0019 EQ R7 R6 K10
- 0x781E0002, // 001A JMPF R7 #001E
- 0x501C0200, // 001B LDBOOL R7 1 0
- 0x80040E00, // 001C RET 1 R7
- 0x70020041, // 001D JMP #0060
- 0x1C1C0D0B, // 001E EQ R7 R6 K11
- 0x781E0002, // 001F JMPF R7 #0023
- 0x501C0200, // 0020 LDBOOL R7 1 0
- 0x80040E00, // 0021 RET 1 R7
- 0x7002003C, // 0022 JMP #0060
- 0x1C1C0D0C, // 0023 EQ R7 R6 K12
- 0x781E000D, // 0024 JMPF R7 #0033
- 0x8C1C0506, // 0025 GETMET R7 R2 K6
- 0x58240005, // 0026 LDCONST R9 K5
- 0x7C1C0400, // 0027 CALL R7 2
- 0x8C20010D, // 0028 GETMET R8 R0 K13
- 0x5C280E00, // 0029 MOVE R10 R7
- 0x7C200400, // 002A CALL R8 2
- 0x60200008, // 002B GETGBL R8 G8
- 0x5C240E00, // 002C MOVE R9 R7
- 0x7C200200, // 002D CALL R8 1
- 0x00221C08, // 002E ADD R8 K14 R8
- 0x900E1008, // 002F SETMBR R3 K8 R8
- 0x50200200, // 0030 LDBOOL R8 1 0
- 0x80041000, // 0031 RET 1 R8
- 0x7002002C, // 0032 JMP #0060
- 0x541E0003, // 0033 LDINT R7 4
- 0x1C1C0C07, // 0034 EQ R7 R6 R7
- 0x781E0002, // 0035 JMPF R7 #0039
- 0x501C0200, // 0036 LDBOOL R7 1 0
- 0x80040E00, // 0037 RET 1 R7
- 0x70020026, // 0038 JMP #0060
- 0x541E0004, // 0039 LDINT R7 5
- 0x1C1C0C07, // 003A EQ R7 R6 R7
- 0x781E0002, // 003B JMPF R7 #003F
- 0x501C0200, // 003C LDBOOL R7 1 0
- 0x80040E00, // 003D RET 1 R7
- 0x70020020, // 003E JMP #0060
- 0x541E0005, // 003F LDINT R7 6
- 0x1C1C0C07, // 0040 EQ R7 R6 R7
- 0x781E0018, // 0041 JMPF R7 #005B
- 0x8C1C0506, // 0042 GETMET R7 R2 K6
- 0x58240005, // 0043 LDCONST R9 K5
- 0x7C1C0400, // 0044 CALL R7 2
- 0x8C200506, // 0045 GETMET R8 R2 K6
- 0x5828000A, // 0046 LDCONST R10 K10
- 0x7C200400, // 0047 CALL R8 2
- 0x8C240107, // 0048 GETMET R9 R0 K7
- 0x5C2C0E00, // 0049 MOVE R11 R7
- 0x7C240400, // 004A CALL R9 2
- 0x8C24010D, // 004B GETMET R9 R0 K13
- 0x5C2C1000, // 004C MOVE R11 R8
- 0x7C240400, // 004D CALL R9 2
- 0x60240008, // 004E GETGBL R9 G8
- 0x5C280E00, // 004F MOVE R10 R7
- 0x7C240200, // 0050 CALL R9 1
- 0x00261209, // 0051 ADD R9 K9 R9
- 0x0024130F, // 0052 ADD R9 R9 K15
- 0x60280008, // 0053 GETGBL R10 G8
- 0x5C2C1000, // 0054 MOVE R11 R8
- 0x7C280200, // 0055 CALL R10 1
- 0x0024120A, // 0056 ADD R9 R9 R10
- 0x900E1009, // 0057 SETMBR R3 K8 R9
- 0x50240200, // 0058 LDBOOL R9 1 0
- 0x80041200, // 0059 RET 1 R9
- 0x70020004, // 005A JMP #0060
- 0x541E0046, // 005B LDINT R7 71
- 0x1C1C0C07, // 005C EQ R7 R6 R7
- 0x781E0001, // 005D JMPF R7 #0060
- 0x501C0200, // 005E LDBOOL R7 1 0
- 0x80040E00, // 005F RET 1 R7
- 0x70020008, // 0060 JMP #006A
- 0x601C0003, // 0061 GETGBL R7 G3
- 0x5C200000, // 0062 MOVE R8 R0
- 0x7C1C0200, // 0063 CALL R7 1
- 0x8C1C0F10, // 0064 GETMET R7 R7 K16
- 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
+ 0x781E0057, // 0006 JMPF R7 #005F
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000D, // 0008 JMPF R7 #0017
+ 0x8C1C0505, // 0009 GETMET R7 R2 K5
+ 0x58240004, // 000A LDCONST R9 K4
+ 0x7C1C0400, // 000B CALL R7 2
+ 0x8C200106, // 000C GETMET R8 R0 K6
+ 0x5C280E00, // 000D MOVE R10 R7
+ 0x7C200400, // 000E CALL R8 2
+ 0x60200008, // 000F GETGBL R8 G8
+ 0x5C240E00, // 0010 MOVE R9 R7
+ 0x7C200200, // 0011 CALL R8 1
+ 0x00221008, // 0012 ADD R8 K8 R8
+ 0x900E0E08, // 0013 SETMBR R3 K7 R8
+ 0x50200200, // 0014 LDBOOL R8 1 0
+ 0x80041000, // 0015 RET 1 R8
+ 0x70020046, // 0016 JMP #005E
+ 0x1C1C0D09, // 0017 EQ R7 R6 K9
+ 0x781E0002, // 0018 JMPF R7 #001C
+ 0x501C0200, // 0019 LDBOOL R7 1 0
+ 0x80040E00, // 001A RET 1 R7
+ 0x70020041, // 001B JMP #005E
+ 0x1C1C0D0A, // 001C EQ R7 R6 K10
+ 0x781E0002, // 001D JMPF R7 #0021
+ 0x501C0200, // 001E LDBOOL R7 1 0
+ 0x80040E00, // 001F RET 1 R7
+ 0x7002003C, // 0020 JMP #005E
+ 0x1C1C0D0B, // 0021 EQ R7 R6 K11
+ 0x781E000D, // 0022 JMPF R7 #0031
+ 0x8C1C0505, // 0023 GETMET R7 R2 K5
+ 0x58240004, // 0024 LDCONST R9 K4
+ 0x7C1C0400, // 0025 CALL R7 2
+ 0x8C20010C, // 0026 GETMET R8 R0 K12
+ 0x5C280E00, // 0027 MOVE R10 R7
+ 0x7C200400, // 0028 CALL R8 2
+ 0x60200008, // 0029 GETGBL R8 G8
+ 0x5C240E00, // 002A MOVE R9 R7
+ 0x7C200200, // 002B CALL R8 1
+ 0x00221A08, // 002C ADD R8 K13 R8
+ 0x900E0E08, // 002D SETMBR R3 K7 R8
+ 0x50200200, // 002E LDBOOL R8 1 0
+ 0x80041000, // 002F RET 1 R8
+ 0x7002002C, // 0030 JMP #005E
+ 0x541E0003, // 0031 LDINT R7 4
+ 0x1C1C0C07, // 0032 EQ R7 R6 R7
+ 0x781E0002, // 0033 JMPF R7 #0037
+ 0x501C0200, // 0034 LDBOOL R7 1 0
+ 0x80040E00, // 0035 RET 1 R7
+ 0x70020026, // 0036 JMP #005E
+ 0x541E0004, // 0037 LDINT R7 5
+ 0x1C1C0C07, // 0038 EQ R7 R6 R7
+ 0x781E0002, // 0039 JMPF R7 #003D
+ 0x501C0200, // 003A LDBOOL R7 1 0
+ 0x80040E00, // 003B RET 1 R7
+ 0x70020020, // 003C JMP #005E
+ 0x541E0005, // 003D LDINT R7 6
+ 0x1C1C0C07, // 003E EQ R7 R6 R7
+ 0x781E0018, // 003F JMPF R7 #0059
+ 0x8C1C0505, // 0040 GETMET R7 R2 K5
+ 0x58240004, // 0041 LDCONST R9 K4
+ 0x7C1C0400, // 0042 CALL R7 2
+ 0x8C200505, // 0043 GETMET R8 R2 K5
+ 0x58280009, // 0044 LDCONST R10 K9
+ 0x7C200400, // 0045 CALL R8 2
+ 0x8C240106, // 0046 GETMET R9 R0 K6
+ 0x5C2C0E00, // 0047 MOVE R11 R7
+ 0x7C240400, // 0048 CALL R9 2
+ 0x8C24010C, // 0049 GETMET R9 R0 K12
+ 0x5C2C1000, // 004A MOVE R11 R8
+ 0x7C240400, // 004B CALL R9 2
+ 0x60240008, // 004C GETGBL R9 G8
+ 0x5C280E00, // 004D MOVE R10 R7
+ 0x7C240200, // 004E CALL R9 1
+ 0x00261009, // 004F ADD R9 K8 R9
+ 0x0024130E, // 0050 ADD R9 R9 K14
+ 0x60280008, // 0051 GETGBL R10 G8
+ 0x5C2C1000, // 0052 MOVE R11 R8
+ 0x7C280200, // 0053 CALL R10 1
+ 0x0024120A, // 0054 ADD R9 R9 R10
+ 0x900E0E09, // 0055 SETMBR R3 K7 R9
+ 0x50240200, // 0056 LDBOOL R9 1 0
+ 0x80041200, // 0057 RET 1 R9
+ 0x70020004, // 0058 JMP #005E
+ 0x541E0046, // 0059 LDINT R7 71
+ 0x1C1C0C07, // 005A EQ R7 R6 R7
+ 0x781E0001, // 005B JMPF R7 #005E
+ 0x501C0200, // 005C LDBOOL R7 1 0
+ 0x80040E00, // 005D RET 1 R7
+ 0x70020008, // 005E JMP #0068
+ 0x601C0003, // 005F GETGBL R7 G3
+ 0x5C200000, // 0060 MOVE R8 R0
+ 0x7C1C0200, // 0061 CALL R7 1
+ 0x8C1C0F0F, // 0062 GETMET R7 R7 K15
+ 0x5C240200, // 0063 MOVE R9 R1
+ 0x5C280400, // 0064 MOVE R10 R2
+ 0x5C2C0600, // 0065 MOVE R11 R3
+ 0x7C1C0800, // 0066 CALL R7 4
+ 0x80040E00, // 0067 RET 1 R7
+ 0x80000000, // 0068 RET 0
})
)
);
@@ -448,8 +445,8 @@ be_local_closure(Matter_Plugin_Bridge_Light3_invoke_request, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -464,7 +461,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(shadow_hue),
- /* K7 */ be_nested_str_weak(create_TLV),
+ /* K7 */ be_nested_str_weak(set),
/* K8 */ be_nested_str_weak(U1),
/* K9 */ be_nested_str_weak(NULL),
/* K10 */ be_const_int(1),
@@ -474,133 +471,134 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[126]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A02FF, // 0004 LDINT R6 768
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A006D, // 0006 JMPF R6 #0075
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A000F, // 000A JMPF R6 #001B
- 0x88180106, // 000B GETMBR R6 R0 K6
- 0x4C1C0000, // 000C LDNIL R7
- 0x20180C07, // 000D NE R6 R6 R7
- 0x781A0005, // 000E JMPF R6 #0015
- 0x8C180707, // 000F GETMET R6 R3 K7
- 0x88200708, // 0010 GETMBR R8 R3 K8
- 0x88240106, // 0011 GETMBR R9 R0 K6
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(const binstruction[127]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E000F, // 000A JMPF R7 #001B
+ 0x881C0106, // 000B GETMBR R7 R0 K6
+ 0x4C200000, // 000C LDNIL R8
+ 0x201C0E08, // 000D NE R7 R7 R8
+ 0x781E0005, // 000E JMPF R7 #0015
+ 0x8C1C0707, // 000F GETMET R7 R3 K7
+ 0x88240908, // 0010 GETMBR R9 R4 K8
+ 0x88280106, // 0011 GETMBR R10 R0 K6
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180707, // 0015 GETMET R6 R3 K7
- 0x88200709, // 0016 GETMBR R8 R3 K9
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0707, // 0015 GETMET R7 R3 K7
+ 0x88240909, // 0016 GETMBR R9 R4 K9
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x70020058, // 001A JMP #0074
- 0x1C180B0A, // 001B EQ R6 R5 K10
- 0x781A000F, // 001C JMPF R6 #002D
- 0x8818010B, // 001D GETMBR R6 R0 K11
- 0x4C1C0000, // 001E LDNIL R7
- 0x20180C07, // 001F NE R6 R6 R7
- 0x781A0005, // 0020 JMPF R6 #0027
- 0x8C180707, // 0021 GETMET R6 R3 K7
- 0x88200708, // 0022 GETMBR R8 R3 K8
- 0x8824010B, // 0023 GETMBR R9 R0 K11
- 0x7C180600, // 0024 CALL R6 3
- 0x80040C00, // 0025 RET 1 R6
+ 0x1C1C0D0A, // 001B EQ R7 R6 K10
+ 0x781E000F, // 001C JMPF R7 #002D
+ 0x881C010B, // 001D GETMBR R7 R0 K11
+ 0x4C200000, // 001E LDNIL R8
+ 0x201C0E08, // 001F NE R7 R7 R8
+ 0x781E0005, // 0020 JMPF R7 #0027
+ 0x8C1C0707, // 0021 GETMET R7 R3 K7
+ 0x88240908, // 0022 GETMBR R9 R4 K8
+ 0x8828010B, // 0023 GETMBR R10 R0 K11
+ 0x7C1C0600, // 0024 CALL R7 3
+ 0x80040E00, // 0025 RET 1 R7
0x70020004, // 0026 JMP #002C
- 0x8C180707, // 0027 GETMET R6 R3 K7
- 0x88200709, // 0028 GETMBR R8 R3 K9
- 0x4C240000, // 0029 LDNIL R9
- 0x7C180600, // 002A CALL R6 3
- 0x80040C00, // 002B RET 1 R6
+ 0x8C1C0707, // 0027 GETMET R7 R3 K7
+ 0x88240909, // 0028 GETMBR R9 R4 K9
+ 0x4C280000, // 0029 LDNIL R10
+ 0x7C1C0600, // 002A CALL R7 3
+ 0x80040E00, // 002B RET 1 R7
0x70020046, // 002C JMP #0074
- 0x541A0006, // 002D LDINT R6 7
- 0x1C180A06, // 002E EQ R6 R5 R6
- 0x781A0005, // 002F JMPF R6 #0036
- 0x8C180707, // 0030 GETMET R6 R3 K7
- 0x88200708, // 0031 GETMBR R8 R3 K8
- 0x58240005, // 0032 LDCONST R9 K5
- 0x7C180600, // 0033 CALL R6 3
- 0x80040C00, // 0034 RET 1 R6
+ 0x541E0006, // 002D LDINT R7 7
+ 0x1C1C0C07, // 002E EQ R7 R6 R7
+ 0x781E0005, // 002F JMPF R7 #0036
+ 0x8C1C0707, // 0030 GETMET R7 R3 K7
+ 0x88240908, // 0031 GETMBR R9 R4 K8
+ 0x58280005, // 0032 LDCONST R10 K5
+ 0x7C1C0600, // 0033 CALL R7 3
+ 0x80040E00, // 0034 RET 1 R7
0x7002003D, // 0035 JMP #0074
- 0x541A0007, // 0036 LDINT R6 8
- 0x1C180A06, // 0037 EQ R6 R5 R6
- 0x781A0005, // 0038 JMPF R6 #003F
- 0x8C180707, // 0039 GETMET R6 R3 K7
- 0x88200708, // 003A GETMBR R8 R3 K8
- 0x58240005, // 003B LDCONST R9 K5
- 0x7C180600, // 003C CALL R6 3
- 0x80040C00, // 003D RET 1 R6
+ 0x541E0007, // 0036 LDINT R7 8
+ 0x1C1C0C07, // 0037 EQ R7 R6 R7
+ 0x781E0005, // 0038 JMPF R7 #003F
+ 0x8C1C0707, // 0039 GETMET R7 R3 K7
+ 0x88240908, // 003A GETMBR R9 R4 K8
+ 0x58280005, // 003B LDCONST R10 K5
+ 0x7C1C0600, // 003C CALL R7 3
+ 0x80040E00, // 003D RET 1 R7
0x70020034, // 003E JMP #0074
- 0x541A000E, // 003F LDINT R6 15
- 0x1C180A06, // 0040 EQ R6 R5 R6
- 0x781A0005, // 0041 JMPF R6 #0048
- 0x8C180707, // 0042 GETMET R6 R3 K7
- 0x88200708, // 0043 GETMBR R8 R3 K8
- 0x58240005, // 0044 LDCONST R9 K5
- 0x7C180600, // 0045 CALL R6 3
- 0x80040C00, // 0046 RET 1 R6
+ 0x541E000E, // 003F LDINT R7 15
+ 0x1C1C0C07, // 0040 EQ R7 R6 R7
+ 0x781E0005, // 0041 JMPF R7 #0048
+ 0x8C1C0707, // 0042 GETMET R7 R3 K7
+ 0x88240908, // 0043 GETMBR R9 R4 K8
+ 0x58280005, // 0044 LDCONST R10 K5
+ 0x7C1C0600, // 0045 CALL R7 3
+ 0x80040E00, // 0046 RET 1 R7
0x7002002B, // 0047 JMP #0074
- 0x541A4000, // 0048 LDINT R6 16385
- 0x1C180A06, // 0049 EQ R6 R5 R6
- 0x781A0005, // 004A JMPF R6 #0051
- 0x8C180707, // 004B GETMET R6 R3 K7
- 0x88200708, // 004C GETMBR R8 R3 K8
- 0x58240005, // 004D LDCONST R9 K5
- 0x7C180600, // 004E CALL R6 3
- 0x80040C00, // 004F RET 1 R6
+ 0x541E4000, // 0048 LDINT R7 16385
+ 0x1C1C0C07, // 0049 EQ R7 R6 R7
+ 0x781E0005, // 004A JMPF R7 #0051
+ 0x8C1C0707, // 004B GETMET R7 R3 K7
+ 0x88240908, // 004C GETMBR R9 R4 K8
+ 0x58280005, // 004D LDCONST R10 K5
+ 0x7C1C0600, // 004E CALL R7 3
+ 0x80040E00, // 004F RET 1 R7
0x70020022, // 0050 JMP #0074
- 0x541A4009, // 0051 LDINT R6 16394
- 0x1C180A06, // 0052 EQ R6 R5 R6
- 0x781A0005, // 0053 JMPF R6 #005A
- 0x8C180707, // 0054 GETMET R6 R3 K7
- 0x8820070C, // 0055 GETMBR R8 R3 K12
- 0x5824000A, // 0056 LDCONST R9 K10
- 0x7C180600, // 0057 CALL R6 3
- 0x80040C00, // 0058 RET 1 R6
+ 0x541E4009, // 0051 LDINT R7 16394
+ 0x1C1C0C07, // 0052 EQ R7 R6 R7
+ 0x781E0005, // 0053 JMPF R7 #005A
+ 0x8C1C0707, // 0054 GETMET R7 R3 K7
+ 0x8824090C, // 0055 GETMBR R9 R4 K12
+ 0x5828000A, // 0056 LDCONST R10 K10
+ 0x7C1C0600, // 0057 CALL R7 3
+ 0x80040E00, // 0058 RET 1 R7
0x70020019, // 0059 JMP #0074
- 0x541A000F, // 005A LDINT R6 16
- 0x1C180A06, // 005B EQ R6 R5 R6
- 0x781A0005, // 005C JMPF R6 #0063
- 0x8C180707, // 005D GETMET R6 R3 K7
- 0x88200708, // 005E GETMBR R8 R3 K8
- 0x58240005, // 005F LDCONST R9 K5
- 0x7C180600, // 0060 CALL R6 3
- 0x80040C00, // 0061 RET 1 R6
+ 0x541E000F, // 005A LDINT R7 16
+ 0x1C1C0C07, // 005B EQ R7 R6 R7
+ 0x781E0005, // 005C JMPF R7 #0063
+ 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
- 0x541AFFFB, // 0063 LDINT R6 65532
- 0x1C180A06, // 0064 EQ R6 R5 R6
- 0x781A0005, // 0065 JMPF R6 #006C
- 0x8C180707, // 0066 GETMET R6 R3 K7
- 0x8820070C, // 0067 GETMBR R8 R3 K12
- 0x5824000A, // 0068 LDCONST R9 K10
- 0x7C180600, // 0069 CALL R6 3
- 0x80040C00, // 006A RET 1 R6
+ 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
+ 0x80040E00, // 006A RET 1 R7
0x70020007, // 006B JMP #0074
- 0x541AFFFC, // 006C LDINT R6 65533
- 0x1C180A06, // 006D EQ R6 R5 R6
- 0x781A0004, // 006E JMPF R6 #0074
- 0x8C180707, // 006F GETMET R6 R3 K7
- 0x8820070C, // 0070 GETMBR R8 R3 K12
- 0x54260004, // 0071 LDINT R9 5
- 0x7C180600, // 0072 CALL R6 3
- 0x80040C00, // 0073 RET 1 R6
- 0x70020007, // 0074 JMP #007D
- 0x60180003, // 0075 GETGBL R6 G3
- 0x5C1C0000, // 0076 MOVE R7 R0
- 0x7C180200, // 0077 CALL R6 1
- 0x8C180D0D, // 0078 GETMET R6 R6 K13
- 0x5C200200, // 0079 MOVE R8 R1
- 0x5C240400, // 007A MOVE R9 R2
- 0x7C180600, // 007B CALL R6 3
- 0x80040C00, // 007C RET 1 R6
- 0x80000000, // 007D RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h
index 2c86b4398..d4100d5c4 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h
@@ -66,7 +66,7 @@ be_local_class(Matter_Plugin_Bridge_OnOff,
})) ) } )) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Relay) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_OnOff_web_values_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Relay_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, 1), be_nested_str_weak(http_relay) },
})),
be_str_weak(Matter_Plugin_Bridge_OnOff)
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor.h
index 97d255b37..5f19a1916 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor.h
@@ -6,6 +6,82 @@
extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(Matter_Plugin_Bridge_Sensor_parse_configuration, /* 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[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota_sensor_filter),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(ARG),
+ /* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(Rule_Matcher),
+ /* K6 */ be_nested_str_weak(parse),
+ /* K7 */ be_nested_str_weak(temp_unit),
+ /* K8 */ be_nested_str_weak(TEMP_C),
+ /* K9 */ be_nested_str_weak(pressure_unit),
+ /* K10 */ be_nested_str_weak(PRESSURE_HPA),
+ }),
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x8C080301, // 0000 GETMET R2 R1 K1
+ 0x88100102, // 0001 GETMBR R4 R0 K2
+ 0x7C080400, // 0002 CALL R2 2
+ 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x88080100, // 0004 GETMBR R2 R0 K0
+ 0x780A0005, // 0005 JMPF R2 #000C
+ 0xB80A0800, // 0006 GETNGBL R2 K4
+ 0x88080505, // 0007 GETMBR R2 R2 K5
+ 0x8C080506, // 0008 GETMET R2 R2 K6
+ 0x88100100, // 0009 GETMBR R4 R0 K0
+ 0x7C080400, // 000A CALL R2 2
+ 0x90020602, // 000B SETMBR R0 K3 R2
+ 0x88080108, // 000C GETMBR R2 R0 K8
+ 0x90020E02, // 000D SETMBR R0 K7 R2
+ 0x8808010A, // 000E GETMBR R2 R0 K10
+ 0x90021202, // 000F SETMBR R0 K9 R2
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: value_changed
+********************************************************************/
+be_local_closure(Matter_Plugin_Bridge_Sensor_value_changed, /* 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(value_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: web_values_prefix
********************************************************************/
@@ -57,98 +133,6 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_web_values_prefix, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-be_local_closure(Matter_Plugin_Bridge_Sensor_parse_configuration, /* 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[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_sensor_filter),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(Rule_Matcher),
- /* K6 */ be_nested_str_weak(parse),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x8C080301, // 0000 GETMET R2 R1 K1
- 0x88100102, // 0001 GETMBR R4 R0 K2
- 0x7C080400, // 0002 CALL R2 2
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x780A0005, // 0005 JMPF R2 #000C
- 0xB80A0800, // 0006 GETNGBL R2 K4
- 0x88080505, // 0007 GETMBR R2 R2 K5
- 0x8C080506, // 0008 GETMET R2 R2 K6
- 0x88100100, // 0009 GETMBR R4 R0 K0
- 0x7C080400, // 000A CALL R2 2
- 0x90020602, // 000B SETMBR R0 K3 R2
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: value_changed
-********************************************************************/
-be_local_closure(Matter_Plugin_Bridge_Sensor_value_changed, /* 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(value_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pre_value
-********************************************************************/
-be_local_closure(Matter_Plugin_Bridge_Sensor_pre_value, /* 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(pre_value),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80040200, // 0000 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: parse_update
********************************************************************/
@@ -162,40 +146,57 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_parse_update, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_sensor_matcher),
- /* K1 */ be_nested_str_weak(pre_value),
- /* K2 */ be_nested_str_weak(match),
- /* K3 */ be_nested_str_weak(shadow_value),
- /* K4 */ be_nested_str_weak(value_changed),
+ ( &(const bvalue[10]) { /* constants */
+ /* K0 */ be_nested_str_weak(contains),
+ /* K1 */ be_nested_str_weak(TempUnit),
+ /* K2 */ be_nested_str_weak(temp_unit),
+ /* K3 */ be_nested_str_weak(PressureUnit),
+ /* K4 */ be_nested_str_weak(pressure_unit),
+ /* K5 */ be_nested_str_weak(tasmota_sensor_matcher),
+ /* K6 */ be_nested_str_weak(pre_value),
+ /* K7 */ be_nested_str_weak(match),
+ /* K8 */ be_nested_str_weak(shadow_value),
+ /* K9 */ be_nested_str_weak(value_changed),
}),
be_str_weak(parse_update),
&be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
+ ( &(const binstruction[36]) { /* code */
0x540E0007, // 0000 LDINT R3 8
0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0013, // 0002 JMPF R3 #0017
- 0x880C0100, // 0003 GETMBR R3 R0 K0
- 0x780E0011, // 0004 JMPF R3 #0017
- 0x8C0C0101, // 0005 GETMET R3 R0 K1
- 0x6014000A, // 0006 GETGBL R5 G10
- 0x88180100, // 0007 GETMBR R6 R0 K0
- 0x8C180D02, // 0008 GETMET R6 R6 K2
- 0x5C200200, // 0009 MOVE R8 R1
- 0x7C180400, // 000A CALL R6 2
- 0x7C140200, // 000B CALL R5 1
- 0x7C0C0400, // 000C CALL R3 2
- 0x4C100000, // 000D LDNIL R4
- 0x20100604, // 000E NE R4 R3 R4
- 0x78120006, // 000F JMPF R4 #0017
- 0x88100103, // 0010 GETMBR R4 R0 K3
- 0x20100604, // 0011 NE R4 R3 R4
- 0x78120002, // 0012 JMPF R4 #0016
- 0x8C100104, // 0013 GETMET R4 R0 K4
- 0x5C180600, // 0014 MOVE R6 R3
- 0x7C100400, // 0015 CALL R4 2
- 0x90020603, // 0016 SETMBR R0 K3 R3
- 0x80000000, // 0017 RET 0
+ 0x780E001F, // 0002 JMPF R3 #0023
+ 0x8C0C0300, // 0003 GETMET R3 R1 K0
+ 0x58140001, // 0004 LDCONST R5 K1
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x780E0001, // 0006 JMPF R3 #0009
+ 0x940C0301, // 0007 GETIDX R3 R1 K1
+ 0x90020403, // 0008 SETMBR R0 K2 R3
+ 0x8C0C0300, // 0009 GETMET R3 R1 K0
+ 0x58140003, // 000A LDCONST R5 K3
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x780E0001, // 000C JMPF R3 #000F
+ 0x940C0303, // 000D GETIDX R3 R1 K3
+ 0x90020803, // 000E SETMBR R0 K4 R3
+ 0x880C0105, // 000F GETMBR R3 R0 K5
+ 0x780E0011, // 0010 JMPF R3 #0023
+ 0x8C0C0106, // 0011 GETMET R3 R0 K6
+ 0x6014000A, // 0012 GETGBL R5 G10
+ 0x88180105, // 0013 GETMBR R6 R0 K5
+ 0x8C180D07, // 0014 GETMET R6 R6 K7
+ 0x5C200200, // 0015 MOVE R8 R1
+ 0x7C180400, // 0016 CALL R6 2
+ 0x7C140200, // 0017 CALL R5 1
+ 0x7C0C0400, // 0018 CALL R3 2
+ 0x4C100000, // 0019 LDNIL R4
+ 0x20100604, // 001A NE R4 R3 R4
+ 0x78120006, // 001B JMPF R4 #0023
+ 0x88100108, // 001C GETMBR R4 R0 K8
+ 0x20100604, // 001D NE R4 R3 R4
+ 0x78120002, // 001E JMPF R4 #0022
+ 0x8C100109, // 001F GETMET R4 R0 K9
+ 0x5C180600, // 0020 MOVE R6 R3
+ 0x7C100400, // 0021 CALL R4 2
+ 0x90021003, // 0022 SETMBR R0 K8 R3
+ 0x80000000, // 0023 RET 0
})
)
);
@@ -247,30 +248,61 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_filter_name_html, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: pre_value
+********************************************************************/
+be_local_closure(Matter_Plugin_Bridge_Sensor_pre_value, /* 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(pre_value),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80040200, // 0000 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Plugin_Bridge_Sensor
********************************************************************/
extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
be_local_class(Matter_Plugin_Bridge_Sensor,
- 3,
+ 5,
&be_class_Matter_Plugin_Bridge_HTTP,
- be_nested_map(15,
+ be_nested_map(22,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG_HINT, 7), be_nested_str_weak(Enter_X20Filter_X20pattern) },
- { be_const_key_weak(tasmota_sensor_filter, 10), be_const_var(0) },
- { be_const_key_weak(web_values_prefix, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_web_values_prefix_closure) },
+ { be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Filter_X20pattern) },
{ be_const_key_weak(shadow_value, -1), be_const_var(2) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_configuration_closure) },
- { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(pre_value, 10), be_const_closure(Matter_Plugin_Bridge_Sensor_pre_value_closure) },
{ be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) },
+ { be_const_key_weak(pressure_unit, -1), be_const_var(4) },
+ { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(filter) },
- { be_const_key_weak(UPDATE_CMD, 8), be_nested_str_weak(Status_X208) },
- { be_const_key_weak(parse_update, 12), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_update_closure) },
- { be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_pre_value_closure) },
+ { be_const_key_weak(PRESSURE_MMHG, -1), be_nested_str_weak(mmHg) },
{ be_const_key_weak(value_changed, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_value_changed_closure) },
- { be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) },
+ { be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_update_closure) },
+ { be_const_key_weak(TEMP_C, -1), be_nested_str_weak(C) },
+ { be_const_key_weak(temp_unit, 4), be_const_var(3) },
+ { be_const_key_weak(PRESSURE_INHG, -1), be_nested_str_weak(inHg) },
+ { be_const_key_weak(PRESSURE_HPA, 18), be_nested_str_weak(hPa) },
+ { be_const_key_weak(PROBE_TIMEOUT, 16), be_const_int(1700) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_web_values_prefix_closure) },
+ { be_const_key_weak(UPDATE_CMD, 13), be_nested_str_weak(Status_X208) },
+ { be_const_key_weak(TEMP_F, -1), be_nested_str_weak(F) },
{ be_const_key_weak(filter_name_html, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_filter_name_html_closure) },
+ { be_const_key_weak(UPDATE_TIME, 3), be_const_int(5000) },
+ { be_const_key_weak(parse_configuration, 2), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_configuration_closure) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h
index 1b781aebe..00465b9d9 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h
@@ -201,8 +201,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_parse_update, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -216,7 +216,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_contact),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_nested_str_weak(U4),
@@ -225,59 +225,60 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[52]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0044, // 0004 LDINT R6 69
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0023, // 0006 JMPF R6 #002B
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A000F, // 0008 JMPF R6 #0019
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0005, // 000C JMPF R6 #0013
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x88240105, // 000F GETMBR R9 R0 K5
- 0x7C180600, // 0010 CALL R6 3
- 0x80040C00, // 0011 RET 1 R6
+ ( &(const binstruction[53]) { /* 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
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000F, // 0008 JMPF R7 #0019
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0005, // 000C JMPF R7 #0013
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x88280105, // 000F GETMBR R10 R0 K5
+ 0x7C1C0600, // 0010 CALL R7 3
+ 0x80040E00, // 0011 RET 1 R7
0x70020004, // 0012 JMP #0018
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200708, // 0014 GETMBR R8 R3 K8
- 0x4C240000, // 0015 LDNIL R9
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240908, // 0014 GETMBR R9 R4 K8
+ 0x4C280000, // 0015 LDNIL R10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x70020010, // 0018 JMP #002A
- 0x541AFFFB, // 0019 LDINT R6 65532
- 0x1C180A06, // 001A EQ R6 R5 R6
- 0x781A0005, // 001B JMPF R6 #0022
- 0x8C180706, // 001C GETMET R6 R3 K6
- 0x88200709, // 001D GETMBR R8 R3 K9
- 0x58240004, // 001E LDCONST R9 K4
- 0x7C180600, // 001F CALL R6 3
- 0x80040C00, // 0020 RET 1 R6
+ 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
+ 0x80040E00, // 0020 RET 1 R7
0x70020007, // 0021 JMP #002A
- 0x541AFFFC, // 0022 LDINT R6 65533
- 0x1C180A06, // 0023 EQ R6 R5 R6
- 0x781A0004, // 0024 JMPF R6 #002A
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200709, // 0026 GETMBR R8 R3 K9
- 0x5824000A, // 0027 LDCONST R9 K10
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
- 0x70020007, // 002A JMP #0033
- 0x60180003, // 002B GETGBL R6 G3
- 0x5C1C0000, // 002C MOVE R7 R0
- 0x7C180200, // 002D CALL R6 1
- 0x8C180D0B, // 002E GETMET R6 R6 K11
- 0x5C200200, // 002F MOVE R8 R1
- 0x5C240400, // 0030 MOVE R9 R2
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
- 0x80000000, // 0033 RET 0
+ 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
})
)
);
@@ -338,7 +339,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG_TYPE, 5), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, 4), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_HINT, 4), 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_Bridge_Sensor_Contact_init_closure) },
{ be_const_key_weak(web_values_prefix, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_web_values_prefix_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h
index a1f03d75c..999d0b35d 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h
@@ -44,8 +44,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_pre_value, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name */
be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -59,7 +59,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -70,77 +70,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0404, // 0004 LDINT R6 1029
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0035, // 0006 JMPF R6 #003D
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A0011, // 0008 JMPF R6 #001B
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0007, // 000C JMPF R6 #0015
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x60240009, // 000F GETGBL R9 G9
- 0x88280105, // 0010 GETMBR R10 R0 K5
- 0x7C240200, // 0011 CALL R9 1
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(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
+ 0x541E0404, // 0004 LDINT R7 1029
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0035, // 0006 JMPF R7 #003D
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0011, // 0008 JMPF R7 #001B
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0007, // 000C JMPF R7 #0015
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x60280009, // 000F GETGBL R10 G9
+ 0x882C0105, // 0010 GETMBR R11 R0 K5
+ 0x7C280200, // 0011 CALL R10 1
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180706, // 0015 GETMET R6 R3 K6
- 0x88200708, // 0016 GETMBR R8 R3 K8
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0706, // 0015 GETMET R7 R3 K6
+ 0x88240908, // 0016 GETMBR R9 R4 K8
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x70020020, // 001A JMP #003C
- 0x1C180B09, // 001B EQ R6 R5 K9
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200707, // 001E GETMBR R8 R3 K7
- 0x542601F3, // 001F LDINT R9 500
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
+ 0x1C1C0D09, // 001B EQ R7 R6 K9
+ 0x781E0005, // 001C JMPF R7 #0023
+ 0x8C1C0706, // 001D GETMET R7 R3 K6
+ 0x88240907, // 001E GETMBR R9 R4 K7
+ 0x542A01F3, // 001F LDINT R10 500
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x80040E00, // 0021 RET 1 R7
0x70020018, // 0022 JMP #003C
- 0x1C180B0A, // 0023 EQ R6 R5 K10
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200707, // 0026 GETMBR R8 R3 K7
- 0x5426270F, // 0027 LDINT R9 10000
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x1C1C0D0A, // 0023 EQ R7 R6 K10
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 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
- 0x541AFFFB, // 002B LDINT R6 65532
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180706, // 002E GETMET R6 R3 K6
- 0x8820070B, // 002F GETMBR R8 R3 K11
- 0x58240004, // 0030 LDCONST R9 K4
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 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
+ 0x80040E00, // 0032 RET 1 R7
0x70020007, // 0033 JMP #003C
- 0x541AFFFC, // 0034 LDINT R6 65533
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A0004, // 0036 JMPF R6 #003C
- 0x8C180706, // 0037 GETMET R6 R3 K6
- 0x8820070B, // 0038 GETMBR R8 R3 K11
- 0x5824000C, // 0039 LDCONST R9 K12
- 0x7C180600, // 003A CALL R6 3
- 0x80040C00, // 003B RET 1 R6
- 0x70020007, // 003C JMP #0045
- 0x60180003, // 003D GETGBL R6 G3
- 0x5C1C0000, // 003E MOVE R7 R0
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0D, // 0040 GETMET R6 R6 K13
- 0x5C200200, // 0041 MOVE R8 R1
- 0x5C240400, // 0042 MOVE R9 R2
- 0x7C180600, // 0043 CALL R6 3
- 0x80040C00, // 0044 RET 1 R6
- 0x80000000, // 0045 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h
index e732c9cf3..894d2caaf 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h
@@ -56,8 +56,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_pre_value, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* name */
be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -71,7 +71,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -82,77 +82,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A03FF, // 0004 LDINT R6 1024
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0035, // 0006 JMPF R6 #003D
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A0011, // 0008 JMPF R6 #001B
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0007, // 000C JMPF R6 #0015
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x60240009, // 000F GETGBL R9 G9
- 0x88280105, // 0010 GETMBR R10 R0 K5
- 0x7C240200, // 0011 CALL R9 1
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(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
+ 0x541E03FF, // 0004 LDINT R7 1024
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0035, // 0006 JMPF R7 #003D
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0011, // 0008 JMPF R7 #001B
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0007, // 000C JMPF R7 #0015
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x60280009, // 000F GETGBL R10 G9
+ 0x882C0105, // 0010 GETMBR R11 R0 K5
+ 0x7C280200, // 0011 CALL R10 1
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180706, // 0015 GETMET R6 R3 K6
- 0x88200708, // 0016 GETMBR R8 R3 K8
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0706, // 0015 GETMET R7 R3 K6
+ 0x88240908, // 0016 GETMBR R9 R4 K8
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x70020020, // 001A JMP #003C
- 0x1C180B09, // 001B EQ R6 R5 K9
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200707, // 001E GETMBR R8 R3 K7
- 0x58240009, // 001F LDCONST R9 K9
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
+ 0x1C1C0D09, // 001B EQ R7 R6 K9
+ 0x781E0005, // 001C JMPF R7 #0023
+ 0x8C1C0706, // 001D GETMET R7 R3 K6
+ 0x88240907, // 001E GETMBR R9 R4 K7
+ 0x58280009, // 001F LDCONST R10 K9
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x80040E00, // 0021 RET 1 R7
0x70020018, // 0022 JMP #003C
- 0x1C180B0A, // 0023 EQ R6 R5 K10
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200707, // 0026 GETMBR R8 R3 K7
- 0x5426FFFD, // 0027 LDINT R9 65534
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x1C1C0D0A, // 0023 EQ R7 R6 K10
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 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
- 0x541AFFFB, // 002B LDINT R6 65532
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180706, // 002E GETMET R6 R3 K6
- 0x8820070B, // 002F GETMBR R8 R3 K11
- 0x58240004, // 0030 LDCONST R9 K4
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 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
+ 0x80040E00, // 0032 RET 1 R7
0x70020007, // 0033 JMP #003C
- 0x541AFFFC, // 0034 LDINT R6 65533
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A0004, // 0036 JMPF R6 #003C
- 0x8C180706, // 0037 GETMET R6 R3 K6
- 0x8820070B, // 0038 GETMBR R8 R3 K11
- 0x5824000C, // 0039 LDCONST R9 K12
- 0x7C180600, // 003A CALL R6 3
- 0x80040C00, // 003B RET 1 R6
- 0x70020007, // 003C JMP #0045
- 0x60180003, // 003D GETGBL R6 G3
- 0x5C1C0000, // 003E MOVE R7 R0
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0D, // 0040 GETMET R6 R6 K13
- 0x5C200200, // 0041 MOVE R8 R1
- 0x5C240400, // 0042 MOVE R9 R2
- 0x7C180600, // 0043 CALL R6 3
- 0x80040C00, // 0044 RET 1 R6
- 0x80000000, // 0045 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h
index 79d895a75..9f232fc03 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h
@@ -201,8 +201,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix, /* n
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -216,7 +216,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_occupancy),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U1),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -227,75 +227,76 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[68]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0405, // 0004 LDINT R6 1030
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0033, // 0006 JMPF R6 #003B
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A000F, // 0008 JMPF R6 #0019
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0005, // 000C JMPF R6 #0013
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x88240105, // 000F GETMBR R9 R0 K5
- 0x7C180600, // 0010 CALL R6 3
- 0x80040C00, // 0011 RET 1 R6
+ ( &(const binstruction[69]) { /* 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
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000F, // 0008 JMPF R7 #0019
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0005, // 000C JMPF R7 #0013
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x88280105, // 000F GETMBR R10 R0 K5
+ 0x7C1C0600, // 0010 CALL R7 3
+ 0x80040E00, // 0011 RET 1 R7
0x70020004, // 0012 JMP #0018
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200708, // 0014 GETMBR R8 R3 K8
- 0x4C240000, // 0015 LDNIL R9
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240908, // 0014 GETMBR R9 R4 K8
+ 0x4C280000, // 0015 LDNIL R10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x70020020, // 0018 JMP #003A
- 0x1C180B09, // 0019 EQ R6 R5 K9
- 0x781A0005, // 001A JMPF R6 #0021
- 0x8C180706, // 001B GETMET R6 R3 K6
- 0x88200707, // 001C GETMBR R8 R3 K7
- 0x5824000A, // 001D LDCONST R9 K10
- 0x7C180600, // 001E CALL R6 3
- 0x80040C00, // 001F RET 1 R6
+ 0x1C1C0D09, // 0019 EQ R7 R6 K9
+ 0x781E0005, // 001A JMPF R7 #0021
+ 0x8C1C0706, // 001B GETMET R7 R3 K6
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x5828000A, // 001D LDCONST R10 K10
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
0x70020018, // 0020 JMP #003A
- 0x1C180B0B, // 0021 EQ R6 R5 K11
- 0x781A0005, // 0022 JMPF R6 #0029
- 0x8C180706, // 0023 GETMET R6 R3 K6
- 0x88200707, // 0024 GETMBR R8 R3 K7
- 0x58240004, // 0025 LDCONST R9 K4
- 0x7C180600, // 0026 CALL R6 3
- 0x80040C00, // 0027 RET 1 R6
+ 0x1C1C0D0B, // 0021 EQ R7 R6 K11
+ 0x781E0005, // 0022 JMPF R7 #0029
+ 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
- 0x541AFFFB, // 0029 LDINT R6 65532
- 0x1C180A06, // 002A EQ R6 R5 R6
- 0x781A0005, // 002B JMPF R6 #0032
- 0x8C180706, // 002C GETMET R6 R3 K6
- 0x8820070C, // 002D GETMBR R8 R3 K12
- 0x58240004, // 002E LDCONST R9 K4
- 0x7C180600, // 002F CALL R6 3
- 0x80040C00, // 0030 RET 1 R6
+ 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
+ 0x80040E00, // 0030 RET 1 R7
0x70020007, // 0031 JMP #003A
- 0x541AFFFC, // 0032 LDINT R6 65533
- 0x1C180A06, // 0033 EQ R6 R5 R6
- 0x781A0004, // 0034 JMPF R6 #003A
- 0x8C180706, // 0035 GETMET R6 R3 K6
- 0x8820070C, // 0036 GETMBR R8 R3 K12
- 0x5824000A, // 0037 LDCONST R9 K10
- 0x7C180600, // 0038 CALL R6 3
- 0x80040C00, // 0039 RET 1 R6
- 0x70020007, // 003A JMP #0043
- 0x60180003, // 003B GETGBL R6 G3
- 0x5C1C0000, // 003C MOVE R7 R0
- 0x7C180200, // 003D CALL R6 1
- 0x8C180D0D, // 003E GETMET R6 R6 K13
- 0x5C200200, // 003F MOVE R8 R1
- 0x5C240400, // 0040 MOVE R9 R2
- 0x7C180600, // 0041 CALL R6 3
- 0x80040C00, // 0042 RET 1 R6
- 0x80000000, // 0043 RET 0
+ 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
})
)
);
@@ -356,7 +357,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, 14), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_HINT, 14), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h
index 1e89935ec..a72084820 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h
@@ -43,8 +43,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_pre_value, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name */
be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -58,7 +58,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(I2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -69,77 +69,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0402, // 0004 LDINT R6 1027
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0035, // 0006 JMPF R6 #003D
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A0011, // 0008 JMPF R6 #001B
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0007, // 000C JMPF R6 #0015
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x60240009, // 000F GETGBL R9 G9
- 0x88280105, // 0010 GETMBR R10 R0 K5
- 0x7C240200, // 0011 CALL R9 1
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(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
+ 0x541E0402, // 0004 LDINT R7 1027
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0035, // 0006 JMPF R7 #003D
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0011, // 0008 JMPF R7 #001B
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0007, // 000C JMPF R7 #0015
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x60280009, // 000F GETGBL R10 G9
+ 0x882C0105, // 0010 GETMBR R11 R0 K5
+ 0x7C280200, // 0011 CALL R10 1
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180706, // 0015 GETMET R6 R3 K6
- 0x88200708, // 0016 GETMBR R8 R3 K8
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0706, // 0015 GETMET R7 R3 K6
+ 0x88240908, // 0016 GETMBR R9 R4 K8
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x70020020, // 001A JMP #003C
- 0x1C180B09, // 001B EQ R6 R5 K9
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200707, // 001E GETMBR R8 R3 K7
- 0x542601F3, // 001F LDINT R9 500
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
+ 0x1C1C0D09, // 001B EQ R7 R6 K9
+ 0x781E0005, // 001C JMPF R7 #0023
+ 0x8C1C0706, // 001D GETMET R7 R3 K6
+ 0x88240907, // 001E GETMBR R9 R4 K7
+ 0x542A01F3, // 001F LDINT R10 500
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x80040E00, // 0021 RET 1 R7
0x70020018, // 0022 JMP #003C
- 0x1C180B0A, // 0023 EQ R6 R5 K10
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200707, // 0026 GETMBR R8 R3 K7
- 0x542605DB, // 0027 LDINT R9 1500
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x1C1C0D0A, // 0023 EQ R7 R6 K10
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 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
- 0x541AFFFB, // 002B LDINT R6 65532
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180706, // 002E GETMET R6 R3 K6
- 0x8820070B, // 002F GETMBR R8 R3 K11
- 0x58240004, // 0030 LDCONST R9 K4
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 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
+ 0x80040E00, // 0032 RET 1 R7
0x70020007, // 0033 JMP #003C
- 0x541AFFFC, // 0034 LDINT R6 65533
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A0004, // 0036 JMPF R6 #003C
- 0x8C180706, // 0037 GETMET R6 R3 K6
- 0x8820070B, // 0038 GETMBR R8 R3 K11
- 0x5824000C, // 0039 LDCONST R9 K12
- 0x7C180600, // 003A CALL R6 3
- 0x80040C00, // 003B RET 1 R6
- 0x70020007, // 003C JMP #0045
- 0x60180003, // 003D GETGBL R6 G3
- 0x5C1C0000, // 003E MOVE R7 R0
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0D, // 0040 GETMET R6 R6 K13
- 0x5C200200, // 0041 MOVE R8 R1
- 0x5C240400, // 0042 MOVE R9 R2
- 0x7C180600, // 0043 CALL R6 3
- 0x80040C00, // 0044 RET 1 R6
- 0x80000000, // 0045 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h
index e93c299dd..ac392119c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h
@@ -18,21 +18,33 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_pre_value, /* name */
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(temp_unit),
+ /* K1 */ be_nested_str_weak(TEMP_F),
+ /* K2 */ be_const_real_hex(0x3FE66666),
+ }),
be_str_weak(pre_value),
&be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0004, // 0002 JMPF R2 #0008
- 0x60080009, // 0003 GETGBL R2 G9
- 0x540E0063, // 0004 LDINT R3 100
- 0x080C0203, // 0005 MUL R3 R1 R3
- 0x7C080200, // 0006 CALL R2 1
- 0x70020000, // 0007 JMP #0009
+ ( &(const binstruction[18]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x880C0101, // 0001 GETMBR R3 R0 K1
+ 0x1C080403, // 0002 EQ R2 R2 R3
+ 0x780A0003, // 0003 JMPF R2 #0008
+ 0x540A001F, // 0004 LDINT R2 32
+ 0x04080202, // 0005 SUB R2 R1 R2
+ 0x0C080502, // 0006 DIV R2 R2 K2
+ 0x5C040400, // 0007 MOVE R1 R2
0x4C080000, // 0008 LDNIL R2
- 0x80040400, // 0009 RET 1 R2
+ 0x20080202, // 0009 NE R2 R1 R2
+ 0x780A0004, // 000A JMPF R2 #0010
+ 0x60080009, // 000B GETGBL R2 G9
+ 0x540E0063, // 000C LDINT R3 100
+ 0x080C0203, // 000D MUL R3 R1 R3
+ 0x7C080200, // 000E CALL R2 1
+ 0x70020000, // 000F JMP #0011
+ 0x4C080000, // 0010 LDNIL R2
+ 0x80040400, // 0011 RET 1 R2
})
)
);
@@ -44,8 +56,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_pre_value, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -59,7 +71,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(I2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -69,75 +81,76 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[68]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0401, // 0004 LDINT R6 1026
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0033, // 0006 JMPF R6 #003B
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A000F, // 0008 JMPF R6 #0019
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0005, // 000C JMPF R6 #0013
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x88240105, // 000F GETMBR R9 R0 K5
- 0x7C180600, // 0010 CALL R6 3
- 0x80040C00, // 0011 RET 1 R6
+ ( &(const binstruction[69]) { /* 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
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000F, // 0008 JMPF R7 #0019
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0005, // 000C JMPF R7 #0013
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x88280105, // 000F GETMBR R10 R0 K5
+ 0x7C1C0600, // 0010 CALL R7 3
+ 0x80040E00, // 0011 RET 1 R7
0x70020004, // 0012 JMP #0018
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200708, // 0014 GETMBR R8 R3 K8
- 0x4C240000, // 0015 LDNIL R9
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240908, // 0014 GETMBR R9 R4 K8
+ 0x4C280000, // 0015 LDNIL R10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x70020020, // 0018 JMP #003A
- 0x1C180B09, // 0019 EQ R6 R5 K9
- 0x781A0005, // 001A JMPF R6 #0021
- 0x8C180706, // 001B GETMET R6 R3 K6
- 0x88200707, // 001C GETMBR R8 R3 K7
- 0x5425EC77, // 001D LDINT R9 -5000
- 0x7C180600, // 001E CALL R6 3
- 0x80040C00, // 001F RET 1 R6
+ 0x1C1C0D09, // 0019 EQ R7 R6 K9
+ 0x781E0005, // 001A JMPF R7 #0021
+ 0x8C1C0706, // 001B GETMET R7 R3 K6
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x5429EC77, // 001D LDINT R10 -5000
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
0x70020018, // 0020 JMP #003A
- 0x1C180B0A, // 0021 EQ R6 R5 K10
- 0x781A0005, // 0022 JMPF R6 #0029
- 0x8C180706, // 0023 GETMET R6 R3 K6
- 0x88200707, // 0024 GETMBR R8 R3 K7
- 0x54263A97, // 0025 LDINT R9 15000
- 0x7C180600, // 0026 CALL R6 3
- 0x80040C00, // 0027 RET 1 R6
+ 0x1C1C0D0A, // 0021 EQ R7 R6 K10
+ 0x781E0005, // 0022 JMPF R7 #0029
+ 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
- 0x541AFFFB, // 0029 LDINT R6 65532
- 0x1C180A06, // 002A EQ R6 R5 R6
- 0x781A0005, // 002B JMPF R6 #0032
- 0x8C180706, // 002C GETMET R6 R3 K6
- 0x8820070B, // 002D GETMBR R8 R3 K11
- 0x58240004, // 002E LDCONST R9 K4
- 0x7C180600, // 002F CALL R6 3
- 0x80040C00, // 0030 RET 1 R6
+ 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
+ 0x80040E00, // 0030 RET 1 R7
0x70020007, // 0031 JMP #003A
- 0x541AFFFC, // 0032 LDINT R6 65533
- 0x1C180A06, // 0033 EQ R6 R5 R6
- 0x781A0004, // 0034 JMPF R6 #003A
- 0x8C180706, // 0035 GETMET R6 R3 K6
- 0x8820070B, // 0036 GETMBR R8 R3 K11
- 0x54260003, // 0037 LDINT R9 4
- 0x7C180600, // 0038 CALL R6 3
- 0x80040C00, // 0039 RET 1 R6
- 0x70020007, // 003A JMP #0043
- 0x60180003, // 003B GETGBL R6 G3
- 0x5C1C0000, // 003C MOVE R7 R0
- 0x7C180200, // 003D CALL R6 1
- 0x8C180D0C, // 003E GETMET R6 R6 K12
- 0x5C200200, // 003F MOVE R8 R1
- 0x5C240400, // 0040 MOVE R9 R2
- 0x7C180600, // 0041 CALL R6 3
- 0x80040C00, // 0042 RET 1 R6
- 0x80000000, // 0043 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h
index 2b3f5b858..af4eb7167 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h
@@ -202,22 +202,22 @@ be_local_closure(Matter_Plugin_Device_invoke_request, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
be_nested_proto(
- 16, /* nstack */
- 3, /* argc */
+ 17, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[35]) { /* constants */
+ ( &(const bvalue[37]) { /* 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_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U2),
/* K8 */ be_const_int(1),
/* K9 */ be_nested_str_weak(U1),
@@ -231,283 +231,291 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
/* 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(read_attribute),
- /* 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),
+ /* 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),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[258]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x1C180904, // 0004 EQ R6 R4 K4
- 0x781A0021, // 0005 JMPF R6 #0028
- 0x1C180B05, // 0006 EQ R6 R5 K5
- 0x781A0005, // 0007 JMPF R6 #000E
- 0x8C180706, // 0008 GETMET R6 R3 K6
- 0x88200707, // 0009 GETMBR R8 R3 K7
- 0x58240005, // 000A LDCONST R9 K5
- 0x7C180600, // 000B CALL R6 3
- 0x80040C00, // 000C RET 1 R6
+ ( &(const binstruction[264]) { /* 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
+ 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
0x70020018, // 000D JMP #0027
- 0x1C180B08, // 000E EQ R6 R5 K8
- 0x781A0005, // 000F JMPF R6 #0016
- 0x8C180706, // 0010 GETMET R6 R3 K6
- 0x88200709, // 0011 GETMBR R8 R3 K9
- 0x58240005, // 0012 LDCONST R9 K5
- 0x7C180600, // 0013 CALL R6 3
- 0x80040C00, // 0014 RET 1 R6
+ 0x1C1C0D08, // 000E EQ R7 R6 K8
+ 0x781E0005, // 000F JMPF R7 #0016
+ 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
- 0x541AFFFB, // 0016 LDINT R6 65532
- 0x1C180A06, // 0017 EQ R6 R5 R6
- 0x781A0005, // 0018 JMPF R6 #001F
- 0x8C180706, // 0019 GETMET R6 R3 K6
- 0x8820070A, // 001A GETMBR R8 R3 K10
- 0x58240005, // 001B LDCONST R9 K5
- 0x7C180600, // 001C CALL R6 3
- 0x80040C00, // 001D RET 1 R6
+ 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
- 0x541AFFFC, // 001F LDINT R6 65533
- 0x1C180A06, // 0020 EQ R6 R5 R6
- 0x781A0004, // 0021 JMPF R6 #0027
- 0x8C180706, // 0022 GETMET R6 R3 K6
- 0x8820070A, // 0023 GETMBR R8 R3 K10
- 0x54260003, // 0024 LDINT R9 4
- 0x7C180600, // 0025 CALL R6 3
- 0x80040C00, // 0026 RET 1 R6
- 0x700200D8, // 0027 JMP #0101
- 0x541A0003, // 0028 LDINT R6 4
- 0x1C180806, // 0029 EQ R6 R4 R6
- 0x781A0016, // 002A JMPF R6 #0042
- 0x1C180B05, // 002B EQ R6 R5 K5
- 0x781A0002, // 002C JMPF R6 #0030
- 0x4C180000, // 002D LDNIL R6
- 0x80040C00, // 002E RET 1 R6
+ 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
- 0x541AFFFB, // 0030 LDINT R6 65532
- 0x1C180A06, // 0031 EQ R6 R5 R6
- 0x781A0005, // 0032 JMPF R6 #0039
- 0x8C180706, // 0033 GETMET R6 R3 K6
- 0x8820070A, // 0034 GETMBR R8 R3 K10
- 0x58240005, // 0035 LDCONST R9 K5
- 0x7C180600, // 0036 CALL R6 3
- 0x80040C00, // 0037 RET 1 R6
+ 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
- 0x541AFFFC, // 0039 LDINT R6 65533
- 0x1C180A06, // 003A EQ R6 R5 R6
- 0x781A0004, // 003B JMPF R6 #0041
- 0x8C180706, // 003C GETMET R6 R3 K6
- 0x8820070A, // 003D GETMBR R8 R3 K10
- 0x54260003, // 003E LDINT R9 4
- 0x7C180600, // 003F CALL R6 3
- 0x80040C00, // 0040 RET 1 R6
- 0x700200BE, // 0041 JMP #0101
- 0x541A0004, // 0042 LDINT R6 5
- 0x1C180806, // 0043 EQ R6 R4 R6
- 0x781A0011, // 0044 JMPF R6 #0057
- 0x541AFFFB, // 0045 LDINT R6 65532
- 0x1C180A06, // 0046 EQ R6 R5 R6
- 0x781A0005, // 0047 JMPF R6 #004E
- 0x8C180706, // 0048 GETMET R6 R3 K6
- 0x8820070A, // 0049 GETMBR R8 R3 K10
- 0x58240005, // 004A LDCONST R9 K5
- 0x7C180600, // 004B CALL R6 3
- 0x80040C00, // 004C RET 1 R6
+ 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
- 0x541AFFFC, // 004E LDINT R6 65533
- 0x1C180A06, // 004F EQ R6 R5 R6
- 0x781A0004, // 0050 JMPF R6 #0056
- 0x8C180706, // 0051 GETMET R6 R3 K6
- 0x8820070A, // 0052 GETMBR R8 R3 K10
- 0x54260003, // 0053 LDINT R9 4
- 0x7C180600, // 0054 CALL R6 3
- 0x80040C00, // 0055 RET 1 R6
- 0x700200A9, // 0056 JMP #0101
- 0x541A001C, // 0057 LDINT R6 29
- 0x1C180806, // 0058 EQ R6 R4 R6
- 0x781A003A, // 0059 JMPF R6 #0095
- 0x1C180B05, // 005A EQ R6 R5 K5
- 0x781A002F, // 005B JMPF R6 #008C
- 0x8C18070B, // 005C GETMET R6 R3 K11
- 0x7C180200, // 005D CALL R6 1
- 0x881C010C, // 005E GETMBR R7 R0 K12
- 0x60200010, // 005F GETGBL R8 G16
- 0x8C240F0D, // 0060 GETMET R9 R7 K13
- 0x7C240200, // 0061 CALL R9 1
- 0x7C200200, // 0062 CALL R8 1
+ 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
- 0x5C241000, // 0064 MOVE R9 R8
- 0x7C240000, // 0065 CALL R9 0
- 0x8C280D0E, // 0066 GETMET R10 R6 K14
- 0x7C280200, // 0067 CALL R10 1
- 0x8C2C150F, // 0068 GETMET R11 R10 K15
- 0x58340005, // 0069 LDCONST R13 K5
- 0x88380707, // 006A GETMBR R14 R3 K7
- 0x5C3C1200, // 006B MOVE R15 R9
- 0x7C2C0800, // 006C CALL R11 4
- 0x8C2C150F, // 006D GETMET R11 R10 K15
- 0x58340008, // 006E LDCONST R13 K8
- 0x88380707, // 006F GETMBR R14 R3 K7
- 0x943C0E09, // 0070 GETIDX R15 R7 R9
- 0x7C2C0800, // 0071 CALL R11 4
+ 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
- 0x58200010, // 0073 LDCONST R8 K16
- 0xAC200200, // 0074 CATCH R8 1 0
+ 0x58240010, // 0073 LDCONST R9 K16
+ 0xAC240200, // 0074 CATCH R9 1 0
0xB0080000, // 0075 RAISE 2 R0 R0
- 0x88200111, // 0076 GETMBR R8 R0 K17
- 0x8C201112, // 0077 GETMET R8 R8 K18
- 0x8C280313, // 0078 GETMET R10 R1 K19
- 0x7C280200, // 0079 CALL R10 1
- 0x7C200400, // 007A CALL R8 2
- 0x4C240000, // 007B LDNIL R9
- 0x1C201009, // 007C EQ R8 R8 R9
- 0x7822000B, // 007D JMPF R8 #008A
- 0x8C200D0E, // 007E GETMET R8 R6 K14
- 0x7C200200, // 007F CALL R8 1
- 0x8C24110F, // 0080 GETMET R9 R8 K15
- 0x582C0005, // 0081 LDCONST R11 K5
- 0x88300707, // 0082 GETMBR R12 R3 K7
- 0x54360012, // 0083 LDINT R13 19
- 0x7C240800, // 0084 CALL R9 4
- 0x8C24110F, // 0085 GETMET R9 R8 K15
- 0x582C0008, // 0086 LDCONST R11 K8
- 0x88300707, // 0087 GETMBR R12 R3 K7
- 0x58340008, // 0088 LDCONST R13 K8
- 0x7C240800, // 0089 CALL R9 4
- 0x80040C00, // 008A RET 1 R6
- 0x70020007, // 008B JMP #0094
- 0x60180003, // 008C GETGBL R6 G3
- 0x5C1C0000, // 008D MOVE R7 R0
- 0x7C180200, // 008E CALL R6 1
- 0x8C180D14, // 008F GETMET R6 R6 K20
- 0x5C200200, // 0090 MOVE R8 R1
- 0x5C240400, // 0091 MOVE R9 R2
- 0x7C180600, // 0092 CALL R6 3
- 0x80040C00, // 0093 RET 1 R6
- 0x7002006B, // 0094 JMP #0101
- 0x541A0038, // 0095 LDINT R6 57
- 0x1C180806, // 0096 EQ R6 R4 R6
- 0x781A0060, // 0097 JMPF R6 #00F9
- 0xA41A2A00, // 0098 IMPORT R6 K21
- 0x1C1C0B04, // 0099 EQ R7 R5 K4
- 0x781E000A, // 009A JMPF R7 #00A6
- 0x8C1C0706, // 009B GETMET R7 R3 K6
- 0x88240716, // 009C GETMBR R9 R3 K22
- 0xB82A2E00, // 009D GETNGBL R10 K23
- 0x8C281518, // 009E GETMET R10 R10 K24
- 0x58300019, // 009F LDCONST R12 K25
- 0x50340200, // 00A0 LDBOOL R13 1 0
- 0x7C280600, // 00A1 CALL R10 3
- 0x94281519, // 00A2 GETIDX R10 R10 K25
- 0x7C1C0600, // 00A3 CALL R7 3
- 0x80040E00, // 00A4 RET 1 R7
- 0x70020051, // 00A5 JMP #00F8
- 0x541E0004, // 00A6 LDINT R7 5
- 0x1C1C0A07, // 00A7 EQ R7 R5 R7
- 0x781E0006, // 00A8 JMPF R7 #00B0
- 0x8C1C0706, // 00A9 GETMET R7 R3 K6
- 0x88240716, // 00AA GETMBR R9 R3 K22
- 0x8C28011A, // 00AB GETMET R10 R0 K26
- 0x7C280200, // 00AC CALL R10 1
- 0x7C1C0600, // 00AD CALL R7 3
- 0x80040E00, // 00AE RET 1 R7
- 0x70020047, // 00AF JMP #00F8
- 0x541E0009, // 00B0 LDINT R7 10
- 0x1C1C0A07, // 00B1 EQ R7 R5 R7
- 0x781E0015, // 00B2 JMPF R7 #00C9
- 0xB81E2E00, // 00B3 GETNGBL R7 K23
- 0x8C1C0F18, // 00B4 GETMET R7 R7 K24
- 0x5824001B, // 00B5 LDCONST R9 K27
- 0x50280200, // 00B6 LDBOOL R10 1 0
- 0x7C1C0600, // 00B7 CALL R7 3
- 0x941C0F1C, // 00B8 GETIDX R7 R7 K28
- 0x941C0F1D, // 00B9 GETIDX R7 R7 K29
- 0x8C200D12, // 00BA GETMET R8 R6 K18
- 0x5C280E00, // 00BB MOVE R10 R7
- 0x582C001E, // 00BC LDCONST R11 K30
- 0x7C200600, // 00BD CALL R8 3
- 0x24241105, // 00BE GT R9 R8 K5
- 0x78260002, // 00BF JMPF R9 #00C3
- 0x04241108, // 00C0 SUB R9 R8 K8
- 0x40260A09, // 00C1 CONNECT R9 K5 R9
- 0x941C0E09, // 00C2 GETIDX R7 R7 R9
- 0x8C240706, // 00C3 GETMET R9 R3 K6
- 0x882C0716, // 00C4 GETMBR R11 R3 K22
- 0x5C300E00, // 00C5 MOVE R12 R7
- 0x7C240600, // 00C6 CALL R9 3
- 0x80041200, // 00C7 RET 1 R9
- 0x7002002E, // 00C8 JMP #00F8
- 0x541E000E, // 00C9 LDINT R7 15
- 0x1C1C0A07, // 00CA EQ R7 R5 R7
- 0x781E000B, // 00CB JMPF R7 #00D8
- 0x8C1C0706, // 00CC GETMET R7 R3 K6
- 0x88240716, // 00CD GETMBR R9 R3 K22
- 0xB82A2E00, // 00CE GETNGBL R10 K23
- 0x8C28151F, // 00CF GETMET R10 R10 K31
- 0x7C280200, // 00D0 CALL R10 1
- 0x8C281512, // 00D1 GETMET R10 R10 K18
- 0x58300020, // 00D2 LDCONST R12 K32
- 0x58340021, // 00D3 LDCONST R13 K33
- 0x7C280600, // 00D4 CALL R10 3
- 0x7C1C0600, // 00D5 CALL R7 3
- 0x80040E00, // 00D6 RET 1 R7
- 0x7002001F, // 00D7 JMP #00F8
- 0x541E0010, // 00D8 LDINT R7 17
- 0x1C1C0A07, // 00D9 EQ R7 R5 R7
- 0x781E0005, // 00DA JMPF R7 #00E1
- 0x8C1C0706, // 00DB GETMET R7 R3 K6
- 0x88240722, // 00DC GETMBR R9 R3 K34
- 0x58280008, // 00DD LDCONST R10 K8
- 0x7C1C0600, // 00DE CALL R7 3
- 0x80040E00, // 00DF RET 1 R7
- 0x70020016, // 00E0 JMP #00F8
- 0x541E0011, // 00E1 LDINT R7 18
- 0x1C1C0A07, // 00E2 EQ R7 R5 R7
- 0x781E000B, // 00E3 JMPF R7 #00F0
- 0x8C1C0706, // 00E4 GETMET R7 R3 K6
- 0x88240716, // 00E5 GETMBR R9 R3 K22
- 0xB82A2E00, // 00E6 GETNGBL R10 K23
- 0x8C28151F, // 00E7 GETMET R10 R10 K31
- 0x7C280200, // 00E8 CALL R10 1
- 0x8C281512, // 00E9 GETMET R10 R10 K18
- 0x58300020, // 00EA LDCONST R12 K32
- 0x58340021, // 00EB LDCONST R13 K33
- 0x7C280600, // 00EC CALL R10 3
- 0x7C1C0600, // 00ED CALL R7 3
- 0x80040E00, // 00EE RET 1 R7
- 0x70020007, // 00EF JMP #00F8
- 0x601C0003, // 00F0 GETGBL R7 G3
- 0x5C200000, // 00F1 MOVE R8 R0
- 0x7C1C0200, // 00F2 CALL R7 1
- 0x8C1C0F14, // 00F3 GETMET R7 R7 K20
- 0x5C240200, // 00F4 MOVE R9 R1
- 0x5C280400, // 00F5 MOVE R10 R2
- 0x7C1C0600, // 00F6 CALL R7 3
- 0x80040E00, // 00F7 RET 1 R7
- 0x70020007, // 00F8 JMP #0101
- 0x60180003, // 00F9 GETGBL R6 G3
- 0x5C1C0000, // 00FA MOVE R7 R0
- 0x7C180200, // 00FB CALL R6 1
- 0x8C180D14, // 00FC GETMET R6 R6 K20
- 0x5C200200, // 00FD MOVE R8 R1
- 0x5C240400, // 00FE MOVE R9 R2
- 0x7C180600, // 00FF CALL R6 3
- 0x80040C00, // 0100 RET 1 R6
- 0x80000000, // 0101 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h
index a9fd5b727..28aa6cea3 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h
@@ -67,8 +67,8 @@ be_local_closure(Matter_Plugin_Light0_update_shadow, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -82,7 +82,7 @@ be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* 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),
@@ -90,51 +90,52 @@ be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[44]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0005, // 0004 LDINT R6 6
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A001B, // 0006 JMPF R6 #0023
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A0005, // 000A JMPF R6 #0011
- 0x8C180706, // 000B GETMET R6 R3 K6
- 0x88200707, // 000C GETMBR R8 R3 K7
- 0x88240108, // 000D GETMBR R9 R0 K8
- 0x7C180600, // 000E CALL R6 3
- 0x80040C00, // 000F RET 1 R6
+ ( &(const binstruction[45]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0005, // 000A JMPF R7 #0011
+ 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
- 0x541AFFFB, // 0011 LDINT R6 65532
- 0x1C180A06, // 0012 EQ R6 R5 R6
- 0x781A0005, // 0013 JMPF R6 #001A
- 0x8C180706, // 0014 GETMET R6 R3 K6
- 0x88200709, // 0015 GETMBR R8 R3 K9
- 0x58240005, // 0016 LDCONST R9 K5
- 0x7C180600, // 0017 CALL R6 3
- 0x80040C00, // 0018 RET 1 R6
+ 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
- 0x541AFFFC, // 001A LDINT R6 65533
- 0x1C180A06, // 001B EQ R6 R5 R6
- 0x781A0004, // 001C JMPF R6 #0022
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200709, // 001E GETMBR R8 R3 K9
- 0x54260003, // 001F LDINT R9 4
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
- 0x70020007, // 0022 JMP #002B
- 0x60180003, // 0023 GETGBL R6 G3
- 0x5C1C0000, // 0024 MOVE R7 R0
- 0x7C180200, // 0025 CALL R6 1
- 0x8C180D0A, // 0026 GETMET R6 R6 K10
- 0x5C200200, // 0027 MOVE R8 R1
- 0x5C240400, // 0028 MOVE R9 R2
- 0x7C180600, // 0029 CALL R6 3
- 0x80040C00, // 002A RET 1 R6
- 0x80000000, // 002B RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h
index ca1b20831..119611183 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h
@@ -237,8 +237,8 @@ be_local_closure(Matter_Plugin_Light1_invoke_request, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -252,7 +252,7 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U1),
/* K8 */ be_nested_str_weak(shadow_bri),
/* K9 */ be_const_int(2),
@@ -263,85 +263,86 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[78]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0007, // 0004 LDINT R6 8
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A003D, // 0006 JMPF R6 #0045
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A0005, // 000A JMPF R6 #0011
- 0x8C180706, // 000B GETMET R6 R3 K6
- 0x88200707, // 000C GETMBR R8 R3 K7
- 0x88240108, // 000D GETMBR R9 R0 K8
- 0x7C180600, // 000E CALL R6 3
- 0x80040C00, // 000F RET 1 R6
+ ( &(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
+ 0x781E003D, // 0006 JMPF R7 #0045
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0005, // 000A JMPF R7 #0011
+ 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
0x70020032, // 0010 JMP #0044
- 0x1C180B09, // 0011 EQ R6 R5 K9
- 0x781A0005, // 0012 JMPF R6 #0019
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200707, // 0014 GETMBR R8 R3 K7
- 0x58240005, // 0015 LDCONST R9 K5
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x1C1C0D09, // 0011 EQ R7 R6 K9
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240907, // 0014 GETMBR R9 R4 K7
+ 0x58280005, // 0015 LDCONST R10 K5
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x7002002A, // 0018 JMP #0044
- 0x1C180B0A, // 0019 EQ R6 R5 K10
- 0x781A0005, // 001A JMPF R6 #0021
- 0x8C180706, // 001B GETMET R6 R3 K6
- 0x88200707, // 001C GETMBR R8 R3 K7
- 0x542600FD, // 001D LDINT R9 254
- 0x7C180600, // 001E CALL R6 3
- 0x80040C00, // 001F RET 1 R6
+ 0x1C1C0D0A, // 0019 EQ R7 R6 K10
+ 0x781E0005, // 001A JMPF R7 #0021
+ 0x8C1C0706, // 001B GETMET R7 R3 K6
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x542A00FD, // 001D LDINT R10 254
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
0x70020022, // 0020 JMP #0044
- 0x541A000E, // 0021 LDINT R6 15
- 0x1C180A06, // 0022 EQ R6 R5 R6
- 0x781A0005, // 0023 JMPF R6 #002A
- 0x8C180706, // 0024 GETMET R6 R3 K6
- 0x88200707, // 0025 GETMBR R8 R3 K7
- 0x58240005, // 0026 LDCONST R9 K5
- 0x7C180600, // 0027 CALL R6 3
- 0x80040C00, // 0028 RET 1 R6
+ 0x541E000E, // 0021 LDINT R7 15
+ 0x1C1C0C07, // 0022 EQ R7 R6 R7
+ 0x781E0005, // 0023 JMPF R7 #002A
+ 0x8C1C0706, // 0024 GETMET R7 R3 K6
+ 0x88240907, // 0025 GETMBR R9 R4 K7
+ 0x58280005, // 0026 LDCONST R10 K5
+ 0x7C1C0600, // 0027 CALL R7 3
+ 0x80040E00, // 0028 RET 1 R7
0x70020019, // 0029 JMP #0044
- 0x541A0010, // 002A LDINT R6 17
- 0x1C180A06, // 002B EQ R6 R5 R6
- 0x781A0005, // 002C JMPF R6 #0033
- 0x8C180706, // 002D GETMET R6 R3 K6
- 0x88200707, // 002E GETMBR R8 R3 K7
- 0x88240108, // 002F GETMBR R9 R0 K8
- 0x7C180600, // 0030 CALL R6 3
- 0x80040C00, // 0031 RET 1 R6
+ 0x541E0010, // 002A LDINT R7 17
+ 0x1C1C0C07, // 002B EQ R7 R6 R7
+ 0x781E0005, // 002C JMPF R7 #0033
+ 0x8C1C0706, // 002D GETMET R7 R3 K6
+ 0x88240907, // 002E GETMBR R9 R4 K7
+ 0x88280108, // 002F GETMBR R10 R0 K8
+ 0x7C1C0600, // 0030 CALL R7 3
+ 0x80040E00, // 0031 RET 1 R7
0x70020010, // 0032 JMP #0044
- 0x541AFFFB, // 0033 LDINT R6 65532
- 0x1C180A06, // 0034 EQ R6 R5 R6
- 0x781A0005, // 0035 JMPF R6 #003C
- 0x8C180706, // 0036 GETMET R6 R3 K6
- 0x8820070B, // 0037 GETMBR R8 R3 K11
- 0x5824000C, // 0038 LDCONST R9 K12
- 0x7C180600, // 0039 CALL R6 3
- 0x80040C00, // 003A RET 1 R6
+ 0x541EFFFB, // 0033 LDINT R7 65532
+ 0x1C1C0C07, // 0034 EQ R7 R6 R7
+ 0x781E0005, // 0035 JMPF R7 #003C
+ 0x8C1C0706, // 0036 GETMET R7 R3 K6
+ 0x8824090B, // 0037 GETMBR R9 R4 K11
+ 0x5828000C, // 0038 LDCONST R10 K12
+ 0x7C1C0600, // 0039 CALL R7 3
+ 0x80040E00, // 003A RET 1 R7
0x70020007, // 003B JMP #0044
- 0x541AFFFC, // 003C LDINT R6 65533
- 0x1C180A06, // 003D EQ R6 R5 R6
- 0x781A0004, // 003E JMPF R6 #0044
- 0x8C180706, // 003F GETMET R6 R3 K6
- 0x8820070B, // 0040 GETMBR R8 R3 K11
- 0x54260004, // 0041 LDINT R9 5
- 0x7C180600, // 0042 CALL R6 3
- 0x80040C00, // 0043 RET 1 R6
- 0x70020007, // 0044 JMP #004D
- 0x60180003, // 0045 GETGBL R6 G3
- 0x5C1C0000, // 0046 MOVE R7 R0
- 0x7C180200, // 0047 CALL R6 1
- 0x8C180D0D, // 0048 GETMET R6 R6 K13
- 0x5C200200, // 0049 MOVE R8 R1
- 0x5C240400, // 004A MOVE R9 R2
- 0x7C180600, // 004B CALL R6 3
- 0x80040C00, // 004C RET 1 R6
- 0x80000000, // 004D RET 0
+ 0x541EFFFC, // 003C LDINT R7 65533
+ 0x1C1C0C07, // 003D EQ R7 R6 R7
+ 0x781E0004, // 003E JMPF R7 #0044
+ 0x8C1C0706, // 003F GETMET R7 R3 K6
+ 0x8824090B, // 0040 GETMBR R9 R4 K11
+ 0x542A0004, // 0041 LDINT R10 5
+ 0x7C1C0600, // 0042 CALL R7 3
+ 0x80040E00, // 0043 RET 1 R7
+ 0x70020008, // 0044 JMP #004E
+ 0x601C0003, // 0045 GETGBL R7 G3
+ 0x5C200000, // 0046 MOVE R8 R0
+ 0x7C1C0200, // 0047 CALL R7 1
+ 0x8C1C0F0D, // 0048 GETMET R7 R7 K13
+ 0x5C240200, // 0049 MOVE R9 R1
+ 0x5C280400, // 004A MOVE R10 R2
+ 0x5C2C0600, // 004B MOVE R11 R3
+ 0x7C1C0800, // 004C CALL R7 4
+ 0x80040E00, // 004D RET 1 R7
+ 0x80000000, // 004E RET 0
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h
index 55b734a1d..8294b2afa 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h
@@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Light2;
********************************************************************/
be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -25,7 +25,7 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_nested_str_weak(create_TLV),
+ /* K5 */ be_nested_str_weak(set),
/* K6 */ be_nested_str_weak(U1),
/* K7 */ be_nested_str_weak(shadow_ct),
/* K8 */ be_const_int(2),
@@ -37,88 +37,89 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[81]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A02FF, // 0004 LDINT R6 768
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0040, // 0006 JMPF R6 #0048
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x541A0006, // 0009 LDINT R6 7
- 0x1C180A06, // 000A EQ R6 R5 R6
- 0x781A0005, // 000B JMPF R6 #0012
- 0x8C180705, // 000C GETMET R6 R3 K5
- 0x88200706, // 000D GETMBR R8 R3 K6
- 0x88240107, // 000E GETMBR R9 R0 K7
- 0x7C180600, // 000F CALL R6 3
- 0x80040C00, // 0010 RET 1 R6
+ ( &(const binstruction[82]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x541E0006, // 0009 LDINT R7 7
+ 0x1C1C0C07, // 000A EQ R7 R6 R7
+ 0x781E0005, // 000B JMPF R7 #0012
+ 0x8C1C0705, // 000C GETMET R7 R3 K5
+ 0x88240906, // 000D GETMBR R9 R4 K6
+ 0x88280107, // 000E GETMBR R10 R0 K7
+ 0x7C1C0600, // 000F CALL R7 3
+ 0x80040E00, // 0010 RET 1 R7
0x70020034, // 0011 JMP #0047
- 0x541A0007, // 0012 LDINT R6 8
- 0x1C180A06, // 0013 EQ R6 R5 R6
- 0x781A0005, // 0014 JMPF R6 #001B
- 0x8C180705, // 0015 GETMET R6 R3 K5
- 0x88200706, // 0016 GETMBR R8 R3 K6
- 0x58240008, // 0017 LDCONST R9 K8
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x541E0007, // 0012 LDINT R7 8
+ 0x1C1C0C07, // 0013 EQ R7 R6 R7
+ 0x781E0005, // 0014 JMPF R7 #001B
+ 0x8C1C0705, // 0015 GETMET R7 R3 K5
+ 0x88240906, // 0016 GETMBR R9 R4 K6
+ 0x58280008, // 0017 LDCONST R10 K8
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x7002002B, // 001A JMP #0047
- 0x541A000E, // 001B LDINT R6 15
- 0x1C180A06, // 001C EQ R6 R5 R6
- 0x781A0005, // 001D JMPF R6 #0024
- 0x8C180705, // 001E GETMET R6 R3 K5
- 0x88200706, // 001F GETMBR R8 R3 K6
- 0x58240009, // 0020 LDCONST R9 K9
- 0x7C180600, // 0021 CALL R6 3
- 0x80040C00, // 0022 RET 1 R6
+ 0x541E000E, // 001B LDINT R7 15
+ 0x1C1C0C07, // 001C EQ R7 R6 R7
+ 0x781E0005, // 001D JMPF R7 #0024
+ 0x8C1C0705, // 001E GETMET R7 R3 K5
+ 0x88240906, // 001F GETMBR R9 R4 K6
+ 0x58280009, // 0020 LDCONST R10 K9
+ 0x7C1C0600, // 0021 CALL R7 3
+ 0x80040E00, // 0022 RET 1 R7
0x70020022, // 0023 JMP #0047
- 0x541A400A, // 0024 LDINT R6 16395
- 0x1C180A06, // 0025 EQ R6 R5 R6
- 0x781A0005, // 0026 JMPF R6 #002D
- 0x8C180705, // 0027 GETMET R6 R3 K5
- 0x88200706, // 0028 GETMBR R8 R3 K6
- 0x8824010A, // 0029 GETMBR R9 R0 K10
- 0x7C180600, // 002A CALL R6 3
- 0x80040C00, // 002B RET 1 R6
+ 0x541E400A, // 0024 LDINT R7 16395
+ 0x1C1C0C07, // 0025 EQ R7 R6 R7
+ 0x781E0005, // 0026 JMPF R7 #002D
+ 0x8C1C0705, // 0027 GETMET R7 R3 K5
+ 0x88240906, // 0028 GETMBR R9 R4 K6
+ 0x8828010A, // 0029 GETMBR R10 R0 K10
+ 0x7C1C0600, // 002A CALL R7 3
+ 0x80040E00, // 002B RET 1 R7
0x70020019, // 002C JMP #0047
- 0x541A400B, // 002D LDINT R6 16396
- 0x1C180A06, // 002E EQ R6 R5 R6
- 0x781A0005, // 002F JMPF R6 #0036
- 0x8C180705, // 0030 GETMET R6 R3 K5
- 0x88200706, // 0031 GETMBR R8 R3 K6
- 0x8824010B, // 0032 GETMBR R9 R0 K11
- 0x7C180600, // 0033 CALL R6 3
- 0x80040C00, // 0034 RET 1 R6
+ 0x541E400B, // 002D LDINT R7 16396
+ 0x1C1C0C07, // 002E EQ R7 R6 R7
+ 0x781E0005, // 002F JMPF R7 #0036
+ 0x8C1C0705, // 0030 GETMET R7 R3 K5
+ 0x88240906, // 0031 GETMBR R9 R4 K6
+ 0x8828010B, // 0032 GETMBR R10 R0 K11
+ 0x7C1C0600, // 0033 CALL R7 3
+ 0x80040E00, // 0034 RET 1 R7
0x70020010, // 0035 JMP #0047
- 0x541AFFFB, // 0036 LDINT R6 65532
- 0x1C180A06, // 0037 EQ R6 R5 R6
- 0x781A0005, // 0038 JMPF R6 #003F
- 0x8C180705, // 0039 GETMET R6 R3 K5
- 0x8820070C, // 003A GETMBR R8 R3 K12
- 0x5426000F, // 003B LDINT R9 16
- 0x7C180600, // 003C CALL R6 3
- 0x80040C00, // 003D RET 1 R6
+ 0x541EFFFB, // 0036 LDINT R7 65532
+ 0x1C1C0C07, // 0037 EQ R7 R6 R7
+ 0x781E0005, // 0038 JMPF R7 #003F
+ 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
- 0x541AFFFC, // 003F LDINT R6 65533
- 0x1C180A06, // 0040 EQ R6 R5 R6
- 0x781A0004, // 0041 JMPF R6 #0047
- 0x8C180705, // 0042 GETMET R6 R3 K5
- 0x8820070C, // 0043 GETMBR R8 R3 K12
- 0x54260004, // 0044 LDINT R9 5
- 0x7C180600, // 0045 CALL R6 3
- 0x80040C00, // 0046 RET 1 R6
- 0x70020007, // 0047 JMP #0050
- 0x60180003, // 0048 GETGBL R6 G3
- 0x5C1C0000, // 0049 MOVE R7 R0
- 0x7C180200, // 004A CALL R6 1
- 0x8C180D0D, // 004B GETMET R6 R6 K13
- 0x5C200200, // 004C MOVE R8 R1
- 0x5C240400, // 004D MOVE R9 R2
- 0x7C180600, // 004E CALL R6 3
- 0x80040C00, // 004F RET 1 R6
- 0x80000000, // 0050 RET 0
+ 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
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h
index 97ac6cc6b..284eaf8e6 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h
@@ -112,8 +112,8 @@ be_local_closure(Matter_Plugin_Light3_update_shadow, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -127,7 +127,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U1),
/* K8 */ be_nested_str_weak(shadow_hue),
/* K9 */ be_const_int(1),
@@ -137,113 +137,114 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[106]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A02FF, // 0004 LDINT R6 768
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0059, // 0006 JMPF R6 #0061
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A0005, // 000A JMPF R6 #0011
- 0x8C180706, // 000B GETMET R6 R3 K6
- 0x88200707, // 000C GETMBR R8 R3 K7
- 0x88240108, // 000D GETMBR R9 R0 K8
- 0x7C180600, // 000E CALL R6 3
- 0x80040C00, // 000F RET 1 R6
+ ( &(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
+ 0x781E0059, // 0006 JMPF R7 #0061
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0005, // 000A JMPF R7 #0011
+ 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
0x7002004E, // 0010 JMP #0060
- 0x1C180B09, // 0011 EQ R6 R5 K9
- 0x781A0005, // 0012 JMPF R6 #0019
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200707, // 0014 GETMBR R8 R3 K7
- 0x8824010A, // 0015 GETMBR R9 R0 K10
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x1C1C0D09, // 0011 EQ R7 R6 K9
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240907, // 0014 GETMBR R9 R4 K7
+ 0x8828010A, // 0015 GETMBR R10 R0 K10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x70020046, // 0018 JMP #0060
- 0x541A0006, // 0019 LDINT R6 7
- 0x1C180A06, // 001A EQ R6 R5 R6
- 0x781A0005, // 001B JMPF R6 #0022
- 0x8C180706, // 001C GETMET R6 R3 K6
- 0x88200707, // 001D GETMBR R8 R3 K7
- 0x58240005, // 001E LDCONST R9 K5
- 0x7C180600, // 001F CALL R6 3
- 0x80040C00, // 0020 RET 1 R6
+ 0x541E0006, // 0019 LDINT R7 7
+ 0x1C1C0C07, // 001A EQ R7 R6 R7
+ 0x781E0005, // 001B JMPF R7 #0022
+ 0x8C1C0706, // 001C GETMET R7 R3 K6
+ 0x88240907, // 001D GETMBR R9 R4 K7
+ 0x58280005, // 001E LDCONST R10 K5
+ 0x7C1C0600, // 001F CALL R7 3
+ 0x80040E00, // 0020 RET 1 R7
0x7002003D, // 0021 JMP #0060
- 0x541A0007, // 0022 LDINT R6 8
- 0x1C180A06, // 0023 EQ R6 R5 R6
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200707, // 0026 GETMBR R8 R3 K7
- 0x58240005, // 0027 LDCONST R9 K5
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x541E0007, // 0022 LDINT R7 8
+ 0x1C1C0C07, // 0023 EQ R7 R6 R7
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 0x8C1C0706, // 0025 GETMET R7 R3 K6
+ 0x88240907, // 0026 GETMBR R9 R4 K7
+ 0x58280005, // 0027 LDCONST R10 K5
+ 0x7C1C0600, // 0028 CALL R7 3
+ 0x80040E00, // 0029 RET 1 R7
0x70020034, // 002A JMP #0060
- 0x541A000E, // 002B LDINT R6 15
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180706, // 002E GETMET R6 R3 K6
- 0x88200707, // 002F GETMBR R8 R3 K7
- 0x58240005, // 0030 LDCONST R9 K5
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 0x541E000E, // 002B LDINT R7 15
+ 0x1C1C0C07, // 002C EQ R7 R6 R7
+ 0x781E0005, // 002D JMPF R7 #0034
+ 0x8C1C0706, // 002E GETMET R7 R3 K6
+ 0x88240907, // 002F GETMBR R9 R4 K7
+ 0x58280005, // 0030 LDCONST R10 K5
+ 0x7C1C0600, // 0031 CALL R7 3
+ 0x80040E00, // 0032 RET 1 R7
0x7002002B, // 0033 JMP #0060
- 0x541A4000, // 0034 LDINT R6 16385
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A0005, // 0036 JMPF R6 #003D
- 0x8C180706, // 0037 GETMET R6 R3 K6
- 0x88200707, // 0038 GETMBR R8 R3 K7
- 0x58240005, // 0039 LDCONST R9 K5
- 0x7C180600, // 003A CALL R6 3
- 0x80040C00, // 003B RET 1 R6
+ 0x541E4000, // 0034 LDINT R7 16385
+ 0x1C1C0C07, // 0035 EQ R7 R6 R7
+ 0x781E0005, // 0036 JMPF R7 #003D
+ 0x8C1C0706, // 0037 GETMET R7 R3 K6
+ 0x88240907, // 0038 GETMBR R9 R4 K7
+ 0x58280005, // 0039 LDCONST R10 K5
+ 0x7C1C0600, // 003A CALL R7 3
+ 0x80040E00, // 003B RET 1 R7
0x70020022, // 003C JMP #0060
- 0x541A4009, // 003D LDINT R6 16394
- 0x1C180A06, // 003E EQ R6 R5 R6
- 0x781A0005, // 003F JMPF R6 #0046
- 0x8C180706, // 0040 GETMET R6 R3 K6
- 0x88200707, // 0041 GETMBR R8 R3 K7
- 0x58240009, // 0042 LDCONST R9 K9
- 0x7C180600, // 0043 CALL R6 3
- 0x80040C00, // 0044 RET 1 R6
+ 0x541E4009, // 003D LDINT R7 16394
+ 0x1C1C0C07, // 003E EQ R7 R6 R7
+ 0x781E0005, // 003F JMPF R7 #0046
+ 0x8C1C0706, // 0040 GETMET R7 R3 K6
+ 0x88240907, // 0041 GETMBR R9 R4 K7
+ 0x58280009, // 0042 LDCONST R10 K9
+ 0x7C1C0600, // 0043 CALL R7 3
+ 0x80040E00, // 0044 RET 1 R7
0x70020019, // 0045 JMP #0060
- 0x541A000F, // 0046 LDINT R6 16
- 0x1C180A06, // 0047 EQ R6 R5 R6
- 0x781A0005, // 0048 JMPF R6 #004F
- 0x8C180706, // 0049 GETMET R6 R3 K6
- 0x88200707, // 004A GETMBR R8 R3 K7
- 0x58240005, // 004B LDCONST R9 K5
- 0x7C180600, // 004C CALL R6 3
- 0x80040C00, // 004D RET 1 R6
+ 0x541E000F, // 0046 LDINT R7 16
+ 0x1C1C0C07, // 0047 EQ R7 R6 R7
+ 0x781E0005, // 0048 JMPF R7 #004F
+ 0x8C1C0706, // 0049 GETMET R7 R3 K6
+ 0x88240907, // 004A GETMBR R9 R4 K7
+ 0x58280005, // 004B LDCONST R10 K5
+ 0x7C1C0600, // 004C CALL R7 3
+ 0x80040E00, // 004D RET 1 R7
0x70020010, // 004E JMP #0060
- 0x541AFFFB, // 004F LDINT R6 65532
- 0x1C180A06, // 0050 EQ R6 R5 R6
- 0x781A0005, // 0051 JMPF R6 #0058
- 0x8C180706, // 0052 GETMET R6 R3 K6
- 0x8820070B, // 0053 GETMBR R8 R3 K11
- 0x58240009, // 0054 LDCONST R9 K9
- 0x7C180600, // 0055 CALL R6 3
- 0x80040C00, // 0056 RET 1 R6
+ 0x541EFFFB, // 004F LDINT R7 65532
+ 0x1C1C0C07, // 0050 EQ R7 R6 R7
+ 0x781E0005, // 0051 JMPF R7 #0058
+ 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
- 0x541AFFFC, // 0058 LDINT R6 65533
- 0x1C180A06, // 0059 EQ R6 R5 R6
- 0x781A0004, // 005A JMPF R6 #0060
- 0x8C180706, // 005B GETMET R6 R3 K6
- 0x8820070B, // 005C GETMBR R8 R3 K11
- 0x54260004, // 005D LDINT R9 5
- 0x7C180600, // 005E CALL R6 3
- 0x80040C00, // 005F RET 1 R6
- 0x70020007, // 0060 JMP #0069
- 0x60180003, // 0061 GETGBL R6 G3
- 0x5C1C0000, // 0062 MOVE R7 R0
- 0x7C180200, // 0063 CALL R6 1
- 0x8C180D0C, // 0064 GETMET R6 R6 K12
- 0x5C200200, // 0065 MOVE R8 R1
- 0x5C240400, // 0066 MOVE R9 R2
- 0x7C180600, // 0067 CALL R6 3
- 0x80040C00, // 0068 RET 1 R6
- 0x80000000, // 0069 RET 0
+ 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
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h
index d18b1dbb7..bf855e119 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h
@@ -190,8 +190,8 @@ be_local_closure(Matter_Plugin_OnOff_parse_configuration, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -205,7 +205,7 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* 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),
@@ -213,51 +213,52 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[44]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0005, // 0004 LDINT R6 6
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A001B, // 0006 JMPF R6 #0023
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A0005, // 000A JMPF R6 #0011
- 0x8C180706, // 000B GETMET R6 R3 K6
- 0x88200707, // 000C GETMBR R8 R3 K7
- 0x88240108, // 000D GETMBR R9 R0 K8
- 0x7C180600, // 000E CALL R6 3
- 0x80040C00, // 000F RET 1 R6
+ ( &(const binstruction[45]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0005, // 000A JMPF R7 #0011
+ 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
- 0x541AFFFB, // 0011 LDINT R6 65532
- 0x1C180A06, // 0012 EQ R6 R5 R6
- 0x781A0005, // 0013 JMPF R6 #001A
- 0x8C180706, // 0014 GETMET R6 R3 K6
- 0x88200709, // 0015 GETMBR R8 R3 K9
- 0x58240005, // 0016 LDCONST R9 K5
- 0x7C180600, // 0017 CALL R6 3
- 0x80040C00, // 0018 RET 1 R6
+ 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
- 0x541AFFFC, // 001A LDINT R6 65533
- 0x1C180A06, // 001B EQ R6 R5 R6
- 0x781A0004, // 001C JMPF R6 #0022
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200709, // 001E GETMBR R8 R3 K9
- 0x54260003, // 001F LDINT R9 4
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
- 0x70020007, // 0022 JMP #002B
- 0x60180003, // 0023 GETGBL R6 G3
- 0x5C1C0000, // 0024 MOVE R7 R0
- 0x7C180200, // 0025 CALL R6 1
- 0x8C180D0A, // 0026 GETMET R6 R6 K10
- 0x5C200200, // 0027 MOVE R8 R1
- 0x5C240400, // 0028 MOVE R9 R2
- 0x7C180600, // 0029 CALL R6 3
- 0x80040C00, // 002A RET 1 R6
- 0x80000000, // 002B RET 0
+ 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
})
)
);
@@ -403,7 +404,7 @@ be_local_class(Matter_Plugin_OnOff,
{ be_const_key_int(266, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_OnOff_invoke_request_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Relay_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(relay) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_OnOff_read_attribute_closure) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_OnOff_parse_configuration_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h
index daa3f9012..0532fdda0 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h
@@ -65,25 +65,25 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
/* K14 */ be_const_int(2),
/* K15 */ be_nested_str_weak(XX),
/* K16 */ be_const_int(3),
- /* K17 */ be_nested_str_weak(_fabric),
- /* K18 */ be_nested_str_weak(fabric_completed),
- /* K19 */ be_nested_str_weak(set_no_expiration),
- /* K20 */ be_nested_str_weak(save),
- /* K21 */ be_nested_str_weak(device),
- /* K22 */ be_nested_str_weak(start_commissioning_complete_deferred),
- /* K23 */ be_nested_str_weak(context_error),
- /* K24 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached),
- /* K25 */ be_nested_str_weak(status),
- /* K26 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
- /* K27 */ be_nested_str_weak(B2),
- /* K28 */ be_nested_str_weak(DAC_Cert_FFF1_8000),
- /* K29 */ be_nested_str_weak(PAI_Cert_FFF1),
- /* K30 */ be_nested_str_weak(CD_FFF1_8000),
- /* K31 */ be_nested_str_weak(B1),
- /* K32 */ be_nested_str_weak(U4),
- /* K33 */ be_nested_str_weak(tasmota),
- /* K34 */ be_nested_str_weak(rtc),
- /* K35 */ be_nested_str_weak(utc),
+ /* K17 */ be_nested_str_weak(ack_request),
+ /* K18 */ be_nested_str_weak(_fabric),
+ /* K19 */ be_nested_str_weak(fabric_completed),
+ /* K20 */ be_nested_str_weak(set_no_expiration),
+ /* K21 */ be_nested_str_weak(save),
+ /* K22 */ be_nested_str_weak(device),
+ /* K23 */ be_nested_str_weak(start_commissioning_complete_deferred),
+ /* K24 */ be_nested_str_weak(context_error),
+ /* K25 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached),
+ /* K26 */ be_nested_str_weak(status),
+ /* K27 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
+ /* K28 */ be_nested_str_weak(B2),
+ /* K29 */ be_nested_str_weak(DAC_Cert_FFF1_8000),
+ /* K30 */ be_nested_str_weak(PAI_Cert_FFF1),
+ /* K31 */ be_nested_str_weak(CD_FFF1_8000),
+ /* K32 */ be_nested_str_weak(B1),
+ /* K33 */ be_nested_str_weak(U4),
+ /* K34 */ be_nested_str_weak(tasmota),
+ /* K35 */ be_nested_str_weak(rtc_utc),
/* K36 */ be_nested_str_weak(tlv2raw),
/* K37 */ be_nested_str_weak(get_ac),
/* K38 */ be_nested_str_weak(EC_P256),
@@ -151,7 +151,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[708]) { /* code */
+ ( &(const binstruction[713]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0xB8160200, // 0001 GETNGBL R5 K1
0x88140B02, // 0002 GETMBR R5 R5 K2
@@ -159,7 +159,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x881C0704, // 0004 GETMBR R7 R3 K4
0x5422002F, // 0005 LDINT R8 48
0x1C200C08, // 0006 EQ R8 R6 R8
- 0x78220059, // 0007 JMPF R8 #0062
+ 0x7822005C, // 0007 JMPF R8 #0065
0x1C200F05, // 0008 EQ R8 R7 K5
0x78220017, // 0009 JMPF R8 #0022
0x8C200506, // 000A GETMET R8 R2 K6
@@ -185,7 +185,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x7C2C0800, // 001E CALL R11 4
0x900E0907, // 001F SETMBR R3 K4 K7
0x80041400, // 0020 RET 1 R10
- 0x7002003E, // 0021 JMP #0061
+ 0x70020041, // 0021 JMP #0064
0x1C200F0E, // 0022 EQ R8 R7 K14
0x7822001A, // 0023 JMPF R8 #003F
0x8C200506, // 0024 GETMET R8 R2 K6
@@ -214,652 +214,657 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x7C300800, // 003B CALL R12 4
0x900E0910, // 003C SETMBR R3 K4 K16
0x80041600, // 003D RET 1 R11
- 0x70020021, // 003E JMP #0061
+ 0x70020024, // 003E JMP #0064
0x54220003, // 003F LDINT R8 4
0x1C200E08, // 0040 EQ R8 R7 R8
- 0x7822001E, // 0041 JMPF R8 #0061
- 0x88200311, // 0042 GETMBR R8 R1 K17
- 0x7822001B, // 0043 JMPF R8 #0060
- 0x90061105, // 0044 SETMBR R1 K8 K5
- 0x88200311, // 0045 GETMBR R8 R1 K17
- 0x8C201112, // 0046 GETMET R8 R8 K18
- 0x7C200200, // 0047 CALL R8 1
- 0x8C200313, // 0048 GETMET R8 R1 K19
- 0x7C200200, // 0049 CALL R8 1
- 0x8C200314, // 004A GETMET R8 R1 K20
- 0x7C200200, // 004B CALL R8 1
- 0x8C200B09, // 004C GETMET R8 R5 K9
- 0x7C200200, // 004D CALL R8 1
- 0x8C24110A, // 004E GETMET R9 R8 K10
- 0x582C0005, // 004F LDCONST R11 K5
- 0x88300B0B, // 0050 GETMBR R12 R5 K11
- 0x58340005, // 0051 LDCONST R13 K5
- 0x7C240800, // 0052 CALL R9 4
- 0x8C24110A, // 0053 GETMET R9 R8 K10
- 0x582C0007, // 0054 LDCONST R11 K7
- 0x88300B0C, // 0055 GETMBR R12 R5 K12
- 0x5834000D, // 0056 LDCONST R13 K13
- 0x7C240800, // 0057 CALL R9 4
- 0x54260004, // 0058 LDINT R9 5
- 0x900E0809, // 0059 SETMBR R3 K4 R9
- 0x88240115, // 005A GETMBR R9 R0 K21
- 0x8C241316, // 005B GETMET R9 R9 K22
- 0x5C2C0200, // 005C MOVE R11 R1
- 0x7C240400, // 005D CALL R9 2
- 0x80041000, // 005E RET 1 R8
- 0x70020000, // 005F JMP #0061
- 0xB0062F18, // 0060 RAISE 1 K23 K24
- 0x7002025F, // 0061 JMP #02C2
- 0x5422003D, // 0062 LDINT R8 62
- 0x1C200C08, // 0063 EQ R8 R6 R8
- 0x782201C0, // 0064 JMPF R8 #0226
- 0x1C200F0E, // 0065 EQ R8 R7 K14
- 0x7822001D, // 0066 JMPF R8 #0085
- 0x8C200506, // 0067 GETMET R8 R2 K6
- 0x58280005, // 0068 LDCONST R10 K5
- 0x7C200400, // 0069 CALL R8 2
- 0x20241107, // 006A NE R9 R8 K7
- 0x78260006, // 006B JMPF R9 #0073
- 0x2024110E, // 006C NE R9 R8 K14
- 0x78260004, // 006D JMPF R9 #0073
- 0xB8260200, // 006E GETNGBL R9 K1
- 0x8824131A, // 006F GETMBR R9 R9 K26
- 0x900E3209, // 0070 SETMBR R3 K25 R9
- 0x4C240000, // 0071 LDNIL R9
- 0x80041200, // 0072 RET 1 R9
- 0x8C240B09, // 0073 GETMET R9 R5 K9
- 0x7C240200, // 0074 CALL R9 1
- 0x8C28130A, // 0075 GETMET R10 R9 K10
- 0x58300005, // 0076 LDCONST R12 K5
- 0x88340B1B, // 0077 GETMBR R13 R5 K27
- 0x1C381107, // 0078 EQ R14 R8 K7
- 0x783A0003, // 0079 JMPF R14 #007E
- 0xB83A0200, // 007A GETNGBL R14 K1
- 0x8C381D1C, // 007B GETMET R14 R14 K28
- 0x7C380200, // 007C CALL R14 1
- 0x70020002, // 007D JMP #0081
- 0xB83A0200, // 007E GETNGBL R14 K1
- 0x8C381D1D, // 007F GETMET R14 R14 K29
- 0x7C380200, // 0080 CALL R14 1
- 0x7C280800, // 0081 CALL R10 4
- 0x900E0910, // 0082 SETMBR R3 K4 K16
- 0x80041200, // 0083 RET 1 R9
- 0x7002019F, // 0084 JMP #0225
- 0x1C200F05, // 0085 EQ R8 R7 K5
- 0x7822003D, // 0086 JMPF R8 #00C5
- 0x8C200506, // 0087 GETMET R8 R2 K6
- 0x58280005, // 0088 LDCONST R10 K5
- 0x7C200400, // 0089 CALL R8 2
- 0x6024000C, // 008A GETGBL R9 G12
- 0x5C281000, // 008B MOVE R10 R8
- 0x7C240200, // 008C CALL R9 1
- 0x542A001F, // 008D LDINT R10 32
- 0x2024120A, // 008E NE R9 R9 R10
- 0x78260001, // 008F JMPF R9 #0092
- 0x4C240000, // 0090 LDNIL R9
- 0x80041200, // 0091 RET 1 R9
- 0x900E0907, // 0092 SETMBR R3 K4 K7
- 0x8C240B09, // 0093 GETMET R9 R5 K9
- 0x7C240200, // 0094 CALL R9 1
- 0x8C28130A, // 0095 GETMET R10 R9 K10
- 0x58300007, // 0096 LDCONST R12 K7
- 0x88340B1B, // 0097 GETMBR R13 R5 K27
- 0xB83A0200, // 0098 GETNGBL R14 K1
- 0x8C381D1E, // 0099 GETMET R14 R14 K30
- 0x7C380200, // 009A CALL R14 1
- 0x7C280800, // 009B CALL R10 4
- 0x8C28130A, // 009C GETMET R10 R9 K10
- 0x5830000E, // 009D LDCONST R12 K14
- 0x88340B1F, // 009E GETMBR R13 R5 K31
- 0x5C381000, // 009F MOVE R14 R8
- 0x7C280800, // 00A0 CALL R10 4
- 0x8C28130A, // 00A1 GETMET R10 R9 K10
- 0x58300010, // 00A2 LDCONST R12 K16
- 0x88340B20, // 00A3 GETMBR R13 R5 K32
- 0xB83A4200, // 00A4 GETNGBL R14 K33
- 0x8C381D22, // 00A5 GETMET R14 R14 K34
- 0x7C380200, // 00A6 CALL R14 1
- 0x94381D23, // 00A7 GETIDX R14 R14 K35
- 0x7C280800, // 00A8 CALL R10 4
- 0x8C281324, // 00A9 GETMET R10 R9 K36
- 0x7C280200, // 00AA CALL R10 1
- 0x8C2C0325, // 00AB GETMET R11 R1 K37
- 0x7C2C0200, // 00AC CALL R11 1
- 0x0030140B, // 00AD ADD R12 R10 R11
- 0x8C340926, // 00AE GETMET R13 R4 K38
- 0x7C340200, // 00AF CALL R13 1
- 0x8C341B27, // 00B0 GETMET R13 R13 K39
- 0xB83E0200, // 00B1 GETNGBL R15 K1
- 0x8C3C1F28, // 00B2 GETMET R15 R15 K40
- 0x7C3C0200, // 00B3 CALL R15 1
- 0x5C401800, // 00B4 MOVE R16 R12
- 0x7C340600, // 00B5 CALL R13 3
- 0x8C380B09, // 00B6 GETMET R14 R5 K9
- 0x7C380200, // 00B7 CALL R14 1
- 0x8C3C1D0A, // 00B8 GETMET R15 R14 K10
- 0x58440005, // 00B9 LDCONST R17 K5
- 0x88480B1B, // 00BA GETMBR R18 R5 K27
- 0x5C4C1400, // 00BB MOVE R19 R10
- 0x7C3C0800, // 00BC CALL R15 4
- 0x8C3C1D0A, // 00BD GETMET R15 R14 K10
- 0x58440007, // 00BE LDCONST R17 K7
- 0x88480B1F, // 00BF GETMBR R18 R5 K31
- 0x5C4C1A00, // 00C0 MOVE R19 R13
- 0x7C3C0800, // 00C1 CALL R15 4
- 0x900E0907, // 00C2 SETMBR R3 K4 K7
- 0x80041C00, // 00C3 RET 1 R14
- 0x7002015F, // 00C4 JMP #0225
- 0x54220003, // 00C5 LDINT R8 4
- 0x1C200E08, // 00C6 EQ R8 R7 R8
- 0x78220039, // 00C7 JMPF R8 #0102
- 0x8C200506, // 00C8 GETMET R8 R2 K6
- 0x58280005, // 00C9 LDCONST R10 K5
- 0x7C200400, // 00CA CALL R8 2
- 0x6024000C, // 00CB GETGBL R9 G12
- 0x5C281000, // 00CC MOVE R10 R8
- 0x7C240200, // 00CD CALL R9 1
- 0x542A001F, // 00CE LDINT R10 32
- 0x2024120A, // 00CF NE R9 R9 R10
- 0x78260001, // 00D0 JMPF R9 #00D3
- 0x4C240000, // 00D1 LDNIL R9
- 0x80041200, // 00D2 RET 1 R9
- 0x8C240506, // 00D3 GETMET R9 R2 K6
- 0x582C0007, // 00D4 LDCONST R11 K7
- 0x50300000, // 00D5 LDBOOL R12 0 0
- 0x7C240600, // 00D6 CALL R9 3
- 0x8C280329, // 00D7 GETMET R10 R1 K41
- 0x7C280200, // 00D8 CALL R10 1
- 0x8C2C0B09, // 00D9 GETMET R11 R5 K9
- 0x7C2C0200, // 00DA CALL R11 1
- 0x8C30170A, // 00DB GETMET R12 R11 K10
- 0x58380007, // 00DC LDCONST R14 K7
- 0x883C0B1B, // 00DD GETMBR R15 R5 K27
- 0x5C401400, // 00DE MOVE R16 R10
- 0x7C300800, // 00DF CALL R12 4
+ 0x78220021, // 0041 JMPF R8 #0064
+ 0x8C200111, // 0042 GETMET R8 R0 K17
+ 0x5C280600, // 0043 MOVE R10 R3
+ 0x7C200400, // 0044 CALL R8 2
+ 0x88200312, // 0045 GETMBR R8 R1 K18
+ 0x7822001B, // 0046 JMPF R8 #0063
+ 0x90061105, // 0047 SETMBR R1 K8 K5
+ 0x88200312, // 0048 GETMBR R8 R1 K18
+ 0x8C201113, // 0049 GETMET R8 R8 K19
+ 0x7C200200, // 004A CALL R8 1
+ 0x8C200314, // 004B GETMET R8 R1 K20
+ 0x7C200200, // 004C CALL R8 1
+ 0x8C200315, // 004D GETMET R8 R1 K21
+ 0x7C200200, // 004E CALL R8 1
+ 0x8C200B09, // 004F GETMET R8 R5 K9
+ 0x7C200200, // 0050 CALL R8 1
+ 0x8C24110A, // 0051 GETMET R9 R8 K10
+ 0x582C0005, // 0052 LDCONST R11 K5
+ 0x88300B0B, // 0053 GETMBR R12 R5 K11
+ 0x58340005, // 0054 LDCONST R13 K5
+ 0x7C240800, // 0055 CALL R9 4
+ 0x8C24110A, // 0056 GETMET R9 R8 K10
+ 0x582C0007, // 0057 LDCONST R11 K7
+ 0x88300B0C, // 0058 GETMBR R12 R5 K12
+ 0x5834000D, // 0059 LDCONST R13 K13
+ 0x7C240800, // 005A CALL R9 4
+ 0x54260004, // 005B LDINT R9 5
+ 0x900E0809, // 005C SETMBR R3 K4 R9
+ 0x88240116, // 005D GETMBR R9 R0 K22
+ 0x8C241317, // 005E GETMET R9 R9 K23
+ 0x5C2C0200, // 005F MOVE R11 R1
+ 0x7C240400, // 0060 CALL R9 2
+ 0x80041000, // 0061 RET 1 R8
+ 0x70020000, // 0062 JMP #0064
+ 0xB0063119, // 0063 RAISE 1 K24 K25
+ 0x70020261, // 0064 JMP #02C7
+ 0x5422003D, // 0065 LDINT R8 62
+ 0x1C200C08, // 0066 EQ R8 R6 R8
+ 0x782201C2, // 0067 JMPF R8 #022B
+ 0x1C200F0E, // 0068 EQ R8 R7 K14
+ 0x7822001D, // 0069 JMPF R8 #0088
+ 0x8C200506, // 006A GETMET R8 R2 K6
+ 0x58280005, // 006B LDCONST R10 K5
+ 0x7C200400, // 006C CALL R8 2
+ 0x20241107, // 006D NE R9 R8 K7
+ 0x78260006, // 006E JMPF R9 #0076
+ 0x2024110E, // 006F NE R9 R8 K14
+ 0x78260004, // 0070 JMPF R9 #0076
+ 0xB8260200, // 0071 GETNGBL R9 K1
+ 0x8824131B, // 0072 GETMBR R9 R9 K27
+ 0x900E3409, // 0073 SETMBR R3 K26 R9
+ 0x4C240000, // 0074 LDNIL R9
+ 0x80041200, // 0075 RET 1 R9
+ 0x8C240B09, // 0076 GETMET R9 R5 K9
+ 0x7C240200, // 0077 CALL R9 1
+ 0x8C28130A, // 0078 GETMET R10 R9 K10
+ 0x58300005, // 0079 LDCONST R12 K5
+ 0x88340B1C, // 007A GETMBR R13 R5 K28
+ 0x1C381107, // 007B EQ R14 R8 K7
+ 0x783A0003, // 007C JMPF R14 #0081
+ 0xB83A0200, // 007D GETNGBL R14 K1
+ 0x8C381D1D, // 007E GETMET R14 R14 K29
+ 0x7C380200, // 007F CALL R14 1
+ 0x70020002, // 0080 JMP #0084
+ 0xB83A0200, // 0081 GETNGBL R14 K1
+ 0x8C381D1E, // 0082 GETMET R14 R14 K30
+ 0x7C380200, // 0083 CALL R14 1
+ 0x7C280800, // 0084 CALL R10 4
+ 0x900E0910, // 0085 SETMBR R3 K4 K16
+ 0x80041200, // 0086 RET 1 R9
+ 0x700201A1, // 0087 JMP #022A
+ 0x1C200F05, // 0088 EQ R8 R7 K5
+ 0x7822003C, // 0089 JMPF R8 #00C7
+ 0x8C200506, // 008A GETMET R8 R2 K6
+ 0x58280005, // 008B LDCONST R10 K5
+ 0x7C200400, // 008C CALL R8 2
+ 0x6024000C, // 008D GETGBL R9 G12
+ 0x5C281000, // 008E MOVE R10 R8
+ 0x7C240200, // 008F CALL R9 1
+ 0x542A001F, // 0090 LDINT R10 32
+ 0x2024120A, // 0091 NE R9 R9 R10
+ 0x78260001, // 0092 JMPF R9 #0095
+ 0x4C240000, // 0093 LDNIL R9
+ 0x80041200, // 0094 RET 1 R9
+ 0x900E0907, // 0095 SETMBR R3 K4 K7
+ 0x8C240B09, // 0096 GETMET R9 R5 K9
+ 0x7C240200, // 0097 CALL R9 1
+ 0x8C28130A, // 0098 GETMET R10 R9 K10
+ 0x58300007, // 0099 LDCONST R12 K7
+ 0x88340B1C, // 009A GETMBR R13 R5 K28
+ 0xB83A0200, // 009B GETNGBL R14 K1
+ 0x8C381D1F, // 009C GETMET R14 R14 K31
+ 0x7C380200, // 009D CALL R14 1
+ 0x7C280800, // 009E CALL R10 4
+ 0x8C28130A, // 009F GETMET R10 R9 K10
+ 0x5830000E, // 00A0 LDCONST R12 K14
+ 0x88340B20, // 00A1 GETMBR R13 R5 K32
+ 0x5C381000, // 00A2 MOVE R14 R8
+ 0x7C280800, // 00A3 CALL R10 4
+ 0x8C28130A, // 00A4 GETMET R10 R9 K10
+ 0x58300010, // 00A5 LDCONST R12 K16
+ 0x88340B21, // 00A6 GETMBR R13 R5 K33
+ 0xB83A4400, // 00A7 GETNGBL R14 K34
+ 0x8C381D23, // 00A8 GETMET R14 R14 K35
+ 0x7C380200, // 00A9 CALL R14 1
+ 0x7C280800, // 00AA CALL R10 4
+ 0x8C281324, // 00AB GETMET R10 R9 K36
+ 0x7C280200, // 00AC CALL R10 1
+ 0x8C2C0325, // 00AD GETMET R11 R1 K37
+ 0x7C2C0200, // 00AE CALL R11 1
+ 0x0030140B, // 00AF ADD R12 R10 R11
+ 0x8C340926, // 00B0 GETMET R13 R4 K38
+ 0x7C340200, // 00B1 CALL R13 1
+ 0x8C341B27, // 00B2 GETMET R13 R13 K39
+ 0xB83E0200, // 00B3 GETNGBL R15 K1
+ 0x8C3C1F28, // 00B4 GETMET R15 R15 K40
+ 0x7C3C0200, // 00B5 CALL R15 1
+ 0x5C401800, // 00B6 MOVE R16 R12
+ 0x7C340600, // 00B7 CALL R13 3
+ 0x8C380B09, // 00B8 GETMET R14 R5 K9
+ 0x7C380200, // 00B9 CALL R14 1
+ 0x8C3C1D0A, // 00BA GETMET R15 R14 K10
+ 0x58440005, // 00BB LDCONST R17 K5
+ 0x88480B1C, // 00BC GETMBR R18 R5 K28
+ 0x5C4C1400, // 00BD MOVE R19 R10
+ 0x7C3C0800, // 00BE CALL R15 4
+ 0x8C3C1D0A, // 00BF GETMET R15 R14 K10
+ 0x58440007, // 00C0 LDCONST R17 K7
+ 0x88480B20, // 00C1 GETMBR R18 R5 K32
+ 0x5C4C1A00, // 00C2 MOVE R19 R13
+ 0x7C3C0800, // 00C3 CALL R15 4
+ 0x900E0907, // 00C4 SETMBR R3 K4 K7
+ 0x80041C00, // 00C5 RET 1 R14
+ 0x70020162, // 00C6 JMP #022A
+ 0x54220003, // 00C7 LDINT R8 4
+ 0x1C200E08, // 00C8 EQ R8 R7 R8
+ 0x7822003C, // 00C9 JMPF R8 #0107
+ 0x8C200111, // 00CA GETMET R8 R0 K17
+ 0x5C280600, // 00CB MOVE R10 R3
+ 0x7C200400, // 00CC CALL R8 2
+ 0x8C200506, // 00CD GETMET R8 R2 K6
+ 0x58280005, // 00CE LDCONST R10 K5
+ 0x7C200400, // 00CF CALL R8 2
+ 0x6024000C, // 00D0 GETGBL R9 G12
+ 0x5C281000, // 00D1 MOVE R10 R8
+ 0x7C240200, // 00D2 CALL R9 1
+ 0x542A001F, // 00D3 LDINT R10 32
+ 0x2024120A, // 00D4 NE R9 R9 R10
+ 0x78260001, // 00D5 JMPF R9 #00D8
+ 0x4C240000, // 00D6 LDNIL R9
+ 0x80041200, // 00D7 RET 1 R9
+ 0x8C240506, // 00D8 GETMET R9 R2 K6
+ 0x582C0007, // 00D9 LDCONST R11 K7
+ 0x50300000, // 00DA LDBOOL R12 0 0
+ 0x7C240600, // 00DB CALL R9 3
+ 0x8C280329, // 00DC GETMET R10 R1 K41
+ 0x7C280200, // 00DD CALL R10 1
+ 0x8C2C0B09, // 00DE GETMET R11 R5 K9
+ 0x7C2C0200, // 00DF CALL R11 1
0x8C30170A, // 00E0 GETMET R12 R11 K10
- 0x5838000E, // 00E1 LDCONST R14 K14
- 0x883C0B1F, // 00E2 GETMBR R15 R5 K31
- 0x5C401000, // 00E3 MOVE R16 R8
+ 0x58380007, // 00E1 LDCONST R14 K7
+ 0x883C0B1C, // 00E2 GETMBR R15 R5 K28
+ 0x5C401400, // 00E3 MOVE R16 R10
0x7C300800, // 00E4 CALL R12 4
- 0x8C301724, // 00E5 GETMET R12 R11 K36
- 0x7C300200, // 00E6 CALL R12 1
- 0x8C340325, // 00E7 GETMET R13 R1 K37
- 0x7C340200, // 00E8 CALL R13 1
- 0x0034180D, // 00E9 ADD R13 R12 R13
- 0x8C380926, // 00EA GETMET R14 R4 K38
- 0x7C380200, // 00EB CALL R14 1
- 0x8C381D27, // 00EC GETMET R14 R14 K39
- 0xB8420200, // 00ED GETNGBL R16 K1
- 0x8C402128, // 00EE GETMET R16 R16 K40
- 0x7C400200, // 00EF CALL R16 1
- 0x5C441A00, // 00F0 MOVE R17 R13
- 0x7C380600, // 00F1 CALL R14 3
- 0x8C3C0B09, // 00F2 GETMET R15 R5 K9
- 0x7C3C0200, // 00F3 CALL R15 1
- 0x8C401F0A, // 00F4 GETMET R16 R15 K10
- 0x58480005, // 00F5 LDCONST R18 K5
- 0x884C0B1B, // 00F6 GETMBR R19 R5 K27
- 0x5C501800, // 00F7 MOVE R20 R12
- 0x7C400800, // 00F8 CALL R16 4
+ 0x8C30170A, // 00E5 GETMET R12 R11 K10
+ 0x5838000E, // 00E6 LDCONST R14 K14
+ 0x883C0B20, // 00E7 GETMBR R15 R5 K32
+ 0x5C401000, // 00E8 MOVE R16 R8
+ 0x7C300800, // 00E9 CALL R12 4
+ 0x8C301724, // 00EA GETMET R12 R11 K36
+ 0x7C300200, // 00EB CALL R12 1
+ 0x8C340325, // 00EC GETMET R13 R1 K37
+ 0x7C340200, // 00ED CALL R13 1
+ 0x0034180D, // 00EE ADD R13 R12 R13
+ 0x8C380926, // 00EF GETMET R14 R4 K38
+ 0x7C380200, // 00F0 CALL R14 1
+ 0x8C381D27, // 00F1 GETMET R14 R14 K39
+ 0xB8420200, // 00F2 GETNGBL R16 K1
+ 0x8C402128, // 00F3 GETMET R16 R16 K40
+ 0x7C400200, // 00F4 CALL R16 1
+ 0x5C441A00, // 00F5 MOVE R17 R13
+ 0x7C380600, // 00F6 CALL R14 3
+ 0x8C3C0B09, // 00F7 GETMET R15 R5 K9
+ 0x7C3C0200, // 00F8 CALL R15 1
0x8C401F0A, // 00F9 GETMET R16 R15 K10
- 0x58480007, // 00FA LDCONST R18 K7
- 0x884C0B1F, // 00FB GETMBR R19 R5 K31
- 0x5C501C00, // 00FC MOVE R20 R14
+ 0x58480005, // 00FA LDCONST R18 K5
+ 0x884C0B1C, // 00FB GETMBR R19 R5 K28
+ 0x5C501800, // 00FC MOVE R20 R12
0x7C400800, // 00FD CALL R16 4
- 0x54420004, // 00FE LDINT R16 5
- 0x900E0810, // 00FF SETMBR R3 K4 R16
- 0x80041E00, // 0100 RET 1 R15
- 0x70020122, // 0101 JMP #0225
- 0x5422000A, // 0102 LDINT R8 11
- 0x1C200E08, // 0103 EQ R8 R7 R8
- 0x7822000B, // 0104 JMPF R8 #0111
- 0x8C200506, // 0105 GETMET R8 R2 K6
- 0x58280005, // 0106 LDCONST R10 K5
- 0x7C200400, // 0107 CALL R8 2
- 0x8C24032A, // 0108 GETMET R9 R1 K42
- 0x5C2C1000, // 0109 MOVE R11 R8
- 0x7C240400, // 010A CALL R9 2
- 0xB8260200, // 010B GETNGBL R9 K1
- 0x8824132B, // 010C GETMBR R9 R9 K43
- 0x900E3209, // 010D SETMBR R3 K25 R9
- 0x4C240000, // 010E LDNIL R9
- 0x80041200, // 010F RET 1 R9
- 0x70020113, // 0110 JMP #0225
- 0x54220005, // 0111 LDINT R8 6
- 0x1C200E08, // 0112 EQ R8 R7 R8
- 0x782200B9, // 0113 JMPF R8 #01CE
- 0xB8224200, // 0114 GETNGBL R8 K33
- 0x8C20112C, // 0115 GETMET R8 R8 K44
- 0x60280008, // 0116 GETGBL R10 G8
- 0x5C2C0400, // 0117 MOVE R11 R2
- 0x7C280200, // 0118 CALL R10 1
- 0x002A5A0A, // 0119 ADD R10 K45 R10
- 0x542E0003, // 011A LDINT R11 4
- 0x7C200600, // 011B CALL R8 3
- 0x8C200506, // 011C GETMET R8 R2 K6
- 0x58280005, // 011D LDCONST R10 K5
- 0x7C200400, // 011E CALL R8 2
- 0x8C240506, // 011F GETMET R9 R2 K6
- 0x582C0007, // 0120 LDCONST R11 K7
- 0x7C240400, // 0121 CALL R9 2
- 0x6028000C, // 0122 GETGBL R10 G12
- 0x5C2C1200, // 0123 MOVE R11 R9
- 0x7C280200, // 0124 CALL R10 1
- 0x1C281505, // 0125 EQ R10 R10 K5
- 0x782A0000, // 0126 JMPF R10 #0128
- 0x4C240000, // 0127 LDNIL R9
- 0x8C280506, // 0128 GETMET R10 R2 K6
- 0x5830000E, // 0129 LDCONST R12 K14
- 0x7C280400, // 012A CALL R10 2
- 0x8C2C0506, // 012B GETMET R11 R2 K6
- 0x58340010, // 012C LDCONST R13 K16
- 0x7C2C0400, // 012D CALL R11 2
- 0x8C300506, // 012E GETMET R12 R2 K6
- 0x543A0003, // 012F LDINT R14 4
- 0x7C300400, // 0130 CALL R12 2
- 0x8C34032E, // 0131 GETMET R13 R1 K46
- 0x7C340200, // 0132 CALL R13 1
- 0x4C380000, // 0133 LDNIL R14
- 0x1C341A0E, // 0134 EQ R13 R13 R14
- 0x78360006, // 0135 JMPF R13 #013D
- 0xB8364200, // 0136 GETNGBL R13 K33
- 0x8C341B2C, // 0137 GETMET R13 R13 K44
- 0x583C002F, // 0138 LDCONST R15 K47
- 0x5840000E, // 0139 LDCONST R16 K14
- 0x7C340600, // 013A CALL R13 3
- 0x4C340000, // 013B LDNIL R13
- 0x80041A00, // 013C RET 1 R13
- 0x88340115, // 013D GETMBR R13 R0 K21
- 0x88341B30, // 013E GETMBR R13 R13 K48
- 0x8C341B31, // 013F GETMET R13 R13 K49
- 0x7C340200, // 0140 CALL R13 1
- 0x8C381B32, // 0141 GETMET R14 R13 K50
- 0x8C40032E, // 0142 GETMET R16 R1 K46
- 0x7C400200, // 0143 CALL R16 1
- 0x7C380400, // 0144 CALL R14 2
- 0x8C381B33, // 0145 GETMET R14 R13 K51
- 0x5C401000, // 0146 MOVE R16 R8
- 0x5C441200, // 0147 MOVE R17 R9
- 0x7C380600, // 0148 CALL R14 3
- 0x8C381B34, // 0149 GETMET R14 R13 K52
- 0x5C401400, // 014A MOVE R16 R10
- 0x7C380400, // 014B CALL R14 2
- 0x8C381B35, // 014C GETMET R14 R13 K53
- 0x5C401600, // 014D MOVE R16 R11
- 0x5C441800, // 014E MOVE R17 R12
- 0x7C380600, // 014F CALL R14 3
- 0x8C381B36, // 0150 GETMET R14 R13 K54
- 0x8C400337, // 0151 GETMET R16 R1 K55
- 0x7C400200, // 0152 CALL R16 1
- 0x7C380400, // 0153 CALL R14 2
- 0xB83A0200, // 0154 GETNGBL R14 K1
- 0x88381D02, // 0155 GETMBR R14 R14 K2
- 0x8C381D38, // 0156 GETMET R14 R14 K56
- 0x5C401000, // 0157 MOVE R16 R8
+ 0x8C401F0A, // 00FE GETMET R16 R15 K10
+ 0x58480007, // 00FF LDCONST R18 K7
+ 0x884C0B20, // 0100 GETMBR R19 R5 K32
+ 0x5C501C00, // 0101 MOVE R20 R14
+ 0x7C400800, // 0102 CALL R16 4
+ 0x54420004, // 0103 LDINT R16 5
+ 0x900E0810, // 0104 SETMBR R3 K4 R16
+ 0x80041E00, // 0105 RET 1 R15
+ 0x70020122, // 0106 JMP #022A
+ 0x5422000A, // 0107 LDINT R8 11
+ 0x1C200E08, // 0108 EQ R8 R7 R8
+ 0x7822000B, // 0109 JMPF R8 #0116
+ 0x8C200506, // 010A GETMET R8 R2 K6
+ 0x58280005, // 010B LDCONST R10 K5
+ 0x7C200400, // 010C CALL R8 2
+ 0x8C24032A, // 010D GETMET R9 R1 K42
+ 0x5C2C1000, // 010E MOVE R11 R8
+ 0x7C240400, // 010F CALL R9 2
+ 0xB8260200, // 0110 GETNGBL R9 K1
+ 0x8824132B, // 0111 GETMBR R9 R9 K43
+ 0x900E3409, // 0112 SETMBR R3 K26 R9
+ 0x4C240000, // 0113 LDNIL R9
+ 0x80041200, // 0114 RET 1 R9
+ 0x70020113, // 0115 JMP #022A
+ 0x54220005, // 0116 LDINT R8 6
+ 0x1C200E08, // 0117 EQ R8 R7 R8
+ 0x782200B9, // 0118 JMPF R8 #01D3
+ 0xB8224400, // 0119 GETNGBL R8 K34
+ 0x8C20112C, // 011A GETMET R8 R8 K44
+ 0x60280008, // 011B GETGBL R10 G8
+ 0x5C2C0400, // 011C MOVE R11 R2
+ 0x7C280200, // 011D CALL R10 1
+ 0x002A5A0A, // 011E ADD R10 K45 R10
+ 0x542E0003, // 011F LDINT R11 4
+ 0x7C200600, // 0120 CALL R8 3
+ 0x8C200506, // 0121 GETMET R8 R2 K6
+ 0x58280005, // 0122 LDCONST R10 K5
+ 0x7C200400, // 0123 CALL R8 2
+ 0x8C240506, // 0124 GETMET R9 R2 K6
+ 0x582C0007, // 0125 LDCONST R11 K7
+ 0x7C240400, // 0126 CALL R9 2
+ 0x6028000C, // 0127 GETGBL R10 G12
+ 0x5C2C1200, // 0128 MOVE R11 R9
+ 0x7C280200, // 0129 CALL R10 1
+ 0x1C281505, // 012A EQ R10 R10 K5
+ 0x782A0000, // 012B JMPF R10 #012D
+ 0x4C240000, // 012C LDNIL R9
+ 0x8C280506, // 012D GETMET R10 R2 K6
+ 0x5830000E, // 012E LDCONST R12 K14
+ 0x7C280400, // 012F CALL R10 2
+ 0x8C2C0506, // 0130 GETMET R11 R2 K6
+ 0x58340010, // 0131 LDCONST R13 K16
+ 0x7C2C0400, // 0132 CALL R11 2
+ 0x8C300506, // 0133 GETMET R12 R2 K6
+ 0x543A0003, // 0134 LDINT R14 4
+ 0x7C300400, // 0135 CALL R12 2
+ 0x8C34032E, // 0136 GETMET R13 R1 K46
+ 0x7C340200, // 0137 CALL R13 1
+ 0x4C380000, // 0138 LDNIL R14
+ 0x1C341A0E, // 0139 EQ R13 R13 R14
+ 0x78360006, // 013A JMPF R13 #0142
+ 0xB8364400, // 013B GETNGBL R13 K34
+ 0x8C341B2C, // 013C GETMET R13 R13 K44
+ 0x583C002F, // 013D LDCONST R15 K47
+ 0x5840000E, // 013E LDCONST R16 K14
+ 0x7C340600, // 013F CALL R13 3
+ 0x4C340000, // 0140 LDNIL R13
+ 0x80041A00, // 0141 RET 1 R13
+ 0x88340116, // 0142 GETMBR R13 R0 K22
+ 0x88341B30, // 0143 GETMBR R13 R13 K48
+ 0x8C341B31, // 0144 GETMET R13 R13 K49
+ 0x7C340200, // 0145 CALL R13 1
+ 0x8C381B32, // 0146 GETMET R14 R13 K50
+ 0x8C40032E, // 0147 GETMET R16 R1 K46
+ 0x7C400200, // 0148 CALL R16 1
+ 0x7C380400, // 0149 CALL R14 2
+ 0x8C381B33, // 014A GETMET R14 R13 K51
+ 0x5C401000, // 014B MOVE R16 R8
+ 0x5C441200, // 014C MOVE R17 R9
+ 0x7C380600, // 014D CALL R14 3
+ 0x8C381B34, // 014E GETMET R14 R13 K52
+ 0x5C401400, // 014F MOVE R16 R10
+ 0x7C380400, // 0150 CALL R14 2
+ 0x8C381B35, // 0151 GETMET R14 R13 K53
+ 0x5C401600, // 0152 MOVE R16 R11
+ 0x5C441800, // 0153 MOVE R17 R12
+ 0x7C380600, // 0154 CALL R14 3
+ 0x8C381B36, // 0155 GETMET R14 R13 K54
+ 0x8C400337, // 0156 GETMET R16 R1 K55
+ 0x7C400200, // 0157 CALL R16 1
0x7C380400, // 0158 CALL R14 2
- 0x8C3C1D39, // 0159 GETMET R15 R14 K57
- 0x54460005, // 015A LDINT R17 6
- 0x7C3C0400, // 015B CALL R15 2
- 0x8C401F06, // 015C GETMET R16 R15 K6
- 0x544A0014, // 015D LDINT R18 21
- 0x7C400400, // 015E CALL R16 2
- 0x8C441F06, // 015F GETMET R17 R15 K6
- 0x544E0010, // 0160 LDINT R19 17
- 0x7C440400, // 0161 CALL R17 2
- 0x5C482000, // 0162 MOVE R18 R16
- 0x784A0001, // 0163 JMPF R18 #0166
- 0x5C482200, // 0164 MOVE R18 R17
- 0x744A0006, // 0165 JMPT R18 #016D
- 0xB84A4200, // 0166 GETNGBL R18 K33
- 0x8C48252C, // 0167 GETMET R18 R18 K44
- 0x5850003A, // 0168 LDCONST R20 K58
- 0x5854000E, // 0169 LDCONST R21 K14
- 0x7C480600, // 016A CALL R18 3
- 0x50480000, // 016B LDBOOL R18 0 0
- 0x80042400, // 016C RET 1 R18
- 0x60480004, // 016D GETGBL R18 G4
- 0x5C4C2000, // 016E MOVE R19 R16
- 0x7C480200, // 016F CALL R18 1
- 0x1C48253B, // 0170 EQ R18 R18 K59
- 0x784A0007, // 0171 JMPF R18 #017A
- 0xB84A7800, // 0172 GETNGBL R18 K60
- 0x8C48253D, // 0173 GETMET R18 R18 K61
- 0x5C502000, // 0174 MOVE R20 R16
- 0x7C480400, // 0175 CALL R18 2
- 0x8C48253E, // 0176 GETMET R18 R18 K62
- 0x7C480200, // 0177 CALL R18 1
- 0x5C402400, // 0178 MOVE R16 R18
- 0x70020002, // 0179 JMP #017D
- 0x8C48213E, // 017A GETMET R18 R16 K62
- 0x7C480200, // 017B CALL R18 1
- 0x5C402400, // 017C MOVE R16 R18
- 0x60480004, // 017D GETGBL R18 G4
- 0x5C4C2200, // 017E MOVE R19 R17
- 0x7C480200, // 017F CALL R18 1
- 0x1C48253B, // 0180 EQ R18 R18 K59
- 0x784A0007, // 0181 JMPF R18 #018A
- 0xB84A7800, // 0182 GETNGBL R18 K60
- 0x8C48253D, // 0183 GETMET R18 R18 K61
- 0x5C502200, // 0184 MOVE R20 R17
- 0x7C480400, // 0185 CALL R18 2
- 0x8C48253E, // 0186 GETMET R18 R18 K62
- 0x7C480200, // 0187 CALL R18 1
- 0x5C442400, // 0188 MOVE R17 R18
- 0x70020002, // 0189 JMP #018D
- 0x8C48233E, // 018A GETMET R18 R17 K62
- 0x7C480200, // 018B CALL R18 1
- 0x5C442400, // 018C MOVE R17 R18
- 0x8C48033F, // 018D GETMET R18 R1 K63
- 0x7C480200, // 018E CALL R18 1
- 0x404E0F40, // 018F CONNECT R19 K7 K64
- 0x94482413, // 0190 GETIDX R18 R18 R19
- 0x60500015, // 0191 GETGBL R20 G21
- 0x7C500000, // 0192 CALL R20 0
- 0x8C502941, // 0193 GETMET R20 R20 K65
- 0x58580042, // 0194 LDCONST R22 K66
- 0x7C500400, // 0195 CALL R20 2
- 0x5C4C2800, // 0196 MOVE R19 R20
- 0x8C500943, // 0197 GETMET R20 R4 K67
- 0x7C500200, // 0198 CALL R20 1
- 0x8C542144, // 0199 GETMET R21 R16 K68
- 0x7C540200, // 019A CALL R21 1
- 0x8C542B45, // 019B GETMET R21 R21 K69
- 0x7C540200, // 019C CALL R21 1
- 0x8C582946, // 019D GETMET R22 R20 K70
- 0x5C602400, // 019E MOVE R24 R18
- 0x5C642A00, // 019F MOVE R25 R21
- 0x5C682600, // 01A0 MOVE R26 R19
- 0x546E0007, // 01A1 LDINT R27 8
- 0x7C580A00, // 01A2 CALL R22 5
- 0x885C0311, // 01A3 GETMBR R23 R1 K17
- 0x785E0001, // 01A4 JMPF R23 #01A7
- 0x885C0311, // 01A5 GETMBR R23 R1 K17
- 0x70020001, // 01A6 JMP #01A9
- 0x885C0115, // 01A7 GETMBR R23 R0 K21
- 0x885C2F47, // 01A8 GETMBR R23 R23 K71
- 0x8C601B48, // 01A9 GETMET R24 R13 K72
- 0x5C682000, // 01AA MOVE R26 R16
- 0x5C6C2200, // 01AB MOVE R27 R17
- 0x5C702C00, // 01AC MOVE R28 R22
- 0x5C742E00, // 01AD MOVE R29 R23
- 0x7C600A00, // 01AE CALL R24 5
- 0x8C601B49, // 01AF GETMET R24 R13 K73
- 0x7C600200, // 01B0 CALL R24 1
- 0x88600115, // 01B1 GETMBR R24 R0 K21
- 0x8C60314A, // 01B2 GETMET R24 R24 K74
- 0x5C681A00, // 01B3 MOVE R26 R13
- 0x7C600400, // 01B4 CALL R24 2
- 0x8C60034B, // 01B5 GETMET R24 R1 K75
- 0x7C600200, // 01B6 CALL R24 1
- 0x78620002, // 01B7 JMPF R24 #01BB
- 0x8C60034C, // 01B8 GETMET R24 R1 K76
- 0x546A003B, // 01B9 LDINT R26 60
- 0x7C600400, // 01BA CALL R24 2
- 0x8C601B4D, // 01BB GETMET R24 R13 K77
- 0x7C600200, // 01BC CALL R24 1
- 0x8C600B09, // 01BD GETMET R24 R5 K9
- 0x7C600200, // 01BE CALL R24 1
- 0x8C64310A, // 01BF GETMET R25 R24 K10
- 0x586C0005, // 01C0 LDCONST R27 K5
- 0x88700B0B, // 01C1 GETMBR R28 R5 K11
- 0xB8760200, // 01C2 GETNGBL R29 K1
- 0x88743B2B, // 01C3 GETMBR R29 R29 K43
- 0x7C640800, // 01C4 CALL R25 4
- 0x8C64310A, // 01C5 GETMET R25 R24 K10
- 0x586C0007, // 01C6 LDCONST R27 K7
- 0x88700B0B, // 01C7 GETMBR R28 R5 K11
- 0x58740007, // 01C8 LDCONST R29 K7
+ 0xB83A0200, // 0159 GETNGBL R14 K1
+ 0x88381D02, // 015A GETMBR R14 R14 K2
+ 0x8C381D38, // 015B GETMET R14 R14 K56
+ 0x5C401000, // 015C MOVE R16 R8
+ 0x7C380400, // 015D CALL R14 2
+ 0x8C3C1D39, // 015E GETMET R15 R14 K57
+ 0x54460005, // 015F LDINT R17 6
+ 0x7C3C0400, // 0160 CALL R15 2
+ 0x8C401F06, // 0161 GETMET R16 R15 K6
+ 0x544A0014, // 0162 LDINT R18 21
+ 0x7C400400, // 0163 CALL R16 2
+ 0x8C441F06, // 0164 GETMET R17 R15 K6
+ 0x544E0010, // 0165 LDINT R19 17
+ 0x7C440400, // 0166 CALL R17 2
+ 0x5C482000, // 0167 MOVE R18 R16
+ 0x784A0001, // 0168 JMPF R18 #016B
+ 0x5C482200, // 0169 MOVE R18 R17
+ 0x744A0006, // 016A JMPT R18 #0172
+ 0xB84A4400, // 016B GETNGBL R18 K34
+ 0x8C48252C, // 016C GETMET R18 R18 K44
+ 0x5850003A, // 016D LDCONST R20 K58
+ 0x5854000E, // 016E LDCONST R21 K14
+ 0x7C480600, // 016F CALL R18 3
+ 0x50480000, // 0170 LDBOOL R18 0 0
+ 0x80042400, // 0171 RET 1 R18
+ 0x60480004, // 0172 GETGBL R18 G4
+ 0x5C4C2000, // 0173 MOVE R19 R16
+ 0x7C480200, // 0174 CALL R18 1
+ 0x1C48253B, // 0175 EQ R18 R18 K59
+ 0x784A0007, // 0176 JMPF R18 #017F
+ 0xB84A7800, // 0177 GETNGBL R18 K60
+ 0x8C48253D, // 0178 GETMET R18 R18 K61
+ 0x5C502000, // 0179 MOVE R20 R16
+ 0x7C480400, // 017A CALL R18 2
+ 0x8C48253E, // 017B GETMET R18 R18 K62
+ 0x7C480200, // 017C CALL R18 1
+ 0x5C402400, // 017D MOVE R16 R18
+ 0x70020002, // 017E JMP #0182
+ 0x8C48213E, // 017F GETMET R18 R16 K62
+ 0x7C480200, // 0180 CALL R18 1
+ 0x5C402400, // 0181 MOVE R16 R18
+ 0x60480004, // 0182 GETGBL R18 G4
+ 0x5C4C2200, // 0183 MOVE R19 R17
+ 0x7C480200, // 0184 CALL R18 1
+ 0x1C48253B, // 0185 EQ R18 R18 K59
+ 0x784A0007, // 0186 JMPF R18 #018F
+ 0xB84A7800, // 0187 GETNGBL R18 K60
+ 0x8C48253D, // 0188 GETMET R18 R18 K61
+ 0x5C502200, // 0189 MOVE R20 R17
+ 0x7C480400, // 018A CALL R18 2
+ 0x8C48253E, // 018B GETMET R18 R18 K62
+ 0x7C480200, // 018C CALL R18 1
+ 0x5C442400, // 018D MOVE R17 R18
+ 0x70020002, // 018E JMP #0192
+ 0x8C48233E, // 018F GETMET R18 R17 K62
+ 0x7C480200, // 0190 CALL R18 1
+ 0x5C442400, // 0191 MOVE R17 R18
+ 0x8C48033F, // 0192 GETMET R18 R1 K63
+ 0x7C480200, // 0193 CALL R18 1
+ 0x404E0F40, // 0194 CONNECT R19 K7 K64
+ 0x94482413, // 0195 GETIDX R18 R18 R19
+ 0x60500015, // 0196 GETGBL R20 G21
+ 0x7C500000, // 0197 CALL R20 0
+ 0x8C502941, // 0198 GETMET R20 R20 K65
+ 0x58580042, // 0199 LDCONST R22 K66
+ 0x7C500400, // 019A CALL R20 2
+ 0x5C4C2800, // 019B MOVE R19 R20
+ 0x8C500943, // 019C GETMET R20 R4 K67
+ 0x7C500200, // 019D CALL R20 1
+ 0x8C542144, // 019E GETMET R21 R16 K68
+ 0x7C540200, // 019F CALL R21 1
+ 0x8C542B45, // 01A0 GETMET R21 R21 K69
+ 0x7C540200, // 01A1 CALL R21 1
+ 0x8C582946, // 01A2 GETMET R22 R20 K70
+ 0x5C602400, // 01A3 MOVE R24 R18
+ 0x5C642A00, // 01A4 MOVE R25 R21
+ 0x5C682600, // 01A5 MOVE R26 R19
+ 0x546E0007, // 01A6 LDINT R27 8
+ 0x7C580A00, // 01A7 CALL R22 5
+ 0x885C0312, // 01A8 GETMBR R23 R1 K18
+ 0x785E0001, // 01A9 JMPF R23 #01AC
+ 0x885C0312, // 01AA GETMBR R23 R1 K18
+ 0x70020001, // 01AB JMP #01AE
+ 0x885C0116, // 01AC GETMBR R23 R0 K22
+ 0x885C2F47, // 01AD GETMBR R23 R23 K71
+ 0x8C601B48, // 01AE GETMET R24 R13 K72
+ 0x5C682000, // 01AF MOVE R26 R16
+ 0x5C6C2200, // 01B0 MOVE R27 R17
+ 0x5C702C00, // 01B1 MOVE R28 R22
+ 0x5C742E00, // 01B2 MOVE R29 R23
+ 0x7C600A00, // 01B3 CALL R24 5
+ 0x8C601B49, // 01B4 GETMET R24 R13 K73
+ 0x7C600200, // 01B5 CALL R24 1
+ 0x88600116, // 01B6 GETMBR R24 R0 K22
+ 0x8C60314A, // 01B7 GETMET R24 R24 K74
+ 0x5C681A00, // 01B8 MOVE R26 R13
+ 0x7C600400, // 01B9 CALL R24 2
+ 0x8C60034B, // 01BA GETMET R24 R1 K75
+ 0x7C600200, // 01BB CALL R24 1
+ 0x78620002, // 01BC JMPF R24 #01C0
+ 0x8C60034C, // 01BD GETMET R24 R1 K76
+ 0x546A003B, // 01BE LDINT R26 60
+ 0x7C600400, // 01BF CALL R24 2
+ 0x8C601B4D, // 01C0 GETMET R24 R13 K77
+ 0x7C600200, // 01C1 CALL R24 1
+ 0x8C600B09, // 01C2 GETMET R24 R5 K9
+ 0x7C600200, // 01C3 CALL R24 1
+ 0x8C64310A, // 01C4 GETMET R25 R24 K10
+ 0x586C0005, // 01C5 LDCONST R27 K5
+ 0x88700B0B, // 01C6 GETMBR R28 R5 K11
+ 0xB8760200, // 01C7 GETNGBL R29 K1
+ 0x88743B2B, // 01C8 GETMBR R29 R29 K43
0x7C640800, // 01C9 CALL R25 4
- 0x54660007, // 01CA LDINT R25 8
- 0x900E0819, // 01CB SETMBR R3 K4 R25
- 0x80043000, // 01CC RET 1 R24
- 0x70020056, // 01CD JMP #0225
- 0x54220008, // 01CE LDINT R8 9
- 0x1C200E08, // 01CF EQ R8 R7 R8
- 0x7822001E, // 01D0 JMPF R8 #01F0
- 0x8C200506, // 01D1 GETMET R8 R2 K6
- 0x58280005, // 01D2 LDCONST R10 K5
- 0x7C200400, // 01D3 CALL R8 2
- 0x8C24034E, // 01D4 GETMET R9 R1 K78
- 0x5C2C1000, // 01D5 MOVE R11 R8
- 0x7C240400, // 01D6 CALL R9 2
- 0xB8264200, // 01D7 GETNGBL R9 K33
- 0x8C24132C, // 01D8 GETMET R9 R9 K44
- 0x602C0018, // 01D9 GETGBL R11 G24
- 0x5830004F, // 01DA LDCONST R12 K79
- 0x88340311, // 01DB GETMBR R13 R1 K17
- 0x8C341B50, // 01DC GETMET R13 R13 K80
- 0x7C340200, // 01DD CALL R13 1
- 0x8C341B44, // 01DE GETMET R13 R13 K68
- 0x7C340200, // 01DF CALL R13 1
- 0x8C341B45, // 01E0 GETMET R13 R13 K69
- 0x7C340200, // 01E1 CALL R13 1
- 0x8C341B51, // 01E2 GETMET R13 R13 K81
- 0x7C340200, // 01E3 CALL R13 1
- 0x60380008, // 01E4 GETGBL R14 G8
- 0x5C3C1000, // 01E5 MOVE R15 R8
- 0x7C380200, // 01E6 CALL R14 1
- 0x7C2C0600, // 01E7 CALL R11 3
- 0x58300010, // 01E8 LDCONST R12 K16
- 0x7C240600, // 01E9 CALL R9 3
- 0xB8260200, // 01EA GETNGBL R9 K1
- 0x8824132B, // 01EB GETMBR R9 R9 K43
- 0x900E3209, // 01EC SETMBR R3 K25 R9
- 0x4C240000, // 01ED LDNIL R9
- 0x80041200, // 01EE RET 1 R9
- 0x70020034, // 01EF JMP #0225
- 0x54220009, // 01F0 LDINT R8 10
- 0x1C200E08, // 01F1 EQ R8 R7 R8
- 0x78220031, // 01F2 JMPF R8 #0225
- 0x8C200506, // 01F3 GETMET R8 R2 K6
- 0x58280005, // 01F4 LDCONST R10 K5
- 0x7C200400, // 01F5 CALL R8 2
- 0x60240008, // 01F6 GETGBL R9 G8
- 0x5C281000, // 01F7 MOVE R10 R8
- 0x7C240200, // 01F8 CALL R9 1
- 0x0026A409, // 01F9 ADD R9 K82 R9
- 0x900E5809, // 01FA SETMBR R3 K44 R9
- 0x60240010, // 01FB GETGBL R9 G16
- 0x88280115, // 01FC GETMBR R10 R0 K21
- 0x88281530, // 01FD GETMBR R10 R10 K48
- 0x8C281553, // 01FE GETMET R10 R10 K83
- 0x7C280200, // 01FF CALL R10 1
- 0x7C240200, // 0200 CALL R9 1
- 0xA8020010, // 0201 EXBLK 0 #0213
- 0x5C281200, // 0202 MOVE R10 R9
- 0x7C280000, // 0203 CALL R10 0
- 0x8C2C1554, // 0204 GETMET R11 R10 K84
- 0x7C2C0200, // 0205 CALL R11 1
- 0x1C2C1608, // 0206 EQ R11 R11 R8
- 0x782E0008, // 0207 JMPF R11 #0211
- 0xB82E4200, // 0208 GETNGBL R11 K33
- 0x8C2C1755, // 0209 GETMET R11 R11 K85
- 0x543607CF, // 020A LDINT R13 2000
- 0x84380000, // 020B CLOSURE R14 P0
- 0x7C2C0600, // 020C CALL R11 3
- 0x502C0200, // 020D LDBOOL R11 1 0
- 0xA0000000, // 020E CLOSE R0
- 0xA8040001, // 020F EXBLK 1 1
- 0x80041600, // 0210 RET 1 R11
- 0xA0240000, // 0211 CLOSE R9
- 0x7001FFEE, // 0212 JMP #0202
- 0x58240056, // 0213 LDCONST R9 K86
- 0xAC240200, // 0214 CATCH R9 1 0
- 0xB0080000, // 0215 RAISE 2 R0 R0
- 0xB8264200, // 0216 GETNGBL R9 K33
- 0x8C24132C, // 0217 GETMET R9 R9 K44
- 0x602C0008, // 0218 GETGBL R11 G8
- 0x5C301000, // 0219 MOVE R12 R8
- 0x7C2C0200, // 021A CALL R11 1
- 0x002EAE0B, // 021B ADD R11 K87 R11
- 0x002C1758, // 021C ADD R11 R11 K88
- 0x5830000E, // 021D LDCONST R12 K14
- 0x7C240600, // 021E CALL R9 3
- 0xB8260200, // 021F GETNGBL R9 K1
- 0x88241359, // 0220 GETMBR R9 R9 K89
- 0x900E3209, // 0221 SETMBR R3 K25 R9
- 0x4C240000, // 0222 LDNIL R9
- 0xA0000000, // 0223 CLOSE R0
- 0x80041200, // 0224 RET 1 R9
- 0x7002009B, // 0225 JMP #02C2
- 0x5422003B, // 0226 LDINT R8 60
- 0x1C200C08, // 0227 EQ R8 R6 R8
- 0x78220085, // 0228 JMPF R8 #02AF
- 0x1C200F05, // 0229 EQ R8 R7 K5
- 0x78220065, // 022A JMPF R8 #0291
- 0x8C200506, // 022B GETMET R8 R2 K6
- 0x58280005, // 022C LDCONST R10 K5
- 0x7C200400, // 022D CALL R8 2
- 0x8C240506, // 022E GETMET R9 R2 K6
- 0x582C0007, // 022F LDCONST R11 K7
- 0x7C240400, // 0230 CALL R9 2
- 0x8C280506, // 0231 GETMET R10 R2 K6
- 0x5830000E, // 0232 LDCONST R12 K14
- 0x7C280400, // 0233 CALL R10 2
- 0x8C2C0506, // 0234 GETMET R11 R2 K6
- 0x58340010, // 0235 LDCONST R13 K16
- 0x7C2C0400, // 0236 CALL R11 2
- 0x8C300506, // 0237 GETMET R12 R2 K6
- 0x543A0003, // 0238 LDINT R14 4
- 0x7C300400, // 0239 CALL R12 2
- 0xB8364200, // 023A GETNGBL R13 K33
- 0x8C341B2C, // 023B GETMET R13 R13 K44
- 0x603C0018, // 023C GETGBL R15 G24
- 0x5840005A, // 023D LDCONST R16 K90
- 0x5C441000, // 023E MOVE R17 R8
- 0x8C481351, // 023F GETMET R18 R9 K81
- 0x7C480200, // 0240 CALL R18 1
- 0x5C4C1400, // 0241 MOVE R19 R10
- 0x5C501600, // 0242 MOVE R20 R11
- 0x8C541951, // 0243 GETMET R21 R12 K81
- 0x7C540200, // 0244 CALL R21 1
- 0x7C3C0C00, // 0245 CALL R15 6
- 0x54420003, // 0246 LDINT R16 4
- 0x7C340600, // 0247 CALL R13 3
- 0x4C340000, // 0248 LDNIL R13
- 0x1C34100D, // 0249 EQ R13 R8 R13
- 0x7436000B, // 024A JMPT R13 #0257
- 0x4C340000, // 024B LDNIL R13
- 0x1C34120D, // 024C EQ R13 R9 R13
- 0x74360008, // 024D JMPT R13 #0257
- 0x4C340000, // 024E LDNIL R13
- 0x1C34140D, // 024F EQ R13 R10 R13
- 0x74360005, // 0250 JMPT R13 #0257
- 0x4C340000, // 0251 LDNIL R13
- 0x1C34160D, // 0252 EQ R13 R11 R13
- 0x74360002, // 0253 JMPT R13 #0257
- 0x4C340000, // 0254 LDNIL R13
- 0x1C34180D, // 0255 EQ R13 R12 R13
- 0x78360005, // 0256 JMPF R13 #025D
- 0xB8360200, // 0257 GETNGBL R13 K1
- 0x88341B5B, // 0258 GETMBR R13 R13 K91
- 0x900E320D, // 0259 SETMBR R3 K25 R13
- 0x4C340000, // 025A LDNIL R13
- 0xA0000000, // 025B CLOSE R0
- 0x80041A00, // 025C RET 1 R13
- 0x6034000C, // 025D GETGBL R13 G12
- 0x5C381200, // 025E MOVE R14 R9
- 0x7C340200, // 025F CALL R13 1
- 0x543A001F, // 0260 LDINT R14 32
- 0x543E0040, // 0261 LDINT R15 65
- 0x00381C0F, // 0262 ADD R14 R14 R15
- 0x20341A0E, // 0263 NE R13 R13 R14
- 0x7436000B, // 0264 JMPT R13 #0271
- 0x6034000C, // 0265 GETGBL R13 G12
- 0x5C381800, // 0266 MOVE R14 R12
- 0x7C340200, // 0267 CALL R13 1
- 0x543A000F, // 0268 LDINT R14 16
- 0x14341A0E, // 0269 LT R13 R13 R14
- 0x74360005, // 026A JMPT R13 #0271
- 0x6034000C, // 026B GETGBL R13 G12
- 0x5C381800, // 026C MOVE R14 R12
- 0x7C340200, // 026D CALL R13 1
- 0x543A001F, // 026E LDINT R14 32
- 0x24341A0E, // 026F GT R13 R13 R14
- 0x7836000A, // 0270 JMPF R13 #027C
- 0xB8364200, // 0271 GETNGBL R13 K33
- 0x8C341B2C, // 0272 GETMET R13 R13 K44
- 0x583C005C, // 0273 LDCONST R15 K92
- 0x5840000E, // 0274 LDCONST R16 K14
- 0x7C340600, // 0275 CALL R13 3
- 0xB8360200, // 0276 GETNGBL R13 K1
- 0x88341B5D, // 0277 GETMBR R13 R13 K93
- 0x900E320D, // 0278 SETMBR R3 K25 R13
- 0x4C340000, // 0279 LDNIL R13
- 0xA0000000, // 027A CLOSE R0
- 0x80041A00, // 027B RET 1 R13
- 0x5436001E, // 027C LDINT R13 31
- 0x40360A0D, // 027D CONNECT R13 K5 R13
- 0x9434120D, // 027E GETIDX R13 R9 R13
- 0x543A001F, // 027F LDINT R14 32
- 0x40381D40, // 0280 CONNECT R14 R14 K64
- 0x9438120E, // 0281 GETIDX R14 R9 R14
- 0x883C0115, // 0282 GETMBR R15 R0 K21
- 0x8C3C1F5E, // 0283 GETMET R15 R15 K94
- 0x5C441000, // 0284 MOVE R17 R8
- 0x5C481600, // 0285 MOVE R18 R11
- 0x5C4C1400, // 0286 MOVE R19 R10
- 0x5C501800, // 0287 MOVE R20 R12
- 0x5C541A00, // 0288 MOVE R21 R13
- 0x5C581C00, // 0289 MOVE R22 R14
- 0x8C5C035F, // 028A GETMET R23 R1 K95
- 0x7C5C0200, // 028B CALL R23 1
- 0x7C3C1000, // 028C CALL R15 8
- 0x503C0200, // 028D LDBOOL R15 1 0
- 0xA0000000, // 028E CLOSE R0
- 0x80041E00, // 028F RET 1 R15
- 0x7002001C, // 0290 JMP #02AE
- 0x1C200F07, // 0291 EQ R8 R7 K7
- 0x78220012, // 0292 JMPF R8 #02A6
- 0x8C200506, // 0293 GETMET R8 R2 K6
- 0x58280005, // 0294 LDCONST R10 K5
- 0x7C200400, // 0295 CALL R8 2
- 0xB8264200, // 0296 GETNGBL R9 K33
- 0x8C24132C, // 0297 GETMET R9 R9 K44
- 0x602C0008, // 0298 GETGBL R11 G8
- 0x5C301000, // 0299 MOVE R12 R8
- 0x7C2C0200, // 029A CALL R11 1
- 0x002EC00B, // 029B ADD R11 K96 R11
- 0x58300010, // 029C LDCONST R12 K16
- 0x7C240600, // 029D CALL R9 3
- 0x88240115, // 029E GETMBR R9 R0 K21
- 0x8C241361, // 029F GETMET R9 R9 K97
- 0x5C2C1000, // 02A0 MOVE R11 R8
- 0x7C240400, // 02A1 CALL R9 2
- 0x50240200, // 02A2 LDBOOL R9 1 0
- 0xA0000000, // 02A3 CLOSE R0
- 0x80041200, // 02A4 RET 1 R9
- 0x70020007, // 02A5 JMP #02AE
- 0x1C200F0E, // 02A6 EQ R8 R7 K14
- 0x78220005, // 02A7 JMPF R8 #02AE
- 0x88200115, // 02A8 GETMBR R8 R0 K21
- 0x8C201162, // 02A9 GETMET R8 R8 K98
- 0x7C200200, // 02AA CALL R8 1
- 0x50200200, // 02AB LDBOOL R8 1 0
- 0xA0000000, // 02AC CLOSE R0
- 0x80041000, // 02AD RET 1 R8
- 0x70020012, // 02AE JMP #02C2
- 0x54220029, // 02AF LDINT R8 42
- 0x1C200C08, // 02B0 EQ R8 R6 R8
- 0x78220005, // 02B1 JMPF R8 #02B8
- 0x1C200F05, // 02B2 EQ R8 R7 K5
- 0x78220002, // 02B3 JMPF R8 #02B7
- 0x50200200, // 02B4 LDBOOL R8 1 0
- 0xA0000000, // 02B5 CLOSE R0
- 0x80041000, // 02B6 RET 1 R8
- 0x70020009, // 02B7 JMP #02C2
- 0x60200003, // 02B8 GETGBL R8 G3
- 0x5C240000, // 02B9 MOVE R9 R0
- 0x7C200200, // 02BA CALL R8 1
- 0x8C201163, // 02BB GETMET R8 R8 K99
- 0x5C280200, // 02BC MOVE R10 R1
- 0x5C2C0400, // 02BD MOVE R11 R2
- 0x5C300600, // 02BE MOVE R12 R3
- 0x7C200800, // 02BF CALL R8 4
- 0xA0000000, // 02C0 CLOSE R0
- 0x80041000, // 02C1 RET 1 R8
- 0xA0000000, // 02C2 CLOSE R0
- 0x80000000, // 02C3 RET 0
+ 0x8C64310A, // 01CA GETMET R25 R24 K10
+ 0x586C0007, // 01CB LDCONST R27 K7
+ 0x88700B0B, // 01CC GETMBR R28 R5 K11
+ 0x58740007, // 01CD LDCONST R29 K7
+ 0x7C640800, // 01CE CALL R25 4
+ 0x54660007, // 01CF LDINT R25 8
+ 0x900E0819, // 01D0 SETMBR R3 K4 R25
+ 0x80043000, // 01D1 RET 1 R24
+ 0x70020056, // 01D2 JMP #022A
+ 0x54220008, // 01D3 LDINT R8 9
+ 0x1C200E08, // 01D4 EQ R8 R7 R8
+ 0x7822001E, // 01D5 JMPF R8 #01F5
+ 0x8C200506, // 01D6 GETMET R8 R2 K6
+ 0x58280005, // 01D7 LDCONST R10 K5
+ 0x7C200400, // 01D8 CALL R8 2
+ 0x8C24034E, // 01D9 GETMET R9 R1 K78
+ 0x5C2C1000, // 01DA MOVE R11 R8
+ 0x7C240400, // 01DB CALL R9 2
+ 0xB8264400, // 01DC GETNGBL R9 K34
+ 0x8C24132C, // 01DD GETMET R9 R9 K44
+ 0x602C0018, // 01DE GETGBL R11 G24
+ 0x5830004F, // 01DF LDCONST R12 K79
+ 0x88340312, // 01E0 GETMBR R13 R1 K18
+ 0x8C341B50, // 01E1 GETMET R13 R13 K80
+ 0x7C340200, // 01E2 CALL R13 1
+ 0x8C341B44, // 01E3 GETMET R13 R13 K68
+ 0x7C340200, // 01E4 CALL R13 1
+ 0x8C341B45, // 01E5 GETMET R13 R13 K69
+ 0x7C340200, // 01E6 CALL R13 1
+ 0x8C341B51, // 01E7 GETMET R13 R13 K81
+ 0x7C340200, // 01E8 CALL R13 1
+ 0x60380008, // 01E9 GETGBL R14 G8
+ 0x5C3C1000, // 01EA MOVE R15 R8
+ 0x7C380200, // 01EB CALL R14 1
+ 0x7C2C0600, // 01EC CALL R11 3
+ 0x58300010, // 01ED LDCONST R12 K16
+ 0x7C240600, // 01EE CALL R9 3
+ 0xB8260200, // 01EF GETNGBL R9 K1
+ 0x8824132B, // 01F0 GETMBR R9 R9 K43
+ 0x900E3409, // 01F1 SETMBR R3 K26 R9
+ 0x4C240000, // 01F2 LDNIL R9
+ 0x80041200, // 01F3 RET 1 R9
+ 0x70020034, // 01F4 JMP #022A
+ 0x54220009, // 01F5 LDINT R8 10
+ 0x1C200E08, // 01F6 EQ R8 R7 R8
+ 0x78220031, // 01F7 JMPF R8 #022A
+ 0x8C200506, // 01F8 GETMET R8 R2 K6
+ 0x58280005, // 01F9 LDCONST R10 K5
+ 0x7C200400, // 01FA CALL R8 2
+ 0x60240008, // 01FB GETGBL R9 G8
+ 0x5C281000, // 01FC MOVE R10 R8
+ 0x7C240200, // 01FD CALL R9 1
+ 0x0026A409, // 01FE ADD R9 K82 R9
+ 0x900E5809, // 01FF SETMBR R3 K44 R9
+ 0x60240010, // 0200 GETGBL R9 G16
+ 0x88280116, // 0201 GETMBR R10 R0 K22
+ 0x88281530, // 0202 GETMBR R10 R10 K48
+ 0x8C281553, // 0203 GETMET R10 R10 K83
+ 0x7C280200, // 0204 CALL R10 1
+ 0x7C240200, // 0205 CALL R9 1
+ 0xA8020010, // 0206 EXBLK 0 #0218
+ 0x5C281200, // 0207 MOVE R10 R9
+ 0x7C280000, // 0208 CALL R10 0
+ 0x8C2C1554, // 0209 GETMET R11 R10 K84
+ 0x7C2C0200, // 020A CALL R11 1
+ 0x1C2C1608, // 020B EQ R11 R11 R8
+ 0x782E0008, // 020C JMPF R11 #0216
+ 0xB82E4400, // 020D GETNGBL R11 K34
+ 0x8C2C1755, // 020E GETMET R11 R11 K85
+ 0x543607CF, // 020F LDINT R13 2000
+ 0x84380000, // 0210 CLOSURE R14 P0
+ 0x7C2C0600, // 0211 CALL R11 3
+ 0x502C0200, // 0212 LDBOOL R11 1 0
+ 0xA0000000, // 0213 CLOSE R0
+ 0xA8040001, // 0214 EXBLK 1 1
+ 0x80041600, // 0215 RET 1 R11
+ 0xA0240000, // 0216 CLOSE R9
+ 0x7001FFEE, // 0217 JMP #0207
+ 0x58240056, // 0218 LDCONST R9 K86
+ 0xAC240200, // 0219 CATCH R9 1 0
+ 0xB0080000, // 021A RAISE 2 R0 R0
+ 0xB8264400, // 021B GETNGBL R9 K34
+ 0x8C24132C, // 021C GETMET R9 R9 K44
+ 0x602C0008, // 021D GETGBL R11 G8
+ 0x5C301000, // 021E MOVE R12 R8
+ 0x7C2C0200, // 021F CALL R11 1
+ 0x002EAE0B, // 0220 ADD R11 K87 R11
+ 0x002C1758, // 0221 ADD R11 R11 K88
+ 0x5830000E, // 0222 LDCONST R12 K14
+ 0x7C240600, // 0223 CALL R9 3
+ 0xB8260200, // 0224 GETNGBL R9 K1
+ 0x88241359, // 0225 GETMBR R9 R9 K89
+ 0x900E3409, // 0226 SETMBR R3 K26 R9
+ 0x4C240000, // 0227 LDNIL R9
+ 0xA0000000, // 0228 CLOSE R0
+ 0x80041200, // 0229 RET 1 R9
+ 0x7002009B, // 022A JMP #02C7
+ 0x5422003B, // 022B LDINT R8 60
+ 0x1C200C08, // 022C EQ R8 R6 R8
+ 0x78220085, // 022D JMPF R8 #02B4
+ 0x1C200F05, // 022E EQ R8 R7 K5
+ 0x78220065, // 022F JMPF R8 #0296
+ 0x8C200506, // 0230 GETMET R8 R2 K6
+ 0x58280005, // 0231 LDCONST R10 K5
+ 0x7C200400, // 0232 CALL R8 2
+ 0x8C240506, // 0233 GETMET R9 R2 K6
+ 0x582C0007, // 0234 LDCONST R11 K7
+ 0x7C240400, // 0235 CALL R9 2
+ 0x8C280506, // 0236 GETMET R10 R2 K6
+ 0x5830000E, // 0237 LDCONST R12 K14
+ 0x7C280400, // 0238 CALL R10 2
+ 0x8C2C0506, // 0239 GETMET R11 R2 K6
+ 0x58340010, // 023A LDCONST R13 K16
+ 0x7C2C0400, // 023B CALL R11 2
+ 0x8C300506, // 023C GETMET R12 R2 K6
+ 0x543A0003, // 023D LDINT R14 4
+ 0x7C300400, // 023E CALL R12 2
+ 0xB8364400, // 023F GETNGBL R13 K34
+ 0x8C341B2C, // 0240 GETMET R13 R13 K44
+ 0x603C0018, // 0241 GETGBL R15 G24
+ 0x5840005A, // 0242 LDCONST R16 K90
+ 0x5C441000, // 0243 MOVE R17 R8
+ 0x8C481351, // 0244 GETMET R18 R9 K81
+ 0x7C480200, // 0245 CALL R18 1
+ 0x5C4C1400, // 0246 MOVE R19 R10
+ 0x5C501600, // 0247 MOVE R20 R11
+ 0x8C541951, // 0248 GETMET R21 R12 K81
+ 0x7C540200, // 0249 CALL R21 1
+ 0x7C3C0C00, // 024A CALL R15 6
+ 0x54420003, // 024B LDINT R16 4
+ 0x7C340600, // 024C CALL R13 3
+ 0x4C340000, // 024D LDNIL R13
+ 0x1C34100D, // 024E EQ R13 R8 R13
+ 0x7436000B, // 024F JMPT R13 #025C
+ 0x4C340000, // 0250 LDNIL R13
+ 0x1C34120D, // 0251 EQ R13 R9 R13
+ 0x74360008, // 0252 JMPT R13 #025C
+ 0x4C340000, // 0253 LDNIL R13
+ 0x1C34140D, // 0254 EQ R13 R10 R13
+ 0x74360005, // 0255 JMPT R13 #025C
+ 0x4C340000, // 0256 LDNIL R13
+ 0x1C34160D, // 0257 EQ R13 R11 R13
+ 0x74360002, // 0258 JMPT R13 #025C
+ 0x4C340000, // 0259 LDNIL R13
+ 0x1C34180D, // 025A EQ R13 R12 R13
+ 0x78360005, // 025B JMPF R13 #0262
+ 0xB8360200, // 025C GETNGBL R13 K1
+ 0x88341B5B, // 025D GETMBR R13 R13 K91
+ 0x900E340D, // 025E SETMBR R3 K26 R13
+ 0x4C340000, // 025F LDNIL R13
+ 0xA0000000, // 0260 CLOSE R0
+ 0x80041A00, // 0261 RET 1 R13
+ 0x6034000C, // 0262 GETGBL R13 G12
+ 0x5C381200, // 0263 MOVE R14 R9
+ 0x7C340200, // 0264 CALL R13 1
+ 0x543A001F, // 0265 LDINT R14 32
+ 0x543E0040, // 0266 LDINT R15 65
+ 0x00381C0F, // 0267 ADD R14 R14 R15
+ 0x20341A0E, // 0268 NE R13 R13 R14
+ 0x7436000B, // 0269 JMPT R13 #0276
+ 0x6034000C, // 026A GETGBL R13 G12
+ 0x5C381800, // 026B MOVE R14 R12
+ 0x7C340200, // 026C CALL R13 1
+ 0x543A000F, // 026D LDINT R14 16
+ 0x14341A0E, // 026E LT R13 R13 R14
+ 0x74360005, // 026F JMPT R13 #0276
+ 0x6034000C, // 0270 GETGBL R13 G12
+ 0x5C381800, // 0271 MOVE R14 R12
+ 0x7C340200, // 0272 CALL R13 1
+ 0x543A001F, // 0273 LDINT R14 32
+ 0x24341A0E, // 0274 GT R13 R13 R14
+ 0x7836000A, // 0275 JMPF R13 #0281
+ 0xB8364400, // 0276 GETNGBL R13 K34
+ 0x8C341B2C, // 0277 GETMET R13 R13 K44
+ 0x583C005C, // 0278 LDCONST R15 K92
+ 0x5840000E, // 0279 LDCONST R16 K14
+ 0x7C340600, // 027A CALL R13 3
+ 0xB8360200, // 027B GETNGBL R13 K1
+ 0x88341B5D, // 027C GETMBR R13 R13 K93
+ 0x900E340D, // 027D SETMBR R3 K26 R13
+ 0x4C340000, // 027E LDNIL R13
+ 0xA0000000, // 027F CLOSE R0
+ 0x80041A00, // 0280 RET 1 R13
+ 0x5436001E, // 0281 LDINT R13 31
+ 0x40360A0D, // 0282 CONNECT R13 K5 R13
+ 0x9434120D, // 0283 GETIDX R13 R9 R13
+ 0x543A001F, // 0284 LDINT R14 32
+ 0x40381D40, // 0285 CONNECT R14 R14 K64
+ 0x9438120E, // 0286 GETIDX R14 R9 R14
+ 0x883C0116, // 0287 GETMBR R15 R0 K22
+ 0x8C3C1F5E, // 0288 GETMET R15 R15 K94
+ 0x5C441000, // 0289 MOVE R17 R8
+ 0x5C481600, // 028A MOVE R18 R11
+ 0x5C4C1400, // 028B MOVE R19 R10
+ 0x5C501800, // 028C MOVE R20 R12
+ 0x5C541A00, // 028D MOVE R21 R13
+ 0x5C581C00, // 028E MOVE R22 R14
+ 0x8C5C035F, // 028F GETMET R23 R1 K95
+ 0x7C5C0200, // 0290 CALL R23 1
+ 0x7C3C1000, // 0291 CALL R15 8
+ 0x503C0200, // 0292 LDBOOL R15 1 0
+ 0xA0000000, // 0293 CLOSE R0
+ 0x80041E00, // 0294 RET 1 R15
+ 0x7002001C, // 0295 JMP #02B3
+ 0x1C200F07, // 0296 EQ R8 R7 K7
+ 0x78220012, // 0297 JMPF R8 #02AB
+ 0x8C200506, // 0298 GETMET R8 R2 K6
+ 0x58280005, // 0299 LDCONST R10 K5
+ 0x7C200400, // 029A CALL R8 2
+ 0xB8264400, // 029B GETNGBL R9 K34
+ 0x8C24132C, // 029C GETMET R9 R9 K44
+ 0x602C0008, // 029D GETGBL R11 G8
+ 0x5C301000, // 029E MOVE R12 R8
+ 0x7C2C0200, // 029F CALL R11 1
+ 0x002EC00B, // 02A0 ADD R11 K96 R11
+ 0x58300010, // 02A1 LDCONST R12 K16
+ 0x7C240600, // 02A2 CALL R9 3
+ 0x88240116, // 02A3 GETMBR R9 R0 K22
+ 0x8C241361, // 02A4 GETMET R9 R9 K97
+ 0x5C2C1000, // 02A5 MOVE R11 R8
+ 0x7C240400, // 02A6 CALL R9 2
+ 0x50240200, // 02A7 LDBOOL R9 1 0
+ 0xA0000000, // 02A8 CLOSE R0
+ 0x80041200, // 02A9 RET 1 R9
+ 0x70020007, // 02AA JMP #02B3
+ 0x1C200F0E, // 02AB EQ R8 R7 K14
+ 0x78220005, // 02AC JMPF R8 #02B3
+ 0x88200116, // 02AD GETMBR R8 R0 K22
+ 0x8C201162, // 02AE GETMET R8 R8 K98
+ 0x7C200200, // 02AF CALL R8 1
+ 0x50200200, // 02B0 LDBOOL R8 1 0
+ 0xA0000000, // 02B1 CLOSE R0
+ 0x80041000, // 02B2 RET 1 R8
+ 0x70020012, // 02B3 JMP #02C7
+ 0x54220029, // 02B4 LDINT R8 42
+ 0x1C200C08, // 02B5 EQ R8 R6 R8
+ 0x78220005, // 02B6 JMPF R8 #02BD
+ 0x1C200F05, // 02B7 EQ R8 R7 K5
+ 0x78220002, // 02B8 JMPF R8 #02BC
+ 0x50200200, // 02B9 LDBOOL R8 1 0
+ 0xA0000000, // 02BA CLOSE R0
+ 0x80041000, // 02BB RET 1 R8
+ 0x70020009, // 02BC JMP #02C7
+ 0x60200003, // 02BD GETGBL R8 G3
+ 0x5C240000, // 02BE MOVE R9 R0
+ 0x7C200200, // 02BF CALL R8 1
+ 0x8C201163, // 02C0 GETMET R8 R8 K99
+ 0x5C280200, // 02C1 MOVE R10 R1
+ 0x5C2C0400, // 02C2 MOVE R11 R2
+ 0x5C300600, // 02C3 MOVE R12 R3
+ 0x7C200800, // 02C4 CALL R8 4
+ 0xA0000000, // 02C5 CLOSE R0
+ 0x80041000, // 02C6 RET 1 R8
+ 0xA0000000, // 02C7 CLOSE R0
+ 0x80000000, // 02C8 RET 0
})
)
);
@@ -871,22 +876,22 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
be_nested_proto(
- 24, /* nstack */
- 3, /* argc */
+ 25, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[87]) { /* constants */
+ ( &(const bvalue[92]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(attribute),
/* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U8),
/* K8 */ be_nested_str_weak(_breadcrumb),
/* K9 */ be_const_int(1),
@@ -927,947 +932,992 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
/* K44 */ be_nested_str_weak(StatusSTS),
/* K45 */ be_nested_str_weak(UptimeSec),
/* K46 */ be_nested_str_weak(int64),
- /* K47 */ be_nested_str_weak(rtc),
- /* K48 */ be_nested_str_weak(utc),
- /* K49 */ be_const_int(1000000),
+ /* K47 */ be_nested_str_weak(rtc_utc),
+ /* K48 */ be_const_int(1000000),
+ /* K49 */ be_nested_str_weak(rtc),
/* K50 */ be_nested_str_weak(local),
- /* K51 */ be_nested_str_weak(device),
- /* K52 */ be_nested_str_weak(sessions),
- /* K53 */ be_nested_str_weak(active_fabrics),
- /* K54 */ be_nested_str_weak(B2),
- /* K55 */ be_nested_str_weak(get_noc),
- /* K56 */ be_nested_str_weak(get_icac),
- /* K57 */ be_nested_str_weak(get_fabric_index),
- /* K58 */ be_nested_str_weak(stop_iteration),
- /* K59 */ be_nested_str_weak(parse),
- /* K60 */ be_nested_str_weak(get_ca),
- /* K61 */ be_nested_str_weak(findsubval),
- /* K62 */ be_nested_str_weak(get_admin_vendor),
- /* K63 */ be_nested_str_weak(get_fabric_id),
- /* K64 */ be_nested_str_weak(get_device_id),
- /* K65 */ be_nested_str_weak(get_fabric_label),
- /* K66 */ be_nested_str_weak(Fabric),
- /* K67 */ be_nested_str_weak(_MAX_CASE),
- /* K68 */ be_nested_str_weak(count_active_fabrics),
- /* K69 */ be_nested_str_weak(_fabric),
- /* K70 */ be_nested_str_weak(is_commissioning_open),
- /* K71 */ be_nested_str_weak(is_root_commissioning_open),
- /* K72 */ be_nested_str_weak(commissioning_admin_fabric),
- /* K73 */ be_nested_str_weak(Tasmota),
- /* K74 */ be_nested_str_weak(vendorid),
- /* K75 */ be_nested_str_weak(DeviceName),
- /* K76 */ be_nested_str_weak(FriendlyName),
- /* K77 */ be_nested_str_weak(FriendlyName1),
- /* K78 */ be_nested_str_weak(XX),
- /* K79 */ be_nested_str_weak(Status_X202),
- /* K80 */ be_nested_str_weak(StatusFWR),
- /* K81 */ be_nested_str_weak(Hardware),
- /* K82 */ be_nested_str_weak(Version),
- /* K83 */ be_nested_str_weak(_X28),
- /* K84 */ be_nested_str_weak(locale),
- /* K85 */ be_nested_str_weak(get_active_endpoints),
- /* K86 */ be_nested_str_weak(read_attribute),
+ /* K51 */ be_nested_str_weak(ack_request),
+ /* K52 */ be_nested_str_weak(fabric_filtered),
+ /* K53 */ be_nested_str_weak(get_fabric),
+ /* 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),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[897]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xB8120200, // 0001 GETNGBL R4 K1
- 0x88100902, // 0002 GETMBR R4 R4 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x88180504, // 0004 GETMBR R6 R2 K4
- 0x541E002F, // 0005 LDINT R7 48
- 0x1C1C0A07, // 0006 EQ R7 R5 R7
- 0x781E0030, // 0007 JMPF R7 #0039
- 0x1C1C0D05, // 0008 EQ R7 R6 K5
- 0x781E0005, // 0009 JMPF R7 #0010
- 0x8C1C0906, // 000A GETMET R7 R4 K6
- 0x88240907, // 000B GETMBR R9 R4 K7
- 0x88280308, // 000C GETMBR R10 R1 K8
- 0x7C1C0600, // 000D CALL R7 3
- 0x80040E00, // 000E RET 1 R7
+ ( &(const binstruction[937]) { /* code */
+ 0xA4120000, // 0000 IMPORT R4 K0
+ 0xB8160200, // 0001 GETNGBL R5 K1
+ 0x88140B02, // 0002 GETMBR R5 R5 K2
+ 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0x881C0504, // 0004 GETMBR R7 R2 K4
+ 0x5422002F, // 0005 LDINT R8 48
+ 0x1C200C08, // 0006 EQ R8 R6 R8
+ 0x78220030, // 0007 JMPF R8 #0039
+ 0x1C200F05, // 0008 EQ R8 R7 K5
+ 0x78220005, // 0009 JMPF R8 #0010
+ 0x8C200706, // 000A GETMET R8 R3 K6
+ 0x88280B07, // 000B GETMBR R10 R5 K7
+ 0x882C0308, // 000C GETMBR R11 R1 K8
+ 0x7C200600, // 000D CALL R8 3
+ 0x80041000, // 000E RET 1 R8
0x70020027, // 000F JMP #0038
- 0x1C1C0D09, // 0010 EQ R7 R6 K9
- 0x781E000D, // 0011 JMPF R7 #0020
- 0x8C1C090A, // 0012 GETMET R7 R4 K10
- 0x7C1C0200, // 0013 CALL R7 1
- 0x8C200F0B, // 0014 GETMET R8 R7 K11
- 0x58280005, // 0015 LDCONST R10 K5
- 0x882C090C, // 0016 GETMBR R11 R4 K12
- 0x5432003B, // 0017 LDINT R12 60
- 0x7C200800, // 0018 CALL R8 4
- 0x8C200F0B, // 0019 GETMET R8 R7 K11
- 0x58280009, // 001A LDCONST R10 K9
- 0x882C090C, // 001B GETMBR R11 R4 K12
- 0x54320383, // 001C LDINT R12 900
- 0x7C200800, // 001D CALL R8 4
- 0x80040E00, // 001E RET 1 R7
+ 0x1C200F09, // 0010 EQ R8 R7 K9
+ 0x7822000D, // 0011 JMPF R8 #0020
+ 0x8C200B0A, // 0012 GETMET R8 R5 K10
+ 0x7C200200, // 0013 CALL R8 1
+ 0x8C24110B, // 0014 GETMET R9 R8 K11
+ 0x582C0005, // 0015 LDCONST R11 K5
+ 0x88300B0C, // 0016 GETMBR R12 R5 K12
+ 0x5436003B, // 0017 LDINT R13 60
+ 0x7C240800, // 0018 CALL R9 4
+ 0x8C24110B, // 0019 GETMET R9 R8 K11
+ 0x582C0009, // 001A LDCONST R11 K9
+ 0x88300B0C, // 001B GETMBR R12 R5 K12
+ 0x54360383, // 001C LDINT R13 900
+ 0x7C240800, // 001D CALL R9 4
+ 0x80041000, // 001E RET 1 R8
0x70020017, // 001F JMP #0038
- 0x1C1C0D0D, // 0020 EQ R7 R6 K13
- 0x781E0005, // 0021 JMPF R7 #0028
- 0x8C1C0906, // 0022 GETMET R7 R4 K6
- 0x8824090E, // 0023 GETMBR R9 R4 K14
- 0x5828000D, // 0024 LDCONST R10 K13
- 0x7C1C0600, // 0025 CALL R7 3
- 0x80040E00, // 0026 RET 1 R7
+ 0x1C200F0D, // 0020 EQ R8 R7 K13
+ 0x78220005, // 0021 JMPF R8 #0028
+ 0x8C200706, // 0022 GETMET R8 R3 K6
+ 0x88280B0E, // 0023 GETMBR R10 R5 K14
+ 0x582C000D, // 0024 LDCONST R11 K13
+ 0x7C200600, // 0025 CALL R8 3
+ 0x80041000, // 0026 RET 1 R8
0x7002000F, // 0027 JMP #0038
- 0x1C1C0D0F, // 0028 EQ R7 R6 K15
- 0x781E0005, // 0029 JMPF R7 #0030
- 0x8C1C0906, // 002A GETMET R7 R4 K6
- 0x8824090E, // 002B GETMBR R9 R4 K14
- 0x5828000D, // 002C LDCONST R10 K13
- 0x7C1C0600, // 002D CALL R7 3
- 0x80040E00, // 002E RET 1 R7
+ 0x1C200F0F, // 0028 EQ R8 R7 K15
+ 0x78220005, // 0029 JMPF R8 #0030
+ 0x8C200706, // 002A GETMET R8 R3 K6
+ 0x88280B0E, // 002B GETMBR R10 R5 K14
+ 0x582C000D, // 002C LDCONST R11 K13
+ 0x7C200600, // 002D CALL R8 3
+ 0x80041000, // 002E RET 1 R8
0x70020007, // 002F JMP #0038
- 0x541E0003, // 0030 LDINT R7 4
- 0x1C1C0C07, // 0031 EQ R7 R6 R7
- 0x781E0004, // 0032 JMPF R7 #0038
- 0x8C1C0906, // 0033 GETMET R7 R4 K6
- 0x88240910, // 0034 GETMBR R9 R4 K16
- 0x50280000, // 0035 LDBOOL R10 0 0
- 0x7C1C0600, // 0036 CALL R7 3
- 0x80040E00, // 0037 RET 1 R7
- 0x70020346, // 0038 JMP #0380
- 0x541E0031, // 0039 LDINT R7 50
- 0x1C1C0A07, // 003A EQ R7 R5 R7
- 0x781E0000, // 003B JMPF R7 #003D
- 0x70020342, // 003C JMP #0380
- 0x541E0032, // 003D LDINT R7 51
- 0x1C1C0A07, // 003E EQ R7 R5 R7
- 0x781E00DC, // 003F JMPF R7 #011D
- 0x1C1C0D05, // 0040 EQ R7 R6 K5
- 0x781E00B5, // 0041 JMPF R7 #00F8
- 0x8C1C0911, // 0042 GETMET R7 R4 K17
- 0x7C1C0200, // 0043 CALL R7 1
- 0xB8222400, // 0044 GETNGBL R8 K18
- 0x8C201113, // 0045 GETMET R8 R8 K19
- 0x7C200200, // 0046 CALL R8 1
- 0x94241114, // 0047 GETIDX R9 R8 K20
- 0x78260053, // 0048 JMPF R9 #009D
- 0x8C240F15, // 0049 GETMET R9 R7 K21
- 0x4C2C0000, // 004A LDNIL R11
- 0x7C240400, // 004B CALL R9 2
- 0x8C28130B, // 004C GETMET R10 R9 K11
- 0x58300005, // 004D LDCONST R12 K5
- 0x88340916, // 004E GETMBR R13 R4 K22
- 0x58380017, // 004F LDCONST R14 K23
- 0x7C280800, // 0050 CALL R10 4
- 0x8C28130B, // 0051 GETMET R10 R9 K11
- 0x58300009, // 0052 LDCONST R12 K9
- 0x88340910, // 0053 GETMBR R13 R4 K16
- 0x58380009, // 0054 LDCONST R14 K9
- 0x7C280800, // 0055 CALL R10 4
- 0x8C28130B, // 0056 GETMET R10 R9 K11
- 0x5830000D, // 0057 LDCONST R12 K13
- 0x88340910, // 0058 GETMBR R13 R4 K16
- 0x58380009, // 0059 LDCONST R14 K9
- 0x7C280800, // 005A CALL R10 4
- 0x8C28130B, // 005B GETMET R10 R9 K11
- 0x5830000F, // 005C LDCONST R12 K15
- 0x88340918, // 005D GETMBR R13 R4 K24
- 0x4C380000, // 005E LDNIL R14
- 0x7C280800, // 005F CALL R10 4
- 0x60280015, // 0060 GETGBL R10 G21
- 0x7C280000, // 0061 CALL R10 0
- 0x8C281519, // 0062 GETMET R10 R10 K25
- 0x8C30071A, // 0063 GETMET R12 R3 K26
- 0x8C38111B, // 0064 GETMET R14 R8 K27
- 0x5840001C, // 0065 LDCONST R16 K28
- 0x5844001D, // 0066 LDCONST R17 K29
- 0x7C380600, // 0067 CALL R14 3
- 0x583C001E, // 0068 LDCONST R15 K30
- 0x5840001D, // 0069 LDCONST R16 K29
- 0x7C300800, // 006A CALL R12 4
- 0x7C280400, // 006B CALL R10 2
- 0x8C2C130B, // 006C GETMET R11 R9 K11
- 0x54360003, // 006D LDINT R13 4
- 0x8838091F, // 006E GETMBR R14 R4 K31
- 0x5C3C1400, // 006F MOVE R15 R10
- 0x7C2C0800, // 0070 CALL R11 4
- 0x8C2C1320, // 0071 GETMET R11 R9 K32
- 0x54360004, // 0072 LDINT R13 5
- 0x7C2C0400, // 0073 CALL R11 2
- 0x8C30170B, // 0074 GETMET R12 R11 K11
- 0x4C380000, // 0075 LDNIL R14
- 0x883C091F, // 0076 GETMBR R15 R4 K31
- 0xB8420200, // 0077 GETNGBL R16 K1
- 0x8C402121, // 0078 GETMET R16 R16 K33
- 0x8C48111B, // 0079 GETMET R18 R8 K27
- 0x58500022, // 007A LDCONST R20 K34
- 0x5854001D, // 007B LDCONST R21 K29
- 0x7C480600, // 007C CALL R18 3
- 0x7C400400, // 007D CALL R16 2
- 0x7C300800, // 007E CALL R12 4
- 0x8C301320, // 007F GETMET R12 R9 K32
- 0x543A0005, // 0080 LDINT R14 6
- 0x7C300400, // 0081 CALL R12 2
- 0x8C34190B, // 0082 GETMET R13 R12 K11
- 0x4C3C0000, // 0083 LDNIL R15
- 0x8840091F, // 0084 GETMBR R16 R4 K31
- 0xB8460200, // 0085 GETNGBL R17 K1
- 0x8C442321, // 0086 GETMET R17 R17 K33
- 0x8C4C111B, // 0087 GETMET R19 R8 K27
- 0x58540023, // 0088 LDCONST R21 K35
- 0x5858001D, // 0089 LDCONST R22 K29
- 0x7C4C0600, // 008A CALL R19 3
- 0x7C440400, // 008B CALL R17 2
- 0x7C340800, // 008C CALL R13 4
- 0x8C34190B, // 008D GETMET R13 R12 K11
- 0x4C3C0000, // 008E LDNIL R15
- 0x8840091F, // 008F GETMBR R16 R4 K31
- 0xB8460200, // 0090 GETNGBL R17 K1
- 0x8C442321, // 0091 GETMET R17 R17 K33
- 0x8C4C111B, // 0092 GETMET R19 R8 K27
- 0x58540024, // 0093 LDCONST R21 K36
- 0x5858001D, // 0094 LDCONST R22 K29
- 0x7C4C0600, // 0095 CALL R19 3
- 0x7C440400, // 0096 CALL R17 2
- 0x7C340800, // 0097 CALL R13 4
- 0x8C34130B, // 0098 GETMET R13 R9 K11
- 0x543E0006, // 0099 LDINT R15 7
- 0x8840090E, // 009A GETMBR R16 R4 K14
- 0x5844000D, // 009B LDCONST R17 K13
- 0x7C340800, // 009C CALL R13 4
- 0xB8262400, // 009D GETNGBL R9 K18
- 0x8C241325, // 009E GETMET R9 R9 K37
- 0x7C240200, // 009F CALL R9 1
- 0x94281314, // 00A0 GETIDX R10 R9 K20
- 0x782A0053, // 00A1 JMPF R10 #00F6
- 0x8C280F15, // 00A2 GETMET R10 R7 K21
- 0x4C300000, // 00A3 LDNIL R12
- 0x7C280400, // 00A4 CALL R10 2
- 0x8C2C150B, // 00A5 GETMET R11 R10 K11
- 0x58340005, // 00A6 LDCONST R13 K5
- 0x88380916, // 00A7 GETMBR R14 R4 K22
- 0x583C0025, // 00A8 LDCONST R15 K37
- 0x7C2C0800, // 00A9 CALL R11 4
- 0x8C2C150B, // 00AA GETMET R11 R10 K11
- 0x58340009, // 00AB LDCONST R13 K9
- 0x88380910, // 00AC GETMBR R14 R4 K16
- 0x583C0009, // 00AD LDCONST R15 K9
- 0x7C2C0800, // 00AE CALL R11 4
- 0x8C2C150B, // 00AF GETMET R11 R10 K11
- 0x5834000D, // 00B0 LDCONST R13 K13
- 0x88380910, // 00B1 GETMBR R14 R4 K16
- 0x583C0009, // 00B2 LDCONST R15 K9
- 0x7C2C0800, // 00B3 CALL R11 4
- 0x8C2C150B, // 00B4 GETMET R11 R10 K11
- 0x5834000F, // 00B5 LDCONST R13 K15
- 0x88380918, // 00B6 GETMBR R14 R4 K24
- 0x4C3C0000, // 00B7 LDNIL R15
- 0x7C2C0800, // 00B8 CALL R11 4
- 0x602C0015, // 00B9 GETGBL R11 G21
- 0x7C2C0000, // 00BA CALL R11 0
- 0x8C2C1719, // 00BB GETMET R11 R11 K25
- 0x8C34071A, // 00BC GETMET R13 R3 K26
- 0x8C3C131B, // 00BD GETMET R15 R9 K27
- 0x5844001C, // 00BE LDCONST R17 K28
- 0x5848001D, // 00BF LDCONST R18 K29
- 0x7C3C0600, // 00C0 CALL R15 3
- 0x5840001E, // 00C1 LDCONST R16 K30
- 0x5844001D, // 00C2 LDCONST R17 K29
- 0x7C340800, // 00C3 CALL R13 4
- 0x7C2C0400, // 00C4 CALL R11 2
- 0x8C30150B, // 00C5 GETMET R12 R10 K11
- 0x543A0003, // 00C6 LDINT R14 4
- 0x883C091F, // 00C7 GETMBR R15 R4 K31
- 0x5C401600, // 00C8 MOVE R16 R11
- 0x7C300800, // 00C9 CALL R12 4
- 0x8C301520, // 00CA GETMET R12 R10 K32
- 0x543A0004, // 00CB LDINT R14 5
- 0x7C300400, // 00CC CALL R12 2
- 0x8C34190B, // 00CD GETMET R13 R12 K11
- 0x4C3C0000, // 00CE LDNIL R15
- 0x8840091F, // 00CF GETMBR R16 R4 K31
- 0xB8460200, // 00D0 GETNGBL R17 K1
- 0x8C442321, // 00D1 GETMET R17 R17 K33
- 0x8C4C131B, // 00D2 GETMET R19 R9 K27
- 0x58540022, // 00D3 LDCONST R21 K34
- 0x5858001D, // 00D4 LDCONST R22 K29
- 0x7C4C0600, // 00D5 CALL R19 3
- 0x7C440400, // 00D6 CALL R17 2
- 0x7C340800, // 00D7 CALL R13 4
- 0x8C341520, // 00D8 GETMET R13 R10 K32
- 0x543E0005, // 00D9 LDINT R15 6
- 0x7C340400, // 00DA CALL R13 2
- 0x8C381B0B, // 00DB GETMET R14 R13 K11
- 0x4C400000, // 00DC LDNIL R16
- 0x8844091F, // 00DD GETMBR R17 R4 K31
- 0xB84A0200, // 00DE GETNGBL R18 K1
- 0x8C482521, // 00DF GETMET R18 R18 K33
- 0x8C50131B, // 00E0 GETMET R20 R9 K27
- 0x58580023, // 00E1 LDCONST R22 K35
- 0x585C001D, // 00E2 LDCONST R23 K29
- 0x7C500600, // 00E3 CALL R20 3
- 0x7C480400, // 00E4 CALL R18 2
- 0x7C380800, // 00E5 CALL R14 4
- 0x8C381B0B, // 00E6 GETMET R14 R13 K11
- 0x4C400000, // 00E7 LDNIL R16
- 0x8844091F, // 00E8 GETMBR R17 R4 K31
- 0xB84A0200, // 00E9 GETNGBL R18 K1
- 0x8C482521, // 00EA GETMET R18 R18 K33
- 0x8C50131B, // 00EB GETMET R20 R9 K27
- 0x58580024, // 00EC LDCONST R22 K36
- 0x585C001D, // 00ED LDCONST R23 K29
- 0x7C500600, // 00EE CALL R20 3
- 0x7C480400, // 00EF CALL R18 2
- 0x7C380800, // 00F0 CALL R14 4
- 0x8C38150B, // 00F1 GETMET R14 R10 K11
- 0x54420006, // 00F2 LDINT R16 7
- 0x8844090E, // 00F3 GETMBR R17 R4 K14
- 0x58480009, // 00F4 LDCONST R18 K9
- 0x7C380800, // 00F5 CALL R14 4
- 0x80040E00, // 00F6 RET 1 R7
+ 0x54220003, // 0030 LDINT R8 4
+ 0x1C200E08, // 0031 EQ R8 R7 R8
+ 0x78220004, // 0032 JMPF R8 #0038
+ 0x8C200706, // 0033 GETMET R8 R3 K6
+ 0x88280B10, // 0034 GETMBR R10 R5 K16
+ 0x502C0000, // 0035 LDBOOL R11 0 0
+ 0x7C200600, // 0036 CALL R8 3
+ 0x80041000, // 0037 RET 1 R8
+ 0x7002036E, // 0038 JMP #03A8
+ 0x54220031, // 0039 LDINT R8 50
+ 0x1C200C08, // 003A EQ R8 R6 R8
+ 0x78220000, // 003B JMPF R8 #003D
+ 0x7002036A, // 003C JMP #03A8
+ 0x54220032, // 003D LDINT R8 51
+ 0x1C200C08, // 003E EQ R8 R6 R8
+ 0x782200DC, // 003F JMPF R8 #011D
+ 0x1C200F05, // 0040 EQ R8 R7 K5
+ 0x782200B5, // 0041 JMPF R8 #00F8
+ 0x8C200B11, // 0042 GETMET R8 R5 K17
+ 0x7C200200, // 0043 CALL R8 1
+ 0xB8262400, // 0044 GETNGBL R9 K18
+ 0x8C241313, // 0045 GETMET R9 R9 K19
+ 0x7C240200, // 0046 CALL R9 1
+ 0x94281314, // 0047 GETIDX R10 R9 K20
+ 0x782A0053, // 0048 JMPF R10 #009D
+ 0x8C281115, // 0049 GETMET R10 R8 K21
+ 0x4C300000, // 004A LDNIL R12
+ 0x7C280400, // 004B CALL R10 2
+ 0x8C2C150B, // 004C GETMET R11 R10 K11
+ 0x58340005, // 004D LDCONST R13 K5
+ 0x88380B16, // 004E GETMBR R14 R5 K22
+ 0x583C0017, // 004F LDCONST R15 K23
+ 0x7C2C0800, // 0050 CALL R11 4
+ 0x8C2C150B, // 0051 GETMET R11 R10 K11
+ 0x58340009, // 0052 LDCONST R13 K9
+ 0x88380B10, // 0053 GETMBR R14 R5 K16
+ 0x583C0009, // 0054 LDCONST R15 K9
+ 0x7C2C0800, // 0055 CALL R11 4
+ 0x8C2C150B, // 0056 GETMET R11 R10 K11
+ 0x5834000D, // 0057 LDCONST R13 K13
+ 0x88380B10, // 0058 GETMBR R14 R5 K16
+ 0x583C0009, // 0059 LDCONST R15 K9
+ 0x7C2C0800, // 005A CALL R11 4
+ 0x8C2C150B, // 005B GETMET R11 R10 K11
+ 0x5834000F, // 005C LDCONST R13 K15
+ 0x88380B18, // 005D GETMBR R14 R5 K24
+ 0x4C3C0000, // 005E LDNIL R15
+ 0x7C2C0800, // 005F CALL R11 4
+ 0x602C0015, // 0060 GETGBL R11 G21
+ 0x7C2C0000, // 0061 CALL R11 0
+ 0x8C2C1719, // 0062 GETMET R11 R11 K25
+ 0x8C34091A, // 0063 GETMET R13 R4 K26
+ 0x8C3C131B, // 0064 GETMET R15 R9 K27
+ 0x5844001C, // 0065 LDCONST R17 K28
+ 0x5848001D, // 0066 LDCONST R18 K29
+ 0x7C3C0600, // 0067 CALL R15 3
+ 0x5840001E, // 0068 LDCONST R16 K30
+ 0x5844001D, // 0069 LDCONST R17 K29
+ 0x7C340800, // 006A CALL R13 4
+ 0x7C2C0400, // 006B CALL R11 2
+ 0x8C30150B, // 006C GETMET R12 R10 K11
+ 0x543A0003, // 006D LDINT R14 4
+ 0x883C0B1F, // 006E GETMBR R15 R5 K31
+ 0x5C401600, // 006F MOVE R16 R11
+ 0x7C300800, // 0070 CALL R12 4
+ 0x8C301520, // 0071 GETMET R12 R10 K32
+ 0x543A0004, // 0072 LDINT R14 5
+ 0x7C300400, // 0073 CALL R12 2
+ 0x8C34190B, // 0074 GETMET R13 R12 K11
+ 0x4C3C0000, // 0075 LDNIL R15
+ 0x88400B1F, // 0076 GETMBR R16 R5 K31
+ 0xB8460200, // 0077 GETNGBL R17 K1
+ 0x8C442321, // 0078 GETMET R17 R17 K33
+ 0x8C4C131B, // 0079 GETMET R19 R9 K27
+ 0x58540022, // 007A LDCONST R21 K34
+ 0x5858001D, // 007B LDCONST R22 K29
+ 0x7C4C0600, // 007C CALL R19 3
+ 0x7C440400, // 007D CALL R17 2
+ 0x7C340800, // 007E CALL R13 4
+ 0x8C341520, // 007F GETMET R13 R10 K32
+ 0x543E0005, // 0080 LDINT R15 6
+ 0x7C340400, // 0081 CALL R13 2
+ 0x8C381B0B, // 0082 GETMET R14 R13 K11
+ 0x4C400000, // 0083 LDNIL R16
+ 0x88440B1F, // 0084 GETMBR R17 R5 K31
+ 0xB84A0200, // 0085 GETNGBL R18 K1
+ 0x8C482521, // 0086 GETMET R18 R18 K33
+ 0x8C50131B, // 0087 GETMET R20 R9 K27
+ 0x58580023, // 0088 LDCONST R22 K35
+ 0x585C001D, // 0089 LDCONST R23 K29
+ 0x7C500600, // 008A CALL R20 3
+ 0x7C480400, // 008B CALL R18 2
+ 0x7C380800, // 008C CALL R14 4
+ 0x8C381B0B, // 008D GETMET R14 R13 K11
+ 0x4C400000, // 008E LDNIL R16
+ 0x88440B1F, // 008F GETMBR R17 R5 K31
+ 0xB84A0200, // 0090 GETNGBL R18 K1
+ 0x8C482521, // 0091 GETMET R18 R18 K33
+ 0x8C50131B, // 0092 GETMET R20 R9 K27
+ 0x58580024, // 0093 LDCONST R22 K36
+ 0x585C001D, // 0094 LDCONST R23 K29
+ 0x7C500600, // 0095 CALL R20 3
+ 0x7C480400, // 0096 CALL R18 2
+ 0x7C380800, // 0097 CALL R14 4
+ 0x8C38150B, // 0098 GETMET R14 R10 K11
+ 0x54420006, // 0099 LDINT R16 7
+ 0x88440B0E, // 009A GETMBR R17 R5 K14
+ 0x5848000D, // 009B LDCONST R18 K13
+ 0x7C380800, // 009C CALL R14 4
+ 0xB82A2400, // 009D GETNGBL R10 K18
+ 0x8C281525, // 009E GETMET R10 R10 K37
+ 0x7C280200, // 009F CALL R10 1
+ 0x942C1514, // 00A0 GETIDX R11 R10 K20
+ 0x782E0053, // 00A1 JMPF R11 #00F6
+ 0x8C2C1115, // 00A2 GETMET R11 R8 K21
+ 0x4C340000, // 00A3 LDNIL R13
+ 0x7C2C0400, // 00A4 CALL R11 2
+ 0x8C30170B, // 00A5 GETMET R12 R11 K11
+ 0x58380005, // 00A6 LDCONST R14 K5
+ 0x883C0B16, // 00A7 GETMBR R15 R5 K22
+ 0x58400025, // 00A8 LDCONST R16 K37
+ 0x7C300800, // 00A9 CALL R12 4
+ 0x8C30170B, // 00AA GETMET R12 R11 K11
+ 0x58380009, // 00AB LDCONST R14 K9
+ 0x883C0B10, // 00AC GETMBR R15 R5 K16
+ 0x58400009, // 00AD LDCONST R16 K9
+ 0x7C300800, // 00AE CALL R12 4
+ 0x8C30170B, // 00AF GETMET R12 R11 K11
+ 0x5838000D, // 00B0 LDCONST R14 K13
+ 0x883C0B10, // 00B1 GETMBR R15 R5 K16
+ 0x58400009, // 00B2 LDCONST R16 K9
+ 0x7C300800, // 00B3 CALL R12 4
+ 0x8C30170B, // 00B4 GETMET R12 R11 K11
+ 0x5838000F, // 00B5 LDCONST R14 K15
+ 0x883C0B18, // 00B6 GETMBR R15 R5 K24
+ 0x4C400000, // 00B7 LDNIL R16
+ 0x7C300800, // 00B8 CALL R12 4
+ 0x60300015, // 00B9 GETGBL R12 G21
+ 0x7C300000, // 00BA CALL R12 0
+ 0x8C301919, // 00BB GETMET R12 R12 K25
+ 0x8C38091A, // 00BC GETMET R14 R4 K26
+ 0x8C40151B, // 00BD GETMET R16 R10 K27
+ 0x5848001C, // 00BE LDCONST R18 K28
+ 0x584C001D, // 00BF LDCONST R19 K29
+ 0x7C400600, // 00C0 CALL R16 3
+ 0x5844001E, // 00C1 LDCONST R17 K30
+ 0x5848001D, // 00C2 LDCONST R18 K29
+ 0x7C380800, // 00C3 CALL R14 4
+ 0x7C300400, // 00C4 CALL R12 2
+ 0x8C34170B, // 00C5 GETMET R13 R11 K11
+ 0x543E0003, // 00C6 LDINT R15 4
+ 0x88400B1F, // 00C7 GETMBR R16 R5 K31
+ 0x5C441800, // 00C8 MOVE R17 R12
+ 0x7C340800, // 00C9 CALL R13 4
+ 0x8C341720, // 00CA GETMET R13 R11 K32
+ 0x543E0004, // 00CB LDINT R15 5
+ 0x7C340400, // 00CC CALL R13 2
+ 0x8C381B0B, // 00CD GETMET R14 R13 K11
+ 0x4C400000, // 00CE LDNIL R16
+ 0x88440B1F, // 00CF GETMBR R17 R5 K31
+ 0xB84A0200, // 00D0 GETNGBL R18 K1
+ 0x8C482521, // 00D1 GETMET R18 R18 K33
+ 0x8C50151B, // 00D2 GETMET R20 R10 K27
+ 0x58580022, // 00D3 LDCONST R22 K34
+ 0x585C001D, // 00D4 LDCONST R23 K29
+ 0x7C500600, // 00D5 CALL R20 3
+ 0x7C480400, // 00D6 CALL R18 2
+ 0x7C380800, // 00D7 CALL R14 4
+ 0x8C381720, // 00D8 GETMET R14 R11 K32
+ 0x54420005, // 00D9 LDINT R16 6
+ 0x7C380400, // 00DA CALL R14 2
+ 0x8C3C1D0B, // 00DB GETMET R15 R14 K11
+ 0x4C440000, // 00DC LDNIL R17
+ 0x88480B1F, // 00DD GETMBR R18 R5 K31
+ 0xB84E0200, // 00DE GETNGBL R19 K1
+ 0x8C4C2721, // 00DF GETMET R19 R19 K33
+ 0x8C54151B, // 00E0 GETMET R21 R10 K27
+ 0x585C0023, // 00E1 LDCONST R23 K35
+ 0x5860001D, // 00E2 LDCONST R24 K29
+ 0x7C540600, // 00E3 CALL R21 3
+ 0x7C4C0400, // 00E4 CALL R19 2
+ 0x7C3C0800, // 00E5 CALL R15 4
+ 0x8C3C1D0B, // 00E6 GETMET R15 R14 K11
+ 0x4C440000, // 00E7 LDNIL R17
+ 0x88480B1F, // 00E8 GETMBR R18 R5 K31
+ 0xB84E0200, // 00E9 GETNGBL R19 K1
+ 0x8C4C2721, // 00EA GETMET R19 R19 K33
+ 0x8C54151B, // 00EB GETMET R21 R10 K27
+ 0x585C0024, // 00EC LDCONST R23 K36
+ 0x5860001D, // 00ED LDCONST R24 K29
+ 0x7C540600, // 00EE CALL R21 3
+ 0x7C4C0400, // 00EF CALL R19 2
+ 0x7C3C0800, // 00F0 CALL R15 4
+ 0x8C3C170B, // 00F1 GETMET R15 R11 K11
+ 0x54460006, // 00F2 LDINT R17 7
+ 0x88480B0E, // 00F3 GETMBR R18 R5 K14
+ 0x584C0009, // 00F4 LDCONST R19 K9
+ 0x7C3C0800, // 00F5 CALL R15 4
+ 0x80041000, // 00F6 RET 1 R8
0x70020023, // 00F7 JMP #011C
- 0x1C1C0D09, // 00F8 EQ R7 R6 K9
- 0x781E000B, // 00F9 JMPF R7 #0106
- 0x8C1C0906, // 00FA GETMET R7 R4 K6
- 0x8824090C, // 00FB GETMBR R9 R4 K12
- 0xB82A2400, // 00FC GETNGBL R10 K18
- 0x8C281526, // 00FD GETMET R10 R10 K38
- 0x58300027, // 00FE LDCONST R12 K39
- 0x50340200, // 00FF LDBOOL R13 1 0
- 0x7C280600, // 0100 CALL R10 3
- 0x94281528, // 0101 GETIDX R10 R10 K40
- 0x94281529, // 0102 GETIDX R10 R10 K41
- 0x7C1C0600, // 0103 CALL R7 3
- 0x80040E00, // 0104 RET 1 R7
+ 0x1C200F09, // 00F8 EQ R8 R7 K9
+ 0x7822000B, // 00F9 JMPF R8 #0106
+ 0x8C200706, // 00FA GETMET R8 R3 K6
+ 0x88280B0C, // 00FB GETMBR R10 R5 K12
+ 0xB82E2400, // 00FC GETNGBL R11 K18
+ 0x8C2C1726, // 00FD GETMET R11 R11 K38
+ 0x58340027, // 00FE LDCONST R13 K39
+ 0x50380200, // 00FF LDBOOL R14 1 0
+ 0x7C2C0600, // 0100 CALL R11 3
+ 0x942C1728, // 0101 GETIDX R11 R11 K40
+ 0x942C1729, // 0102 GETIDX R11 R11 K41
+ 0x7C200600, // 0103 CALL R8 3
+ 0x80041000, // 0104 RET 1 R8
0x70020015, // 0105 JMP #011C
- 0x1C1C0D0D, // 0106 EQ R7 R6 K13
- 0x781E000B, // 0107 JMPF R7 #0114
- 0x8C1C0906, // 0108 GETMET R7 R4 K6
- 0x8824092A, // 0109 GETMBR R9 R4 K42
- 0xB82A2400, // 010A GETNGBL R10 K18
- 0x8C281526, // 010B GETMET R10 R10 K38
- 0x5830002B, // 010C LDCONST R12 K43
- 0x50340200, // 010D LDBOOL R13 1 0
- 0x7C280600, // 010E CALL R10 3
- 0x9428152C, // 010F GETIDX R10 R10 K44
- 0x9428152D, // 0110 GETIDX R10 R10 K45
- 0x7C1C0600, // 0111 CALL R7 3
- 0x80040E00, // 0112 RET 1 R7
+ 0x1C200F0D, // 0106 EQ R8 R7 K13
+ 0x7822000B, // 0107 JMPF R8 #0114
+ 0x8C200706, // 0108 GETMET R8 R3 K6
+ 0x88280B2A, // 0109 GETMBR R10 R5 K42
+ 0xB82E2400, // 010A GETNGBL R11 K18
+ 0x8C2C1726, // 010B GETMET R11 R11 K38
+ 0x5834002B, // 010C LDCONST R13 K43
+ 0x50380200, // 010D LDBOOL R14 1 0
+ 0x7C2C0600, // 010E CALL R11 3
+ 0x942C172C, // 010F GETIDX R11 R11 K44
+ 0x942C172D, // 0110 GETIDX R11 R11 K45
+ 0x7C200600, // 0111 CALL R8 3
+ 0x80041000, // 0112 RET 1 R8
0x70020007, // 0113 JMP #011C
- 0x541E0007, // 0114 LDINT R7 8
- 0x1C1C0C07, // 0115 EQ R7 R6 R7
- 0x781E0004, // 0116 JMPF R7 #011C
- 0x8C1C0906, // 0117 GETMET R7 R4 K6
- 0x88240910, // 0118 GETMBR R9 R4 K16
- 0x50280000, // 0119 LDBOOL R10 0 0
- 0x7C1C0600, // 011A CALL R7 3
- 0x80040E00, // 011B RET 1 R7
- 0x70020262, // 011C JMP #0380
- 0x541E0033, // 011D LDINT R7 52
- 0x1C1C0A07, // 011E EQ R7 R5 R7
- 0x781E0000, // 011F JMPF R7 #0121
- 0x7002025E, // 0120 JMP #0380
- 0x541E0037, // 0121 LDINT R7 56
- 0x1C1C0A07, // 0122 EQ R7 R5 R7
- 0x781E002C, // 0123 JMPF R7 #0151
- 0x1C1C0D05, // 0124 EQ R7 R6 K5
- 0x781E000F, // 0125 JMPF R7 #0136
- 0xB81E5C00, // 0126 GETNGBL R7 K46
- 0xB8222400, // 0127 GETNGBL R8 K18
- 0x8C20112F, // 0128 GETMET R8 R8 K47
- 0x7C200200, // 0129 CALL R8 1
- 0x94201130, // 012A GETIDX R8 R8 K48
- 0x7C1C0200, // 012B CALL R7 1
- 0xB8225C00, // 012C GETNGBL R8 K46
- 0x58240031, // 012D LDCONST R9 K49
- 0x7C200200, // 012E CALL R8 1
- 0x081C0E08, // 012F MUL R7 R7 R8
- 0x8C200906, // 0130 GETMET R8 R4 K6
- 0x88280907, // 0131 GETMBR R10 R4 K7
- 0x5C2C0E00, // 0132 MOVE R11 R7
- 0x7C200600, // 0133 CALL R8 3
- 0x80041000, // 0134 RET 1 R8
- 0x70020019, // 0135 JMP #0150
- 0x1C1C0D09, // 0136 EQ R7 R6 K9
- 0x781E0005, // 0137 JMPF R7 #013E
- 0x8C1C0906, // 0138 GETMET R7 R4 K6
- 0x8824090E, // 0139 GETMBR R9 R4 K14
- 0x5828000F, // 013A LDCONST R10 K15
- 0x7C1C0600, // 013B CALL R7 3
- 0x80040E00, // 013C RET 1 R7
- 0x70020011, // 013D JMP #0150
- 0x541E0006, // 013E LDINT R7 7
- 0x1C1C0C07, // 013F EQ R7 R6 R7
- 0x781E000E, // 0140 JMPF R7 #0150
- 0xB81E5C00, // 0141 GETNGBL R7 K46
- 0xB8222400, // 0142 GETNGBL R8 K18
- 0x8C20112F, // 0143 GETMET R8 R8 K47
- 0x7C200200, // 0144 CALL R8 1
- 0x94201132, // 0145 GETIDX R8 R8 K50
- 0x7C1C0200, // 0146 CALL R7 1
- 0xB8225C00, // 0147 GETNGBL R8 K46
- 0x58240031, // 0148 LDCONST R9 K49
- 0x7C200200, // 0149 CALL R8 1
- 0x081C0E08, // 014A MUL R7 R7 R8
- 0x8C200906, // 014B GETMET R8 R4 K6
- 0x88280907, // 014C GETMBR R10 R4 K7
- 0x5C2C0E00, // 014D MOVE R11 R7
- 0x7C200600, // 014E CALL R8 3
- 0x80041000, // 014F RET 1 R8
- 0x7002022E, // 0150 JMP #0380
- 0x541E003D, // 0151 LDINT R7 62
- 0x1C1C0A07, // 0152 EQ R7 R5 R7
- 0x781E0090, // 0153 JMPF R7 #01E5
- 0x1C1C0D05, // 0154 EQ R7 R6 K5
- 0x781E0025, // 0155 JMPF R7 #017C
- 0x8C1C0911, // 0156 GETMET R7 R4 K17
- 0x7C1C0200, // 0157 CALL R7 1
- 0x60200010, // 0158 GETGBL R8 G16
- 0x88240133, // 0159 GETMBR R9 R0 K51
- 0x88241334, // 015A GETMBR R9 R9 K52
- 0x8C241335, // 015B GETMET R9 R9 K53
- 0x7C240200, // 015C CALL R9 1
- 0x7C200200, // 015D CALL R8 1
- 0xA8020017, // 015E EXBLK 0 #0177
- 0x5C241000, // 015F MOVE R9 R8
- 0x7C240000, // 0160 CALL R9 0
- 0x8C280F15, // 0161 GETMET R10 R7 K21
- 0x4C300000, // 0162 LDNIL R12
- 0x7C280400, // 0163 CALL R10 2
- 0x8C2C150B, // 0164 GETMET R11 R10 K11
- 0x58340009, // 0165 LDCONST R13 K9
- 0x88380936, // 0166 GETMBR R14 R4 K54
- 0x8C3C1337, // 0167 GETMET R15 R9 K55
- 0x7C3C0200, // 0168 CALL R15 1
- 0x7C2C0800, // 0169 CALL R11 4
- 0x8C2C150B, // 016A GETMET R11 R10 K11
- 0x5834000D, // 016B LDCONST R13 K13
- 0x88380936, // 016C GETMBR R14 R4 K54
- 0x8C3C1338, // 016D GETMET R15 R9 K56
- 0x7C3C0200, // 016E CALL R15 1
- 0x7C2C0800, // 016F CALL R11 4
- 0x8C2C150B, // 0170 GETMET R11 R10 K11
- 0x543600FD, // 0171 LDINT R13 254
- 0x8838090C, // 0172 GETMBR R14 R4 K12
- 0x8C3C1339, // 0173 GETMET R15 R9 K57
- 0x7C3C0200, // 0174 CALL R15 1
- 0x7C2C0800, // 0175 CALL R11 4
- 0x7001FFE7, // 0176 JMP #015F
- 0x5820003A, // 0177 LDCONST R8 K58
- 0xAC200200, // 0178 CATCH R8 1 0
- 0xB0080000, // 0179 RAISE 2 R0 R0
- 0x80040E00, // 017A RET 1 R7
- 0x70020067, // 017B JMP #01E4
- 0x1C1C0D09, // 017C EQ R7 R6 K9
- 0x781E003C, // 017D JMPF R7 #01BB
- 0x8C1C0911, // 017E GETMET R7 R4 K17
- 0x7C1C0200, // 017F CALL R7 1
- 0x60200010, // 0180 GETGBL R8 G16
- 0x88240133, // 0181 GETMBR R9 R0 K51
- 0x88241334, // 0182 GETMBR R9 R9 K52
- 0x8C241335, // 0183 GETMET R9 R9 K53
- 0x7C240200, // 0184 CALL R9 1
- 0x7C200200, // 0185 CALL R8 1
- 0xA802002E, // 0186 EXBLK 0 #01B6
- 0x5C241000, // 0187 MOVE R9 R8
- 0x7C240000, // 0188 CALL R9 0
- 0x8C28093B, // 0189 GETMET R10 R4 K59
- 0x8C30133C, // 018A GETMET R12 R9 K60
- 0x7C300200, // 018B CALL R12 1
- 0x7C280400, // 018C CALL R10 2
- 0x8C2C0F15, // 018D GETMET R11 R7 K21
- 0x4C340000, // 018E LDNIL R13
- 0x7C2C0400, // 018F CALL R11 2
- 0x8C30170B, // 0190 GETMET R12 R11 K11
- 0x58380009, // 0191 LDCONST R14 K9
- 0x883C0936, // 0192 GETMBR R15 R4 K54
- 0x8C40153D, // 0193 GETMET R16 R10 K61
- 0x544A0008, // 0194 LDINT R18 9
- 0x7C400400, // 0195 CALL R16 2
- 0x7C300800, // 0196 CALL R12 4
- 0x8C30170B, // 0197 GETMET R12 R11 K11
- 0x5838000D, // 0198 LDCONST R14 K13
- 0x883C090C, // 0199 GETMBR R15 R4 K12
- 0x8C40133E, // 019A GETMET R16 R9 K62
- 0x7C400200, // 019B CALL R16 1
- 0x7C300800, // 019C CALL R12 4
- 0x8C30170B, // 019D GETMET R12 R11 K11
- 0x5838000F, // 019E LDCONST R14 K15
- 0x883C0907, // 019F GETMBR R15 R4 K7
- 0x8C40133F, // 01A0 GETMET R16 R9 K63
- 0x7C400200, // 01A1 CALL R16 1
- 0x7C300800, // 01A2 CALL R12 4
- 0x8C30170B, // 01A3 GETMET R12 R11 K11
- 0x543A0003, // 01A4 LDINT R14 4
- 0x883C0907, // 01A5 GETMBR R15 R4 K7
- 0x8C401340, // 01A6 GETMET R16 R9 K64
- 0x7C400200, // 01A7 CALL R16 1
- 0x7C300800, // 01A8 CALL R12 4
- 0x8C30170B, // 01A9 GETMET R12 R11 K11
- 0x543A0004, // 01AA LDINT R14 5
- 0x883C0916, // 01AB GETMBR R15 R4 K22
- 0x8C401341, // 01AC GETMET R16 R9 K65
- 0x7C400200, // 01AD CALL R16 1
- 0x7C300800, // 01AE CALL R12 4
- 0x8C30170B, // 01AF GETMET R12 R11 K11
- 0x543A00FD, // 01B0 LDINT R14 254
- 0x883C090C, // 01B1 GETMBR R15 R4 K12
- 0x8C401339, // 01B2 GETMET R16 R9 K57
- 0x7C400200, // 01B3 CALL R16 1
- 0x7C300800, // 01B4 CALL R12 4
- 0x7001FFD0, // 01B5 JMP #0187
- 0x5820003A, // 01B6 LDCONST R8 K58
- 0xAC200200, // 01B7 CATCH R8 1 0
- 0xB0080000, // 01B8 RAISE 2 R0 R0
- 0x80040E00, // 01B9 RET 1 R7
- 0x70020028, // 01BA JMP #01E4
- 0x1C1C0D0D, // 01BB EQ R7 R6 K13
- 0x781E0007, // 01BC JMPF R7 #01C5
- 0x8C1C0906, // 01BD GETMET R7 R4 K6
- 0x8824090E, // 01BE GETMBR R9 R4 K14
- 0xB82A0200, // 01BF GETNGBL R10 K1
- 0x88281542, // 01C0 GETMBR R10 R10 K66
- 0x88281543, // 01C1 GETMBR R10 R10 K67
- 0x7C1C0600, // 01C2 CALL R7 3
- 0x80040E00, // 01C3 RET 1 R7
- 0x7002001E, // 01C4 JMP #01E4
- 0x1C1C0D0F, // 01C5 EQ R7 R6 K15
- 0x781E0009, // 01C6 JMPF R7 #01D1
- 0x881C0133, // 01C7 GETMBR R7 R0 K51
- 0x881C0F34, // 01C8 GETMBR R7 R7 K52
- 0x8C1C0F44, // 01C9 GETMET R7 R7 K68
- 0x7C1C0200, // 01CA CALL R7 1
- 0x8C200906, // 01CB GETMET R8 R4 K6
- 0x8828090E, // 01CC GETMBR R10 R4 K14
- 0x5C2C0E00, // 01CD MOVE R11 R7
- 0x7C200600, // 01CE CALL R8 3
- 0x80041000, // 01CF RET 1 R8
- 0x70020012, // 01D0 JMP #01E4
- 0x541E0003, // 01D1 LDINT R7 4
- 0x1C1C0C07, // 01D2 EQ R7 R6 R7
- 0x781E0000, // 01D3 JMPF R7 #01D5
- 0x7002000E, // 01D4 JMP #01E4
- 0x541E0004, // 01D5 LDINT R7 5
- 0x1C1C0C07, // 01D6 EQ R7 R6 R7
- 0x781E000B, // 01D7 JMPF R7 #01E4
- 0x881C0345, // 01D8 GETMBR R7 R1 K69
- 0x8C1C0F39, // 01D9 GETMET R7 R7 K57
- 0x7C1C0200, // 01DA CALL R7 1
- 0x4C200000, // 01DB LDNIL R8
- 0x1C200E08, // 01DC EQ R8 R7 R8
- 0x78220000, // 01DD JMPF R8 #01DF
- 0x581C0005, // 01DE LDCONST R7 K5
- 0x8C200906, // 01DF GETMET R8 R4 K6
- 0x8828090E, // 01E0 GETMBR R10 R4 K14
- 0x5C2C0E00, // 01E1 MOVE R11 R7
- 0x7C200600, // 01E2 CALL R8 3
- 0x80041000, // 01E3 RET 1 R8
- 0x7002019A, // 01E4 JMP #0380
- 0x541E003B, // 01E5 LDINT R7 60
- 0x1C1C0A07, // 01E6 EQ R7 R5 R7
- 0x781E003C, // 01E7 JMPF R7 #0225
- 0x1C1C0D05, // 01E8 EQ R7 R6 K5
- 0x781E0012, // 01E9 JMPF R7 #01FD
- 0x881C0133, // 01EA GETMBR R7 R0 K51
- 0x8C1C0F46, // 01EB GETMET R7 R7 K70
- 0x7C1C0200, // 01EC CALL R7 1
- 0x88200133, // 01ED GETMBR R8 R0 K51
- 0x8C201147, // 01EE GETMET R8 R8 K71
- 0x7C200200, // 01EF CALL R8 1
- 0x781E0004, // 01F0 JMPF R7 #01F6
- 0x78220001, // 01F1 JMPF R8 #01F4
- 0x5824000D, // 01F2 LDCONST R9 K13
- 0x70020000, // 01F3 JMP #01F5
- 0x58240009, // 01F4 LDCONST R9 K9
- 0x70020000, // 01F5 JMP #01F7
- 0x58240005, // 01F6 LDCONST R9 K5
- 0x8C280906, // 01F7 GETMET R10 R4 K6
- 0x8830090E, // 01F8 GETMBR R12 R4 K14
- 0x5C341200, // 01F9 MOVE R13 R9
- 0x7C280600, // 01FA CALL R10 3
- 0x80041400, // 01FB RET 1 R10
- 0x70020026, // 01FC JMP #0224
- 0x1C1C0D09, // 01FD EQ R7 R6 K9
- 0x781E0011, // 01FE JMPF R7 #0211
- 0x881C0133, // 01FF GETMBR R7 R0 K51
- 0x881C0F48, // 0200 GETMBR R7 R7 K72
- 0x4C200000, // 0201 LDNIL R8
- 0x20200E08, // 0202 NE R8 R7 R8
- 0x78220006, // 0203 JMPF R8 #020B
- 0x8C200906, // 0204 GETMET R8 R4 K6
- 0x8828090C, // 0205 GETMBR R10 R4 K12
- 0x8C2C0F39, // 0206 GETMET R11 R7 K57
- 0x7C2C0200, // 0207 CALL R11 1
- 0x7C200600, // 0208 CALL R8 3
- 0x80041000, // 0209 RET 1 R8
- 0x70020004, // 020A JMP #0210
- 0x8C200906, // 020B GETMET R8 R4 K6
- 0x88280918, // 020C GETMBR R10 R4 K24
- 0x4C2C0000, // 020D LDNIL R11
- 0x7C200600, // 020E CALL R8 3
- 0x80041000, // 020F RET 1 R8
- 0x70020012, // 0210 JMP #0224
- 0x1C1C0D0D, // 0211 EQ R7 R6 K13
- 0x781E0010, // 0212 JMPF R7 #0224
- 0x881C0133, // 0213 GETMBR R7 R0 K51
- 0x881C0F48, // 0214 GETMBR R7 R7 K72
- 0x4C200000, // 0215 LDNIL R8
- 0x20200E08, // 0216 NE R8 R7 R8
- 0x78220006, // 0217 JMPF R8 #021F
- 0x8C200906, // 0218 GETMET R8 R4 K6
- 0x8828090C, // 0219 GETMBR R10 R4 K12
- 0x8C2C0F3E, // 021A GETMET R11 R7 K62
- 0x7C2C0200, // 021B CALL R11 1
- 0x7C200600, // 021C CALL R8 3
- 0x80041000, // 021D RET 1 R8
- 0x70020004, // 021E JMP #0224
- 0x8C200906, // 021F GETMET R8 R4 K6
- 0x88280918, // 0220 GETMBR R10 R4 K24
- 0x4C2C0000, // 0221 LDNIL R11
- 0x7C200600, // 0222 CALL R8 3
- 0x80041000, // 0223 RET 1 R8
- 0x7002015A, // 0224 JMP #0380
- 0x541E0027, // 0225 LDINT R7 40
- 0x1C1C0A07, // 0226 EQ R7 R5 R7
- 0x781E00B7, // 0227 JMPF R7 #02E0
- 0x1C1C0D05, // 0228 EQ R7 R6 K5
- 0x781E0005, // 0229 JMPF R7 #0230
- 0x8C1C0906, // 022A GETMET R7 R4 K6
- 0x8824090C, // 022B GETMBR R9 R4 K12
- 0x58280009, // 022C LDCONST R10 K9
- 0x7C1C0600, // 022D CALL R7 3
- 0x80040E00, // 022E RET 1 R7
- 0x700200AE, // 022F JMP #02DF
- 0x1C1C0D09, // 0230 EQ R7 R6 K9
- 0x781E0005, // 0231 JMPF R7 #0238
- 0x8C1C0906, // 0232 GETMET R7 R4 K6
- 0x88240916, // 0233 GETMBR R9 R4 K22
- 0x58280049, // 0234 LDCONST R10 K73
- 0x7C1C0600, // 0235 CALL R7 3
- 0x80040E00, // 0236 RET 1 R7
- 0x700200A6, // 0237 JMP #02DF
- 0x1C1C0D0D, // 0238 EQ R7 R6 K13
- 0x781E0006, // 0239 JMPF R7 #0241
- 0x8C1C0906, // 023A GETMET R7 R4 K6
- 0x8824090C, // 023B GETMBR R9 R4 K12
- 0x88280133, // 023C GETMBR R10 R0 K51
- 0x8828154A, // 023D GETMBR R10 R10 K74
- 0x7C1C0600, // 023E CALL R7 3
- 0x80040E00, // 023F RET 1 R7
- 0x7002009D, // 0240 JMP #02DF
- 0x1C1C0D0F, // 0241 EQ R7 R6 K15
- 0x781E000A, // 0242 JMPF R7 #024E
- 0x8C1C0906, // 0243 GETMET R7 R4 K6
- 0x88240916, // 0244 GETMBR R9 R4 K22
- 0xB82A2400, // 0245 GETNGBL R10 K18
- 0x8C281526, // 0246 GETMET R10 R10 K38
- 0x5830004B, // 0247 LDCONST R12 K75
- 0x50340200, // 0248 LDBOOL R13 1 0
- 0x7C280600, // 0249 CALL R10 3
- 0x9428154B, // 024A GETIDX R10 R10 K75
- 0x7C1C0600, // 024B CALL R7 3
- 0x80040E00, // 024C RET 1 R7
- 0x70020090, // 024D JMP #02DF
- 0x541E0003, // 024E LDINT R7 4
- 0x1C1C0C07, // 024F EQ R7 R6 R7
- 0x781E0005, // 0250 JMPF R7 #0257
- 0x8C1C0906, // 0251 GETMET R7 R4 K6
- 0x8824090C, // 0252 GETMBR R9 R4 K12
- 0x542A7FFF, // 0253 LDINT R10 32768
- 0x7C1C0600, // 0254 CALL R7 3
- 0x80040E00, // 0255 RET 1 R7
- 0x70020087, // 0256 JMP #02DF
- 0x541E0004, // 0257 LDINT R7 5
- 0x1C1C0C07, // 0258 EQ R7 R6 R7
- 0x781E000A, // 0259 JMPF R7 #0265
- 0x8C1C0906, // 025A GETMET R7 R4 K6
- 0x88240916, // 025B GETMBR R9 R4 K22
- 0xB82A2400, // 025C GETNGBL R10 K18
- 0x8C281526, // 025D GETMET R10 R10 K38
- 0x5830004C, // 025E LDCONST R12 K76
- 0x50340200, // 025F LDBOOL R13 1 0
- 0x7C280600, // 0260 CALL R10 3
- 0x9428154D, // 0261 GETIDX R10 R10 K77
- 0x7C1C0600, // 0262 CALL R7 3
- 0x80040E00, // 0263 RET 1 R7
- 0x70020079, // 0264 JMP #02DF
- 0x541E0005, // 0265 LDINT R7 6
- 0x1C1C0C07, // 0266 EQ R7 R6 R7
- 0x781E0005, // 0267 JMPF R7 #026E
- 0x8C1C0906, // 0268 GETMET R7 R4 K6
- 0x88240916, // 0269 GETMBR R9 R4 K22
- 0x5828004E, // 026A LDCONST R10 K78
- 0x7C1C0600, // 026B CALL R7 3
- 0x80040E00, // 026C RET 1 R7
- 0x70020070, // 026D JMP #02DF
- 0x541E0006, // 026E LDINT R7 7
- 0x1C1C0C07, // 026F EQ R7 R6 R7
- 0x781E0005, // 0270 JMPF R7 #0277
- 0x8C1C0906, // 0271 GETMET R7 R4 K6
- 0x8824090C, // 0272 GETMBR R9 R4 K12
- 0x58280005, // 0273 LDCONST R10 K5
- 0x7C1C0600, // 0274 CALL R7 3
- 0x80040E00, // 0275 RET 1 R7
- 0x70020067, // 0276 JMP #02DF
- 0x541E0007, // 0277 LDINT R7 8
- 0x1C1C0C07, // 0278 EQ R7 R6 R7
- 0x781E000B, // 0279 JMPF R7 #0286
- 0x8C1C0906, // 027A GETMET R7 R4 K6
- 0x88240916, // 027B GETMBR R9 R4 K22
- 0xB82A2400, // 027C GETNGBL R10 K18
- 0x8C281526, // 027D GETMET R10 R10 K38
- 0x5830004F, // 027E LDCONST R12 K79
- 0x50340200, // 027F LDBOOL R13 1 0
- 0x7C280600, // 0280 CALL R10 3
- 0x94281550, // 0281 GETIDX R10 R10 K80
- 0x94281551, // 0282 GETIDX R10 R10 K81
- 0x7C1C0600, // 0283 CALL R7 3
- 0x80040E00, // 0284 RET 1 R7
- 0x70020058, // 0285 JMP #02DF
- 0x541E0008, // 0286 LDINT R7 9
- 0x1C1C0C07, // 0287 EQ R7 R6 R7
- 0x781E0005, // 0288 JMPF R7 #028F
- 0x8C1C0906, // 0289 GETMET R7 R4 K6
- 0x8824090C, // 028A GETMBR R9 R4 K12
- 0x58280009, // 028B LDCONST R10 K9
- 0x7C1C0600, // 028C CALL R7 3
- 0x80040E00, // 028D RET 1 R7
- 0x7002004F, // 028E JMP #02DF
- 0x541E0009, // 028F LDINT R7 10
- 0x1C1C0C07, // 0290 EQ R7 R6 R7
- 0x781E0015, // 0291 JMPF R7 #02A8
- 0xB81E2400, // 0292 GETNGBL R7 K18
- 0x8C1C0F26, // 0293 GETMET R7 R7 K38
- 0x5824004F, // 0294 LDCONST R9 K79
- 0x50280200, // 0295 LDBOOL R10 1 0
- 0x7C1C0600, // 0296 CALL R7 3
- 0x941C0F50, // 0297 GETIDX R7 R7 K80
- 0x941C0F52, // 0298 GETIDX R7 R7 K82
- 0x8C20071B, // 0299 GETMET R8 R3 K27
- 0x5C280E00, // 029A MOVE R10 R7
- 0x582C0053, // 029B LDCONST R11 K83
- 0x7C200600, // 029C CALL R8 3
- 0x24241105, // 029D GT R9 R8 K5
- 0x78260002, // 029E JMPF R9 #02A2
- 0x04241109, // 029F SUB R9 R8 K9
- 0x40260A09, // 02A0 CONNECT R9 K5 R9
- 0x941C0E09, // 02A1 GETIDX R7 R7 R9
- 0x8C240906, // 02A2 GETMET R9 R4 K6
- 0x882C0916, // 02A3 GETMBR R11 R4 K22
- 0x5C300E00, // 02A4 MOVE R12 R7
- 0x7C240600, // 02A5 CALL R9 3
- 0x80041200, // 02A6 RET 1 R9
- 0x70020036, // 02A7 JMP #02DF
- 0x541E000E, // 02A8 LDINT R7 15
- 0x1C1C0C07, // 02A9 EQ R7 R6 R7
- 0x781E000B, // 02AA JMPF R7 #02B7
- 0x8C1C0906, // 02AB GETMET R7 R4 K6
- 0x88240916, // 02AC GETMBR R9 R4 K22
- 0xB82A2400, // 02AD GETNGBL R10 K18
- 0x8C281525, // 02AE GETMET R10 R10 K37
- 0x7C280200, // 02AF CALL R10 1
- 0x8C28151B, // 02B0 GETMET R10 R10 K27
- 0x5830001C, // 02B1 LDCONST R12 K28
- 0x5834001D, // 02B2 LDCONST R13 K29
- 0x7C280600, // 02B3 CALL R10 3
- 0x7C1C0600, // 02B4 CALL R7 3
- 0x80040E00, // 02B5 RET 1 R7
- 0x70020027, // 02B6 JMP #02DF
- 0x541E0010, // 02B7 LDINT R7 17
- 0x1C1C0C07, // 02B8 EQ R7 R6 R7
- 0x781E0005, // 02B9 JMPF R7 #02C0
- 0x8C1C0906, // 02BA GETMET R7 R4 K6
- 0x88240910, // 02BB GETMBR R9 R4 K16
- 0x58280009, // 02BC LDCONST R10 K9
- 0x7C1C0600, // 02BD CALL R7 3
- 0x80040E00, // 02BE RET 1 R7
- 0x7002001E, // 02BF JMP #02DF
- 0x541E0011, // 02C0 LDINT R7 18
- 0x1C1C0C07, // 02C1 EQ R7 R6 R7
- 0x781E000B, // 02C2 JMPF R7 #02CF
- 0x8C1C0906, // 02C3 GETMET R7 R4 K6
- 0x88240916, // 02C4 GETMBR R9 R4 K22
- 0xB82A2400, // 02C5 GETNGBL R10 K18
- 0x8C281525, // 02C6 GETMET R10 R10 K37
- 0x7C280200, // 02C7 CALL R10 1
- 0x8C28151B, // 02C8 GETMET R10 R10 K27
- 0x5830001C, // 02C9 LDCONST R12 K28
- 0x5834001D, // 02CA LDCONST R13 K29
- 0x7C280600, // 02CB CALL R10 3
- 0x7C1C0600, // 02CC CALL R7 3
- 0x80040E00, // 02CD RET 1 R7
- 0x7002000F, // 02CE JMP #02DF
- 0x541E0012, // 02CF LDINT R7 19
- 0x1C1C0C07, // 02D0 EQ R7 R6 R7
- 0x781E000C, // 02D1 JMPF R7 #02DF
- 0x8C1C090A, // 02D2 GETMET R7 R4 K10
- 0x7C1C0200, // 02D3 CALL R7 1
- 0x8C200F0B, // 02D4 GETMET R8 R7 K11
- 0x58280005, // 02D5 LDCONST R10 K5
- 0x882C090C, // 02D6 GETMBR R11 R4 K12
- 0x5830000F, // 02D7 LDCONST R12 K15
- 0x7C200800, // 02D8 CALL R8 4
- 0x8C200F0B, // 02D9 GETMET R8 R7 K11
- 0x58280009, // 02DA LDCONST R10 K9
- 0x882C090C, // 02DB GETMBR R11 R4 K12
- 0x5830000F, // 02DC LDCONST R12 K15
- 0x7C200800, // 02DD CALL R8 4
- 0x80040E00, // 02DE RET 1 R7
- 0x7002009F, // 02DF JMP #0380
- 0x541E003E, // 02E0 LDINT R7 63
- 0x1C1C0A07, // 02E1 EQ R7 R5 R7
- 0x781E0000, // 02E2 JMPF R7 #02E4
- 0x7002009B, // 02E3 JMP #0380
- 0x541E0029, // 02E4 LDINT R7 42
- 0x1C1C0A07, // 02E5 EQ R7 R5 R7
- 0x781E001D, // 02E6 JMPF R7 #0305
- 0x1C1C0D05, // 02E7 EQ R7 R6 K5
- 0x781E0003, // 02E8 JMPF R7 #02ED
- 0x8C1C0911, // 02E9 GETMET R7 R4 K17
- 0x7C1C0200, // 02EA CALL R7 1
- 0x80040E00, // 02EB RET 1 R7
- 0x70020016, // 02EC JMP #0304
- 0x1C1C0D09, // 02ED EQ R7 R6 K9
- 0x781E0005, // 02EE JMPF R7 #02F5
- 0x8C1C0906, // 02EF GETMET R7 R4 K6
- 0x88240910, // 02F0 GETMBR R9 R4 K16
- 0x58280005, // 02F1 LDCONST R10 K5
- 0x7C1C0600, // 02F2 CALL R7 3
- 0x80040E00, // 02F3 RET 1 R7
- 0x7002000E, // 02F4 JMP #0304
- 0x1C1C0D0D, // 02F5 EQ R7 R6 K13
- 0x781E0005, // 02F6 JMPF R7 #02FD
- 0x8C1C0906, // 02F7 GETMET R7 R4 K6
- 0x8824090E, // 02F8 GETMBR R9 R4 K14
- 0x58280009, // 02F9 LDCONST R10 K9
- 0x7C1C0600, // 02FA CALL R7 3
- 0x80040E00, // 02FB RET 1 R7
- 0x70020006, // 02FC JMP #0304
- 0x1C1C0D0F, // 02FD EQ R7 R6 K15
- 0x781E0004, // 02FE JMPF R7 #0304
- 0x8C1C0906, // 02FF GETMET R7 R4 K6
- 0x88240918, // 0300 GETMBR R9 R4 K24
- 0x4C280000, // 0301 LDNIL R10
- 0x7C1C0600, // 0302 CALL R7 3
- 0x80040E00, // 0303 RET 1 R7
- 0x7002007A, // 0304 JMP #0380
- 0x541E002A, // 0305 LDINT R7 43
- 0x1C1C0A07, // 0306 EQ R7 R5 R7
- 0x781E0016, // 0307 JMPF R7 #031F
- 0x1C1C0D05, // 0308 EQ R7 R6 K5
- 0x781E0007, // 0309 JMPF R7 #0312
- 0x8C1C0906, // 030A GETMET R7 R4 K6
- 0x88240916, // 030B GETMBR R9 R4 K22
- 0xB82A2400, // 030C GETNGBL R10 K18
- 0x8C281554, // 030D GETMET R10 R10 K84
- 0x7C280200, // 030E CALL R10 1
- 0x7C1C0600, // 030F CALL R7 3
- 0x80040E00, // 0310 RET 1 R7
- 0x7002000B, // 0311 JMP #031E
- 0x1C1C0D09, // 0312 EQ R7 R6 K9
- 0x781E0009, // 0313 JMPF R7 #031E
- 0x8C1C0911, // 0314 GETMET R7 R4 K17
- 0x7C1C0200, // 0315 CALL R7 1
- 0x8C200F0B, // 0316 GETMET R8 R7 K11
- 0x4C280000, // 0317 LDNIL R10
- 0x882C0916, // 0318 GETMBR R11 R4 K22
- 0xB8322400, // 0319 GETNGBL R12 K18
- 0x8C301954, // 031A GETMET R12 R12 K84
- 0x7C300200, // 031B CALL R12 1
- 0x7C200800, // 031C CALL R8 4
- 0x80040E00, // 031D RET 1 R7
- 0x70020060, // 031E JMP #0380
- 0x541E002B, // 031F LDINT R7 44
- 0x1C1C0A07, // 0320 EQ R7 R5 R7
- 0x781E001C, // 0321 JMPF R7 #033F
- 0x1C1C0D05, // 0322 EQ R7 R6 K5
- 0x781E0005, // 0323 JMPF R7 #032A
- 0x8C1C0906, // 0324 GETMET R7 R4 K6
- 0x8824090E, // 0325 GETMBR R9 R4 K14
- 0x58280009, // 0326 LDCONST R10 K9
- 0x7C1C0600, // 0327 CALL R7 3
- 0x80040E00, // 0328 RET 1 R7
- 0x70020013, // 0329 JMP #033E
- 0x1C1C0D09, // 032A EQ R7 R6 K9
- 0x781E0005, // 032B JMPF R7 #0332
- 0x8C1C0906, // 032C GETMET R7 R4 K6
- 0x8824090E, // 032D GETMBR R9 R4 K14
- 0x542A0003, // 032E LDINT R10 4
- 0x7C1C0600, // 032F CALL R7 3
- 0x80040E00, // 0330 RET 1 R7
- 0x7002000B, // 0331 JMP #033E
- 0x1C1C0D0D, // 0332 EQ R7 R6 K13
- 0x781E0009, // 0333 JMPF R7 #033E
- 0x8C1C0911, // 0334 GETMET R7 R4 K17
- 0x7C1C0200, // 0335 CALL R7 1
- 0x8C200F0B, // 0336 GETMET R8 R7 K11
- 0x4C280000, // 0337 LDNIL R10
- 0x8C2C0906, // 0338 GETMET R11 R4 K6
- 0x8834090E, // 0339 GETMBR R13 R4 K14
- 0x543A0003, // 033A LDINT R14 4
- 0x7C2C0600, // 033B CALL R11 3
- 0x7C200600, // 033C CALL R8 3
- 0x80040E00, // 033D RET 1 R7
- 0x70020040, // 033E JMP #0380
- 0x541E0030, // 033F LDINT R7 49
- 0x1C1C0A07, // 0340 EQ R7 R5 R7
- 0x781E0010, // 0341 JMPF R7 #0353
- 0x1C1C0D0F, // 0342 EQ R7 R6 K15
- 0x781E0005, // 0343 JMPF R7 #034A
- 0x8C1C0906, // 0344 GETMET R7 R4 K6
- 0x8824090E, // 0345 GETMBR R9 R4 K14
- 0x542A001D, // 0346 LDINT R10 30
- 0x7C1C0600, // 0347 CALL R7 3
- 0x80040E00, // 0348 RET 1 R7
- 0x70020007, // 0349 JMP #0352
- 0x541EFFFB, // 034A LDINT R7 65532
- 0x1C1C0C07, // 034B EQ R7 R6 R7
- 0x781E0004, // 034C JMPF R7 #0352
- 0x8C1C0906, // 034D GETMET R7 R4 K6
- 0x8824092A, // 034E GETMBR R9 R4 K42
- 0x542A0003, // 034F LDINT R10 4
- 0x7C1C0600, // 0350 CALL R7 3
- 0x80040E00, // 0351 RET 1 R7
- 0x7002002C, // 0352 JMP #0380
- 0x541E001C, // 0353 LDINT R7 29
- 0x1C1C0A07, // 0354 EQ R7 R5 R7
- 0x781E0021, // 0355 JMPF R7 #0378
- 0x1C1C0D0F, // 0356 EQ R7 R6 K15
- 0x781E0016, // 0357 JMPF R7 #036F
- 0x8C1C0911, // 0358 GETMET R7 R4 K17
- 0x7C1C0200, // 0359 CALL R7 1
- 0x88200133, // 035A GETMBR R8 R0 K51
- 0x8C201155, // 035B GETMET R8 R8 K85
- 0x50280200, // 035C LDBOOL R10 1 0
- 0x7C200400, // 035D CALL R8 2
- 0x60240010, // 035E GETGBL R9 G16
- 0x5C281000, // 035F MOVE R10 R8
- 0x7C240200, // 0360 CALL R9 1
- 0xA8020007, // 0361 EXBLK 0 #036A
- 0x5C281200, // 0362 MOVE R10 R9
- 0x7C280000, // 0363 CALL R10 0
- 0x8C2C0F0B, // 0364 GETMET R11 R7 K11
- 0x4C340000, // 0365 LDNIL R13
- 0x8838090C, // 0366 GETMBR R14 R4 K12
- 0x5C3C1400, // 0367 MOVE R15 R10
- 0x7C2C0800, // 0368 CALL R11 4
- 0x7001FFF7, // 0369 JMP #0362
- 0x5824003A, // 036A LDCONST R9 K58
- 0xAC240200, // 036B CATCH R9 1 0
- 0xB0080000, // 036C RAISE 2 R0 R0
- 0x80040E00, // 036D RET 1 R7
- 0x70020007, // 036E JMP #0377
- 0x601C0003, // 036F GETGBL R7 G3
- 0x5C200000, // 0370 MOVE R8 R0
- 0x7C1C0200, // 0371 CALL R7 1
- 0x8C1C0F56, // 0372 GETMET R7 R7 K86
- 0x5C240200, // 0373 MOVE R9 R1
- 0x5C280400, // 0374 MOVE R10 R2
- 0x7C1C0600, // 0375 CALL R7 3
- 0x80040E00, // 0376 RET 1 R7
- 0x70020007, // 0377 JMP #0380
- 0x601C0003, // 0378 GETGBL R7 G3
- 0x5C200000, // 0379 MOVE R8 R0
- 0x7C1C0200, // 037A CALL R7 1
- 0x8C1C0F56, // 037B GETMET R7 R7 K86
- 0x5C240200, // 037C MOVE R9 R1
- 0x5C280400, // 037D MOVE R10 R2
- 0x7C1C0600, // 037E CALL R7 3
- 0x80040E00, // 037F RET 1 R7
- 0x80000000, // 0380 RET 0
+ 0x54220007, // 0114 LDINT R8 8
+ 0x1C200E08, // 0115 EQ R8 R7 R8
+ 0x78220004, // 0116 JMPF R8 #011C
+ 0x8C200706, // 0117 GETMET R8 R3 K6
+ 0x88280B10, // 0118 GETMBR R10 R5 K16
+ 0x502C0000, // 0119 LDBOOL R11 0 0
+ 0x7C200600, // 011A CALL R8 3
+ 0x80041000, // 011B RET 1 R8
+ 0x7002028A, // 011C JMP #03A8
+ 0x54220033, // 011D LDINT R8 52
+ 0x1C200C08, // 011E EQ R8 R6 R8
+ 0x78220000, // 011F JMPF R8 #0121
+ 0x70020286, // 0120 JMP #03A8
+ 0x54220037, // 0121 LDINT R8 56
+ 0x1C200C08, // 0122 EQ R8 R6 R8
+ 0x7822002B, // 0123 JMPF R8 #0150
+ 0x1C200F05, // 0124 EQ R8 R7 K5
+ 0x7822000E, // 0125 JMPF R8 #0135
+ 0xB8225C00, // 0126 GETNGBL R8 K46
+ 0xB8262400, // 0127 GETNGBL R9 K18
+ 0x8C24132F, // 0128 GETMET R9 R9 K47
+ 0x7C240200, // 0129 CALL R9 1
+ 0x7C200200, // 012A CALL R8 1
+ 0xB8265C00, // 012B GETNGBL R9 K46
+ 0x58280030, // 012C LDCONST R10 K48
+ 0x7C240200, // 012D CALL R9 1
+ 0x08201009, // 012E MUL R8 R8 R9
+ 0x8C240706, // 012F GETMET R9 R3 K6
+ 0x882C0B07, // 0130 GETMBR R11 R5 K7
+ 0x5C301000, // 0131 MOVE R12 R8
+ 0x7C240600, // 0132 CALL R9 3
+ 0x80041200, // 0133 RET 1 R9
+ 0x70020019, // 0134 JMP #014F
+ 0x1C200F09, // 0135 EQ R8 R7 K9
+ 0x78220005, // 0136 JMPF R8 #013D
+ 0x8C200706, // 0137 GETMET R8 R3 K6
+ 0x88280B0E, // 0138 GETMBR R10 R5 K14
+ 0x582C000F, // 0139 LDCONST R11 K15
+ 0x7C200600, // 013A CALL R8 3
+ 0x80041000, // 013B RET 1 R8
+ 0x70020011, // 013C JMP #014F
+ 0x54220006, // 013D LDINT R8 7
+ 0x1C200E08, // 013E EQ R8 R7 R8
+ 0x7822000E, // 013F JMPF R8 #014F
+ 0xB8225C00, // 0140 GETNGBL R8 K46
+ 0xB8262400, // 0141 GETNGBL R9 K18
+ 0x8C241331, // 0142 GETMET R9 R9 K49
+ 0x7C240200, // 0143 CALL R9 1
+ 0x94241332, // 0144 GETIDX R9 R9 K50
+ 0x7C200200, // 0145 CALL R8 1
+ 0xB8265C00, // 0146 GETNGBL R9 K46
+ 0x58280030, // 0147 LDCONST R10 K48
+ 0x7C240200, // 0148 CALL R9 1
+ 0x08201009, // 0149 MUL R8 R8 R9
+ 0x8C240706, // 014A GETMET R9 R3 K6
+ 0x882C0B07, // 014B GETMBR R11 R5 K7
+ 0x5C301000, // 014C MOVE R12 R8
+ 0x7C240600, // 014D CALL R9 3
+ 0x80041200, // 014E RET 1 R9
+ 0x70020257, // 014F JMP #03A8
+ 0x5422003D, // 0150 LDINT R8 62
+ 0x1C200C08, // 0151 EQ R8 R6 R8
+ 0x782200AD, // 0152 JMPF R8 #0201
+ 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
+ 0x8C200B11, // 0158 GETMET R8 R5 K17
+ 0x7C200200, // 0159 CALL R8 1
+ 0x88240534, // 015A GETMBR R9 R2 K52
+ 0x78260005, // 015B JMPF R9 #0162
+ 0x60240012, // 015C GETGBL R9 G18
+ 0x7C240000, // 015D CALL R9 0
+ 0x8C280335, // 015E GETMET R10 R1 K53
+ 0x7C280200, // 015F CALL R10 1
+ 0x4028120A, // 0160 CONNECT R10 R9 R10
+ 0x70020003, // 0161 JMP #0166
+ 0x88240136, // 0162 GETMBR R9 R0 K54
+ 0x88241337, // 0163 GETMBR R9 R9 K55
+ 0x8C241338, // 0164 GETMET R9 R9 K56
+ 0x7C240200, // 0165 CALL R9 1
+ 0x60280010, // 0166 GETGBL R10 G16
+ 0x5C2C1200, // 0167 MOVE R11 R9
+ 0x7C280200, // 0168 CALL R10 1
+ 0xA802001B, // 0169 EXBLK 0 #0186
+ 0x5C2C1400, // 016A MOVE R11 R10
+ 0x7C2C0000, // 016B CALL R11 0
+ 0x4C300000, // 016C LDNIL R12
+ 0x1C30160C, // 016D EQ R12 R11 R12
+ 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
+ 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
+ 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
+ 0x7C200600, // 0273 CALL R8 3
+ 0x80041000, // 0274 RET 1 R8
+ 0x70020087, // 0275 JMP #02FE
+ 0x54220004, // 0276 LDINT R8 5
+ 0x1C200E08, // 0277 EQ R8 R7 R8
+ 0x7822000A, // 0278 JMPF R8 #0284
+ 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
+ 0x7C200600, // 028A CALL R8 3
+ 0x80041000, // 028B RET 1 R8
+ 0x70020070, // 028C JMP #02FE
+ 0x54220006, // 028D LDINT R8 7
+ 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
+ 0x7C200600, // 0293 CALL R8 3
+ 0x80041000, // 0294 RET 1 R8
+ 0x70020067, // 0295 JMP #02FE
+ 0x54220007, // 0296 LDINT R8 8
+ 0x1C200E08, // 0297 EQ R8 R7 R8
+ 0x7822000B, // 0298 JMPF R8 #02A5
+ 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
+ 0x7C200600, // 02AB CALL R8 3
+ 0x80041000, // 02AC RET 1 R8
+ 0x7002004F, // 02AD JMP #02FE
+ 0x54220009, // 02AE LDINT R8 10
+ 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
+ 0x7C200600, // 02DC CALL R8 3
+ 0x80041000, // 02DD RET 1 R8
+ 0x7002001E, // 02DE JMP #02FE
+ 0x54220011, // 02DF LDINT R8 18
+ 0x1C200E08, // 02E0 EQ R8 R7 R8
+ 0x7822000B, // 02E1 JMPF R8 #02EE
+ 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
+ 0x78220004, // 036B JMPF R8 #0371
+ 0x8C200706, // 036C GETMET R8 R3 K6
+ 0x88280B2A, // 036D GETMBR R10 R5 K42
+ 0x542E0003, // 036E LDINT R11 4
+ 0x7C200600, // 036F CALL R8 3
+ 0x80041000, // 0370 RET 1 R8
+ 0x70020035, // 0371 JMP #03A8
+ 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
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h
index afd5ed3a8..85a316317 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h
@@ -162,7 +162,7 @@ be_local_class(Matter_Plugin_Sensor,
{ be_const_key_weak(ARG, -1), be_nested_str_weak(filter) },
{ be_const_key_weak(shadow_value, -1), be_const_var(2) },
{ be_const_key_weak(UPDATE_TIME, 7), be_const_int(5000) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Filter_X20pattern) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Filter_X20pattern) },
{ be_const_key_weak(parse_sensors, 4), be_const_closure(Matter_Plugin_Sensor_parse_sensors_closure) },
{ be_const_key_weak(tasmota_sensor_filter, 8), be_const_var(0) },
{ be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_pre_value_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h
index 7587e80b6..00e5c533c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h
@@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_Contact_parse_configuration, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_contact),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(BOOL),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_nested_str_weak(U4),
@@ -103,59 +103,60 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[52]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0044, // 0004 LDINT R6 69
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0023, // 0006 JMPF R6 #002B
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A000F, // 0008 JMPF R6 #0019
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0005, // 000C JMPF R6 #0013
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x88240105, // 000F GETMBR R9 R0 K5
- 0x7C180600, // 0010 CALL R6 3
- 0x80040C00, // 0011 RET 1 R6
+ ( &(const binstruction[53]) { /* 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
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000F, // 0008 JMPF R7 #0019
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0005, // 000C JMPF R7 #0013
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x88280105, // 000F GETMBR R10 R0 K5
+ 0x7C1C0600, // 0010 CALL R7 3
+ 0x80040E00, // 0011 RET 1 R7
0x70020004, // 0012 JMP #0018
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200708, // 0014 GETMBR R8 R3 K8
- 0x4C240000, // 0015 LDNIL R9
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240908, // 0014 GETMBR R9 R4 K8
+ 0x4C280000, // 0015 LDNIL R10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x70020010, // 0018 JMP #002A
- 0x541AFFFB, // 0019 LDINT R6 65532
- 0x1C180A06, // 001A EQ R6 R5 R6
- 0x781A0005, // 001B JMPF R6 #0022
- 0x8C180706, // 001C GETMET R6 R3 K6
- 0x88200709, // 001D GETMBR R8 R3 K9
- 0x58240004, // 001E LDCONST R9 K4
- 0x7C180600, // 001F CALL R6 3
- 0x80040C00, // 0020 RET 1 R6
+ 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
+ 0x80040E00, // 0020 RET 1 R7
0x70020007, // 0021 JMP #002A
- 0x541AFFFC, // 0022 LDINT R6 65533
- 0x1C180A06, // 0023 EQ R6 R5 R6
- 0x781A0004, // 0024 JMPF R6 #002A
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200709, // 0026 GETMBR R8 R3 K9
- 0x5824000A, // 0027 LDCONST R9 K10
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
- 0x70020007, // 002A JMP #0033
- 0x60180003, // 002B GETGBL R6 G3
- 0x5C1C0000, // 002C MOVE R7 R0
- 0x7C180200, // 002D CALL R6 1
- 0x8C180D0B, // 002E GETMET R6 R6 K11
- 0x5C200200, // 002F MOVE R8 R1
- 0x5C240400, // 0030 MOVE R9 R2
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
- 0x80000000, // 0033 RET 0
+ 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
})
)
);
@@ -257,8 +258,8 @@ be_local_class(Matter_Plugin_Sensor_Contact,
{ be_const_key_weak(shadow_contact, -1), be_const_var(1) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(contact) },
{ be_const_key_weak(ARG_TYPE, 5), be_const_static_closure(Matter_Plugin_Sensor_Contact__X3Clambda_X3E_closure) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(ARG_HINT, 1), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
+ { be_const_key_weak(ARG_HINT, 1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Contact) },
{ be_const_key_weak(parse_configuration, 8), be_const_closure(Matter_Plugin_Sensor_Contact_parse_configuration_closure) },
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Sensor_Contact_update_shadow_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h
index 3cb1f9110..77df755f2 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h
@@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0404, // 0004 LDINT R6 1029
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0035, // 0006 JMPF R6 #003D
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A0011, // 0008 JMPF R6 #001B
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0007, // 000C JMPF R6 #0015
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x60240009, // 000F GETGBL R9 G9
- 0x88280105, // 0010 GETMBR R10 R0 K5
- 0x7C240200, // 0011 CALL R9 1
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(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
+ 0x541E0404, // 0004 LDINT R7 1029
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0035, // 0006 JMPF R7 #003D
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0011, // 0008 JMPF R7 #001B
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0007, // 000C JMPF R7 #0015
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x60280009, // 000F GETGBL R10 G9
+ 0x882C0105, // 0010 GETMBR R11 R0 K5
+ 0x7C280200, // 0011 CALL R10 1
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180706, // 0015 GETMET R6 R3 K6
- 0x88200708, // 0016 GETMBR R8 R3 K8
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0706, // 0015 GETMET R7 R3 K6
+ 0x88240908, // 0016 GETMBR R9 R4 K8
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x70020020, // 001A JMP #003C
- 0x1C180B09, // 001B EQ R6 R5 K9
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200707, // 001E GETMBR R8 R3 K7
- 0x542601F3, // 001F LDINT R9 500
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
+ 0x1C1C0D09, // 001B EQ R7 R6 K9
+ 0x781E0005, // 001C JMPF R7 #0023
+ 0x8C1C0706, // 001D GETMET R7 R3 K6
+ 0x88240907, // 001E GETMBR R9 R4 K7
+ 0x542A01F3, // 001F LDINT R10 500
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x80040E00, // 0021 RET 1 R7
0x70020018, // 0022 JMP #003C
- 0x1C180B0A, // 0023 EQ R6 R5 K10
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200707, // 0026 GETMBR R8 R3 K7
- 0x5426270F, // 0027 LDINT R9 10000
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x1C1C0D0A, // 0023 EQ R7 R6 K10
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 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
- 0x541AFFFB, // 002B LDINT R6 65532
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180706, // 002E GETMET R6 R3 K6
- 0x8820070B, // 002F GETMBR R8 R3 K11
- 0x58240004, // 0030 LDCONST R9 K4
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 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
+ 0x80040E00, // 0032 RET 1 R7
0x70020007, // 0033 JMP #003C
- 0x541AFFFC, // 0034 LDINT R6 65533
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A0004, // 0036 JMPF R6 #003C
- 0x8C180706, // 0037 GETMET R6 R3 K6
- 0x8820070B, // 0038 GETMBR R8 R3 K11
- 0x5824000C, // 0039 LDCONST R9 K12
- 0x7C180600, // 003A CALL R6 3
- 0x80040C00, // 003B RET 1 R6
- 0x70020007, // 003C JMP #0045
- 0x60180003, // 003D GETGBL R6 G3
- 0x5C1C0000, // 003E MOVE R7 R0
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0D, // 0040 GETMET R6 R6 K13
- 0x5C200200, // 0041 MOVE R8 R1
- 0x5C240400, // 0042 MOVE R9 R2
- 0x7C180600, // 0043 CALL R6 3
- 0x80040C00, // 0044 RET 1 R6
- 0x80000000, // 0045 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h
index 01b62792a..6da510376 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h
@@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Illuminance;
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A03FF, // 0004 LDINT R6 1024
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0035, // 0006 JMPF R6 #003D
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A0011, // 0008 JMPF R6 #001B
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0007, // 000C JMPF R6 #0015
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x60240009, // 000F GETGBL R9 G9
- 0x88280105, // 0010 GETMBR R10 R0 K5
- 0x7C240200, // 0011 CALL R9 1
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(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
+ 0x541E03FF, // 0004 LDINT R7 1024
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0035, // 0006 JMPF R7 #003D
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0011, // 0008 JMPF R7 #001B
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0007, // 000C JMPF R7 #0015
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x60280009, // 000F GETGBL R10 G9
+ 0x882C0105, // 0010 GETMBR R11 R0 K5
+ 0x7C280200, // 0011 CALL R10 1
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180706, // 0015 GETMET R6 R3 K6
- 0x88200708, // 0016 GETMBR R8 R3 K8
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0706, // 0015 GETMET R7 R3 K6
+ 0x88240908, // 0016 GETMBR R9 R4 K8
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x70020020, // 001A JMP #003C
- 0x1C180B09, // 001B EQ R6 R5 K9
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200707, // 001E GETMBR R8 R3 K7
- 0x58240009, // 001F LDCONST R9 K9
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
+ 0x1C1C0D09, // 001B EQ R7 R6 K9
+ 0x781E0005, // 001C JMPF R7 #0023
+ 0x8C1C0706, // 001D GETMET R7 R3 K6
+ 0x88240907, // 001E GETMBR R9 R4 K7
+ 0x58280009, // 001F LDCONST R10 K9
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x80040E00, // 0021 RET 1 R7
0x70020018, // 0022 JMP #003C
- 0x1C180B0A, // 0023 EQ R6 R5 K10
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200707, // 0026 GETMBR R8 R3 K7
- 0x5426FFFD, // 0027 LDINT R9 65534
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x1C1C0D0A, // 0023 EQ R7 R6 K10
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 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
- 0x541AFFFB, // 002B LDINT R6 65532
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180706, // 002E GETMET R6 R3 K6
- 0x8820070B, // 002F GETMBR R8 R3 K11
- 0x58240004, // 0030 LDCONST R9 K4
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 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
+ 0x80040E00, // 0032 RET 1 R7
0x70020007, // 0033 JMP #003C
- 0x541AFFFC, // 0034 LDINT R6 65533
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A0004, // 0036 JMPF R6 #003C
- 0x8C180706, // 0037 GETMET R6 R3 K6
- 0x8820070B, // 0038 GETMBR R8 R3 K11
- 0x5824000C, // 0039 LDCONST R9 K12
- 0x7C180600, // 003A CALL R6 3
- 0x80040C00, // 003B RET 1 R6
- 0x70020007, // 003C JMP #0045
- 0x60180003, // 003D GETGBL R6 G3
- 0x5C1C0000, // 003E MOVE R7 R0
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0D, // 0040 GETMET R6 R6 K13
- 0x5C200200, // 0041 MOVE R8 R1
- 0x5C240400, // 0042 MOVE R9 R2
- 0x7C180600, // 0043 CALL R6 3
- 0x80040C00, // 0044 RET 1 R6
- 0x80000000, // 0045 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h
index 812d0bde9..7d9f5f042 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h
@@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name *
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_occupancy),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U1),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -105,75 +105,76 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[68]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0405, // 0004 LDINT R6 1030
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0033, // 0006 JMPF R6 #003B
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A000F, // 0008 JMPF R6 #0019
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0005, // 000C JMPF R6 #0013
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x88240105, // 000F GETMBR R9 R0 K5
- 0x7C180600, // 0010 CALL R6 3
- 0x80040C00, // 0011 RET 1 R6
+ ( &(const binstruction[69]) { /* 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
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000F, // 0008 JMPF R7 #0019
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0005, // 000C JMPF R7 #0013
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x88280105, // 000F GETMBR R10 R0 K5
+ 0x7C1C0600, // 0010 CALL R7 3
+ 0x80040E00, // 0011 RET 1 R7
0x70020004, // 0012 JMP #0018
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200708, // 0014 GETMBR R8 R3 K8
- 0x4C240000, // 0015 LDNIL R9
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240908, // 0014 GETMBR R9 R4 K8
+ 0x4C280000, // 0015 LDNIL R10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x70020020, // 0018 JMP #003A
- 0x1C180B09, // 0019 EQ R6 R5 K9
- 0x781A0005, // 001A JMPF R6 #0021
- 0x8C180706, // 001B GETMET R6 R3 K6
- 0x88200707, // 001C GETMBR R8 R3 K7
- 0x5824000A, // 001D LDCONST R9 K10
- 0x7C180600, // 001E CALL R6 3
- 0x80040C00, // 001F RET 1 R6
+ 0x1C1C0D09, // 0019 EQ R7 R6 K9
+ 0x781E0005, // 001A JMPF R7 #0021
+ 0x8C1C0706, // 001B GETMET R7 R3 K6
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x5828000A, // 001D LDCONST R10 K10
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
0x70020018, // 0020 JMP #003A
- 0x1C180B0B, // 0021 EQ R6 R5 K11
- 0x781A0005, // 0022 JMPF R6 #0029
- 0x8C180706, // 0023 GETMET R6 R3 K6
- 0x88200707, // 0024 GETMBR R8 R3 K7
- 0x58240004, // 0025 LDCONST R9 K4
- 0x7C180600, // 0026 CALL R6 3
- 0x80040C00, // 0027 RET 1 R6
+ 0x1C1C0D0B, // 0021 EQ R7 R6 K11
+ 0x781E0005, // 0022 JMPF R7 #0029
+ 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
- 0x541AFFFB, // 0029 LDINT R6 65532
- 0x1C180A06, // 002A EQ R6 R5 R6
- 0x781A0005, // 002B JMPF R6 #0032
- 0x8C180706, // 002C GETMET R6 R3 K6
- 0x8820070C, // 002D GETMBR R8 R3 K12
- 0x58240004, // 002E LDCONST R9 K4
- 0x7C180600, // 002F CALL R6 3
- 0x80040C00, // 0030 RET 1 R6
+ 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
+ 0x80040E00, // 0030 RET 1 R7
0x70020007, // 0031 JMP #003A
- 0x541AFFFC, // 0032 LDINT R6 65533
- 0x1C180A06, // 0033 EQ R6 R5 R6
- 0x781A0004, // 0034 JMPF R6 #003A
- 0x8C180706, // 0035 GETMET R6 R3 K6
- 0x8820070C, // 0036 GETMBR R8 R3 K12
- 0x5824000A, // 0037 LDCONST R9 K10
- 0x7C180600, // 0038 CALL R6 3
- 0x80040C00, // 0039 RET 1 R6
- 0x70020007, // 003A JMP #0043
- 0x60180003, // 003B GETGBL R6 G3
- 0x5C1C0000, // 003C MOVE R7 R0
- 0x7C180200, // 003D CALL R6 1
- 0x8C180D0D, // 003E GETMET R6 R6 K13
- 0x5C200200, // 003F MOVE R8 R1
- 0x5C240400, // 0040 MOVE R9 R2
- 0x7C180600, // 0041 CALL R6 3
- 0x80040C00, // 0042 RET 1 R6
- 0x80000000, // 0043 RET 0
+ 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
})
)
);
@@ -270,8 +271,8 @@ be_local_class(Matter_Plugin_Sensor_Occupancy,
{ be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
{ be_const_key_weak(ARG_TYPE, -1), 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(ARG_HINT, 1), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(ARG_HINT, 1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) },
{ be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
{ be_const_key_weak(shadow_occupancy, 8), be_const_var(1) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h
index b9eb6d333..98a98f080 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h
@@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_parse_configuration, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* 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),
@@ -102,51 +102,52 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[44]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0005, // 0004 LDINT R6 6
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A001B, // 0006 JMPF R6 #0023
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x1C180B05, // 0009 EQ R6 R5 K5
- 0x781A0005, // 000A JMPF R6 #0011
- 0x8C180706, // 000B GETMET R6 R3 K6
- 0x88200707, // 000C GETMBR R8 R3 K7
- 0x88240108, // 000D GETMBR R9 R0 K8
- 0x7C180600, // 000E CALL R6 3
- 0x80040C00, // 000F RET 1 R6
+ ( &(const binstruction[45]) { /* 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
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0005, // 000A JMPF R7 #0011
+ 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
- 0x541AFFFB, // 0011 LDINT R6 65532
- 0x1C180A06, // 0012 EQ R6 R5 R6
- 0x781A0005, // 0013 JMPF R6 #001A
- 0x8C180706, // 0014 GETMET R6 R3 K6
- 0x88200709, // 0015 GETMBR R8 R3 K9
- 0x58240005, // 0016 LDCONST R9 K5
- 0x7C180600, // 0017 CALL R6 3
- 0x80040C00, // 0018 RET 1 R6
+ 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
- 0x541AFFFC, // 001A LDINT R6 65533
- 0x1C180A06, // 001B EQ R6 R5 R6
- 0x781A0004, // 001C JMPF R6 #0022
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200709, // 001E GETMBR R8 R3 K9
- 0x54260003, // 001F LDINT R9 4
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
- 0x70020007, // 0022 JMP #002B
- 0x60180003, // 0023 GETGBL R6 G3
- 0x5C1C0000, // 0024 MOVE R7 R0
- 0x7C180200, // 0025 CALL R6 1
- 0x8C180D0A, // 0026 GETMET R6 R6 K10
- 0x5C200200, // 0027 MOVE R8 R1
- 0x5C240400, // 0028 MOVE R9 R2
- 0x7C180600, // 0029 CALL R6 3
- 0x80040C00, // 002A RET 1 R6
- 0x80000000, // 002B RET 0
+ 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
})
)
);
@@ -241,10 +242,10 @@ be_local_class(Matter_Plugin_Sensor_OnOff,
be_nested_map(13,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG, 8), be_nested_str_weak(switch) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(onoff) },
{ be_const_key_weak(ARG_TYPE, 1), be_const_static_closure(Matter_Plugin_Sensor_OnOff__X3Clambda_X3E_closure) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Sensor_OnOff_update_shadow_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(OnOff_X20Sensor) },
{ be_const_key_weak(parse_configuration, 5), be_const_closure(Matter_Plugin_Sensor_OnOff_parse_configuration_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h
index d3761e562..02d98c5fc 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h
@@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(I2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0402, // 0004 LDINT R6 1027
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0035, // 0006 JMPF R6 #003D
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A0011, // 0008 JMPF R6 #001B
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0007, // 000C JMPF R6 #0015
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x60240009, // 000F GETGBL R9 G9
- 0x88280105, // 0010 GETMBR R10 R0 K5
- 0x7C240200, // 0011 CALL R9 1
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(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
+ 0x541E0402, // 0004 LDINT R7 1027
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0035, // 0006 JMPF R7 #003D
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0011, // 0008 JMPF R7 #001B
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0007, // 000C JMPF R7 #0015
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x60280009, // 000F GETGBL R10 G9
+ 0x882C0105, // 0010 GETMBR R11 R0 K5
+ 0x7C280200, // 0011 CALL R10 1
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020004, // 0014 JMP #001A
- 0x8C180706, // 0015 GETMET R6 R3 K6
- 0x88200708, // 0016 GETMBR R8 R3 K8
- 0x4C240000, // 0017 LDNIL R9
- 0x7C180600, // 0018 CALL R6 3
- 0x80040C00, // 0019 RET 1 R6
+ 0x8C1C0706, // 0015 GETMET R7 R3 K6
+ 0x88240908, // 0016 GETMBR R9 R4 K8
+ 0x4C280000, // 0017 LDNIL R10
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
0x70020020, // 001A JMP #003C
- 0x1C180B09, // 001B EQ R6 R5 K9
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180706, // 001D GETMET R6 R3 K6
- 0x88200707, // 001E GETMBR R8 R3 K7
- 0x542601F3, // 001F LDINT R9 500
- 0x7C180600, // 0020 CALL R6 3
- 0x80040C00, // 0021 RET 1 R6
+ 0x1C1C0D09, // 001B EQ R7 R6 K9
+ 0x781E0005, // 001C JMPF R7 #0023
+ 0x8C1C0706, // 001D GETMET R7 R3 K6
+ 0x88240907, // 001E GETMBR R9 R4 K7
+ 0x542A01F3, // 001F LDINT R10 500
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x80040E00, // 0021 RET 1 R7
0x70020018, // 0022 JMP #003C
- 0x1C180B0A, // 0023 EQ R6 R5 K10
- 0x781A0005, // 0024 JMPF R6 #002B
- 0x8C180706, // 0025 GETMET R6 R3 K6
- 0x88200707, // 0026 GETMBR R8 R3 K7
- 0x542605DB, // 0027 LDINT R9 1500
- 0x7C180600, // 0028 CALL R6 3
- 0x80040C00, // 0029 RET 1 R6
+ 0x1C1C0D0A, // 0023 EQ R7 R6 K10
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 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
- 0x541AFFFB, // 002B LDINT R6 65532
- 0x1C180A06, // 002C EQ R6 R5 R6
- 0x781A0005, // 002D JMPF R6 #0034
- 0x8C180706, // 002E GETMET R6 R3 K6
- 0x8820070B, // 002F GETMBR R8 R3 K11
- 0x58240004, // 0030 LDCONST R9 K4
- 0x7C180600, // 0031 CALL R6 3
- 0x80040C00, // 0032 RET 1 R6
+ 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
+ 0x80040E00, // 0032 RET 1 R7
0x70020007, // 0033 JMP #003C
- 0x541AFFFC, // 0034 LDINT R6 65533
- 0x1C180A06, // 0035 EQ R6 R5 R6
- 0x781A0004, // 0036 JMPF R6 #003C
- 0x8C180706, // 0037 GETMET R6 R3 K6
- 0x8820070B, // 0038 GETMBR R8 R3 K11
- 0x5824000C, // 0039 LDCONST R9 K12
- 0x7C180600, // 003A CALL R6 3
- 0x80040C00, // 003B RET 1 R6
- 0x70020007, // 003C JMP #0045
- 0x60180003, // 003D GETGBL R6 G3
- 0x5C1C0000, // 003E MOVE R7 R0
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0D, // 0040 GETMET R6 R6 K13
- 0x5C200200, // 0041 MOVE R8 R1
- 0x5C240400, // 0042 MOVE R9 R2
- 0x7C180600, // 0043 CALL R6 3
- 0x80040C00, // 0044 RET 1 R6
- 0x80000000, // 0045 RET 0
+ 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
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h
index 3ad3b033c..4213f69d3 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h
@@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Temp;
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
+ 12, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(create_TLV),
+ /* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(I2),
/* K8 */ be_nested_str_weak(NULL),
/* K9 */ be_const_int(1),
@@ -36,75 +36,76 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[68]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0401, // 0004 LDINT R6 1026
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0033, // 0006 JMPF R6 #003B
- 0x1C180B04, // 0007 EQ R6 R5 K4
- 0x781A000F, // 0008 JMPF R6 #0019
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x4C1C0000, // 000A LDNIL R7
- 0x20180C07, // 000B NE R6 R6 R7
- 0x781A0005, // 000C JMPF R6 #0013
- 0x8C180706, // 000D GETMET R6 R3 K6
- 0x88200707, // 000E GETMBR R8 R3 K7
- 0x88240105, // 000F GETMBR R9 R0 K5
- 0x7C180600, // 0010 CALL R6 3
- 0x80040C00, // 0011 RET 1 R6
+ ( &(const binstruction[69]) { /* 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
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E000F, // 0008 JMPF R7 #0019
+ 0x881C0105, // 0009 GETMBR R7 R0 K5
+ 0x4C200000, // 000A LDNIL R8
+ 0x201C0E08, // 000B NE R7 R7 R8
+ 0x781E0005, // 000C JMPF R7 #0013
+ 0x8C1C0706, // 000D GETMET R7 R3 K6
+ 0x88240907, // 000E GETMBR R9 R4 K7
+ 0x88280105, // 000F GETMBR R10 R0 K5
+ 0x7C1C0600, // 0010 CALL R7 3
+ 0x80040E00, // 0011 RET 1 R7
0x70020004, // 0012 JMP #0018
- 0x8C180706, // 0013 GETMET R6 R3 K6
- 0x88200708, // 0014 GETMBR R8 R3 K8
- 0x4C240000, // 0015 LDNIL R9
- 0x7C180600, // 0016 CALL R6 3
- 0x80040C00, // 0017 RET 1 R6
+ 0x8C1C0706, // 0013 GETMET R7 R3 K6
+ 0x88240908, // 0014 GETMBR R9 R4 K8
+ 0x4C280000, // 0015 LDNIL R10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
0x70020020, // 0018 JMP #003A
- 0x1C180B09, // 0019 EQ R6 R5 K9
- 0x781A0005, // 001A JMPF R6 #0021
- 0x8C180706, // 001B GETMET R6 R3 K6
- 0x88200707, // 001C GETMBR R8 R3 K7
- 0x5425EC77, // 001D LDINT R9 -5000
- 0x7C180600, // 001E CALL R6 3
- 0x80040C00, // 001F RET 1 R6
+ 0x1C1C0D09, // 0019 EQ R7 R6 K9
+ 0x781E0005, // 001A JMPF R7 #0021
+ 0x8C1C0706, // 001B GETMET R7 R3 K6
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x5429EC77, // 001D LDINT R10 -5000
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
0x70020018, // 0020 JMP #003A
- 0x1C180B0A, // 0021 EQ R6 R5 K10
- 0x781A0005, // 0022 JMPF R6 #0029
- 0x8C180706, // 0023 GETMET R6 R3 K6
- 0x88200707, // 0024 GETMBR R8 R3 K7
- 0x54263A97, // 0025 LDINT R9 15000
- 0x7C180600, // 0026 CALL R6 3
- 0x80040C00, // 0027 RET 1 R6
+ 0x1C1C0D0A, // 0021 EQ R7 R6 K10
+ 0x781E0005, // 0022 JMPF R7 #0029
+ 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
- 0x541AFFFB, // 0029 LDINT R6 65532
- 0x1C180A06, // 002A EQ R6 R5 R6
- 0x781A0005, // 002B JMPF R6 #0032
- 0x8C180706, // 002C GETMET R6 R3 K6
- 0x8820070B, // 002D GETMBR R8 R3 K11
- 0x58240004, // 002E LDCONST R9 K4
- 0x7C180600, // 002F CALL R6 3
- 0x80040C00, // 0030 RET 1 R6
+ 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
+ 0x80040E00, // 0030 RET 1 R7
0x70020007, // 0031 JMP #003A
- 0x541AFFFC, // 0032 LDINT R6 65533
- 0x1C180A06, // 0033 EQ R6 R5 R6
- 0x781A0004, // 0034 JMPF R6 #003A
- 0x8C180706, // 0035 GETMET R6 R3 K6
- 0x8820070B, // 0036 GETMBR R8 R3 K11
- 0x54260003, // 0037 LDINT R9 4
- 0x7C180600, // 0038 CALL R6 3
- 0x80040C00, // 0039 RET 1 R6
- 0x70020007, // 003A JMP #0043
- 0x60180003, // 003B GETGBL R6 G3
- 0x5C1C0000, // 003C MOVE R7 R0
- 0x7C180200, // 003D CALL R6 1
- 0x8C180D0C, // 003E GETMET R6 R6 K12
- 0x5C200200, // 003F MOVE R8 R1
- 0x5C240400, // 0040 MOVE R9 R2
- 0x7C180600, // 0041 CALL R6 3
- 0x80040C00, // 0042 RET 1 R6
- 0x80000000, // 0043 RET 0
+ 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
})
)
);
@@ -116,28 +117,43 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Temp_pre_value, /* name */
be_nested_proto(
- 4, /* 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(get_option),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_const_real_hex(0x3FE66666),
+ }),
be_str_weak(pre_value),
&be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0004, // 0002 JMPF R2 #0008
- 0x60080009, // 0003 GETGBL R2 G9
- 0x540E0063, // 0004 LDINT R3 100
- 0x080C0203, // 0005 MUL R3 R1 R3
- 0x7C080200, // 0006 CALL R2 1
- 0x70020000, // 0007 JMP #0009
- 0x4C080000, // 0008 LDNIL R2
- 0x80040400, // 0009 RET 1 R2
+ ( &(const binstruction[20]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x54120007, // 0002 LDINT R4 8
+ 0x7C080400, // 0003 CALL R2 2
+ 0x1C080502, // 0004 EQ R2 R2 K2
+ 0x780A0003, // 0005 JMPF R2 #000A
+ 0x540A001F, // 0006 LDINT R2 32
+ 0x04080202, // 0007 SUB R2 R1 R2
+ 0x0C080503, // 0008 DIV R2 R2 K3
+ 0x5C040400, // 0009 MOVE R1 R2
+ 0x4C080000, // 000A LDNIL R2
+ 0x20080202, // 000B NE R2 R1 R2
+ 0x780A0004, // 000C JMPF R2 #0012
+ 0x60080009, // 000D GETGBL R2 G9
+ 0x540E0063, // 000E LDINT R3 100
+ 0x080C0203, // 000F MUL R3 R1 R3
+ 0x7C080200, // 0010 CALL R2 1
+ 0x70020000, // 0011 JMP #0013
+ 0x4C080000, // 0012 LDNIL R2
+ 0x80040400, // 0013 RET 1 R2
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h
index 89d2d2552..f071d2f26 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h
@@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Shutter;
********************************************************************/
be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
be_nested_proto(
- 12, /* nstack */
- 3, /* argc */
+ 13, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -27,7 +27,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_nested_str_weak(update_inverted),
/* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(create_TLV),
+ /* K7 */ be_nested_str_weak(set),
/* K8 */ be_nested_str_weak(U1),
/* K9 */ be_nested_str_weak(U2),
/* K10 */ be_const_int(1),
@@ -41,158 +41,159 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[151]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x4C180000, // 0004 LDNIL R6
- 0x541E0101, // 0005 LDINT R7 258
- 0x1C1C0807, // 0006 EQ R7 R4 R7
- 0x781E0085, // 0007 JMPF R7 #008E
- 0x8C1C0104, // 0008 GETMET R7 R0 K4
- 0x7C1C0200, // 0009 CALL R7 1
- 0x8C1C0105, // 000A GETMET R7 R0 K5
- 0x7C1C0200, // 000B CALL R7 1
- 0x1C1C0B06, // 000C EQ R7 R5 K6
- 0x781E0005, // 000D JMPF R7 #0014
- 0x8C1C0707, // 000E GETMET R7 R3 K7
- 0x88240708, // 000F GETMBR R9 R3 K8
- 0x542A00FE, // 0010 LDINT R10 255
- 0x7C1C0600, // 0011 CALL R7 3
- 0x80040E00, // 0012 RET 1 R7
+ ( &(const binstruction[152]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140502, // 0002 GETMBR R5 R2 K2
+ 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0x4C1C0000, // 0004 LDNIL R7
+ 0x54220101, // 0005 LDINT R8 258
+ 0x1C200A08, // 0006 EQ R8 R5 R8
+ 0x78220085, // 0007 JMPF R8 #008E
+ 0x8C200104, // 0008 GETMET R8 R0 K4
+ 0x7C200200, // 0009 CALL R8 1
+ 0x8C200105, // 000A GETMET R8 R0 K5
+ 0x7C200200, // 000B CALL R8 1
+ 0x1C200D06, // 000C EQ R8 R6 K6
+ 0x78220005, // 000D JMPF R8 #0014
+ 0x8C200707, // 000E GETMET R8 R3 K7
+ 0x88280908, // 000F GETMBR R10 R4 K8
+ 0x542E00FE, // 0010 LDINT R11 255
+ 0x7C200600, // 0011 CALL R8 3
+ 0x80041000, // 0012 RET 1 R8
0x70020078, // 0013 JMP #008D
- 0x541E0004, // 0014 LDINT R7 5
- 0x1C1C0A07, // 0015 EQ R7 R5 R7
- 0x781E0005, // 0016 JMPF R7 #001D
- 0x8C1C0707, // 0017 GETMET R7 R3 K7
- 0x88240709, // 0018 GETMBR R9 R3 K9
- 0x58280006, // 0019 LDCONST R10 K6
- 0x7C1C0600, // 001A CALL R7 3
- 0x80040E00, // 001B RET 1 R7
+ 0x54220004, // 0014 LDINT R8 5
+ 0x1C200C08, // 0015 EQ R8 R6 R8
+ 0x78220005, // 0016 JMPF R8 #001D
+ 0x8C200707, // 0017 GETMET R8 R3 K7
+ 0x88280909, // 0018 GETMBR R10 R4 K9
+ 0x582C0006, // 0019 LDCONST R11 K6
+ 0x7C200600, // 001A CALL R8 3
+ 0x80041000, // 001B RET 1 R8
0x7002006F, // 001C JMP #008D
- 0x541E0006, // 001D LDINT R7 7
- 0x1C1C0A07, // 001E EQ R7 R5 R7
- 0x781E0006, // 001F JMPF R7 #0027
- 0x8C1C0707, // 0020 GETMET R7 R3 K7
- 0x88240708, // 0021 GETMBR R9 R3 K8
- 0x542A0007, // 0022 LDINT R10 8
- 0x002A140A, // 0023 ADD R10 K10 R10
- 0x7C1C0600, // 0024 CALL R7 3
- 0x80040E00, // 0025 RET 1 R7
+ 0x54220006, // 001D LDINT R8 7
+ 0x1C200C08, // 001E EQ R8 R6 R8
+ 0x78220006, // 001F JMPF R8 #0027
+ 0x8C200707, // 0020 GETMET R8 R3 K7
+ 0x88280908, // 0021 GETMBR R10 R4 K8
+ 0x542E0007, // 0022 LDINT R11 8
+ 0x002E140B, // 0023 ADD R11 K10 R11
+ 0x7C200600, // 0024 CALL R8 3
+ 0x80041000, // 0025 RET 1 R8
0x70020065, // 0026 JMP #008D
- 0x541E000C, // 0027 LDINT R7 13
- 0x1C1C0A07, // 0028 EQ R7 R5 R7
- 0x781E0005, // 0029 JMPF R7 #0030
- 0x8C1C0707, // 002A GETMET R7 R3 K7
- 0x88240708, // 002B GETMBR R9 R3 K8
- 0x542A00FE, // 002C LDINT R10 255
- 0x7C1C0600, // 002D CALL R7 3
- 0x80040E00, // 002E RET 1 R7
+ 0x5422000C, // 0027 LDINT R8 13
+ 0x1C200C08, // 0028 EQ R8 R6 R8
+ 0x78220005, // 0029 JMPF R8 #0030
+ 0x8C200707, // 002A GETMET R8 R3 K7
+ 0x88280908, // 002B GETMBR R10 R4 K8
+ 0x542E00FE, // 002C LDINT R11 255
+ 0x7C200600, // 002D CALL R8 3
+ 0x80041000, // 002E RET 1 R8
0x7002005C, // 002F JMP #008D
- 0x541E000D, // 0030 LDINT R7 14
- 0x1C1C0A07, // 0031 EQ R7 R5 R7
- 0x781E0013, // 0032 JMPF R7 #0047
- 0x881C010B, // 0033 GETMBR R7 R0 K11
- 0x1C1C0F06, // 0034 EQ R7 R7 K6
- 0x781E0006, // 0035 JMPF R7 #003D
- 0x541E0063, // 0036 LDINT R7 100
- 0x8820010C, // 0037 GETMBR R8 R0 K12
- 0x041C0E08, // 0038 SUB R7 R7 R8
- 0x54220063, // 0039 LDINT R8 100
- 0x081C0E08, // 003A MUL R7 R7 R8
- 0x5C180E00, // 003B MOVE R6 R7
+ 0x5422000D, // 0030 LDINT R8 14
+ 0x1C200C08, // 0031 EQ R8 R6 R8
+ 0x78220013, // 0032 JMPF R8 #0047
+ 0x8820010B, // 0033 GETMBR R8 R0 K11
+ 0x1C201106, // 0034 EQ R8 R8 K6
+ 0x78220006, // 0035 JMPF R8 #003D
+ 0x54220063, // 0036 LDINT R8 100
+ 0x8824010C, // 0037 GETMBR R9 R0 K12
+ 0x04201009, // 0038 SUB R8 R8 R9
+ 0x54260063, // 0039 LDINT R9 100
+ 0x08201009, // 003A MUL R8 R8 R9
+ 0x5C1C1000, // 003B MOVE R7 R8
0x70020003, // 003C JMP #0041
- 0x881C010C, // 003D GETMBR R7 R0 K12
- 0x54220063, // 003E LDINT R8 100
- 0x081C0E08, // 003F MUL R7 R7 R8
- 0x5C180E00, // 0040 MOVE R6 R7
- 0x8C1C0707, // 0041 GETMET R7 R3 K7
- 0x88240709, // 0042 GETMBR R9 R3 K9
- 0x5C280C00, // 0043 MOVE R10 R6
- 0x7C1C0600, // 0044 CALL R7 3
- 0x80040E00, // 0045 RET 1 R7
+ 0x8820010C, // 003D GETMBR R8 R0 K12
+ 0x54260063, // 003E LDINT R9 100
+ 0x08201009, // 003F MUL R8 R8 R9
+ 0x5C1C1000, // 0040 MOVE R7 R8
+ 0x8C200707, // 0041 GETMET R8 R3 K7
+ 0x88280909, // 0042 GETMBR R10 R4 K9
+ 0x5C2C0E00, // 0043 MOVE R11 R7
+ 0x7C200600, // 0044 CALL R8 3
+ 0x80041000, // 0045 RET 1 R8
0x70020045, // 0046 JMP #008D
- 0x541E0009, // 0047 LDINT R7 10
- 0x1C1C0A07, // 0048 EQ R7 R5 R7
- 0x781E0010, // 0049 JMPF R7 #005B
- 0x881C010D, // 004A GETMBR R7 R0 K13
- 0x1C1C0F06, // 004B EQ R7 R7 K6
- 0x781E0001, // 004C JMPF R7 #004F
- 0x581C0006, // 004D LDCONST R7 K6
+ 0x54220009, // 0047 LDINT R8 10
+ 0x1C200C08, // 0048 EQ R8 R6 R8
+ 0x78220010, // 0049 JMPF R8 #005B
+ 0x8820010D, // 004A GETMBR R8 R0 K13
+ 0x1C201106, // 004B EQ R8 R8 K6
+ 0x78220001, // 004C JMPF R8 #004F
+ 0x58200006, // 004D LDCONST R8 K6
0x70020005, // 004E JMP #0055
- 0x881C010D, // 004F GETMBR R7 R0 K13
- 0x241C0F06, // 0050 GT R7 R7 K6
- 0x781E0001, // 0051 JMPF R7 #0054
- 0x581C000A, // 0052 LDCONST R7 K10
+ 0x8820010D, // 004F GETMBR R8 R0 K13
+ 0x24201106, // 0050 GT R8 R8 K6
+ 0x78220001, // 0051 JMPF R8 #0054
+ 0x5820000A, // 0052 LDCONST R8 K10
0x70020000, // 0053 JMP #0055
- 0x581C000E, // 0054 LDCONST R7 K14
- 0x8C200707, // 0055 GETMET R8 R3 K7
- 0x88280708, // 0056 GETMBR R10 R3 K8
- 0x5C2C0E00, // 0057 MOVE R11 R7
- 0x7C200600, // 0058 CALL R8 3
- 0x80041000, // 0059 RET 1 R8
+ 0x5820000E, // 0054 LDCONST R8 K14
+ 0x8C240707, // 0055 GETMET R9 R3 K7
+ 0x882C0908, // 0056 GETMBR R11 R4 K8
+ 0x5C301000, // 0057 MOVE R12 R8
+ 0x7C240600, // 0058 CALL R9 3
+ 0x80041200, // 0059 RET 1 R9
0x70020031, // 005A JMP #008D
- 0x541E000A, // 005B LDINT R7 11
- 0x1C1C0A07, // 005C EQ R7 R5 R7
- 0x781E0013, // 005D JMPF R7 #0072
- 0x881C010B, // 005E GETMBR R7 R0 K11
- 0x1C1C0F06, // 005F EQ R7 R7 K6
- 0x781E0006, // 0060 JMPF R7 #0068
- 0x541E0063, // 0061 LDINT R7 100
- 0x8820010F, // 0062 GETMBR R8 R0 K15
- 0x041C0E08, // 0063 SUB R7 R7 R8
- 0x54220063, // 0064 LDINT R8 100
- 0x081C0E08, // 0065 MUL R7 R7 R8
- 0x5C180E00, // 0066 MOVE R6 R7
+ 0x5422000A, // 005B LDINT R8 11
+ 0x1C200C08, // 005C EQ R8 R6 R8
+ 0x78220013, // 005D JMPF R8 #0072
+ 0x8820010B, // 005E GETMBR R8 R0 K11
+ 0x1C201106, // 005F EQ R8 R8 K6
+ 0x78220006, // 0060 JMPF R8 #0068
+ 0x54220063, // 0061 LDINT R8 100
+ 0x8824010F, // 0062 GETMBR R9 R0 K15
+ 0x04201009, // 0063 SUB R8 R8 R9
+ 0x54260063, // 0064 LDINT R9 100
+ 0x08201009, // 0065 MUL R8 R8 R9
+ 0x5C1C1000, // 0066 MOVE R7 R8
0x70020003, // 0067 JMP #006C
- 0x881C010F, // 0068 GETMBR R7 R0 K15
- 0x54220063, // 0069 LDINT R8 100
- 0x081C0E08, // 006A MUL R7 R7 R8
- 0x5C180E00, // 006B MOVE R6 R7
- 0x8C1C0707, // 006C GETMET R7 R3 K7
- 0x88240709, // 006D GETMBR R9 R3 K9
- 0x5C280C00, // 006E MOVE R10 R6
- 0x7C1C0600, // 006F CALL R7 3
- 0x80040E00, // 0070 RET 1 R7
+ 0x8820010F, // 0068 GETMBR R8 R0 K15
+ 0x54260063, // 0069 LDINT R9 100
+ 0x08201009, // 006A MUL R8 R8 R9
+ 0x5C1C1000, // 006B MOVE R7 R8
+ 0x8C200707, // 006C GETMET R8 R3 K7
+ 0x88280909, // 006D GETMBR R10 R4 K9
+ 0x5C2C0E00, // 006E MOVE R11 R7
+ 0x7C200600, // 006F CALL R8 3
+ 0x80041000, // 0070 RET 1 R8
0x7002001A, // 0071 JMP #008D
- 0x541E0016, // 0072 LDINT R7 23
- 0x1C1C0A07, // 0073 EQ R7 R5 R7
- 0x781E0005, // 0074 JMPF R7 #007B
- 0x8C1C0707, // 0075 GETMET R7 R3 K7
- 0x88240708, // 0076 GETMBR R9 R3 K8
- 0x58280006, // 0077 LDCONST R10 K6
- 0x7C1C0600, // 0078 CALL R7 3
- 0x80040E00, // 0079 RET 1 R7
+ 0x54220016, // 0072 LDINT R8 23
+ 0x1C200C08, // 0073 EQ R8 R6 R8
+ 0x78220005, // 0074 JMPF R8 #007B
+ 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
- 0x541EFFFB, // 007B LDINT R7 65532
- 0x1C1C0A07, // 007C EQ R7 R5 R7
- 0x781E0006, // 007D JMPF R7 #0085
- 0x8C1C0707, // 007E GETMET R7 R3 K7
- 0x88240710, // 007F GETMBR R9 R3 K16
- 0x542A0003, // 0080 LDINT R10 4
- 0x002A140A, // 0081 ADD R10 K10 R10
- 0x7C1C0600, // 0082 CALL R7 3
- 0x80040E00, // 0083 RET 1 R7
+ 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
- 0x541EFFFC, // 0085 LDINT R7 65533
- 0x1C1C0A07, // 0086 EQ R7 R5 R7
- 0x781E0004, // 0087 JMPF R7 #008D
- 0x8C1C0707, // 0088 GETMET R7 R3 K7
- 0x88240710, // 0089 GETMBR R9 R3 K16
- 0x542A0004, // 008A LDINT R10 5
- 0x7C1C0600, // 008B CALL R7 3
- 0x80040E00, // 008C RET 1 R7
- 0x70020007, // 008D JMP #0096
- 0x601C0003, // 008E GETGBL R7 G3
- 0x5C200000, // 008F MOVE R8 R0
- 0x7C1C0200, // 0090 CALL R7 1
- 0x8C1C0F11, // 0091 GETMET R7 R7 K17
- 0x5C240200, // 0092 MOVE R9 R1
- 0x5C280400, // 0093 MOVE R10 R2
- 0x7C1C0600, // 0094 CALL R7 3
- 0x80040E00, // 0095 RET 1 R7
- 0x80000000, // 0096 RET 0
+ 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
})
)
);
@@ -661,7 +662,7 @@ be_local_class(Matter_Plugin_Shutter,
{ be_const_key_weak(shadow_shutter_direction, -1), be_const_var(4) },
{ be_const_key_weak(shadow_shutter_target, -1), be_const_var(2) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Shutter_invoke_request_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Relay_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
{ 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[]) {
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h
index 9e89d19d9..bfd316679 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h
@@ -207,8 +207,8 @@ be_local_closure(Matter_Plugin_ShutterTilt_invoke_request, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */
be_nested_proto(
- 13, /* nstack */
- 3, /* argc */
+ 14, /* nstack */
+ 4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -221,7 +221,7 @@ be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_nested_str_weak(create_TLV),
+ /* K5 */ be_nested_str_weak(set),
/* K6 */ be_nested_str_weak(U1),
/* K7 */ be_const_int(1),
/* K8 */ be_nested_str_weak(update_tilt_min_max),
@@ -239,119 +239,120 @@ be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[112]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x88100502, // 0002 GETMBR R4 R2 K2
- 0x88140503, // 0003 GETMBR R5 R2 K3
- 0x541A0101, // 0004 LDINT R6 258
- 0x1C180806, // 0005 EQ R6 R4 R6
- 0x781A0060, // 0006 JMPF R6 #0068
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x541A0006, // 0009 LDINT R6 7
- 0x1C180A06, // 000A EQ R6 R5 R6
- 0x781A0008, // 000B JMPF R6 #0015
- 0x8C180705, // 000C GETMET R6 R3 K5
- 0x88200706, // 000D GETMBR R8 R3 K6
- 0x54260007, // 000E LDINT R9 8
- 0x00260E09, // 000F ADD R9 K7 R9
- 0x542A000F, // 0010 LDINT R10 16
- 0x0024120A, // 0011 ADD R9 R9 R10
- 0x7C180600, // 0012 CALL R6 3
- 0x80040C00, // 0013 RET 1 R6
+ ( &(const binstruction[113]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140502, // 0002 GETMBR R5 R2 K2
+ 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0x541E0101, // 0004 LDINT R7 258
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0060, // 0006 JMPF R7 #0068
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x541E0006, // 0009 LDINT R7 7
+ 0x1C1C0C07, // 000A EQ R7 R6 R7
+ 0x781E0008, // 000B JMPF R7 #0015
+ 0x8C1C0705, // 000C GETMET R7 R3 K5
+ 0x88240906, // 000D GETMBR R9 R4 K6
+ 0x542A0007, // 000E LDINT R10 8
+ 0x002A0E0A, // 000F ADD R10 K7 R10
+ 0x542E000F, // 0010 LDINT R11 16
+ 0x0028140B, // 0011 ADD R10 R10 R11
+ 0x7C1C0600, // 0012 CALL R7 3
+ 0x80040E00, // 0013 RET 1 R7
0x70020052, // 0014 JMP #0068
- 0x541A000E, // 0015 LDINT R6 15
- 0x1C180A06, // 0016 EQ R6 R5 R6
- 0x781A0021, // 0017 JMPF R6 #003A
- 0x8C180108, // 0018 GETMET R6 R0 K8
- 0x7C180200, // 0019 CALL R6 1
- 0x88180109, // 001A GETMBR R6 R0 K9
- 0x4C1C0000, // 001B LDNIL R7
- 0x20180C07, // 001C NE R6 R6 R7
- 0x781A0015, // 001D JMPF R6 #0034
- 0x8818010A, // 001E GETMBR R6 R0 K10
- 0x4C1C0000, // 001F LDNIL R7
- 0x20180C07, // 0020 NE R6 R6 R7
- 0x781A0011, // 0021 JMPF R6 #0034
- 0xB81A1600, // 0022 GETNGBL R6 K11
- 0x8C180D0C, // 0023 GETMET R6 R6 K12
- 0x8820010D, // 0024 GETMBR R8 R0 K13
- 0x88240109, // 0025 GETMBR R9 R0 K9
- 0x04201009, // 0026 SUB R8 R8 R9
- 0x5824000E, // 0027 LDCONST R9 K14
- 0x8828010A, // 0028 GETMBR R10 R0 K10
- 0x882C0109, // 0029 GETMBR R11 R0 K9
- 0x0428140B, // 002A SUB R10 R10 R11
- 0x582C000E, // 002B LDCONST R11 K14
- 0x5432270F, // 002C LDINT R12 10000
- 0x7C180C00, // 002D CALL R6 6
- 0x8C1C0705, // 002E GETMET R7 R3 K5
- 0x8824070F, // 002F GETMBR R9 R3 K15
- 0x5C280C00, // 0030 MOVE R10 R6
- 0x7C1C0600, // 0031 CALL R7 3
- 0x80040E00, // 0032 RET 1 R7
+ 0x541E000E, // 0015 LDINT R7 15
+ 0x1C1C0C07, // 0016 EQ R7 R6 R7
+ 0x781E0021, // 0017 JMPF R7 #003A
+ 0x8C1C0108, // 0018 GETMET R7 R0 K8
+ 0x7C1C0200, // 0019 CALL R7 1
+ 0x881C0109, // 001A GETMBR R7 R0 K9
+ 0x4C200000, // 001B LDNIL R8
+ 0x201C0E08, // 001C NE R7 R7 R8
+ 0x781E0015, // 001D JMPF R7 #0034
+ 0x881C010A, // 001E GETMBR R7 R0 K10
+ 0x4C200000, // 001F LDNIL R8
+ 0x201C0E08, // 0020 NE R7 R7 R8
+ 0x781E0011, // 0021 JMPF R7 #0034
+ 0xB81E1600, // 0022 GETNGBL R7 K11
+ 0x8C1C0F0C, // 0023 GETMET R7 R7 K12
+ 0x8824010D, // 0024 GETMBR R9 R0 K13
+ 0x88280109, // 0025 GETMBR R10 R0 K9
+ 0x0424120A, // 0026 SUB R9 R9 R10
+ 0x5828000E, // 0027 LDCONST R10 K14
+ 0x882C010A, // 0028 GETMBR R11 R0 K10
+ 0x88300109, // 0029 GETMBR R12 R0 K9
+ 0x042C160C, // 002A SUB R11 R11 R12
+ 0x5830000E, // 002B LDCONST R12 K14
+ 0x5436270F, // 002C LDINT R13 10000
+ 0x7C1C0C00, // 002D CALL R7 6
+ 0x8C200705, // 002E GETMET R8 R3 K5
+ 0x8828090F, // 002F GETMBR R10 R4 K15
+ 0x5C2C0E00, // 0030 MOVE R11 R7
+ 0x7C200600, // 0031 CALL R8 3
+ 0x80041000, // 0032 RET 1 R8
0x70020004, // 0033 JMP #0039
- 0x8C180705, // 0034 GETMET R6 R3 K5
- 0x88200710, // 0035 GETMBR R8 R3 K16
- 0x4C240000, // 0036 LDNIL R9
- 0x7C180600, // 0037 CALL R6 3
- 0x80040C00, // 0038 RET 1 R6
+ 0x8C1C0705, // 0034 GETMET R7 R3 K5
+ 0x88240910, // 0035 GETMBR R9 R4 K16
+ 0x4C280000, // 0036 LDNIL R10
+ 0x7C1C0600, // 0037 CALL R7 3
+ 0x80040E00, // 0038 RET 1 R7
0x7002002D, // 0039 JMP #0068
- 0x541A000B, // 003A LDINT R6 12
- 0x1C180A06, // 003B EQ R6 R5 R6
- 0x781A001F, // 003C JMPF R6 #005D
- 0x88180109, // 003D GETMBR R6 R0 K9
- 0x4C1C0000, // 003E LDNIL R7
- 0x20180C07, // 003F NE R6 R6 R7
- 0x781A0015, // 0040 JMPF R6 #0057
- 0x8818010A, // 0041 GETMBR R6 R0 K10
- 0x4C1C0000, // 0042 LDNIL R7
- 0x20180C07, // 0043 NE R6 R6 R7
- 0x781A0011, // 0044 JMPF R6 #0057
- 0xB81A1600, // 0045 GETNGBL R6 K11
- 0x8C180D0C, // 0046 GETMET R6 R6 K12
- 0x8820010D, // 0047 GETMBR R8 R0 K13
- 0x88240109, // 0048 GETMBR R9 R0 K9
- 0x04201009, // 0049 SUB R8 R8 R9
- 0x5824000E, // 004A LDCONST R9 K14
- 0x8828010A, // 004B GETMBR R10 R0 K10
- 0x882C0109, // 004C GETMBR R11 R0 K9
- 0x0428140B, // 004D SUB R10 R10 R11
- 0x582C000E, // 004E LDCONST R11 K14
- 0x5432270F, // 004F LDINT R12 10000
- 0x7C180C00, // 0050 CALL R6 6
- 0x8C1C0705, // 0051 GETMET R7 R3 K5
- 0x8824070F, // 0052 GETMBR R9 R3 K15
- 0x5C280C00, // 0053 MOVE R10 R6
- 0x7C1C0600, // 0054 CALL R7 3
- 0x80040E00, // 0055 RET 1 R7
+ 0x541E000B, // 003A LDINT R7 12
+ 0x1C1C0C07, // 003B EQ R7 R6 R7
+ 0x781E001F, // 003C JMPF R7 #005D
+ 0x881C0109, // 003D GETMBR R7 R0 K9
+ 0x4C200000, // 003E LDNIL R8
+ 0x201C0E08, // 003F NE R7 R7 R8
+ 0x781E0015, // 0040 JMPF R7 #0057
+ 0x881C010A, // 0041 GETMBR R7 R0 K10
+ 0x4C200000, // 0042 LDNIL R8
+ 0x201C0E08, // 0043 NE R7 R7 R8
+ 0x781E0011, // 0044 JMPF R7 #0057
+ 0xB81E1600, // 0045 GETNGBL R7 K11
+ 0x8C1C0F0C, // 0046 GETMET R7 R7 K12
+ 0x8824010D, // 0047 GETMBR R9 R0 K13
+ 0x88280109, // 0048 GETMBR R10 R0 K9
+ 0x0424120A, // 0049 SUB R9 R9 R10
+ 0x5828000E, // 004A LDCONST R10 K14
+ 0x882C010A, // 004B GETMBR R11 R0 K10
+ 0x88300109, // 004C GETMBR R12 R0 K9
+ 0x042C160C, // 004D SUB R11 R11 R12
+ 0x5830000E, // 004E LDCONST R12 K14
+ 0x5436270F, // 004F LDINT R13 10000
+ 0x7C1C0C00, // 0050 CALL R7 6
+ 0x8C200705, // 0051 GETMET R8 R3 K5
+ 0x8828090F, // 0052 GETMBR R10 R4 K15
+ 0x5C2C0E00, // 0053 MOVE R11 R7
+ 0x7C200600, // 0054 CALL R8 3
+ 0x80041000, // 0055 RET 1 R8
0x70020004, // 0056 JMP #005C
- 0x8C180705, // 0057 GETMET R6 R3 K5
- 0x88200710, // 0058 GETMBR R8 R3 K16
- 0x4C240000, // 0059 LDNIL R9
- 0x7C180600, // 005A CALL R6 3
- 0x80040C00, // 005B RET 1 R6
+ 0x8C1C0705, // 0057 GETMET R7 R3 K5
+ 0x88240910, // 0058 GETMBR R9 R4 K16
+ 0x4C280000, // 0059 LDNIL R10
+ 0x7C1C0600, // 005A CALL R7 3
+ 0x80040E00, // 005B RET 1 R7
0x7002000A, // 005C JMP #0068
- 0x541AFFFB, // 005D LDINT R6 65532
- 0x1C180A06, // 005E EQ R6 R5 R6
- 0x781A0007, // 005F JMPF R6 #0068
- 0x8C180705, // 0060 GETMET R6 R3 K5
- 0x88200711, // 0061 GETMBR R8 R3 K17
- 0x54260003, // 0062 LDINT R9 4
- 0x00262409, // 0063 ADD R9 K18 R9
- 0x542A000F, // 0064 LDINT R10 16
- 0x0024120A, // 0065 ADD R9 R9 R10
- 0x7C180600, // 0066 CALL R6 3
- 0x80040C00, // 0067 RET 1 R6
- 0x60180003, // 0068 GETGBL R6 G3
- 0x5C1C0000, // 0069 MOVE R7 R0
- 0x7C180200, // 006A CALL R6 1
- 0x8C180D13, // 006B GETMET R6 R6 K19
- 0x5C200200, // 006C MOVE R8 R1
- 0x5C240400, // 006D MOVE R9 R2
- 0x7C180600, // 006E CALL R6 3
- 0x80040C00, // 006F RET 1 R6
+ 0x541EFFFB, // 005D LDINT R7 65532
+ 0x1C1C0C07, // 005E EQ R7 R6 R7
+ 0x781E0007, // 005F JMPF R7 #0068
+ 0x8C1C0705, // 0060 GETMET R7 R3 K5
+ 0x88240911, // 0061 GETMBR R9 R4 K17
+ 0x542A0003, // 0062 LDINT R10 4
+ 0x002A240A, // 0063 ADD R10 K18 R10
+ 0x542E000F, // 0064 LDINT R11 16
+ 0x0028140B, // 0065 ADD R10 R10 R11
+ 0x7C1C0600, // 0066 CALL R7 3
+ 0x80040E00, // 0067 RET 1 R7
+ 0x601C0003, // 0068 GETGBL R7 G3
+ 0x5C200000, // 0069 MOVE R8 R0
+ 0x7C1C0200, // 006A CALL R7 1
+ 0x8C1C0F13, // 006B GETMET R7 R7 K19
+ 0x5C240200, // 006C MOVE R9 R1
+ 0x5C280400, // 006D MOVE R10 R2
+ 0x5C2C0600, // 006E MOVE R11 R3
+ 0x7C1C0800, // 006F CALL R7 4
+ 0x80040E00, // 0070 RET 1 R7
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h
new file mode 100644
index 000000000..4150c0997
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h
@@ -0,0 +1,331 @@
+/* Solidification of Matter_Profiler.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Profiler;
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(Matter_Profiler_start, /* 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[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(active),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(PREALLOCATED),
+ /* K3 */ be_nested_str_weak(millis),
+ /* K4 */ be_nested_str_weak(names),
+ /* K5 */ be_const_int(1),
+ /* K6 */ be_nested_str_weak(len),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(gc),
+ /* K9 */ be_nested_str_weak(log),
+ /* K10 */ be_nested_str_weak(start),
+ }),
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x74060000, // 0001 JMPT R1 #0003
+ 0x80000200, // 0002 RET 0
+ 0x58040001, // 0003 LDCONST R1 K1
+ 0x88080102, // 0004 GETMBR R2 R0 K2
+ 0x14080202, // 0005 LT R2 R1 R2
+ 0x780A0007, // 0006 JMPF R2 #000F
+ 0x88080103, // 0007 GETMBR R2 R0 K3
+ 0x4C0C0000, // 0008 LDNIL R3
+ 0x98080203, // 0009 SETIDX R2 R1 R3
+ 0x88080104, // 000A GETMBR R2 R0 K4
+ 0x4C0C0000, // 000B LDNIL R3
+ 0x98080203, // 000C SETIDX R2 R1 R3
+ 0x00040305, // 000D ADD R1 R1 K5
+ 0x7001FFF4, // 000E JMP #0004
+ 0x90020D01, // 000F SETMBR R0 K6 K1
+ 0xB80A0E00, // 0010 GETNGBL R2 K7
+ 0x8C080508, // 0011 GETMET R2 R2 K8
+ 0x7C080200, // 0012 CALL R2 1
+ 0x8C080109, // 0013 GETMET R2 R0 K9
+ 0x5810000A, // 0014 LDCONST R4 K10
+ 0x7C080400, // 0015 CALL R2 2
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Profiler_init, /* 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[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(active),
+ /* K1 */ be_nested_str_weak(millis),
+ /* K2 */ be_nested_str_weak(resize),
+ /* K3 */ be_nested_str_weak(PREALLOCATED),
+ /* K4 */ be_nested_str_weak(names),
+ /* K5 */ be_nested_str_weak(allocs),
+ /* K6 */ be_nested_str_weak(reallocs),
+ /* K7 */ be_nested_str_weak(len),
+ /* K8 */ be_const_int(0),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0x50040000, // 0000 LDBOOL R1 0 0
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x60040012, // 0002 GETGBL R1 G18
+ 0x7C040000, // 0003 CALL R1 0
+ 0x90020201, // 0004 SETMBR R0 K1 R1
+ 0x88040101, // 0005 GETMBR R1 R0 K1
+ 0x8C040302, // 0006 GETMET R1 R1 K2
+ 0x880C0103, // 0007 GETMBR R3 R0 K3
+ 0x7C040400, // 0008 CALL R1 2
+ 0x60040012, // 0009 GETGBL R1 G18
+ 0x7C040000, // 000A CALL R1 0
+ 0x90020801, // 000B SETMBR R0 K4 R1
+ 0x88040104, // 000C GETMBR R1 R0 K4
+ 0x8C040302, // 000D GETMET R1 R1 K2
+ 0x880C0103, // 000E GETMBR R3 R0 K3
+ 0x7C040400, // 000F CALL R1 2
+ 0x60040012, // 0010 GETGBL R1 G18
+ 0x7C040000, // 0011 CALL R1 0
+ 0x90020A01, // 0012 SETMBR R0 K5 R1
+ 0x88040105, // 0013 GETMBR R1 R0 K5
+ 0x8C040302, // 0014 GETMET R1 R1 K2
+ 0x880C0103, // 0015 GETMBR R3 R0 K3
+ 0x7C040400, // 0016 CALL R1 2
+ 0x60040012, // 0017 GETGBL R1 G18
+ 0x7C040000, // 0018 CALL R1 0
+ 0x90020C01, // 0019 SETMBR R0 K6 R1
+ 0x88040106, // 001A GETMBR R1 R0 K6
+ 0x8C040302, // 001B GETMET R1 R1 K2
+ 0x880C0103, // 001C GETMBR R3 R0 K3
+ 0x7C040400, // 001D CALL R1 2
+ 0x90020F08, // 001E SETMBR R0 K7 K8
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_active
+********************************************************************/
+be_local_closure(Matter_Profiler_set_active, /* 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(active),
+ }),
+ be_str_weak(set_active),
+ &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: log
+********************************************************************/
+be_local_closure(Matter_Profiler_log, /* 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[10]) { /* constants */
+ /* K0 */ be_nested_str_weak(active),
+ /* K1 */ be_nested_str_weak(debug),
+ /* K2 */ be_nested_str_weak(len),
+ /* K3 */ be_nested_str_weak(PREALLOCATED),
+ /* K4 */ be_nested_str_weak(millis),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(names),
+ /* K7 */ be_nested_str_weak(allocs),
+ /* K8 */ be_nested_str_weak(reallocs),
+ /* K9 */ be_const_int(1),
+ }),
+ be_str_weak(log),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x740A0000, // 0001 JMPT R2 #0003
+ 0x80000400, // 0002 RET 0
+ 0xA40A0200, // 0003 IMPORT R2 K1
+ 0x880C0102, // 0004 GETMBR R3 R0 K2
+ 0x88100103, // 0005 GETMBR R4 R0 K3
+ 0x28100604, // 0006 GE R4 R3 R4
+ 0x78120000, // 0007 JMPF R4 #0009
+ 0x80000800, // 0008 RET 0
+ 0x88100104, // 0009 GETMBR R4 R0 K4
+ 0xB8160A00, // 000A GETNGBL R5 K5
+ 0x8C140B04, // 000B GETMET R5 R5 K4
+ 0x7C140200, // 000C CALL R5 1
+ 0x98100605, // 000D SETIDX R4 R3 R5
+ 0x88100106, // 000E GETMBR R4 R0 K6
+ 0x98100601, // 000F SETIDX R4 R3 R1
+ 0x88100107, // 0010 GETMBR R4 R0 K7
+ 0x8C140507, // 0011 GETMET R5 R2 K7
+ 0x7C140200, // 0012 CALL R5 1
+ 0x98100605, // 0013 SETIDX R4 R3 R5
+ 0x88100108, // 0014 GETMBR R4 R0 K8
+ 0x8C140508, // 0015 GETMET R5 R2 K8
+ 0x7C140200, // 0016 CALL R5 1
+ 0x98100605, // 0017 SETIDX R4 R3 R5
+ 0x88100102, // 0018 GETMBR R4 R0 K2
+ 0x00100909, // 0019 ADD R4 R4 K9
+ 0x90020404, // 001A SETMBR R0 K2 R4
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: dump
+********************************************************************/
+be_local_closure(Matter_Profiler_dump, /* 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[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(active),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A),
+ /* K5 */ be_nested_str_weak(millis),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(allocs),
+ /* K8 */ be_nested_str_weak(reallocs),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(len),
+ /* K11 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27),
+ /* K12 */ be_nested_str_weak(names),
+ }),
+ be_str_weak(dump),
+ &be_const_str_solidified,
+ ( &(const binstruction[39]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x740A0000, // 0001 JMPT R2 #0003
+ 0x80000400, // 0002 RET 0
+ 0x8C080101, // 0003 GETMET R2 R0 K1
+ 0x58100002, // 0004 LDCONST R4 K2
+ 0x7C080400, // 0005 CALL R2 2
+ 0xB80A0600, // 0006 GETNGBL R2 K3
+ 0x8C080501, // 0007 GETMET R2 R2 K1
+ 0x58100004, // 0008 LDCONST R4 K4
+ 0x5C140200, // 0009 MOVE R5 R1
+ 0x7C080600, // 000A CALL R2 3
+ 0x88080105, // 000B GETMBR R2 R0 K5
+ 0x94080506, // 000C GETIDX R2 R2 K6
+ 0x880C0107, // 000D GETMBR R3 R0 K7
+ 0x940C0706, // 000E GETIDX R3 R3 K6
+ 0x88100108, // 000F GETMBR R4 R0 K8
+ 0x94100906, // 0010 GETIDX R4 R4 K6
+ 0x58140009, // 0011 LDCONST R5 K9
+ 0x8818010A, // 0012 GETMBR R6 R0 K10
+ 0x14180A06, // 0013 LT R6 R5 R6
+ 0x781A0010, // 0014 JMPF R6 #0026
+ 0xB81A0600, // 0015 GETNGBL R6 K3
+ 0x8C180D01, // 0016 GETMET R6 R6 K1
+ 0x60200018, // 0017 GETGBL R8 G24
+ 0x5824000B, // 0018 LDCONST R9 K11
+ 0x88280105, // 0019 GETMBR R10 R0 K5
+ 0x94281405, // 001A GETIDX R10 R10 R5
+ 0x04281402, // 001B SUB R10 R10 R2
+ 0x882C0107, // 001C GETMBR R11 R0 K7
+ 0x942C1605, // 001D GETIDX R11 R11 R5
+ 0x042C1603, // 001E SUB R11 R11 R3
+ 0x8830010C, // 001F GETMBR R12 R0 K12
+ 0x94301805, // 0020 GETIDX R12 R12 R5
+ 0x7C200800, // 0021 CALL R8 4
+ 0x5C240200, // 0022 MOVE R9 R1
+ 0x7C180600, // 0023 CALL R6 3
+ 0x00140B09, // 0024 ADD R5 R5 K9
+ 0x7001FFEB, // 0025 JMP #0012
+ 0x80000000, // 0026 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Profiler
+********************************************************************/
+be_local_class(Matter_Profiler,
+ 6,
+ NULL,
+ be_nested_map(12,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(dump, 8), be_const_closure(Matter_Profiler_dump_closure) },
+ { be_const_key_weak(millis, 5), be_const_var(0) },
+ { be_const_key_weak(reallocs, -1), be_const_var(4) },
+ { be_const_key_weak(init, 1), be_const_closure(Matter_Profiler_init_closure) },
+ { be_const_key_weak(len, -1), be_const_var(5) },
+ { be_const_key_weak(active, -1), be_const_var(2) },
+ { be_const_key_weak(set_active, -1), be_const_closure(Matter_Profiler_set_active_closure) },
+ { be_const_key_weak(names, -1), be_const_var(1) },
+ { be_const_key_weak(allocs, 10), be_const_var(3) },
+ { be_const_key_weak(log, -1), be_const_closure(Matter_Profiler_log_closure) },
+ { be_const_key_weak(PREALLOCATED, -1), be_const_int(50) },
+ { be_const_key_weak(start, 0), be_const_closure(Matter_Profiler_start_closure) },
+ })),
+ be_str_weak(Matter_Profiler)
+);
+/*******************************************************************/
+
+void be_load_Matter_Profiler_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Profiler);
+ be_setglobal(vm, "Matter_Profiler");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
index b65e1f6fd..b0e498421 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
@@ -7,11 +7,11 @@
extern const bclass be_class_Matter_Session;
/********************************************************************
-** Solidified function: before_remove
+** Solidified function: close
********************************************************************/
-be_local_closure(Matter_Session_before_remove, /* name */
+be_local_closure(Matter_Session_close, /* name */
be_nested_proto(
- 6, /* nstack */
+ 8, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -19,25 +19,93 @@ be_local_closure(Matter_Session_before_remove, /* name */
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(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29),
- /* K3 */ be_nested_str_weak(local_session_id),
- /* K4 */ be_const_int(3),
+ ( &(const bvalue[23]) { /* constants */
+ /* K0 */ be_nested_str_weak(local_session_id),
+ /* K1 */ be_nested_str_weak(__future_local_session_id),
+ /* K2 */ be_nested_str_weak(initiator_session_id),
+ /* K3 */ be_nested_str_weak(__future_initiator_session_id),
+ /* K4 */ be_nested_str_weak(_counter_rcv_impl),
+ /* K5 */ be_nested_str_weak(reset),
+ /* K6 */ be_nested_str_weak(_counter_snd_impl),
+ /* K7 */ be_nested_str_weak(counter_rcv),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str_weak(counter_snd),
+ /* K10 */ be_nested_str_weak(next),
+ /* K11 */ be_nested_str_weak(i2rkey),
+ /* K12 */ be_nested_str_weak(_i2r_privacy),
+ /* K13 */ be_nested_str_weak(r2ikey),
+ /* K14 */ be_nested_str_weak(attestation_challenge),
+ /* K15 */ be_nested_str_weak(introspect),
+ /* K16 */ be_nested_str_weak(members),
+ /* K17 */ be_nested_str_weak(get),
+ /* K18 */ be_nested_str_weak(function),
+ /* K19 */ be_nested_str_weak(instance),
+ /* K20 */ be_nested_str_weak(_),
+ /* K21 */ be_const_int(1),
+ /* K22 */ be_nested_str_weak(stop_iteration),
}),
- be_str_weak(before_remove),
+ be_str_weak(close),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x600C0018, // 0002 GETGBL R3 G24
- 0x58100002, // 0003 LDCONST R4 K2
- 0x88140103, // 0004 GETMBR R5 R0 K3
- 0x7C0C0400, // 0005 CALL R3 2
- 0x58100004, // 0006 LDCONST R4 K4
- 0x7C040600, // 0007 CALL R1 3
- 0x80000000, // 0008 RET 0
+ ( &(const binstruction[59]) { /* code */
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x88040103, // 0002 GETMBR R1 R0 K3
+ 0x90020401, // 0003 SETMBR R0 K2 R1
+ 0x88040104, // 0004 GETMBR R1 R0 K4
+ 0x8C040305, // 0005 GETMET R1 R1 K5
+ 0x7C040200, // 0006 CALL R1 1
+ 0x88040106, // 0007 GETMBR R1 R0 K6
+ 0x8C040305, // 0008 GETMET R1 R1 K5
+ 0x7C040200, // 0009 CALL R1 1
+ 0x90020F08, // 000A SETMBR R0 K7 K8
+ 0x88040106, // 000B GETMBR R1 R0 K6
+ 0x8C04030A, // 000C GETMET R1 R1 K10
+ 0x7C040200, // 000D CALL R1 1
+ 0x90021201, // 000E SETMBR R0 K9 R1
+ 0x4C040000, // 000F LDNIL R1
+ 0x90021601, // 0010 SETMBR R0 K11 R1
+ 0x4C040000, // 0011 LDNIL R1
+ 0x90021801, // 0012 SETMBR R0 K12 R1
+ 0x4C040000, // 0013 LDNIL R1
+ 0x90021A01, // 0014 SETMBR R0 K13 R1
+ 0x4C040000, // 0015 LDNIL R1
+ 0x90021C01, // 0016 SETMBR R0 K14 R1
+ 0xA4061E00, // 0017 IMPORT R1 K15
+ 0x60080010, // 0018 GETGBL R2 G16
+ 0x8C0C0310, // 0019 GETMET R3 R1 K16
+ 0x5C140000, // 001A MOVE R5 R0
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x7C080200, // 001C CALL R2 1
+ 0xA8020018, // 001D EXBLK 0 #0037
+ 0x5C0C0400, // 001E MOVE R3 R2
+ 0x7C0C0000, // 001F CALL R3 0
+ 0x8C100311, // 0020 GETMET R4 R1 K17
+ 0x5C180000, // 0021 MOVE R6 R0
+ 0x5C1C0600, // 0022 MOVE R7 R3
+ 0x7C100600, // 0023 CALL R4 3
+ 0x60140004, // 0024 GETGBL R5 G4
+ 0x5C180800, // 0025 MOVE R6 R4
+ 0x7C140200, // 0026 CALL R5 1
+ 0x20140B12, // 0027 NE R5 R5 K18
+ 0x7816000C, // 0028 JMPF R5 #0036
+ 0x60140004, // 0029 GETGBL R5 G4
+ 0x5C180800, // 002A MOVE R6 R4
+ 0x7C140200, // 002B CALL R5 1
+ 0x20140B13, // 002C NE R5 R5 K19
+ 0x78160007, // 002D JMPF R5 #0036
+ 0x94140708, // 002E GETIDX R5 R3 K8
+ 0x1C140B14, // 002F EQ R5 R5 K20
+ 0x78160004, // 0030 JMPF R5 #0036
+ 0x94140715, // 0031 GETIDX R5 R3 K21
+ 0x1C140B14, // 0032 EQ R5 R5 K20
+ 0x78160001, // 0033 JMPF R5 #0036
+ 0x4C140000, // 0034 LDNIL R5
+ 0x90000605, // 0035 SETMBR R0 R3 R5
+ 0x7001FFE6, // 0036 JMP #001E
+ 0x58080016, // 0037 LDCONST R2 K22
+ 0xAC080200, // 0038 CATCH R2 1 0
+ 0xB0080000, // 0039 RAISE 2 R0 R0
+ 0x80000000, // 003A RET 0
})
)
);
@@ -45,11 +113,11 @@ be_local_closure(Matter_Session_before_remove, /* name */
/********************************************************************
-** Solidified function: get_pk
+** Solidified function: update
********************************************************************/
-be_local_closure(Matter_Session_get_pk, /* name */
+be_local_closure(Matter_Session_update, /* name */
be_nested_proto(
- 5, /* nstack */
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -57,33 +125,46 @@ be_local_closure(Matter_Session_get_pk, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(get_pk),
- /* K2 */ be_nested_str_weak(_temp_pk),
- /* K3 */ be_nested_str_weak(crypto),
- /* K4 */ be_nested_str_weak(random),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(last_used),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(rtc_utc),
}),
- be_str_weak(get_pk),
+ be_str_weak(update),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
+ ( &(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_ac
+********************************************************************/
+be_local_closure(Matter_Session_get_ac, /* 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(attestation_challenge),
+ }),
+ be_str_weak(get_ac),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060004, // 0001 JMPF R1 #0007
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x8C040301, // 0003 GETMET R1 R1 K1
- 0x7C040200, // 0004 CALL R1 1
- 0x80040200, // 0005 RET 1 R1
- 0x70020008, // 0006 JMP #0010
- 0x88040102, // 0007 GETMBR R1 R0 K2
- 0x74060004, // 0008 JMPT R1 #000E
- 0xA4060600, // 0009 IMPORT R1 K3
- 0x8C080304, // 000A GETMET R2 R1 K4
- 0x5412001F, // 000B LDINT R4 32
- 0x7C080400, // 000C CALL R2 2
- 0x90020402, // 000D SETMBR R0 K2 R2
- 0x88040102, // 000E GETMBR R1 R0 K2
- 0x80040200, // 000F RET 1 R1
- 0x80000000, // 0010 RET 0
+ 0x80040200, // 0001 RET 1 R1
})
)
);
@@ -91,11 +172,11 @@ be_local_closure(Matter_Session_get_pk, /* name */
/********************************************************************
-** Solidified function: set_mode_CASE
+** Solidified function: get_fabric
********************************************************************/
-be_local_closure(Matter_Session_set_mode_CASE, /* name */
+be_local_closure(Matter_Session_get_fabric, /* name */
be_nested_proto(
- 4, /* nstack */
+ 2, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -103,17 +184,14 @@ be_local_closure(Matter_Session_set_mode_CASE, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(set_mode),
- /* K1 */ be_nested_str_weak(_CASE),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(_fabric),
}),
- be_str_weak(set_mode_CASE),
+ be_str_weak(get_fabric),
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
})
)
);
@@ -150,50 +228,9 @@ be_local_closure(Matter_Session_get_noc, /* name */
/********************************************************************
-** Solidified function: get_temp_ca_pub
+** Solidified function: get_device_id
********************************************************************/
-be_local_closure(Matter_Session_get_temp_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(_temp_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_temp_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: get_fabric_compressed
-********************************************************************/
-be_local_closure(Matter_Session_get_fabric_compressed, /* name */
+be_local_closure(Matter_Session_get_device_id, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -205,14 +242,18 @@ be_local_closure(Matter_Session_get_fabric_compressed, /* name */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(fabric_compressed),
+ /* K1 */ be_nested_str_weak(device_id),
}),
- be_str_weak(get_fabric_compressed),
+ be_str_weak(get_device_id),
&be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
+ ( &(const binstruction[ 7]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x88040301, // 0003 GETMBR R1 R1 K1
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
})
)
);
@@ -220,28 +261,34 @@ be_local_closure(Matter_Session_get_fabric_compressed, /* name */
/********************************************************************
-** Solidified function: get_fabric_label
+** Solidified function: set_fabric_label
********************************************************************/
-be_local_closure(Matter_Session_get_fabric_label, /* name */
+be_local_closure(Matter_Session_set_fabric_label, /* name */
be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
+ 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(_fabric),
- /* K1 */ be_nested_str_weak(fabric_label),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(_fabric),
+ /* K2 */ be_nested_str_weak(fabric_label),
}),
- be_str_weak(get_fabric_label),
+ be_str_weak(set_fabric_label),
&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[ 8]) { /* code */
+ 0x60080004, // 0000 GETGBL R2 G4
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x1C080500, // 0003 EQ R2 R2 K0
+ 0x780A0001, // 0004 JMPF R2 #0007
+ 0x88080101, // 0005 GETMBR R2 R0 K1
+ 0x900A0401, // 0006 SETMBR R2 K2 R1
+ 0x80000000, // 0007 RET 0
})
)
);
@@ -284,93 +331,6 @@ be_local_closure(Matter_Session_set_keys, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: set_mode_PASE
-********************************************************************/
-be_local_closure(Matter_Session_set_mode_PASE, /* 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_weak(set_mode),
- /* K1 */ be_nested_str_weak(_PASE),
- }),
- be_str_weak(set_mode_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_CASE
-********************************************************************/
-be_local_closure(Matter_Session_is_CASE, /* 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(mode),
- /* K1 */ be_nested_str_weak(_CASE),
- }),
- be_str_weak(is_CASE),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_mode
-********************************************************************/
-be_local_closure(Matter_Session_get_mode, /* 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(mode),
- }),
- be_str_weak(get_mode),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: get_r2i
********************************************************************/
@@ -539,653 +499,6 @@ be_local_closure(Matter_Session_tojson, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: get_i2r
-********************************************************************/
-be_local_closure(Matter_Session_get_i2r, /* 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(i2rkey),
- }),
- be_str_weak(get_i2r),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_PASE
-********************************************************************/
-be_local_closure(Matter_Session_is_PASE, /* 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(mode),
- /* K1 */ be_nested_str_weak(_PASE),
- }),
- be_str_weak(is_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: gen_CSR
-********************************************************************/
-be_local_closure(Matter_Session_gen_CSR, /* name */
- be_nested_proto(
- 15, /* 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(get_pk),
- /* K1 */ be_nested_str_weak(crypto),
- /* K2 */ be_nested_str_weak(EC_P256),
- /* K3 */ be_nested_str_weak(public_key),
- /* K4 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200),
- /* K5 */ be_nested_str_weak(A000),
- /* K6 */ be_nested_str_weak(300C06082A8648CE3D0403020500),
- /* K7 */ be_nested_str_weak(ecdsa_sign_sha256_asn1),
- /* K8 */ be_nested_str_weak(add),
- /* K9 */ be_const_int(3),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(0),
- }),
- be_str_weak(gen_CSR),
- &be_const_str_solidified,
- ( &(const binstruction[73]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0xA40A0200, // 0002 IMPORT R2 K1
- 0x8C0C0502, // 0003 GETMET R3 R2 K2
- 0x7C0C0200, // 0004 CALL R3 1
- 0x8C100703, // 0005 GETMET R4 R3 K3
- 0x5C180200, // 0006 MOVE R6 R1
- 0x7C100400, // 0007 CALL R4 2
- 0x60140015, // 0008 GETGBL R5 G21
- 0x58180004, // 0009 LDCONST R6 K4
- 0x7C140200, // 000A CALL R5 1
- 0x40180A04, // 000B CONNECT R6 R5 R4
- 0x60180015, // 000C GETGBL R6 G21
- 0x581C0005, // 000D LDCONST R7 K5
- 0x7C180200, // 000E CALL R6 1
- 0x40180A06, // 000F CONNECT R6 R5 R6
- 0x60180015, // 0010 GETGBL R6 G21
- 0x581C0006, // 0011 LDCONST R7 K6
- 0x7C180200, // 0012 CALL R6 1
- 0x8C1C0707, // 0013 GETMET R7 R3 K7
- 0x5C240200, // 0014 MOVE R9 R1
- 0x5C280A00, // 0015 MOVE R10 R5
- 0x7C1C0600, // 0016 CALL R7 3
- 0x60200015, // 0017 GETGBL R8 G21
- 0x5426007F, // 0018 LDINT R9 128
- 0x7C200200, // 0019 CALL R8 1
- 0x8C241108, // 001A GETMET R9 R8 K8
- 0x582C0009, // 001B LDCONST R11 K9
- 0x5830000A, // 001C LDCONST R12 K10
- 0x7C240600, // 001D CALL R9 3
- 0x8C241108, // 001E GETMET R9 R8 K8
- 0x602C000C, // 001F GETGBL R11 G12
- 0x5C300E00, // 0020 MOVE R12 R7
- 0x7C2C0200, // 0021 CALL R11 1
- 0x002C170A, // 0022 ADD R11 R11 K10
- 0x5830000A, // 0023 LDCONST R12 K10
- 0x7C240600, // 0024 CALL R9 3
- 0x8C241108, // 0025 GETMET R9 R8 K8
- 0x582C000B, // 0026 LDCONST R11 K11
- 0x5830000A, // 0027 LDCONST R12 K10
- 0x7C240600, // 0028 CALL R9 3
- 0x40241007, // 0029 CONNECT R9 R8 R7
- 0x6024000C, // 002A GETGBL R9 G12
- 0x5C280A00, // 002B MOVE R10 R5
- 0x7C240200, // 002C CALL R9 1
- 0x6028000C, // 002D GETGBL R10 G12
- 0x5C2C0C00, // 002E MOVE R11 R6
- 0x7C280200, // 002F CALL R10 1
- 0x0024120A, // 0030 ADD R9 R9 R10
- 0x6028000C, // 0031 GETGBL R10 G12
- 0x5C2C1000, // 0032 MOVE R11 R8
- 0x7C280200, // 0033 CALL R10 1
- 0x0024120A, // 0034 ADD R9 R9 R10
- 0x60280015, // 0035 GETGBL R10 G21
- 0x542E00CF, // 0036 LDINT R11 208
- 0x7C280200, // 0037 CALL R10 1
- 0x8C2C1508, // 0038 GETMET R11 R10 K8
- 0x5436002F, // 0039 LDINT R13 48
- 0x5838000A, // 003A LDCONST R14 K10
- 0x7C2C0600, // 003B CALL R11 3
- 0x8C2C1508, // 003C GETMET R11 R10 K8
- 0x54360080, // 003D LDINT R13 129
- 0x5838000A, // 003E LDCONST R14 K10
- 0x7C2C0600, // 003F CALL R11 3
- 0x8C2C1508, // 0040 GETMET R11 R10 K8
- 0x543600FE, // 0041 LDINT R13 255
- 0x2C34120D, // 0042 AND R13 R9 R13
- 0x5838000A, // 0043 LDCONST R14 K10
- 0x7C2C0600, // 0044 CALL R11 3
- 0x402C1405, // 0045 CONNECT R11 R10 R5
- 0x402C1406, // 0046 CONNECT R11 R10 R6
- 0x402C1408, // 0047 CONNECT R11 R10 R8
- 0x80041400, // 0048 RET 1 R10
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_temp_ca
-********************************************************************/
-be_local_closure(Matter_Session_get_temp_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(_temp_root_ca_certificate),
- }),
- be_str_weak(get_temp_ca),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: close
-********************************************************************/
-be_local_closure(Matter_Session_close, /* 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[23]) { /* constants */
- /* K0 */ be_nested_str_weak(local_session_id),
- /* K1 */ be_nested_str_weak(__future_local_session_id),
- /* K2 */ be_nested_str_weak(initiator_session_id),
- /* K3 */ be_nested_str_weak(__future_initiator_session_id),
- /* K4 */ be_nested_str_weak(_counter_rcv_impl),
- /* K5 */ be_nested_str_weak(reset),
- /* K6 */ be_nested_str_weak(_counter_snd_impl),
- /* K7 */ be_nested_str_weak(counter_rcv),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(counter_snd),
- /* K10 */ be_nested_str_weak(next),
- /* K11 */ be_nested_str_weak(i2rkey),
- /* K12 */ be_nested_str_weak(_i2r_privacy),
- /* K13 */ be_nested_str_weak(r2ikey),
- /* K14 */ be_nested_str_weak(attestation_challenge),
- /* K15 */ be_nested_str_weak(introspect),
- /* K16 */ be_nested_str_weak(members),
- /* K17 */ be_nested_str_weak(get),
- /* K18 */ be_nested_str_weak(function),
- /* K19 */ be_nested_str_weak(instance),
- /* K20 */ be_nested_str_weak(_),
- /* K21 */ be_const_int(1),
- /* K22 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(close),
- &be_const_str_solidified,
- ( &(const binstruction[59]) { /* code */
- 0x88040101, // 0000 GETMBR R1 R0 K1
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x88040103, // 0002 GETMBR R1 R0 K3
- 0x90020401, // 0003 SETMBR R0 K2 R1
- 0x88040104, // 0004 GETMBR R1 R0 K4
- 0x8C040305, // 0005 GETMET R1 R1 K5
- 0x7C040200, // 0006 CALL R1 1
- 0x88040106, // 0007 GETMBR R1 R0 K6
- 0x8C040305, // 0008 GETMET R1 R1 K5
- 0x7C040200, // 0009 CALL R1 1
- 0x90020F08, // 000A SETMBR R0 K7 K8
- 0x88040106, // 000B GETMBR R1 R0 K6
- 0x8C04030A, // 000C GETMET R1 R1 K10
- 0x7C040200, // 000D CALL R1 1
- 0x90021201, // 000E SETMBR R0 K9 R1
- 0x4C040000, // 000F LDNIL R1
- 0x90021601, // 0010 SETMBR R0 K11 R1
- 0x4C040000, // 0011 LDNIL R1
- 0x90021801, // 0012 SETMBR R0 K12 R1
- 0x4C040000, // 0013 LDNIL R1
- 0x90021A01, // 0014 SETMBR R0 K13 R1
- 0x4C040000, // 0015 LDNIL R1
- 0x90021C01, // 0016 SETMBR R0 K14 R1
- 0xA4061E00, // 0017 IMPORT R1 K15
- 0x60080010, // 0018 GETGBL R2 G16
- 0x8C0C0310, // 0019 GETMET R3 R1 K16
- 0x5C140000, // 001A MOVE R5 R0
- 0x7C0C0400, // 001B CALL R3 2
- 0x7C080200, // 001C CALL R2 1
- 0xA8020018, // 001D EXBLK 0 #0037
- 0x5C0C0400, // 001E MOVE R3 R2
- 0x7C0C0000, // 001F CALL R3 0
- 0x8C100311, // 0020 GETMET R4 R1 K17
- 0x5C180000, // 0021 MOVE R6 R0
- 0x5C1C0600, // 0022 MOVE R7 R3
- 0x7C100600, // 0023 CALL R4 3
- 0x60140004, // 0024 GETGBL R5 G4
- 0x5C180800, // 0025 MOVE R6 R4
- 0x7C140200, // 0026 CALL R5 1
- 0x20140B12, // 0027 NE R5 R5 K18
- 0x7816000C, // 0028 JMPF R5 #0036
- 0x60140004, // 0029 GETGBL R5 G4
- 0x5C180800, // 002A MOVE R6 R4
- 0x7C140200, // 002B CALL R5 1
- 0x20140B13, // 002C NE R5 R5 K19
- 0x78160007, // 002D JMPF R5 #0036
- 0x94140708, // 002E GETIDX R5 R3 K8
- 0x1C140B14, // 002F EQ R5 R5 K20
- 0x78160004, // 0030 JMPF R5 #0036
- 0x94140715, // 0031 GETIDX R5 R3 K21
- 0x1C140B14, // 0032 EQ R5 R5 K20
- 0x78160001, // 0033 JMPF R5 #0036
- 0x4C140000, // 0034 LDNIL R5
- 0x90000605, // 0035 SETMBR R0 R3 R5
- 0x7001FFE6, // 0036 JMP #001E
- 0x58080016, // 0037 LDCONST R2 K22
- 0xAC080200, // 0038 CATCH R2 1 0
- 0xB0080000, // 0039 RAISE 2 R0 R0
- 0x80000000, // 003A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update
-********************************************************************/
-be_local_closure(Matter_Session_update, /* 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(last_used),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(rtc),
- /* K3 */ be_nested_str_weak(utc),
- }),
- be_str_weak(update),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0xB8060200, // 0000 GETNGBL R1 K1
- 0x8C040302, // 0001 GETMET R1 R1 K2
- 0x7C040200, // 0002 CALL R1 1
- 0x94040303, // 0003 GETIDX R1 R1 K3
- 0x90020001, // 0004 SETMBR R0 K0 R1
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_admin_vendor
-********************************************************************/
-be_local_closure(Matter_Session_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[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(admin_vendor),
- }),
- be_str_weak(get_admin_vendor),
- &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
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric
-********************************************************************/
-be_local_closure(Matter_Session_get_fabric, /* 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),
- }),
- be_str_weak(get_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_admin_subject
-********************************************************************/
-be_local_closure(Matter_Session_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[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(admin_subject),
- }),
- be_str_weak(get_admin_subject),
- &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
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_ipk_group_key
-********************************************************************/
-be_local_closure(Matter_Session_get_ipk_group_key, /* 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(_fabric),
- /* K1 */ be_nested_str_weak(get_ipk_group_key),
- }),
- be_str_weak(get_ipk_group_key),
- &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: init
-********************************************************************/
-be_local_closure(Matter_Session_init, /* 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[23]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(_store),
- /* K2 */ be_nested_str_weak(mode),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(local_session_id),
- /* K5 */ be_nested_str_weak(initiator_session_id),
- /* K6 */ be_nested_str_weak(_counter_snd_impl),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(Counter),
- /* K9 */ be_nested_str_weak(_counter_rcv_impl),
- /* K10 */ be_nested_str_weak(counter_rcv),
- /* K11 */ be_nested_str_weak(counter_snd),
- /* K12 */ be_nested_str_weak(next),
- /* K13 */ be_nested_str_weak(_COUNTER_SND_INCR),
- /* K14 */ be_nested_str_weak(_counter_insecure_rcv),
- /* K15 */ be_nested_str_weak(_counter_insecure_snd),
- /* K16 */ be_nested_str_weak(_breadcrumb),
- /* K17 */ be_nested_str_weak(_exchange_id),
- /* K18 */ be_nested_str_weak(random),
- /* K19 */ be_const_int(2),
- /* K20 */ be_nested_str_weak(get),
- /* K21 */ be_nested_str_weak(_fabric),
- /* K22 */ be_nested_str_weak(update),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[41]) { /* code */
- 0xA4160000, // 0000 IMPORT R5 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0x90020503, // 0002 SETMBR R0 K2 K3
- 0x90020802, // 0003 SETMBR R0 K4 R2
- 0x90020A03, // 0004 SETMBR R0 K5 R3
- 0xB81A0E00, // 0005 GETNGBL R6 K7
- 0x8C180D08, // 0006 GETMET R6 R6 K8
- 0x7C180200, // 0007 CALL R6 1
- 0x90020C06, // 0008 SETMBR R0 K6 R6
- 0xB81A0E00, // 0009 GETNGBL R6 K7
- 0x8C180D08, // 000A GETMET R6 R6 K8
- 0x7C180200, // 000B CALL R6 1
- 0x90021206, // 000C SETMBR R0 K9 R6
- 0x90021503, // 000D SETMBR R0 K10 K3
- 0x88180106, // 000E GETMBR R6 R0 K6
- 0x8C180D0C, // 000F GETMET R6 R6 K12
- 0x7C180200, // 0010 CALL R6 1
- 0x881C010D, // 0011 GETMBR R7 R0 K13
- 0x00180C07, // 0012 ADD R6 R6 R7
- 0x90021606, // 0013 SETMBR R0 K11 R6
- 0xB81A0E00, // 0014 GETNGBL R6 K7
- 0x8C180D08, // 0015 GETMET R6 R6 K8
- 0x7C180200, // 0016 CALL R6 1
- 0x90021C06, // 0017 SETMBR R0 K14 R6
- 0xB81A0E00, // 0018 GETNGBL R6 K7
- 0x8C180D08, // 0019 GETMET R6 R6 K8
- 0x7C180200, // 001A CALL R6 1
- 0x90021E06, // 001B SETMBR R0 K15 R6
- 0x90022103, // 001C SETMBR R0 K16 K3
- 0x8C180B12, // 001D GETMET R6 R5 K18
- 0x58200013, // 001E LDCONST R8 K19
- 0x7C180400, // 001F CALL R6 2
- 0x8C180D14, // 0020 GETMET R6 R6 K20
- 0x58200003, // 0021 LDCONST R8 K3
- 0x58240013, // 0022 LDCONST R9 K19
- 0x7C180600, // 0023 CALL R6 3
- 0x90022206, // 0024 SETMBR R0 K17 R6
- 0x90022A04, // 0025 SETMBR R0 K21 R4
- 0x8C180116, // 0026 GETMET R6 R0 K22
- 0x7C180200, // 0027 CALL R6 1
- 0x80000000, // 0028 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_device_id
-********************************************************************/
-be_local_closure(Matter_Session_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[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(device_id),
- }),
- be_str_weak(get_device_id),
- &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
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_fabric_label
-********************************************************************/
-be_local_closure(Matter_Session_set_fabric_label, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(_fabric),
- /* K2 */ be_nested_str_weak(fabric_label),
- }),
- be_str_weak(set_fabric_label),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x60080004, // 0000 GETGBL R2 G4
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x7C080200, // 0002 CALL R2 1
- 0x1C080500, // 0003 EQ R2 R2 K0
- 0x780A0001, // 0004 JMPF R2 #0007
- 0x88080101, // 0005 GETMBR R2 R0 K1
- 0x900A0401, // 0006 SETMBR R2 K2 R1
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: hydrate_post
-********************************************************************/
-be_local_closure(Matter_Session_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_snd_impl),
- /* K1 */ be_nested_str_weak(reset),
- /* K2 */ be_nested_str_weak(counter_snd),
- /* K3 */ be_nested_str_weak(_counter_rcv_impl),
- /* K4 */ be_nested_str_weak(counter_rcv),
- /* 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: fromjson
********************************************************************/
@@ -1302,6 +615,399 @@ be_local_closure(Matter_Session_fromjson, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: gen_CSR
+********************************************************************/
+be_local_closure(Matter_Session_gen_CSR, /* name */
+ be_nested_proto(
+ 15, /* 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(get_pk),
+ /* K1 */ be_nested_str_weak(crypto),
+ /* K2 */ be_nested_str_weak(EC_P256),
+ /* K3 */ be_nested_str_weak(public_key),
+ /* K4 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200),
+ /* K5 */ be_nested_str_weak(A000),
+ /* K6 */ be_nested_str_weak(300C06082A8648CE3D0403020500),
+ /* K7 */ be_nested_str_weak(ecdsa_sign_sha256_asn1),
+ /* K8 */ be_nested_str_weak(add),
+ /* K9 */ be_const_int(3),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_const_int(0),
+ }),
+ be_str_weak(gen_CSR),
+ &be_const_str_solidified,
+ ( &(const binstruction[73]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0xA40A0200, // 0002 IMPORT R2 K1
+ 0x8C0C0502, // 0003 GETMET R3 R2 K2
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x8C100703, // 0005 GETMET R4 R3 K3
+ 0x5C180200, // 0006 MOVE R6 R1
+ 0x7C100400, // 0007 CALL R4 2
+ 0x60140015, // 0008 GETGBL R5 G21
+ 0x58180004, // 0009 LDCONST R6 K4
+ 0x7C140200, // 000A CALL R5 1
+ 0x40180A04, // 000B CONNECT R6 R5 R4
+ 0x60180015, // 000C GETGBL R6 G21
+ 0x581C0005, // 000D LDCONST R7 K5
+ 0x7C180200, // 000E CALL R6 1
+ 0x40180A06, // 000F CONNECT R6 R5 R6
+ 0x60180015, // 0010 GETGBL R6 G21
+ 0x581C0006, // 0011 LDCONST R7 K6
+ 0x7C180200, // 0012 CALL R6 1
+ 0x8C1C0707, // 0013 GETMET R7 R3 K7
+ 0x5C240200, // 0014 MOVE R9 R1
+ 0x5C280A00, // 0015 MOVE R10 R5
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x60200015, // 0017 GETGBL R8 G21
+ 0x5426007F, // 0018 LDINT R9 128
+ 0x7C200200, // 0019 CALL R8 1
+ 0x8C241108, // 001A GETMET R9 R8 K8
+ 0x582C0009, // 001B LDCONST R11 K9
+ 0x5830000A, // 001C LDCONST R12 K10
+ 0x7C240600, // 001D CALL R9 3
+ 0x8C241108, // 001E GETMET R9 R8 K8
+ 0x602C000C, // 001F GETGBL R11 G12
+ 0x5C300E00, // 0020 MOVE R12 R7
+ 0x7C2C0200, // 0021 CALL R11 1
+ 0x002C170A, // 0022 ADD R11 R11 K10
+ 0x5830000A, // 0023 LDCONST R12 K10
+ 0x7C240600, // 0024 CALL R9 3
+ 0x8C241108, // 0025 GETMET R9 R8 K8
+ 0x582C000B, // 0026 LDCONST R11 K11
+ 0x5830000A, // 0027 LDCONST R12 K10
+ 0x7C240600, // 0028 CALL R9 3
+ 0x40241007, // 0029 CONNECT R9 R8 R7
+ 0x6024000C, // 002A GETGBL R9 G12
+ 0x5C280A00, // 002B MOVE R10 R5
+ 0x7C240200, // 002C CALL R9 1
+ 0x6028000C, // 002D GETGBL R10 G12
+ 0x5C2C0C00, // 002E MOVE R11 R6
+ 0x7C280200, // 002F CALL R10 1
+ 0x0024120A, // 0030 ADD R9 R9 R10
+ 0x6028000C, // 0031 GETGBL R10 G12
+ 0x5C2C1000, // 0032 MOVE R11 R8
+ 0x7C280200, // 0033 CALL R10 1
+ 0x0024120A, // 0034 ADD R9 R9 R10
+ 0x60280015, // 0035 GETGBL R10 G21
+ 0x542E00CF, // 0036 LDINT R11 208
+ 0x7C280200, // 0037 CALL R10 1
+ 0x8C2C1508, // 0038 GETMET R11 R10 K8
+ 0x5436002F, // 0039 LDINT R13 48
+ 0x5838000A, // 003A LDCONST R14 K10
+ 0x7C2C0600, // 003B CALL R11 3
+ 0x8C2C1508, // 003C GETMET R11 R10 K8
+ 0x54360080, // 003D LDINT R13 129
+ 0x5838000A, // 003E LDCONST R14 K10
+ 0x7C2C0600, // 003F CALL R11 3
+ 0x8C2C1508, // 0040 GETMET R11 R10 K8
+ 0x543600FE, // 0041 LDINT R13 255
+ 0x2C34120D, // 0042 AND R13 R9 R13
+ 0x5838000A, // 0043 LDCONST R14 K10
+ 0x7C2C0600, // 0044 CALL R11 3
+ 0x402C1405, // 0045 CONNECT R11 R10 R5
+ 0x402C1406, // 0046 CONNECT R11 R10 R6
+ 0x402C1408, // 0047 CONNECT R11 R10 R8
+ 0x80041400, // 0048 RET 1 R10
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_ipk_epoch_key
+********************************************************************/
+be_local_closure(Matter_Session_get_ipk_epoch_key, /* 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(_fabric),
+ /* K1 */ be_nested_str_weak(ipk_epoch_key),
+ }),
+ be_str_weak(get_ipk_epoch_key),
+ &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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: counter_rcv_validate
+********************************************************************/
+be_local_closure(Matter_Session_counter_rcv_validate, /* name */
+ be_nested_proto(
+ 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(_counter_rcv_impl),
+ /* K1 */ be_nested_str_weak(validate),
+ /* K2 */ be_nested_str_weak(counter_rcv),
+ /* K3 */ be_nested_str_weak(val),
+ }),
+ be_str_weak(counter_rcv_validate),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x5C180400, // 0003 MOVE R6 R2
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x780E0003, // 0005 JMPF R3 #000A
+ 0x88100100, // 0006 GETMBR R4 R0 K0
+ 0x8C100903, // 0007 GETMET R4 R4 K3
+ 0x7C100200, // 0008 CALL R4 1
+ 0x90020404, // 0009 SETMBR R0 K2 R4
+ 0x80040600, // 000A RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_admin_subject
+********************************************************************/
+be_local_closure(Matter_Session_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[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_fabric),
+ /* K1 */ be_nested_str_weak(admin_subject),
+ }),
+ be_str_weak(get_admin_subject),
+ &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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_compressed
+********************************************************************/
+be_local_closure(Matter_Session_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[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_fabric),
+ /* K1 */ be_nested_str_weak(fabric_compressed),
+ }),
+ be_str_weak(get_fabric_compressed),
+ &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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: persist_to_fabric
+********************************************************************/
+be_local_closure(Matter_Session_persist_to_fabric, /* 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_weak(_fabric),
+ /* K1 */ be_nested_str_weak(add_session),
+ }),
+ be_str_weak(persist_to_fabric),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C040400, // 0003 CALL R1 2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_ca
+********************************************************************/
+be_local_closure(Matter_Session_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[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_fabric),
+ /* K1 */ be_nested_str_weak(root_ca_certificate),
+ }),
+ be_str_weak(get_ca),
+ &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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_PASE
+********************************************************************/
+be_local_closure(Matter_Session_is_PASE, /* 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(mode),
+ /* K1 */ be_nested_str_weak(_PASE),
+ }),
+ be_str_weak(is_PASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_CASE
+********************************************************************/
+be_local_closure(Matter_Session_is_CASE, /* 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(mode),
+ /* K1 */ be_nested_str_weak(_CASE),
+ }),
+ be_str_weak(is_CASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: before_remove
+********************************************************************/
+be_local_closure(Matter_Session_before_remove, /* 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(tasmota),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29),
+ /* K3 */ be_nested_str_weak(local_session_id),
+ /* K4 */ be_const_int(3),
+ }),
+ be_str_weak(before_remove),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x600C0018, // 0002 GETGBL R3 G24
+ 0x58100002, // 0003 LDCONST R4 K2
+ 0x88140103, // 0004 GETMBR R5 R0 K3
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x58100004, // 0006 LDCONST R4 K4
+ 0x7C040600, // 0007 CALL R1 3
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: save
********************************************************************/
@@ -1362,12 +1068,113 @@ be_local_closure(Matter_Session_get_fabric_id, /* name */
/********************************************************************
-** Solidified function: set_mode
+** Solidified function: get_ipk_group_key
********************************************************************/
-be_local_closure(Matter_Session_set_mode, /* name */
+be_local_closure(Matter_Session_get_ipk_group_key, /* 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(_fabric),
+ /* K1 */ be_nested_str_weak(get_ipk_group_key),
+ }),
+ be_str_weak(get_ipk_group_key),
+ &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: get_temp_ca_pub
+********************************************************************/
+be_local_closure(Matter_Session_get_temp_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(_temp_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_temp_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: get_ca_pub
+********************************************************************/
+be_local_closure(Matter_Session_get_ca_pub, /* 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(_fabric),
+ /* K1 */ be_nested_str_weak(get_ca_pub),
+ }),
+ be_str_weak(get_ca_pub),
+ &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: get_mode
+********************************************************************/
+be_local_closure(Matter_Session_get_mode, /* name */
be_nested_proto(
2, /* nstack */
- 2, /* argc */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -1377,11 +1184,11 @@ be_local_closure(Matter_Session_set_mode, /* name */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(mode),
}),
- be_str_weak(set_mode),
+ be_str_weak(get_mode),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
})
)
);
@@ -1389,26 +1196,186 @@ be_local_closure(Matter_Session_set_mode, /* name */
/********************************************************************
-** Solidified function: set_temp_ca
+** Solidified function: hydrate_post
********************************************************************/
-be_local_closure(Matter_Session_set_temp_ca, /* name */
+be_local_closure(Matter_Session_hydrate_post, /* name */
be_nested_proto(
- 2, /* 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[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_temp_root_ca_certificate),
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(_counter_snd_impl),
+ /* K1 */ be_nested_str_weak(reset),
+ /* K2 */ be_nested_str_weak(counter_snd),
+ /* K3 */ be_nested_str_weak(_counter_rcv_impl),
+ /* K4 */ be_nested_str_weak(counter_rcv),
+ /* K5 */ be_nested_str_weak(val),
}),
- be_str_weak(set_temp_ca),
+ be_str_weak(hydrate_post),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
+ ( &(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: get_fabric_label
+********************************************************************/
+be_local_closure(Matter_Session_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[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_fabric),
+ /* K1 */ be_nested_str_weak(fabric_label),
+ }),
+ be_str_weak(get_fabric_label),
+ &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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_icac
+********************************************************************/
+be_local_closure(Matter_Session_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[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(_fabric),
+ /* K1 */ be_nested_str_weak(icac),
+ }),
+ be_str_weak(get_icac),
+ &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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_mode_CASE
+********************************************************************/
+be_local_closure(Matter_Session_set_mode_CASE, /* 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_weak(set_mode),
+ /* K1 */ be_nested_str_weak(_CASE),
+ }),
+ be_str_weak(set_mode_CASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x880C0101, // 0001 GETMBR R3 R0 K1
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: counter_snd_next
+********************************************************************/
+be_local_closure(Matter_Session_counter_snd_next, /* 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[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(_counter_snd_impl),
+ /* K1 */ be_nested_str_weak(next),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(Counter),
+ /* K4 */ be_nested_str_weak(is_greater),
+ /* K5 */ be_nested_str_weak(counter_snd),
+ /* K6 */ be_nested_str_weak(_COUNTER_SND_INCR),
+ /* K7 */ be_nested_str_weak(does_persist),
+ /* K8 */ be_nested_str_weak(save),
+ }),
+ be_str_weak(counter_snd_next),
+ &be_const_str_solidified,
+ ( &(const binstruction[19]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0xB80A0400, // 0003 GETNGBL R2 K2
+ 0x88080503, // 0004 GETMBR R2 R2 K3
+ 0x8C080504, // 0005 GETMET R2 R2 K4
+ 0x5C100200, // 0006 MOVE R4 R1
+ 0x88140105, // 0007 GETMBR R5 R0 K5
+ 0x7C080600, // 0008 CALL R2 3
+ 0x780A0007, // 0009 JMPF R2 #0012
+ 0x88080106, // 000A GETMBR R2 R0 K6
+ 0x00080202, // 000B ADD R2 R1 R2
+ 0x90020A02, // 000C SETMBR R0 K5 R2
+ 0x8C080107, // 000D GETMET R2 R0 K7
+ 0x7C080200, // 000E CALL R2 1
+ 0x780A0001, // 000F JMPF R2 #0012
+ 0x8C080108, // 0010 GETMET R2 R0 K8
+ 0x7C080200, // 0011 CALL R2 1
+ 0x80040200, // 0012 RET 1 R1
})
)
);
@@ -1469,38 +1436,9 @@ be_local_closure(Matter_Session_get_i2r_privacy, /* name */
/********************************************************************
-** Solidified function: get_ca
+** Solidified function: get_i2r
********************************************************************/
-be_local_closure(Matter_Session_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[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(root_ca_certificate),
- }),
- be_str_weak(get_ca),
- &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
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_ac
-********************************************************************/
-be_local_closure(Matter_Session_get_ac, /* name */
+be_local_closure(Matter_Session_get_i2r, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -1511,9 +1449,9 @@ be_local_closure(Matter_Session_get_ac, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(attestation_challenge),
+ /* K0 */ be_nested_str_weak(i2rkey),
}),
- be_str_weak(get_ac),
+ be_str_weak(get_i2r),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
@@ -1525,100 +1463,9 @@ be_local_closure(Matter_Session_get_ac, /* name */
/********************************************************************
-** Solidified function: counter_snd_next
+** Solidified function: get_admin_vendor
********************************************************************/
-be_local_closure(Matter_Session_counter_snd_next, /* 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[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_snd_impl),
- /* K1 */ be_nested_str_weak(next),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Counter),
- /* K4 */ be_nested_str_weak(is_greater),
- /* K5 */ be_nested_str_weak(counter_snd),
- /* K6 */ be_nested_str_weak(_COUNTER_SND_INCR),
- /* K7 */ be_nested_str_weak(does_persist),
- /* K8 */ be_nested_str_weak(save),
- }),
- be_str_weak(counter_snd_next),
- &be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x88080503, // 0004 GETMBR R2 R2 K3
- 0x8C080504, // 0005 GETMET R2 R2 K4
- 0x5C100200, // 0006 MOVE R4 R1
- 0x88140105, // 0007 GETMBR R5 R0 K5
- 0x7C080600, // 0008 CALL R2 3
- 0x780A0007, // 0009 JMPF R2 #0012
- 0x88080106, // 000A GETMBR R2 R0 K6
- 0x00080202, // 000B ADD R2 R1 R2
- 0x90020A02, // 000C SETMBR R0 K5 R2
- 0x8C080107, // 000D GETMET R2 R0 K7
- 0x7C080200, // 000E CALL R2 1
- 0x780A0001, // 000F JMPF R2 #0012
- 0x8C080108, // 0010 GETMET R2 R0 K8
- 0x7C080200, // 0011 CALL R2 1
- 0x80040200, // 0012 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: counter_rcv_validate
-********************************************************************/
-be_local_closure(Matter_Session_counter_rcv_validate, /* name */
- be_nested_proto(
- 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[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_rcv_impl),
- /* K1 */ be_nested_str_weak(validate),
- /* K2 */ be_nested_str_weak(counter_rcv),
- /* K3 */ be_nested_str_weak(val),
- }),
- be_str_weak(counter_rcv_validate),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x5C180400, // 0003 MOVE R6 R2
- 0x7C0C0600, // 0004 CALL R3 3
- 0x780E0003, // 0005 JMPF R3 #000A
- 0x88100100, // 0006 GETMBR R4 R0 K0
- 0x8C100903, // 0007 GETMET R4 R4 K3
- 0x7C100200, // 0008 CALL R4 1
- 0x90020404, // 0009 SETMBR R0 K2 R4
- 0x80040600, // 000A RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_icac
-********************************************************************/
-be_local_closure(Matter_Session_get_icac, /* name */
+be_local_closure(Matter_Session_get_admin_vendor, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -1630,9 +1477,9 @@ be_local_closure(Matter_Session_get_icac, /* name */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(icac),
+ /* K1 */ be_nested_str_weak(admin_vendor),
}),
- be_str_weak(get_icac),
+ be_str_weak(get_admin_vendor),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
@@ -1645,29 +1492,26 @@ be_local_closure(Matter_Session_get_icac, /* name */
/********************************************************************
-** Solidified function: get_ca_pub
+** Solidified function: set_temp_ca
********************************************************************/
-be_local_closure(Matter_Session_get_ca_pub, /* name */
+be_local_closure(Matter_Session_set_temp_ca, /* name */
be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
+ 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[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(get_ca_pub),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(_temp_root_ca_certificate),
}),
- be_str_weak(get_ca_pub),
+ be_str_weak(set_temp_ca),
&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[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
})
)
);
@@ -1675,9 +1519,97 @@ be_local_closure(Matter_Session_get_ca_pub, /* name */
/********************************************************************
-** Solidified function: get_ipk_epoch_key
+** Solidified function: init
********************************************************************/
-be_local_closure(Matter_Session_get_ipk_epoch_key, /* name */
+be_local_closure(Matter_Session_init, /* 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[23]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(_store),
+ /* K2 */ be_nested_str_weak(mode),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(local_session_id),
+ /* K5 */ be_nested_str_weak(initiator_session_id),
+ /* K6 */ be_nested_str_weak(_counter_snd_impl),
+ /* K7 */ be_nested_str_weak(matter),
+ /* K8 */ be_nested_str_weak(Counter),
+ /* K9 */ be_nested_str_weak(_counter_rcv_impl),
+ /* K10 */ be_nested_str_weak(counter_rcv),
+ /* K11 */ be_nested_str_weak(counter_snd),
+ /* K12 */ be_nested_str_weak(next),
+ /* K13 */ be_nested_str_weak(_COUNTER_SND_INCR),
+ /* K14 */ be_nested_str_weak(_counter_insecure_rcv),
+ /* K15 */ be_nested_str_weak(_counter_insecure_snd),
+ /* K16 */ be_nested_str_weak(_breadcrumb),
+ /* K17 */ be_nested_str_weak(_exchange_id),
+ /* K18 */ be_nested_str_weak(random),
+ /* K19 */ be_const_int(2),
+ /* K20 */ be_nested_str_weak(get),
+ /* K21 */ be_nested_str_weak(_fabric),
+ /* K22 */ be_nested_str_weak(update),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[41]) { /* code */
+ 0xA4160000, // 0000 IMPORT R5 K0
+ 0x90020201, // 0001 SETMBR R0 K1 R1
+ 0x90020503, // 0002 SETMBR R0 K2 K3
+ 0x90020802, // 0003 SETMBR R0 K4 R2
+ 0x90020A03, // 0004 SETMBR R0 K5 R3
+ 0xB81A0E00, // 0005 GETNGBL R6 K7
+ 0x8C180D08, // 0006 GETMET R6 R6 K8
+ 0x7C180200, // 0007 CALL R6 1
+ 0x90020C06, // 0008 SETMBR R0 K6 R6
+ 0xB81A0E00, // 0009 GETNGBL R6 K7
+ 0x8C180D08, // 000A GETMET R6 R6 K8
+ 0x7C180200, // 000B CALL R6 1
+ 0x90021206, // 000C SETMBR R0 K9 R6
+ 0x90021503, // 000D SETMBR R0 K10 K3
+ 0x88180106, // 000E GETMBR R6 R0 K6
+ 0x8C180D0C, // 000F GETMET R6 R6 K12
+ 0x7C180200, // 0010 CALL R6 1
+ 0x881C010D, // 0011 GETMBR R7 R0 K13
+ 0x00180C07, // 0012 ADD R6 R6 R7
+ 0x90021606, // 0013 SETMBR R0 K11 R6
+ 0xB81A0E00, // 0014 GETNGBL R6 K7
+ 0x8C180D08, // 0015 GETMET R6 R6 K8
+ 0x7C180200, // 0016 CALL R6 1
+ 0x90021C06, // 0017 SETMBR R0 K14 R6
+ 0xB81A0E00, // 0018 GETNGBL R6 K7
+ 0x8C180D08, // 0019 GETMET R6 R6 K8
+ 0x7C180200, // 001A CALL R6 1
+ 0x90021E06, // 001B SETMBR R0 K15 R6
+ 0x90022103, // 001C SETMBR R0 K16 K3
+ 0x8C180B12, // 001D GETMET R6 R5 K18
+ 0x58200013, // 001E LDCONST R8 K19
+ 0x7C180400, // 001F CALL R6 2
+ 0x8C180D14, // 0020 GETMET R6 R6 K20
+ 0x58200003, // 0021 LDCONST R8 K3
+ 0x58240013, // 0022 LDCONST R9 K19
+ 0x7C180600, // 0023 CALL R6 3
+ 0x90022206, // 0024 SETMBR R0 K17 R6
+ 0x90022A04, // 0025 SETMBR R0 K21 R4
+ 0x8C180116, // 0026 GETMET R6 R0 K22
+ 0x7C180200, // 0027 CALL R6 1
+ 0x80000000, // 0028 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_index
+********************************************************************/
+be_local_closure(Matter_Session_get_fabric_index, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -1689,14 +1621,18 @@ be_local_closure(Matter_Session_get_ipk_epoch_key, /* name */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(ipk_epoch_key),
+ /* K1 */ be_nested_str_weak(fabric_index),
}),
- be_str_weak(get_ipk_epoch_key),
+ be_str_weak(get_fabric_index),
&be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
+ ( &(const binstruction[ 7]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x88040301, // 0003 GETMBR R1 R1 K1
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
})
)
);
@@ -1704,9 +1640,82 @@ be_local_closure(Matter_Session_get_ipk_epoch_key, /* name */
/********************************************************************
-** Solidified function: persist_to_fabric
+** Solidified function: get_temp_ca
********************************************************************/
-be_local_closure(Matter_Session_persist_to_fabric, /* name */
+be_local_closure(Matter_Session_get_temp_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(_temp_root_ca_certificate),
+ }),
+ be_str_weak(get_temp_ca),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_pk
+********************************************************************/
+be_local_closure(Matter_Session_get_pk, /* 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(_fabric),
+ /* K1 */ be_nested_str_weak(get_pk),
+ /* K2 */ be_nested_str_weak(_temp_pk),
+ /* K3 */ be_nested_str_weak(crypto),
+ /* K4 */ be_nested_str_weak(random),
+ }),
+ be_str_weak(get_pk),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060004, // 0001 JMPF R1 #0007
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x8C040301, // 0003 GETMET R1 R1 K1
+ 0x7C040200, // 0004 CALL R1 1
+ 0x80040200, // 0005 RET 1 R1
+ 0x70020008, // 0006 JMP #0010
+ 0x88040102, // 0007 GETMBR R1 R0 K2
+ 0x74060004, // 0008 JMPT R1 #000E
+ 0xA4060600, // 0009 IMPORT R1 K3
+ 0x8C080304, // 000A GETMET R2 R1 K4
+ 0x5412001F, // 000B LDINT R4 32
+ 0x7C080400, // 000C CALL R2 2
+ 0x90020402, // 000D SETMBR R0 K2 R2
+ 0x88040102, // 000E GETMBR R1 R0 K2
+ 0x80040200, // 000F RET 1 R1
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_mode_PASE
+********************************************************************/
+be_local_closure(Matter_Session_set_mode_PASE, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
@@ -1717,17 +1726,43 @@ be_local_closure(Matter_Session_persist_to_fabric, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(add_session),
+ /* K0 */ be_nested_str_weak(set_mode),
+ /* K1 */ be_nested_str_weak(_PASE),
}),
- be_str_weak(persist_to_fabric),
+ be_str_weak(set_mode_PASE),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x5C0C0000, // 0002 MOVE R3 R0
- 0x7C040400, // 0003 CALL R1 2
- 0x80000000, // 0004 RET 0
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x880C0101, // 0001 GETMBR R3 R0 K1
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_mode
+********************************************************************/
+be_local_closure(Matter_Session_set_mode, /* 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(mode),
+ }),
+ be_str_weak(set_mode),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
})
)
);
@@ -1741,91 +1776,92 @@ extern const bclass be_class_Matter_Expirable;
be_local_class(Matter_Session,
38,
&be_class_Matter_Expirable,
- be_nested_map(83,
+ be_nested_map(84,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(resumption_id, -1), be_const_var(28) },
- { be_const_key_weak(mode, 4), be_const_var(1) },
- { be_const_key_weak(get_pk, -1), be_const_closure(Matter_Session_get_pk_closure) },
- { be_const_key_weak(set_mode_CASE, 65), be_const_closure(Matter_Session_set_mode_CASE_closure) },
- { be_const_key_weak(__spake_cA, 22), be_const_var(33) },
- { be_const_key_weak(__initiator_pub, -1), be_const_var(32) },
- { be_const_key_weak(get_temp_ca_pub, 55), be_const_closure(Matter_Session_get_temp_ca_pub_closure) },
- { be_const_key_weak(get_i2r, -1), be_const_closure(Matter_Session_get_i2r_closure) },
- { be_const_key_weak(_ip, 82), be_const_var(17) },
- { be_const_key_weak(__Msg2, -1), be_const_var(36) },
- { be_const_key_weak(get_fabric_label, 59), be_const_closure(Matter_Session_get_fabric_label_closure) },
- { be_const_key_weak(__future_initiator_session_id, -1), be_const_var(10) },
- { be_const_key_weak(set_keys, 0), be_const_closure(Matter_Session_set_keys_closure) },
- { be_const_key_weak(set_mode_PASE, -1), be_const_closure(Matter_Session_set_mode_PASE_closure) },
- { be_const_key_weak(_fabric, 7), be_const_var(2) },
- { be_const_key_weak(get_temp_ca, -1), be_const_closure(Matter_Session_get_temp_ca_closure) },
- { be_const_key_weak(attestation_challenge, -1), be_const_var(25) },
- { be_const_key_weak(_temp_pk, -1), be_const_var(9) },
- { be_const_key_weak(last_used, -1), be_const_var(6) },
- { be_const_key_weak(peer_node_id, -1), be_const_var(26) },
- { be_const_key_weak(is_CASE, -1), be_const_closure(Matter_Session_is_CASE_closure) },
- { be_const_key_weak(get_ipk_epoch_key, 80), be_const_closure(Matter_Session_get_ipk_epoch_key_closure) },
- { be_const_key_weak(_exchange_id, -1), be_const_var(16) },
- { be_const_key_weak(__chunked_attr_reports, -1), be_const_var(37) },
- { be_const_key_weak(counter_snd, -1), be_const_var(13) },
- { be_const_key_weak(_i2r_privacy, -1), be_const_var(24) },
- { be_const_key_weak(_PASE, -1), be_const_int(1) },
- { be_const_key_weak(get_mode, 1), be_const_closure(Matter_Session_get_mode_closure) },
- { be_const_key_weak(get_icac, 53), be_const_closure(Matter_Session_get_icac_closure) },
- { be_const_key_weak(is_PASE, -1), be_const_closure(Matter_Session_is_PASE_closure) },
- { be_const_key_weak(gen_CSR, -1), be_const_closure(Matter_Session_gen_CSR_closure) },
- { be_const_key_weak(_message_handler, 51), be_const_var(19) },
- { be_const_key_weak(__spake_Ke, -1), be_const_var(34) },
- { be_const_key_weak(get_admin_subject, -1), be_const_closure(Matter_Session_get_admin_subject_closure) },
- { be_const_key_weak(before_remove, 73), be_const_closure(Matter_Session_before_remove_closure) },
- { be_const_key_weak(__responder_pub, -1), be_const_var(31) },
- { be_const_key_weak(i2rkey, -1), be_const_var(22) },
- { be_const_key_weak(created, -1), be_const_var(5) },
- { be_const_key_weak(_CASE, -1), be_const_int(2) },
- { be_const_key_weak(_port, -1), be_const_var(18) },
- { be_const_key_weak(_store, -1), be_const_var(0) },
- { be_const_key_weak(get_device_id, -1), be_const_closure(Matter_Session_get_device_id_closure) },
- { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Session_get_admin_vendor_closure) },
- { be_const_key_weak(get_fabric, -1), be_const_closure(Matter_Session_get_fabric_closure) },
- { be_const_key_weak(_counter_insecure_rcv, 28), be_const_var(20) },
- { be_const_key_weak(get_ipk_group_key, -1), be_const_closure(Matter_Session_get_ipk_group_key_closure) },
- { be_const_key_weak(__responder_priv, -1), be_const_var(30) },
- { be_const_key_weak(_GROUP_KEY, 56), be_nested_str_weak(GroupKey_X20v1_X2E0) },
- { be_const_key_weak(_temp_root_ca_certificate, -1), be_const_var(8) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_Session_init_closure) },
- { be_const_key_weak(get_noc, 41), be_const_closure(Matter_Session_get_noc_closure) },
- { be_const_key_weak(set_fabric_label, 15), be_const_closure(Matter_Session_set_fabric_label_closure) },
- { be_const_key_weak(shared_secret, -1), be_const_var(29) },
- { be_const_key_weak(hydrate_post, 33), be_const_closure(Matter_Session_hydrate_post_closure) },
- { be_const_key_weak(fromjson, -1), be_const_static_closure(Matter_Session_fromjson_closure) },
- { be_const_key_weak(save, -1), be_const_closure(Matter_Session_save_closure) },
- { be_const_key_weak(_source_node_id, -1), be_const_var(7) },
- { be_const_key_weak(set_mode, 25), be_const_closure(Matter_Session_set_mode_closure) },
- { be_const_key_weak(_counter_snd_impl, -1), be_const_var(15) },
- { be_const_key_weak(__Msg1, 81), be_const_var(35) },
- { be_const_key_weak(set_temp_ca, -1), be_const_closure(Matter_Session_set_temp_ca_closure) },
- { be_const_key_weak(get_i2r_privacy, -1), be_const_closure(Matter_Session_get_i2r_privacy_closure) },
- { be_const_key_weak(initiator_session_id, -1), be_const_var(4) },
- { be_const_key_weak(__future_local_session_id, -1), be_const_var(11) },
- { be_const_key_weak(r2ikey, -1), be_const_var(23) },
- { be_const_key_weak(get_fabric_id, 72), be_const_closure(Matter_Session_get_fabric_id_closure) },
+ { be_const_key_weak(set_mode, 6), be_const_closure(Matter_Session_set_mode_closure) },
+ { be_const_key_weak(set_mode_PASE, 57), be_const_closure(Matter_Session_set_mode_PASE_closure) },
+ { be_const_key_weak(_counter_rcv_impl, 79), be_const_var(14) },
+ { be_const_key_weak(attestation_challenge, 56), be_const_var(25) },
{ be_const_key_weak(get_ac, -1), be_const_closure(Matter_Session_get_ac_closure) },
- { be_const_key_weak(local_session_id, -1), be_const_var(3) },
- { be_const_key_weak(counter_snd_next, -1), be_const_closure(Matter_Session_counter_snd_next_closure) },
- { be_const_key_weak(counter_rcv_validate, -1), be_const_closure(Matter_Session_counter_rcv_validate_closure) },
- { be_const_key_weak(get_ca, 35), be_const_closure(Matter_Session_get_ca_closure) },
- { be_const_key_weak(_counter_rcv_impl, -1), be_const_var(14) },
- { be_const_key_weak(update, -1), be_const_closure(Matter_Session_update_closure) },
- { be_const_key_weak(close, 23), be_const_closure(Matter_Session_close_closure) },
- { be_const_key_weak(get_ca_pub, -1), be_const_closure(Matter_Session_get_ca_pub_closure) },
+ { be_const_key_weak(get_fabric, -1), be_const_closure(Matter_Session_get_fabric_closure) },
+ { be_const_key_weak(get_temp_ca, 69), be_const_closure(Matter_Session_get_temp_ca_closure) },
+ { be_const_key_weak(_COUNTER_SND_INCR, -1), be_const_int(1024) },
+ { be_const_key_weak(_CASE, -1), be_const_int(2) },
+ { be_const_key_weak(_counter_insecure_rcv, 2), be_const_var(20) },
{ be_const_key_weak(_breadcrumb, -1), be_const_var(27) },
- { be_const_key_weak(_COUNTER_SND_INCR, 21), be_const_int(1024) },
- { be_const_key_weak(_counter_insecure_snd, -1), be_const_var(21) },
+ { be_const_key_weak(r2ikey, 82), be_const_var(23) },
+ { be_const_key_weak(set_keys, 52), be_const_closure(Matter_Session_set_keys_closure) },
+ { be_const_key_weak(_exchange_id, -1), be_const_var(16) },
+ { be_const_key_weak(peer_node_id, 8), be_const_var(26) },
+ { be_const_key_weak(last_used, 80), be_const_var(6) },
+ { be_const_key_weak(_source_node_id, 48), be_const_var(7) },
+ { be_const_key_weak(init, 36), be_const_closure(Matter_Session_init_closure) },
+ { be_const_key_weak(set_temp_ca, -1), be_const_closure(Matter_Session_set_temp_ca_closure) },
+ { be_const_key_weak(created, -1), be_const_var(5) },
{ be_const_key_weak(persist_to_fabric, -1), be_const_closure(Matter_Session_persist_to_fabric_closure) },
- { be_const_key_weak(counter_rcv, 5), be_const_var(12) },
- { be_const_key_weak(tojson, -1), be_const_closure(Matter_Session_tojson_closure) },
- { be_const_key_weak(get_r2i, -1), be_const_closure(Matter_Session_get_r2i_closure) },
+ { be_const_key_weak(__initiator_pub, -1), be_const_var(32) },
+ { be_const_key_weak(gen_CSR, -1), be_const_closure(Matter_Session_gen_CSR_closure) },
+ { be_const_key_weak(_store, -1), be_const_var(0) },
+ { be_const_key_weak(get_ipk_epoch_key, 49), be_const_closure(Matter_Session_get_ipk_epoch_key_closure) },
+ { be_const_key_weak(__responder_priv, 7), be_const_var(30) },
+ { be_const_key_weak(counter_rcv_validate, -1), be_const_closure(Matter_Session_counter_rcv_validate_closure) },
+ { be_const_key_weak(_ip, -1), be_const_var(17) },
+ { be_const_key_weak(get_admin_subject, 40), be_const_closure(Matter_Session_get_admin_subject_closure) },
+ { be_const_key_weak(resumption_id, -1), be_const_var(28) },
+ { be_const_key_weak(_i2r_privacy, -1), be_const_var(24) },
{ be_const_key_weak(get_fabric_compressed, -1), be_const_closure(Matter_Session_get_fabric_compressed_closure) },
+ { be_const_key_weak(_temp_pk, -1), be_const_var(9) },
+ { be_const_key_weak(shared_secret, 74), be_const_var(29) },
+ { be_const_key_weak(_temp_root_ca_certificate, -1), be_const_var(8) },
+ { be_const_key_weak(get_ca, -1), be_const_closure(Matter_Session_get_ca_closure) },
+ { be_const_key_weak(_fabric, 10), be_const_var(2) },
+ { be_const_key_weak(__spake_cA, -1), be_const_var(33) },
+ { be_const_key_weak(get_ipk_group_key, -1), be_const_closure(Matter_Session_get_ipk_group_key_closure) },
+ { be_const_key_weak(initiator_session_id, 18), be_const_var(4) },
+ { be_const_key_weak(get_i2r_privacy, -1), be_const_closure(Matter_Session_get_i2r_privacy_closure) },
+ { be_const_key_weak(__chunked_attr_reports, -1), be_const_var(37) },
+ { be_const_key_weak(get_ca_pub, -1), be_const_closure(Matter_Session_get_ca_pub_closure) },
+ { be_const_key_weak(counter_snd, 20), be_const_var(13) },
+ { be_const_key_weak(set_fabric_label, 35), be_const_closure(Matter_Session_set_fabric_label_closure) },
+ { be_const_key_weak(_counter_snd_impl, 71), be_const_var(15) },
+ { be_const_key_weak(is_CASE, -1), be_const_closure(Matter_Session_is_CASE_closure) },
+ { be_const_key_weak(before_remove, -1), be_const_closure(Matter_Session_before_remove_closure) },
+ { be_const_key_weak(set_mode_CASE, -1), be_const_closure(Matter_Session_set_mode_CASE_closure) },
+ { be_const_key_weak(get_icac, -1), be_const_closure(Matter_Session_get_icac_closure) },
+ { be_const_key_weak(tojson, 61), be_const_closure(Matter_Session_tojson_closure) },
+ { be_const_key_weak(close, 1), be_const_closure(Matter_Session_close_closure) },
+ { be_const_key_weak(get_fabric_label, 42), be_const_closure(Matter_Session_get_fabric_label_closure) },
+ { be_const_key_weak(_counter_insecure_snd, -1), be_const_var(21) },
+ { be_const_key_weak(get_device_id, 63), be_const_closure(Matter_Session_get_device_id_closure) },
+ { be_const_key_weak(counter_rcv, 62), be_const_var(12) },
+ { be_const_key_weak(__Msg1, -1), be_const_var(35) },
+ { be_const_key_weak(hydrate_post, 66), be_const_closure(Matter_Session_hydrate_post_closure) },
+ { be_const_key_weak(_message_handler, -1), be_const_var(19) },
+ { be_const_key_weak(__future_initiator_session_id, -1), be_const_var(10) },
+ { be_const_key_weak(__spake_Ke, 32), be_const_var(34) },
+ { be_const_key_weak(__Msg2, 38), be_const_var(36) },
+ { be_const_key_weak(get_mode, -1), be_const_closure(Matter_Session_get_mode_closure) },
+ { be_const_key_weak(mode, -1), be_const_var(1) },
+ { be_const_key_weak(update, 16), be_const_closure(Matter_Session_update_closure) },
+ { be_const_key_weak(counter_snd_next, -1), be_const_closure(Matter_Session_counter_snd_next_closure) },
+ { be_const_key_weak(get_temp_ca_pub, -1), be_const_closure(Matter_Session_get_temp_ca_pub_closure) },
+ { be_const_key_weak(get_i2r, -1), be_const_closure(Matter_Session_get_i2r_closure) },
+ { be_const_key_weak(get_noc, 37), be_const_closure(Matter_Session_get_noc_closure) },
+ { be_const_key_weak(get_fabric_id, -1), be_const_closure(Matter_Session_get_fabric_id_closure) },
+ { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Session_get_admin_vendor_closure) },
+ { be_const_key_weak(is_PASE, -1), be_const_closure(Matter_Session_is_PASE_closure) },
+ { be_const_key_weak(save, 21), be_const_closure(Matter_Session_save_closure) },
+ { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) },
+ { be_const_key_weak(local_session_id, 76), be_const_var(3) },
+ { be_const_key_weak(i2rkey, 17), be_const_var(22) },
+ { be_const_key_weak(__future_local_session_id, -1), be_const_var(11) },
+ { be_const_key_weak(_PASE, -1), be_const_int(1) },
+ { be_const_key_weak(get_fabric_index, -1), be_const_closure(Matter_Session_get_fabric_index_closure) },
+ { be_const_key_weak(_port, -1), be_const_var(18) },
+ { be_const_key_weak(get_r2i, -1), be_const_closure(Matter_Session_get_r2i_closure) },
+ { be_const_key_weak(get_pk, -1), be_const_closure(Matter_Session_get_pk_closure) },
+ { be_const_key_weak(__responder_pub, -1), be_const_var(31) },
+ { be_const_key_weak(fromjson, 0), be_const_static_closure(Matter_Session_fromjson_closure) },
})),
be_str_weak(Matter_Session)
);
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 13f83bca6..e4ccf468a 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
@@ -1156,7 +1156,7 @@ be_local_closure(Matter_Session_Store_find_session_by_resumption_id, /* name *
********************************************************************/
be_local_closure(Matter_Session_Store_save_fabrics, /* name */
be_nested_proto(
- 12, /* nstack */
+ 11, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1164,121 +1164,118 @@ be_local_closure(Matter_Session_Store_save_fabrics, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
+ ( &(const bvalue[24]) { /* constants */
/* K0 */ be_nested_str_weak(json),
/* K1 */ be_nested_str_weak(remove_expired),
/* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(fabrics),
- /* K4 */ be_nested_str_weak(persistables),
- /* K5 */ be_nested_str_weak(_sessions),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(stop_iteration),
- /* K8 */ be_nested_str_weak(push),
- /* K9 */ be_nested_str_weak(tojson),
- /* K10 */ be_nested_str_weak(_X5B),
- /* K11 */ be_nested_str_weak(concat),
+ /* K3 */ be_nested_str_weak(_FABRICS),
+ /* K4 */ be_nested_str_weak(w),
+ /* K5 */ be_nested_str_weak(write),
+ /* K6 */ be_nested_str_weak(_X5B),
+ /* K7 */ be_nested_str_weak(fabrics),
+ /* K8 */ be_nested_str_weak(persistables),
+ /* K9 */ be_nested_str_weak(_sessions),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_nested_str_weak(stop_iteration),
/* K12 */ be_nested_str_weak(_X2C),
- /* K13 */ be_nested_str_weak(_X5D),
- /* K14 */ be_nested_str_weak(_FABRICS),
- /* K15 */ be_nested_str_weak(w),
- /* K16 */ be_nested_str_weak(write),
- /* K17 */ be_nested_str_weak(close),
- /* K18 */ be_nested_str_weak(tasmota),
- /* K19 */ be_nested_str_weak(log),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25i_X20fabric_X28s_X29_X20and_X20_X25i_X20session_X28s_X29),
- /* K21 */ be_const_int(3),
- /* K22 */ be_nested_str_weak(device),
- /* K23 */ be_nested_str_weak(event_fabrics_saved),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
- /* K25 */ be_nested_str_weak(_X7C),
- /* K26 */ be_const_int(2),
+ /* K13 */ be_nested_str_weak(tojson),
+ /* K14 */ be_nested_str_weak(_X5D),
+ /* K15 */ be_nested_str_weak(close),
+ /* K16 */ be_nested_str_weak(tasmota),
+ /* K17 */ be_nested_str_weak(log),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29),
+ /* K19 */ be_const_int(2),
+ /* K20 */ be_nested_str_weak(device),
+ /* K21 */ be_nested_str_weak(event_fabrics_saved),
+ /* K22 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
+ /* K23 */ be_nested_str_weak(_X7C),
}),
be_str_weak(save_fabrics),
&be_const_str_solidified,
( &(const binstruction[86]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x58080002, // 0003 LDCONST R2 K2
- 0x600C0012, // 0004 GETGBL R3 G18
- 0x7C0C0000, // 0005 CALL R3 0
- 0x60100010, // 0006 GETGBL R4 G16
+ 0xA8020041, // 0001 EXBLK 0 #0044
+ 0x8C080101, // 0002 GETMET R2 R0 K1
+ 0x7C080200, // 0003 CALL R2 1
+ 0x58080002, // 0004 LDCONST R2 K2
+ 0x580C0002, // 0005 LDCONST R3 K2
+ 0x60100011, // 0006 GETGBL R4 G17
0x88140103, // 0007 GETMBR R5 R0 K3
- 0x8C140B04, // 0008 GETMET R5 R5 K4
- 0x7C140200, // 0009 CALL R5 1
- 0x7C100200, // 000A CALL R4 1
- 0xA8020013, // 000B EXBLK 0 #0020
- 0x5C140800, // 000C MOVE R5 R4
- 0x7C140000, // 000D CALL R5 0
- 0x60180010, // 000E GETGBL R6 G16
- 0x881C0B05, // 000F GETMBR R7 R5 K5
- 0x8C1C0F04, // 0010 GETMET R7 R7 K4
- 0x7C1C0200, // 0011 CALL R7 1
- 0x7C180200, // 0012 CALL R6 1
- 0xA8020003, // 0013 EXBLK 0 #0018
- 0x5C1C0C00, // 0014 MOVE R7 R6
- 0x7C1C0000, // 0015 CALL R7 0
- 0x00080506, // 0016 ADD R2 R2 K6
- 0x7001FFFB, // 0017 JMP #0014
- 0x58180007, // 0018 LDCONST R6 K7
- 0xAC180200, // 0019 CATCH R6 1 0
- 0xB0080000, // 001A RAISE 2 R0 R0
- 0x8C180708, // 001B GETMET R6 R3 K8
- 0x8C200B09, // 001C GETMET R8 R5 K9
- 0x7C200200, // 001D CALL R8 1
- 0x7C180400, // 001E CALL R6 2
- 0x7001FFEB, // 001F JMP #000C
- 0x58100007, // 0020 LDCONST R4 K7
- 0xAC100200, // 0021 CATCH R4 1 0
- 0xB0080000, // 0022 RAISE 2 R0 R0
- 0x6010000C, // 0023 GETGBL R4 G12
- 0x5C140600, // 0024 MOVE R5 R3
- 0x7C100200, // 0025 CALL R4 1
- 0x8C14070B, // 0026 GETMET R5 R3 K11
- 0x581C000C, // 0027 LDCONST R7 K12
- 0x7C140400, // 0028 CALL R5 2
- 0x00161405, // 0029 ADD R5 K10 R5
- 0x00140B0D, // 002A ADD R5 R5 K13
- 0x5C0C0A00, // 002B MOVE R3 R5
- 0xA8020016, // 002C EXBLK 0 #0044
- 0x60140011, // 002D GETGBL R5 G17
- 0x8818010E, // 002E GETMBR R6 R0 K14
- 0x581C000F, // 002F LDCONST R7 K15
- 0x7C140400, // 0030 CALL R5 2
- 0x8C180B10, // 0031 GETMET R6 R5 K16
- 0x5C200600, // 0032 MOVE R8 R3
- 0x7C180400, // 0033 CALL R6 2
- 0x8C180B11, // 0034 GETMET R6 R5 K17
- 0x7C180200, // 0035 CALL R6 1
- 0xB81A2400, // 0036 GETNGBL R6 K18
- 0x8C180D13, // 0037 GETMET R6 R6 K19
- 0x60200018, // 0038 GETGBL R8 G24
- 0x58240014, // 0039 LDCONST R9 K20
- 0x5C280800, // 003A MOVE R10 R4
- 0x5C2C0400, // 003B MOVE R11 R2
- 0x7C200600, // 003C CALL R8 3
- 0x58240015, // 003D LDCONST R9 K21
- 0x7C180600, // 003E CALL R6 3
- 0x88180116, // 003F GETMBR R6 R0 K22
- 0x8C180D17, // 0040 GETMET R6 R6 K23
- 0x7C180200, // 0041 CALL R6 1
+ 0x58180004, // 0008 LDCONST R6 K4
+ 0x7C100400, // 0009 CALL R4 2
+ 0x8C140905, // 000A GETMET R5 R4 K5
+ 0x581C0006, // 000B LDCONST R7 K6
+ 0x7C140400, // 000C CALL R5 2
+ 0x60140010, // 000D GETGBL R5 G16
+ 0x88180107, // 000E GETMBR R6 R0 K7
+ 0x8C180D08, // 000F GETMET R6 R6 K8
+ 0x7C180200, // 0010 CALL R6 1
+ 0x7C140200, // 0011 CALL R5 1
+ 0xA802001A, // 0012 EXBLK 0 #002E
+ 0x5C180A00, // 0013 MOVE R6 R5
+ 0x7C180000, // 0014 CALL R6 0
+ 0x601C0010, // 0015 GETGBL R7 G16
+ 0x88200D09, // 0016 GETMBR R8 R6 K9
+ 0x8C201108, // 0017 GETMET R8 R8 K8
+ 0x7C200200, // 0018 CALL R8 1
+ 0x7C1C0200, // 0019 CALL R7 1
+ 0xA8020003, // 001A EXBLK 0 #001F
+ 0x5C200E00, // 001B MOVE R8 R7
+ 0x7C200000, // 001C CALL R8 0
+ 0x0008050A, // 001D ADD R2 R2 K10
+ 0x7001FFFB, // 001E JMP #001B
+ 0x581C000B, // 001F LDCONST R7 K11
+ 0xAC1C0200, // 0020 CATCH R7 1 0
+ 0xB0080000, // 0021 RAISE 2 R0 R0
+ 0x241C0702, // 0022 GT R7 R3 K2
+ 0x781E0002, // 0023 JMPF R7 #0027
+ 0x8C1C0905, // 0024 GETMET R7 R4 K5
+ 0x5824000C, // 0025 LDCONST R9 K12
+ 0x7C1C0400, // 0026 CALL R7 2
+ 0x8C1C0D0D, // 0027 GETMET R7 R6 K13
+ 0x7C1C0200, // 0028 CALL R7 1
+ 0x8C200905, // 0029 GETMET R8 R4 K5
+ 0x5C280E00, // 002A MOVE R10 R7
+ 0x7C200400, // 002B CALL R8 2
+ 0x000C070A, // 002C ADD R3 R3 K10
+ 0x7001FFE4, // 002D JMP #0013
+ 0x5814000B, // 002E LDCONST R5 K11
+ 0xAC140200, // 002F CATCH R5 1 0
+ 0xB0080000, // 0030 RAISE 2 R0 R0
+ 0x8C140905, // 0031 GETMET R5 R4 K5
+ 0x581C000E, // 0032 LDCONST R7 K14
+ 0x7C140400, // 0033 CALL R5 2
+ 0x8C14090F, // 0034 GETMET R5 R4 K15
+ 0x7C140200, // 0035 CALL R5 1
+ 0xB8162000, // 0036 GETNGBL R5 K16
+ 0x8C140B11, // 0037 GETMET R5 R5 K17
+ 0x601C0018, // 0038 GETGBL R7 G24
+ 0x58200012, // 0039 LDCONST R8 K18
+ 0x5C240600, // 003A MOVE R9 R3
+ 0x5C280400, // 003B MOVE R10 R2
+ 0x7C1C0600, // 003C CALL R7 3
+ 0x58200013, // 003D LDCONST R8 K19
+ 0x7C140600, // 003E CALL R5 3
+ 0x88140114, // 003F GETMBR R5 R0 K20
+ 0x8C140B15, // 0040 GETMET R5 R5 K21
+ 0x7C140200, // 0041 CALL R5 1
0xA8040001, // 0042 EXBLK 1 1
0x70020010, // 0043 JMP #0055
- 0xAC140002, // 0044 CATCH R5 0 2
+ 0xAC080002, // 0044 CATCH R2 0 2
0x7002000D, // 0045 JMP #0054
- 0xB81E2400, // 0046 GETNGBL R7 K18
- 0x8C1C0F13, // 0047 GETMET R7 R7 K19
- 0x60240008, // 0048 GETGBL R9 G8
- 0x5C280A00, // 0049 MOVE R10 R5
- 0x7C240200, // 004A CALL R9 1
- 0x00263009, // 004B ADD R9 K24 R9
- 0x00241319, // 004C ADD R9 R9 K25
- 0x60280008, // 004D GETGBL R10 G8
- 0x5C2C0C00, // 004E MOVE R11 R6
- 0x7C280200, // 004F CALL R10 1
- 0x0024120A, // 0050 ADD R9 R9 R10
- 0x5828001A, // 0051 LDCONST R10 K26
- 0x7C1C0600, // 0052 CALL R7 3
+ 0xB8122000, // 0046 GETNGBL R4 K16
+ 0x8C100911, // 0047 GETMET R4 R4 K17
+ 0x60180008, // 0048 GETGBL R6 G8
+ 0x5C1C0400, // 0049 MOVE R7 R2
+ 0x7C180200, // 004A CALL R6 1
+ 0x001A2C06, // 004B ADD R6 K22 R6
+ 0x00180D17, // 004C ADD R6 R6 K23
+ 0x601C0008, // 004D GETGBL R7 G8
+ 0x5C200600, // 004E MOVE R8 R3
+ 0x7C1C0200, // 004F CALL R7 1
+ 0x00180C07, // 0050 ADD R6 R6 R7
+ 0x581C0013, // 0051 LDCONST R7 K19
+ 0x7C100600, // 0052 CALL R4 3
0x70020000, // 0053 JMP #0055
0xB0080000, // 0054 RAISE 2 R0 R0
0x80000000, // 0055 RET 0
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
index f5bce6577..c829d0346 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
@@ -6,6 +6,30 @@
extern const bclass be_class_Matter_TLV_item;
+/********************************************************************
+** Solidified function: to_TLV
+********************************************************************/
+be_local_closure(Matter_TLV_item_to_TLV, /* 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(to_TLV),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80040000, // 0000 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: set_parent
********************************************************************/
@@ -34,39 +58,137 @@ be_local_closure(Matter_TLV_item_set_parent, /* name */
/********************************************************************
-** Solidified function: create_TLV
+** Solidified function: set_fulltag
********************************************************************/
-be_local_closure(Matter_TLV_item_create_TLV, /* name */
+be_local_closure(Matter_TLV_item_set_fulltag, /* 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(tag_vendor),
+ /* K1 */ be_nested_str_weak(tag_profile),
+ /* K2 */ be_nested_str_weak(tag_number),
+ /* K3 */ be_nested_str_weak(tag_sub),
+ }),
+ be_str_weak(set_fulltag),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0x60100009, // 0000 GETGBL R4 G9
+ 0x5C140200, // 0001 MOVE R5 R1
+ 0x7C100200, // 0002 CALL R4 1
+ 0x90020004, // 0003 SETMBR R0 K0 R4
+ 0x60100009, // 0004 GETGBL R4 G9
+ 0x5C140400, // 0005 MOVE R5 R2
+ 0x7C100200, // 0006 CALL R4 1
+ 0x90020204, // 0007 SETMBR R0 K1 R4
+ 0x60100009, // 0008 GETGBL R4 G9
+ 0x5C140600, // 0009 MOVE R5 R3
+ 0x7C100200, // 000A CALL R4 1
+ 0x90020404, // 000B SETMBR R0 K2 R4
+ 0x4C100000, // 000C LDNIL R4
+ 0x90020604, // 000D SETMBR R0 K3 R4
+ 0x80000000, // 000E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_contextspecific
+********************************************************************/
+be_local_closure(Matter_TLV_item_set_contextspecific, /* 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[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(set_fulltag),
+ /* K1 */ be_nested_str_weak(tag_sub),
+ }),
+ be_str_weak(set_contextspecific),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x7C080200, // 0001 CALL R2 1
+ 0x60080009, // 0002 GETGBL R2 G9
+ 0x5C0C0200, // 0003 MOVE R3 R1
+ 0x7C080200, // 0004 CALL R2 1
+ 0x90020202, // 0005 SETMBR R0 K1 R2
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: sort
+********************************************************************/
+be_local_closure(Matter_TLV_item_sort, /* 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[ 3]) { /* constants */
+ ( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_const_class(be_class_Matter_TLV_item),
- /* K1 */ be_nested_str_weak(typ),
- /* K2 */ be_nested_str_weak(val),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(_cmp_gt),
+ /* K4 */ be_nested_str_weak(stop_iteration),
}),
- be_str_weak(create_TLV),
+ be_str_weak(sort),
&be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x200C0203, // 0002 NE R3 R1 R3
- 0x740E0002, // 0003 JMPT R3 #0007
- 0x540E0013, // 0004 LDINT R3 20
- 0x1C0C0003, // 0005 EQ R3 R0 R3
- 0x780E0004, // 0006 JMPF R3 #000C
- 0x5C0C0400, // 0007 MOVE R3 R2
- 0x7C0C0000, // 0008 CALL R3 0
- 0x900E0200, // 0009 SETMBR R3 K1 R0
- 0x900E0401, // 000A SETMBR R3 K2 R1
- 0x80040600, // 000B RET 1 R3
- 0x80000000, // 000C RET 0
+ ( &(const binstruction[33]) { /* 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
+ 0xA8020013, // 0008 EXBLK 0 #001D
+ 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
+ 0x781A000B, // 000E JMPF R6 #001B
+ 0x04180B01, // 000F SUB R6 R5 K1
+ 0x94180006, // 0010 GETIDX R6 R0 R6
+ 0x8C180D03, // 0011 GETMET R6 R6 K3
+ 0x5C200800, // 0012 MOVE R8 R4
+ 0x7C180400, // 0013 CALL R6 2
+ 0x24180D02, // 0014 GT R6 R6 K2
+ 0x781A0004, // 0015 JMPF R6 #001B
+ 0x04180B01, // 0016 SUB R6 R5 K1
+ 0x94180006, // 0017 GETIDX R6 R0 R6
+ 0x98000A06, // 0018 SETIDX R0 R5 R6
+ 0x04140B01, // 0019 SUB R5 R5 K1
+ 0x7001FFF1, // 001A JMP #000D
+ 0x98000A04, // 001B SETIDX R0 R5 R4
+ 0x7001FFEB, // 001C JMP #0009
+ 0x58080004, // 001D LDCONST R2 K4
+ 0xAC080200, // 001E CATCH R2 1 0
+ 0xB0080000, // 001F RAISE 2 R0 R0
+ 0x80040000, // 0020 RET 1 R0
})
)
);
@@ -74,326 +196,137 @@ be_local_closure(Matter_TLV_item_create_TLV, /* name */
/********************************************************************
-** Solidified function: set_anonymoustag
+** Solidified function: to_str_val
********************************************************************/
-be_local_closure(Matter_TLV_item_set_anonymoustag, /* 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(set_fulltag),
- }),
- be_str_weak(set_anonymoustag),
- &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: set_commonprofile
-********************************************************************/
-be_local_closure(Matter_TLV_item_set_commonprofile, /* 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[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(set_fulltag),
- }),
- be_str_weak(set_commonprofile),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x5411FFFE, // 0002 LDINT R4 -1
- 0x4C140000, // 0003 LDNIL R5
- 0x7C040800, // 0004 CALL R1 4
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _cmp_gt
-********************************************************************/
-be_local_closure(Matter_TLV_item__cmp_gt, /* name */
+be_local_closure(Matter_TLV_item_to_str_val, /* name */
be_nested_proto(
4, /* nstack */
- 2, /* argc */
+ 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(tag_vendor),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(tag_profile),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(tag_number),
- /* K5 */ be_nested_str_weak(tag_sub),
+ ( &(const bvalue[16]) { /* constants */
+ /* K0 */ be_nested_str_weak(val),
+ /* K1 */ be_nested_str_weak(int),
+ /* K2 */ be_nested_str_weak(typ),
+ /* K3 */ be_nested_str_weak(TLV),
+ /* K4 */ be_nested_str_weak(U1),
+ /* K5 */ be_nested_str_weak(U8),
+ /* K6 */ be_nested_str_weak(U),
+ /* K7 */ be_nested_str_weak(bool),
+ /* K8 */ be_nested_str_weak(true),
+ /* K9 */ be_nested_str_weak(false),
+ /* K10 */ be_nested_str_weak(null),
+ /* K11 */ be_nested_str_weak(real),
+ /* K12 */ be_nested_str_weak(string),
+ /* K13 */ be_nested_str_weak(int64),
+ /* K14 */ be_nested_str_weak(tostring),
+ /* K15 */ be_nested_str_weak(instance),
}),
- be_str_weak(_cmp_gt),
+ be_str_weak(to_str_val),
&be_const_str_solidified,
- ( &(const binstruction[72]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x20080403, // 0002 NE R2 R2 R3
- 0x780A0012, // 0003 JMPF R2 #0017
- 0x88080300, // 0004 GETMBR R2 R1 K0
- 0x4C0C0000, // 0005 LDNIL R3
- 0x1C080403, // 0006 EQ R2 R2 R3
- 0x780A0000, // 0007 JMPF R2 #0009
- 0x80060200, // 0008 RET 1 K1
- 0x88080100, // 0009 GETMBR R2 R0 K0
- 0x880C0300, // 000A GETMBR R3 R1 K0
- 0x24080403, // 000B GT R2 R2 R3
- 0x780A0000, // 000C JMPF R2 #000E
- 0x80060200, // 000D RET 1 K1
- 0x88080100, // 000E GETMBR R2 R0 K0
- 0x880C0300, // 000F GETMBR R3 R1 K0
- 0x1C080403, // 0010 EQ R2 R2 R3
- 0x780A0004, // 0011 JMPF R2 #0017
- 0x88080102, // 0012 GETMBR R2 R0 K2
- 0x880C0302, // 0013 GETMBR R3 R1 K2
- 0x24080403, // 0014 GT R2 R2 R3
- 0x780A0000, // 0015 JMPF R2 #0017
- 0x80060200, // 0016 RET 1 K1
- 0x88080102, // 0017 GETMBR R2 R0 K2
- 0x540DFFFE, // 0018 LDINT R3 -1
- 0x1C080403, // 0019 EQ R2 R2 R3
- 0x780A0005, // 001A JMPF R2 #0021
- 0x88080302, // 001B GETMBR R2 R1 K2
- 0x4C0C0000, // 001C LDNIL R3
- 0x1C080403, // 001D EQ R2 R2 R3
- 0x780A0000, // 001E JMPF R2 #0020
- 0x80060200, // 001F RET 1 K1
- 0x70020008, // 0020 JMP #002A
- 0x88080102, // 0021 GETMBR R2 R0 K2
- 0x4C0C0000, // 0022 LDNIL R3
- 0x1C080403, // 0023 EQ R2 R2 R3
- 0x780A0004, // 0024 JMPF R2 #002A
- 0x88080302, // 0025 GETMBR R2 R1 K2
- 0x540DFFFE, // 0026 LDINT R3 -1
- 0x1C080403, // 0027 EQ R2 R2 R3
- 0x780A0000, // 0028 JMPF R2 #002A
- 0x80060600, // 0029 RET 1 K3
- 0x88080104, // 002A GETMBR R2 R0 K4
- 0x4C0C0000, // 002B LDNIL R3
- 0x20080403, // 002C NE R2 R2 R3
- 0x780A000A, // 002D JMPF R2 #0039
- 0x88080304, // 002E GETMBR R2 R1 K4
- 0x4C0C0000, // 002F LDNIL R3
- 0x1C080403, // 0030 EQ R2 R2 R3
- 0x780A0000, // 0031 JMPF R2 #0033
- 0x80060200, // 0032 RET 1 K1
- 0x88080104, // 0033 GETMBR R2 R0 K4
- 0x880C0304, // 0034 GETMBR R3 R1 K4
- 0x24080403, // 0035 GT R2 R2 R3
- 0x780A0000, // 0036 JMPF R2 #0038
- 0x80060200, // 0037 RET 1 K1
- 0x80060600, // 0038 RET 1 K3
- 0x88080105, // 0039 GETMBR R2 R0 K5
- 0x4C0C0000, // 003A LDNIL R3
- 0x20080403, // 003B NE R2 R2 R3
- 0x780A0009, // 003C JMPF R2 #0047
- 0x88080305, // 003D GETMBR R2 R1 K5
- 0x4C0C0000, // 003E LDNIL R3
- 0x1C080403, // 003F EQ R2 R2 R3
- 0x780A0000, // 0040 JMPF R2 #0042
- 0x80060200, // 0041 RET 1 K1
- 0x88080105, // 0042 GETMBR R2 R0 K5
- 0x880C0305, // 0043 GETMBR R3 R1 K5
- 0x24080403, // 0044 GT R2 R2 R3
- 0x780A0000, // 0045 JMPF R2 #0047
- 0x80060200, // 0046 RET 1 K1
- 0x80060600, // 0047 RET 1 K3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _encode_tag
-********************************************************************/
-be_local_closure(Matter_TLV_item__encode_tag, /* 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(tag_number),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(tag_vendor),
- /* K3 */ be_nested_str_weak(add),
- /* K4 */ be_nested_str_weak(typ),
- /* K5 */ be_const_int(1),
- /* K6 */ be_const_int(2),
- /* K7 */ be_nested_str_weak(tag_profile),
- /* K8 */ be_nested_str_weak(tag_sub),
- }),
- be_str_weak(_encode_tag),
- &be_const_str_solidified,
- ( &(const binstruction[133]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x20080403, // 0002 NE R2 R2 R3
- 0x780A0001, // 0003 JMPF R2 #0006
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x70020000, // 0005 JMP #0007
- 0x58080001, // 0006 LDCONST R2 K1
- 0x540EFFFF, // 0007 LDINT R3 65536
- 0x280C0403, // 0008 GE R3 R2 R3
- 0x740E0002, // 0009 JMPT R3 #000D
- 0x140C0501, // 000A LT R3 R2 K1
- 0x740E0000, // 000B JMPT R3 #000D
- 0x500C0001, // 000C LDBOOL R3 0 1
- 0x500C0200, // 000D LDBOOL R3 1 0
- 0x58100001, // 000E LDCONST R4 K1
- 0x88140102, // 000F GETMBR R5 R0 K2
- 0x4C180000, // 0010 LDNIL R6
- 0x20140A06, // 0011 NE R5 R5 R6
- 0x78160026, // 0012 JMPF R5 #003A
- 0x780E0012, // 0013 JMPF R3 #0027
- 0x8C140303, // 0014 GETMET R5 R1 K3
- 0x541E00DF, // 0015 LDINT R7 224
- 0x88200104, // 0016 GETMBR R8 R0 K4
- 0x001C0E08, // 0017 ADD R7 R7 R8
- 0x58200005, // 0018 LDCONST R8 K5
- 0x7C140600, // 0019 CALL R5 3
- 0x8C140303, // 001A GETMET R5 R1 K3
- 0x881C0102, // 001B GETMBR R7 R0 K2
- 0x58200006, // 001C LDCONST R8 K6
- 0x7C140600, // 001D CALL R5 3
- 0x8C140303, // 001E GETMET R5 R1 K3
- 0x881C0107, // 001F GETMBR R7 R0 K7
- 0x58200006, // 0020 LDCONST R8 K6
- 0x7C140600, // 0021 CALL R5 3
- 0x8C140303, // 0022 GETMET R5 R1 K3
- 0x881C0100, // 0023 GETMBR R7 R0 K0
- 0x54220003, // 0024 LDINT R8 4
- 0x7C140600, // 0025 CALL R5 3
- 0x70020011, // 0026 JMP #0039
- 0x8C140303, // 0027 GETMET R5 R1 K3
- 0x541E00BF, // 0028 LDINT R7 192
- 0x88200104, // 0029 GETMBR R8 R0 K4
- 0x001C0E08, // 002A ADD R7 R7 R8
- 0x58200005, // 002B LDCONST R8 K5
- 0x7C140600, // 002C CALL R5 3
- 0x8C140303, // 002D GETMET R5 R1 K3
- 0x881C0102, // 002E GETMBR R7 R0 K2
- 0x58200006, // 002F LDCONST R8 K6
- 0x7C140600, // 0030 CALL R5 3
- 0x8C140303, // 0031 GETMET R5 R1 K3
- 0x881C0107, // 0032 GETMBR R7 R0 K7
- 0x58200006, // 0033 LDCONST R8 K6
- 0x7C140600, // 0034 CALL R5 3
- 0x8C140303, // 0035 GETMET R5 R1 K3
- 0x881C0100, // 0036 GETMBR R7 R0 K0
- 0x58200006, // 0037 LDCONST R8 K6
- 0x7C140600, // 0038 CALL R5 3
- 0x70020049, // 0039 JMP #0084
- 0x88140107, // 003A GETMBR R5 R0 K7
- 0x5419FFFE, // 003B LDINT R6 -1
- 0x1C140A06, // 003C EQ R5 R5 R6
- 0x78160016, // 003D JMPF R5 #0055
- 0x780E000A, // 003E JMPF R3 #004A
- 0x8C140303, // 003F GETMET R5 R1 K3
- 0x541E005F, // 0040 LDINT R7 96
- 0x88200104, // 0041 GETMBR R8 R0 K4
- 0x001C0E08, // 0042 ADD R7 R7 R8
- 0x58200005, // 0043 LDCONST R8 K5
- 0x7C140600, // 0044 CALL R5 3
- 0x8C140303, // 0045 GETMET R5 R1 K3
- 0x881C0100, // 0046 GETMBR R7 R0 K0
- 0x54220003, // 0047 LDINT R8 4
- 0x7C140600, // 0048 CALL R5 3
- 0x70020009, // 0049 JMP #0054
- 0x8C140303, // 004A GETMET R5 R1 K3
- 0x541E003F, // 004B LDINT R7 64
- 0x88200104, // 004C GETMBR R8 R0 K4
- 0x001C0E08, // 004D ADD R7 R7 R8
- 0x58200005, // 004E LDCONST R8 K5
- 0x7C140600, // 004F CALL R5 3
- 0x8C140303, // 0050 GETMET R5 R1 K3
- 0x881C0100, // 0051 GETMBR R7 R0 K0
- 0x58200006, // 0052 LDCONST R8 K6
- 0x7C140600, // 0053 CALL R5 3
- 0x7002002E, // 0054 JMP #0084
- 0x88140107, // 0055 GETMBR R5 R0 K7
- 0x4C180000, // 0056 LDNIL R6
- 0x20140A06, // 0057 NE R5 R5 R6
- 0x78160016, // 0058 JMPF R5 #0070
- 0x780E000A, // 0059 JMPF R3 #0065
- 0x8C140303, // 005A GETMET R5 R1 K3
- 0x541E009F, // 005B LDINT R7 160
- 0x88200104, // 005C GETMBR R8 R0 K4
- 0x001C0E08, // 005D ADD R7 R7 R8
- 0x58200005, // 005E LDCONST R8 K5
- 0x7C140600, // 005F CALL R5 3
- 0x8C140303, // 0060 GETMET R5 R1 K3
- 0x881C0100, // 0061 GETMBR R7 R0 K0
- 0x54220003, // 0062 LDINT R8 4
- 0x7C140600, // 0063 CALL R5 3
- 0x70020009, // 0064 JMP #006F
- 0x8C140303, // 0065 GETMET R5 R1 K3
- 0x541E007F, // 0066 LDINT R7 128
- 0x88200104, // 0067 GETMBR R8 R0 K4
- 0x001C0E08, // 0068 ADD R7 R7 R8
- 0x58200005, // 0069 LDCONST R8 K5
- 0x7C140600, // 006A CALL R5 3
- 0x8C140303, // 006B GETMET R5 R1 K3
- 0x881C0100, // 006C GETMBR R7 R0 K0
- 0x58200006, // 006D LDCONST R8 K6
- 0x7C140600, // 006E CALL R5 3
- 0x70020013, // 006F JMP #0084
- 0x88140108, // 0070 GETMBR R5 R0 K8
- 0x4C180000, // 0071 LDNIL R6
- 0x20140A06, // 0072 NE R5 R5 R6
- 0x7816000A, // 0073 JMPF R5 #007F
- 0x8C140303, // 0074 GETMET R5 R1 K3
- 0x541E001F, // 0075 LDINT R7 32
- 0x88200104, // 0076 GETMBR R8 R0 K4
- 0x001C0E08, // 0077 ADD R7 R7 R8
- 0x58200005, // 0078 LDCONST R8 K5
- 0x7C140600, // 0079 CALL R5 3
- 0x8C140303, // 007A GETMET R5 R1 K3
- 0x881C0108, // 007B GETMBR R7 R0 K8
- 0x58200005, // 007C LDCONST R8 K5
- 0x7C140600, // 007D CALL R5 3
- 0x70020004, // 007E JMP #0084
- 0x8C140303, // 007F GETMET R5 R1 K3
- 0x881C0104, // 0080 GETMBR R7 R0 K4
- 0x001E0207, // 0081 ADD R7 K1 R7
- 0x58200005, // 0082 LDCONST R8 K5
- 0x7C140600, // 0083 CALL R5 3
- 0x80000000, // 0084 RET 0
+ ( &(const binstruction[98]) { /* code */
+ 0x60040004, // 0000 GETGBL R1 G4
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x1C040301, // 0003 EQ R1 R1 K1
+ 0x78060014, // 0004 JMPF R1 #001A
+ 0x88040102, // 0005 GETMBR R1 R0 K2
+ 0x88080103, // 0006 GETMBR R2 R0 K3
+ 0x88080504, // 0007 GETMBR R2 R2 K4
+ 0x28040202, // 0008 GE R1 R1 R2
+ 0x7806000A, // 0009 JMPF R1 #0015
+ 0x88040102, // 000A GETMBR R1 R0 K2
+ 0x88080103, // 000B GETMBR R2 R0 K3
+ 0x88080505, // 000C GETMBR R2 R2 K5
+ 0x18040202, // 000D LE R1 R1 R2
+ 0x78060005, // 000E JMPF R1 #0015
+ 0x60040008, // 000F GETGBL R1 G8
+ 0x88080100, // 0010 GETMBR R2 R0 K0
+ 0x7C040200, // 0011 CALL R1 1
+ 0x00040306, // 0012 ADD R1 R1 K6
+ 0x80040200, // 0013 RET 1 R1
+ 0x70020003, // 0014 JMP #0019
+ 0x60040008, // 0015 GETGBL R1 G8
+ 0x88080100, // 0016 GETMBR R2 R0 K0
+ 0x7C040200, // 0017 CALL R1 1
+ 0x80040200, // 0018 RET 1 R1
+ 0x70020046, // 0019 JMP #0061
+ 0x60040004, // 001A GETGBL R1 G4
+ 0x88080100, // 001B GETMBR R2 R0 K0
+ 0x7C040200, // 001C CALL R1 1
+ 0x1C040307, // 001D EQ R1 R1 K7
+ 0x78060006, // 001E JMPF R1 #0026
+ 0x88040100, // 001F GETMBR R1 R0 K0
+ 0x78060001, // 0020 JMPF R1 #0023
+ 0x58040008, // 0021 LDCONST R1 K8
+ 0x70020000, // 0022 JMP #0024
+ 0x58040009, // 0023 LDCONST R1 K9
+ 0x80040200, // 0024 RET 1 R1
+ 0x7002003A, // 0025 JMP #0061
+ 0x88040100, // 0026 GETMBR R1 R0 K0
+ 0x4C080000, // 0027 LDNIL R2
+ 0x1C040202, // 0028 EQ R1 R1 R2
+ 0x78060001, // 0029 JMPF R1 #002C
+ 0x80061400, // 002A RET 1 K10
+ 0x70020034, // 002B JMP #0061
+ 0x60040004, // 002C GETGBL R1 G4
+ 0x88080100, // 002D GETMBR R2 R0 K0
+ 0x7C040200, // 002E CALL R1 1
+ 0x1C04030B, // 002F EQ R1 R1 K11
+ 0x78060004, // 0030 JMPF R1 #0036
+ 0x60040008, // 0031 GETGBL R1 G8
+ 0x88080100, // 0032 GETMBR R2 R0 K0
+ 0x7C040200, // 0033 CALL R1 1
+ 0x80040200, // 0034 RET 1 R1
+ 0x7002002A, // 0035 JMP #0061
+ 0x60040004, // 0036 GETGBL R1 G4
+ 0x88080100, // 0037 GETMBR R2 R0 K0
+ 0x7C040200, // 0038 CALL R1 1
+ 0x1C04030C, // 0039 EQ R1 R1 K12
+ 0x78060002, // 003A JMPF R1 #003E
+ 0x88040100, // 003B GETMBR R1 R0 K0
+ 0x80040200, // 003C RET 1 R1
+ 0x70020022, // 003D JMP #0061
+ 0x6004000F, // 003E GETGBL R1 G15
+ 0x88080100, // 003F GETMBR R2 R0 K0
+ 0xB80E1A00, // 0040 GETNGBL R3 K13
+ 0x7C040400, // 0041 CALL R1 2
+ 0x78060014, // 0042 JMPF R1 #0058
+ 0x88040102, // 0043 GETMBR R1 R0 K2
+ 0x88080103, // 0044 GETMBR R2 R0 K3
+ 0x88080504, // 0045 GETMBR R2 R2 K4
+ 0x28040202, // 0046 GE R1 R1 R2
+ 0x7806000A, // 0047 JMPF R1 #0053
+ 0x88040102, // 0048 GETMBR R1 R0 K2
+ 0x88080103, // 0049 GETMBR R2 R0 K3
+ 0x88080505, // 004A GETMBR R2 R2 K5
+ 0x18040202, // 004B LE R1 R1 R2
+ 0x78060005, // 004C JMPF R1 #0053
+ 0x88040100, // 004D GETMBR R1 R0 K0
+ 0x8C04030E, // 004E GETMET R1 R1 K14
+ 0x7C040200, // 004F CALL R1 1
+ 0x00040306, // 0050 ADD R1 R1 K6
+ 0x80040200, // 0051 RET 1 R1
+ 0x70020003, // 0052 JMP #0057
+ 0x88040100, // 0053 GETMBR R1 R0 K0
+ 0x8C04030E, // 0054 GETMET R1 R1 K14
+ 0x7C040200, // 0055 CALL R1 1
+ 0x80040200, // 0056 RET 1 R1
+ 0x70020008, // 0057 JMP #0061
+ 0x60040004, // 0058 GETGBL R1 G4
+ 0x88080100, // 0059 GETMBR R2 R0 K0
+ 0x7C040200, // 005A CALL R1 1
+ 0x1C04030F, // 005B EQ R1 R1 K15
+ 0x78060003, // 005C JMPF R1 #0061
+ 0x8C04010E, // 005D GETMET R1 R0 K14
+ 0x500C0200, // 005E LDBOOL R3 1 0
+ 0x7C040400, // 005F CALL R1 2
+ 0x80040200, // 0060 RET 1 R1
+ 0x80000000, // 0061 RET 0
})
)
);
@@ -715,11 +648,11 @@ be_local_closure(Matter_TLV_item_encode_len, /* name */
/********************************************************************
-** Solidified function: set_contextspecific
+** Solidified function: reset
********************************************************************/
-be_local_closure(Matter_TLV_item_set_contextspecific, /* name */
+be_local_closure(Matter_TLV_item_reset, /* name */
be_nested_proto(
- 4, /* nstack */
+ 3, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -727,20 +660,29 @@ be_local_closure(Matter_TLV_item_set_contextspecific, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(set_fulltag),
- /* K1 */ be_nested_str_weak(tag_sub),
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(parent),
+ /* K1 */ be_nested_str_weak(next_idx),
+ /* K2 */ be_nested_str_weak(tag_vendor),
+ /* K3 */ be_nested_str_weak(tag_profile),
+ /* K4 */ be_nested_str_weak(tag_number),
+ /* K5 */ be_nested_str_weak(tag_sub),
+ /* K6 */ be_nested_str_weak(typ),
+ /* K7 */ be_nested_str_weak(val),
}),
- be_str_weak(set_contextspecific),
+ be_str_weak(reset),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x7C080200, // 0001 CALL R2 1
- 0x60080009, // 0002 GETGBL R2 G9
- 0x5C0C0200, // 0003 MOVE R3 R1
- 0x7C080200, // 0004 CALL R2 1
- 0x90020202, // 0005 SETMBR R0 K1 R2
- 0x80000000, // 0006 RET 0
+ ( &(const binstruction[10]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x90020202, // 0002 SETMBR R0 K1 R2
+ 0x90020402, // 0003 SETMBR R0 K2 R2
+ 0x90020602, // 0004 SETMBR R0 K3 R2
+ 0x90020802, // 0005 SETMBR R0 K4 R2
+ 0x90020A02, // 0006 SETMBR R0 K5 R2
+ 0x90020C02, // 0007 SETMBR R0 K6 R2
+ 0x90020E02, // 0008 SETMBR R0 K7 R2
+ 0x80000000, // 0009 RET 0
})
)
);
@@ -748,42 +690,193 @@ be_local_closure(Matter_TLV_item_set_contextspecific, /* name */
/********************************************************************
-** Solidified function: set_fulltag
+** Solidified function: create_TLV
********************************************************************/
-be_local_closure(Matter_TLV_item_set_fulltag, /* name */
+be_local_closure(Matter_TLV_item_create_TLV, /* name */
be_nested_proto(
- 6, /* nstack */
- 4, /* argc */
+ 4, /* nstack */
+ 2, /* 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_TLV_item),
+ /* K1 */ be_nested_str_weak(typ),
+ /* K2 */ be_nested_str_weak(val),
+ }),
+ be_str_weak(create_TLV),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x200C0203, // 0002 NE R3 R1 R3
+ 0x740E0002, // 0003 JMPT R3 #0007
+ 0x540E0013, // 0004 LDINT R3 20
+ 0x1C0C0003, // 0005 EQ R3 R0 R3
+ 0x780E0004, // 0006 JMPF R3 #000C
+ 0x5C0C0400, // 0007 MOVE R3 R2
+ 0x7C0C0000, // 0008 CALL R3 0
+ 0x900E0200, // 0009 SETMBR R3 K1 R0
+ 0x900E0401, // 000A SETMBR R3 K2 R1
+ 0x80040600, // 000B RET 1 R3
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse
+********************************************************************/
+be_local_closure(Matter_TLV_item_parse, /* 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[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tag_vendor),
- /* K1 */ be_nested_str_weak(tag_profile),
- /* K2 */ be_nested_str_weak(tag_number),
- /* K3 */ be_nested_str_weak(tag_sub),
+ ( &(const bvalue[25]) { /* constants */
+ /* K0 */ be_nested_str_weak(typ),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(_len),
+ /* K3 */ be_nested_str_weak(val),
+ /* K4 */ be_nested_str_weak(int64),
+ /* K5 */ be_nested_str_weak(frombytes),
+ /* K6 */ be_nested_str_weak(BFALSE),
+ /* K7 */ be_nested_str_weak(BTRUE),
+ /* K8 */ be_nested_str_weak(U8),
+ /* K9 */ be_nested_str_weak(I8),
+ /* K10 */ be_nested_str_weak(geti),
+ /* K11 */ be_nested_str_weak(get),
+ /* K12 */ be_nested_str_weak(FLOAT),
+ /* K13 */ be_nested_str_weak(getfloat),
+ /* K14 */ be_const_int(1),
+ /* K15 */ be_nested_str_weak(UTF8),
+ /* K16 */ be_nested_str_weak(asstring),
+ /* K17 */ be_nested_str_weak(NULL),
+ /* K18 */ be_nested_str_weak(EOC),
+ /* K19 */ be_nested_str_weak(tasmota),
+ /* K20 */ be_nested_str_weak(log),
+ /* K21 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc),
+ /* K22 */ be_const_int(3),
+ /* K23 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20),
+ /* K24 */ be_nested_str_weak(next_idx),
}),
- be_str_weak(set_fulltag),
+ be_str_weak(parse),
&be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x60100009, // 0000 GETGBL R4 G9
- 0x5C140200, // 0001 MOVE R5 R1
- 0x7C100200, // 0002 CALL R4 1
- 0x90020004, // 0003 SETMBR R0 K0 R4
- 0x60100009, // 0004 GETGBL R4 G9
- 0x5C140400, // 0005 MOVE R5 R2
- 0x7C100200, // 0006 CALL R4 1
- 0x90020204, // 0007 SETMBR R0 K1 R4
- 0x60100009, // 0008 GETGBL R4 G9
- 0x5C140600, // 0009 MOVE R5 R3
- 0x7C100200, // 000A CALL R4 1
- 0x90020404, // 000B SETMBR R0 K2 R4
- 0x4C100000, // 000C LDNIL R4
- 0x90020604, // 000D SETMBR R0 K3 R4
- 0x80000000, // 000E RET 0
+ ( &(const binstruction[105]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x88100101, // 0001 GETMBR R4 R0 K1
+ 0x88140902, // 0002 GETMBR R5 R4 K2
+ 0x94140A03, // 0003 GETIDX R5 R5 R3
+ 0x541A0007, // 0004 LDINT R6 8
+ 0x1C180A06, // 0005 EQ R6 R5 R6
+ 0x781A000A, // 0006 JMPF R6 #0012
+ 0xB81A0800, // 0007 GETNGBL R6 K4
+ 0x7C180000, // 0008 CALL R6 0
+ 0x90020606, // 0009 SETMBR R0 K3 R6
+ 0x88180103, // 000A GETMBR R6 R0 K3
+ 0x8C180D05, // 000B GETMET R6 R6 K5
+ 0x5C200200, // 000C MOVE R8 R1
+ 0x5C240400, // 000D MOVE R9 R2
+ 0x7C180600, // 000E CALL R6 3
+ 0x541A0007, // 000F LDINT R6 8
+ 0x00080406, // 0010 ADD R2 R2 R6
+ 0x70020054, // 0011 JMP #0067
+ 0x88180906, // 0012 GETMBR R6 R4 K6
+ 0x1C180606, // 0013 EQ R6 R3 R6
+ 0x741A0002, // 0014 JMPT R6 #0018
+ 0x88180907, // 0015 GETMBR R6 R4 K7
+ 0x1C180606, // 0016 EQ R6 R3 R6
+ 0x781A0003, // 0017 JMPF R6 #001C
+ 0x88180907, // 0018 GETMBR R6 R4 K7
+ 0x1C180606, // 0019 EQ R6 R3 R6
+ 0x90020606, // 001A SETMBR R0 K3 R6
+ 0x7002004A, // 001B JMP #0067
+ 0x88180908, // 001C GETMBR R6 R4 K8
+ 0x14180606, // 001D LT R6 R3 R6
+ 0x781A000E, // 001E JMPF R6 #002E
+ 0x88180909, // 001F GETMBR R6 R4 K9
+ 0x18180606, // 0020 LE R6 R3 R6
+ 0x781A0004, // 0021 JMPF R6 #0027
+ 0x8C18030A, // 0022 GETMET R6 R1 K10
+ 0x5C200400, // 0023 MOVE R8 R2
+ 0x5C240A00, // 0024 MOVE R9 R5
+ 0x7C180600, // 0025 CALL R6 3
+ 0x70020003, // 0026 JMP #002B
+ 0x8C18030B, // 0027 GETMET R6 R1 K11
+ 0x5C200400, // 0028 MOVE R8 R2
+ 0x5C240A00, // 0029 MOVE R9 R5
+ 0x7C180600, // 002A CALL R6 3
+ 0x90020606, // 002B SETMBR R0 K3 R6
+ 0x00080405, // 002C ADD R2 R2 R5
+ 0x70020038, // 002D JMP #0067
+ 0x8818090C, // 002E GETMBR R6 R4 K12
+ 0x1C180606, // 002F EQ R6 R3 R6
+ 0x781A0006, // 0030 JMPF R6 #0038
+ 0x8C18030D, // 0031 GETMET R6 R1 K13
+ 0x5C200400, // 0032 MOVE R8 R2
+ 0x7C180400, // 0033 CALL R6 2
+ 0x90020606, // 0034 SETMBR R0 K3 R6
+ 0x541A0003, // 0035 LDINT R6 4
+ 0x00080406, // 0036 ADD R2 R2 R6
+ 0x7002002E, // 0037 JMP #0067
+ 0x5419FFF7, // 0038 LDINT R6 -8
+ 0x28180A06, // 0039 GE R6 R5 R6
+ 0x781A0016, // 003A JMPF R6 #0052
+ 0x5419FFFE, // 003B LDINT R6 -1
+ 0x18180A06, // 003C LE R6 R5 R6
+ 0x781A0013, // 003D JMPF R6 #0052
+ 0x8C18030B, // 003E GETMET R6 R1 K11
+ 0x5C200400, // 003F MOVE R8 R2
+ 0x44240A00, // 0040 NEG R9 R5
+ 0x7C180600, // 0041 CALL R6 3
+ 0x441C0A00, // 0042 NEG R7 R5
+ 0x00080407, // 0043 ADD R2 R2 R7
+ 0x001C0406, // 0044 ADD R7 R2 R6
+ 0x041C0F0E, // 0045 SUB R7 R7 K14
+ 0x401C0407, // 0046 CONNECT R7 R2 R7
+ 0x941C0207, // 0047 GETIDX R7 R1 R7
+ 0x90020607, // 0048 SETMBR R0 K3 R7
+ 0x00080406, // 0049 ADD R2 R2 R6
+ 0x881C090F, // 004A GETMBR R7 R4 K15
+ 0x181C0607, // 004B LE R7 R3 R7
+ 0x781E0003, // 004C JMPF R7 #0051
+ 0x881C0103, // 004D GETMBR R7 R0 K3
+ 0x8C1C0F10, // 004E GETMET R7 R7 K16
+ 0x7C1C0200, // 004F CALL R7 1
+ 0x90020607, // 0050 SETMBR R0 K3 R7
+ 0x70020014, // 0051 JMP #0067
+ 0x88180911, // 0052 GETMBR R6 R4 K17
+ 0x1C180606, // 0053 EQ R6 R3 R6
+ 0x781A0000, // 0054 JMPF R6 #0056
+ 0x70020010, // 0055 JMP #0067
+ 0x88180912, // 0056 GETMBR R6 R4 K18
+ 0x1C180606, // 0057 EQ R6 R3 R6
+ 0x781A0005, // 0058 JMPF R6 #005F
+ 0xB81A2600, // 0059 GETNGBL R6 K19
+ 0x8C180D14, // 005A GETMET R6 R6 K20
+ 0x58200015, // 005B LDCONST R8 K21
+ 0x58240016, // 005C LDCONST R9 K22
+ 0x7C180600, // 005D CALL R6 3
+ 0x70020007, // 005E JMP #0067
+ 0xB81A2600, // 005F GETNGBL R6 K19
+ 0x8C180D14, // 0060 GETMET R6 R6 K20
+ 0x60200008, // 0061 GETGBL R8 G8
+ 0x5C240600, // 0062 MOVE R9 R3
+ 0x7C200200, // 0063 CALL R8 1
+ 0x00222E08, // 0064 ADD R8 K23 R8
+ 0x58240016, // 0065 LDCONST R9 K22
+ 0x7C180600, // 0066 CALL R6 3
+ 0x90023002, // 0067 SETMBR R0 K24 R2
+ 0x80040400, // 0068 RET 1 R2
})
)
);
@@ -791,9 +884,9 @@ be_local_closure(Matter_TLV_item_set_fulltag, /* name */
/********************************************************************
-** Solidified function: tostring
+** Solidified function: _encode_tag_len
********************************************************************/
-be_local_closure(Matter_TLV_item_tostring, /* name */
+be_local_closure(Matter_TLV_item__encode_tag_len, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
@@ -803,209 +896,73 @@ be_local_closure(Matter_TLV_item_tostring, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[34]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(tag_profile),
- /* K2 */ be_nested_str_weak(Matter_X3A_X3A),
- /* K3 */ be_nested_str_weak(tag_number),
- /* K4 */ be_nested_str_weak(0x_X2508X_X20),
- /* K5 */ be_nested_str_weak(tag_vendor),
- /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A),
- /* K7 */ be_nested_str_weak(0x_X2504X_X3A),
- /* K8 */ be_nested_str_weak(tag_sub),
- /* K9 */ be_nested_str_weak(_X25i_X20),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(_X3D_X20),
- /* K12 */ be_nested_str_weak(val),
- /* K13 */ be_nested_str_weak(int),
- /* K14 */ be_nested_str_weak(_X25i),
- /* K15 */ be_nested_str_weak(typ),
- /* K16 */ be_nested_str_weak(TLV),
- /* K17 */ be_nested_str_weak(U1),
- /* K18 */ be_nested_str_weak(U8),
- /* K19 */ be_nested_str_weak(U),
- /* K20 */ be_nested_str_weak(bool),
- /* K21 */ be_nested_str_weak(true),
- /* K22 */ be_nested_str_weak(false),
- /* K23 */ be_nested_str_weak(null),
- /* K24 */ be_nested_str_weak(real),
- /* K25 */ be_nested_str_weak(_X25g),
- /* K26 */ be_nested_str_weak(string),
- /* K27 */ be_nested_str_weak(_X22_X25s_X22),
- /* K28 */ be_nested_str_weak(int64),
- /* K29 */ be_nested_str_weak(tostring),
- /* K30 */ be_nested_str_weak(instance),
- /* K31 */ be_nested_str_weak(_X25s),
- /* K32 */ be_nested_str_weak(tohex),
- /* K33 */ be_nested_str_weak(_X20),
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(tag_number),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(tag_vendor),
+ /* K3 */ be_nested_str_weak(tag_profile),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_nested_str_weak(tag_sub),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_const_int(1),
}),
- be_str_weak(tostring),
+ be_str_weak(_encode_tag_len),
&be_const_str_solidified,
- ( &(const binstruction[164]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0xA8020099, // 0001 EXBLK 0 #009C
- 0x88080101, // 0002 GETMBR R2 R0 K1
- 0x540DFFFE, // 0003 LDINT R3 -1
- 0x1C080403, // 0004 EQ R2 R2 R3
- 0x780A000A, // 0005 JMPF R2 #0011
- 0x00040302, // 0006 ADD R1 R1 K2
- 0x88080103, // 0007 GETMBR R2 R0 K3
- 0x4C0C0000, // 0008 LDNIL R3
- 0x20080403, // 0009 NE R2 R2 R3
- 0x780A0004, // 000A JMPF R2 #0010
- 0x60080018, // 000B GETGBL R2 G24
- 0x580C0004, // 000C LDCONST R3 K4
- 0x88100103, // 000D GETMBR R4 R0 K3
- 0x7C080400, // 000E CALL R2 2
- 0x00040202, // 000F ADD R1 R1 R2
- 0x70020023, // 0010 JMP #0035
- 0x88080105, // 0011 GETMBR R2 R0 K5
- 0x4C0C0000, // 0012 LDNIL R3
- 0x20080403, // 0013 NE R2 R2 R3
- 0x780A0004, // 0014 JMPF R2 #001A
- 0x60080018, // 0015 GETGBL R2 G24
- 0x580C0006, // 0016 LDCONST R3 K6
- 0x88100105, // 0017 GETMBR R4 R0 K5
- 0x7C080400, // 0018 CALL R2 2
- 0x00040202, // 0019 ADD R1 R1 R2
- 0x88080101, // 001A GETMBR R2 R0 K1
- 0x4C0C0000, // 001B LDNIL R3
- 0x20080403, // 001C NE R2 R2 R3
- 0x780A0004, // 001D JMPF R2 #0023
- 0x60080018, // 001E GETGBL R2 G24
- 0x580C0007, // 001F LDCONST R3 K7
- 0x88100101, // 0020 GETMBR R4 R0 K1
- 0x7C080400, // 0021 CALL R2 2
- 0x00040202, // 0022 ADD R1 R1 R2
- 0x88080103, // 0023 GETMBR R2 R0 K3
- 0x4C0C0000, // 0024 LDNIL R3
- 0x20080403, // 0025 NE R2 R2 R3
- 0x780A0004, // 0026 JMPF R2 #002C
- 0x60080018, // 0027 GETGBL R2 G24
- 0x580C0004, // 0028 LDCONST R3 K4
- 0x88100103, // 0029 GETMBR R4 R0 K3
- 0x7C080400, // 002A CALL R2 2
- 0x00040202, // 002B ADD R1 R1 R2
- 0x88080108, // 002C GETMBR R2 R0 K8
- 0x4C0C0000, // 002D LDNIL R3
- 0x20080403, // 002E NE R2 R2 R3
- 0x780A0004, // 002F JMPF R2 #0035
- 0x60080018, // 0030 GETGBL R2 G24
- 0x580C0009, // 0031 LDCONST R3 K9
- 0x88100108, // 0032 GETMBR R4 R0 K8
- 0x7C080400, // 0033 CALL R2 2
- 0x00040202, // 0034 ADD R1 R1 R2
- 0x6008000C, // 0035 GETGBL R2 G12
- 0x5C0C0200, // 0036 MOVE R3 R1
- 0x7C080200, // 0037 CALL R2 1
- 0x2408050A, // 0038 GT R2 R2 K10
- 0x780A0000, // 0039 JMPF R2 #003B
- 0x0004030B, // 003A ADD R1 R1 K11
- 0x60080004, // 003B GETGBL R2 G4
- 0x880C010C, // 003C GETMBR R3 R0 K12
- 0x7C080200, // 003D CALL R2 1
- 0x1C08050D, // 003E EQ R2 R2 K13
- 0x780A0010, // 003F JMPF R2 #0051
- 0x60080018, // 0040 GETGBL R2 G24
- 0x580C000E, // 0041 LDCONST R3 K14
- 0x8810010C, // 0042 GETMBR R4 R0 K12
- 0x7C080400, // 0043 CALL R2 2
- 0x00040202, // 0044 ADD R1 R1 R2
- 0x8808010F, // 0045 GETMBR R2 R0 K15
- 0x880C0110, // 0046 GETMBR R3 R0 K16
- 0x880C0711, // 0047 GETMBR R3 R3 K17
- 0x28080403, // 0048 GE R2 R2 R3
- 0x780A0005, // 0049 JMPF R2 #0050
- 0x8808010F, // 004A GETMBR R2 R0 K15
- 0x880C0110, // 004B GETMBR R3 R0 K16
- 0x880C0712, // 004C GETMBR R3 R3 K18
- 0x18080403, // 004D LE R2 R2 R3
- 0x780A0000, // 004E JMPF R2 #0050
- 0x00040313, // 004F ADD R1 R1 K19
- 0x70020048, // 0050 JMP #009A
- 0x60080004, // 0051 GETGBL R2 G4
- 0x880C010C, // 0052 GETMBR R3 R0 K12
- 0x7C080200, // 0053 CALL R2 1
- 0x1C080514, // 0054 EQ R2 R2 K20
- 0x780A0006, // 0055 JMPF R2 #005D
- 0x8808010C, // 0056 GETMBR R2 R0 K12
- 0x780A0001, // 0057 JMPF R2 #005A
- 0x58080015, // 0058 LDCONST R2 K21
- 0x70020000, // 0059 JMP #005B
- 0x58080016, // 005A LDCONST R2 K22
- 0x00040202, // 005B ADD R1 R1 R2
- 0x7002003C, // 005C JMP #009A
- 0x8808010C, // 005D GETMBR R2 R0 K12
- 0x4C0C0000, // 005E LDNIL R3
- 0x1C080403, // 005F EQ R2 R2 R3
- 0x780A0001, // 0060 JMPF R2 #0063
- 0x00040317, // 0061 ADD R1 R1 K23
- 0x70020036, // 0062 JMP #009A
- 0x60080004, // 0063 GETGBL R2 G4
- 0x880C010C, // 0064 GETMBR R3 R0 K12
- 0x7C080200, // 0065 CALL R2 1
- 0x1C080518, // 0066 EQ R2 R2 K24
- 0x780A0005, // 0067 JMPF R2 #006E
- 0x60080018, // 0068 GETGBL R2 G24
- 0x580C0019, // 0069 LDCONST R3 K25
- 0x8810010C, // 006A GETMBR R4 R0 K12
- 0x7C080400, // 006B CALL R2 2
- 0x00040202, // 006C ADD R1 R1 R2
- 0x7002002B, // 006D JMP #009A
- 0x60080004, // 006E GETGBL R2 G4
- 0x880C010C, // 006F GETMBR R3 R0 K12
- 0x7C080200, // 0070 CALL R2 1
- 0x1C08051A, // 0071 EQ R2 R2 K26
- 0x780A0005, // 0072 JMPF R2 #0079
- 0x60080018, // 0073 GETGBL R2 G24
- 0x580C001B, // 0074 LDCONST R3 K27
- 0x8810010C, // 0075 GETMBR R4 R0 K12
- 0x7C080400, // 0076 CALL R2 2
- 0x00040202, // 0077 ADD R1 R1 R2
- 0x70020020, // 0078 JMP #009A
- 0x6008000F, // 0079 GETGBL R2 G15
- 0x880C010C, // 007A GETMBR R3 R0 K12
- 0xB8123800, // 007B GETNGBL R4 K28
- 0x7C080400, // 007C CALL R2 2
- 0x780A000F, // 007D JMPF R2 #008E
- 0x8808010C, // 007E GETMBR R2 R0 K12
- 0x8C08051D, // 007F GETMET R2 R2 K29
- 0x7C080200, // 0080 CALL R2 1
- 0x00040202, // 0081 ADD R1 R1 R2
- 0x8808010F, // 0082 GETMBR R2 R0 K15
- 0x880C0110, // 0083 GETMBR R3 R0 K16
- 0x880C0711, // 0084 GETMBR R3 R3 K17
- 0x28080403, // 0085 GE R2 R2 R3
- 0x780A0005, // 0086 JMPF R2 #008D
- 0x8808010F, // 0087 GETMBR R2 R0 K15
- 0x880C0110, // 0088 GETMBR R3 R0 K16
- 0x880C0712, // 0089 GETMBR R3 R3 K18
- 0x18080403, // 008A LE R2 R2 R3
- 0x780A0000, // 008B JMPF R2 #008D
- 0x00040313, // 008C ADD R1 R1 K19
- 0x7002000B, // 008D JMP #009A
- 0x60080004, // 008E GETGBL R2 G4
- 0x880C010C, // 008F GETMBR R3 R0 K12
- 0x7C080200, // 0090 CALL R2 1
- 0x1C08051E, // 0091 EQ R2 R2 K30
- 0x780A0006, // 0092 JMPF R2 #009A
- 0x60080018, // 0093 GETGBL R2 G24
- 0x580C001F, // 0094 LDCONST R3 K31
- 0x8810010C, // 0095 GETMBR R4 R0 K12
- 0x8C100920, // 0096 GETMET R4 R4 K32
- 0x7C100200, // 0097 CALL R4 1
- 0x7C080400, // 0098 CALL R2 2
- 0x00040202, // 0099 ADD R1 R1 R2
- 0xA8040001, // 009A EXBLK 1 1
- 0x70020006, // 009B JMP #00A3
- 0xAC080002, // 009C CATCH R2 0 2
- 0x70020003, // 009D JMP #00A2
- 0x00100521, // 009E ADD R4 R2 K33
- 0x00100803, // 009F ADD R4 R4 R3
- 0x80040800, // 00A0 RET 1 R4
- 0x70020000, // 00A1 JMP #00A3
- 0xB0080000, // 00A2 RAISE 2 R0 R0
- 0x80040200, // 00A3 RET 1 R1
+ ( &(const binstruction[54]) { /* 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
+ 0x540AFFFF, // 0007 LDINT R2 65536
+ 0x28080202, // 0008 GE R2 R1 R2
+ 0x740A0002, // 0009 JMPT R2 #000D
+ 0x14080301, // 000A LT R2 R1 K1
+ 0x740A0000, // 000B JMPT R2 #000D
+ 0x50080001, // 000C LDBOOL R2 0 1
+ 0x50080200, // 000D LDBOOL R2 1 0
+ 0x580C0001, // 000E LDCONST R3 K1
+ 0x88100102, // 000F GETMBR R4 R0 K2
+ 0x4C140000, // 0010 LDNIL R5
+ 0x20100805, // 0011 NE R4 R4 R5
+ 0x78120006, // 0012 JMPF R4 #001A
+ 0x780A0002, // 0013 JMPF R2 #0017
+ 0x54120008, // 0014 LDINT R4 9
+ 0x80040800, // 0015 RET 1 R4
+ 0x70020001, // 0016 JMP #0019
+ 0x54120006, // 0017 LDINT R4 7
+ 0x80040800, // 0018 RET 1 R4
+ 0x7002001A, // 0019 JMP #0035
+ 0x88100103, // 001A GETMBR R4 R0 K3
+ 0x5415FFFE, // 001B LDINT R5 -1
+ 0x1C100805, // 001C EQ R4 R4 R5
+ 0x78120005, // 001D JMPF R4 #0024
+ 0x780A0002, // 001E JMPF R2 #0022
+ 0x54120004, // 001F LDINT R4 5
+ 0x80040800, // 0020 RET 1 R4
+ 0x70020000, // 0021 JMP #0023
+ 0x80060800, // 0022 RET 1 K4
+ 0x70020010, // 0023 JMP #0035
+ 0x88100103, // 0024 GETMBR R4 R0 K3
+ 0x4C140000, // 0025 LDNIL R5
+ 0x20100805, // 0026 NE R4 R4 R5
+ 0x78120005, // 0027 JMPF R4 #002E
+ 0x780A0002, // 0028 JMPF R2 #002C
+ 0x54120004, // 0029 LDINT R4 5
+ 0x80040800, // 002A RET 1 R4
+ 0x70020000, // 002B JMP #002D
+ 0x80060800, // 002C RET 1 K4
+ 0x70020006, // 002D JMP #0035
+ 0x88100105, // 002E GETMBR R4 R0 K5
+ 0x4C140000, // 002F LDNIL R5
+ 0x20100805, // 0030 NE R4 R4 R5
+ 0x78120001, // 0031 JMPF R4 #0034
+ 0x80060C00, // 0032 RET 1 K6
+ 0x70020000, // 0033 JMP #0035
+ 0x80060E00, // 0034 RET 1 K7
+ 0x80000000, // 0035 RET 0
})
)
);
@@ -1013,26 +970,38 @@ be_local_closure(Matter_TLV_item_tostring, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified function: set
********************************************************************/
-be_local_closure(Matter_TLV_item_init, /* name */
+be_local_closure(Matter_TLV_item_set, /* name */
be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
+ 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[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(parent),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(reset),
+ /* K1 */ be_nested_str_weak(typ),
+ /* K2 */ be_nested_str_weak(val),
}),
- be_str_weak(init),
+ be_str_weak(set),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
+ ( &(const binstruction[12]) { /* code */
+ 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x7C0C0200, // 0001 CALL R3 1
+ 0x4C0C0000, // 0002 LDNIL R3
+ 0x200C0403, // 0003 NE R3 R2 R3
+ 0x740E0002, // 0004 JMPT R3 #0008
+ 0x540E0013, // 0005 LDINT R3 20
+ 0x1C0C0203, // 0006 EQ R3 R1 R3
+ 0x780E0002, // 0007 JMPF R3 #000B
+ 0x90020201, // 0008 SETMBR R0 K1 R1
+ 0x90020402, // 0009 SETMBR R0 K2 R2
+ 0x80040000, // 000A RET 1 R0
+ 0x80000000, // 000B RET 0
})
)
);
@@ -1474,11 +1443,11 @@ be_local_closure(Matter_TLV_item_tlv2raw, /* name */
/********************************************************************
-** Solidified function: _encode_tag_len
+** Solidified function: set_anonymoustag
********************************************************************/
-be_local_closure(Matter_TLV_item__encode_tag_len, /* name */
+be_local_closure(Matter_TLV_item_set_anonymoustag, /* name */
be_nested_proto(
- 6, /* nstack */
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1486,536 +1455,14 @@ be_local_closure(Matter_TLV_item__encode_tag_len, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(tag_number),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(tag_vendor),
- /* K3 */ be_nested_str_weak(tag_profile),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(tag_sub),
- /* K6 */ be_const_int(2),
- /* K7 */ be_const_int(1),
- }),
- be_str_weak(_encode_tag_len),
- &be_const_str_solidified,
- ( &(const binstruction[54]) { /* 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
- 0x540AFFFF, // 0007 LDINT R2 65536
- 0x28080202, // 0008 GE R2 R1 R2
- 0x740A0002, // 0009 JMPT R2 #000D
- 0x14080301, // 000A LT R2 R1 K1
- 0x740A0000, // 000B JMPT R2 #000D
- 0x50080001, // 000C LDBOOL R2 0 1
- 0x50080200, // 000D LDBOOL R2 1 0
- 0x580C0001, // 000E LDCONST R3 K1
- 0x88100102, // 000F GETMBR R4 R0 K2
- 0x4C140000, // 0010 LDNIL R5
- 0x20100805, // 0011 NE R4 R4 R5
- 0x78120006, // 0012 JMPF R4 #001A
- 0x780A0002, // 0013 JMPF R2 #0017
- 0x54120008, // 0014 LDINT R4 9
- 0x80040800, // 0015 RET 1 R4
- 0x70020001, // 0016 JMP #0019
- 0x54120006, // 0017 LDINT R4 7
- 0x80040800, // 0018 RET 1 R4
- 0x7002001A, // 0019 JMP #0035
- 0x88100103, // 001A GETMBR R4 R0 K3
- 0x5415FFFE, // 001B LDINT R5 -1
- 0x1C100805, // 001C EQ R4 R4 R5
- 0x78120005, // 001D JMPF R4 #0024
- 0x780A0002, // 001E JMPF R2 #0022
- 0x54120004, // 001F LDINT R4 5
- 0x80040800, // 0020 RET 1 R4
- 0x70020000, // 0021 JMP #0023
- 0x80060800, // 0022 RET 1 K4
- 0x70020010, // 0023 JMP #0035
- 0x88100103, // 0024 GETMBR R4 R0 K3
- 0x4C140000, // 0025 LDNIL R5
- 0x20100805, // 0026 NE R4 R4 R5
- 0x78120005, // 0027 JMPF R4 #002E
- 0x780A0002, // 0028 JMPF R2 #002C
- 0x54120004, // 0029 LDINT R4 5
- 0x80040800, // 002A RET 1 R4
- 0x70020000, // 002B JMP #002D
- 0x80060800, // 002C RET 1 K4
- 0x70020006, // 002D JMP #0035
- 0x88100105, // 002E GETMBR R4 R0 K5
- 0x4C140000, // 002F LDNIL R5
- 0x20100805, // 0030 NE R4 R4 R5
- 0x78120001, // 0031 JMPF R4 #0034
- 0x80060C00, // 0032 RET 1 K6
- 0x70020000, // 0033 JMP #0035
- 0x80060E00, // 0034 RET 1 K7
- 0x80000000, // 0035 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: sort
-********************************************************************/
-be_local_closure(Matter_TLV_item_sort, /* 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[ 5]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_TLV_item),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(_cmp_gt),
- /* K4 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(sort),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* 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
- 0xA8020013, // 0008 EXBLK 0 #001D
- 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
- 0x781A000B, // 000E JMPF R6 #001B
- 0x04180B01, // 000F SUB R6 R5 K1
- 0x94180006, // 0010 GETIDX R6 R0 R6
- 0x8C180D03, // 0011 GETMET R6 R6 K3
- 0x5C200800, // 0012 MOVE R8 R4
- 0x7C180400, // 0013 CALL R6 2
- 0x24180D02, // 0014 GT R6 R6 K2
- 0x781A0004, // 0015 JMPF R6 #001B
- 0x04180B01, // 0016 SUB R6 R5 K1
- 0x94180006, // 0017 GETIDX R6 R0 R6
- 0x98000A06, // 0018 SETIDX R0 R5 R6
- 0x04140B01, // 0019 SUB R5 R5 K1
- 0x7001FFF1, // 001A JMP #000D
- 0x98000A04, // 001B SETIDX R0 R5 R4
- 0x7001FFEB, // 001C JMP #0009
- 0x58080004, // 001D LDCONST R2 K4
- 0xAC080200, // 001E CATCH R2 1 0
- 0xB0080000, // 001F RAISE 2 R0 R0
- 0x80040000, // 0020 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse
-********************************************************************/
-be_local_closure(Matter_TLV_item_parse, /* 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[25]) { /* constants */
- /* K0 */ be_nested_str_weak(typ),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(_len),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(int64),
- /* K5 */ be_nested_str_weak(frombytes),
- /* K6 */ be_nested_str_weak(BFALSE),
- /* K7 */ be_nested_str_weak(BTRUE),
- /* K8 */ be_nested_str_weak(U8),
- /* K9 */ be_nested_str_weak(I8),
- /* K10 */ be_nested_str_weak(geti),
- /* K11 */ be_nested_str_weak(get),
- /* K12 */ be_nested_str_weak(FLOAT),
- /* K13 */ be_nested_str_weak(getfloat),
- /* K14 */ be_const_int(1),
- /* K15 */ be_nested_str_weak(UTF8),
- /* K16 */ be_nested_str_weak(asstring),
- /* K17 */ be_nested_str_weak(NULL),
- /* K18 */ be_nested_str_weak(EOC),
- /* K19 */ be_nested_str_weak(tasmota),
- /* K20 */ be_nested_str_weak(log),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc),
- /* K22 */ be_const_int(3),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20),
- /* K24 */ be_nested_str_weak(next_idx),
- }),
- be_str_weak(parse),
- &be_const_str_solidified,
- ( &(const binstruction[105]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x88100101, // 0001 GETMBR R4 R0 K1
- 0x88140902, // 0002 GETMBR R5 R4 K2
- 0x94140A03, // 0003 GETIDX R5 R5 R3
- 0x541A0007, // 0004 LDINT R6 8
- 0x1C180A06, // 0005 EQ R6 R5 R6
- 0x781A000A, // 0006 JMPF R6 #0012
- 0xB81A0800, // 0007 GETNGBL R6 K4
- 0x7C180000, // 0008 CALL R6 0
- 0x90020606, // 0009 SETMBR R0 K3 R6
- 0x88180103, // 000A GETMBR R6 R0 K3
- 0x8C180D05, // 000B GETMET R6 R6 K5
- 0x5C200200, // 000C MOVE R8 R1
- 0x5C240400, // 000D MOVE R9 R2
- 0x7C180600, // 000E CALL R6 3
- 0x541A0007, // 000F LDINT R6 8
- 0x00080406, // 0010 ADD R2 R2 R6
- 0x70020054, // 0011 JMP #0067
- 0x88180906, // 0012 GETMBR R6 R4 K6
- 0x1C180606, // 0013 EQ R6 R3 R6
- 0x741A0002, // 0014 JMPT R6 #0018
- 0x88180907, // 0015 GETMBR R6 R4 K7
- 0x1C180606, // 0016 EQ R6 R3 R6
- 0x781A0003, // 0017 JMPF R6 #001C
- 0x88180907, // 0018 GETMBR R6 R4 K7
- 0x1C180606, // 0019 EQ R6 R3 R6
- 0x90020606, // 001A SETMBR R0 K3 R6
- 0x7002004A, // 001B JMP #0067
- 0x88180908, // 001C GETMBR R6 R4 K8
- 0x14180606, // 001D LT R6 R3 R6
- 0x781A000E, // 001E JMPF R6 #002E
- 0x88180909, // 001F GETMBR R6 R4 K9
- 0x18180606, // 0020 LE R6 R3 R6
- 0x781A0004, // 0021 JMPF R6 #0027
- 0x8C18030A, // 0022 GETMET R6 R1 K10
- 0x5C200400, // 0023 MOVE R8 R2
- 0x5C240A00, // 0024 MOVE R9 R5
- 0x7C180600, // 0025 CALL R6 3
- 0x70020003, // 0026 JMP #002B
- 0x8C18030B, // 0027 GETMET R6 R1 K11
- 0x5C200400, // 0028 MOVE R8 R2
- 0x5C240A00, // 0029 MOVE R9 R5
- 0x7C180600, // 002A CALL R6 3
- 0x90020606, // 002B SETMBR R0 K3 R6
- 0x00080405, // 002C ADD R2 R2 R5
- 0x70020038, // 002D JMP #0067
- 0x8818090C, // 002E GETMBR R6 R4 K12
- 0x1C180606, // 002F EQ R6 R3 R6
- 0x781A0006, // 0030 JMPF R6 #0038
- 0x8C18030D, // 0031 GETMET R6 R1 K13
- 0x5C200400, // 0032 MOVE R8 R2
- 0x7C180400, // 0033 CALL R6 2
- 0x90020606, // 0034 SETMBR R0 K3 R6
- 0x541A0003, // 0035 LDINT R6 4
- 0x00080406, // 0036 ADD R2 R2 R6
- 0x7002002E, // 0037 JMP #0067
- 0x5419FFF7, // 0038 LDINT R6 -8
- 0x28180A06, // 0039 GE R6 R5 R6
- 0x781A0016, // 003A JMPF R6 #0052
- 0x5419FFFE, // 003B LDINT R6 -1
- 0x18180A06, // 003C LE R6 R5 R6
- 0x781A0013, // 003D JMPF R6 #0052
- 0x8C18030B, // 003E GETMET R6 R1 K11
- 0x5C200400, // 003F MOVE R8 R2
- 0x44240A00, // 0040 NEG R9 R5
- 0x7C180600, // 0041 CALL R6 3
- 0x441C0A00, // 0042 NEG R7 R5
- 0x00080407, // 0043 ADD R2 R2 R7
- 0x001C0406, // 0044 ADD R7 R2 R6
- 0x041C0F0E, // 0045 SUB R7 R7 K14
- 0x401C0407, // 0046 CONNECT R7 R2 R7
- 0x941C0207, // 0047 GETIDX R7 R1 R7
- 0x90020607, // 0048 SETMBR R0 K3 R7
- 0x00080406, // 0049 ADD R2 R2 R6
- 0x881C090F, // 004A GETMBR R7 R4 K15
- 0x181C0607, // 004B LE R7 R3 R7
- 0x781E0003, // 004C JMPF R7 #0051
- 0x881C0103, // 004D GETMBR R7 R0 K3
- 0x8C1C0F10, // 004E GETMET R7 R7 K16
- 0x7C1C0200, // 004F CALL R7 1
- 0x90020607, // 0050 SETMBR R0 K3 R7
- 0x70020014, // 0051 JMP #0067
- 0x88180911, // 0052 GETMBR R6 R4 K17
- 0x1C180606, // 0053 EQ R6 R3 R6
- 0x781A0000, // 0054 JMPF R6 #0056
- 0x70020010, // 0055 JMP #0067
- 0x88180912, // 0056 GETMBR R6 R4 K18
- 0x1C180606, // 0057 EQ R6 R3 R6
- 0x781A0005, // 0058 JMPF R6 #005F
- 0xB81A2600, // 0059 GETNGBL R6 K19
- 0x8C180D14, // 005A GETMET R6 R6 K20
- 0x58200015, // 005B LDCONST R8 K21
- 0x58240016, // 005C LDCONST R9 K22
- 0x7C180600, // 005D CALL R6 3
- 0x70020007, // 005E JMP #0067
- 0xB81A2600, // 005F GETNGBL R6 K19
- 0x8C180D14, // 0060 GETMET R6 R6 K20
- 0x60200008, // 0061 GETGBL R8 G8
- 0x5C240600, // 0062 MOVE R9 R3
- 0x7C200200, // 0063 CALL R8 1
- 0x00222E08, // 0064 ADD R8 K23 R8
- 0x58240016, // 0065 LDCONST R9 K22
- 0x7C180600, // 0066 CALL R6 3
- 0x90023002, // 0067 SETMBR R0 K24 R2
- 0x80040400, // 0068 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: to_TLV
-********************************************************************/
-be_local_closure(Matter_TLV_item_to_TLV, /* 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(to_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80040000, // 0000 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_TLV_item
-********************************************************************/
-be_local_class(Matter_TLV_item,
- 8,
- NULL,
- be_nested_map(25,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(set_parent, -1), be_const_closure(Matter_TLV_item_set_parent_closure) },
- { be_const_key_weak(create_TLV, -1), be_const_static_closure(Matter_TLV_item_create_TLV_closure) },
- { be_const_key_weak(next_idx, -1), be_const_var(1) },
- { be_const_key_weak(TLV, -1), be_const_class(be_class_Matter_TLV) },
- { be_const_key_weak(tag_vendor, 22), be_const_var(2) },
- { be_const_key_weak(set_anonymoustag, 17), be_const_closure(Matter_TLV_item_set_anonymoustag_closure) },
- { be_const_key_weak(val, -1), be_const_var(7) },
- { be_const_key_weak(to_TLV, -1), be_const_closure(Matter_TLV_item_to_TLV_closure) },
- { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_item_parse_closure) },
- { be_const_key_weak(_cmp_gt, 7), be_const_closure(Matter_TLV_item__cmp_gt_closure) },
- { be_const_key_weak(tag_profile, -1), be_const_var(3) },
- { be_const_key_weak(encode_len, 10), be_const_closure(Matter_TLV_item_encode_len_closure) },
- { be_const_key_weak(set_contextspecific, 8), be_const_closure(Matter_TLV_item_set_contextspecific_closure) },
- { be_const_key_weak(set_fulltag, -1), be_const_closure(Matter_TLV_item_set_fulltag_closure) },
- { be_const_key_weak(parent, -1), be_const_var(0) },
- { be_const_key_weak(_encode_tag_len, 19), be_const_closure(Matter_TLV_item__encode_tag_len_closure) },
- { be_const_key_weak(tag_sub, -1), be_const_var(5) },
- { be_const_key_weak(init, 23), be_const_closure(Matter_TLV_item_init_closure) },
- { be_const_key_weak(tlv2raw, -1), be_const_closure(Matter_TLV_item_tlv2raw_closure) },
- { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_item_tostring_closure) },
- { be_const_key_weak(set_commonprofile, 15), be_const_closure(Matter_TLV_item_set_commonprofile_closure) },
- { be_const_key_weak(sort, -1), be_const_static_closure(Matter_TLV_item_sort_closure) },
- { be_const_key_weak(_encode_tag, -1), be_const_closure(Matter_TLV_item__encode_tag_closure) },
- { be_const_key_weak(tag_number, 16), be_const_var(4) },
- { be_const_key_weak(typ, 3), be_const_var(6) },
- })),
- be_str_weak(Matter_TLV_item)
-);
-/*******************************************************************/
-
-void be_load_Matter_TLV_item_class(bvm *vm) {
- be_pushntvclass(vm, &be_class_Matter_TLV_item);
- be_setglobal(vm, "Matter_TLV_item");
- be_pop(vm, 1);
-}
-
-extern const bclass be_class_Matter_TLV_list;
-
-/********************************************************************
-** Solidified function: add_obj
-********************************************************************/
-be_local_closure(Matter_TLV_list_add_obj, /* name */
- be_nested_proto(
- 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[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(to_TLV),
- /* K3 */ be_nested_str_weak(tag_sub),
- }),
- be_str_weak(add_obj),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x4C0C0000, // 0000 LDNIL R3
- 0x200C0403, // 0001 NE R3 R2 R3
- 0x780E0010, // 0002 JMPF R3 #0014
- 0x600C000F, // 0003 GETGBL R3 G15
- 0x5C100400, // 0004 MOVE R4 R2
- 0x60140015, // 0005 GETGBL R5 G21
- 0x7C0C0400, // 0006 CALL R3 2
- 0x780E0004, // 0007 JMPF R3 #000D
- 0x880C0100, // 0008 GETMBR R3 R0 K0
- 0x8C0C0701, // 0009 GETMET R3 R3 K1
- 0x5C140400, // 000A MOVE R5 R2
- 0x7C0C0400, // 000B CALL R3 2
- 0x70020006, // 000C JMP #0014
- 0x8C0C0502, // 000D GETMET R3 R2 K2
- 0x7C0C0200, // 000E CALL R3 1
- 0x900E0601, // 000F SETMBR R3 K3 R1
- 0x88100100, // 0010 GETMBR R4 R0 K0
- 0x8C100901, // 0011 GETMET R4 R4 K1
- 0x5C180600, // 0012 MOVE R6 R3
- 0x7C100400, // 0013 CALL R4 2
- 0x80040000, // 0014 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_struct
-********************************************************************/
-be_local_closure(Matter_TLV_list_add_struct, /* 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[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(Matter_TLV_struct),
- /* K2 */ be_nested_str_weak(tag_sub),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(push),
- }),
- be_str_weak(add_struct),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100000, // 0002 MOVE R4 R0
- 0x7C080400, // 0003 CALL R2 2
- 0x900A0401, // 0004 SETMBR R2 K2 R1
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
- 0x5C140400, // 0007 MOVE R5 R2
- 0x7C0C0400, // 0008 CALL R3 2
- 0x80040400, // 0009 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: push
-********************************************************************/
-be_local_closure(Matter_TLV_list_push, /* 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(val),
- /* K1 */ be_nested_str_weak(push),
- }),
- be_str_weak(push),
- &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: getsubval
-********************************************************************/
-be_local_closure(Matter_TLV_list_getsubval, /* 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(getsub),
- /* K1 */ be_nested_str_weak(val),
- }),
- be_str_weak(getsubval),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5C100200, // 0001 MOVE R4 R1
- 0x7C080400, // 0002 CALL R2 2
- 0x88080501, // 0003 GETMBR R2 R2 K1
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: setitem
-********************************************************************/
-be_local_closure(Matter_TLV_list_setitem, /* name */
- be_nested_proto(
- 4, /* 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(val),
+ /* K0 */ be_nested_str_weak(set_fulltag),
}),
- be_str_weak(setitem),
+ be_str_weak(set_anonymoustag),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x980C0202, // 0001 SETIDX R3 R1 R2
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
)
@@ -2024,11 +1471,11 @@ be_local_closure(Matter_TLV_list_setitem, /* name */
/********************************************************************
-** Solidified function: item
+** Solidified function: _cmp_gt
********************************************************************/
-be_local_closure(Matter_TLV_list_item, /* name */
+be_local_closure(Matter_TLV_item__cmp_gt, /* name */
be_nested_proto(
- 3, /* nstack */
+ 4, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -2036,15 +1483,89 @@ be_local_closure(Matter_TLV_list_item, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(tag_vendor),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_nested_str_weak(tag_profile),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(tag_number),
+ /* K5 */ be_nested_str_weak(tag_sub),
}),
- be_str_weak(item),
+ be_str_weak(_cmp_gt),
&be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
+ ( &(const binstruction[72]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x94080401, // 0001 GETIDX R2 R2 R1
- 0x80040400, // 0002 RET 1 R2
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x20080403, // 0002 NE R2 R2 R3
+ 0x780A0012, // 0003 JMPF R2 #0017
+ 0x88080300, // 0004 GETMBR R2 R1 K0
+ 0x4C0C0000, // 0005 LDNIL R3
+ 0x1C080403, // 0006 EQ R2 R2 R3
+ 0x780A0000, // 0007 JMPF R2 #0009
+ 0x80060200, // 0008 RET 1 K1
+ 0x88080100, // 0009 GETMBR R2 R0 K0
+ 0x880C0300, // 000A GETMBR R3 R1 K0
+ 0x24080403, // 000B GT R2 R2 R3
+ 0x780A0000, // 000C JMPF R2 #000E
+ 0x80060200, // 000D RET 1 K1
+ 0x88080100, // 000E GETMBR R2 R0 K0
+ 0x880C0300, // 000F GETMBR R3 R1 K0
+ 0x1C080403, // 0010 EQ R2 R2 R3
+ 0x780A0004, // 0011 JMPF R2 #0017
+ 0x88080102, // 0012 GETMBR R2 R0 K2
+ 0x880C0302, // 0013 GETMBR R3 R1 K2
+ 0x24080403, // 0014 GT R2 R2 R3
+ 0x780A0000, // 0015 JMPF R2 #0017
+ 0x80060200, // 0016 RET 1 K1
+ 0x88080102, // 0017 GETMBR R2 R0 K2
+ 0x540DFFFE, // 0018 LDINT R3 -1
+ 0x1C080403, // 0019 EQ R2 R2 R3
+ 0x780A0005, // 001A JMPF R2 #0021
+ 0x88080302, // 001B GETMBR R2 R1 K2
+ 0x4C0C0000, // 001C LDNIL R3
+ 0x1C080403, // 001D EQ R2 R2 R3
+ 0x780A0000, // 001E JMPF R2 #0020
+ 0x80060200, // 001F RET 1 K1
+ 0x70020008, // 0020 JMP #002A
+ 0x88080102, // 0021 GETMBR R2 R0 K2
+ 0x4C0C0000, // 0022 LDNIL R3
+ 0x1C080403, // 0023 EQ R2 R2 R3
+ 0x780A0004, // 0024 JMPF R2 #002A
+ 0x88080302, // 0025 GETMBR R2 R1 K2
+ 0x540DFFFE, // 0026 LDINT R3 -1
+ 0x1C080403, // 0027 EQ R2 R2 R3
+ 0x780A0000, // 0028 JMPF R2 #002A
+ 0x80060600, // 0029 RET 1 K3
+ 0x88080104, // 002A GETMBR R2 R0 K4
+ 0x4C0C0000, // 002B LDNIL R3
+ 0x20080403, // 002C NE R2 R2 R3
+ 0x780A000A, // 002D JMPF R2 #0039
+ 0x88080304, // 002E GETMBR R2 R1 K4
+ 0x4C0C0000, // 002F LDNIL R3
+ 0x1C080403, // 0030 EQ R2 R2 R3
+ 0x780A0000, // 0031 JMPF R2 #0033
+ 0x80060200, // 0032 RET 1 K1
+ 0x88080104, // 0033 GETMBR R2 R0 K4
+ 0x880C0304, // 0034 GETMBR R3 R1 K4
+ 0x24080403, // 0035 GT R2 R2 R3
+ 0x780A0000, // 0036 JMPF R2 #0038
+ 0x80060200, // 0037 RET 1 K1
+ 0x80060600, // 0038 RET 1 K3
+ 0x88080105, // 0039 GETMBR R2 R0 K5
+ 0x4C0C0000, // 003A LDNIL R3
+ 0x20080403, // 003B NE R2 R2 R3
+ 0x780A0009, // 003C JMPF R2 #0047
+ 0x88080305, // 003D GETMBR R2 R1 K5
+ 0x4C0C0000, // 003E LDNIL R3
+ 0x1C080403, // 003F EQ R2 R2 R3
+ 0x780A0000, // 0040 JMPF R2 #0042
+ 0x80060200, // 0041 RET 1 K1
+ 0x88080105, // 0042 GETMBR R2 R0 K5
+ 0x880C0305, // 0043 GETMBR R3 R1 K5
+ 0x24080403, // 0044 GT R2 R2 R3
+ 0x780A0000, // 0045 JMPF R2 #0047
+ 0x80060200, // 0046 RET 1 K1
+ 0x80060600, // 0047 RET 1 K3
})
)
);
@@ -2052,123 +1573,185 @@ be_local_closure(Matter_TLV_list_item, /* name */
/********************************************************************
-** Solidified function: size
+** Solidified function: _encode_tag
********************************************************************/
-be_local_closure(Matter_TLV_list_size, /* 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(val),
- }),
- be_str_weak(size),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x6004000C, // 0000 GETGBL R1 G12
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: findsubtyp
-********************************************************************/
-be_local_closure(Matter_TLV_list_findsubtyp, /* 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(findsub),
- /* K1 */ be_nested_str_weak(typ),
- }),
- be_str_weak(findsubtyp),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5C100200, // 0001 MOVE R4 R1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E0001, // 0005 JMPF R3 #0008
- 0x880C0501, // 0006 GETMBR R3 R2 K1
- 0x80040600, // 0007 RET 1 R3
- 0x4C0C0000, // 0008 LDNIL R3
- 0x80040600, // 0009 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_list
-********************************************************************/
-be_local_closure(Matter_TLV_list_add_list, /* 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[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(Matter_TLV_list),
- /* K2 */ be_nested_str_weak(tag_sub),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(push),
- }),
- be_str_weak(add_list),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100000, // 0002 MOVE R4 R0
- 0x7C080400, // 0003 CALL R2 2
- 0x900A0401, // 0004 SETMBR R2 K2 R1
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
- 0x5C140400, // 0007 MOVE R5 R2
- 0x7C0C0400, // 0008 CALL R3 2
- 0x80040400, // 0009 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: tostring_inner
-********************************************************************/
-be_local_closure(Matter_TLV_list_tostring_inner, /* name */
+be_local_closure(Matter_TLV_item__encode_tag, /* name */
be_nested_proto(
9, /* nstack */
- 4, /* argc */
+ 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 */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(tag_number),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(tag_vendor),
+ /* K3 */ be_nested_str_weak(add),
+ /* K4 */ be_nested_str_weak(typ),
+ /* K5 */ be_const_int(1),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_nested_str_weak(tag_profile),
+ /* K8 */ be_nested_str_weak(tag_sub),
+ }),
+ be_str_weak(_encode_tag),
+ &be_const_str_solidified,
+ ( &(const binstruction[133]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x20080403, // 0002 NE R2 R2 R3
+ 0x780A0001, // 0003 JMPF R2 #0006
+ 0x88080100, // 0004 GETMBR R2 R0 K0
+ 0x70020000, // 0005 JMP #0007
+ 0x58080001, // 0006 LDCONST R2 K1
+ 0x540EFFFF, // 0007 LDINT R3 65536
+ 0x280C0403, // 0008 GE R3 R2 R3
+ 0x740E0002, // 0009 JMPT R3 #000D
+ 0x140C0501, // 000A LT R3 R2 K1
+ 0x740E0000, // 000B JMPT R3 #000D
+ 0x500C0001, // 000C LDBOOL R3 0 1
+ 0x500C0200, // 000D LDBOOL R3 1 0
+ 0x58100001, // 000E LDCONST R4 K1
+ 0x88140102, // 000F GETMBR R5 R0 K2
+ 0x4C180000, // 0010 LDNIL R6
+ 0x20140A06, // 0011 NE R5 R5 R6
+ 0x78160026, // 0012 JMPF R5 #003A
+ 0x780E0012, // 0013 JMPF R3 #0027
+ 0x8C140303, // 0014 GETMET R5 R1 K3
+ 0x541E00DF, // 0015 LDINT R7 224
+ 0x88200104, // 0016 GETMBR R8 R0 K4
+ 0x001C0E08, // 0017 ADD R7 R7 R8
+ 0x58200005, // 0018 LDCONST R8 K5
+ 0x7C140600, // 0019 CALL R5 3
+ 0x8C140303, // 001A GETMET R5 R1 K3
+ 0x881C0102, // 001B GETMBR R7 R0 K2
+ 0x58200006, // 001C LDCONST R8 K6
+ 0x7C140600, // 001D CALL R5 3
+ 0x8C140303, // 001E GETMET R5 R1 K3
+ 0x881C0107, // 001F GETMBR R7 R0 K7
+ 0x58200006, // 0020 LDCONST R8 K6
+ 0x7C140600, // 0021 CALL R5 3
+ 0x8C140303, // 0022 GETMET R5 R1 K3
+ 0x881C0100, // 0023 GETMBR R7 R0 K0
+ 0x54220003, // 0024 LDINT R8 4
+ 0x7C140600, // 0025 CALL R5 3
+ 0x70020011, // 0026 JMP #0039
+ 0x8C140303, // 0027 GETMET R5 R1 K3
+ 0x541E00BF, // 0028 LDINT R7 192
+ 0x88200104, // 0029 GETMBR R8 R0 K4
+ 0x001C0E08, // 002A ADD R7 R7 R8
+ 0x58200005, // 002B LDCONST R8 K5
+ 0x7C140600, // 002C CALL R5 3
+ 0x8C140303, // 002D GETMET R5 R1 K3
+ 0x881C0102, // 002E GETMBR R7 R0 K2
+ 0x58200006, // 002F LDCONST R8 K6
+ 0x7C140600, // 0030 CALL R5 3
+ 0x8C140303, // 0031 GETMET R5 R1 K3
+ 0x881C0107, // 0032 GETMBR R7 R0 K7
+ 0x58200006, // 0033 LDCONST R8 K6
+ 0x7C140600, // 0034 CALL R5 3
+ 0x8C140303, // 0035 GETMET R5 R1 K3
+ 0x881C0100, // 0036 GETMBR R7 R0 K0
+ 0x58200006, // 0037 LDCONST R8 K6
+ 0x7C140600, // 0038 CALL R5 3
+ 0x70020049, // 0039 JMP #0084
+ 0x88140107, // 003A GETMBR R5 R0 K7
+ 0x5419FFFE, // 003B LDINT R6 -1
+ 0x1C140A06, // 003C EQ R5 R5 R6
+ 0x78160016, // 003D JMPF R5 #0055
+ 0x780E000A, // 003E JMPF R3 #004A
+ 0x8C140303, // 003F GETMET R5 R1 K3
+ 0x541E005F, // 0040 LDINT R7 96
+ 0x88200104, // 0041 GETMBR R8 R0 K4
+ 0x001C0E08, // 0042 ADD R7 R7 R8
+ 0x58200005, // 0043 LDCONST R8 K5
+ 0x7C140600, // 0044 CALL R5 3
+ 0x8C140303, // 0045 GETMET R5 R1 K3
+ 0x881C0100, // 0046 GETMBR R7 R0 K0
+ 0x54220003, // 0047 LDINT R8 4
+ 0x7C140600, // 0048 CALL R5 3
+ 0x70020009, // 0049 JMP #0054
+ 0x8C140303, // 004A GETMET R5 R1 K3
+ 0x541E003F, // 004B LDINT R7 64
+ 0x88200104, // 004C GETMBR R8 R0 K4
+ 0x001C0E08, // 004D ADD R7 R7 R8
+ 0x58200005, // 004E LDCONST R8 K5
+ 0x7C140600, // 004F CALL R5 3
+ 0x8C140303, // 0050 GETMET R5 R1 K3
+ 0x881C0100, // 0051 GETMBR R7 R0 K0
+ 0x58200006, // 0052 LDCONST R8 K6
+ 0x7C140600, // 0053 CALL R5 3
+ 0x7002002E, // 0054 JMP #0084
+ 0x88140107, // 0055 GETMBR R5 R0 K7
+ 0x4C180000, // 0056 LDNIL R6
+ 0x20140A06, // 0057 NE R5 R5 R6
+ 0x78160016, // 0058 JMPF R5 #0070
+ 0x780E000A, // 0059 JMPF R3 #0065
+ 0x8C140303, // 005A GETMET R5 R1 K3
+ 0x541E009F, // 005B LDINT R7 160
+ 0x88200104, // 005C GETMBR R8 R0 K4
+ 0x001C0E08, // 005D ADD R7 R7 R8
+ 0x58200005, // 005E LDCONST R8 K5
+ 0x7C140600, // 005F CALL R5 3
+ 0x8C140303, // 0060 GETMET R5 R1 K3
+ 0x881C0100, // 0061 GETMBR R7 R0 K0
+ 0x54220003, // 0062 LDINT R8 4
+ 0x7C140600, // 0063 CALL R5 3
+ 0x70020009, // 0064 JMP #006F
+ 0x8C140303, // 0065 GETMET R5 R1 K3
+ 0x541E007F, // 0066 LDINT R7 128
+ 0x88200104, // 0067 GETMBR R8 R0 K4
+ 0x001C0E08, // 0068 ADD R7 R7 R8
+ 0x58200005, // 0069 LDCONST R8 K5
+ 0x7C140600, // 006A CALL R5 3
+ 0x8C140303, // 006B GETMET R5 R1 K3
+ 0x881C0100, // 006C GETMBR R7 R0 K0
+ 0x58200006, // 006D LDCONST R8 K6
+ 0x7C140600, // 006E CALL R5 3
+ 0x70020013, // 006F JMP #0084
+ 0x88140108, // 0070 GETMBR R5 R0 K8
+ 0x4C180000, // 0071 LDNIL R6
+ 0x20140A06, // 0072 NE R5 R5 R6
+ 0x7816000A, // 0073 JMPF R5 #007F
+ 0x8C140303, // 0074 GETMET R5 R1 K3
+ 0x541E001F, // 0075 LDINT R7 32
+ 0x88200104, // 0076 GETMBR R8 R0 K4
+ 0x001C0E08, // 0077 ADD R7 R7 R8
+ 0x58200005, // 0078 LDCONST R8 K5
+ 0x7C140600, // 0079 CALL R5 3
+ 0x8C140303, // 007A GETMET R5 R1 K3
+ 0x881C0108, // 007B GETMBR R7 R0 K8
+ 0x58200005, // 007C LDCONST R8 K5
+ 0x7C140600, // 007D CALL R5 3
+ 0x70020004, // 007E JMP #0084
+ 0x8C140303, // 007F GETMET R5 R1 K3
+ 0x881C0104, // 0080 GETMBR R7 R0 K4
+ 0x001E0207, // 0081 ADD R7 K1 R7
+ 0x58200005, // 0082 LDCONST R8 K5
+ 0x7C140600, // 0083 CALL R5 3
+ 0x80000000, // 0084 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: tostring
+********************************************************************/
+be_local_closure(Matter_TLV_item_tostring, /* 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[34]) { /* constants */
/* K0 */ be_nested_str_weak(),
/* K1 */ be_nested_str_weak(tag_profile),
/* K2 */ be_nested_str_weak(Matter_X3A_X3A),
@@ -2182,97 +1765,198 @@ be_local_closure(Matter_TLV_list_tostring_inner, /* name */
/* K10 */ be_const_int(0),
/* K11 */ be_nested_str_weak(_X3D_X20),
/* K12 */ be_nested_str_weak(val),
- /* K13 */ be_nested_str_weak(copy),
- /* K14 */ be_nested_str_weak(sort),
- /* K15 */ be_nested_str_weak(concat),
- /* K16 */ be_nested_str_weak(_X2C_X20),
- /* K17 */ be_nested_str_weak(_X20),
+ /* K13 */ be_nested_str_weak(int),
+ /* K14 */ be_nested_str_weak(_X25i),
+ /* K15 */ be_nested_str_weak(typ),
+ /* K16 */ be_nested_str_weak(TLV),
+ /* K17 */ be_nested_str_weak(U1),
+ /* K18 */ be_nested_str_weak(U8),
+ /* K19 */ be_nested_str_weak(U),
+ /* K20 */ be_nested_str_weak(bool),
+ /* K21 */ be_nested_str_weak(true),
+ /* K22 */ be_nested_str_weak(false),
+ /* K23 */ be_nested_str_weak(null),
+ /* K24 */ be_nested_str_weak(real),
+ /* K25 */ be_nested_str_weak(_X25g),
+ /* K26 */ be_nested_str_weak(string),
+ /* K27 */ be_nested_str_weak(_X22_X25s_X22),
+ /* K28 */ be_nested_str_weak(int64),
+ /* K29 */ be_nested_str_weak(tostring),
+ /* K30 */ be_nested_str_weak(instance),
+ /* K31 */ be_nested_str_weak(_X25s),
+ /* K32 */ be_nested_str_weak(tohex),
+ /* K33 */ be_nested_str_weak(_X20),
}),
- be_str_weak(tostring_inner),
+ be_str_weak(tostring),
&be_const_str_solidified,
- ( &(const binstruction[82]) { /* code */
- 0x58100000, // 0000 LDCONST R4 K0
- 0xA8020047, // 0001 EXBLK 0 #004A
- 0x88140101, // 0002 GETMBR R5 R0 K1
- 0x5419FFFE, // 0003 LDINT R6 -1
- 0x1C140A06, // 0004 EQ R5 R5 R6
- 0x7816000A, // 0005 JMPF R5 #0011
- 0x00100902, // 0006 ADD R4 R4 K2
- 0x88140103, // 0007 GETMBR R5 R0 K3
- 0x4C180000, // 0008 LDNIL R6
- 0x20140A06, // 0009 NE R5 R5 R6
- 0x78160004, // 000A JMPF R5 #0010
- 0x60140018, // 000B GETGBL R5 G24
- 0x58180004, // 000C LDCONST R6 K4
- 0x881C0103, // 000D GETMBR R7 R0 K3
- 0x7C140400, // 000E CALL R5 2
- 0x00100805, // 000F ADD R4 R4 R5
- 0x70020023, // 0010 JMP #0035
- 0x88140105, // 0011 GETMBR R5 R0 K5
- 0x4C180000, // 0012 LDNIL R6
- 0x20140A06, // 0013 NE R5 R5 R6
- 0x78160004, // 0014 JMPF R5 #001A
- 0x60140018, // 0015 GETGBL R5 G24
- 0x58180006, // 0016 LDCONST R6 K6
- 0x881C0105, // 0017 GETMBR R7 R0 K5
- 0x7C140400, // 0018 CALL R5 2
- 0x00100805, // 0019 ADD R4 R4 R5
- 0x88140101, // 001A GETMBR R5 R0 K1
- 0x4C180000, // 001B LDNIL R6
- 0x20140A06, // 001C NE R5 R5 R6
- 0x78160004, // 001D JMPF R5 #0023
- 0x60140018, // 001E GETGBL R5 G24
- 0x58180007, // 001F LDCONST R6 K7
- 0x881C0101, // 0020 GETMBR R7 R0 K1
- 0x7C140400, // 0021 CALL R5 2
- 0x00100805, // 0022 ADD R4 R4 R5
- 0x88140103, // 0023 GETMBR R5 R0 K3
- 0x4C180000, // 0024 LDNIL R6
- 0x20140A06, // 0025 NE R5 R5 R6
- 0x78160004, // 0026 JMPF R5 #002C
- 0x60140018, // 0027 GETGBL R5 G24
- 0x58180004, // 0028 LDCONST R6 K4
- 0x881C0103, // 0029 GETMBR R7 R0 K3
- 0x7C140400, // 002A CALL R5 2
- 0x00100805, // 002B ADD R4 R4 R5
- 0x88140108, // 002C GETMBR R5 R0 K8
- 0x4C180000, // 002D LDNIL R6
- 0x20140A06, // 002E NE R5 R5 R6
- 0x78160004, // 002F JMPF R5 #0035
- 0x60140018, // 0030 GETGBL R5 G24
- 0x58180009, // 0031 LDCONST R6 K9
- 0x881C0108, // 0032 GETMBR R7 R0 K8
- 0x7C140400, // 0033 CALL R5 2
- 0x00100805, // 0034 ADD R4 R4 R5
- 0x6014000C, // 0035 GETGBL R5 G12
- 0x5C180800, // 0036 MOVE R6 R4
- 0x7C140200, // 0037 CALL R5 1
- 0x24140B0A, // 0038 GT R5 R5 K10
- 0x78160000, // 0039 JMPF R5 #003B
- 0x0010090B, // 003A ADD R4 R4 K11
- 0x00100802, // 003B ADD R4 R4 R2
- 0x8814010C, // 003C GETMBR R5 R0 K12
- 0x8C140B0D, // 003D GETMET R5 R5 K13
- 0x7C140200, // 003E CALL R5 1
- 0x78060002, // 003F JMPF R1 #0043
- 0x8C18010E, // 0040 GETMET R6 R0 K14
- 0x5C200A00, // 0041 MOVE R8 R5
- 0x7C180400, // 0042 CALL R6 2
- 0x8C180B0F, // 0043 GETMET R6 R5 K15
- 0x58200010, // 0044 LDCONST R8 K16
- 0x7C180400, // 0045 CALL R6 2
- 0x00100806, // 0046 ADD R4 R4 R6
- 0x00100803, // 0047 ADD R4 R4 R3
- 0xA8040001, // 0048 EXBLK 1 1
- 0x70020006, // 0049 JMP #0051
- 0xAC140002, // 004A CATCH R5 0 2
- 0x70020003, // 004B JMP #0050
- 0x001C0B11, // 004C ADD R7 R5 K17
- 0x001C0E06, // 004D ADD R7 R7 R6
- 0x80040E00, // 004E RET 1 R7
- 0x70020000, // 004F JMP #0051
- 0xB0080000, // 0050 RAISE 2 R0 R0
- 0x80040800, // 0051 RET 1 R4
+ ( &(const binstruction[167]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0xA802009C, // 0001 EXBLK 0 #009F
+ 0x500C0200, // 0002 LDBOOL R3 1 0
+ 0x200C0203, // 0003 NE R3 R1 R3
+ 0x780E0038, // 0004 JMPF R3 #003E
+ 0x880C0101, // 0005 GETMBR R3 R0 K1
+ 0x5411FFFE, // 0006 LDINT R4 -1
+ 0x1C0C0604, // 0007 EQ R3 R3 R4
+ 0x780E000A, // 0008 JMPF R3 #0014
+ 0x00080502, // 0009 ADD R2 R2 K2
+ 0x880C0103, // 000A GETMBR R3 R0 K3
+ 0x4C100000, // 000B LDNIL R4
+ 0x200C0604, // 000C NE R3 R3 R4
+ 0x780E0004, // 000D JMPF R3 #0013
+ 0x600C0018, // 000E GETGBL R3 G24
+ 0x58100004, // 000F LDCONST R4 K4
+ 0x88140103, // 0010 GETMBR R5 R0 K3
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0x00080403, // 0012 ADD R2 R2 R3
+ 0x70020023, // 0013 JMP #0038
+ 0x880C0105, // 0014 GETMBR R3 R0 K5
+ 0x4C100000, // 0015 LDNIL R4
+ 0x200C0604, // 0016 NE R3 R3 R4
+ 0x780E0004, // 0017 JMPF R3 #001D
+ 0x600C0018, // 0018 GETGBL R3 G24
+ 0x58100006, // 0019 LDCONST R4 K6
+ 0x88140105, // 001A GETMBR R5 R0 K5
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x00080403, // 001C ADD R2 R2 R3
+ 0x880C0101, // 001D GETMBR R3 R0 K1
+ 0x4C100000, // 001E LDNIL R4
+ 0x200C0604, // 001F NE R3 R3 R4
+ 0x780E0004, // 0020 JMPF R3 #0026
+ 0x600C0018, // 0021 GETGBL R3 G24
+ 0x58100007, // 0022 LDCONST R4 K7
+ 0x88140101, // 0023 GETMBR R5 R0 K1
+ 0x7C0C0400, // 0024 CALL R3 2
+ 0x00080403, // 0025 ADD R2 R2 R3
+ 0x880C0103, // 0026 GETMBR R3 R0 K3
+ 0x4C100000, // 0027 LDNIL R4
+ 0x200C0604, // 0028 NE R3 R3 R4
+ 0x780E0004, // 0029 JMPF R3 #002F
+ 0x600C0018, // 002A GETGBL R3 G24
+ 0x58100004, // 002B LDCONST R4 K4
+ 0x88140103, // 002C GETMBR R5 R0 K3
+ 0x7C0C0400, // 002D CALL R3 2
+ 0x00080403, // 002E ADD R2 R2 R3
+ 0x880C0108, // 002F GETMBR R3 R0 K8
+ 0x4C100000, // 0030 LDNIL R4
+ 0x200C0604, // 0031 NE R3 R3 R4
+ 0x780E0004, // 0032 JMPF R3 #0038
+ 0x600C0018, // 0033 GETGBL R3 G24
+ 0x58100009, // 0034 LDCONST R4 K9
+ 0x88140108, // 0035 GETMBR R5 R0 K8
+ 0x7C0C0400, // 0036 CALL R3 2
+ 0x00080403, // 0037 ADD R2 R2 R3
+ 0x600C000C, // 0038 GETGBL R3 G12
+ 0x5C100400, // 0039 MOVE R4 R2
+ 0x7C0C0200, // 003A CALL R3 1
+ 0x240C070A, // 003B GT R3 R3 K10
+ 0x780E0000, // 003C JMPF R3 #003E
+ 0x0008050B, // 003D ADD R2 R2 K11
+ 0x600C0004, // 003E GETGBL R3 G4
+ 0x8810010C, // 003F GETMBR R4 R0 K12
+ 0x7C0C0200, // 0040 CALL R3 1
+ 0x1C0C070D, // 0041 EQ R3 R3 K13
+ 0x780E0010, // 0042 JMPF R3 #0054
+ 0x600C0018, // 0043 GETGBL R3 G24
+ 0x5810000E, // 0044 LDCONST R4 K14
+ 0x8814010C, // 0045 GETMBR R5 R0 K12
+ 0x7C0C0400, // 0046 CALL R3 2
+ 0x00080403, // 0047 ADD R2 R2 R3
+ 0x880C010F, // 0048 GETMBR R3 R0 K15
+ 0x88100110, // 0049 GETMBR R4 R0 K16
+ 0x88100911, // 004A GETMBR R4 R4 K17
+ 0x280C0604, // 004B GE R3 R3 R4
+ 0x780E0005, // 004C JMPF R3 #0053
+ 0x880C010F, // 004D GETMBR R3 R0 K15
+ 0x88100110, // 004E GETMBR R4 R0 K16
+ 0x88100912, // 004F GETMBR R4 R4 K18
+ 0x180C0604, // 0050 LE R3 R3 R4
+ 0x780E0000, // 0051 JMPF R3 #0053
+ 0x00080513, // 0052 ADD R2 R2 K19
+ 0x70020048, // 0053 JMP #009D
+ 0x600C0004, // 0054 GETGBL R3 G4
+ 0x8810010C, // 0055 GETMBR R4 R0 K12
+ 0x7C0C0200, // 0056 CALL R3 1
+ 0x1C0C0714, // 0057 EQ R3 R3 K20
+ 0x780E0006, // 0058 JMPF R3 #0060
+ 0x880C010C, // 0059 GETMBR R3 R0 K12
+ 0x780E0001, // 005A JMPF R3 #005D
+ 0x580C0015, // 005B LDCONST R3 K21
+ 0x70020000, // 005C JMP #005E
+ 0x580C0016, // 005D LDCONST R3 K22
+ 0x00080403, // 005E ADD R2 R2 R3
+ 0x7002003C, // 005F JMP #009D
+ 0x880C010C, // 0060 GETMBR R3 R0 K12
+ 0x4C100000, // 0061 LDNIL R4
+ 0x1C0C0604, // 0062 EQ R3 R3 R4
+ 0x780E0001, // 0063 JMPF R3 #0066
+ 0x00080517, // 0064 ADD R2 R2 K23
+ 0x70020036, // 0065 JMP #009D
+ 0x600C0004, // 0066 GETGBL R3 G4
+ 0x8810010C, // 0067 GETMBR R4 R0 K12
+ 0x7C0C0200, // 0068 CALL R3 1
+ 0x1C0C0718, // 0069 EQ R3 R3 K24
+ 0x780E0005, // 006A JMPF R3 #0071
+ 0x600C0018, // 006B GETGBL R3 G24
+ 0x58100019, // 006C LDCONST R4 K25
+ 0x8814010C, // 006D GETMBR R5 R0 K12
+ 0x7C0C0400, // 006E CALL R3 2
+ 0x00080403, // 006F ADD R2 R2 R3
+ 0x7002002B, // 0070 JMP #009D
+ 0x600C0004, // 0071 GETGBL R3 G4
+ 0x8810010C, // 0072 GETMBR R4 R0 K12
+ 0x7C0C0200, // 0073 CALL R3 1
+ 0x1C0C071A, // 0074 EQ R3 R3 K26
+ 0x780E0005, // 0075 JMPF R3 #007C
+ 0x600C0018, // 0076 GETGBL R3 G24
+ 0x5810001B, // 0077 LDCONST R4 K27
+ 0x8814010C, // 0078 GETMBR R5 R0 K12
+ 0x7C0C0400, // 0079 CALL R3 2
+ 0x00080403, // 007A ADD R2 R2 R3
+ 0x70020020, // 007B JMP #009D
+ 0x600C000F, // 007C GETGBL R3 G15
+ 0x8810010C, // 007D GETMBR R4 R0 K12
+ 0xB8163800, // 007E GETNGBL R5 K28
+ 0x7C0C0400, // 007F CALL R3 2
+ 0x780E000F, // 0080 JMPF R3 #0091
+ 0x880C010C, // 0081 GETMBR R3 R0 K12
+ 0x8C0C071D, // 0082 GETMET R3 R3 K29
+ 0x7C0C0200, // 0083 CALL R3 1
+ 0x00080403, // 0084 ADD R2 R2 R3
+ 0x880C010F, // 0085 GETMBR R3 R0 K15
+ 0x88100110, // 0086 GETMBR R4 R0 K16
+ 0x88100911, // 0087 GETMBR R4 R4 K17
+ 0x280C0604, // 0088 GE R3 R3 R4
+ 0x780E0005, // 0089 JMPF R3 #0090
+ 0x880C010F, // 008A GETMBR R3 R0 K15
+ 0x88100110, // 008B GETMBR R4 R0 K16
+ 0x88100912, // 008C GETMBR R4 R4 K18
+ 0x180C0604, // 008D LE R3 R3 R4
+ 0x780E0000, // 008E JMPF R3 #0090
+ 0x00080513, // 008F ADD R2 R2 K19
+ 0x7002000B, // 0090 JMP #009D
+ 0x600C0004, // 0091 GETGBL R3 G4
+ 0x8810010C, // 0092 GETMBR R4 R0 K12
+ 0x7C0C0200, // 0093 CALL R3 1
+ 0x1C0C071E, // 0094 EQ R3 R3 K30
+ 0x780E0006, // 0095 JMPF R3 #009D
+ 0x600C0018, // 0096 GETGBL R3 G24
+ 0x5810001F, // 0097 LDCONST R4 K31
+ 0x8814010C, // 0098 GETMBR R5 R0 K12
+ 0x8C140B20, // 0099 GETMET R5 R5 K32
+ 0x7C140200, // 009A CALL R5 1
+ 0x7C0C0400, // 009B CALL R3 2
+ 0x00080403, // 009C ADD R2 R2 R3
+ 0xA8040001, // 009D EXBLK 1 1
+ 0x70020006, // 009E JMP #00A6
+ 0xAC0C0002, // 009F CATCH R3 0 2
+ 0x70020003, // 00A0 JMP #00A5
+ 0x00140721, // 00A1 ADD R5 R3 K33
+ 0x00140A04, // 00A2 ADD R5 R5 R4
+ 0x80040A00, // 00A3 RET 1 R5
+ 0x70020000, // 00A4 JMP #00A6
+ 0xB0080000, // 00A5 RAISE 2 R0 R0
+ 0x80040400, // 00A6 RET 1 R2
})
)
);
@@ -2280,11 +1964,11 @@ be_local_closure(Matter_TLV_list_tostring_inner, /* name */
/********************************************************************
-** Solidified function: encode_len
+** Solidified function: set_commonprofile
********************************************************************/
-be_local_closure(Matter_TLV_list_encode_len, /* name */
+be_local_closure(Matter_TLV_item_set_commonprofile, /* name */
be_nested_proto(
- 5, /* nstack */
+ 6, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -2292,39 +1976,103 @@ be_local_closure(Matter_TLV_list_encode_len, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_encode_tag_len),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(val),
- /* K3 */ be_nested_str_weak(encode_len),
- /* K4 */ be_const_int(1),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(set_fulltag),
}),
- be_str_weak(encode_len),
+ be_str_weak(set_commonprofile),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
+ ( &(const binstruction[ 6]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x58080001, // 0002 LDCONST R2 K1
- 0x600C000C, // 0003 GETGBL R3 G12
- 0x88100102, // 0004 GETMBR R4 R0 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x140C0403, // 0006 LT R3 R2 R3
- 0x780E0006, // 0007 JMPF R3 #000F
- 0x880C0102, // 0008 GETMBR R3 R0 K2
- 0x940C0602, // 0009 GETIDX R3 R3 R2
- 0x8C0C0703, // 000A GETMET R3 R3 K3
- 0x7C0C0200, // 000B CALL R3 1
- 0x00040203, // 000C ADD R1 R1 R3
- 0x00080504, // 000D ADD R2 R2 K4
- 0x7001FFF3, // 000E JMP #0003
- 0x00040304, // 000F ADD R1 R1 K4
- 0x80040200, // 0010 RET 1 R1
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x5411FFFE, // 0002 LDINT R4 -1
+ 0x4C140000, // 0003 LDNIL R5
+ 0x7C040800, // 0004 CALL R1 4
+ 0x80000000, // 0005 RET 0
})
)
);
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_TLV_item_init, /* 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(parent),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_TLV_item
+********************************************************************/
+be_local_class(Matter_TLV_item,
+ 8,
+ NULL,
+ be_nested_map(31,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(is_array, 17), be_const_bool(0) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_TLV_item_init_closure) },
+ { be_const_key_weak(set_parent, -1), be_const_closure(Matter_TLV_item_set_parent_closure) },
+ { be_const_key_weak(set_fulltag, -1), be_const_closure(Matter_TLV_item_set_fulltag_closure) },
+ { be_const_key_weak(typ, -1), be_const_var(6) },
+ { be_const_key_weak(parse, 30), be_const_closure(Matter_TLV_item_parse_closure) },
+ { be_const_key_weak(parent, 22), be_const_var(0) },
+ { be_const_key_weak(to_str_val, -1), be_const_closure(Matter_TLV_item_to_str_val_closure) },
+ { be_const_key_weak(encode_len, 4), be_const_closure(Matter_TLV_item_encode_len_closure) },
+ { be_const_key_weak(TLV, 20), be_const_class(be_class_Matter_TLV) },
+ { be_const_key_weak(reset, 0), be_const_closure(Matter_TLV_item_reset_closure) },
+ { be_const_key_weak(tag_profile, -1), be_const_var(3) },
+ { be_const_key_weak(create_TLV, -1), be_const_static_closure(Matter_TLV_item_create_TLV_closure) },
+ { be_const_key_weak(tag_sub, -1), be_const_var(5) },
+ { be_const_key_weak(tag_vendor, -1), be_const_var(2) },
+ { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_item_tostring_closure) },
+ { be_const_key_weak(val, 5), be_const_var(7) },
+ { be_const_key_weak(_encode_tag, -1), be_const_closure(Matter_TLV_item__encode_tag_closure) },
+ { be_const_key_weak(_cmp_gt, -1), be_const_closure(Matter_TLV_item__cmp_gt_closure) },
+ { be_const_key_weak(_encode_tag_len, 25), be_const_closure(Matter_TLV_item__encode_tag_len_closure) },
+ { be_const_key_weak(is_struct, -1), be_const_bool(0) },
+ { be_const_key_weak(tlv2raw, -1), be_const_closure(Matter_TLV_item_tlv2raw_closure) },
+ { be_const_key_weak(sort, -1), be_const_static_closure(Matter_TLV_item_sort_closure) },
+ { be_const_key_weak(is_list, -1), be_const_bool(0) },
+ { be_const_key_weak(to_TLV, 18), be_const_closure(Matter_TLV_item_to_TLV_closure) },
+ { be_const_key_weak(set, -1), be_const_closure(Matter_TLV_item_set_closure) },
+ { be_const_key_weak(set_anonymoustag, 15), be_const_closure(Matter_TLV_item_set_anonymoustag_closure) },
+ { be_const_key_weak(set_commonprofile, -1), be_const_closure(Matter_TLV_item_set_commonprofile_closure) },
+ { be_const_key_weak(tag_number, -1), be_const_var(4) },
+ { be_const_key_weak(next_idx, 1), be_const_var(1) },
+ { be_const_key_weak(set_contextspecific, -1), be_const_closure(Matter_TLV_item_set_contextspecific_closure) },
+ })),
+ be_str_weak(Matter_TLV_item)
+);
+/*******************************************************************/
+
+void be_load_Matter_TLV_item_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_TLV_item);
+ be_setglobal(vm, "Matter_TLV_item");
+ be_pop(vm, 1);
+}
+
+extern const bclass be_class_Matter_TLV_list;
+
/********************************************************************
** Solidified function: findsubval
********************************************************************/
@@ -2360,139 +2108,6 @@ be_local_closure(Matter_TLV_list_findsubval, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_TLV_list_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[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(typ),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(LIST),
- /* K4 */ be_nested_str_weak(val),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* 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
- 0x88080102, // 0006 GETMBR R2 R0 K2
- 0x88080503, // 0007 GETMBR R2 R2 K3
- 0x90020202, // 0008 SETMBR R0 K1 R2
- 0x60080012, // 0009 GETGBL R2 G18
- 0x7C080000, // 000A CALL R2 0
- 0x90020802, // 000B SETMBR R0 K4 R2
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_array
-********************************************************************/
-be_local_closure(Matter_TLV_list_add_array, /* 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[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(Matter_TLV_array),
- /* K2 */ be_nested_str_weak(tag_sub),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(push),
- }),
- be_str_weak(add_array),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100000, // 0002 MOVE R4 R0
- 0x7C080400, // 0003 CALL R2 2
- 0x900A0401, // 0004 SETMBR R2 K2 R1
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
- 0x5C140400, // 0007 MOVE R5 R2
- 0x7C0C0400, // 0008 CALL R3 2
- 0x80040400, // 0009 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_TLV
-********************************************************************/
-be_local_closure(Matter_TLV_list_add_TLV, /* 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[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(NULL),
- /* K3 */ be_nested_str_weak(Matter_TLV_item),
- /* K4 */ be_nested_str_weak(tag_sub),
- /* K5 */ be_nested_str_weak(typ),
- /* K6 */ be_nested_str_weak(val),
- /* K7 */ be_nested_str_weak(push),
- }),
- be_str_weak(add_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x20100604, // 0001 NE R4 R3 R4
- 0x74120004, // 0002 JMPT R4 #0008
- 0xB8120000, // 0003 GETNGBL R4 K0
- 0x88100901, // 0004 GETMBR R4 R4 K1
- 0x88100902, // 0005 GETMBR R4 R4 K2
- 0x1C100404, // 0006 EQ R4 R2 R4
- 0x7812000A, // 0007 JMPF R4 #0013
- 0x88100101, // 0008 GETMBR R4 R0 K1
- 0x8C100903, // 0009 GETMET R4 R4 K3
- 0x5C180000, // 000A MOVE R6 R0
- 0x7C100400, // 000B CALL R4 2
- 0x90120801, // 000C SETMBR R4 K4 R1
- 0x90120A02, // 000D SETMBR R4 K5 R2
- 0x90120C03, // 000E SETMBR R4 K6 R3
- 0x88140106, // 000F GETMBR R5 R0 K6
- 0x8C140B07, // 0010 GETMET R5 R5 K7
- 0x5C1C0800, // 0011 MOVE R7 R4
- 0x7C140400, // 0012 CALL R5 2
- 0x80040000, // 0013 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: tlv2raw
********************************************************************/
@@ -2573,42 +2188,28 @@ be_local_closure(Matter_TLV_list_tlv2raw, /* name */
/********************************************************************
-** Solidified function: findsub
+** Solidified function: to_str_val
********************************************************************/
-be_local_closure(Matter_TLV_list_findsub, /* name */
+be_local_closure(Matter_TLV_list_to_str_val, /* name */
be_nested_proto(
- 6, /* nstack */
- 3, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- /* K1 */ be_nested_str_weak(tag_sub),
- /* K2 */ be_nested_str_weak(stop_iteration),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(tostring),
}),
- be_str_weak(findsub),
+ be_str_weak(to_str_val),
&be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
- 0x600C0010, // 0000 GETGBL R3 G16
- 0x88100100, // 0001 GETMBR R4 R0 K0
- 0x7C0C0200, // 0002 CALL R3 1
- 0xA8020007, // 0003 EXBLK 0 #000C
- 0x5C100600, // 0004 MOVE R4 R3
- 0x7C100000, // 0005 CALL R4 0
- 0x88140901, // 0006 GETMBR R5 R4 K1
- 0x1C140A01, // 0007 EQ R5 R5 R1
- 0x78160001, // 0008 JMPF R5 #000B
- 0xA8040001, // 0009 EXBLK 1 1
- 0x80040800, // 000A RET 1 R4
- 0x7001FFF7, // 000B JMP #0004
- 0x580C0002, // 000C LDCONST R3 K2
- 0xAC0C0200, // 000D CATCH R3 1 0
- 0xB0080000, // 000E RAISE 2 R0 R0
- 0x80040400, // 000F RET 1 R2
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x500C0200, // 0001 LDBOOL R3 1 0
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80040200, // 0003 RET 1 R1
})
)
);
@@ -2620,8 +2221,8 @@ be_local_closure(Matter_TLV_list_findsub, /* name */
********************************************************************/
be_local_closure(Matter_TLV_list_tostring, /* name */
be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
+ 8, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -2635,13 +2236,149 @@ be_local_closure(Matter_TLV_list_tostring, /* name */
}),
be_str_weak(tostring),
&be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x500C0000, // 0001 LDBOOL R3 0 0
- 0x58100001, // 0002 LDCONST R4 K1
- 0x58140002, // 0003 LDCONST R5 K2
- 0x7C040800, // 0004 CALL R1 4
- 0x80040200, // 0005 RET 1 R1
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x50100000, // 0001 LDBOOL R4 0 0
+ 0x58140001, // 0002 LDCONST R5 K1
+ 0x58180002, // 0003 LDCONST R6 K2
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x7C080A00, // 0005 CALL R2 5
+ 0x80040400, // 0006 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: size
+********************************************************************/
+be_local_closure(Matter_TLV_list_size, /* 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(val),
+ }),
+ be_str_weak(size),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x6004000C, // 0000 GETGBL R1 G12
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: setitem
+********************************************************************/
+be_local_closure(Matter_TLV_list_setitem, /* name */
+ be_nested_proto(
+ 4, /* 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(val),
+ }),
+ be_str_weak(setitem),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x980C0202, // 0001 SETIDX R3 R1 R2
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_struct
+********************************************************************/
+be_local_closure(Matter_TLV_list_add_struct, /* 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[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(TLV),
+ /* K1 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K2 */ be_nested_str_weak(tag_sub),
+ /* K3 */ be_nested_str_weak(val),
+ /* K4 */ be_nested_str_weak(push),
+ }),
+ be_str_weak(add_struct),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100000, // 0002 MOVE R4 R0
+ 0x7C080400, // 0003 CALL R2 2
+ 0x900A0401, // 0004 SETMBR R2 K2 R1
+ 0x880C0103, // 0005 GETMBR R3 R0 K3
+ 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x5C140400, // 0007 MOVE R5 R2
+ 0x7C0C0400, // 0008 CALL R3 2
+ 0x80040400, // 0009 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_list
+********************************************************************/
+be_local_closure(Matter_TLV_list_add_list, /* 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[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(TLV),
+ /* K1 */ be_nested_str_weak(Matter_TLV_list),
+ /* K2 */ be_nested_str_weak(tag_sub),
+ /* K3 */ be_nested_str_weak(val),
+ /* K4 */ be_nested_str_weak(push),
+ }),
+ be_str_weak(add_list),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100000, // 0002 MOVE R4 R0
+ 0x7C080400, // 0003 CALL R2 2
+ 0x900A0401, // 0004 SETMBR R2 K2 R1
+ 0x880C0103, // 0005 GETMBR R3 R0 K3
+ 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x5C140400, // 0007 MOVE R5 R2
+ 0x7C0C0400, // 0008 CALL R3 2
+ 0x80040400, // 0009 RET 1 R2
})
)
);
@@ -2699,6 +2436,107 @@ be_local_closure(Matter_TLV_list_parse, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_TLV_list_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[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(typ),
+ /* K2 */ be_nested_str_weak(TLV),
+ /* K3 */ be_nested_str_weak(LIST),
+ /* K4 */ be_nested_str_weak(val),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* 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
+ 0x88080102, // 0006 GETMBR R2 R0 K2
+ 0x88080503, // 0007 GETMBR R2 R2 K3
+ 0x90020202, // 0008 SETMBR R0 K1 R2
+ 0x60080012, // 0009 GETGBL R2 G18
+ 0x7C080000, // 000A CALL R2 0
+ 0x90020802, // 000B SETMBR R0 K4 R2
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: item
+********************************************************************/
+be_local_closure(Matter_TLV_list_item, /* 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[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(val),
+ }),
+ be_str_weak(item),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x94080401, // 0001 GETIDX R2 R2 R1
+ 0x80040400, // 0002 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: getsubval
+********************************************************************/
+be_local_closure(Matter_TLV_list_getsubval, /* 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(getsub),
+ /* K1 */ be_nested_str_weak(val),
+ }),
+ be_str_weak(getsubval),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x88080501, // 0003 GETMBR R2 R2 K1
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: getsub
********************************************************************/
@@ -2734,6 +2572,429 @@ be_local_closure(Matter_TLV_list_getsub, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: add_obj
+********************************************************************/
+be_local_closure(Matter_TLV_list_add_obj, /* name */
+ be_nested_proto(
+ 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[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(val),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(to_TLV),
+ /* K3 */ be_nested_str_weak(tag_sub),
+ }),
+ be_str_weak(add_obj),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x200C0403, // 0001 NE R3 R2 R3
+ 0x780E0010, // 0002 JMPF R3 #0014
+ 0x600C000F, // 0003 GETGBL R3 G15
+ 0x5C100400, // 0004 MOVE R4 R2
+ 0x60140015, // 0005 GETGBL R5 G21
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x780E0004, // 0007 JMPF R3 #000D
+ 0x880C0100, // 0008 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0009 GETMET R3 R3 K1
+ 0x5C140400, // 000A MOVE R5 R2
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x70020006, // 000C JMP #0014
+ 0x8C0C0502, // 000D GETMET R3 R2 K2
+ 0x7C0C0200, // 000E CALL R3 1
+ 0x900E0601, // 000F SETMBR R3 K3 R1
+ 0x88100100, // 0010 GETMBR R4 R0 K0
+ 0x8C100901, // 0011 GETMET R4 R4 K1
+ 0x5C180600, // 0012 MOVE R6 R3
+ 0x7C100400, // 0013 CALL R4 2
+ 0x80040000, // 0014 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_TLV
+********************************************************************/
+be_local_closure(Matter_TLV_list_add_TLV, /* 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[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(NULL),
+ /* K3 */ be_nested_str_weak(Matter_TLV_item),
+ /* K4 */ be_nested_str_weak(tag_sub),
+ /* K5 */ be_nested_str_weak(typ),
+ /* K6 */ be_nested_str_weak(val),
+ /* K7 */ be_nested_str_weak(push),
+ }),
+ be_str_weak(add_TLV),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x20100604, // 0001 NE R4 R3 R4
+ 0x74120004, // 0002 JMPT R4 #0008
+ 0xB8120000, // 0003 GETNGBL R4 K0
+ 0x88100901, // 0004 GETMBR R4 R4 K1
+ 0x88100902, // 0005 GETMBR R4 R4 K2
+ 0x1C100404, // 0006 EQ R4 R2 R4
+ 0x7812000A, // 0007 JMPF R4 #0013
+ 0x88100101, // 0008 GETMBR R4 R0 K1
+ 0x8C100903, // 0009 GETMET R4 R4 K3
+ 0x5C180000, // 000A MOVE R6 R0
+ 0x7C100400, // 000B CALL R4 2
+ 0x90120801, // 000C SETMBR R4 K4 R1
+ 0x90120A02, // 000D SETMBR R4 K5 R2
+ 0x90120C03, // 000E SETMBR R4 K6 R3
+ 0x88140106, // 000F GETMBR R5 R0 K6
+ 0x8C140B07, // 0010 GETMET R5 R5 K7
+ 0x5C1C0800, // 0011 MOVE R7 R4
+ 0x7C140400, // 0012 CALL R5 2
+ 0x80040000, // 0013 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_array
+********************************************************************/
+be_local_closure(Matter_TLV_list_add_array, /* 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[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(TLV),
+ /* K1 */ be_nested_str_weak(Matter_TLV_array),
+ /* K2 */ be_nested_str_weak(tag_sub),
+ /* K3 */ be_nested_str_weak(val),
+ /* K4 */ be_nested_str_weak(push),
+ }),
+ be_str_weak(add_array),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100000, // 0002 MOVE R4 R0
+ 0x7C080400, // 0003 CALL R2 2
+ 0x900A0401, // 0004 SETMBR R2 K2 R1
+ 0x880C0103, // 0005 GETMBR R3 R0 K3
+ 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x5C140400, // 0007 MOVE R5 R2
+ 0x7C0C0400, // 0008 CALL R3 2
+ 0x80040400, // 0009 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: findsub
+********************************************************************/
+be_local_closure(Matter_TLV_list_findsub, /* 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[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(val),
+ /* K1 */ be_nested_str_weak(tag_sub),
+ /* K2 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(findsub),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x600C0010, // 0000 GETGBL R3 G16
+ 0x88100100, // 0001 GETMBR R4 R0 K0
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0xA8020007, // 0003 EXBLK 0 #000C
+ 0x5C100600, // 0004 MOVE R4 R3
+ 0x7C100000, // 0005 CALL R4 0
+ 0x88140901, // 0006 GETMBR R5 R4 K1
+ 0x1C140A01, // 0007 EQ R5 R5 R1
+ 0x78160001, // 0008 JMPF R5 #000B
+ 0xA8040001, // 0009 EXBLK 1 1
+ 0x80040800, // 000A RET 1 R4
+ 0x7001FFF7, // 000B JMP #0004
+ 0x580C0002, // 000C LDCONST R3 K2
+ 0xAC0C0200, // 000D CATCH R3 1 0
+ 0xB0080000, // 000E RAISE 2 R0 R0
+ 0x80040400, // 000F RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: tostring_inner
+********************************************************************/
+be_local_closure(Matter_TLV_list_tostring_inner, /* 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[18]) { /* constants */
+ /* K0 */ be_nested_str_weak(),
+ /* K1 */ be_nested_str_weak(tag_profile),
+ /* K2 */ be_nested_str_weak(Matter_X3A_X3A),
+ /* K3 */ be_nested_str_weak(tag_number),
+ /* K4 */ be_nested_str_weak(0x_X2508X_X20),
+ /* K5 */ be_nested_str_weak(tag_vendor),
+ /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A),
+ /* K7 */ be_nested_str_weak(0x_X2504X_X3A),
+ /* K8 */ be_nested_str_weak(tag_sub),
+ /* K9 */ be_nested_str_weak(_X25i_X20),
+ /* K10 */ be_const_int(0),
+ /* K11 */ be_nested_str_weak(_X3D_X20),
+ /* K12 */ be_nested_str_weak(val),
+ /* K13 */ be_nested_str_weak(copy),
+ /* K14 */ be_nested_str_weak(sort),
+ /* K15 */ be_nested_str_weak(concat),
+ /* K16 */ be_nested_str_weak(_X2C_X20),
+ /* K17 */ be_nested_str_weak(_X20),
+ }),
+ be_str_weak(tostring_inner),
+ &be_const_str_solidified,
+ ( &(const binstruction[85]) { /* code */
+ 0x58140000, // 0000 LDCONST R5 K0
+ 0xA802004A, // 0001 EXBLK 0 #004D
+ 0x50180200, // 0002 LDBOOL R6 1 0
+ 0x20180806, // 0003 NE R6 R4 R6
+ 0x781A0038, // 0004 JMPF R6 #003E
+ 0x88180101, // 0005 GETMBR R6 R0 K1
+ 0x541DFFFE, // 0006 LDINT R7 -1
+ 0x1C180C07, // 0007 EQ R6 R6 R7
+ 0x781A000A, // 0008 JMPF R6 #0014
+ 0x00140B02, // 0009 ADD R5 R5 K2
+ 0x88180103, // 000A GETMBR R6 R0 K3
+ 0x4C1C0000, // 000B LDNIL R7
+ 0x20180C07, // 000C NE R6 R6 R7
+ 0x781A0004, // 000D JMPF R6 #0013
+ 0x60180018, // 000E GETGBL R6 G24
+ 0x581C0004, // 000F LDCONST R7 K4
+ 0x88200103, // 0010 GETMBR R8 R0 K3
+ 0x7C180400, // 0011 CALL R6 2
+ 0x00140A06, // 0012 ADD R5 R5 R6
+ 0x70020023, // 0013 JMP #0038
+ 0x88180105, // 0014 GETMBR R6 R0 K5
+ 0x4C1C0000, // 0015 LDNIL R7
+ 0x20180C07, // 0016 NE R6 R6 R7
+ 0x781A0004, // 0017 JMPF R6 #001D
+ 0x60180018, // 0018 GETGBL R6 G24
+ 0x581C0006, // 0019 LDCONST R7 K6
+ 0x88200105, // 001A GETMBR R8 R0 K5
+ 0x7C180400, // 001B CALL R6 2
+ 0x00140A06, // 001C ADD R5 R5 R6
+ 0x88180101, // 001D GETMBR R6 R0 K1
+ 0x4C1C0000, // 001E LDNIL R7
+ 0x20180C07, // 001F NE R6 R6 R7
+ 0x781A0004, // 0020 JMPF R6 #0026
+ 0x60180018, // 0021 GETGBL R6 G24
+ 0x581C0007, // 0022 LDCONST R7 K7
+ 0x88200101, // 0023 GETMBR R8 R0 K1
+ 0x7C180400, // 0024 CALL R6 2
+ 0x00140A06, // 0025 ADD R5 R5 R6
+ 0x88180103, // 0026 GETMBR R6 R0 K3
+ 0x4C1C0000, // 0027 LDNIL R7
+ 0x20180C07, // 0028 NE R6 R6 R7
+ 0x781A0004, // 0029 JMPF R6 #002F
+ 0x60180018, // 002A GETGBL R6 G24
+ 0x581C0004, // 002B LDCONST R7 K4
+ 0x88200103, // 002C GETMBR R8 R0 K3
+ 0x7C180400, // 002D CALL R6 2
+ 0x00140A06, // 002E ADD R5 R5 R6
+ 0x88180108, // 002F GETMBR R6 R0 K8
+ 0x4C1C0000, // 0030 LDNIL R7
+ 0x20180C07, // 0031 NE R6 R6 R7
+ 0x781A0004, // 0032 JMPF R6 #0038
+ 0x60180018, // 0033 GETGBL R6 G24
+ 0x581C0009, // 0034 LDCONST R7 K9
+ 0x88200108, // 0035 GETMBR R8 R0 K8
+ 0x7C180400, // 0036 CALL R6 2
+ 0x00140A06, // 0037 ADD R5 R5 R6
+ 0x6018000C, // 0038 GETGBL R6 G12
+ 0x5C1C0A00, // 0039 MOVE R7 R5
+ 0x7C180200, // 003A CALL R6 1
+ 0x24180D0A, // 003B GT R6 R6 K10
+ 0x781A0000, // 003C JMPF R6 #003E
+ 0x00140B0B, // 003D ADD R5 R5 K11
+ 0x00140A02, // 003E ADD R5 R5 R2
+ 0x8818010C, // 003F GETMBR R6 R0 K12
+ 0x8C180D0D, // 0040 GETMET R6 R6 K13
+ 0x7C180200, // 0041 CALL R6 1
+ 0x78060002, // 0042 JMPF R1 #0046
+ 0x8C1C010E, // 0043 GETMET R7 R0 K14
+ 0x5C240C00, // 0044 MOVE R9 R6
+ 0x7C1C0400, // 0045 CALL R7 2
+ 0x8C1C0D0F, // 0046 GETMET R7 R6 K15
+ 0x58240010, // 0047 LDCONST R9 K16
+ 0x7C1C0400, // 0048 CALL R7 2
+ 0x00140A07, // 0049 ADD R5 R5 R7
+ 0x00140A03, // 004A ADD R5 R5 R3
+ 0xA8040001, // 004B EXBLK 1 1
+ 0x70020006, // 004C JMP #0054
+ 0xAC180002, // 004D CATCH R6 0 2
+ 0x70020003, // 004E JMP #0053
+ 0x00200D11, // 004F ADD R8 R6 K17
+ 0x00201007, // 0050 ADD R8 R8 R7
+ 0x80041000, // 0051 RET 1 R8
+ 0x70020000, // 0052 JMP #0054
+ 0xB0080000, // 0053 RAISE 2 R0 R0
+ 0x80040A00, // 0054 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: push
+********************************************************************/
+be_local_closure(Matter_TLV_list_push, /* 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(val),
+ /* K1 */ be_nested_str_weak(push),
+ }),
+ be_str_weak(push),
+ &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: findsubtyp
+********************************************************************/
+be_local_closure(Matter_TLV_list_findsubtyp, /* 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(findsub),
+ /* K1 */ be_nested_str_weak(typ),
+ }),
+ be_str_weak(findsubtyp),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x200C0403, // 0004 NE R3 R2 R3
+ 0x780E0001, // 0005 JMPF R3 #0008
+ 0x880C0501, // 0006 GETMBR R3 R2 K1
+ 0x80040600, // 0007 RET 1 R3
+ 0x4C0C0000, // 0008 LDNIL R3
+ 0x80040600, // 0009 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: encode_len
+********************************************************************/
+be_local_closure(Matter_TLV_list_encode_len, /* 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(_encode_tag_len),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(val),
+ /* K3 */ be_nested_str_weak(encode_len),
+ /* K4 */ be_const_int(1),
+ }),
+ be_str_weak(encode_len),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x58080001, // 0002 LDCONST R2 K1
+ 0x600C000C, // 0003 GETGBL R3 G12
+ 0x88100102, // 0004 GETMBR R4 R0 K2
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x140C0403, // 0006 LT R3 R2 R3
+ 0x780E0006, // 0007 JMPF R3 #000F
+ 0x880C0102, // 0008 GETMBR R3 R0 K2
+ 0x940C0602, // 0009 GETIDX R3 R3 R2
+ 0x8C0C0703, // 000A GETMET R3 R3 K3
+ 0x7C0C0200, // 000B CALL R3 1
+ 0x00040203, // 000C ADD R1 R1 R3
+ 0x00080504, // 000D ADD R2 R2 K4
+ 0x7001FFF3, // 000E JMP #0003
+ 0x00040304, // 000F ADD R1 R1 K4
+ 0x80040200, // 0010 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_TLV_list
********************************************************************/
@@ -2741,29 +3002,30 @@ extern const bclass be_class_Matter_TLV_item;
be_local_class(Matter_TLV_list,
0,
&be_class_Matter_TLV_item,
- be_nested_map(21,
+ be_nested_map(22,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(add_obj, -1), be_const_closure(Matter_TLV_list_add_obj_closure) },
- { be_const_key_weak(add_struct, -1), be_const_closure(Matter_TLV_list_add_struct_closure) },
+ { be_const_key_weak(encode_len, 7), be_const_closure(Matter_TLV_list_encode_len_closure) },
+ { be_const_key_weak(tlv2raw, -1), be_const_closure(Matter_TLV_list_tlv2raw_closure) },
+ { be_const_key_weak(to_str_val, 14), be_const_closure(Matter_TLV_list_to_str_val_closure) },
+ { be_const_key_weak(findsubval, 5), be_const_closure(Matter_TLV_list_findsubval_closure) },
+ { be_const_key_weak(size, -1), be_const_closure(Matter_TLV_list_size_closure) },
+ { be_const_key_weak(findsubtyp, 21), be_const_closure(Matter_TLV_list_findsubtyp_closure) },
+ { be_const_key_weak(add_struct, 19), be_const_closure(Matter_TLV_list_add_struct_closure) },
{ be_const_key_weak(push, -1), be_const_closure(Matter_TLV_list_push_closure) },
+ { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_list_parse_closure) },
+ { be_const_key_weak(init, 0), be_const_closure(Matter_TLV_list_init_closure) },
+ { be_const_key_weak(item, -1), be_const_closure(Matter_TLV_list_item_closure) },
+ { be_const_key_weak(tostring_inner, -1), be_const_closure(Matter_TLV_list_tostring_inner_closure) },
{ be_const_key_weak(getsubval, 20), be_const_closure(Matter_TLV_list_getsubval_closure) },
{ be_const_key_weak(getsub, -1), be_const_closure(Matter_TLV_list_getsub_closure) },
- { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_list_parse_closure) },
- { be_const_key_weak(size, -1), be_const_closure(Matter_TLV_list_size_closure) },
- { be_const_key_weak(findsubtyp, -1), be_const_closure(Matter_TLV_list_findsubtyp_closure) },
- { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_list_tostring_closure) },
- { be_const_key_weak(tostring_inner, 4), be_const_closure(Matter_TLV_list_tostring_inner_closure) },
- { be_const_key_weak(encode_len, 8), be_const_closure(Matter_TLV_list_encode_len_closure) },
- { be_const_key_weak(findsubval, -1), be_const_closure(Matter_TLV_list_findsubval_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_TLV_list_init_closure) },
- { be_const_key_weak(add_array, 16), be_const_closure(Matter_TLV_list_add_array_closure) },
- { be_const_key_weak(setitem, 15), be_const_closure(Matter_TLV_list_setitem_closure) },
- { be_const_key_weak(tlv2raw, 18), be_const_closure(Matter_TLV_list_tlv2raw_closure) },
{ be_const_key_weak(findsub, -1), be_const_closure(Matter_TLV_list_findsub_closure) },
- { be_const_key_weak(is_struct, -1), be_const_bool(0) },
+ { be_const_key_weak(add_list, 17), be_const_closure(Matter_TLV_list_add_list_closure) },
+ { be_const_key_weak(add_array, -1), be_const_closure(Matter_TLV_list_add_array_closure) },
{ be_const_key_weak(add_TLV, -1), be_const_closure(Matter_TLV_list_add_TLV_closure) },
- { be_const_key_weak(item, 5), be_const_closure(Matter_TLV_list_item_closure) },
- { be_const_key_weak(add_list, -1), be_const_closure(Matter_TLV_list_add_list_closure) },
+ { be_const_key_weak(setitem, 11), be_const_closure(Matter_TLV_list_setitem_closure) },
+ { be_const_key_weak(add_obj, -1), be_const_closure(Matter_TLV_list_add_obj_closure) },
+ { be_const_key_weak(is_list, -1), be_const_bool(1) },
+ { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_list_tostring_closure) },
})),
be_str_weak(Matter_TLV_list)
);
@@ -2777,6 +3039,40 @@ void be_load_Matter_TLV_list_class(bvm *vm) {
extern const bclass be_class_Matter_TLV_struct;
+/********************************************************************
+** Solidified function: tostring
+********************************************************************/
+be_local_closure(Matter_TLV_struct_tostring, /* 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[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(tostring_inner),
+ /* K1 */ be_nested_str_weak(_X7B),
+ /* K2 */ be_nested_str_weak(_X7D),
+ }),
+ be_str_weak(tostring),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x50100200, // 0001 LDBOOL R4 1 0
+ 0x58140001, // 0002 LDCONST R5 K1
+ 0x58180002, // 0003 LDCONST R6 K2
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x7C080A00, // 0005 CALL R2 5
+ 0x80040400, // 0006 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: init
********************************************************************/
@@ -2819,39 +3115,6 @@ be_local_closure(Matter_TLV_struct_init, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: tostring
-********************************************************************/
-be_local_closure(Matter_TLV_struct_tostring, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tostring_inner),
- /* K1 */ be_nested_str_weak(_X7B),
- /* K2 */ be_nested_str_weak(_X7D),
- }),
- be_str_weak(tostring),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x500C0200, // 0001 LDBOOL R3 1 0
- 0x58100001, // 0002 LDCONST R4 K1
- 0x58140002, // 0003 LDCONST R5 K2
- 0x7C040800, // 0004 CALL R1 4
- 0x80040200, // 0005 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_TLV_struct
********************************************************************/
@@ -2859,11 +3122,12 @@ extern const bclass be_class_Matter_TLV_list;
be_local_class(Matter_TLV_struct,
0,
&be_class_Matter_TLV_list,
- be_nested_map(3,
+ be_nested_map(4,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(init, -1), be_const_closure(Matter_TLV_struct_init_closure) },
{ be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_struct_tostring_closure) },
- { be_const_key_weak(is_struct, -1), be_const_bool(1) },
+ { be_const_key_weak(is_list, -1), be_const_bool(0) },
+ { be_const_key_weak(is_struct, 0), be_const_bool(1) },
})),
be_str_weak(Matter_TLV_struct)
);
@@ -2877,6 +3141,40 @@ void be_load_Matter_TLV_struct_class(bvm *vm) {
extern const bclass be_class_Matter_TLV_array;
+/********************************************************************
+** Solidified function: tostring
+********************************************************************/
+be_local_closure(Matter_TLV_array_tostring, /* 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[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(tostring_inner),
+ /* K1 */ be_nested_str_weak(_X5B),
+ /* K2 */ be_nested_str_weak(_X5D),
+ }),
+ be_str_weak(tostring),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x50100000, // 0001 LDBOOL R4 0 0
+ 0x58140001, // 0002 LDCONST R5 K1
+ 0x58180002, // 0003 LDCONST R6 K2
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x7C080A00, // 0005 CALL R2 5
+ 0x80040400, // 0006 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: init
********************************************************************/
@@ -2982,39 +3280,6 @@ be_local_closure(Matter_TLV_array_parse, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: tostring
-********************************************************************/
-be_local_closure(Matter_TLV_array_tostring, /* 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[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tostring_inner),
- /* K1 */ be_nested_str_weak(_X5B),
- /* K2 */ be_nested_str_weak(_X5D),
- }),
- be_str_weak(tostring),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x500C0000, // 0001 LDBOOL R3 0 0
- 0x58100001, // 0002 LDCONST R4 K1
- 0x58140002, // 0003 LDCONST R5 K2
- 0x7C040800, // 0004 CALL R1 4
- 0x80040200, // 0005 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_TLV_array
********************************************************************/
@@ -3022,11 +3287,13 @@ extern const bclass be_class_Matter_TLV_list;
be_local_class(Matter_TLV_array,
0,
&be_class_Matter_TLV_list,
- be_nested_map(3,
+ be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(tostring, 1), be_const_closure(Matter_TLV_array_tostring_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_TLV_array_init_closure) },
- { be_const_key_weak(parse, 2), be_const_closure(Matter_TLV_array_parse_closure) },
- { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_array_tostring_closure) },
+ { be_const_key_weak(parse, 3), be_const_closure(Matter_TLV_array_parse_closure) },
+ { be_const_key_weak(is_list, -1), be_const_bool(0) },
+ { be_const_key_weak(is_array, -1), be_const_bool(1) },
})),
be_str_weak(Matter_TLV_array)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h
index 1db6ad008..0dd231c3a 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h
@@ -120,86 +120,405 @@ void be_load_Matter_UDPPacket_sent_class(bvm *vm) {
extern const bclass be_class_Matter_UDPServer;
/********************************************************************
-** Solidified function: _backoff_time
+** Solidified function: every_50ms
********************************************************************/
-be_local_closure(Matter_UDPServer__backoff_time, /* name */
+be_local_closure(Matter_UDPServer_every_50ms, /* 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(loop),
+ }),
+ be_str_weak(every_50ms),
+ &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: send_UDP
+********************************************************************/
+be_local_closure(Matter_UDPServer_send_UDP, /* 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[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(UDPPacket_sent),
+ /* K2 */ be_nested_str_weak(send),
+ /* K3 */ be_nested_str_weak(msg_id),
+ /* K4 */ be_nested_str_weak(packets_sent),
+ /* K5 */ be_nested_str_weak(push),
+ }),
+ be_str_weak(send_UDP),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x8C0C0102, // 0004 GETMET R3 R0 K2
+ 0x5C140400, // 0005 MOVE R5 R2
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x880C0503, // 0007 GETMBR R3 R2 K3
+ 0x780E0003, // 0008 JMPF R3 #000D
+ 0x880C0104, // 0009 GETMBR R3 R0 K4
+ 0x8C0C0705, // 000A GETMET R3 R3 K5
+ 0x5C140400, // 000B MOVE R5 R2
+ 0x7C0C0400, // 000C CALL R3 2
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: received_ack
+********************************************************************/
+be_local_closure(Matter_UDPServer_received_ack, /* 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(ack_message_counter),
+ /* K1 */ be_nested_str_weak(exchange_id),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(packets_sent),
+ /* K4 */ be_nested_str_weak(msg_id),
+ /* K5 */ be_nested_str_weak(remove),
+ /* K6 */ be_nested_str_weak(tasmota),
+ /* K7 */ be_nested_str_weak(loglevel),
+ /* K8 */ be_nested_str_weak(log),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D),
+ /* K10 */ be_const_int(1),
+ }),
+ be_str_weak(received_ack),
+ &be_const_str_solidified,
+ ( &(const binstruction[41]) { /* code */
+ 0x88080300, // 0000 GETMBR R2 R1 K0
+ 0x880C0301, // 0001 GETMBR R3 R1 K1
+ 0x4C100000, // 0002 LDNIL R4
+ 0x1C100404, // 0003 EQ R4 R2 R4
+ 0x78120000, // 0004 JMPF R4 #0006
+ 0x80000800, // 0005 RET 0
+ 0x58100002, // 0006 LDCONST R4 K2
+ 0x6014000C, // 0007 GETGBL R5 G12
+ 0x88180103, // 0008 GETMBR R6 R0 K3
+ 0x7C140200, // 0009 CALL R5 1
+ 0x14140805, // 000A LT R5 R4 R5
+ 0x7816001B, // 000B JMPF R5 #0028
+ 0x88140103, // 000C GETMBR R5 R0 K3
+ 0x94140A04, // 000D GETIDX R5 R5 R4
+ 0x88180B04, // 000E GETMBR R6 R5 K4
+ 0x1C180C02, // 000F EQ R6 R6 R2
+ 0x781A0014, // 0010 JMPF R6 #0026
+ 0x88180B01, // 0011 GETMBR R6 R5 K1
+ 0x1C180C03, // 0012 EQ R6 R6 R3
+ 0x781A0011, // 0013 JMPF R6 #0026
+ 0x88180103, // 0014 GETMBR R6 R0 K3
+ 0x8C180D05, // 0015 GETMET R6 R6 K5
+ 0x5C200800, // 0016 MOVE R8 R4
+ 0x7C180400, // 0017 CALL R6 2
+ 0xB81A0C00, // 0018 GETNGBL R6 K6
+ 0x8C180D07, // 0019 GETMET R6 R6 K7
+ 0x54220003, // 001A LDINT R8 4
+ 0x7C180400, // 001B CALL R6 2
+ 0x781A0007, // 001C JMPF R6 #0025
+ 0xB81A0C00, // 001D GETNGBL R6 K6
+ 0x8C180D08, // 001E GETMET R6 R6 K8
+ 0x60200008, // 001F GETGBL R8 G8
+ 0x5C240400, // 0020 MOVE R9 R2
+ 0x7C200200, // 0021 CALL R8 1
+ 0x00221208, // 0022 ADD R8 K9 R8
+ 0x54260003, // 0023 LDINT R9 4
+ 0x7C180600, // 0024 CALL R6 3
+ 0x70020000, // 0025 JMP #0027
+ 0x0010090A, // 0026 ADD R4 R4 K10
+ 0x7001FFDE, // 0027 JMP #0007
+ 0x80000000, // 0028 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(Matter_UDPServer_start, /* 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[12]) { /* constants */
+ /* K0 */ be_nested_str_weak(listening),
+ /* K1 */ be_nested_str_weak(udp_socket),
+ /* K2 */ be_nested_str_weak(udp),
+ /* K3 */ be_nested_str_weak(begin),
+ /* K4 */ be_nested_str_weak(addr),
+ /* K5 */ be_nested_str_weak(port),
+ /* K6 */ be_nested_str_weak(network_error),
+ /* K7 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server),
+ /* K8 */ be_nested_str_weak(dispatch_cb),
+ /* K9 */ be_nested_str_weak(tasmota),
+ /* K10 */ be_nested_str_weak(add_fast_loop),
+ /* K11 */ be_nested_str_weak(loop_cb),
+ }),
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x740A0011, // 0001 JMPT R2 #0014
+ 0xB80A0400, // 0002 GETNGBL R2 K2
+ 0x7C080000, // 0003 CALL R2 0
+ 0x90020202, // 0004 SETMBR R0 K1 R2
+ 0x88080101, // 0005 GETMBR R2 R0 K1
+ 0x8C080503, // 0006 GETMET R2 R2 K3
+ 0x88100104, // 0007 GETMBR R4 R0 K4
+ 0x88140105, // 0008 GETMBR R5 R0 K5
+ 0x7C080600, // 0009 CALL R2 3
+ 0x5C0C0400, // 000A MOVE R3 R2
+ 0x740E0000, // 000B JMPT R3 #000D
+ 0xB0060D07, // 000C RAISE 1 K6 K7
+ 0x500C0200, // 000D LDBOOL R3 1 0
+ 0x90020003, // 000E SETMBR R0 K0 R3
+ 0x90021001, // 000F SETMBR R0 K8 R1
+ 0xB80E1200, // 0010 GETNGBL R3 K9
+ 0x8C0C070A, // 0011 GETMET R3 R3 K10
+ 0x8814010B, // 0012 GETMBR R5 R0 K11
+ 0x7C0C0400, // 0013 CALL R3 2
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send
+********************************************************************/
+be_local_closure(Matter_UDPServer_send, /* 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[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(udp_socket),
+ /* K1 */ be_nested_str_weak(send),
+ /* K2 */ be_nested_str_weak(addr),
+ /* K3 */ be_nested_str_weak(remote_ip),
+ /* K4 */ be_nested_str_weak(port),
+ /* K5 */ be_nested_str_weak(remote_port),
+ /* K6 */ be_nested_str_weak(raw),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(loglevel),
+ /* K9 */ be_nested_str_weak(log),
+ /* K10 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
+ /* K11 */ be_const_int(3),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
+ }),
+ be_str_weak(send),
+ &be_const_str_solidified,
+ ( &(const binstruction[47]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88100302, // 0002 GETMBR R4 R1 K2
+ 0x78120001, // 0003 JMPF R4 #0006
+ 0x88100302, // 0004 GETMBR R4 R1 K2
+ 0x70020001, // 0005 JMP #0008
+ 0x88100100, // 0006 GETMBR R4 R0 K0
+ 0x88100903, // 0007 GETMBR R4 R4 K3
+ 0x88140304, // 0008 GETMBR R5 R1 K4
+ 0x78160001, // 0009 JMPF R5 #000C
+ 0x88140304, // 000A GETMBR R5 R1 K4
+ 0x70020001, // 000B JMP #000E
+ 0x88140100, // 000C GETMBR R5 R0 K0
+ 0x88140B05, // 000D GETMBR R5 R5 K5
+ 0x88180306, // 000E GETMBR R6 R1 K6
+ 0x7C080800, // 000F CALL R2 4
+ 0x780A000E, // 0010 JMPF R2 #0020
+ 0xB80E0E00, // 0011 GETNGBL R3 K7
+ 0x8C0C0708, // 0012 GETMET R3 R3 K8
+ 0x54160003, // 0013 LDINT R5 4
+ 0x7C0C0400, // 0014 CALL R3 2
+ 0x780E0008, // 0015 JMPF R3 #001F
+ 0xB80E0E00, // 0016 GETNGBL R3 K7
+ 0x8C0C0709, // 0017 GETMET R3 R3 K9
+ 0x60140018, // 0018 GETGBL R5 G24
+ 0x5818000A, // 0019 LDCONST R6 K10
+ 0x881C0302, // 001A GETMBR R7 R1 K2
+ 0x88200304, // 001B GETMBR R8 R1 K4
+ 0x7C140600, // 001C CALL R5 3
+ 0x541A0003, // 001D LDINT R6 4
+ 0x7C0C0600, // 001E CALL R3 3
+ 0x7002000D, // 001F JMP #002E
+ 0xB80E0E00, // 0020 GETNGBL R3 K7
+ 0x8C0C0708, // 0021 GETMET R3 R3 K8
+ 0x5814000B, // 0022 LDCONST R5 K11
+ 0x7C0C0400, // 0023 CALL R3 2
+ 0x780E0008, // 0024 JMPF R3 #002E
+ 0xB80E0E00, // 0025 GETNGBL R3 K7
+ 0x8C0C0709, // 0026 GETMET R3 R3 K9
+ 0x60140018, // 0027 GETGBL R5 G24
+ 0x5818000C, // 0028 LDCONST R6 K12
+ 0x881C0302, // 0029 GETMBR R7 R1 K2
+ 0x88200304, // 002A GETMBR R8 R1 K4
+ 0x7C140600, // 002B CALL R5 3
+ 0x5818000B, // 002C LDCONST R6 K11
+ 0x7C0C0600, // 002D CALL R3 3
+ 0x80040400, // 002E RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: stop
+********************************************************************/
+be_local_closure(Matter_UDPServer_stop, /* name */
+ be_nested_proto(
+ 4, /* nstack */
1, /* argc */
- 4, /* varg */
+ 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(listening),
+ /* K1 */ be_nested_str_weak(udp_socket),
+ /* K2 */ be_nested_str_weak(stop),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(remove_fast_loop),
+ /* K5 */ be_nested_str_weak(loop_cb),
+ }),
+ be_str_weak(stop),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060008, // 0001 JMPF R1 #000B
+ 0x88040101, // 0002 GETMBR R1 R0 K1
+ 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x7C040200, // 0004 CALL R1 1
+ 0x50040000, // 0005 LDBOOL R1 0 0
+ 0x90020001, // 0006 SETMBR R0 K0 R1
+ 0xB8060600, // 0007 GETNGBL R1 K3
+ 0x8C040304, // 0008 GETMET R1 R1 K4
+ 0x880C0105, // 0009 GETMBR R3 R0 K5
+ 0x7C040400, // 000A CALL R1 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_UDPServer_init, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
( &(const struct bproto*[ 1]) {
be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
+ 2, /* nstack */
+ 0, /* argc */
0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
+ 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[ 2]) { /* constants */
- /* K0 */ be_const_int(1),
- /* K1 */ be_const_int(0),
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(loop),
}),
- be_str_weak(power_int),
+ be_str_weak(_anonymous_),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x240C0301, // 0001 GT R3 R1 K1
- 0x780E0002, // 0002 JMPF R3 #0006
- 0x08080400, // 0003 MUL R2 R2 R0
- 0x04040300, // 0004 SUB R1 R1 K0
- 0x7001FFFA, // 0005 JMP #0001
- 0x80040400, // 0006 RET 1 R2
+ ( &(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[ 8]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_UDPServer),
- /* K1 */ be_nested_str_weak(math),
- /* K2 */ be_nested_str_weak(rand),
- /* K3 */ be_const_int(0),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_real_hex(0x3FCCCCCD),
- /* K6 */ be_const_real_hex(0x3F800000),
- /* K7 */ be_const_real_hex(0x3E800000),
+ ( &(const bvalue[ 7]) { /* constants */
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(addr),
+ /* K2 */ be_nested_str_weak(),
+ /* K3 */ be_nested_str_weak(port),
+ /* K4 */ be_nested_str_weak(listening),
+ /* K5 */ be_nested_str_weak(packets_sent),
+ /* K6 */ be_nested_str_weak(loop_cb),
}),
- be_str_weak(_backoff_time),
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[29]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x84080000, // 0001 CLOSURE R2 P0
- 0xA40E0200, // 0002 IMPORT R3 K1
- 0x5412012B, // 0003 LDINT R4 300
- 0x6014000A, // 0004 GETGBL R5 G10
- 0x8C180702, // 0005 GETMET R6 R3 K2
- 0x7C180200, // 0006 CALL R6 1
- 0x541E00FE, // 0007 LDINT R7 255
- 0x2C180C07, // 0008 AND R6 R6 R7
- 0x7C140200, // 0009 CALL R5 1
- 0x541A00FE, // 000A LDINT R6 255
- 0x0C140A06, // 000B DIV R5 R5 R6
- 0x24180103, // 000C GT R6 R0 K3
- 0x781A0001, // 000D JMPF R6 #0010
- 0x04180104, // 000E SUB R6 R0 K4
- 0x70020000, // 000F JMP #0011
- 0x58180003, // 0010 LDCONST R6 K3
- 0x5C1C0400, // 0011 MOVE R7 R2
- 0x58200005, // 0012 LDCONST R8 K5
- 0x5C240C00, // 0013 MOVE R9 R6
- 0x7C1C0400, // 0014 CALL R7 2
- 0x081C0807, // 0015 MUL R7 R4 R7
- 0x08200B07, // 0016 MUL R8 R5 K7
- 0x00220C08, // 0017 ADD R8 K6 R8
- 0x081C0E08, // 0018 MUL R7 R7 R8
- 0x60200009, // 0019 GETGBL R8 G9
- 0x5C240E00, // 001A MOVE R9 R7
- 0x7C200200, // 001B CALL R8 1
- 0x80041000, // 001C RET 1 R8
+ ( &(const binstruction[20]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x780A0001, // 0001 JMPF R2 #0004
+ 0x5C100400, // 0002 MOVE R4 R2
+ 0x70020000, // 0003 JMP #0005
+ 0x58100002, // 0004 LDCONST R4 K2
+ 0x90020204, // 0005 SETMBR R0 K1 R4
+ 0x780E0001, // 0006 JMPF R3 #0009
+ 0x5C100600, // 0007 MOVE R4 R3
+ 0x70020000, // 0008 JMP #000A
+ 0x541215A3, // 0009 LDINT R4 5540
+ 0x90020604, // 000A SETMBR R0 K3 R4
+ 0x50100000, // 000B LDBOOL R4 0 0
+ 0x90020804, // 000C SETMBR R0 K4 R4
+ 0x60100012, // 000D GETGBL R4 G18
+ 0x7C100000, // 000E CALL R4 0
+ 0x90020A04, // 000F SETMBR R0 K5 R4
+ 0x84100000, // 0010 CLOSURE R4 P0
+ 0x90020C04, // 0011 SETMBR R0 K6 R4
+ 0xA0000000, // 0012 CLOSE R0
+ 0x80000000, // 0013 RET 0
})
)
);
@@ -310,6 +629,200 @@ be_local_closure(Matter_UDPServer__resend_packets, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: _backoff_time
+********************************************************************/
+be_local_closure(Matter_UDPServer__backoff_time, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 4, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 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_const_int(1),
+ /* K1 */ be_const_int(0),
+ }),
+ be_str_weak(power_int),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0x240C0301, // 0001 GT R3 R1 K1
+ 0x780E0002, // 0002 JMPF R3 #0006
+ 0x08080400, // 0003 MUL R2 R2 R0
+ 0x04040300, // 0004 SUB R1 R1 K0
+ 0x7001FFFA, // 0005 JMP #0001
+ 0x80040400, // 0006 RET 1 R2
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_const_class(be_class_Matter_UDPServer),
+ /* K1 */ be_nested_str_weak(math),
+ /* K2 */ be_nested_str_weak(rand),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_const_real_hex(0x3FCCCCCD),
+ /* K6 */ be_const_real_hex(0x3F800000),
+ /* K7 */ be_const_real_hex(0x3E800000),
+ }),
+ be_str_weak(_backoff_time),
+ &be_const_str_solidified,
+ ( &(const binstruction[29]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x84080000, // 0001 CLOSURE R2 P0
+ 0xA40E0200, // 0002 IMPORT R3 K1
+ 0x5412012B, // 0003 LDINT R4 300
+ 0x6014000A, // 0004 GETGBL R5 G10
+ 0x8C180702, // 0005 GETMET R6 R3 K2
+ 0x7C180200, // 0006 CALL R6 1
+ 0x541E00FE, // 0007 LDINT R7 255
+ 0x2C180C07, // 0008 AND R6 R6 R7
+ 0x7C140200, // 0009 CALL R5 1
+ 0x541A00FE, // 000A LDINT R6 255
+ 0x0C140A06, // 000B DIV R5 R5 R6
+ 0x24180103, // 000C GT R6 R0 K3
+ 0x781A0001, // 000D JMPF R6 #0010
+ 0x04180104, // 000E SUB R6 R0 K4
+ 0x70020000, // 000F JMP #0011
+ 0x58180003, // 0010 LDCONST R6 K3
+ 0x5C1C0400, // 0011 MOVE R7 R2
+ 0x58200005, // 0012 LDCONST R8 K5
+ 0x5C240C00, // 0013 MOVE R9 R6
+ 0x7C1C0400, // 0014 CALL R7 2
+ 0x081C0807, // 0015 MUL R7 R4 R7
+ 0x08200B07, // 0016 MUL R8 R5 K7
+ 0x00220C08, // 0017 ADD R8 K6 R8
+ 0x081C0E08, // 0018 MUL R7 R7 R8
+ 0x60200009, // 0019 GETGBL R8 G9
+ 0x5C240E00, // 001A MOVE R9 R7
+ 0x7C200200, // 001B CALL R8 1
+ 0x80041000, // 001C RET 1 R8
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: loop
+********************************************************************/
+be_local_closure(Matter_UDPServer_loop, /* 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[20]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(profiler),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(udp_socket),
+ /* K4 */ be_nested_str_weak(read),
+ /* K5 */ be_nested_str_weak(packet),
+ /* K6 */ be_nested_str_weak(start),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str_weak(remote_ip),
+ /* K9 */ be_nested_str_weak(remote_port),
+ /* K10 */ be_nested_str_weak(tasmota),
+ /* K11 */ be_nested_str_weak(loglevel),
+ /* K12 */ be_nested_str_weak(log),
+ /* K13 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K14 */ be_nested_str_weak(dispatch_cb),
+ /* K15 */ be_nested_str_weak(udp_loop_dispatch),
+ /* K16 */ be_nested_str_weak(dump),
+ /* K17 */ be_const_int(2),
+ /* K18 */ be_nested_str_weak(MAX_PACKETS_READ),
+ /* K19 */ be_nested_str_weak(_resend_packets),
+ }),
+ be_str_weak(loop),
+ &be_const_str_solidified,
+ ( &(const binstruction[63]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x58080002, // 0002 LDCONST R2 K2
+ 0x880C0103, // 0003 GETMBR R3 R0 K3
+ 0x4C100000, // 0004 LDNIL R4
+ 0x1C0C0604, // 0005 EQ R3 R3 R4
+ 0x780E0000, // 0006 JMPF R3 #0008
+ 0x80000600, // 0007 RET 0
+ 0x880C0103, // 0008 GETMBR R3 R0 K3
+ 0x8C0C0704, // 0009 GETMET R3 R3 K4
+ 0x88140105, // 000A GETMBR R5 R0 K5
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x4C100000, // 000C LDNIL R4
+ 0x20100604, // 000D NE R4 R3 R4
+ 0x7812002C, // 000E JMPF R4 #003C
+ 0x8C100306, // 000F GETMET R4 R1 K6
+ 0x7C100200, // 0010 CALL R4 1
+ 0x90020A03, // 0011 SETMBR R0 K5 R3
+ 0x00080507, // 0012 ADD R2 R2 K7
+ 0x88100103, // 0013 GETMBR R4 R0 K3
+ 0x88100908, // 0014 GETMBR R4 R4 K8
+ 0x88140103, // 0015 GETMBR R5 R0 K3
+ 0x88140B09, // 0016 GETMBR R5 R5 K9
+ 0xB81A1400, // 0017 GETNGBL R6 K10
+ 0x8C180D0B, // 0018 GETMET R6 R6 K11
+ 0x54220003, // 0019 LDINT R8 4
+ 0x7C180400, // 001A CALL R6 2
+ 0x781A0008, // 001B JMPF R6 #0025
+ 0xB81A1400, // 001C GETNGBL R6 K10
+ 0x8C180D0C, // 001D GETMET R6 R6 K12
+ 0x60200018, // 001E GETGBL R8 G24
+ 0x5824000D, // 001F LDCONST R9 K13
+ 0x5C280800, // 0020 MOVE R10 R4
+ 0x5C2C0A00, // 0021 MOVE R11 R5
+ 0x7C200600, // 0022 CALL R8 3
+ 0x54260003, // 0023 LDINT R9 4
+ 0x7C180600, // 0024 CALL R6 3
+ 0x8818010E, // 0025 GETMBR R6 R0 K14
+ 0x781A0007, // 0026 JMPF R6 #002F
+ 0x8C18030C, // 0027 GETMET R6 R1 K12
+ 0x5820000F, // 0028 LDCONST R8 K15
+ 0x7C180400, // 0029 CALL R6 2
+ 0x8C18010E, // 002A GETMET R6 R0 K14
+ 0x5C200600, // 002B MOVE R8 R3
+ 0x5C240800, // 002C MOVE R9 R4
+ 0x5C280A00, // 002D MOVE R10 R5
+ 0x7C180800, // 002E CALL R6 4
+ 0x8C180310, // 002F GETMET R6 R1 K16
+ 0x58200011, // 0030 LDCONST R8 K17
+ 0x7C180400, // 0031 CALL R6 2
+ 0x88180112, // 0032 GETMBR R6 R0 K18
+ 0x14180406, // 0033 LT R6 R2 R6
+ 0x781A0004, // 0034 JMPF R6 #003A
+ 0x88180103, // 0035 GETMBR R6 R0 K3
+ 0x8C180D04, // 0036 GETMET R6 R6 K4
+ 0x7C180200, // 0037 CALL R6 1
+ 0x5C0C0C00, // 0038 MOVE R3 R6
+ 0x70020000, // 0039 JMP #003B
+ 0x4C0C0000, // 003A LDNIL R3
+ 0x7001FFCF, // 003B JMP #000C
+ 0x8C100113, // 003C GETMET R4 R0 K19
+ 0x7C100200, // 003D CALL R4 1
+ 0x80000000, // 003E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: every_second
********************************************************************/
@@ -334,443 +847,36 @@ be_local_closure(Matter_UDPServer_every_second, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: send_UDP
-********************************************************************/
-be_local_closure(Matter_UDPServer_send_UDP, /* 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[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(UDPPacket_sent),
- /* K2 */ be_nested_str_weak(send),
- /* K3 */ be_nested_str_weak(msg_id),
- /* K4 */ be_nested_str_weak(packets_sent),
- /* K5 */ be_nested_str_weak(push),
- }),
- be_str_weak(send_UDP),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x8C0C0102, // 0004 GETMET R3 R0 K2
- 0x5C140400, // 0005 MOVE R5 R2
- 0x7C0C0400, // 0006 CALL R3 2
- 0x880C0503, // 0007 GETMBR R3 R2 K3
- 0x780E0003, // 0008 JMPF R3 #000D
- 0x880C0104, // 0009 GETMBR R3 R0 K4
- 0x8C0C0705, // 000A GETMET R3 R3 K5
- 0x5C140400, // 000B MOVE R5 R2
- 0x7C0C0400, // 000C CALL R3 2
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_50ms
-********************************************************************/
-be_local_closure(Matter_UDPServer_every_50ms, /* 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[12]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(udp_socket),
- /* K2 */ be_nested_str_weak(read),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(remote_ip),
- /* K5 */ be_nested_str_weak(remote_port),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i),
- /* K9 */ be_nested_str_weak(dispatch_cb),
- /* K10 */ be_nested_str_weak(MAX_PACKETS_READ),
- /* K11 */ be_nested_str_weak(_resend_packets),
- }),
- be_str_weak(every_50ms),
- &be_const_str_solidified,
- ( &(const binstruction[46]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x4C0C0000, // 0002 LDNIL R3
- 0x1C080403, // 0003 EQ R2 R2 R3
- 0x780A0000, // 0004 JMPF R2 #0006
- 0x80000400, // 0005 RET 0
- 0x88080101, // 0006 GETMBR R2 R0 K1
- 0x8C080502, // 0007 GETMET R2 R2 K2
- 0x7C080200, // 0008 CALL R2 1
- 0x4C0C0000, // 0009 LDNIL R3
- 0x200C0403, // 000A NE R3 R2 R3
- 0x780E001E, // 000B JMPF R3 #002B
- 0x00040303, // 000C ADD R1 R1 K3
- 0x880C0101, // 000D GETMBR R3 R0 K1
- 0x880C0704, // 000E GETMBR R3 R3 K4
- 0x88100101, // 000F GETMBR R4 R0 K1
- 0x88100905, // 0010 GETMBR R4 R4 K5
- 0xB8160C00, // 0011 GETNGBL R5 K6
- 0x8C140B07, // 0012 GETMET R5 R5 K7
- 0x601C0018, // 0013 GETGBL R7 G24
- 0x58200008, // 0014 LDCONST R8 K8
- 0x5C240600, // 0015 MOVE R9 R3
- 0x5C280800, // 0016 MOVE R10 R4
- 0x7C1C0600, // 0017 CALL R7 3
- 0x54220003, // 0018 LDINT R8 4
- 0x7C140600, // 0019 CALL R5 3
- 0x88140109, // 001A GETMBR R5 R0 K9
- 0x78160004, // 001B JMPF R5 #0021
- 0x8C140109, // 001C GETMET R5 R0 K9
- 0x5C1C0400, // 001D MOVE R7 R2
- 0x5C200600, // 001E MOVE R8 R3
- 0x5C240800, // 001F MOVE R9 R4
- 0x7C140800, // 0020 CALL R5 4
- 0x8814010A, // 0021 GETMBR R5 R0 K10
- 0x14140205, // 0022 LT R5 R1 R5
- 0x78160004, // 0023 JMPF R5 #0029
- 0x88140101, // 0024 GETMBR R5 R0 K1
- 0x8C140B02, // 0025 GETMET R5 R5 K2
- 0x7C140200, // 0026 CALL R5 1
- 0x5C080A00, // 0027 MOVE R2 R5
- 0x70020000, // 0028 JMP #002A
- 0x4C080000, // 0029 LDNIL R2
- 0x7001FFDD, // 002A JMP #0009
- 0x8C0C010B, // 002B GETMET R3 R0 K11
- 0x7C0C0200, // 002C CALL R3 1
- 0x80000000, // 002D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: stop
-********************************************************************/
-be_local_closure(Matter_UDPServer_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[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(listening),
- /* K1 */ be_nested_str_weak(udp_socket),
- /* K2 */ be_nested_str_weak(stop),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(remove_driver),
- }),
- be_str_weak(stop),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060008, // 0001 JMPF R1 #000B
- 0x88040101, // 0002 GETMBR R1 R0 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
- 0x7C040200, // 0004 CALL R1 1
- 0x50040000, // 0005 LDBOOL R1 0 0
- 0x90020001, // 0006 SETMBR R0 K0 R1
- 0xB8060600, // 0007 GETNGBL R1 K3
- 0x8C040304, // 0008 GETMET R1 R1 K4
- 0x5C0C0000, // 0009 MOVE R3 R0
- 0x7C040400, // 000A CALL R1 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start
-********************************************************************/
-be_local_closure(Matter_UDPServer_start, /* 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[11]) { /* constants */
- /* K0 */ be_nested_str_weak(listening),
- /* K1 */ be_nested_str_weak(udp_socket),
- /* K2 */ be_nested_str_weak(udp),
- /* K3 */ be_nested_str_weak(begin),
- /* K4 */ be_nested_str_weak(addr),
- /* K5 */ be_nested_str_weak(port),
- /* K6 */ be_nested_str_weak(network_error),
- /* K7 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server),
- /* K8 */ be_nested_str_weak(dispatch_cb),
- /* K9 */ be_nested_str_weak(tasmota),
- /* K10 */ be_nested_str_weak(add_driver),
- }),
- be_str_weak(start),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0011, // 0001 JMPT R2 #0014
- 0xB80A0400, // 0002 GETNGBL R2 K2
- 0x7C080000, // 0003 CALL R2 0
- 0x90020202, // 0004 SETMBR R0 K1 R2
- 0x88080101, // 0005 GETMBR R2 R0 K1
- 0x8C080503, // 0006 GETMET R2 R2 K3
- 0x88100104, // 0007 GETMBR R4 R0 K4
- 0x88140105, // 0008 GETMBR R5 R0 K5
- 0x7C080600, // 0009 CALL R2 3
- 0x5C0C0400, // 000A MOVE R3 R2
- 0x740E0000, // 000B JMPT R3 #000D
- 0xB0060D07, // 000C RAISE 1 K6 K7
- 0x500C0200, // 000D LDBOOL R3 1 0
- 0x90020003, // 000E SETMBR R0 K0 R3
- 0x90021001, // 000F SETMBR R0 K8 R1
- 0xB80E1200, // 0010 GETNGBL R3 K9
- 0x8C0C070A, // 0011 GETMET R3 R3 K10
- 0x5C140000, // 0012 MOVE R5 R0
- 0x7C0C0400, // 0013 CALL R3 2
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: received_ack
-********************************************************************/
-be_local_closure(Matter_UDPServer_received_ack, /* 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[10]) { /* constants */
- /* K0 */ be_nested_str_weak(ack_message_counter),
- /* K1 */ be_nested_str_weak(exchange_id),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(packets_sent),
- /* K4 */ be_nested_str_weak(msg_id),
- /* K5 */ be_nested_str_weak(remove),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D),
- /* K9 */ be_const_int(1),
- }),
- be_str_weak(received_ack),
- &be_const_str_solidified,
- ( &(const binstruction[36]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x4C100000, // 0002 LDNIL R4
- 0x1C100404, // 0003 EQ R4 R2 R4
- 0x78120000, // 0004 JMPF R4 #0006
- 0x80000800, // 0005 RET 0
- 0x58100002, // 0006 LDCONST R4 K2
- 0x6014000C, // 0007 GETGBL R5 G12
- 0x88180103, // 0008 GETMBR R6 R0 K3
- 0x7C140200, // 0009 CALL R5 1
- 0x14140805, // 000A LT R5 R4 R5
- 0x78160016, // 000B JMPF R5 #0023
- 0x88140103, // 000C GETMBR R5 R0 K3
- 0x94140A04, // 000D GETIDX R5 R5 R4
- 0x88180B04, // 000E GETMBR R6 R5 K4
- 0x1C180C02, // 000F EQ R6 R6 R2
- 0x781A000F, // 0010 JMPF R6 #0021
- 0x88180B01, // 0011 GETMBR R6 R5 K1
- 0x1C180C03, // 0012 EQ R6 R6 R3
- 0x781A000C, // 0013 JMPF R6 #0021
- 0x88180103, // 0014 GETMBR R6 R0 K3
- 0x8C180D05, // 0015 GETMET R6 R6 K5
- 0x5C200800, // 0016 MOVE R8 R4
- 0x7C180400, // 0017 CALL R6 2
- 0xB81A0C00, // 0018 GETNGBL R6 K6
- 0x8C180D07, // 0019 GETMET R6 R6 K7
- 0x60200008, // 001A GETGBL R8 G8
- 0x5C240400, // 001B MOVE R9 R2
- 0x7C200200, // 001C CALL R8 1
- 0x00221008, // 001D ADD R8 K8 R8
- 0x54260003, // 001E LDINT R9 4
- 0x7C180600, // 001F CALL R6 3
- 0x70020000, // 0020 JMP #0022
- 0x00100909, // 0021 ADD R4 R4 K9
- 0x7001FFE3, // 0022 JMP #0007
- 0x80000000, // 0023 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_UDPServer_init, /* name */
- be_nested_proto(
- 4, /* 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(addr),
- /* K1 */ be_nested_str_weak(),
- /* K2 */ be_nested_str_weak(port),
- /* K3 */ be_nested_str_weak(listening),
- /* K4 */ be_nested_str_weak(packets_sent),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
- 0x78060001, // 0000 JMPF R1 #0003
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x70020000, // 0002 JMP #0004
- 0x580C0001, // 0003 LDCONST R3 K1
- 0x90020003, // 0004 SETMBR R0 K0 R3
- 0x780A0001, // 0005 JMPF R2 #0008
- 0x5C0C0400, // 0006 MOVE R3 R2
- 0x70020000, // 0007 JMP #0009
- 0x540E15A3, // 0008 LDINT R3 5540
- 0x90020403, // 0009 SETMBR R0 K2 R3
- 0x500C0000, // 000A LDBOOL R3 0 0
- 0x90020603, // 000B SETMBR R0 K3 R3
- 0x600C0012, // 000C GETGBL R3 G18
- 0x7C0C0000, // 000D CALL R3 0
- 0x90020803, // 000E SETMBR R0 K4 R3
- 0x80000000, // 000F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send
-********************************************************************/
-be_local_closure(Matter_UDPServer_send, /* 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[12]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_socket),
- /* K1 */ be_nested_str_weak(send),
- /* K2 */ be_nested_str_weak(addr),
- /* K3 */ be_nested_str_weak(remote_ip),
- /* K4 */ be_nested_str_weak(port),
- /* K5 */ be_nested_str_weak(remote_port),
- /* K6 */ be_nested_str_weak(raw),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
- /* K11 */ be_const_int(3),
- }),
- be_str_weak(send),
- &be_const_str_solidified,
- ( &(const binstruction[37]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
- 0x78120001, // 0003 JMPF R4 #0006
- 0x88100302, // 0004 GETMBR R4 R1 K2
- 0x70020001, // 0005 JMP #0008
- 0x88100100, // 0006 GETMBR R4 R0 K0
- 0x88100903, // 0007 GETMBR R4 R4 K3
- 0x88140304, // 0008 GETMBR R5 R1 K4
- 0x78160001, // 0009 JMPF R5 #000C
- 0x88140304, // 000A GETMBR R5 R1 K4
- 0x70020001, // 000B JMP #000E
- 0x88140100, // 000C GETMBR R5 R0 K0
- 0x88140B05, // 000D GETMBR R5 R5 K5
- 0x88180306, // 000E GETMBR R6 R1 K6
- 0x7C080800, // 000F CALL R2 4
- 0x780A0009, // 0010 JMPF R2 #001B
- 0xB80E0E00, // 0011 GETNGBL R3 K7
- 0x8C0C0708, // 0012 GETMET R3 R3 K8
- 0x60140018, // 0013 GETGBL R5 G24
- 0x58180009, // 0014 LDCONST R6 K9
- 0x881C0302, // 0015 GETMBR R7 R1 K2
- 0x88200304, // 0016 GETMBR R8 R1 K4
- 0x7C140600, // 0017 CALL R5 3
- 0x541A0003, // 0018 LDINT R6 4
- 0x7C0C0600, // 0019 CALL R3 3
- 0x70020008, // 001A JMP #0024
- 0xB80E0E00, // 001B GETNGBL R3 K7
- 0x8C0C0708, // 001C GETMET R3 R3 K8
- 0x60140018, // 001D GETGBL R5 G24
- 0x5818000A, // 001E LDCONST R6 K10
- 0x881C0302, // 001F GETMBR R7 R1 K2
- 0x88200304, // 0020 GETMBR R8 R1 K4
- 0x7C140600, // 0021 CALL R5 3
- 0x5818000B, // 0022 LDCONST R6 K11
- 0x7C0C0600, // 0023 CALL R3 3
- 0x80040400, // 0024 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_UDPServer
********************************************************************/
be_local_class(Matter_UDPServer,
- 6,
+ 9,
NULL,
- be_nested_map(18,
+ be_nested_map(22,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(_backoff_time, 17), be_const_static_closure(Matter_UDPServer__backoff_time_closure) },
- { be_const_key_weak(packets_sent, -1), be_const_var(5) },
- { be_const_key_weak(addr, -1), be_const_var(0) },
- { be_const_key_weak(every_second, -1), be_const_closure(Matter_UDPServer_every_second_closure) },
- { be_const_key_weak(port, -1), be_const_var(1) },
- { be_const_key_weak(dispatch_cb, 1), be_const_var(4) },
- { be_const_key_weak(udp_socket, -1), be_const_var(3) },
- { be_const_key_weak(send_UDP, -1), be_const_closure(Matter_UDPServer_send_UDP_closure) },
{ be_const_key_weak(every_50ms, -1), be_const_closure(Matter_UDPServer_every_50ms_closure) },
- { be_const_key_weak(send, 10), be_const_closure(Matter_UDPServer_send_closure) },
- { be_const_key_weak(RETRIES, -1), be_const_int(5) },
- { be_const_key_weak(stop, 16), be_const_closure(Matter_UDPServer_stop_closure) },
+ { be_const_key_weak(send_UDP, -1), be_const_closure(Matter_UDPServer_send_UDP_closure) },
{ be_const_key_weak(received_ack, -1), be_const_closure(Matter_UDPServer_received_ack_closure) },
- { be_const_key_weak(_resend_packets, 9), be_const_closure(Matter_UDPServer__resend_packets_closure) },
- { be_const_key_weak(MAX_PACKETS_READ, -1), be_const_int(4) },
+ { be_const_key_weak(every_second, -1), be_const_closure(Matter_UDPServer_every_second_closure) },
+ { be_const_key_weak(stop, 18), be_const_closure(Matter_UDPServer_stop_closure) },
+ { be_const_key_weak(start, 4), be_const_closure(Matter_UDPServer_start_closure) },
+ { be_const_key_weak(listening, -1), be_const_var(3) },
+ { be_const_key_weak(send, -1), be_const_closure(Matter_UDPServer_send_closure) },
+ { be_const_key_weak(loop, -1), be_const_closure(Matter_UDPServer_loop_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_UDPServer_init_closure) },
- { be_const_key_weak(start, -1), be_const_closure(Matter_UDPServer_start_closure) },
- { be_const_key_weak(listening, -1), be_const_var(2) },
+ { be_const_key_weak(udp_socket, 6), be_const_var(4) },
+ { be_const_key_weak(packet, -1), be_const_var(8) },
+ { be_const_key_weak(_backoff_time, -1), be_const_static_closure(Matter_UDPServer__backoff_time_closure) },
+ { be_const_key_weak(_resend_packets, -1), be_const_closure(Matter_UDPServer__resend_packets_closure) },
+ { be_const_key_weak(addr, -1), be_const_var(0) },
+ { be_const_key_weak(dispatch_cb, 8), be_const_var(5) },
+ { be_const_key_weak(port, 12), be_const_var(1) },
+ { be_const_key_weak(packets_sent, -1), be_const_var(6) },
+ { be_const_key_weak(device, -1), be_const_var(2) },
+ { be_const_key_weak(loop_cb, -1), be_const_var(7) },
+ { be_const_key_weak(MAX_PACKETS_READ, -1), be_const_int(4) },
+ { be_const_key_weak(RETRIES, 3), be_const_int(5) },
})),
be_str_weak(Matter_UDPServer)
);
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 2dde4ed2b..5e5fa2cd1 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
@@ -2182,60 +2182,60 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[99]) { /* constants */
+ ( &(const bvalue[100]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(check_privileged_access),
/* K2 */ be_nested_str_weak(string),
/* K3 */ be_nested_str_weak(partition_core),
/* K4 */ be_nested_str_weak(persist),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(arg_size),
- /* K7 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(has_arg),
+ /* K6 */ be_nested_str_weak(passcode),
+ /* K7 */ be_nested_str_weak(discriminator),
/* K8 */ be_nested_str_weak(tasmota),
/* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20Arg_X25i_X20_X27_X25s_X27_X20_X3D_X20_X27_X25s_X27),
- /* K11 */ be_nested_str_weak(arg_name),
- /* K12 */ be_nested_str_weak(arg),
- /* K13 */ be_nested_str_weak(stop_iteration),
- /* K14 */ be_nested_str_weak(has_arg),
- /* K15 */ be_nested_str_weak(passcode),
- /* K16 */ be_nested_str_weak(discriminator),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20_X2Fmatterc_X20received_X20_X27_X25s_X27_X20command),
- /* K18 */ be_const_int(3),
- /* K19 */ be_nested_str_weak(device),
- /* K20 */ be_nested_str_weak(root_passcode),
- /* K21 */ be_nested_str_weak(root_discriminator),
- /* K22 */ be_nested_str_weak(ipv4only),
- /* K23 */ be_nested_str_weak(ipv4),
- /* K24 */ be_nested_str_weak(on),
- /* K25 */ be_nested_str_weak(save_param),
- /* K26 */ be_nested_str_weak(redirect),
- /* K27 */ be_nested_str_weak(_X2F_X3Frst_X3D),
- /* K28 */ be_nested_str_weak(save),
- /* K29 */ be_nested_str_weak(menable),
- /* K30 */ be_nested_str_weak(comm),
- /* K31 */ be_nested_str_weak(matter_enabled),
- /* K32 */ be_nested_str_weak(enable),
- /* K33 */ be_nested_str_weak(cmd),
- /* K34 */ be_nested_str_weak(SetOption),
- /* K35 */ be_nested_str_weak(matter),
- /* K36 */ be_nested_str_weak(MATTER_OPTION),
- /* K37 */ be_nested_str_weak(_X201),
- /* K38 */ be_nested_str_weak(disable),
- /* K39 */ be_nested_str_weak(_X200),
- /* K40 */ be_nested_str_weak(commissioning_open),
- /* K41 */ be_nested_str_weak(start_root_basic_commissioning),
- /* K42 */ be_nested_str_weak(stop_basic_commissioning),
- /* K43 */ be_nested_str_weak(_X2F),
- /* K44 */ be_nested_str_weak(del_fabric),
- /* K45 */ be_nested_str_weak(sessions),
- /* K46 */ be_nested_str_weak(fabrics),
- /* K47 */ be_nested_str_weak(get_fabric_index),
- /* K48 */ be_nested_str_weak(remove_fabric),
- /* K49 */ be_nested_str_weak(_X2Fmatterc_X3F),
- /* K50 */ be_nested_str_weak(auto),
- /* K51 */ be_nested_str_weak(plugins_persist),
- /* K52 */ be_nested_str_weak(config),
+ /* K10 */ be_nested_str_weak(MTR_X3A_X20_X2Fmatterc_X20received_X20_X27_X25s_X27_X20command),
+ /* K11 */ be_const_int(3),
+ /* K12 */ be_nested_str_weak(device),
+ /* K13 */ be_nested_str_weak(root_passcode),
+ /* K14 */ be_nested_str_weak(arg),
+ /* K15 */ be_nested_str_weak(root_discriminator),
+ /* K16 */ be_nested_str_weak(ipv4only),
+ /* K17 */ be_nested_str_weak(ipv4),
+ /* K18 */ be_nested_str_weak(on),
+ /* K19 */ be_nested_str_weak(save_param),
+ /* K20 */ be_nested_str_weak(redirect),
+ /* K21 */ be_nested_str_weak(_X2F_X3Frst_X3D),
+ /* K22 */ be_nested_str_weak(save),
+ /* K23 */ be_nested_str_weak(menable),
+ /* K24 */ be_nested_str_weak(comm),
+ /* K25 */ be_nested_str_weak(nobridge),
+ /* K26 */ be_nested_str_weak(disable_bridge_mode),
+ /* K27 */ be_nested_str_weak(matter_enabled),
+ /* K28 */ be_nested_str_weak(enable),
+ /* K29 */ be_nested_str_weak(cmd),
+ /* K30 */ be_nested_str_weak(SetOption),
+ /* K31 */ be_nested_str_weak(matter),
+ /* K32 */ be_nested_str_weak(MATTER_OPTION),
+ /* K33 */ be_nested_str_weak(_X201),
+ /* K34 */ be_nested_str_weak(disable),
+ /* K35 */ be_nested_str_weak(_X200),
+ /* K36 */ be_nested_str_weak(commissioning_open),
+ /* K37 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K38 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K39 */ be_nested_str_weak(_X2F),
+ /* K40 */ be_nested_str_weak(del_fabric),
+ /* K41 */ be_const_int(0),
+ /* K42 */ be_nested_str_weak(sessions),
+ /* K43 */ be_nested_str_weak(fabrics),
+ /* 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),
+ /* K48 */ be_nested_str_weak(auto),
+ /* K49 */ be_nested_str_weak(plugins_persist),
+ /* K50 */ be_nested_str_weak(config),
+ /* K51 */ be_nested_str_weak(arg_size),
+ /* K52 */ be_nested_str_weak(arg_name),
/* K53 */ be_nested_str_weak(find),
/* K54 */ be_const_int(2147483647),
/* K55 */ be_nested_str_weak(plugins_config),
@@ -2256,36 +2256,37 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
/* K70 */ be_nested_str_weak(set_name),
/* K71 */ be_nested_str_weak(remove),
/* K72 */ be_nested_str_weak(MTR_X3A_X20apply_X20name_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s),
- /* K73 */ be_nested_str_weak(MTR_X3A_X20config_X20_X3D_X20_X25s),
- /* K74 */ be_nested_str_weak(MTR_X3A_X20config_X20error_X20_X3D_X20_X25s),
- /* K75 */ be_nested_str_weak(addep),
- /* K76 */ be_nested_str_weak(pi),
- /* K77 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
- /* K78 */ be_nested_str_weak(bridge_add_endpoint),
- /* K79 */ be_nested_str_weak(addrem),
- /* K80 */ be_nested_str_weak(url),
- /* K81 */ be_nested_str_weak(value_error),
- /* K82 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null),
- /* K83 */ be_nested_str_weak(equal_map),
- /* K84 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
- /* K85 */ be_nested_str_weak(del),
- /* K86 */ be_nested_str_weak(bridge_remove_endpoint),
- /* K87 */ be_nested_str_weak(content_start),
- /* K88 */ be_nested_str_weak(Parameter_X20error),
- /* K89 */ be_nested_str_weak(content_send_style),
- /* K90 */ be_nested_str_weak(content_send),
- /* K91 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E),
- /* K92 */ be_nested_str_weak(html_escape),
- /* K93 */ be_nested_str_weak(content_button),
- /* K94 */ be_nested_str_weak(BUTTON_CONFIGURATION),
- /* K95 */ be_nested_str_weak(content_stop),
- /* K96 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K97 */ be_const_int(2),
- /* K98 */ 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),
+ /* 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),
}),
be_str_weak(page_part_ctl),
&be_const_str_solidified,
- ( &(const binstruction[688]) { /* code */
+ ( &(const binstruction[675]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1
0x7C080200, // 0002 CALL R2 1
@@ -2296,684 +2297,671 @@ be_local_closure(Matter_UI_page_part_ctl, /* name */
0xA40E0600, // 0007 IMPORT R3 K3
0xA4120800, // 0008 IMPORT R4 K4
0x4C140000, // 0009 LDNIL R5
- 0xA8020285, // 000A EXBLK 0 #0291
- 0x60180010, // 000B GETGBL R6 G16
- 0x8C1C0306, // 000C GETMET R7 R1 K6
- 0x7C1C0200, // 000D CALL R7 1
- 0x041C0F07, // 000E SUB R7 R7 K7
- 0x401E0A07, // 000F CONNECT R7 K5 R7
- 0x7C180200, // 0010 CALL R6 1
- 0xA802000F, // 0011 EXBLK 0 #0022
- 0x5C1C0C00, // 0012 MOVE R7 R6
- 0x7C1C0000, // 0013 CALL R7 0
- 0xB8221000, // 0014 GETNGBL R8 K8
- 0x8C201109, // 0015 GETMET R8 R8 K9
- 0x60280018, // 0016 GETGBL R10 G24
- 0x582C000A, // 0017 LDCONST R11 K10
- 0x5C300E00, // 0018 MOVE R12 R7
- 0x8C34030B, // 0019 GETMET R13 R1 K11
- 0x5C3C0E00, // 001A MOVE R15 R7
- 0x7C340400, // 001B CALL R13 2
- 0x8C38030C, // 001C GETMET R14 R1 K12
- 0x5C400E00, // 001D MOVE R16 R7
- 0x7C380400, // 001E CALL R14 2
- 0x7C280800, // 001F CALL R10 4
- 0x7C200400, // 0020 CALL R8 2
- 0x7001FFEF, // 0021 JMP #0012
- 0x5818000D, // 0022 LDCONST R6 K13
- 0xAC180200, // 0023 CATCH R6 1 0
- 0xB0080000, // 0024 RAISE 2 R0 R0
- 0x8C18030E, // 0025 GETMET R6 R1 K14
- 0x5820000F, // 0026 LDCONST R8 K15
- 0x7C180400, // 0027 CALL R6 2
- 0x741A0003, // 0028 JMPT R6 #002D
- 0x8C18030E, // 0029 GETMET R6 R1 K14
- 0x58200010, // 002A LDCONST R8 K16
- 0x7C180400, // 002B CALL R6 2
- 0x781A002A, // 002C JMPF R6 #0058
- 0xB81A1000, // 002D GETNGBL R6 K8
- 0x8C180D09, // 002E GETMET R6 R6 K9
- 0x60200018, // 002F GETGBL R8 G24
- 0x58240011, // 0030 LDCONST R9 K17
- 0x5828000F, // 0031 LDCONST R10 K15
- 0x7C200400, // 0032 CALL R8 2
- 0x58240012, // 0033 LDCONST R9 K18
- 0x7C180600, // 0034 CALL R6 3
- 0x8C18030E, // 0035 GETMET R6 R1 K14
- 0x5820000F, // 0036 LDCONST R8 K15
- 0x7C180400, // 0037 CALL R6 2
- 0x781A0006, // 0038 JMPF R6 #0040
- 0x88180113, // 0039 GETMBR R6 R0 K19
- 0x601C0009, // 003A GETGBL R7 G9
- 0x8C20030C, // 003B GETMET R8 R1 K12
- 0x5828000F, // 003C LDCONST R10 K15
- 0x7C200400, // 003D CALL R8 2
- 0x7C1C0200, // 003E CALL R7 1
- 0x901A2807, // 003F SETMBR R6 K20 R7
- 0x8C18030E, // 0040 GETMET R6 R1 K14
- 0x58200010, // 0041 LDCONST R8 K16
- 0x7C180400, // 0042 CALL R6 2
- 0x781A0006, // 0043 JMPF R6 #004B
- 0x88180113, // 0044 GETMBR R6 R0 K19
- 0x601C0009, // 0045 GETGBL R7 G9
- 0x8C20030C, // 0046 GETMET R8 R1 K12
- 0x58280010, // 0047 LDCONST R10 K16
- 0x7C200400, // 0048 CALL R8 2
- 0x7C1C0200, // 0049 CALL R7 1
- 0x901A2A07, // 004A SETMBR R6 K21 R7
- 0x88180113, // 004B GETMBR R6 R0 K19
- 0x8C1C030C, // 004C GETMET R7 R1 K12
- 0x58240017, // 004D LDCONST R9 K23
- 0x7C1C0400, // 004E CALL R7 2
- 0x1C1C0F18, // 004F EQ R7 R7 K24
- 0x901A2C07, // 0050 SETMBR R6 K22 R7
- 0x88180113, // 0051 GETMBR R6 R0 K19
- 0x8C180D19, // 0052 GETMET R6 R6 K25
- 0x7C180200, // 0053 CALL R6 1
- 0x8C18031A, // 0054 GETMET R6 R1 K26
- 0x5820001B, // 0055 LDCONST R8 K27
- 0x7C180400, // 0056 CALL R6 2
- 0x70020223, // 0057 JMP #027C
- 0x8C18030E, // 0058 GETMET R6 R1 K14
- 0x5820001C, // 0059 LDCONST R8 K28
- 0x7C180400, // 005A CALL R6 2
- 0x781A0047, // 005B JMPF R6 #00A4
- 0x8C18030E, // 005C GETMET R6 R1 K14
- 0x5820001D, // 005D LDCONST R8 K29
- 0x7C180400, // 005E CALL R6 2
- 0x8C1C030E, // 005F GETMET R7 R1 K14
- 0x5824001E, // 0060 LDCONST R9 K30
- 0x7C1C0400, // 0061 CALL R7 2
- 0x8C20011F, // 0062 GETMET R8 R0 K31
- 0x7C200200, // 0063 CALL R8 1
- 0x20200C08, // 0064 NE R8 R6 R8
- 0x78220027, // 0065 JMPF R8 #008E
- 0x781A0011, // 0066 JMPF R6 #0079
- 0xB8221000, // 0067 GETNGBL R8 K8
- 0x8C201109, // 0068 GETMET R8 R8 K9
- 0x60280018, // 0069 GETGBL R10 G24
- 0x582C0011, // 006A LDCONST R11 K17
- 0x58300020, // 006B LDCONST R12 K32
- 0x7C280400, // 006C CALL R10 2
- 0x582C0012, // 006D LDCONST R11 K18
- 0x7C200600, // 006E CALL R8 3
- 0xB8221000, // 006F GETNGBL R8 K8
- 0x8C201121, // 0070 GETMET R8 R8 K33
- 0x60280008, // 0071 GETGBL R10 G8
- 0xB82E4600, // 0072 GETNGBL R11 K35
- 0x882C1724, // 0073 GETMBR R11 R11 K36
- 0x7C280200, // 0074 CALL R10 1
- 0x002A440A, // 0075 ADD R10 K34 R10
- 0x00281525, // 0076 ADD R10 R10 K37
- 0x7C200400, // 0077 CALL R8 2
- 0x70020010, // 0078 JMP #008A
- 0xB8221000, // 0079 GETNGBL R8 K8
- 0x8C201109, // 007A GETMET R8 R8 K9
- 0x60280018, // 007B GETGBL R10 G24
- 0x582C0011, // 007C LDCONST R11 K17
- 0x58300026, // 007D LDCONST R12 K38
- 0x7C280400, // 007E CALL R10 2
- 0x582C0012, // 007F LDCONST R11 K18
- 0x7C200600, // 0080 CALL R8 3
- 0xB8221000, // 0081 GETNGBL R8 K8
- 0x8C201121, // 0082 GETMET R8 R8 K33
- 0x60280008, // 0083 GETGBL R10 G8
- 0xB82E4600, // 0084 GETNGBL R11 K35
- 0x882C1724, // 0085 GETMBR R11 R11 K36
- 0x7C280200, // 0086 CALL R10 1
- 0x002A440A, // 0087 ADD R10 K34 R10
- 0x00281527, // 0088 ADD R10 R10 K39
- 0x7C200400, // 0089 CALL R8 2
- 0x8C20031A, // 008A GETMET R8 R1 K26
- 0x5828001B, // 008B LDCONST R10 K27
- 0x7C200400, // 008C CALL R8 2
- 0x70020014, // 008D JMP #00A3
- 0x88200113, // 008E GETMBR R8 R0 K19
- 0x88201128, // 008F GETMBR R8 R8 K40
- 0x4C240000, // 0090 LDNIL R9
- 0x20201009, // 0091 NE R8 R8 R9
- 0x20200E08, // 0092 NE R8 R7 R8
- 0x7822000B, // 0093 JMPF R8 #00A0
- 0x781E0003, // 0094 JMPF R7 #0099
- 0x88200113, // 0095 GETMBR R8 R0 K19
- 0x8C201129, // 0096 GETMET R8 R8 K41
- 0x7C200200, // 0097 CALL R8 1
- 0x70020002, // 0098 JMP #009C
- 0x88200113, // 0099 GETMBR R8 R0 K19
- 0x8C20112A, // 009A GETMET R8 R8 K42
- 0x7C200200, // 009B CALL R8 1
- 0x8C20031A, // 009C GETMET R8 R1 K26
- 0x5828002B, // 009D LDCONST R10 K43
- 0x7C200400, // 009E CALL R8 2
- 0x70020002, // 009F JMP #00A3
- 0x8C20031A, // 00A0 GETMET R8 R1 K26
- 0x5828002B, // 00A1 LDCONST R10 K43
- 0x7C200400, // 00A2 CALL R8 2
- 0x700201D7, // 00A3 JMP #027C
- 0x8C18030E, // 00A4 GETMET R6 R1 K14
- 0x5820002C, // 00A5 LDCONST R8 K44
- 0x7C180400, // 00A6 CALL R6 2
- 0x781A0026, // 00A7 JMPF R6 #00CF
- 0xB81A1000, // 00A8 GETNGBL R6 K8
- 0x8C180D09, // 00A9 GETMET R6 R6 K9
- 0x60200018, // 00AA GETGBL R8 G24
- 0x58240011, // 00AB LDCONST R9 K17
- 0x5828002C, // 00AC LDCONST R10 K44
- 0x7C200400, // 00AD CALL R8 2
- 0x58240012, // 00AE LDCONST R9 K18
- 0x7C180600, // 00AF CALL R6 3
- 0x60180009, // 00B0 GETGBL R6 G9
- 0x8C1C030C, // 00B1 GETMET R7 R1 K12
- 0x5824002C, // 00B2 LDCONST R9 K44
- 0x7C1C0400, // 00B3 CALL R7 2
- 0x7C180200, // 00B4 CALL R6 1
- 0x581C0005, // 00B5 LDCONST R7 K5
- 0x88200113, // 00B6 GETMBR R8 R0 K19
- 0x8820112D, // 00B7 GETMBR R8 R8 K45
- 0x8820112E, // 00B8 GETMBR R8 R8 K46
- 0x6024000C, // 00B9 GETGBL R9 G12
- 0x5C281000, // 00BA MOVE R10 R8
- 0x7C240200, // 00BB CALL R9 1
- 0x14240E09, // 00BC LT R9 R7 R9
- 0x7826000C, // 00BD JMPF R9 #00CB
- 0x94241007, // 00BE GETIDX R9 R8 R7
- 0x8C24132F, // 00BF GETMET R9 R9 K47
- 0x7C240200, // 00C0 CALL R9 1
- 0x1C241206, // 00C1 EQ R9 R9 R6
- 0x78260005, // 00C2 JMPF R9 #00C9
- 0x88240113, // 00C3 GETMBR R9 R0 K19
- 0x8C241330, // 00C4 GETMET R9 R9 K48
- 0x942C1007, // 00C5 GETIDX R11 R8 R7
- 0x7C240400, // 00C6 CALL R9 2
- 0x70020002, // 00C7 JMP #00CB
- 0x70020000, // 00C8 JMP #00CA
- 0x001C0F07, // 00C9 ADD R7 R7 K7
- 0x7001FFED, // 00CA JMP #00B9
- 0x8C24031A, // 00CB GETMET R9 R1 K26
- 0x582C0031, // 00CC LDCONST R11 K49
- 0x7C240400, // 00CD CALL R9 2
- 0x700201AC, // 00CE JMP #027C
- 0x8C18030E, // 00CF GETMET R6 R1 K14
- 0x58200032, // 00D0 LDCONST R8 K50
- 0x7C180400, // 00D1 CALL R6 2
- 0x781A0011, // 00D2 JMPF R6 #00E5
- 0xB81A1000, // 00D3 GETNGBL R6 K8
- 0x8C180D09, // 00D4 GETMET R6 R6 K9
- 0x60200018, // 00D5 GETGBL R8 G24
- 0x58240011, // 00D6 LDCONST R9 K17
- 0x58280032, // 00D7 LDCONST R10 K50
- 0x7C200400, // 00D8 CALL R8 2
- 0x58240012, // 00D9 LDCONST R9 K18
- 0x7C180600, // 00DA CALL R6 3
- 0x88180113, // 00DB GETMBR R6 R0 K19
- 0x501C0000, // 00DC LDBOOL R7 0 0
- 0x901A6607, // 00DD SETMBR R6 K51 R7
- 0x88180113, // 00DE GETMBR R6 R0 K19
- 0x8C180D19, // 00DF GETMET R6 R6 K25
- 0x7C180200, // 00E0 CALL R6 1
- 0x8C18031A, // 00E1 GETMET R6 R1 K26
- 0x5820001B, // 00E2 LDCONST R8 K27
- 0x7C180400, // 00E3 CALL R6 2
- 0x70020196, // 00E4 JMP #027C
- 0x8C18030E, // 00E5 GETMET R6 R1 K14
- 0x58200034, // 00E6 LDCONST R8 K52
- 0x7C180400, // 00E7 CALL R6 2
- 0x781A00D6, // 00E8 JMPF R6 #01C0
- 0xB81A1000, // 00E9 GETNGBL R6 K8
- 0x8C180D09, // 00EA GETMET R6 R6 K9
- 0x60200018, // 00EB GETGBL R8 G24
- 0x58240011, // 00EC LDCONST R9 K17
- 0x58280034, // 00ED LDCONST R10 K52
- 0x7C200400, // 00EE CALL R8 2
- 0x58240012, // 00EF LDCONST R9 K18
- 0x7C180600, // 00F0 CALL R6 3
- 0x50180000, // 00F1 LDBOOL R6 0 0
- 0x601C0010, // 00F2 GETGBL R7 G16
- 0x8C200306, // 00F3 GETMET R8 R1 K6
- 0x7C200200, // 00F4 CALL R8 1
- 0x04201107, // 00F5 SUB R8 R8 K7
- 0x40220A08, // 00F6 CONNECT R8 K5 R8
- 0x7C1C0200, // 00F7 CALL R7 1
- 0xA80200A0, // 00F8 EXBLK 0 #019A
- 0x5C200E00, // 00F9 MOVE R8 R7
- 0x7C200000, // 00FA CALL R8 0
- 0x8C24030B, // 00FB GETMET R9 R1 K11
- 0x5C2C1000, // 00FC MOVE R11 R8
- 0x7C240400, // 00FD CALL R9 2
- 0x8C280535, // 00FE GETMET R10 R2 K53
- 0x5C301200, // 00FF MOVE R12 R9
- 0x5834000C, // 0100 LDCONST R13 K12
- 0x7C280600, // 0101 CALL R10 3
- 0x1C281505, // 0102 EQ R10 R10 K5
- 0x782A005B, // 0103 JMPF R10 #0160
- 0x60280009, // 0104 GETGBL R10 G9
- 0x402E2536, // 0105 CONNECT R11 K18 K54
- 0x942C120B, // 0106 GETIDX R11 R9 R11
- 0x7C280200, // 0107 CALL R10 1
- 0x8C2C030C, // 0108 GETMET R11 R1 K12
- 0x5C341000, // 0109 MOVE R13 R8
- 0x7C2C0400, // 010A CALL R11 2
- 0x88300113, // 010B GETMBR R12 R0 K19
- 0x88301937, // 010C GETMBR R12 R12 K55
- 0x8C301935, // 010D GETMET R12 R12 K53
- 0x60380008, // 010E GETGBL R14 G8
- 0x5C3C1400, // 010F MOVE R15 R10
- 0x7C380200, // 0110 CALL R14 1
- 0x7C300400, // 0111 CALL R12 2
- 0x4C340000, // 0112 LDNIL R13
- 0x2034180D, // 0113 NE R13 R12 R13
- 0x78360041, // 0114 JMPF R13 #0157
- 0x88340113, // 0115 GETMBR R13 R0 K19
- 0x88341B38, // 0116 GETMBR R13 R13 K56
- 0x8C341B35, // 0117 GETMET R13 R13 K53
- 0x8C3C1935, // 0118 GETMET R15 R12 K53
- 0x58440039, // 0119 LDCONST R17 K57
- 0x5848003A, // 011A LDCONST R18 K58
- 0x7C3C0600, // 011B CALL R15 3
- 0x7C340400, // 011C CALL R13 2
- 0x4C380000, // 011D LDNIL R14
- 0x20381A0E, // 011E NE R14 R13 R14
- 0x783A0035, // 011F JMPF R14 #0156
- 0xB83A1000, // 0120 GETNGBL R14 K8
- 0x8C381D09, // 0121 GETMET R14 R14 K9
- 0x60400018, // 0122 GETGBL R16 G24
- 0x5844003B, // 0123 LDCONST R17 K59
- 0x5C481400, // 0124 MOVE R18 R10
- 0x5C4C1600, // 0125 MOVE R19 R11
- 0x7C400600, // 0126 CALL R16 3
- 0x58440012, // 0127 LDCONST R17 K18
- 0x7C380600, // 0128 CALL R14 3
- 0x8C381B3C, // 0129 GETMET R14 R13 K60
- 0x5C401A00, // 012A MOVE R16 R13
- 0x5C441800, // 012B MOVE R17 R12
- 0x7C380600, // 012C CALL R14 3
- 0x203C1C0B, // 012D NE R15 R14 R11
- 0xB8421000, // 012E GETNGBL R16 K8
- 0x8C402109, // 012F GETMET R16 R16 K9
- 0x60480018, // 0130 GETGBL R18 G24
- 0x584C003D, // 0131 LDCONST R19 K61
- 0x5C501400, // 0132 MOVE R20 R10
- 0x5C541C00, // 0133 MOVE R21 R14
- 0x5C581600, // 0134 MOVE R22 R11
- 0x205C1C0B, // 0135 NE R23 R14 R11
- 0x785E0001, // 0136 JMPF R23 #0139
- 0x585C003E, // 0137 LDCONST R23 K62
- 0x70020000, // 0138 JMP #013A
- 0x585C003A, // 0139 LDCONST R23 K58
- 0x7C480A00, // 013A CALL R18 5
- 0x584C0012, // 013B LDCONST R19 K18
- 0x7C400600, // 013C CALL R16 3
- 0x783E0017, // 013D JMPF R15 #0156
- 0x50180200, // 013E LDBOOL R6 1 0
- 0x8C401B3F, // 013F GETMET R16 R13 K63
- 0x5C481A00, // 0140 MOVE R18 R13
- 0x5C4C1800, // 0141 MOVE R19 R12
- 0x5C501600, // 0142 MOVE R20 R11
- 0x7C400800, // 0143 CALL R16 4
- 0x88400113, // 0144 GETMBR R16 R0 K19
- 0x8C402140, // 0145 GETMET R16 R16 K64
- 0x5C481400, // 0146 MOVE R18 R10
- 0x7C400400, // 0147 CALL R16 2
- 0x7842000C, // 0148 JMPF R16 #0156
- 0xB8461000, // 0149 GETNGBL R17 K8
- 0x8C442309, // 014A GETMET R17 R17 K9
- 0x604C0018, // 014B GETGBL R19 G24
- 0x58500041, // 014C LDCONST R20 K65
- 0x5C541800, // 014D MOVE R21 R12
- 0x5C581400, // 014E MOVE R22 R10
- 0x5C5C2000, // 014F MOVE R23 R16
- 0x7C4C0800, // 0150 CALL R19 4
- 0x58500012, // 0151 LDCONST R20 K18
- 0x7C440600, // 0152 CALL R17 3
- 0x8C442142, // 0153 GETMET R17 R16 K66
- 0x5C4C1800, // 0154 MOVE R19 R12
- 0x7C440400, // 0155 CALL R17 2
- 0x70020007, // 0156 JMP #015F
- 0xB8361000, // 0157 GETNGBL R13 K8
- 0x8C341B09, // 0158 GETMET R13 R13 K9
- 0x603C0018, // 0159 GETGBL R15 G24
- 0x58400043, // 015A LDCONST R16 K67
- 0x5C441400, // 015B MOVE R17 R10
- 0x7C3C0400, // 015C CALL R15 2
- 0x58400012, // 015D LDCONST R16 K18
- 0x7C340600, // 015E CALL R13 3
- 0x70020038, // 015F JMP #0199
- 0x8C280535, // 0160 GETMET R10 R2 K53
- 0x5C301200, // 0161 MOVE R12 R9
- 0x58340044, // 0162 LDCONST R13 K68
- 0x7C280600, // 0163 CALL R10 3
- 0x1C281505, // 0164 EQ R10 R10 K5
- 0x782A0032, // 0165 JMPF R10 #0199
- 0x60280009, // 0166 GETGBL R10 G9
- 0x402E2536, // 0167 CONNECT R11 K18 K54
- 0x942C120B, // 0168 GETIDX R11 R9 R11
- 0x7C280200, // 0169 CALL R10 1
- 0x8C2C030C, // 016A GETMET R11 R1 K12
- 0x5C341000, // 016B MOVE R13 R8
- 0x7C2C0400, // 016C CALL R11 2
- 0x88300113, // 016D GETMBR R12 R0 K19
- 0x88301937, // 016E GETMBR R12 R12 K55
- 0x8C301935, // 016F GETMET R12 R12 K53
- 0x60380008, // 0170 GETGBL R14 G8
- 0x5C3C1400, // 0171 MOVE R15 R10
- 0x7C380200, // 0172 CALL R14 1
- 0x7C300400, // 0173 CALL R12 2
- 0x4C340000, // 0174 LDNIL R13
- 0x2034180D, // 0175 NE R13 R12 R13
- 0x78360021, // 0176 JMPF R13 #0199
- 0x8C341935, // 0177 GETMET R13 R12 K53
- 0x583C0045, // 0178 LDCONST R15 K69
- 0x5840003A, // 0179 LDCONST R16 K58
- 0x7C340600, // 017A CALL R13 3
- 0x20381A0B, // 017B NE R14 R13 R11
- 0x783A001B, // 017C JMPF R14 #0199
- 0x50180200, // 017D LDBOOL R6 1 0
- 0x883C0113, // 017E GETMBR R15 R0 K19
- 0x8C3C1F40, // 017F GETMET R15 R15 K64
- 0x5C441400, // 0180 MOVE R17 R10
- 0x7C3C0400, // 0181 CALL R15 2
- 0x783E0015, // 0182 JMPF R15 #0199
- 0x8C401F46, // 0183 GETMET R16 R15 K70
- 0x5C481600, // 0184 MOVE R18 R11
- 0x7C400400, // 0185 CALL R16 2
- 0x782E0001, // 0186 JMPF R11 #0189
- 0x98328A0B, // 0187 SETIDX R12 K69 R11
- 0x70020002, // 0188 JMP #018C
- 0x8C401947, // 0189 GETMET R16 R12 K71
- 0x58480045, // 018A LDCONST R18 K69
+ 0xA8020278, // 000A EXBLK 0 #0284
+ 0x8C180305, // 000B GETMET R6 R1 K5
+ 0x58200006, // 000C LDCONST R8 K6
+ 0x7C180400, // 000D CALL R6 2
+ 0x741A0003, // 000E JMPT R6 #0013
+ 0x8C180305, // 000F GETMET R6 R1 K5
+ 0x58200007, // 0010 LDCONST R8 K7
+ 0x7C180400, // 0011 CALL R6 2
+ 0x781A002A, // 0012 JMPF R6 #003E
+ 0xB81A1000, // 0013 GETNGBL R6 K8
+ 0x8C180D09, // 0014 GETMET R6 R6 K9
+ 0x60200018, // 0015 GETGBL R8 G24
+ 0x5824000A, // 0016 LDCONST R9 K10
+ 0x58280006, // 0017 LDCONST R10 K6
+ 0x7C200400, // 0018 CALL R8 2
+ 0x5824000B, // 0019 LDCONST R9 K11
+ 0x7C180600, // 001A CALL R6 3
+ 0x8C180305, // 001B GETMET R6 R1 K5
+ 0x58200006, // 001C LDCONST R8 K6
+ 0x7C180400, // 001D CALL R6 2
+ 0x781A0006, // 001E JMPF R6 #0026
+ 0x8818010C, // 001F GETMBR R6 R0 K12
+ 0x601C0009, // 0020 GETGBL R7 G9
+ 0x8C20030E, // 0021 GETMET R8 R1 K14
+ 0x58280006, // 0022 LDCONST R10 K6
+ 0x7C200400, // 0023 CALL R8 2
+ 0x7C1C0200, // 0024 CALL R7 1
+ 0x901A1A07, // 0025 SETMBR R6 K13 R7
+ 0x8C180305, // 0026 GETMET R6 R1 K5
+ 0x58200007, // 0027 LDCONST R8 K7
+ 0x7C180400, // 0028 CALL R6 2
+ 0x781A0006, // 0029 JMPF R6 #0031
+ 0x8818010C, // 002A GETMBR R6 R0 K12
+ 0x601C0009, // 002B GETGBL R7 G9
+ 0x8C20030E, // 002C GETMET R8 R1 K14
+ 0x58280007, // 002D LDCONST R10 K7
+ 0x7C200400, // 002E CALL R8 2
+ 0x7C1C0200, // 002F CALL R7 1
+ 0x901A1E07, // 0030 SETMBR R6 K15 R7
+ 0x8818010C, // 0031 GETMBR R6 R0 K12
+ 0x8C1C030E, // 0032 GETMET R7 R1 K14
+ 0x58240011, // 0033 LDCONST R9 K17
+ 0x7C1C0400, // 0034 CALL R7 2
+ 0x1C1C0F12, // 0035 EQ R7 R7 K18
+ 0x901A2007, // 0036 SETMBR R6 K16 R7
+ 0x8818010C, // 0037 GETMBR R6 R0 K12
+ 0x8C180D13, // 0038 GETMET R6 R6 K19
+ 0x7C180200, // 0039 CALL R6 1
+ 0x8C180314, // 003A GETMET R6 R1 K20
+ 0x58200015, // 003B LDCONST R8 K21
+ 0x7C180400, // 003C CALL R6 2
+ 0x70020230, // 003D JMP #026F
+ 0x8C180305, // 003E GETMET R6 R1 K5
+ 0x58200016, // 003F LDCONST R8 K22
+ 0x7C180400, // 0040 CALL R6 2
+ 0x781A0054, // 0041 JMPF R6 #0097
+ 0x8C180305, // 0042 GETMET R6 R1 K5
+ 0x58200017, // 0043 LDCONST R8 K23
+ 0x7C180400, // 0044 CALL R6 2
+ 0x8C1C0305, // 0045 GETMET R7 R1 K5
+ 0x58240018, // 0046 LDCONST R9 K24
+ 0x7C1C0400, // 0047 CALL R7 2
+ 0x8C20030E, // 0048 GETMET R8 R1 K14
+ 0x58280019, // 0049 LDCONST R10 K25
+ 0x7C200400, // 004A CALL R8 2
+ 0x1C201112, // 004B EQ R8 R8 K18
+ 0x8824010C, // 004C GETMBR R9 R0 K12
+ 0x8824131A, // 004D GETMBR R9 R9 K26
+ 0x20241208, // 004E NE R9 R9 R8
+ 0x78260004, // 004F JMPF R9 #0055
+ 0x8824010C, // 0050 GETMBR R9 R0 K12
+ 0x90263408, // 0051 SETMBR R9 K26 R8
+ 0x8824010C, // 0052 GETMBR R9 R0 K12
+ 0x8C241313, // 0053 GETMET R9 R9 K19
+ 0x7C240200, // 0054 CALL R9 1
+ 0x8C24011B, // 0055 GETMET R9 R0 K27
+ 0x7C240200, // 0056 CALL R9 1
+ 0x20240C09, // 0057 NE R9 R6 R9
+ 0x78260027, // 0058 JMPF R9 #0081
+ 0x781A0011, // 0059 JMPF R6 #006C
+ 0xB8261000, // 005A GETNGBL R9 K8
+ 0x8C241309, // 005B GETMET R9 R9 K9
+ 0x602C0018, // 005C GETGBL R11 G24
+ 0x5830000A, // 005D LDCONST R12 K10
+ 0x5834001C, // 005E LDCONST R13 K28
+ 0x7C2C0400, // 005F CALL R11 2
+ 0x5830000B, // 0060 LDCONST R12 K11
+ 0x7C240600, // 0061 CALL R9 3
+ 0xB8261000, // 0062 GETNGBL R9 K8
+ 0x8C24131D, // 0063 GETMET R9 R9 K29
+ 0x602C0008, // 0064 GETGBL R11 G8
+ 0xB8323E00, // 0065 GETNGBL R12 K31
+ 0x88301920, // 0066 GETMBR R12 R12 K32
+ 0x7C2C0200, // 0067 CALL R11 1
+ 0x002E3C0B, // 0068 ADD R11 K30 R11
+ 0x002C1721, // 0069 ADD R11 R11 K33
+ 0x7C240400, // 006A CALL R9 2
+ 0x70020010, // 006B JMP #007D
+ 0xB8261000, // 006C GETNGBL R9 K8
+ 0x8C241309, // 006D GETMET R9 R9 K9
+ 0x602C0018, // 006E GETGBL R11 G24
+ 0x5830000A, // 006F LDCONST R12 K10
+ 0x58340022, // 0070 LDCONST R13 K34
+ 0x7C2C0400, // 0071 CALL R11 2
+ 0x5830000B, // 0072 LDCONST R12 K11
+ 0x7C240600, // 0073 CALL R9 3
+ 0xB8261000, // 0074 GETNGBL R9 K8
+ 0x8C24131D, // 0075 GETMET R9 R9 K29
+ 0x602C0008, // 0076 GETGBL R11 G8
+ 0xB8323E00, // 0077 GETNGBL R12 K31
+ 0x88301920, // 0078 GETMBR R12 R12 K32
+ 0x7C2C0200, // 0079 CALL R11 1
+ 0x002E3C0B, // 007A ADD R11 K30 R11
+ 0x002C1723, // 007B ADD R11 R11 K35
+ 0x7C240400, // 007C CALL R9 2
+ 0x8C240314, // 007D GETMET R9 R1 K20
+ 0x582C0015, // 007E LDCONST R11 K21
+ 0x7C240400, // 007F CALL R9 2
+ 0x70020014, // 0080 JMP #0096
+ 0x8824010C, // 0081 GETMBR R9 R0 K12
+ 0x88241324, // 0082 GETMBR R9 R9 K36
+ 0x4C280000, // 0083 LDNIL R10
+ 0x2024120A, // 0084 NE R9 R9 R10
+ 0x20240E09, // 0085 NE R9 R7 R9
+ 0x7826000B, // 0086 JMPF R9 #0093
+ 0x781E0003, // 0087 JMPF R7 #008C
+ 0x8824010C, // 0088 GETMBR R9 R0 K12
+ 0x8C241325, // 0089 GETMET R9 R9 K37
+ 0x7C240200, // 008A CALL R9 1
+ 0x70020002, // 008B JMP #008F
+ 0x8824010C, // 008C GETMBR R9 R0 K12
+ 0x8C241326, // 008D GETMET R9 R9 K38
+ 0x7C240200, // 008E CALL R9 1
+ 0x8C240314, // 008F GETMET R9 R1 K20
+ 0x582C0027, // 0090 LDCONST R11 K39
+ 0x7C240400, // 0091 CALL R9 2
+ 0x70020002, // 0092 JMP #0096
+ 0x8C240314, // 0093 GETMET R9 R1 K20
+ 0x582C0027, // 0094 LDCONST R11 K39
+ 0x7C240400, // 0095 CALL R9 2
+ 0x700201D7, // 0096 JMP #026F
+ 0x8C180305, // 0097 GETMET R6 R1 K5
+ 0x58200028, // 0098 LDCONST R8 K40
+ 0x7C180400, // 0099 CALL R6 2
+ 0x781A0026, // 009A JMPF R6 #00C2
+ 0xB81A1000, // 009B GETNGBL R6 K8
+ 0x8C180D09, // 009C GETMET R6 R6 K9
+ 0x60200018, // 009D GETGBL R8 G24
+ 0x5824000A, // 009E LDCONST R9 K10
+ 0x58280028, // 009F LDCONST R10 K40
+ 0x7C200400, // 00A0 CALL R8 2
+ 0x5824000B, // 00A1 LDCONST R9 K11
+ 0x7C180600, // 00A2 CALL R6 3
+ 0x60180009, // 00A3 GETGBL R6 G9
+ 0x8C1C030E, // 00A4 GETMET R7 R1 K14
+ 0x58240028, // 00A5 LDCONST R9 K40
+ 0x7C1C0400, // 00A6 CALL R7 2
+ 0x7C180200, // 00A7 CALL R6 1
+ 0x581C0029, // 00A8 LDCONST R7 K41
+ 0x8820010C, // 00A9 GETMBR R8 R0 K12
+ 0x8820112A, // 00AA GETMBR R8 R8 K42
+ 0x8820112B, // 00AB GETMBR R8 R8 K43
+ 0x6024000C, // 00AC GETGBL R9 G12
+ 0x5C281000, // 00AD MOVE R10 R8
+ 0x7C240200, // 00AE CALL R9 1
+ 0x14240E09, // 00AF LT R9 R7 R9
+ 0x7826000C, // 00B0 JMPF R9 #00BE
+ 0x94241007, // 00B1 GETIDX R9 R8 R7
+ 0x8C24132C, // 00B2 GETMET R9 R9 K44
+ 0x7C240200, // 00B3 CALL R9 1
+ 0x1C241206, // 00B4 EQ R9 R9 R6
+ 0x78260005, // 00B5 JMPF R9 #00BC
+ 0x8824010C, // 00B6 GETMBR R9 R0 K12
+ 0x8C24132D, // 00B7 GETMET R9 R9 K45
+ 0x942C1007, // 00B8 GETIDX R11 R8 R7
+ 0x7C240400, // 00B9 CALL R9 2
+ 0x70020002, // 00BA JMP #00BE
+ 0x70020000, // 00BB JMP #00BD
+ 0x001C0F2E, // 00BC ADD R7 R7 K46
+ 0x7001FFED, // 00BD JMP #00AC
+ 0x8C240314, // 00BE GETMET R9 R1 K20
+ 0x582C002F, // 00BF LDCONST R11 K47
+ 0x7C240400, // 00C0 CALL R9 2
+ 0x700201AC, // 00C1 JMP #026F
+ 0x8C180305, // 00C2 GETMET R6 R1 K5
+ 0x58200030, // 00C3 LDCONST R8 K48
+ 0x7C180400, // 00C4 CALL R6 2
+ 0x781A0011, // 00C5 JMPF R6 #00D8
+ 0xB81A1000, // 00C6 GETNGBL R6 K8
+ 0x8C180D09, // 00C7 GETMET R6 R6 K9
+ 0x60200018, // 00C8 GETGBL R8 G24
+ 0x5824000A, // 00C9 LDCONST R9 K10
+ 0x58280030, // 00CA LDCONST R10 K48
+ 0x7C200400, // 00CB CALL R8 2
+ 0x5824000B, // 00CC LDCONST R9 K11
+ 0x7C180600, // 00CD CALL R6 3
+ 0x8818010C, // 00CE GETMBR R6 R0 K12
+ 0x501C0000, // 00CF LDBOOL R7 0 0
+ 0x901A6207, // 00D0 SETMBR R6 K49 R7
+ 0x8818010C, // 00D1 GETMBR R6 R0 K12
+ 0x8C180D13, // 00D2 GETMET R6 R6 K19
+ 0x7C180200, // 00D3 CALL R6 1
+ 0x8C180314, // 00D4 GETMET R6 R1 K20
+ 0x58200015, // 00D5 LDCONST R8 K21
+ 0x7C180400, // 00D6 CALL R6 2
+ 0x70020196, // 00D7 JMP #026F
+ 0x8C180305, // 00D8 GETMET R6 R1 K5
+ 0x58200032, // 00D9 LDCONST R8 K50
+ 0x7C180400, // 00DA CALL R6 2
+ 0x781A00D6, // 00DB JMPF R6 #01B3
+ 0xB81A1000, // 00DC GETNGBL R6 K8
+ 0x8C180D09, // 00DD GETMET R6 R6 K9
+ 0x60200018, // 00DE GETGBL R8 G24
+ 0x5824000A, // 00DF LDCONST R9 K10
+ 0x58280032, // 00E0 LDCONST R10 K50
+ 0x7C200400, // 00E1 CALL R8 2
+ 0x5824000B, // 00E2 LDCONST R9 K11
+ 0x7C180600, // 00E3 CALL R6 3
+ 0x50180000, // 00E4 LDBOOL R6 0 0
+ 0x601C0010, // 00E5 GETGBL R7 G16
+ 0x8C200333, // 00E6 GETMET R8 R1 K51
+ 0x7C200200, // 00E7 CALL R8 1
+ 0x0420112E, // 00E8 SUB R8 R8 K46
+ 0x40225208, // 00E9 CONNECT R8 K41 R8
+ 0x7C1C0200, // 00EA CALL R7 1
+ 0xA80200A0, // 00EB EXBLK 0 #018D
+ 0x5C200E00, // 00EC MOVE R8 R7
+ 0x7C200000, // 00ED CALL R8 0
+ 0x8C240334, // 00EE GETMET R9 R1 K52
+ 0x5C2C1000, // 00EF MOVE R11 R8
+ 0x7C240400, // 00F0 CALL R9 2
+ 0x8C280535, // 00F1 GETMET R10 R2 K53
+ 0x5C301200, // 00F2 MOVE R12 R9
+ 0x5834000E, // 00F3 LDCONST R13 K14
+ 0x7C280600, // 00F4 CALL R10 3
+ 0x1C281529, // 00F5 EQ R10 R10 K41
+ 0x782A005B, // 00F6 JMPF R10 #0153
+ 0x60280009, // 00F7 GETGBL R10 G9
+ 0x402E1736, // 00F8 CONNECT R11 K11 K54
+ 0x942C120B, // 00F9 GETIDX R11 R9 R11
+ 0x7C280200, // 00FA CALL R10 1
+ 0x8C2C030E, // 00FB GETMET R11 R1 K14
+ 0x5C341000, // 00FC MOVE R13 R8
+ 0x7C2C0400, // 00FD CALL R11 2
+ 0x8830010C, // 00FE GETMBR R12 R0 K12
+ 0x88301937, // 00FF GETMBR R12 R12 K55
+ 0x8C301935, // 0100 GETMET R12 R12 K53
+ 0x60380008, // 0101 GETGBL R14 G8
+ 0x5C3C1400, // 0102 MOVE R15 R10
+ 0x7C380200, // 0103 CALL R14 1
+ 0x7C300400, // 0104 CALL R12 2
+ 0x4C340000, // 0105 LDNIL R13
+ 0x2034180D, // 0106 NE R13 R12 R13
+ 0x78360041, // 0107 JMPF R13 #014A
+ 0x8834010C, // 0108 GETMBR R13 R0 K12
+ 0x88341B38, // 0109 GETMBR R13 R13 K56
+ 0x8C341B35, // 010A GETMET R13 R13 K53
+ 0x8C3C1935, // 010B GETMET R15 R12 K53
+ 0x58440039, // 010C LDCONST R17 K57
+ 0x5848003A, // 010D LDCONST R18 K58
+ 0x7C3C0600, // 010E CALL R15 3
+ 0x7C340400, // 010F CALL R13 2
+ 0x4C380000, // 0110 LDNIL R14
+ 0x20381A0E, // 0111 NE R14 R13 R14
+ 0x783A0035, // 0112 JMPF R14 #0149
+ 0xB83A1000, // 0113 GETNGBL R14 K8
+ 0x8C381D09, // 0114 GETMET R14 R14 K9
+ 0x60400018, // 0115 GETGBL R16 G24
+ 0x5844003B, // 0116 LDCONST R17 K59
+ 0x5C481400, // 0117 MOVE R18 R10
+ 0x5C4C1600, // 0118 MOVE R19 R11
+ 0x7C400600, // 0119 CALL R16 3
+ 0x5844000B, // 011A LDCONST R17 K11
+ 0x7C380600, // 011B CALL R14 3
+ 0x8C381B3C, // 011C GETMET R14 R13 K60
+ 0x5C401A00, // 011D MOVE R16 R13
+ 0x5C441800, // 011E MOVE R17 R12
+ 0x7C380600, // 011F CALL R14 3
+ 0x203C1C0B, // 0120 NE R15 R14 R11
+ 0xB8421000, // 0121 GETNGBL R16 K8
+ 0x8C402109, // 0122 GETMET R16 R16 K9
+ 0x60480018, // 0123 GETGBL R18 G24
+ 0x584C003D, // 0124 LDCONST R19 K61
+ 0x5C501400, // 0125 MOVE R20 R10
+ 0x5C541C00, // 0126 MOVE R21 R14
+ 0x5C581600, // 0127 MOVE R22 R11
+ 0x205C1C0B, // 0128 NE R23 R14 R11
+ 0x785E0001, // 0129 JMPF R23 #012C
+ 0x585C003E, // 012A LDCONST R23 K62
+ 0x70020000, // 012B JMP #012D
+ 0x585C003A, // 012C LDCONST R23 K58
+ 0x7C480A00, // 012D CALL R18 5
+ 0x584C000B, // 012E LDCONST R19 K11
+ 0x7C400600, // 012F CALL R16 3
+ 0x783E0017, // 0130 JMPF R15 #0149
+ 0x50180200, // 0131 LDBOOL R6 1 0
+ 0x8C401B3F, // 0132 GETMET R16 R13 K63
+ 0x5C481A00, // 0133 MOVE R18 R13
+ 0x5C4C1800, // 0134 MOVE R19 R12
+ 0x5C501600, // 0135 MOVE R20 R11
+ 0x7C400800, // 0136 CALL R16 4
+ 0x8840010C, // 0137 GETMBR R16 R0 K12
+ 0x8C402140, // 0138 GETMET R16 R16 K64
+ 0x5C481400, // 0139 MOVE R18 R10
+ 0x7C400400, // 013A CALL R16 2
+ 0x7842000C, // 013B JMPF R16 #0149
+ 0xB8461000, // 013C GETNGBL R17 K8
+ 0x8C442309, // 013D GETMET R17 R17 K9
+ 0x604C0018, // 013E GETGBL R19 G24
+ 0x58500041, // 013F LDCONST R20 K65
+ 0x5C541800, // 0140 MOVE R21 R12
+ 0x5C581400, // 0141 MOVE R22 R10
+ 0x5C5C2000, // 0142 MOVE R23 R16
+ 0x7C4C0800, // 0143 CALL R19 4
+ 0x5850000B, // 0144 LDCONST R20 K11
+ 0x7C440600, // 0145 CALL R17 3
+ 0x8C442142, // 0146 GETMET R17 R16 K66
+ 0x5C4C1800, // 0147 MOVE R19 R12
+ 0x7C440400, // 0148 CALL R17 2
+ 0x70020007, // 0149 JMP #0152
+ 0xB8361000, // 014A GETNGBL R13 K8
+ 0x8C341B09, // 014B GETMET R13 R13 K9
+ 0x603C0018, // 014C GETGBL R15 G24
+ 0x58400043, // 014D LDCONST R16 K67
+ 0x5C441400, // 014E MOVE R17 R10
+ 0x7C3C0400, // 014F CALL R15 2
+ 0x5840000B, // 0150 LDCONST R16 K11
+ 0x7C340600, // 0151 CALL R13 3
+ 0x70020038, // 0152 JMP #018C
+ 0x8C280535, // 0153 GETMET R10 R2 K53
+ 0x5C301200, // 0154 MOVE R12 R9
+ 0x58340044, // 0155 LDCONST R13 K68
+ 0x7C280600, // 0156 CALL R10 3
+ 0x1C281529, // 0157 EQ R10 R10 K41
+ 0x782A0032, // 0158 JMPF R10 #018C
+ 0x60280009, // 0159 GETGBL R10 G9
+ 0x402E1736, // 015A CONNECT R11 K11 K54
+ 0x942C120B, // 015B GETIDX R11 R9 R11
+ 0x7C280200, // 015C CALL R10 1
+ 0x8C2C030E, // 015D GETMET R11 R1 K14
+ 0x5C341000, // 015E MOVE R13 R8
+ 0x7C2C0400, // 015F CALL R11 2
+ 0x8830010C, // 0160 GETMBR R12 R0 K12
+ 0x88301937, // 0161 GETMBR R12 R12 K55
+ 0x8C301935, // 0162 GETMET R12 R12 K53
+ 0x60380008, // 0163 GETGBL R14 G8
+ 0x5C3C1400, // 0164 MOVE R15 R10
+ 0x7C380200, // 0165 CALL R14 1
+ 0x7C300400, // 0166 CALL R12 2
+ 0x4C340000, // 0167 LDNIL R13
+ 0x2034180D, // 0168 NE R13 R12 R13
+ 0x78360021, // 0169 JMPF R13 #018C
+ 0x8C341935, // 016A GETMET R13 R12 K53
+ 0x583C0045, // 016B LDCONST R15 K69
+ 0x5840003A, // 016C LDCONST R16 K58
+ 0x7C340600, // 016D CALL R13 3
+ 0x20381A0B, // 016E NE R14 R13 R11
+ 0x783A001B, // 016F JMPF R14 #018C
+ 0x50180200, // 0170 LDBOOL R6 1 0
+ 0x883C010C, // 0171 GETMBR R15 R0 K12
+ 0x8C3C1F40, // 0172 GETMET R15 R15 K64
+ 0x5C441400, // 0173 MOVE R17 R10
+ 0x7C3C0400, // 0174 CALL R15 2
+ 0x783E0015, // 0175 JMPF R15 #018C
+ 0x8C401F46, // 0176 GETMET R16 R15 K70
+ 0x5C481600, // 0177 MOVE R18 R11
+ 0x7C400400, // 0178 CALL R16 2
+ 0x782E0001, // 0179 JMPF R11 #017C
+ 0x98328A0B, // 017A SETIDX R12 K69 R11
+ 0x70020002, // 017B JMP #017F
+ 0x8C401947, // 017C GETMET R16 R12 K71
+ 0x58480045, // 017D LDCONST R18 K69
+ 0x7C400400, // 017E CALL R16 2
+ 0xB8421000, // 017F GETNGBL R16 K8
+ 0x8C402109, // 0180 GETMET R16 R16 K9
+ 0x60480018, // 0181 GETGBL R18 G24
+ 0x584C0048, // 0182 LDCONST R19 K72
+ 0x5C501800, // 0183 MOVE R20 R12
+ 0x5C541400, // 0184 MOVE R21 R10
+ 0x5C581E00, // 0185 MOVE R22 R15
+ 0x7C480800, // 0186 CALL R18 4
+ 0x584C000B, // 0187 LDCONST R19 K11
+ 0x7C400600, // 0188 CALL R16 3
+ 0x8C401F42, // 0189 GETMET R16 R15 K66
+ 0x5C481800, // 018A MOVE R18 R12
0x7C400400, // 018B CALL R16 2
- 0xB8421000, // 018C GETNGBL R16 K8
- 0x8C402109, // 018D GETMET R16 R16 K9
- 0x60480018, // 018E GETGBL R18 G24
- 0x584C0048, // 018F LDCONST R19 K72
- 0x5C501800, // 0190 MOVE R20 R12
- 0x5C541400, // 0191 MOVE R21 R10
- 0x5C581E00, // 0192 MOVE R22 R15
- 0x7C480800, // 0193 CALL R18 4
- 0x584C0012, // 0194 LDCONST R19 K18
- 0x7C400600, // 0195 CALL R16 3
- 0x8C401F42, // 0196 GETMET R16 R15 K66
- 0x5C481800, // 0197 MOVE R18 R12
- 0x7C400400, // 0198 CALL R16 2
- 0x7001FF5E, // 0199 JMP #00F9
- 0x581C000D, // 019A LDCONST R7 K13
- 0xAC1C0200, // 019B CATCH R7 1 0
- 0xB0080000, // 019C RAISE 2 R0 R0
- 0xB81E1000, // 019D GETNGBL R7 K8
- 0x8C1C0F09, // 019E GETMET R7 R7 K9
- 0x60240018, // 019F GETGBL R9 G24
- 0x58280049, // 01A0 LDCONST R10 K73
- 0x602C0008, // 01A1 GETGBL R11 G8
- 0x88300113, // 01A2 GETMBR R12 R0 K19
- 0x88301937, // 01A3 GETMBR R12 R12 K55
- 0x7C2C0200, // 01A4 CALL R11 1
- 0x7C240400, // 01A5 CALL R9 2
- 0x58280012, // 01A6 LDCONST R10 K18
- 0x7C1C0600, // 01A7 CALL R7 3
- 0x78160008, // 01A8 JMPF R5 #01B2
- 0xB81E1000, // 01A9 GETNGBL R7 K8
- 0x8C1C0F09, // 01AA GETMET R7 R7 K9
- 0x60240018, // 01AB GETGBL R9 G24
- 0x5828004A, // 01AC LDCONST R10 K74
- 0x5C2C0A00, // 01AD MOVE R11 R5
- 0x7C240400, // 01AE CALL R9 2
- 0x58280012, // 01AF LDCONST R10 K18
- 0x7C1C0600, // 01B0 CALL R7 3
- 0x7002000C, // 01B1 JMP #01BF
- 0x741A0002, // 01B2 JMPT R6 #01B6
- 0x881C0113, // 01B3 GETMBR R7 R0 K19
- 0x881C0F33, // 01B4 GETMBR R7 R7 K51
- 0x741E0005, // 01B5 JMPT R7 #01BC
- 0x881C0113, // 01B6 GETMBR R7 R0 K19
- 0x50200200, // 01B7 LDBOOL R8 1 0
- 0x901E6608, // 01B8 SETMBR R7 K51 R8
- 0x881C0113, // 01B9 GETMBR R7 R0 K19
- 0x8C1C0F19, // 01BA GETMET R7 R7 K25
- 0x7C1C0200, // 01BB CALL R7 1
- 0x8C1C031A, // 01BC GETMET R7 R1 K26
- 0x58240031, // 01BD LDCONST R9 K49
- 0x7C1C0400, // 01BE CALL R7 2
- 0x700200BB, // 01BF JMP #027C
- 0x8C18030E, // 01C0 GETMET R6 R1 K14
- 0x5820004B, // 01C1 LDCONST R8 K75
- 0x7C180400, // 01C2 CALL R6 2
- 0x781A002B, // 01C3 JMPF R6 #01F0
- 0x8C18030C, // 01C4 GETMET R6 R1 K12
- 0x5820004C, // 01C5 LDCONST R8 K76
- 0x7C180400, // 01C6 CALL R6 2
- 0x8C1C030C, // 01C7 GETMET R7 R1 K12
- 0x5824000C, // 01C8 LDCONST R9 K12
- 0x7C1C0400, // 01C9 CALL R7 2
- 0x8C20030C, // 01CA GETMET R8 R1 K12
- 0x58280044, // 01CB LDCONST R10 K68
- 0x7C200400, // 01CC CALL R8 2
- 0xB8261000, // 01CD GETNGBL R9 K8
- 0x8C241309, // 01CE GETMET R9 R9 K9
- 0x602C0018, // 01CF GETGBL R11 G24
- 0x5830004D, // 01D0 LDCONST R12 K77
- 0x5C340C00, // 01D1 MOVE R13 R6
- 0x5C380E00, // 01D2 MOVE R14 R7
- 0x7C2C0600, // 01D3 CALL R11 3
- 0x58300012, // 01D4 LDCONST R12 K18
- 0x7C240600, // 01D5 CALL R9 3
- 0x88240113, // 01D6 GETMBR R9 R0 K19
- 0x88241338, // 01D7 GETMBR R9 R9 K56
- 0x8C241335, // 01D8 GETMET R9 R9 K53
- 0x5C2C0C00, // 01D9 MOVE R11 R6
- 0x7C240400, // 01DA CALL R9 2
- 0x4C280000, // 01DB LDNIL R10
- 0x2028120A, // 01DC NE R10 R9 R10
- 0x782A000D, // 01DD JMPF R10 #01EC
- 0x60280013, // 01DE GETGBL R10 G19
- 0x7C280000, // 01DF CALL R10 0
- 0x78220000, // 01E0 JMPF R8 #01E2
- 0x982A8A08, // 01E1 SETIDX R10 K69 R8
- 0x8C2C133F, // 01E2 GETMET R11 R9 K63
- 0x5C341200, // 01E3 MOVE R13 R9
- 0x5C381400, // 01E4 MOVE R14 R10
- 0x5C3C0E00, // 01E5 MOVE R15 R7
- 0x7C2C0800, // 01E6 CALL R11 4
- 0x882C0113, // 01E7 GETMBR R11 R0 K19
- 0x8C2C174E, // 01E8 GETMET R11 R11 K78
- 0x5C340C00, // 01E9 MOVE R13 R6
- 0x5C381400, // 01EA MOVE R14 R10
- 0x7C2C0600, // 01EB CALL R11 3
- 0x8C28031A, // 01EC GETMET R10 R1 K26
- 0x58300031, // 01ED LDCONST R12 K49
- 0x7C280400, // 01EE CALL R10 2
- 0x7002008B, // 01EF JMP #027C
- 0x8C18030E, // 01F0 GETMET R6 R1 K14
- 0x5820004F, // 01F1 LDCONST R8 K79
- 0x7C180400, // 01F2 CALL R6 2
- 0x781A005E, // 01F3 JMPF R6 #0253
- 0x8C18030C, // 01F4 GETMET R6 R1 K12
- 0x58200050, // 01F5 LDCONST R8 K80
- 0x7C180400, // 01F6 CALL R6 2
- 0x4C1C0000, // 01F7 LDNIL R7
- 0x1C1C0C07, // 01F8 EQ R7 R6 R7
- 0x741E0001, // 01F9 JMPT R7 #01FC
- 0x1C1C0D3A, // 01FA EQ R7 R6 K58
- 0x781E0000, // 01FB JMPF R7 #01FD
- 0xB006A352, // 01FC RAISE 1 K81 K82
- 0x581C0005, // 01FD LDCONST R7 K5
- 0x60200008, // 01FE GETGBL R8 G8
- 0x5C240E00, // 01FF MOVE R9 R7
- 0x7C200200, // 0200 CALL R8 1
- 0x8C24030E, // 0201 GETMET R9 R1 K14
- 0x002E9808, // 0202 ADD R11 K76 R8
- 0x7C240400, // 0203 CALL R9 2
- 0x78260049, // 0204 JMPF R9 #024F
- 0x8C24030C, // 0205 GETMET R9 R1 K12
- 0x002E9808, // 0206 ADD R11 K76 R8
- 0x7C240400, // 0207 CALL R9 2
- 0x8C28030C, // 0208 GETMET R10 R1 K12
- 0x00321808, // 0209 ADD R12 K12 R8
- 0x7C280400, // 020A CALL R10 2
- 0x8C2C030C, // 020B GETMET R11 R1 K12
- 0x00368808, // 020C ADD R13 K68 R8
- 0x7C2C0400, // 020D CALL R11 2
- 0x2030133A, // 020E NE R12 R9 K58
- 0x78320038, // 020F JMPF R12 #0249
- 0x88300113, // 0210 GETMBR R12 R0 K19
- 0x88301938, // 0211 GETMBR R12 R12 K56
- 0x8C301935, // 0212 GETMET R12 R12 K53
- 0x5C381200, // 0213 MOVE R14 R9
- 0x7C300400, // 0214 CALL R12 2
- 0x4C340000, // 0215 LDNIL R13
- 0x2034180D, // 0216 NE R13 R12 R13
- 0x78360030, // 0217 JMPF R13 #0249
- 0x60340013, // 0218 GETGBL R13 G19
- 0x7C340000, // 0219 CALL R13 0
- 0x9836A006, // 021A SETIDX R13 K80 R6
- 0x98367209, // 021B SETIDX R13 K57 R9
- 0x782E0000, // 021C JMPF R11 #021E
- 0x98368A0B, // 021D SETIDX R13 K69 R11
- 0x8C38193F, // 021E GETMET R14 R12 K63
- 0x5C401800, // 021F MOVE R16 R12
- 0x5C441A00, // 0220 MOVE R17 R13
- 0x5C481400, // 0221 MOVE R18 R10
- 0x7C380800, // 0222 CALL R14 4
- 0x50380000, // 0223 LDBOOL R14 0 0
- 0x603C0010, // 0224 GETGBL R15 G16
- 0x88400113, // 0225 GETMBR R16 R0 K19
- 0x88402137, // 0226 GETMBR R16 R16 K55
- 0x7C3C0200, // 0227 CALL R15 1
- 0xA802000B, // 0228 EXBLK 0 #0235
- 0x5C401E00, // 0229 MOVE R16 R15
- 0x7C400000, // 022A CALL R16 0
- 0x8C440153, // 022B GETMET R17 R0 K83
- 0x5C4C2000, // 022C MOVE R19 R16
- 0x5C501A00, // 022D MOVE R20 R13
- 0x7C440600, // 022E CALL R17 3
- 0x78460001, // 022F JMPF R17 #0232
- 0x50380200, // 0230 LDBOOL R14 1 0
- 0x70020000, // 0231 JMP #0233
- 0x7001FFF5, // 0232 JMP #0229
- 0xA8040001, // 0233 EXBLK 1 1
- 0x70020002, // 0234 JMP #0238
- 0x583C000D, // 0235 LDCONST R15 K13
- 0xAC3C0200, // 0236 CATCH R15 1 0
- 0xB0080000, // 0237 RAISE 2 R0 R0
- 0x5C3C1C00, // 0238 MOVE R15 R14
- 0x743E000E, // 0239 JMPT R15 #0249
- 0xB83E1000, // 023A GETNGBL R15 K8
- 0x8C3C1F09, // 023B GETMET R15 R15 K9
- 0x60440018, // 023C GETGBL R17 G24
- 0x58480054, // 023D LDCONST R18 K84
- 0x5C4C0C00, // 023E MOVE R19 R6
- 0x5C501200, // 023F MOVE R20 R9
- 0x5C541400, // 0240 MOVE R21 R10
- 0x7C440800, // 0241 CALL R17 4
- 0x58480012, // 0242 LDCONST R18 K18
- 0x7C3C0600, // 0243 CALL R15 3
- 0x883C0113, // 0244 GETMBR R15 R0 K19
- 0x8C3C1F4E, // 0245 GETMET R15 R15 K78
- 0x5C441200, // 0246 MOVE R17 R9
- 0x5C481A00, // 0247 MOVE R18 R13
- 0x7C3C0600, // 0248 CALL R15 3
- 0x001C0F07, // 0249 ADD R7 R7 K7
- 0x60300008, // 024A GETGBL R12 G8
- 0x5C340E00, // 024B MOVE R13 R7
- 0x7C300200, // 024C CALL R12 1
- 0x5C201800, // 024D MOVE R8 R12
- 0x7001FFB1, // 024E JMP #0201
- 0x8C24031A, // 024F GETMET R9 R1 K26
- 0x582C0031, // 0250 LDCONST R11 K49
- 0x7C240400, // 0251 CALL R9 2
- 0x70020028, // 0252 JMP #027C
- 0x4C180000, // 0253 LDNIL R6
- 0x601C0010, // 0254 GETGBL R7 G16
- 0x8C200306, // 0255 GETMET R8 R1 K6
- 0x7C200200, // 0256 CALL R8 1
- 0x04201107, // 0257 SUB R8 R8 K7
- 0x40220A08, // 0258 CONNECT R8 K5 R8
- 0x7C1C0200, // 0259 CALL R7 1
- 0xA8020013, // 025A EXBLK 0 #026F
- 0x5C200E00, // 025B MOVE R8 R7
- 0x7C200000, // 025C CALL R8 0
- 0x8C24030B, // 025D GETMET R9 R1 K11
- 0x5C2C1000, // 025E MOVE R11 R8
- 0x7C240400, // 025F CALL R9 2
- 0x8C280535, // 0260 GETMET R10 R2 K53
- 0x5C301200, // 0261 MOVE R12 R9
- 0x58340055, // 0262 LDCONST R13 K85
- 0x7C280600, // 0263 CALL R10 3
- 0x1C281505, // 0264 EQ R10 R10 K5
- 0x782A0005, // 0265 JMPF R10 #026C
- 0x60280009, // 0266 GETGBL R10 G9
- 0x402E2536, // 0267 CONNECT R11 K18 K54
- 0x942C120B, // 0268 GETIDX R11 R9 R11
- 0x7C280200, // 0269 CALL R10 1
- 0x5C181400, // 026A MOVE R6 R10
- 0x70020000, // 026B JMP #026D
- 0x7001FFED, // 026C JMP #025B
- 0xA8040001, // 026D EXBLK 1 1
- 0x70020002, // 026E JMP #0272
- 0x581C000D, // 026F LDCONST R7 K13
- 0xAC1C0200, // 0270 CATCH R7 1 0
- 0xB0080000, // 0271 RAISE 2 R0 R0
- 0x4C1C0000, // 0272 LDNIL R7
- 0x201C0C07, // 0273 NE R7 R6 R7
- 0x781E0006, // 0274 JMPF R7 #027C
- 0x881C0113, // 0275 GETMBR R7 R0 K19
- 0x8C1C0F56, // 0276 GETMET R7 R7 K86
- 0x5C240C00, // 0277 MOVE R9 R6
- 0x7C1C0400, // 0278 CALL R7 2
- 0x8C1C031A, // 0279 GETMET R7 R1 K26
- 0x58240031, // 027A LDCONST R9 K49
- 0x7C1C0400, // 027B CALL R7 2
- 0x78160011, // 027C JMPF R5 #028F
- 0x8C180357, // 027D GETMET R6 R1 K87
- 0x58200058, // 027E LDCONST R8 K88
+ 0x7001FF5E, // 018C JMP #00EC
+ 0x581C0049, // 018D LDCONST R7 K73
+ 0xAC1C0200, // 018E CATCH R7 1 0
+ 0xB0080000, // 018F RAISE 2 R0 R0
+ 0xB81E1000, // 0190 GETNGBL R7 K8
+ 0x8C1C0F09, // 0191 GETMET R7 R7 K9
+ 0x60240018, // 0192 GETGBL R9 G24
+ 0x5828004A, // 0193 LDCONST R10 K74
+ 0x602C0008, // 0194 GETGBL R11 G8
+ 0x8830010C, // 0195 GETMBR R12 R0 K12
+ 0x88301937, // 0196 GETMBR R12 R12 K55
+ 0x7C2C0200, // 0197 CALL R11 1
+ 0x7C240400, // 0198 CALL R9 2
+ 0x5828000B, // 0199 LDCONST R10 K11
+ 0x7C1C0600, // 019A CALL R7 3
+ 0x78160008, // 019B JMPF R5 #01A5
+ 0xB81E1000, // 019C GETNGBL R7 K8
+ 0x8C1C0F09, // 019D GETMET R7 R7 K9
+ 0x60240018, // 019E GETGBL R9 G24
+ 0x5828004B, // 019F LDCONST R10 K75
+ 0x5C2C0A00, // 01A0 MOVE R11 R5
+ 0x7C240400, // 01A1 CALL R9 2
+ 0x5828000B, // 01A2 LDCONST R10 K11
+ 0x7C1C0600, // 01A3 CALL R7 3
+ 0x7002000C, // 01A4 JMP #01B2
+ 0x741A0002, // 01A5 JMPT R6 #01A9
+ 0x881C010C, // 01A6 GETMBR R7 R0 K12
+ 0x881C0F31, // 01A7 GETMBR R7 R7 K49
+ 0x741E0005, // 01A8 JMPT R7 #01AF
+ 0x881C010C, // 01A9 GETMBR R7 R0 K12
+ 0x50200200, // 01AA LDBOOL R8 1 0
+ 0x901E6208, // 01AB SETMBR R7 K49 R8
+ 0x881C010C, // 01AC GETMBR R7 R0 K12
+ 0x8C1C0F13, // 01AD GETMET R7 R7 K19
+ 0x7C1C0200, // 01AE CALL R7 1
+ 0x8C1C0314, // 01AF GETMET R7 R1 K20
+ 0x5824002F, // 01B0 LDCONST R9 K47
+ 0x7C1C0400, // 01B1 CALL R7 2
+ 0x700200BB, // 01B2 JMP #026F
+ 0x8C180305, // 01B3 GETMET R6 R1 K5
+ 0x5820004C, // 01B4 LDCONST R8 K76
+ 0x7C180400, // 01B5 CALL R6 2
+ 0x781A002B, // 01B6 JMPF R6 #01E3
+ 0x8C18030E, // 01B7 GETMET R6 R1 K14
+ 0x5820004D, // 01B8 LDCONST R8 K77
+ 0x7C180400, // 01B9 CALL R6 2
+ 0x8C1C030E, // 01BA GETMET R7 R1 K14
+ 0x5824000E, // 01BB LDCONST R9 K14
+ 0x7C1C0400, // 01BC CALL R7 2
+ 0x8C20030E, // 01BD GETMET R8 R1 K14
+ 0x58280044, // 01BE LDCONST R10 K68
+ 0x7C200400, // 01BF CALL R8 2
+ 0xB8261000, // 01C0 GETNGBL R9 K8
+ 0x8C241309, // 01C1 GETMET R9 R9 K9
+ 0x602C0018, // 01C2 GETGBL R11 G24
+ 0x5830004E, // 01C3 LDCONST R12 K78
+ 0x5C340C00, // 01C4 MOVE R13 R6
+ 0x5C380E00, // 01C5 MOVE R14 R7
+ 0x7C2C0600, // 01C6 CALL R11 3
+ 0x5830000B, // 01C7 LDCONST R12 K11
+ 0x7C240600, // 01C8 CALL R9 3
+ 0x8824010C, // 01C9 GETMBR R9 R0 K12
+ 0x88241338, // 01CA GETMBR R9 R9 K56
+ 0x8C241335, // 01CB GETMET R9 R9 K53
+ 0x5C2C0C00, // 01CC MOVE R11 R6
+ 0x7C240400, // 01CD CALL R9 2
+ 0x4C280000, // 01CE LDNIL R10
+ 0x2028120A, // 01CF NE R10 R9 R10
+ 0x782A000D, // 01D0 JMPF R10 #01DF
+ 0x60280013, // 01D1 GETGBL R10 G19
+ 0x7C280000, // 01D2 CALL R10 0
+ 0x78220000, // 01D3 JMPF R8 #01D5
+ 0x982A8A08, // 01D4 SETIDX R10 K69 R8
+ 0x8C2C133F, // 01D5 GETMET R11 R9 K63
+ 0x5C341200, // 01D6 MOVE R13 R9
+ 0x5C381400, // 01D7 MOVE R14 R10
+ 0x5C3C0E00, // 01D8 MOVE R15 R7
+ 0x7C2C0800, // 01D9 CALL R11 4
+ 0x882C010C, // 01DA GETMBR R11 R0 K12
+ 0x8C2C174F, // 01DB GETMET R11 R11 K79
+ 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
+ 0x7C280400, // 01E1 CALL R10 2
+ 0x7002008B, // 01E2 JMP #026F
+ 0x8C180305, // 01E3 GETMET R6 R1 K5
+ 0x58200050, // 01E4 LDCONST R8 K80
+ 0x7C180400, // 01E5 CALL R6 2
+ 0x781A005E, // 01E6 JMPF R6 #0246
+ 0x8C18030E, // 01E7 GETMET R6 R1 K14
+ 0x58200051, // 01E8 LDCONST R8 K81
+ 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
+ 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
+ 0x7C240400, // 01F6 CALL R9 2
+ 0x78260049, // 01F7 JMPF R9 #0242
+ 0x8C24030E, // 01F8 GETMET R9 R1 K14
+ 0x002E9A08, // 01F9 ADD R11 K77 R8
+ 0x7C240400, // 01FA CALL R9 2
+ 0x8C28030E, // 01FB GETMET R10 R1 K14
+ 0x00321C08, // 01FC ADD R12 K14 R8
+ 0x7C280400, // 01FD CALL R10 2
+ 0x8C2C030E, // 01FE GETMET R11 R1 K14
+ 0x00368808, // 01FF ADD R13 K68 R8
+ 0x7C2C0400, // 0200 CALL R11 2
+ 0x2030133A, // 0201 NE R12 R9 K58
+ 0x78320038, // 0202 JMPF R12 #023C
+ 0x8830010C, // 0203 GETMBR R12 R0 K12
+ 0x88301938, // 0204 GETMBR R12 R12 K56
+ 0x8C301935, // 0205 GETMET R12 R12 K53
+ 0x5C381200, // 0206 MOVE R14 R9
+ 0x7C300400, // 0207 CALL R12 2
+ 0x4C340000, // 0208 LDNIL R13
+ 0x2034180D, // 0209 NE R13 R12 R13
+ 0x78360030, // 020A JMPF R13 #023C
+ 0x60340013, // 020B GETGBL R13 G19
+ 0x7C340000, // 020C CALL R13 0
+ 0x9836A206, // 020D SETIDX R13 K81 R6
+ 0x98367209, // 020E SETIDX R13 K57 R9
+ 0x782E0000, // 020F JMPF R11 #0211
+ 0x98368A0B, // 0210 SETIDX R13 K69 R11
+ 0x8C38193F, // 0211 GETMET R14 R12 K63
+ 0x5C401800, // 0212 MOVE R16 R12
+ 0x5C441A00, // 0213 MOVE R17 R13
+ 0x5C481400, // 0214 MOVE R18 R10
+ 0x7C380800, // 0215 CALL R14 4
+ 0x50380000, // 0216 LDBOOL R14 0 0
+ 0x603C0010, // 0217 GETGBL R15 G16
+ 0x8840010C, // 0218 GETMBR R16 R0 K12
+ 0x88402137, // 0219 GETMBR R16 R16 K55
+ 0x7C3C0200, // 021A CALL R15 1
+ 0xA802000B, // 021B EXBLK 0 #0228
+ 0x5C401E00, // 021C MOVE R16 R15
+ 0x7C400000, // 021D CALL R16 0
+ 0x8C440154, // 021E GETMET R17 R0 K84
+ 0x5C4C2000, // 021F MOVE R19 R16
+ 0x5C501A00, // 0220 MOVE R20 R13
+ 0x7C440600, // 0221 CALL R17 3
+ 0x78460001, // 0222 JMPF R17 #0225
+ 0x50380200, // 0223 LDBOOL R14 1 0
+ 0x70020000, // 0224 JMP #0226
+ 0x7001FFF5, // 0225 JMP #021C
+ 0xA8040001, // 0226 EXBLK 1 1
+ 0x70020002, // 0227 JMP #022B
+ 0x583C0049, // 0228 LDCONST R15 K73
+ 0xAC3C0200, // 0229 CATCH R15 1 0
+ 0xB0080000, // 022A RAISE 2 R0 R0
+ 0x5C3C1C00, // 022B MOVE R15 R14
+ 0x743E000E, // 022C JMPT R15 #023C
+ 0xB83E1000, // 022D GETNGBL R15 K8
+ 0x8C3C1F09, // 022E GETMET R15 R15 K9
+ 0x60440018, // 022F GETGBL R17 G24
+ 0x58480055, // 0230 LDCONST R18 K85
+ 0x5C4C0C00, // 0231 MOVE R19 R6
+ 0x5C501200, // 0232 MOVE R20 R9
+ 0x5C541400, // 0233 MOVE R21 R10
+ 0x7C440800, // 0234 CALL R17 4
+ 0x5848000B, // 0235 LDCONST R18 K11
+ 0x7C3C0600, // 0236 CALL R15 3
+ 0x883C010C, // 0237 GETMBR R15 R0 K12
+ 0x8C3C1F4F, // 0238 GETMET R15 R15 K79
+ 0x5C441200, // 0239 MOVE R17 R9
+ 0x5C481A00, // 023A MOVE R18 R13
+ 0x7C3C0600, // 023B CALL R15 3
+ 0x001C0F2E, // 023C ADD R7 R7 K46
+ 0x60300008, // 023D GETGBL R12 G8
+ 0x5C340E00, // 023E MOVE R13 R7
+ 0x7C300200, // 023F CALL R12 1
+ 0x5C201800, // 0240 MOVE R8 R12
+ 0x7001FFB1, // 0241 JMP #01F4
+ 0x8C240314, // 0242 GETMET R9 R1 K20
+ 0x582C002F, // 0243 LDCONST R11 K47
+ 0x7C240400, // 0244 CALL R9 2
+ 0x70020028, // 0245 JMP #026F
+ 0x4C180000, // 0246 LDNIL R6
+ 0x601C0010, // 0247 GETGBL R7 G16
+ 0x8C200333, // 0248 GETMET R8 R1 K51
+ 0x7C200200, // 0249 CALL R8 1
+ 0x0420112E, // 024A SUB R8 R8 K46
+ 0x40225208, // 024B CONNECT R8 K41 R8
+ 0x7C1C0200, // 024C CALL R7 1
+ 0xA8020013, // 024D EXBLK 0 #0262
+ 0x5C200E00, // 024E MOVE R8 R7
+ 0x7C200000, // 024F CALL R8 0
+ 0x8C240334, // 0250 GETMET R9 R1 K52
+ 0x5C2C1000, // 0251 MOVE R11 R8
+ 0x7C240400, // 0252 CALL R9 2
+ 0x8C280535, // 0253 GETMET R10 R2 K53
+ 0x5C301200, // 0254 MOVE R12 R9
+ 0x58340056, // 0255 LDCONST R13 K86
+ 0x7C280600, // 0256 CALL R10 3
+ 0x1C281529, // 0257 EQ R10 R10 K41
+ 0x782A0005, // 0258 JMPF R10 #025F
+ 0x60280009, // 0259 GETGBL R10 G9
+ 0x402E1736, // 025A CONNECT R11 K11 K54
+ 0x942C120B, // 025B GETIDX R11 R9 R11
+ 0x7C280200, // 025C CALL R10 1
+ 0x5C181400, // 025D MOVE R6 R10
+ 0x70020000, // 025E JMP #0260
+ 0x7001FFED, // 025F JMP #024E
+ 0xA8040001, // 0260 EXBLK 1 1
+ 0x70020002, // 0261 JMP #0265
+ 0x581C0049, // 0262 LDCONST R7 K73
+ 0xAC1C0200, // 0263 CATCH R7 1 0
+ 0xB0080000, // 0264 RAISE 2 R0 R0
+ 0x4C1C0000, // 0265 LDNIL R7
+ 0x201C0C07, // 0266 NE R7 R6 R7
+ 0x781E0006, // 0267 JMPF R7 #026F
+ 0x881C010C, // 0268 GETMBR R7 R0 K12
+ 0x8C1C0F57, // 0269 GETMET R7 R7 K87
+ 0x5C240C00, // 026A MOVE R9 R6
+ 0x7C1C0400, // 026B CALL R7 2
+ 0x8C1C0314, // 026C GETMET R7 R1 K20
+ 0x5824002F, // 026D LDCONST R9 K47
+ 0x7C1C0400, // 026E CALL R7 2
+ 0x78160011, // 026F JMPF R5 #0282
+ 0x8C180358, // 0270 GETMET R6 R1 K88
+ 0x58200059, // 0271 LDCONST R8 K89
+ 0x7C180400, // 0272 CALL R6 2
+ 0x8C18035A, // 0273 GETMET R6 R1 K90
+ 0x7C180200, // 0274 CALL R6 1
+ 0x8C18035B, // 0275 GETMET R6 R1 K91
+ 0x60200018, // 0276 GETGBL R8 G24
+ 0x5824005C, // 0277 LDCONST R9 K92
+ 0x8C28035D, // 0278 GETMET R10 R1 K93
+ 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
0x7C180400, // 027F CALL R6 2
- 0x8C180359, // 0280 GETMET R6 R1 K89
+ 0x8C180360, // 0280 GETMET R6 R1 K96
0x7C180200, // 0281 CALL R6 1
- 0x8C18035A, // 0282 GETMET R6 R1 K90
- 0x60200018, // 0283 GETGBL R8 G24
- 0x5824005B, // 0284 LDCONST R9 K91
- 0x8C28035C, // 0285 GETMET R10 R1 K92
- 0x5C300A00, // 0286 MOVE R12 R5
- 0x7C280400, // 0287 CALL R10 2
- 0x7C200400, // 0288 CALL R8 2
- 0x7C180400, // 0289 CALL R6 2
- 0x8C18035D, // 028A GETMET R6 R1 K93
- 0x8820035E, // 028B GETMBR R8 R1 K94
- 0x7C180400, // 028C CALL R6 2
- 0x8C18035F, // 028D GETMET R6 R1 K95
- 0x7C180200, // 028E CALL R6 1
- 0xA8040001, // 028F EXBLK 1 1
- 0x7002001D, // 0290 JMP #02AF
- 0xAC180002, // 0291 CATCH R6 0 2
- 0x7002001A, // 0292 JMP #02AE
- 0xB8221000, // 0293 GETNGBL R8 K8
- 0x8C201109, // 0294 GETMET R8 R8 K9
+ 0xA8040001, // 0282 EXBLK 1 1
+ 0x7002001D, // 0283 JMP #02A2
+ 0xAC180002, // 0284 CATCH R6 0 2
+ 0x7002001A, // 0285 JMP #02A1
+ 0xB8221000, // 0286 GETNGBL R8 K8
+ 0x8C201109, // 0287 GETMET R8 R8 K9
+ 0x60280018, // 0288 GETGBL R10 G24
+ 0x582C0061, // 0289 LDCONST R11 K97
+ 0x5C300C00, // 028A MOVE R12 R6
+ 0x5C340E00, // 028B MOVE R13 R7
+ 0x7C280600, // 028C CALL R10 3
+ 0x582C0062, // 028D LDCONST R11 K98
+ 0x7C200600, // 028E CALL R8 3
+ 0x8C200358, // 028F GETMET R8 R1 K88
+ 0x58280059, // 0290 LDCONST R10 K89
+ 0x7C200400, // 0291 CALL R8 2
+ 0x8C20035A, // 0292 GETMET R8 R1 K90
+ 0x7C200200, // 0293 CALL R8 1
+ 0x8C20035B, // 0294 GETMET R8 R1 K91
0x60280018, // 0295 GETGBL R10 G24
- 0x582C0060, // 0296 LDCONST R11 K96
+ 0x582C0063, // 0296 LDCONST R11 K99
0x5C300C00, // 0297 MOVE R12 R6
0x5C340E00, // 0298 MOVE R13 R7
0x7C280600, // 0299 CALL R10 3
- 0x582C0061, // 029A LDCONST R11 K97
- 0x7C200600, // 029B CALL R8 3
- 0x8C200357, // 029C GETMET R8 R1 K87
- 0x58280058, // 029D LDCONST R10 K88
- 0x7C200400, // 029E CALL R8 2
- 0x8C200359, // 029F GETMET R8 R1 K89
- 0x7C200200, // 02A0 CALL R8 1
- 0x8C20035A, // 02A1 GETMET R8 R1 K90
- 0x60280018, // 02A2 GETGBL R10 G24
- 0x582C0062, // 02A3 LDCONST R11 K98
- 0x5C300C00, // 02A4 MOVE R12 R6
- 0x5C340E00, // 02A5 MOVE R13 R7
- 0x7C280600, // 02A6 CALL R10 3
- 0x7C200400, // 02A7 CALL R8 2
- 0x8C20035D, // 02A8 GETMET R8 R1 K93
- 0x8828035E, // 02A9 GETMBR R10 R1 K94
- 0x7C200400, // 02AA CALL R8 2
- 0x8C20035F, // 02AB GETMET R8 R1 K95
- 0x7C200200, // 02AC CALL R8 1
- 0x70020000, // 02AD JMP #02AF
- 0xB0080000, // 02AE RAISE 2 R0 R0
- 0x80000000, // 02AF RET 0
+ 0x7C200400, // 029A CALL R8 2
+ 0x8C20035E, // 029B GETMET R8 R1 K94
+ 0x8828035F, // 029C GETMBR R10 R1 K95
+ 0x7C200400, // 029D CALL R8 2
+ 0x8C200360, // 029E GETMET R8 R1 K96
+ 0x7C200200, // 029F CALL R8 1
+ 0x70020000, // 02A0 JMP #02A2
+ 0xB0080000, // 02A1 RAISE 2 R0 R0
+ 0x80000000, // 02A2 RET 0
})
)
);
@@ -3151,7 +3139,7 @@ be_local_closure(Matter_UI_show_qrcode, /* name */
********************************************************************/
be_local_closure(Matter_UI_show_enable, /* name */
be_nested_proto(
- 10, /* nstack */
+ 11, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -3159,7 +3147,7 @@ be_local_closure(Matter_UI_show_enable, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
+ ( &(const bvalue[16]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(matter_enabled),
/* K2 */ be_nested_str_weak(content_send),
@@ -3172,11 +3160,14 @@ be_local_closure(Matter_UI_show_enable, /* name */
/* K9 */ be_nested_str_weak(commissioning_open),
/* K10 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27comm_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27comm_X27_X20_X25s_X3E),
/* K11 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27comm_X27_X3E_X3Cb_X3ECommissioning_X20open_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E),
- /* K12 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K12 */ be_nested_str_weak(disable_bridge_mode),
+ /* K13 */ be_nested_str_weak(_X20checked),
+ /* K14 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27nobridge_X27_X25s_X3E_X3Cb_X3EForce_X20Static_X20endpoints_X3C_X2Fb_X3E_X20_X28non_X2Dbridge_X29_X3C_X2Fp_X3E),
+ /* K15 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
}),
be_str_weak(show_enable),
&be_const_str_solidified,
- ( &(const binstruction[44]) { /* code */
+ ( &(const binstruction[56]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x88080101, // 0001 GETMBR R2 R0 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
@@ -3199,7 +3190,7 @@ be_local_closure(Matter_UI_show_enable, /* name */
0x7C100400, // 0013 CALL R4 2
0x8C100101, // 0014 GETMET R4 R0 K1
0x7C100200, // 0015 CALL R4 1
- 0x78120010, // 0016 JMPF R4 #0028
+ 0x7812001C, // 0016 JMPF R4 #0034
0x88100108, // 0017 GETMBR R4 R0 K8
0x88100909, // 0018 GETMBR R4 R4 K9
0x4C140000, // 0019 LDNIL R5
@@ -3217,10 +3208,22 @@ be_local_closure(Matter_UI_show_enable, /* name */
0x8C140302, // 0025 GETMET R5 R1 K2
0x581C000B, // 0026 LDCONST R7 K11
0x7C140400, // 0027 CALL R5 2
- 0x8C100302, // 0028 GETMET R4 R1 K2
- 0x5818000C, // 0029 LDCONST R6 K12
- 0x7C100400, // 002A CALL R4 2
- 0x80000000, // 002B RET 0
+ 0x88140108, // 0028 GETMBR R5 R0 K8
+ 0x88140B0C, // 0029 GETMBR R5 R5 K12
+ 0x78160001, // 002A JMPF R5 #002D
+ 0x5814000D, // 002B LDCONST R5 K13
+ 0x70020000, // 002C JMP #002E
+ 0x58140005, // 002D LDCONST R5 K5
+ 0x8C180302, // 002E GETMET R6 R1 K2
+ 0x60200018, // 002F GETGBL R8 G24
+ 0x5824000E, // 0030 LDCONST R9 K14
+ 0x5C280A00, // 0031 MOVE R10 R5
+ 0x7C200400, // 0032 CALL R8 2
+ 0x7C180400, // 0033 CALL R6 2
+ 0x8C100302, // 0034 GETMET R4 R1 K2
+ 0x5818000F, // 0035 LDCONST R6 K15
+ 0x7C100400, // 0036 CALL R4 2
+ 0x80000000, // 0037 RET 0
})
)
);
diff --git a/lib/libesp32/berry_tasmota/include/be_ctypes.h b/lib/libesp32/berry_tasmota/include/be_ctypes.h
index 5e029100b..abaffa8c3 100644
--- a/lib/libesp32/berry_tasmota/include/be_ctypes.h
+++ b/lib/libesp32/berry_tasmota/include/be_ctypes.h
@@ -60,7 +60,13 @@ typedef struct be_ctypes_classes_t {
const be_ctypes_class_t * classes;
} be_ctypes_classes_t;
-BE_EXPORT_VARIABLE const bclass be_class_ctypes_bytes;
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern const bclass be_class_ctypes_bytes;
+#ifdef __cplusplus
+}
+#endif
static void ctypes_register_class(bvm *vm, const bclass * ctypes_class) {
be_pushntvclass(vm, ctypes_class);
diff --git a/lib/libesp32/berry_tasmota/src/be_crypto_lib.c b/lib/libesp32/berry_tasmota/src/be_crypto_lib.c
index 0162bc369..5cb5d7f10 100644
--- a/lib/libesp32/berry_tasmota/src/be_crypto_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_crypto_lib.c
@@ -14,8 +14,10 @@ extern int m_crypto_random(bvm *vm);
extern int m_rsa_rsassa_pkcs1_v1_5(bvm *vm);
extern int m_aes_ccm_init(bvm *vm);
-extern int m_aes_ccm_encryt(bvm *vm);
-extern int m_aes_ccm_decryt(bvm *vm);
+extern int m_aes_ccm_encrypt(bvm *vm);
+extern int m_aes_ccm_encrypt1(bvm *vm);
+extern int m_aes_ccm_decrypt(bvm *vm);
+extern int m_aes_ccm_decrypt1(bvm *vm);
extern int m_aes_ccm_tag(bvm *vm);
extern int m_aes_gcm_init(bvm *vm);
@@ -134,9 +136,12 @@ class be_class_aes_ccm (scope: global, name: AES_CCM) {
.p2, var
init, func(m_aes_ccm_init)
- encrypt, func(m_aes_ccm_encryt)
- decrypt, func(m_aes_ccm_decryt)
+ encrypt, func(m_aes_ccm_encrypt)
+ decrypt, func(m_aes_ccm_decrypt)
tag, func(m_aes_ccm_tag)
+
+ decrypt1, static_func(m_aes_ccm_decrypt1)
+ encrypt1, static_func(m_aes_ccm_encrypt1)
}
class be_class_aes_gcm (scope: global, name: AES_GCM) {
diff --git a/lib/libesp32/berry_tasmota/src/be_energylib.c b/lib/libesp32/berry_tasmota/src/be_energylib.c
index 3142872be..984af678b 100644
--- a/lib/libesp32/berry_tasmota/src/be_energylib.c
+++ b/lib/libesp32/berry_tasmota/src/be_energylib.c
@@ -10,6 +10,7 @@
#ifdef USE_ENERGY_SENSOR
extern struct ENERGY Energy;
+extern int energy_update_total(bvm *vm);
#include "solidify/solidified_energy.h"
#include "be_fixed_energy.h"
@@ -24,6 +25,8 @@ module energy (scope: global) {
read, closure(energy_read_closure)
member, closure(energy_member_closure)
setmember, closure(energy_setmember_closure)
+
+ update_total, func(energy_update_total)
}
@const_object_info_end */
diff --git a/lib/libesp32/berry_tasmota/src/be_port.cpp b/lib/libesp32/berry_tasmota/src/be_port.cpp
index 0cfac3573..647c94269 100644
--- a/lib/libesp32/berry_tasmota/src/be_port.cpp
+++ b/lib/libesp32/berry_tasmota/src/be_port.cpp
@@ -140,27 +140,25 @@ extern "C" {
returnit = 1;
case MPATH_ISDIR:
case MPATH_MODIFIED: {
- // listdir and isdir both need to open the file.
+ //isdir needs to open the file, listdir does not
// we use be_fopen because it pre-pends with '/'.
// without this TAS fails to find stuff at boot...
File *dir = (File *)be_fopen(path, "r");
if (dir) {
+ String fpath;
+ String fname;
switch (action){
case MPATH_LISTDIR:
- // fill out the list object
- dir->rewindDirectory();
- while (1) {
- File entry = dir->openNextFile();
- if (!entry) {
- break;
- }
- const char * fn = entry.name();
- if (strcmp(fn, ".") && strcmp(fn, "..")) {
- be_pushstring(vm, fn);
- be_data_push(vm, -2);
- be_pop(vm, 1);
- }
+ dir->seekDir(0);
+ fpath = dir->getNextFileName();
+ while (fpath.length() != 0) {
+ fname = fpath.substring(fpath.lastIndexOf("/") + 1);
+ const char * fn = fname.c_str();
+ be_pushstring(vm, fn);
+ be_data_push(vm, -2);
+ be_pop(vm, 1);
+ fpath = dir->getNextFileName();
}
break;
case MPATH_ISDIR:
diff --git a/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c b/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c
index 8b64ce03b..e0fd4cdf8 100644
--- a/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c
@@ -21,6 +21,7 @@ extern int l_getoption(bvm *vm);
extern int l_millis(bvm *vm);
extern int l_timereached(bvm *vm);
extern int l_rtc(bvm *vm);
+extern int l_rtc_utc(bvm *vm);
extern int l_time_dump(bvm *vm);
extern int l_strftime(bvm *vm);
extern int l_strptime(bvm *vm);
@@ -33,6 +34,7 @@ extern int l_delay(bvm *vm);
extern int l_delay_microseconds(bvm *vm);
extern int l_scaleuint(bvm *vm);
extern int l_logInfo(bvm *vm);
+extern int l_loglevel(bvm *vm);
extern int l_save(bvm *vm);
extern int t_random_byte(bvm *vm);
extern int l_locale(bvm *vm);
@@ -99,6 +101,7 @@ class be_class_tasmota (scope: global, name: Tasmota) {
millis, func(l_millis)
time_reached, func(l_timereached)
rtc, func(l_rtc)
+ rtc_utc, func(l_rtc_utc)
time_dump, func(l_time_dump)
strftime, func(l_strftime)
strptime, func(l_strptime)
@@ -109,8 +112,9 @@ class be_class_tasmota (scope: global, name: Tasmota) {
yield, func(l_yield)
delay, func(l_delay)
delay_microseconds, func(l_delay_microseconds)
- scale_uint, func(l_scaleuint)
+ scale_uint, static_func(l_scaleuint)
log, func(l_logInfo)
+ loglevel, func(l_loglevel)
save, func(l_save)
locale, func(l_locale)
diff --git a/lib/libesp32/berry_tasmota/src/be_webserver_lib.c b/lib/libesp32/berry_tasmota/src/be_webserver_lib.c
index 0cdf4ede0..541233893 100644
--- a/lib/libesp32/berry_tasmota/src/be_webserver_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_webserver_lib.c
@@ -9,6 +9,9 @@
#ifdef USE_WEBSERVER
+#include "be_exec.h"
+#include "be_vm.h"
+
extern int w_webserver_member(bvm *vm);
extern int w_webserver_on(bvm *vm);
extern int w_webserver_state(bvm *vm);
@@ -32,6 +35,107 @@ extern int w_webserver_arg_name(bvm *vm);
extern int w_webserver_has_arg(bvm *vm);
+// To allow a full restart of the Berry VM, we need to supplement the webserver Request Handler
+// model from Arduino framework.
+// We use our own list of callbacks
+
+#define WEBSERVER_REQ_HANDLER_HOOK_MAX 16 // max number of callbacks, each callback requires a distinct address
+typedef struct be_webserver_callback_hook_t {
+ bvm *vm; // make sure we are using the same VM
+ bvalue f; // the Berry function to call
+} be_webserver_callback_hook_t;
+
+static be_webserver_callback_hook_t be_webserver_cb_hooks[WEBSERVER_REQ_HANDLER_HOOK_MAX];
+
+static void be_call_webserver_hook_cb(int32_t num);
+typedef void (*berry_webserver_cb_t)(void);
+#define WEBSERVER_HOOK_CB(n) void berry_webserver_cb_##n(void) { be_call_webserver_hook_cb(n); }
+// list the callbacks
+WEBSERVER_HOOK_CB(0);
+WEBSERVER_HOOK_CB(1);
+WEBSERVER_HOOK_CB(2);
+WEBSERVER_HOOK_CB(3);
+WEBSERVER_HOOK_CB(4);
+WEBSERVER_HOOK_CB(5);
+WEBSERVER_HOOK_CB(6);
+WEBSERVER_HOOK_CB(7);
+WEBSERVER_HOOK_CB(8);
+WEBSERVER_HOOK_CB(9);
+WEBSERVER_HOOK_CB(10);
+WEBSERVER_HOOK_CB(11);
+WEBSERVER_HOOK_CB(12);
+WEBSERVER_HOOK_CB(13);
+WEBSERVER_HOOK_CB(14);
+WEBSERVER_HOOK_CB(15);
+
+// array of callbacks
+static const berry_webserver_cb_t berry_callback_array[WEBSERVER_REQ_HANDLER_HOOK_MAX] = {
+ berry_webserver_cb_0,
+ berry_webserver_cb_1,
+ berry_webserver_cb_2,
+ berry_webserver_cb_3,
+ berry_webserver_cb_4,
+ berry_webserver_cb_5,
+ berry_webserver_cb_6,
+ berry_webserver_cb_7,
+ berry_webserver_cb_8,
+ berry_webserver_cb_9,
+ berry_webserver_cb_10,
+ berry_webserver_cb_11,
+ berry_webserver_cb_12,
+ berry_webserver_cb_13,
+ berry_webserver_cb_14,
+ berry_webserver_cb_15,
+};
+
+// Return slot number
+// -1 if no more available
+berry_webserver_cb_t be_webserver_allocate_hook(bvm *vm, int32_t slot, bvalue *f) {
+ if (slot < 0 || slot >= WEBSERVER_REQ_HANDLER_HOOK_MAX) return NULL; // invalid call, avoid a crash
+ be_webserver_cb_hooks[slot].vm = vm;
+ be_webserver_cb_hooks[slot].f = *f;
+ return berry_callback_array[slot];
+}
+
+/*********************************************************************************************\
+ * `be_webserver_cb_deinit`:
+ * Clean any callback for this VM
+\*********************************************************************************************/
+void be_webserver_cb_deinit(bvm *vm) {
+ for (int32_t i = 0; i < WEBSERVER_REQ_HANDLER_HOOK_MAX; i++) {
+ if (be_webserver_cb_hooks[i].vm == vm) {
+ be_webserver_cb_hooks[i].vm = NULL;
+ }
+ }
+}
+
+/*********************************************************************************************\
+ * Callback structures
+ *
+\*********************************************************************************************/
+void be_call_webserver_hook_cb(int32_t num) {
+ // call berry cb dispatcher
+ int32_t ret = 0;
+ // retrieve vm and function
+ if (num < 0 || num >= WEBSERVER_REQ_HANDLER_HOOK_MAX || be_webserver_cb_hooks[num].vm == NULL) return; // invalid call, avoid a crash
+
+ bvm * vm = be_webserver_cb_hooks[num].vm;
+ bvalue *f = &be_webserver_cb_hooks[num].f;
+
+ // push function (don't check type)
+ bvalue *top = be_incrtop(vm);
+ *top = *f;
+
+ ret = be_pcall(vm, 0); // 4 arguments
+ if (ret != 0) {
+ if (vm->obshook != NULL) (*vm->obshook)(vm, BE_OBS_PCALL_ERROR);
+ be_pop(vm, be_top(vm)); // clear Berry stack
+ return;
+ }
+ be_pop(vm, 1); // remove result
+ return;
+}
+
/* @const_object_info_begin
module webserver (scope: global) {
member, func(w_webserver_member)
diff --git a/lib/libesp32/berry_tasmota/src/embedded/partition_core.be b/lib/libesp32/berry_tasmota/src/embedded/partition_core.be
index abf48e813..08736292c 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/partition_core.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/partition_core.be
@@ -300,8 +300,8 @@ class Partition_otadata
#- load otadata from SPI Flash -#
def load()
import flash
- var otadata0 = flash.read(0xE000, 32)
- var otadata1 = flash.read(0xF000, 32)
+ var otadata0 = flash.read(self.offset, 32)
+ var otadata1 = flash.read(self.offset + 0x1000, 32)
self.seq0 = otadata0.get(0, 4) #- ota_seq for block 1 -#
self.seq1 = otadata1.get(0, 4) #- ota_seq for block 2 -#
var valid0 = otadata0.get(28, 4) == self.crc32_ota_seq(self.seq0) #- is CRC32 valid? -#
diff --git a/lib/libesp32/berry_tasmota/src/embedded/persist.be b/lib/libesp32/berry_tasmota/src/embedded/persist.be
index 35436c3e3..901b7e2d5 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/persist.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/persist.be
@@ -111,7 +111,7 @@ class Persist
import json
if isinstance(v, map)
self.json_fdump_map(f, v)
- elif isinstance(v, list)v
+ elif isinstance(v, list)
self.json_fdump_list(f, v)
else
f.write(json.dump(v))
diff --git a/lib/libesp32/berry_tasmota/src/embedded/rule_matcher.be b/lib/libesp32/berry_tasmota/src/embedded/rule_matcher.be
index 218cc6f53..79ed625fc 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/rule_matcher.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/rule_matcher.be
@@ -1,11 +1,11 @@
#- Native code used for testing and code solidification -#
#- Do not use it directly -#
-#@ solidify:Rule_Matcher_Key
-#@ solidify:Rule_Matcher_Wildcard
-#@ solidify:Rule_Matcher_Operator
-#@ solidify:Rule_Matcher_Array
-#@ solidify:Rule_Matcher_AND_List
+#@ solidify:Rule_Matcher.Rule_Matcher_Key
+#@ solidify:Rule_Matcher.Rule_Matcher_Wildcard
+#@ solidify:Rule_Matcher.Rule_Matcher_Operator
+#@ solidify:Rule_Matcher.Rule_Matcher_Array
+#@ solidify:Rule_Matcher.Rule_Matcher_AND_List
#@ solidify:Rule_Matcher
diff --git a/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be b/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be
index a9bad3416..bd06672c2 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/tasmota_class.be
@@ -85,8 +85,8 @@ class Tasmota
# Rules
def add_rule(pat, f, id)
self.check_not_method(f)
- if !self._rules
- self._rules=[]
+ if self._rules == nil
+ self._rules = []
end
if type(f) == 'function'
self._rules.push(Trigger(self.Rule_Matcher.parse(pat), f, id))
@@ -186,7 +186,9 @@ class Tasmota
def set_timer(delay,f,id)
self.check_not_method(f)
- if !self._timers self._timers=[] end
+ if self._timers == nil
+ self._timers=[]
+ end
self._timers.push(Trigger(self.millis(delay),f,id))
end
@@ -245,7 +247,9 @@ class Tasmota
# crontab style recurring events
def add_cron(pattern,f,id)
self.check_not_method(f)
- if !self._crons self._crons=[] end
+ if self._crons == nil
+ self._crons=[]
+ end
var cron_obj = ccronexpr(str(pattern)) # can fail, throwing an exception
var next_time = cron_obj.next()
@@ -285,8 +289,8 @@ class Tasmota
# Add command to list
def add_cmd(c,f)
self.check_not_method(f)
- if !self._ccmd
- self._ccmd={}
+ if self._ccmd == nil
+ self._ccmd = {}
end
if type(f) == 'function'
self._ccmd[c]=f
@@ -546,7 +550,9 @@ class Tasmota
def add_fast_loop(cl)
self.check_not_method(cl)
- if !self._fl self._fl = [] end
+ if self._fl == nil
+ self._fl = []
+ end
if type(cl) != 'function' raise "value_error", "argument must be a function" end
self.global.fast_loop_enabled = 1 # enable fast_loop at global level: `TasmotaGlobal.fast_loop_enabled = true`
self._fl.push(cl)
diff --git a/lib/libesp32/berry_tasmota/src/embedded/zigbee_zcl_attribute.be b/lib/libesp32/berry_tasmota/src/embedded/zigbee_zcl_attribute.be
index 0d557728d..f960f8e74 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/zigbee_zcl_attribute.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/zigbee_zcl_attribute.be
@@ -202,14 +202,15 @@ class zcl_attribute_list : zcl_attribute_list_ntv
var items = []
# {"Device":"0x246D","Name":"Plug","EnergyTotal":"0x000000000000","Endpoint":1,"LinkQuality":229}
+ var v
# shortaddr
- if self.shortaddr != nil
- items.push(format('"Device":"0x%04X"', self.shortaddr))
+ if (v := self.shortaddr) != nil
+ items.push(f'"Device":"0x{v:04X}"')
end
# groupaddr
- if self.groupaddr != nil
- items.push(format('"Group":"0x%04X"', self.groupaddr))
+ if (v := self.groupaddr) != nil
+ items.push(f'"Group":"0x{v:04X}"')
end
# attributes
@@ -222,13 +223,13 @@ class zcl_attribute_list : zcl_attribute_list_ntv
end
# Endpoint
- if self.src_ep != nil
- items.push(format('"Endpoint":%i', self.src_ep))
+ if (v := self.src_ep) != nil
+ items.push(f'"Endpoint":{v}')
end
# LQI
- if self.lqi != nil
- items.push(format('"LinkQuality":%i', self.lqi))
+ if (v := self.lqi) != nil
+ items.push(f'"LinkQuality":{v}')
end
var s = "{" + items.concat(",") + "}"
@@ -238,68 +239,6 @@ class zcl_attribute_list : zcl_attribute_list_ntv
end
end
-#@ solidify:zcl_attributes,weak
-class zcl_attributes
- var shortaddr
- var groupaddr
- var lqi
- var src_ep
- var attr_list
-
- def init(shortaddr, groupaddr, lqi, src_ep, attr_list)
- self.shortaddr = shortaddr
- self.groupaddr = groupaddr
- self.lqi = lqi
- self.src_ep = src_ep
- if isinstance(self.attr_list, list)
- self.attr_list = attr_list
- else
- self.attr_list = []
- end
- end
-
- def push(attr)
- self.attr_list.push(attr)
- end
-
- def tostring()
- import json
-
- var items = []
- # {"Device":"0x246D","Name":"Plug","EnergyTotal":"0x000000000000","Endpoint":1,"LinkQuality":229}
-
- # shortaddr
- if self.shortaddr != nil
- items.push(format('"Device":"0x%04X"', self.shortaddr))
- end
- # groupaddr
- if self.shortaddr != nil
- items.push(format('"Group":"0x%04X"', self.groupaddr))
- end
-
- # attributes
- for e: self.attr_list
- items.push(e.tostring())
- end
-
- # Endpoint
- if self.src_ep != nil
- items.push(format('"Endpoint":%i', self.src_ep))
- end
-
- # Endpoint
- if self.lqi != nil
- items.push(format('"LinkQuality":%i', self.lqi))
- end
-
- var s = "{" + items.concat(",") + "}"
- return s
-
- # return format("shortaddr:0x%04X groupaddr:0x%04X %s", self.shortaddr, self.groupaddr, str(self.attr_list))
- end
-
-end
-
#-
# Unit tests
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h
index 5d430efaa..ea49d8ed8 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h
@@ -239,121 +239,122 @@ be_local_closure(SPAKE2P_Matter_compute_TT_hash, /* name */
}),
be_str_weak(compute_TT_hash),
&be_const_str_solidified,
- ( &(const binstruction[114]) { /* code */
+ ( &(const binstruction[115]) { /* code */
0x58080000, // 0000 LDCONST R2 K0
0xB4000000, // 0001 CLASS K0
- 0xA40E0200, // 0002 IMPORT R3 K1
- 0x5C100400, // 0003 MOVE R4 R2
- 0x7C100000, // 0004 CALL R4 0
- 0x8C140902, // 0005 GETMET R5 R4 K2
- 0x881C0103, // 0006 GETMBR R7 R0 K3
- 0x7C140400, // 0007 CALL R5 2
- 0x8C140902, // 0008 GETMET R5 R4 K2
- 0x881C0104, // 0009 GETMBR R7 R0 K4
- 0x7C140400, // 000A CALL R5 2
- 0x8C140902, // 000B GETMET R5 R4 K2
- 0x881C0105, // 000C GETMBR R7 R0 K5
- 0x7C140400, // 000D CALL R5 2
- 0x8C140902, // 000E GETMET R5 R4 K2
- 0x881C0106, // 000F GETMBR R7 R0 K6
- 0x7C140400, // 0010 CALL R5 2
- 0x8C140902, // 0011 GETMET R5 R4 K2
- 0x881C0107, // 0012 GETMBR R7 R0 K7
- 0x7C140400, // 0013 CALL R5 2
- 0x8C140902, // 0014 GETMET R5 R4 K2
- 0x881C0108, // 0015 GETMBR R7 R0 K8
- 0x7C140400, // 0016 CALL R5 2
- 0x8C140902, // 0017 GETMET R5 R4 K2
- 0x881C0109, // 0018 GETMBR R7 R0 K9
- 0x7C140400, // 0019 CALL R5 2
- 0x8C140902, // 001A GETMET R5 R4 K2
- 0x881C010A, // 001B GETMBR R7 R0 K10
- 0x7C140400, // 001C CALL R5 2
- 0x8C140902, // 001D GETMET R5 R4 K2
- 0x881C010B, // 001E GETMBR R7 R0 K11
- 0x7C140400, // 001F CALL R5 2
- 0x8C140902, // 0020 GETMET R5 R4 K2
- 0x881C010C, // 0021 GETMBR R7 R0 K12
- 0x7C140400, // 0022 CALL R5 2
- 0x8C14090E, // 0023 GETMET R5 R4 K14
- 0x7C140200, // 0024 CALL R5 1
- 0x90021A05, // 0025 SETMBR R0 K13 R5
- 0x7806000A, // 0026 JMPF R1 #0032
- 0x5416000F, // 0027 LDINT R5 16
- 0x541A001E, // 0028 LDINT R6 31
- 0x40140A06, // 0029 CONNECT R5 R5 R6
- 0x8818010D, // 002A GETMBR R6 R0 K13
- 0x94140C05, // 002B GETIDX R5 R6 R5
- 0x90021E05, // 002C SETMBR R0 K15 R5
- 0x5416000E, // 002D LDINT R5 15
- 0x40162005, // 002E CONNECT R5 K16 R5
- 0x8818010D, // 002F GETMBR R6 R0 K13
- 0x94140C05, // 0030 GETIDX R5 R6 R5
- 0x90021A05, // 0031 SETMBR R0 K13 R5
- 0x8C140711, // 0032 GETMET R5 R3 K17
- 0x7C140200, // 0033 CALL R5 1
- 0x8C180B12, // 0034 GETMET R6 R5 K18
- 0x8820010D, // 0035 GETMBR R8 R0 K13
- 0x60240015, // 0036 GETGBL R9 G21
- 0x7C240000, // 0037 CALL R9 0
- 0x60280015, // 0038 GETGBL R10 G21
- 0x7C280000, // 0039 CALL R10 0
- 0x8C281513, // 003A GETMET R10 R10 K19
- 0x58300014, // 003B LDCONST R12 K20
- 0x7C280400, // 003C CALL R10 2
- 0x542E003F, // 003D LDINT R11 64
- 0x7C180A00, // 003E CALL R6 5
- 0x78060003, // 003F JMPF R1 #0044
- 0x541E000E, // 0040 LDINT R7 15
- 0x401E2007, // 0041 CONNECT R7 K16 R7
- 0x941C0C07, // 0042 GETIDX R7 R6 R7
- 0x70020002, // 0043 JMP #0047
- 0x541E001E, // 0044 LDINT R7 31
- 0x401E2007, // 0045 CONNECT R7 K16 R7
- 0x941C0C07, // 0046 GETIDX R7 R6 R7
- 0x90022A07, // 0047 SETMBR R0 K21 R7
- 0x78060004, // 0048 JMPF R1 #004E
- 0x541E000F, // 0049 LDINT R7 16
- 0x5422001E, // 004A LDINT R8 31
- 0x401C0E08, // 004B CONNECT R7 R7 R8
- 0x941C0C07, // 004C GETIDX R7 R6 R7
- 0x70020003, // 004D JMP #0052
- 0x541E001F, // 004E LDINT R7 32
- 0x5422003E, // 004F LDINT R8 63
- 0x401C0E08, // 0050 CONNECT R7 R7 R8
- 0x941C0C07, // 0051 GETIDX R7 R6 R7
- 0x90022C07, // 0052 SETMBR R0 K22 R7
- 0x8C1C0B12, // 0053 GETMET R7 R5 K18
- 0x8824010D, // 0054 GETMBR R9 R0 K13
- 0x60280015, // 0055 GETGBL R10 G21
- 0x7C280000, // 0056 CALL R10 0
- 0x602C0015, // 0057 GETGBL R11 G21
- 0x7C2C0000, // 0058 CALL R11 0
- 0x8C2C1713, // 0059 GETMET R11 R11 K19
- 0x58340018, // 005A LDCONST R13 K24
- 0x7C2C0400, // 005B CALL R11 2
- 0x5432001F, // 005C LDINT R12 32
- 0x7C1C0A00, // 005D CALL R7 5
- 0x90022E07, // 005E SETMBR R0 K23 R7
- 0x8C1C071A, // 005F GETMET R7 R3 K26
- 0x88240115, // 0060 GETMBR R9 R0 K21
- 0x7C1C0400, // 0061 CALL R7 2
- 0x8C1C0F1B, // 0062 GETMET R7 R7 K27
- 0x88240109, // 0063 GETMBR R9 R0 K9
- 0x7C1C0400, // 0064 CALL R7 2
- 0x8C1C0F0E, // 0065 GETMET R7 R7 K14
- 0x7C1C0200, // 0066 CALL R7 1
- 0x90023207, // 0067 SETMBR R0 K25 R7
- 0x8C1C071A, // 0068 GETMET R7 R3 K26
- 0x88240116, // 0069 GETMBR R9 R0 K22
- 0x7C1C0400, // 006A CALL R7 2
- 0x8C1C0F1B, // 006B GETMET R7 R7 K27
- 0x88240108, // 006C GETMBR R9 R0 K8
- 0x7C1C0400, // 006D CALL R7 2
- 0x8C1C0F0E, // 006E GETMET R7 R7 K14
- 0x7C1C0200, // 006F CALL R7 1
- 0x90023807, // 0070 SETMBR R0 K28 R7
- 0x80000000, // 0071 RET 0
+ 0x5C0C0400, // 0002 MOVE R3 R2
+ 0xA40E0200, // 0003 IMPORT R3 K1
+ 0x5C100400, // 0004 MOVE R4 R2
+ 0x7C100000, // 0005 CALL R4 0
+ 0x8C140902, // 0006 GETMET R5 R4 K2
+ 0x881C0103, // 0007 GETMBR R7 R0 K3
+ 0x7C140400, // 0008 CALL R5 2
+ 0x8C140902, // 0009 GETMET R5 R4 K2
+ 0x881C0104, // 000A GETMBR R7 R0 K4
+ 0x7C140400, // 000B CALL R5 2
+ 0x8C140902, // 000C GETMET R5 R4 K2
+ 0x881C0105, // 000D GETMBR R7 R0 K5
+ 0x7C140400, // 000E CALL R5 2
+ 0x8C140902, // 000F GETMET R5 R4 K2
+ 0x881C0106, // 0010 GETMBR R7 R0 K6
+ 0x7C140400, // 0011 CALL R5 2
+ 0x8C140902, // 0012 GETMET R5 R4 K2
+ 0x881C0107, // 0013 GETMBR R7 R0 K7
+ 0x7C140400, // 0014 CALL R5 2
+ 0x8C140902, // 0015 GETMET R5 R4 K2
+ 0x881C0108, // 0016 GETMBR R7 R0 K8
+ 0x7C140400, // 0017 CALL R5 2
+ 0x8C140902, // 0018 GETMET R5 R4 K2
+ 0x881C0109, // 0019 GETMBR R7 R0 K9
+ 0x7C140400, // 001A CALL R5 2
+ 0x8C140902, // 001B GETMET R5 R4 K2
+ 0x881C010A, // 001C GETMBR R7 R0 K10
+ 0x7C140400, // 001D CALL R5 2
+ 0x8C140902, // 001E GETMET R5 R4 K2
+ 0x881C010B, // 001F GETMBR R7 R0 K11
+ 0x7C140400, // 0020 CALL R5 2
+ 0x8C140902, // 0021 GETMET R5 R4 K2
+ 0x881C010C, // 0022 GETMBR R7 R0 K12
+ 0x7C140400, // 0023 CALL R5 2
+ 0x8C14090E, // 0024 GETMET R5 R4 K14
+ 0x7C140200, // 0025 CALL R5 1
+ 0x90021A05, // 0026 SETMBR R0 K13 R5
+ 0x7806000A, // 0027 JMPF R1 #0033
+ 0x5416000F, // 0028 LDINT R5 16
+ 0x541A001E, // 0029 LDINT R6 31
+ 0x40140A06, // 002A CONNECT R5 R5 R6
+ 0x8818010D, // 002B GETMBR R6 R0 K13
+ 0x94140C05, // 002C GETIDX R5 R6 R5
+ 0x90021E05, // 002D SETMBR R0 K15 R5
+ 0x5416000E, // 002E LDINT R5 15
+ 0x40162005, // 002F CONNECT R5 K16 R5
+ 0x8818010D, // 0030 GETMBR R6 R0 K13
+ 0x94140C05, // 0031 GETIDX R5 R6 R5
+ 0x90021A05, // 0032 SETMBR R0 K13 R5
+ 0x8C140711, // 0033 GETMET R5 R3 K17
+ 0x7C140200, // 0034 CALL R5 1
+ 0x8C180B12, // 0035 GETMET R6 R5 K18
+ 0x8820010D, // 0036 GETMBR R8 R0 K13
+ 0x60240015, // 0037 GETGBL R9 G21
+ 0x7C240000, // 0038 CALL R9 0
+ 0x60280015, // 0039 GETGBL R10 G21
+ 0x7C280000, // 003A CALL R10 0
+ 0x8C281513, // 003B GETMET R10 R10 K19
+ 0x58300014, // 003C LDCONST R12 K20
+ 0x7C280400, // 003D CALL R10 2
+ 0x542E003F, // 003E LDINT R11 64
+ 0x7C180A00, // 003F CALL R6 5
+ 0x78060003, // 0040 JMPF R1 #0045
+ 0x541E000E, // 0041 LDINT R7 15
+ 0x401E2007, // 0042 CONNECT R7 K16 R7
+ 0x941C0C07, // 0043 GETIDX R7 R6 R7
+ 0x70020002, // 0044 JMP #0048
+ 0x541E001E, // 0045 LDINT R7 31
+ 0x401E2007, // 0046 CONNECT R7 K16 R7
+ 0x941C0C07, // 0047 GETIDX R7 R6 R7
+ 0x90022A07, // 0048 SETMBR R0 K21 R7
+ 0x78060004, // 0049 JMPF R1 #004F
+ 0x541E000F, // 004A LDINT R7 16
+ 0x5422001E, // 004B LDINT R8 31
+ 0x401C0E08, // 004C CONNECT R7 R7 R8
+ 0x941C0C07, // 004D GETIDX R7 R6 R7
+ 0x70020003, // 004E JMP #0053
+ 0x541E001F, // 004F LDINT R7 32
+ 0x5422003E, // 0050 LDINT R8 63
+ 0x401C0E08, // 0051 CONNECT R7 R7 R8
+ 0x941C0C07, // 0052 GETIDX R7 R6 R7
+ 0x90022C07, // 0053 SETMBR R0 K22 R7
+ 0x8C1C0B12, // 0054 GETMET R7 R5 K18
+ 0x8824010D, // 0055 GETMBR R9 R0 K13
+ 0x60280015, // 0056 GETGBL R10 G21
+ 0x7C280000, // 0057 CALL R10 0
+ 0x602C0015, // 0058 GETGBL R11 G21
+ 0x7C2C0000, // 0059 CALL R11 0
+ 0x8C2C1713, // 005A GETMET R11 R11 K19
+ 0x58340018, // 005B LDCONST R13 K24
+ 0x7C2C0400, // 005C CALL R11 2
+ 0x5432001F, // 005D LDINT R12 32
+ 0x7C1C0A00, // 005E CALL R7 5
+ 0x90022E07, // 005F SETMBR R0 K23 R7
+ 0x8C1C071A, // 0060 GETMET R7 R3 K26
+ 0x88240115, // 0061 GETMBR R9 R0 K21
+ 0x7C1C0400, // 0062 CALL R7 2
+ 0x8C1C0F1B, // 0063 GETMET R7 R7 K27
+ 0x88240109, // 0064 GETMBR R9 R0 K9
+ 0x7C1C0400, // 0065 CALL R7 2
+ 0x8C1C0F0E, // 0066 GETMET R7 R7 K14
+ 0x7C1C0200, // 0067 CALL R7 1
+ 0x90023207, // 0068 SETMBR R0 K25 R7
+ 0x8C1C071A, // 0069 GETMET R7 R3 K26
+ 0x88240116, // 006A GETMBR R9 R0 K22
+ 0x7C1C0400, // 006B CALL R7 2
+ 0x8C1C0F1B, // 006C GETMET R7 R7 K27
+ 0x88240108, // 006D GETMBR R9 R0 K8
+ 0x7C1C0400, // 006E CALL R7 2
+ 0x8C1C0F0E, // 006F GETMET R7 R7 K14
+ 0x7C1C0200, // 0070 CALL R7 1
+ 0x90023807, // 0071 SETMBR R0 K28 R7
+ 0x80000000, // 0072 RET 0
})
)
);
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h
index ee62524d6..33744dd36 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h
@@ -445,7 +445,7 @@ be_local_class(mqtt_listener,
********************************************************************/
be_local_closure(MQTT_mqtt_listener_class, /* name */
be_nested_proto(
- 2, /* nstack */
+ 3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -458,10 +458,11 @@ be_local_closure(MQTT_mqtt_listener_class, /* name */
}),
&be_const_str_mqtt_listener_class,
&be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
+ ( &(const binstruction[ 4]) { /* code */
0x58040000, // 0000 LDCONST R1 K0
0xB4000000, // 0001 CLASS K0
- 0x80040200, // 0002 RET 1 R1
+ 0x5C080200, // 0002 MOVE R2 R1
+ 0x80040200, // 0003 RET 1 R1
})
)
);
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h
index d523d1331..caadd3a25 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h
@@ -248,65 +248,68 @@ be_local_closure(Partition_otadata_load, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
+ ( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str(flash),
/* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(seq0),
- /* K3 */ be_nested_str(get),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str(seq1),
- /* K6 */ be_nested_str(crc32_ota_seq),
- /* K7 */ be_nested_str(_validate),
+ /* K2 */ be_nested_str(offset),
+ /* K3 */ be_nested_str(seq0),
+ /* K4 */ be_nested_str(get),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str(seq1),
+ /* K7 */ be_nested_str(crc32_ota_seq),
+ /* K8 */ be_nested_str(_validate),
}),
&be_const_str_load,
&be_const_str_solidified,
- ( &(const binstruction[46]) { /* code */
+ ( &(const binstruction[48]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1
- 0x5412DFFF, // 0002 LDINT R4 57344
+ 0x88100102, // 0002 GETMBR R4 R0 K2
0x5416001F, // 0003 LDINT R5 32
0x7C080600, // 0004 CALL R2 3
0x8C0C0301, // 0005 GETMET R3 R1 K1
- 0x5416EFFF, // 0006 LDINT R5 61440
- 0x541A001F, // 0007 LDINT R6 32
- 0x7C0C0600, // 0008 CALL R3 3
- 0x8C100503, // 0009 GETMET R4 R2 K3
- 0x58180004, // 000A LDCONST R6 K4
- 0x541E0003, // 000B LDINT R7 4
- 0x7C100600, // 000C CALL R4 3
- 0x90020404, // 000D SETMBR R0 K2 R4
- 0x8C100703, // 000E GETMET R4 R3 K3
- 0x58180004, // 000F LDCONST R6 K4
- 0x541E0003, // 0010 LDINT R7 4
- 0x7C100600, // 0011 CALL R4 3
- 0x90020A04, // 0012 SETMBR R0 K5 R4
- 0x8C100503, // 0013 GETMET R4 R2 K3
- 0x541A001B, // 0014 LDINT R6 28
- 0x541E0003, // 0015 LDINT R7 4
- 0x7C100600, // 0016 CALL R4 3
- 0x8C140106, // 0017 GETMET R5 R0 K6
- 0x881C0102, // 0018 GETMBR R7 R0 K2
- 0x7C140400, // 0019 CALL R5 2
- 0x1C100805, // 001A EQ R4 R4 R5
- 0x8C140703, // 001B GETMET R5 R3 K3
- 0x541E001B, // 001C LDINT R7 28
- 0x54220003, // 001D LDINT R8 4
- 0x7C140600, // 001E CALL R5 3
- 0x8C180106, // 001F GETMET R6 R0 K6
- 0x88200105, // 0020 GETMBR R8 R0 K5
- 0x7C180400, // 0021 CALL R6 2
- 0x1C140A06, // 0022 EQ R5 R5 R6
- 0x5C180800, // 0023 MOVE R6 R4
- 0x741A0001, // 0024 JMPT R6 #0027
- 0x4C180000, // 0025 LDNIL R6
- 0x90020406, // 0026 SETMBR R0 K2 R6
- 0x5C180A00, // 0027 MOVE R6 R5
- 0x741A0001, // 0028 JMPT R6 #002B
- 0x4C180000, // 0029 LDNIL R6
- 0x90020A06, // 002A SETMBR R0 K5 R6
- 0x8C180107, // 002B GETMET R6 R0 K7
- 0x7C180200, // 002C CALL R6 1
- 0x80000000, // 002D RET 0
+ 0x88140102, // 0006 GETMBR R5 R0 K2
+ 0x541A0FFF, // 0007 LDINT R6 4096
+ 0x00140A06, // 0008 ADD R5 R5 R6
+ 0x541A001F, // 0009 LDINT R6 32
+ 0x7C0C0600, // 000A CALL R3 3
+ 0x8C100504, // 000B GETMET R4 R2 K4
+ 0x58180005, // 000C LDCONST R6 K5
+ 0x541E0003, // 000D LDINT R7 4
+ 0x7C100600, // 000E CALL R4 3
+ 0x90020604, // 000F SETMBR R0 K3 R4
+ 0x8C100704, // 0010 GETMET R4 R3 K4
+ 0x58180005, // 0011 LDCONST R6 K5
+ 0x541E0003, // 0012 LDINT R7 4
+ 0x7C100600, // 0013 CALL R4 3
+ 0x90020C04, // 0014 SETMBR R0 K6 R4
+ 0x8C100504, // 0015 GETMET R4 R2 K4
+ 0x541A001B, // 0016 LDINT R6 28
+ 0x541E0003, // 0017 LDINT R7 4
+ 0x7C100600, // 0018 CALL R4 3
+ 0x8C140107, // 0019 GETMET R5 R0 K7
+ 0x881C0103, // 001A GETMBR R7 R0 K3
+ 0x7C140400, // 001B CALL R5 2
+ 0x1C100805, // 001C EQ R4 R4 R5
+ 0x8C140704, // 001D GETMET R5 R3 K4
+ 0x541E001B, // 001E LDINT R7 28
+ 0x54220003, // 001F LDINT R8 4
+ 0x7C140600, // 0020 CALL R5 3
+ 0x8C180107, // 0021 GETMET R6 R0 K7
+ 0x88200106, // 0022 GETMBR R8 R0 K6
+ 0x7C180400, // 0023 CALL R6 2
+ 0x1C140A06, // 0024 EQ R5 R5 R6
+ 0x5C180800, // 0025 MOVE R6 R4
+ 0x741A0001, // 0026 JMPT R6 #0029
+ 0x4C180000, // 0027 LDNIL R6
+ 0x90020606, // 0028 SETMBR R0 K3 R6
+ 0x5C180A00, // 0029 MOVE R6 R5
+ 0x741A0001, // 002A JMPT R6 #002D
+ 0x4C180000, // 002B LDNIL R6
+ 0x90020C06, // 002C SETMBR R0 K6 R6
+ 0x8C180108, // 002D GETMET R6 R0 K8
+ 0x7C180200, // 002E CALL R6 1
+ 0x80000000, // 002F RET 0
})
)
);
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 f40650349..0c7730c97 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
@@ -854,26 +854,28 @@ be_local_closure(Tasmota_set_timer, /* name */
}),
&be_const_str_set_timer,
&be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
+ ( &(const binstruction[21]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0
0x5C180400, // 0001 MOVE R6 R2
0x7C100400, // 0002 CALL R4 2
0x88100101, // 0003 GETMBR R4 R0 K1
- 0x74120002, // 0004 JMPT R4 #0008
- 0x60100012, // 0005 GETGBL R4 G18
- 0x7C100000, // 0006 CALL R4 0
- 0x90020204, // 0007 SETMBR R0 K1 R4
- 0x88100101, // 0008 GETMBR R4 R0 K1
- 0x8C100902, // 0009 GETMET R4 R4 K2
- 0xB81A0600, // 000A GETNGBL R6 K3
- 0x8C1C0104, // 000B GETMET R7 R0 K4
- 0x5C240200, // 000C MOVE R9 R1
- 0x7C1C0400, // 000D CALL R7 2
- 0x5C200400, // 000E MOVE R8 R2
- 0x5C240600, // 000F MOVE R9 R3
- 0x7C180600, // 0010 CALL R6 3
- 0x7C100400, // 0011 CALL R4 2
- 0x80000000, // 0012 RET 0
+ 0x4C140000, // 0004 LDNIL R5
+ 0x1C100805, // 0005 EQ R4 R4 R5
+ 0x78120002, // 0006 JMPF R4 #000A
+ 0x60100012, // 0007 GETGBL R4 G18
+ 0x7C100000, // 0008 CALL R4 0
+ 0x90020204, // 0009 SETMBR R0 K1 R4
+ 0x88100101, // 000A GETMBR R4 R0 K1
+ 0x8C100902, // 000B GETMET R4 R4 K2
+ 0xB81A0600, // 000C GETNGBL R6 K3
+ 0x8C1C0104, // 000D GETMET R7 R0 K4
+ 0x5C240200, // 000E MOVE R9 R1
+ 0x7C1C0400, // 000F CALL R7 2
+ 0x5C200400, // 0010 MOVE R8 R2
+ 0x5C240600, // 0011 MOVE R9 R3
+ 0x7C180600, // 0012 CALL R6 3
+ 0x7C100400, // 0013 CALL R4 2
+ 0x80000000, // 0014 RET 0
})
)
);
@@ -903,32 +905,34 @@ be_local_closure(Tasmota_add_cron, /* name */
}),
&be_const_str_add_cron,
&be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
+ ( &(const binstruction[27]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0
0x5C180400, // 0001 MOVE R6 R2
0x7C100400, // 0002 CALL R4 2
0x88100101, // 0003 GETMBR R4 R0 K1
- 0x74120002, // 0004 JMPT R4 #0008
- 0x60100012, // 0005 GETGBL R4 G18
- 0x7C100000, // 0006 CALL R4 0
- 0x90020204, // 0007 SETMBR R0 K1 R4
- 0xB8120400, // 0008 GETNGBL R4 K2
- 0x60140008, // 0009 GETGBL R5 G8
- 0x5C180200, // 000A MOVE R6 R1
- 0x7C140200, // 000B CALL R5 1
- 0x7C100200, // 000C CALL R4 1
- 0x8C140903, // 000D GETMET R5 R4 K3
- 0x7C140200, // 000E CALL R5 1
- 0x88180101, // 000F GETMBR R6 R0 K1
- 0x8C180D04, // 0010 GETMET R6 R6 K4
- 0xB8220A00, // 0011 GETNGBL R8 K5
- 0x5C240A00, // 0012 MOVE R9 R5
- 0x5C280400, // 0013 MOVE R10 R2
- 0x5C2C0600, // 0014 MOVE R11 R3
- 0x5C300800, // 0015 MOVE R12 R4
- 0x7C200800, // 0016 CALL R8 4
- 0x7C180400, // 0017 CALL R6 2
- 0x80000000, // 0018 RET 0
+ 0x4C140000, // 0004 LDNIL R5
+ 0x1C100805, // 0005 EQ R4 R4 R5
+ 0x78120002, // 0006 JMPF R4 #000A
+ 0x60100012, // 0007 GETGBL R4 G18
+ 0x7C100000, // 0008 CALL R4 0
+ 0x90020204, // 0009 SETMBR R0 K1 R4
+ 0xB8120400, // 000A GETNGBL R4 K2
+ 0x60140008, // 000B GETGBL R5 G8
+ 0x5C180200, // 000C MOVE R6 R1
+ 0x7C140200, // 000D CALL R5 1
+ 0x7C100200, // 000E CALL R4 1
+ 0x8C140903, // 000F GETMET R5 R4 K3
+ 0x7C140200, // 0010 CALL R5 1
+ 0x88180101, // 0011 GETMBR R6 R0 K1
+ 0x8C180D04, // 0012 GETMET R6 R6 K4
+ 0xB8220A00, // 0013 GETNGBL R8 K5
+ 0x5C240A00, // 0014 MOVE R9 R5
+ 0x5C280400, // 0015 MOVE R10 R2
+ 0x5C2C0600, // 0016 MOVE R11 R3
+ 0x5C300800, // 0017 MOVE R12 R4
+ 0x7C200800, // 0018 CALL R8 4
+ 0x7C180400, // 0019 CALL R6 2
+ 0x80000000, // 001A RET 0
})
)
);
@@ -2068,25 +2072,27 @@ be_local_closure(Tasmota_add_cmd, /* name */
}),
&be_const_str_add_cmd,
&be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
+ ( &(const binstruction[20]) { /* code */
0x8C0C0100, // 0000 GETMET R3 R0 K0
0x5C140400, // 0001 MOVE R5 R2
0x7C0C0400, // 0002 CALL R3 2
0x880C0101, // 0003 GETMBR R3 R0 K1
- 0x740E0002, // 0004 JMPT R3 #0008
- 0x600C0013, // 0005 GETGBL R3 G19
- 0x7C0C0000, // 0006 CALL R3 0
- 0x90020203, // 0007 SETMBR R0 K1 R3
- 0x600C0004, // 0008 GETGBL R3 G4
- 0x5C100400, // 0009 MOVE R4 R2
- 0x7C0C0200, // 000A CALL R3 1
- 0x1C0C0702, // 000B EQ R3 R3 K2
- 0x780E0002, // 000C JMPF R3 #0010
- 0x880C0101, // 000D GETMBR R3 R0 K1
- 0x980C0202, // 000E SETIDX R3 R1 R2
- 0x70020000, // 000F JMP #0011
- 0xB0060704, // 0010 RAISE 1 K3 K4
- 0x80000000, // 0011 RET 0
+ 0x4C100000, // 0004 LDNIL R4
+ 0x1C0C0604, // 0005 EQ R3 R3 R4
+ 0x780E0002, // 0006 JMPF R3 #000A
+ 0x600C0013, // 0007 GETGBL R3 G19
+ 0x7C0C0000, // 0008 CALL R3 0
+ 0x90020203, // 0009 SETMBR R0 K1 R3
+ 0x600C0004, // 000A GETGBL R3 G4
+ 0x5C100400, // 000B MOVE R4 R2
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x1C0C0702, // 000D EQ R3 R3 K2
+ 0x780E0002, // 000E JMPF R3 #0012
+ 0x880C0101, // 000F GETMBR R3 R0 K1
+ 0x980C0202, // 0010 SETIDX R3 R1 R2
+ 0x70020000, // 0011 JMP #0013
+ 0xB0060704, // 0012 RAISE 1 K3 K4
+ 0x80000000, // 0013 RET 0
})
)
);
@@ -2178,28 +2184,30 @@ be_local_closure(Tasmota_add_fast_loop, /* name */
}),
&be_const_str_add_fast_loop,
&be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
+ ( &(const binstruction[23]) { /* code */
0x8C080100, // 0000 GETMET R2 R0 K0
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x88080101, // 0003 GETMBR R2 R0 K1
- 0x740A0002, // 0004 JMPT R2 #0008
- 0x60080012, // 0005 GETGBL R2 G18
- 0x7C080000, // 0006 CALL R2 0
- 0x90020202, // 0007 SETMBR R0 K1 R2
- 0x60080004, // 0008 GETGBL R2 G4
- 0x5C0C0200, // 0009 MOVE R3 R1
- 0x7C080200, // 000A CALL R2 1
- 0x20080502, // 000B NE R2 R2 K2
- 0x780A0000, // 000C JMPF R2 #000E
- 0xB0060704, // 000D RAISE 1 K3 K4
- 0x88080105, // 000E GETMBR R2 R0 K5
- 0x900A0D07, // 000F SETMBR R2 K6 K7
- 0x88080101, // 0010 GETMBR R2 R0 K1
- 0x8C080508, // 0011 GETMET R2 R2 K8
- 0x5C100200, // 0012 MOVE R4 R1
- 0x7C080400, // 0013 CALL R2 2
- 0x80000000, // 0014 RET 0
+ 0x4C0C0000, // 0004 LDNIL R3
+ 0x1C080403, // 0005 EQ R2 R2 R3
+ 0x780A0002, // 0006 JMPF R2 #000A
+ 0x60080012, // 0007 GETGBL R2 G18
+ 0x7C080000, // 0008 CALL R2 0
+ 0x90020202, // 0009 SETMBR R0 K1 R2
+ 0x60080004, // 000A GETGBL R2 G4
+ 0x5C0C0200, // 000B MOVE R3 R1
+ 0x7C080200, // 000C CALL R2 1
+ 0x20080502, // 000D NE R2 R2 K2
+ 0x780A0000, // 000E JMPF R2 #0010
+ 0xB0060704, // 000F RAISE 1 K3 K4
+ 0x88080105, // 0010 GETMBR R2 R0 K5
+ 0x900A0D07, // 0011 SETMBR R2 K6 K7
+ 0x88080101, // 0012 GETMBR R2 R0 K1
+ 0x8C080508, // 0013 GETMET R2 R2 K8
+ 0x5C100200, // 0014 MOVE R4 R1
+ 0x7C080400, // 0015 CALL R2 2
+ 0x80000000, // 0016 RET 0
})
)
);
@@ -2232,34 +2240,36 @@ be_local_closure(Tasmota_add_rule, /* name */
}),
&be_const_str_add_rule,
&be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
+ ( &(const binstruction[29]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0
0x5C180400, // 0001 MOVE R6 R2
0x7C100400, // 0002 CALL R4 2
0x88100101, // 0003 GETMBR R4 R0 K1
- 0x74120002, // 0004 JMPT R4 #0008
- 0x60100012, // 0005 GETGBL R4 G18
- 0x7C100000, // 0006 CALL R4 0
- 0x90020204, // 0007 SETMBR R0 K1 R4
- 0x60100004, // 0008 GETGBL R4 G4
- 0x5C140400, // 0009 MOVE R5 R2
- 0x7C100200, // 000A CALL R4 1
- 0x1C100902, // 000B EQ R4 R4 K2
- 0x7812000B, // 000C JMPF R4 #0019
- 0x88100101, // 000D GETMBR R4 R0 K1
- 0x8C100903, // 000E GETMET R4 R4 K3
- 0xB81A0800, // 000F GETNGBL R6 K4
- 0x881C0105, // 0010 GETMBR R7 R0 K5
- 0x8C1C0F06, // 0011 GETMET R7 R7 K6
- 0x5C240200, // 0012 MOVE R9 R1
- 0x7C1C0400, // 0013 CALL R7 2
- 0x5C200400, // 0014 MOVE R8 R2
- 0x5C240600, // 0015 MOVE R9 R3
- 0x7C180600, // 0016 CALL R6 3
- 0x7C100400, // 0017 CALL R4 2
- 0x70020000, // 0018 JMP #001A
- 0xB0060F08, // 0019 RAISE 1 K7 K8
- 0x80000000, // 001A RET 0
+ 0x4C140000, // 0004 LDNIL R5
+ 0x1C100805, // 0005 EQ R4 R4 R5
+ 0x78120002, // 0006 JMPF R4 #000A
+ 0x60100012, // 0007 GETGBL R4 G18
+ 0x7C100000, // 0008 CALL R4 0
+ 0x90020204, // 0009 SETMBR R0 K1 R4
+ 0x60100004, // 000A GETGBL R4 G4
+ 0x5C140400, // 000B MOVE R5 R2
+ 0x7C100200, // 000C CALL R4 1
+ 0x1C100902, // 000D EQ R4 R4 K2
+ 0x7812000B, // 000E JMPF R4 #001B
+ 0x88100101, // 000F GETMBR R4 R0 K1
+ 0x8C100903, // 0010 GETMET R4 R4 K3
+ 0xB81A0800, // 0011 GETNGBL R6 K4
+ 0x881C0105, // 0012 GETMBR R7 R0 K5
+ 0x8C1C0F06, // 0013 GETMET R7 R7 K6
+ 0x5C240200, // 0014 MOVE R9 R1
+ 0x7C1C0400, // 0015 CALL R7 2
+ 0x5C200400, // 0016 MOVE R8 R2
+ 0x5C240600, // 0017 MOVE R9 R3
+ 0x7C180600, // 0018 CALL R6 3
+ 0x7C100400, // 0019 CALL R4 2
+ 0x70020000, // 001A JMP #001C
+ 0xB0060F08, // 001B RAISE 1 K7 K8
+ 0x80000000, // 001C RET 0
})
)
);
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h
index 01c75933f..bbf637b6b 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h
@@ -785,7 +785,7 @@ be_local_closure(zcl_attribute_list_deinit, /* name */
********************************************************************/
be_local_closure(zcl_attribute_list_tostring, /* name */
be_nested_proto(
- 10, /* nstack */
+ 11, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -805,9 +805,9 @@ be_local_closure(zcl_attribute_list_tostring, /* name */
/* K8 */ be_nested_str_weak(tostring),
/* K9 */ be_const_int(1),
/* K10 */ be_nested_str_weak(src_ep),
- /* K11 */ be_nested_str_weak(_X22Endpoint_X22_X3A_X25i),
+ /* K11 */ be_nested_str_weak(_X22Endpoint_X22_X3A_X25s),
/* K12 */ be_nested_str_weak(lqi),
- /* K13 */ be_nested_str_weak(_X22LinkQuality_X22_X3A_X25i),
+ /* K13 */ be_nested_str_weak(_X22LinkQuality_X22_X3A_X25s),
/* K14 */ be_nested_str_weak(_X7B),
/* K15 */ be_nested_str_weak(concat),
/* K16 */ be_nested_str_weak(_X2C),
@@ -815,68 +815,69 @@ be_local_closure(zcl_attribute_list_tostring, /* name */
}),
be_str_weak(tostring),
&be_const_str_solidified,
- ( &(const binstruction[61]) { /* code */
+ ( &(const binstruction[62]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x60080012, // 0001 GETGBL R2 G18
0x7C080000, // 0002 CALL R2 0
- 0x880C0101, // 0003 GETMBR R3 R0 K1
- 0x4C100000, // 0004 LDNIL R4
- 0x200C0604, // 0005 NE R3 R3 R4
- 0x780E0005, // 0006 JMPF R3 #000D
- 0x8C0C0502, // 0007 GETMET R3 R2 K2
- 0x60140018, // 0008 GETGBL R5 G24
- 0x58180003, // 0009 LDCONST R6 K3
- 0x881C0101, // 000A GETMBR R7 R0 K1
- 0x7C140400, // 000B CALL R5 2
- 0x7C0C0400, // 000C CALL R3 2
- 0x880C0104, // 000D GETMBR R3 R0 K4
- 0x4C100000, // 000E LDNIL R4
- 0x200C0604, // 000F NE R3 R3 R4
- 0x780E0005, // 0010 JMPF R3 #0017
- 0x8C0C0502, // 0011 GETMET R3 R2 K2
- 0x60140018, // 0012 GETGBL R5 G24
- 0x58180005, // 0013 LDCONST R6 K5
- 0x881C0104, // 0014 GETMBR R7 R0 K4
- 0x7C140400, // 0015 CALL R5 2
- 0x7C0C0400, // 0016 CALL R3 2
- 0x580C0006, // 0017 LDCONST R3 K6
- 0x8C100107, // 0018 GETMET R4 R0 K7
- 0x7C100200, // 0019 CALL R4 1
- 0x14140604, // 001A LT R5 R3 R4
- 0x78160006, // 001B JMPF R5 #0023
- 0x8C140502, // 001C GETMET R5 R2 K2
- 0x941C0003, // 001D GETIDX R7 R0 R3
- 0x8C1C0F08, // 001E GETMET R7 R7 K8
- 0x7C1C0200, // 001F CALL R7 1
- 0x7C140400, // 0020 CALL R5 2
- 0x000C0709, // 0021 ADD R3 R3 K9
- 0x7001FFF6, // 0022 JMP #001A
- 0x8814010A, // 0023 GETMBR R5 R0 K10
- 0x4C180000, // 0024 LDNIL R6
- 0x20140A06, // 0025 NE R5 R5 R6
- 0x78160005, // 0026 JMPF R5 #002D
- 0x8C140502, // 0027 GETMET R5 R2 K2
- 0x601C0018, // 0028 GETGBL R7 G24
- 0x5820000B, // 0029 LDCONST R8 K11
- 0x8824010A, // 002A GETMBR R9 R0 K10
- 0x7C1C0400, // 002B CALL R7 2
- 0x7C140400, // 002C CALL R5 2
- 0x8814010C, // 002D GETMBR R5 R0 K12
- 0x4C180000, // 002E LDNIL R6
- 0x20140A06, // 002F NE R5 R5 R6
- 0x78160005, // 0030 JMPF R5 #0037
- 0x8C140502, // 0031 GETMET R5 R2 K2
- 0x601C0018, // 0032 GETGBL R7 G24
- 0x5820000D, // 0033 LDCONST R8 K13
- 0x8824010C, // 0034 GETMBR R9 R0 K12
- 0x7C1C0400, // 0035 CALL R7 2
- 0x7C140400, // 0036 CALL R5 2
- 0x8C14050F, // 0037 GETMET R5 R2 K15
- 0x581C0010, // 0038 LDCONST R7 K16
- 0x7C140400, // 0039 CALL R5 2
- 0x00161C05, // 003A ADD R5 K14 R5
- 0x00140B11, // 003B ADD R5 R5 K17
- 0x80040A00, // 003C RET 1 R5
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x880C0101, // 0004 GETMBR R3 R0 K1
+ 0x4C100000, // 0005 LDNIL R4
+ 0x200C0604, // 0006 NE R3 R3 R4
+ 0x780E0005, // 0007 JMPF R3 #000E
+ 0x8C0C0502, // 0008 GETMET R3 R2 K2
+ 0x60140018, // 0009 GETGBL R5 G24
+ 0x58180003, // 000A LDCONST R6 K3
+ 0x5C1C0600, // 000B MOVE R7 R3
+ 0x7C140400, // 000C CALL R5 2
+ 0x7C0C0400, // 000D CALL R3 2
+ 0x880C0104, // 000E GETMBR R3 R0 K4
+ 0x4C100000, // 000F LDNIL R4
+ 0x200C0604, // 0010 NE R3 R3 R4
+ 0x780E0005, // 0011 JMPF R3 #0018
+ 0x8C0C0502, // 0012 GETMET R3 R2 K2
+ 0x60140018, // 0013 GETGBL R5 G24
+ 0x58180005, // 0014 LDCONST R6 K5
+ 0x5C1C0600, // 0015 MOVE R7 R3
+ 0x7C140400, // 0016 CALL R5 2
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x58100006, // 0018 LDCONST R4 K6
+ 0x8C140107, // 0019 GETMET R5 R0 K7
+ 0x7C140200, // 001A CALL R5 1
+ 0x14180805, // 001B LT R6 R4 R5
+ 0x781A0006, // 001C JMPF R6 #0024
+ 0x8C180502, // 001D GETMET R6 R2 K2
+ 0x94200004, // 001E GETIDX R8 R0 R4
+ 0x8C201108, // 001F GETMET R8 R8 K8
+ 0x7C200200, // 0020 CALL R8 1
+ 0x7C180400, // 0021 CALL R6 2
+ 0x00100909, // 0022 ADD R4 R4 K9
+ 0x7001FFF6, // 0023 JMP #001B
+ 0x880C010A, // 0024 GETMBR R3 R0 K10
+ 0x4C180000, // 0025 LDNIL R6
+ 0x200C0606, // 0026 NE R3 R3 R6
+ 0x780E0005, // 0027 JMPF R3 #002E
+ 0x8C180502, // 0028 GETMET R6 R2 K2
+ 0x60200018, // 0029 GETGBL R8 G24
+ 0x5824000B, // 002A LDCONST R9 K11
+ 0x5C280600, // 002B MOVE R10 R3
+ 0x7C200400, // 002C CALL R8 2
+ 0x7C180400, // 002D CALL R6 2
+ 0x880C010C, // 002E GETMBR R3 R0 K12
+ 0x4C180000, // 002F LDNIL R6
+ 0x200C0606, // 0030 NE R3 R3 R6
+ 0x780E0005, // 0031 JMPF R3 #0038
+ 0x8C180502, // 0032 GETMET R6 R2 K2
+ 0x60200018, // 0033 GETGBL R8 G24
+ 0x5824000D, // 0034 LDCONST R9 K13
+ 0x5C280600, // 0035 MOVE R10 R3
+ 0x7C200400, // 0036 CALL R8 2
+ 0x7C180400, // 0037 CALL R6 2
+ 0x8C18050F, // 0038 GETMET R6 R2 K15
+ 0x58200010, // 0039 LDCONST R8 K16
+ 0x7C180400, // 003A CALL R6 2
+ 0x001A1C06, // 003B ADD R6 K14 R6
+ 0x00180D11, // 003C ADD R6 R6 K17
+ 0x80040C00, // 003D RET 1 R6
})
)
);
@@ -908,213 +909,5 @@ void be_load_zcl_attribute_list_class(bvm *vm) {
be_setglobal(vm, "zcl_attribute_list");
be_pop(vm, 1);
}
-
-extern const bclass be_class_zcl_attributes;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(zcl_attributes_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 6, /* 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(shortaddr),
- /* K1 */ be_nested_str_weak(groupaddr),
- /* K2 */ be_nested_str_weak(lqi),
- /* K3 */ be_nested_str_weak(src_ep),
- /* K4 */ be_nested_str_weak(attr_list),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x90020604, // 0003 SETMBR R0 K3 R4
- 0x6018000F, // 0004 GETGBL R6 G15
- 0x881C0104, // 0005 GETMBR R7 R0 K4
- 0x60200012, // 0006 GETGBL R8 G18
- 0x7C180400, // 0007 CALL R6 2
- 0x781A0001, // 0008 JMPF R6 #000B
- 0x90020805, // 0009 SETMBR R0 K4 R5
- 0x70020002, // 000A JMP #000E
- 0x60180012, // 000B GETGBL R6 G18
- 0x7C180000, // 000C CALL R6 0
- 0x90020806, // 000D SETMBR R0 K4 R6
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: tostring
-********************************************************************/
-be_local_closure(zcl_attributes_tostring, /* 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[17]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(shortaddr),
- /* K2 */ be_nested_str_weak(push),
- /* K3 */ be_nested_str_weak(_X22Device_X22_X3A_X220x_X2504X_X22),
- /* K4 */ be_nested_str_weak(_X22Group_X22_X3A_X220x_X2504X_X22),
- /* K5 */ be_nested_str_weak(groupaddr),
- /* K6 */ be_nested_str_weak(attr_list),
- /* K7 */ be_nested_str_weak(tostring),
- /* K8 */ be_nested_str_weak(stop_iteration),
- /* K9 */ be_nested_str_weak(src_ep),
- /* K10 */ be_nested_str_weak(_X22Endpoint_X22_X3A_X25i),
- /* K11 */ be_nested_str_weak(lqi),
- /* K12 */ be_nested_str_weak(_X22LinkQuality_X22_X3A_X25i),
- /* K13 */ be_nested_str_weak(_X7B),
- /* K14 */ be_nested_str_weak(concat),
- /* K15 */ be_nested_str_weak(_X2C),
- /* K16 */ be_nested_str_weak(_X7D),
- }),
- be_str_weak(tostring),
- &be_const_str_solidified,
- ( &(const binstruction[63]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x880C0101, // 0003 GETMBR R3 R0 K1
- 0x4C100000, // 0004 LDNIL R4
- 0x200C0604, // 0005 NE R3 R3 R4
- 0x780E0005, // 0006 JMPF R3 #000D
- 0x8C0C0502, // 0007 GETMET R3 R2 K2
- 0x60140018, // 0008 GETGBL R5 G24
- 0x58180003, // 0009 LDCONST R6 K3
- 0x881C0101, // 000A GETMBR R7 R0 K1
- 0x7C140400, // 000B CALL R5 2
- 0x7C0C0400, // 000C CALL R3 2
- 0x880C0101, // 000D GETMBR R3 R0 K1
- 0x4C100000, // 000E LDNIL R4
- 0x200C0604, // 000F NE R3 R3 R4
- 0x780E0005, // 0010 JMPF R3 #0017
- 0x8C0C0502, // 0011 GETMET R3 R2 K2
- 0x60140018, // 0012 GETGBL R5 G24
- 0x58180004, // 0013 LDCONST R6 K4
- 0x881C0105, // 0014 GETMBR R7 R0 K5
- 0x7C140400, // 0015 CALL R5 2
- 0x7C0C0400, // 0016 CALL R3 2
- 0x600C0010, // 0017 GETGBL R3 G16
- 0x88100106, // 0018 GETMBR R4 R0 K6
- 0x7C0C0200, // 0019 CALL R3 1
- 0xA8020006, // 001A EXBLK 0 #0022
- 0x5C100600, // 001B MOVE R4 R3
- 0x7C100000, // 001C CALL R4 0
- 0x8C140502, // 001D GETMET R5 R2 K2
- 0x8C1C0907, // 001E GETMET R7 R4 K7
- 0x7C1C0200, // 001F CALL R7 1
- 0x7C140400, // 0020 CALL R5 2
- 0x7001FFF8, // 0021 JMP #001B
- 0x580C0008, // 0022 LDCONST R3 K8
- 0xAC0C0200, // 0023 CATCH R3 1 0
- 0xB0080000, // 0024 RAISE 2 R0 R0
- 0x880C0109, // 0025 GETMBR R3 R0 K9
- 0x4C100000, // 0026 LDNIL R4
- 0x200C0604, // 0027 NE R3 R3 R4
- 0x780E0005, // 0028 JMPF R3 #002F
- 0x8C0C0502, // 0029 GETMET R3 R2 K2
- 0x60140018, // 002A GETGBL R5 G24
- 0x5818000A, // 002B LDCONST R6 K10
- 0x881C0109, // 002C GETMBR R7 R0 K9
- 0x7C140400, // 002D CALL R5 2
- 0x7C0C0400, // 002E CALL R3 2
- 0x880C010B, // 002F GETMBR R3 R0 K11
- 0x4C100000, // 0030 LDNIL R4
- 0x200C0604, // 0031 NE R3 R3 R4
- 0x780E0005, // 0032 JMPF R3 #0039
- 0x8C0C0502, // 0033 GETMET R3 R2 K2
- 0x60140018, // 0034 GETGBL R5 G24
- 0x5818000C, // 0035 LDCONST R6 K12
- 0x881C010B, // 0036 GETMBR R7 R0 K11
- 0x7C140400, // 0037 CALL R5 2
- 0x7C0C0400, // 0038 CALL R3 2
- 0x8C0C050E, // 0039 GETMET R3 R2 K14
- 0x5814000F, // 003A LDCONST R5 K15
- 0x7C0C0400, // 003B CALL R3 2
- 0x000E1A03, // 003C ADD R3 K13 R3
- 0x000C0710, // 003D ADD R3 R3 K16
- 0x80040600, // 003E RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: push
-********************************************************************/
-be_local_closure(zcl_attributes_push, /* 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(attr_list),
- /* K1 */ be_nested_str_weak(push),
- }),
- be_str_weak(push),
- &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 class: zcl_attributes
-********************************************************************/
-be_local_class(zcl_attributes,
- 5,
- NULL,
- be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(groupaddr, 6), be_const_var(1) },
- { be_const_key_weak(push, 4), be_const_closure(zcl_attributes_push_closure) },
- { be_const_key_weak(shortaddr, -1), be_const_var(0) },
- { be_const_key_weak(init, -1), be_const_closure(zcl_attributes_init_closure) },
- { be_const_key_weak(tostring, -1), be_const_closure(zcl_attributes_tostring_closure) },
- { be_const_key_weak(lqi, 1), be_const_var(2) },
- { be_const_key_weak(attr_list, -1), be_const_var(4) },
- { be_const_key_weak(src_ep, 0), be_const_var(3) },
- })),
- be_str_weak(zcl_attributes)
-);
-/*******************************************************************/
-
-void be_load_zcl_attributes_class(bvm *vm) {
- be_pushntvclass(vm, &be_class_zcl_attributes);
- be_setglobal(vm, "zcl_attributes");
- be_pop(vm, 1);
-}
/********************************************************************/
/* End of solidification */
diff --git a/lib/libesp32_lvgl/lvgl/library.json b/lib/libesp32_lvgl/lvgl/library.json
index 2efd28a17..94d54b71a 100644
--- a/lib/libesp32_lvgl/lvgl/library.json
+++ b/lib/libesp32_lvgl/lvgl/library.json
@@ -1,6 +1,6 @@
{
"name": "lvgl",
- "version": "8.3.7",
+ "version": "8.3.8",
"keywords": "graphics, gui, embedded, tft, lvgl",
"description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.",
"repository": {
diff --git a/lib/libesp32_lvgl/lvgl/library.properties b/lib/libesp32_lvgl/lvgl/library.properties
index c8f7ae9c1..ddea9b42f 100644
--- a/lib/libesp32_lvgl/lvgl/library.properties
+++ b/lib/libesp32_lvgl/lvgl/library.properties
@@ -1,5 +1,5 @@
name=lvgl
-version=8.3.7
+version=8.3.8
author=kisvegabor
maintainer=kisvegabor,embeddedt,pete-pjb
sentence=Full-featured Graphics Library for Embedded Systems
diff --git a/lib/libesp32_lvgl/lvgl/lv_conf_template.h b/lib/libesp32_lvgl/lvgl/lv_conf_template.h
index 86ca20764..cb3887d34 100644
--- a/lib/libesp32_lvgl/lvgl/lv_conf_template.h
+++ b/lib/libesp32_lvgl/lvgl/lv_conf_template.h
@@ -1,6 +1,6 @@
/**
* @file lv_conf.h
- * Configuration file for v8.3.7
+ * Configuration file for v8.3.8
*/
/*
@@ -187,6 +187,14 @@
#define LV_GPU_DMA2D_CMSIS_INCLUDE
#endif
+/*Enable RA6M3 G2D GPU*/
+#define LV_USE_GPU_RA6M3_G2D 0
+#if LV_USE_GPU_RA6M3_G2D
+ /*include path of target processor
+ e.g. "hal_data.h"*/
+ #define LV_GPU_RA6M3_G2D_INCLUDE "hal_data.h"
+#endif
+
/*Use SWM341's DMA2D GPU*/
#define LV_USE_GPU_SWM341_DMA2D 0
#if LV_USE_GPU_SWM341_DMA2D
diff --git a/lib/libesp32_lvgl/lvgl/lvgl.h b/lib/libesp32_lvgl/lvgl/lvgl.h
index 985c796c9..85782a066 100644
--- a/lib/libesp32_lvgl/lvgl/lvgl.h
+++ b/lib/libesp32_lvgl/lvgl/lvgl.h
@@ -15,7 +15,7 @@ extern "C" {
***************************/
#define LVGL_VERSION_MAJOR 8
#define LVGL_VERSION_MINOR 3
-#define LVGL_VERSION_PATCH 7
+#define LVGL_VERSION_PATCH 8
#define LVGL_VERSION_INFO ""
/*********************
diff --git a/lib/libesp32_lvgl/lvgl/src/core/lv_disp.c b/lib/libesp32_lvgl/lvgl/src/core/lv_disp.c
index a1022b56c..dd0f7898e 100644
--- a/lib/libesp32_lvgl/lvgl/src/core/lv_disp.c
+++ b/lib/libesp32_lvgl/lvgl/src/core/lv_disp.c
@@ -262,6 +262,7 @@ void lv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t
/*Shortcut for immediate load*/
if(time == 0 && delay == 0) {
scr_load_internal(new_scr);
+ if(auto_del) lv_obj_del(act_scr);
return;
}
diff --git a/lib/libesp32_lvgl/lvgl/src/core/lv_obj.c b/lib/libesp32_lvgl/lvgl/src/core/lv_obj.c
index 8890fcbe0..d7bd04545 100644
--- a/lib/libesp32_lvgl/lvgl/src/core/lv_obj.c
+++ b/lib/libesp32_lvgl/lvgl/src/core/lv_obj.c
@@ -30,6 +30,10 @@
#include "../draw/stm32_dma2d/lv_gpu_stm32_dma2d.h"
#endif
+#if LV_USE_GPU_RA6M3_G2D
+ #include "../draw/renesas/lv_gpu_d2_ra6m3.h"
+#endif
+
#if LV_USE_GPU_SWM341_DMA2D
#include "../draw/swm341_dma2d/lv_gpu_swm341_dma2d.h"
#endif
@@ -119,6 +123,11 @@ void lv_init(void)
lv_draw_stm32_dma2d_init();
#endif
+#if LV_USE_GPU_RA6M3_G2D
+ /*Initialize G2D GPU*/
+ lv_draw_ra6m3_g2d_init();
+#endif
+
#if LV_USE_GPU_SWM341_DMA2D
/*Initialize DMA2D GPU*/
lv_draw_swm341_dma2d_init();
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c b/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c
index 83f3e6605..c42f23872 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c
@@ -339,7 +339,7 @@
lv_color_t *rgb_tmp_buf = NULL; \
if(draw_dsc->recolor_opa > LV_OPA_MIN) { \
rgb_tmp_buf \
- = lv_malloc(src_w * src_h * sizeof(lv_color_t)); \
+ = lv_mem_buf_get(src_w * src_h * sizeof(lv_color_t)); \
if (NULL == rgb_tmp_buf) { \
LV_LOG_WARN( \
"Failed to allocate memory for accelerating recolour, " \
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/lv_draw_img.c b/lib/libesp32_lvgl/lvgl/src/draw/lv_draw_img.c
index 1deb39e0c..1e83eaf65 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/lv_draw_img.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/lv_draw_img.c
@@ -198,11 +198,19 @@ lv_img_src_t lv_img_src_get_type(const void * src)
if(src == NULL) return img_src_type;
const uint8_t * u8_p = src;
- /*The first byte shows the type of the image source*/
+ /*The first or fourth byte depending on platform endianess shows the type of the image source*/
+#if LV_BIG_ENDIAN_SYSTEM
+ if(u8_p[3] >= 0x20 && u8_p[3] <= 0x7F) {
+#else
if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) {
+#endif
img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/
}
+#if LV_BIG_ENDIAN_SYSTEM
+ else if(u8_p[3] >= 0x80) {
+#else
else if(u8_p[0] >= 0x80) {
+#endif
img_src_type = LV_IMG_SRC_SYMBOL; /*Symbols begins after 0x7F*/
}
else {
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp.c
index a7084b408..cd70f48b2 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp.c
@@ -59,10 +59,14 @@
static void lv_draw_pxp_wait_for_finish(lv_draw_ctx_t * draw_ctx);
+static void lv_draw_pxp_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
+
static void lv_draw_pxp_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * dsc,
const lv_area_t * coords, const uint8_t * map_p, lv_img_cf_t cf);
-static void lv_draw_pxp_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
+static void lv_draw_pxp_buffer_copy(lv_draw_ctx_t * draw_ctx,
+ void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area,
+ void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area);
/**********************
* STATIC VARIABLES
@@ -84,6 +88,7 @@ void lv_draw_pxp_ctx_init(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx)
pxp_draw_ctx->base_draw.draw_img_decoded = lv_draw_pxp_img_decoded;
pxp_draw_ctx->blend = lv_draw_pxp_blend;
pxp_draw_ctx->base_draw.wait_for_finish = lv_draw_pxp_wait_for_finish;
+ pxp_draw_ctx->base_draw.buffer_copy = lv_draw_pxp_buffer_copy;
}
void lv_draw_pxp_ctx_deinit(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx)
@@ -184,22 +189,28 @@ static void lv_draw_pxp_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_
return;
}
- lv_area_t blend_area;
- /*Let's get the blend area which is the intersection of the area to draw and the clip area.*/
- if(!_lv_area_intersect(&blend_area, coords, draw_ctx->clip_area))
- return; /*Fully clipped, nothing to do*/
+ lv_area_t rel_coords;
+ lv_area_copy(&rel_coords, coords);
+ lv_area_move(&rel_coords, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
- /*Make the blend area relative to the buffer*/
- lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
+ lv_area_t rel_clip_area;
+ lv_area_copy(&rel_clip_area, draw_ctx->clip_area);
+ lv_area_move(&rel_clip_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
- lv_coord_t src_width = lv_area_get_width(coords);
- lv_coord_t src_height = lv_area_get_height(coords);
-
- bool has_mask = lv_draw_mask_is_any(&blend_area);
bool has_scale = (dsc->zoom != LV_IMG_ZOOM_NONE);
bool has_rotation = (dsc->angle != 0);
bool unsup_rotation = false;
+ lv_area_t blend_area;
+ if(has_rotation)
+ lv_area_copy(&blend_area, &rel_coords);
+ else if(!_lv_area_intersect(&blend_area, &rel_coords, &rel_clip_area))
+ return; /*Fully clipped, nothing to do*/
+
+ bool has_mask = lv_draw_mask_is_any(&blend_area);
+ lv_coord_t src_width = lv_area_get_width(coords);
+ lv_coord_t src_height = lv_area_get_height(coords);
+
if(has_rotation) {
/*
* PXP can only rotate at 90x angles.
@@ -247,4 +258,18 @@ static void lv_draw_pxp_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_
dsc, cf);
}
+static void lv_draw_pxp_buffer_copy(lv_draw_ctx_t * draw_ctx,
+ void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area,
+ void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area)
+{
+ LV_UNUSED(draw_ctx);
+
+ if(lv_area_get_size(dest_area) < LV_GPU_NXP_PXP_SIZE_LIMIT) {
+ lv_draw_sw_buffer_copy(draw_ctx, dest_buf, dest_stride, dest_area, src_buf, src_stride, src_area);
+ return;
+ }
+
+ lv_gpu_nxp_pxp_buffer_copy(dest_buf, dest_area, dest_stride, src_buf, src_area, src_stride);
+}
+
#endif /*LV_USE_GPU_NXP_PXP*/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.c
index a32c91710..82925769a 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.c
@@ -40,8 +40,6 @@
* DEFINES
*********************/
-#define PXP_TEMP_BUF_SIZE LCD_WIDTH * LCD_HEIGHT * LCD_FB_BYTE_PER_PIXEL
-
#if LV_COLOR_16_SWAP
#error Color swap not implemented. Disable LV_COLOR_16_SWAP feature.
#endif
@@ -50,10 +48,17 @@
#define PXP_OUT_PIXEL_FORMAT kPXP_OutputPixelFormatRGB565
#define PXP_AS_PIXEL_FORMAT kPXP_AsPixelFormatRGB565
#define PXP_PS_PIXEL_FORMAT kPXP_PsPixelFormatRGB565
+ #define PXP_TEMP_BUF_SIZE LCD_WIDTH * LCD_HEIGHT * 2U
#elif LV_COLOR_DEPTH == 32
#define PXP_OUT_PIXEL_FORMAT kPXP_OutputPixelFormatARGB8888
#define PXP_AS_PIXEL_FORMAT kPXP_AsPixelFormatARGB8888
- #define PXP_PS_PIXEL_FORMAT kPXP_PsPixelFormatRGB888
+ #if (!(defined(FSL_FEATURE_PXP_HAS_NO_EXTEND_PIXEL_FORMAT) && FSL_FEATURE_PXP_HAS_NO_EXTEND_PIXEL_FORMAT)) && \
+ (!(defined(FSL_FEATURE_PXP_V3) && FSL_FEATURE_PXP_V3))
+ #define PXP_PS_PIXEL_FORMAT kPXP_PsPixelFormatARGB8888
+ #else
+ #define PXP_PS_PIXEL_FORMAT kPXP_PsPixelFormatRGB888
+ #endif
+ #define PXP_TEMP_BUF_SIZE LCD_WIDTH * LCD_HEIGHT * 4U
#elif
#error Only 16bit and 32bit color depth are supported. Set LV_COLOR_DEPTH to 16 or 32.
#endif
@@ -100,7 +105,7 @@ static void lv_pxp_blit_opa(lv_color_t * dest_buf, const lv_area_t * dest_area,
* @param[in] dsc Image descriptor
* @param[in] cf Color format
*/
-static void lv_pxp_blit_cover(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+static void lv_pxp_blit_cover(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
const lv_draw_img_dsc_t * dsc, lv_img_cf_t cf);
@@ -286,7 +291,7 @@ void lv_gpu_nxp_pxp_blit(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_
lv_gpu_nxp_pxp_run();
}
-void lv_gpu_nxp_pxp_blit_transform(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+void lv_gpu_nxp_pxp_blit_transform(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
const lv_draw_img_dsc_t * dsc, lv_img_cf_t cf)
{
@@ -308,6 +313,33 @@ void lv_gpu_nxp_pxp_blit_transform(lv_color_t * dest_buf, const lv_area_t * dest
lv_pxp_blit_cf(dest_buf, dest_area, dest_stride, src_buf, src_area, src_stride, dsc, cf);
}
+void lv_gpu_nxp_pxp_buffer_copy(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride)
+{
+ lv_coord_t src_width = lv_area_get_width(src_area);
+ lv_coord_t src_height = lv_area_get_height(src_area);
+
+ lv_gpu_nxp_pxp_reset();
+
+ const pxp_pic_copy_config_t picCopyConfig = {
+ .srcPicBaseAddr = (uint32_t)src_buf,
+ .srcPitchBytes = src_stride * sizeof(lv_color_t),
+ .srcOffsetX = src_area->x1,
+ .srcOffsetY = src_area->y1,
+ .destPicBaseAddr = (uint32_t)dest_buf,
+ .destPitchBytes = dest_stride * sizeof(lv_color_t),
+ .destOffsetX = dest_area->x1,
+ .destOffsetY = dest_area->y1,
+ .width = src_width,
+ .height = src_height,
+ .pixelFormat = PXP_AS_PIXEL_FORMAT
+ };
+
+ PXP_StartPictureCopy(LV_GPU_NXP_PXP_ID, &picCopyConfig);
+
+ lv_gpu_nxp_pxp_wait();
+}
+
/**********************
* STATIC FUNCTIONS
**********************/
@@ -316,22 +348,25 @@ static void lv_pxp_blit_opa(lv_color_t * dest_buf, const lv_area_t * dest_area,
const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
const lv_draw_img_dsc_t * dsc, lv_img_cf_t cf)
{
- lv_coord_t temp_area_w = lv_area_get_width(dest_area);
- lv_coord_t temp_area_h = lv_area_get_height(dest_area);
- const lv_area_t temp_area = {
- .x1 = 0,
- .y1 = 0,
- .x2 = temp_area_w - 1,
- .y2 = temp_area_h - 1
- };
+ lv_area_t temp_area;
+ lv_area_copy(&temp_area, dest_area);
+ lv_coord_t temp_stride = dest_stride;
+ lv_coord_t temp_w = lv_area_get_width(&temp_area);
+ lv_coord_t temp_h = lv_area_get_height(&temp_area);
/*Step 1: Transform with full opacity to temporary buffer*/
- lv_pxp_blit_cover((lv_color_t *)temp_buf, &temp_area, temp_area_w, src_buf, src_area, src_stride, dsc, cf);
+ lv_pxp_blit_cover((lv_color_t *)temp_buf, &temp_area, temp_stride, src_buf, src_area, src_stride, dsc, cf);
+
+ /*Switch width and height if angle requires it*/
+ if(dsc->angle == 900 || dsc->angle == 2700) {
+ temp_area.x2 = temp_area.x1 + temp_h - 1;
+ temp_area.y2 = temp_area.y1 + temp_w - 1;
+ }
/*Step 2: Blit temporary result with required opacity to output*/
- lv_pxp_blit_cf(dest_buf, dest_area, dest_stride, (lv_color_t *)temp_buf, &temp_area, temp_area_w, dsc, cf);
+ lv_pxp_blit_cf(dest_buf, &temp_area, dest_stride, (lv_color_t *)temp_buf, &temp_area, temp_stride, dsc, cf);
}
-static void lv_pxp_blit_cover(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+static void lv_pxp_blit_cover(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
const lv_draw_img_dsc_t * dsc, lv_img_cf_t cf)
{
@@ -343,28 +378,43 @@ static void lv_pxp_blit_cover(lv_color_t * dest_buf, const lv_area_t * dest_area
bool has_recolor = (dsc->recolor_opa != LV_OPA_TRANSP);
bool has_rotation = (dsc->angle != 0);
+ lv_point_t pivot = dsc->pivot;
+ lv_coord_t piv_offset_x;
+ lv_coord_t piv_offset_y;
+
lv_gpu_nxp_pxp_reset();
if(has_rotation) {
- /*Convert rotation angle*/
+ /*Convert rotation angle and calculate offsets caused by pivot*/
pxp_rotate_degree_t pxp_angle;
switch(dsc->angle) {
case 0:
pxp_angle = kPXP_Rotate0;
+ piv_offset_x = 0;
+ piv_offset_y = 0;
break;
case 900:
+ piv_offset_x = pivot.x + pivot.y - dest_h;
+ piv_offset_y = pivot.y - pivot.x;
pxp_angle = kPXP_Rotate90;
break;
case 1800:
+ piv_offset_x = 2 * pivot.x - dest_w;
+ piv_offset_y = 2 * pivot.y - dest_h;
pxp_angle = kPXP_Rotate180;
break;
case 2700:
+ piv_offset_x = pivot.x - pivot.y;
+ piv_offset_y = pivot.x + pivot.y - dest_w;
pxp_angle = kPXP_Rotate270;
break;
default:
+ piv_offset_x = 0;
+ piv_offset_y = 0;
pxp_angle = kPXP_Rotate0;
}
PXP_SetRotateConfig(LV_GPU_NXP_PXP_ID, kPXP_RotateOutputBuffer, pxp_angle, kPXP_FlipDisable);
+ lv_area_move(dest_area, piv_offset_x, piv_offset_y);
}
/*AS buffer - source image*/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.h b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.h
index 9fe9192f7..961566726 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.h
@@ -99,10 +99,24 @@ void lv_gpu_nxp_pxp_blit(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_
* @param[in] dsc Image descriptor
* @param[in] cf Color format
*/
-void lv_gpu_nxp_pxp_blit_transform(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+void lv_gpu_nxp_pxp_blit_transform(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
const lv_draw_img_dsc_t * dsc, lv_img_cf_t cf);
+/**
+ * BLock Image Transfer - copy rectangular image from src_buf to dst_buf, no transformation or blending.
+ *
+ *
+ * @param[in/out] dest_buf Destination buffer
+ * @param[in] dest_area Area with relative coordinates of destination buffer
+ * @param[in] dest_stride Stride of destination buffer in pixels
+ * @param[in] src_buf Source buffer
+ * @param[in] src_area Area with relative coordinates of source buffer
+ * @param[in] src_stride Stride of source buffer in pixels
+ */
+void lv_gpu_nxp_pxp_buffer_copy(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride);
+
/**********************
* MACROS
**********************/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_gpu_nxp_pxp.h b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_gpu_nxp_pxp.h
index 10a67215a..46f4a0ba1 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_gpu_nxp_pxp.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/pxp/lv_gpu_nxp_pxp.h
@@ -149,7 +149,7 @@ void lv_gpu_nxp_pxp_wait(void);
#if LV_GPU_NXP_PXP_LOG_TRACES
#define PXP_LOG_TRACE(fmt, ...) \
do { \
- LV_LOG_ERROR(fmt, ##__VA_ARGS__); \
+ LV_LOG(fmt, ##__VA_ARGS__); \
} while (0)
#else
#define PXP_LOG_TRACE(fmt, ...) \
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite.c
index eae1b8a58..031f57e4e 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite.c
@@ -69,6 +69,10 @@ static void lv_draw_vglite_wait_for_finish(lv_draw_ctx_t * draw_ctx);
static void lv_draw_vglite_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * dsc,
const lv_area_t * coords, const uint8_t * map_p, lv_img_cf_t cf);
+static void lv_draw_vglite_buffer_copy(lv_draw_ctx_t * draw_ctx,
+ void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area,
+ void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area);
+
static void lv_draw_vglite_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
static void lv_draw_vglite_line(lv_draw_ctx_t * draw_ctx, const lv_draw_line_dsc_t * dsc, const lv_point_t * point1,
@@ -111,6 +115,7 @@ void lv_draw_vglite_ctx_init(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx)
vglite_draw_ctx->base_draw.draw_img_decoded = lv_draw_vglite_img_decoded;
vglite_draw_ctx->blend = lv_draw_vglite_blend;
vglite_draw_ctx->base_draw.wait_for_finish = lv_draw_vglite_wait_for_finish;
+ vglite_draw_ctx->base_draw.buffer_copy = lv_draw_vglite_buffer_copy;
}
void lv_draw_vglite_ctx_deinit(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx)
@@ -166,11 +171,9 @@ static void lv_draw_vglite_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blen
}
lv_area_t blend_area;
- /*Let's get the blend area which is the intersection of the area to draw and the clip area*/
if(!_lv_area_intersect(&blend_area, dsc->blend_area, draw_ctx->clip_area))
return; /*Fully clipped, nothing to do*/
- /*Make the blend area relative to the buffer*/
lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
bool done = false;
@@ -185,9 +188,6 @@ static void lv_draw_vglite_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blen
VG_LITE_LOG_TRACE("VG-Lite fill failed. Fallback.");
}
else {
- lv_color_t * dest_buf = draw_ctx->buf;
- lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area);
-
lv_area_t src_area;
src_area.x1 = blend_area.x1 - (dsc->blend_area->x1 - draw_ctx->buf_area->x1);
src_area.y1 = blend_area.y1 - (dsc->blend_area->y1 - draw_ctx->buf_area->y1);
@@ -195,8 +195,15 @@ static void lv_draw_vglite_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blen
src_area.y2 = src_area.y1 + lv_area_get_height(dsc->blend_area) - 1;
lv_coord_t src_stride = lv_area_get_width(dsc->blend_area);
- done = (lv_gpu_nxp_vglite_blit(dest_buf, &blend_area, dest_stride,
- src_buf, &src_area, src_stride, dsc->opa) == LV_RES_OK);
+#if VG_LITE_BLIT_SPLIT_ENABLED
+ lv_color_t * dest_buf = draw_ctx->buf;
+ lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area);
+
+ done = (lv_gpu_nxp_vglite_blit_split(dest_buf, &blend_area, dest_stride,
+ src_buf, &src_area, src_stride, dsc->opa) == LV_RES_OK);
+#else
+ done = (lv_gpu_nxp_vglite_blit(&blend_area, src_buf, &src_area, src_stride, dsc->opa) == LV_RES_OK);
+#endif
if(!done)
VG_LITE_LOG_TRACE("VG-Lite blit failed. Fallback.");
@@ -224,13 +231,21 @@ static void lv_draw_vglite_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_i
return;
}
- lv_area_t blend_area;
- /*Let's get the blend area which is the intersection of the area to draw and the clip area*/
- if(!_lv_area_intersect(&blend_area, coords, draw_ctx->clip_area))
- return; /*Fully clipped, nothing to do*/
+ lv_area_t rel_coords;
+ lv_area_copy(&rel_coords, coords);
+ lv_area_move(&rel_coords, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
- /*Make the blend area relative to the buffer*/
- lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
+ lv_area_t rel_clip_area;
+ lv_area_copy(&rel_clip_area, draw_ctx->clip_area);
+ lv_area_move(&rel_clip_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
+
+ lv_area_t blend_area;
+ bool has_transform = dsc->angle != 0 || dsc->zoom != LV_IMG_ZOOM_NONE;
+
+ if(has_transform)
+ lv_area_copy(&blend_area, &rel_coords);
+ else if(!_lv_area_intersect(&blend_area, &rel_coords, &rel_clip_area))
+ return; /*Fully clipped, nothing to do*/
bool has_mask = lv_draw_mask_is_any(&blend_area);
bool has_recolor = (dsc->recolor_opa != LV_OPA_TRANSP);
@@ -242,9 +257,6 @@ static void lv_draw_vglite_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_i
&& !lv_img_cf_has_alpha(cf)
#endif
) {
- lv_color_t * dest_buf = draw_ctx->buf;
- lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area);
-
lv_area_t src_area;
src_area.x1 = blend_area.x1 - (coords->x1 - draw_ctx->buf_area->x1);
src_area.y1 = blend_area.y1 - (coords->y1 - draw_ctx->buf_area->y1);
@@ -252,17 +264,48 @@ static void lv_draw_vglite_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_i
src_area.y2 = src_area.y1 + lv_area_get_height(coords) - 1;
lv_coord_t src_stride = lv_area_get_width(coords);
- done = (lv_gpu_nxp_vglite_blit_transform(dest_buf, &blend_area, dest_stride,
- src_buf, &src_area, src_stride, dsc) == LV_RES_OK);
+#if VG_LITE_BLIT_SPLIT_ENABLED
+ lv_color_t * dest_buf = draw_ctx->buf;
+ lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area);
+
+ if(has_transform)
+ /* VG-Lite blit split with transformation is not supported! */
+ done = false;
+ else
+ done = (lv_gpu_nxp_vglite_blit_split(dest_buf, &blend_area, dest_stride,
+ src_buf, &src_area, src_stride, dsc->opa) == LV_RES_OK);
+#else
+ if(has_transform)
+ done = (lv_gpu_nxp_vglite_blit_transform(&blend_area, &rel_clip_area,
+ src_buf, &src_area, src_stride, dsc) == LV_RES_OK);
+ else
+ done = (lv_gpu_nxp_vglite_blit(&blend_area, src_buf, &src_area, src_stride, dsc->opa) == LV_RES_OK);
+#endif
if(!done)
- VG_LITE_LOG_TRACE("VG-Lite blit transform failed. Fallback.");
+ VG_LITE_LOG_TRACE("VG-Lite blit %sfailed. Fallback.", has_transform ? "transform " : "");
}
if(!done)
lv_draw_sw_img_decoded(draw_ctx, dsc, coords, map_p, cf);
}
+static void lv_draw_vglite_buffer_copy(lv_draw_ctx_t * draw_ctx,
+ void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area,
+ void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area)
+{
+ bool done = false;
+
+ if(lv_area_get_size(dest_area) >= LV_GPU_NXP_VG_LITE_SIZE_LIMIT) {
+ done = lv_gpu_nxp_vglite_buffer_copy(dest_buf, dest_area, dest_stride, src_buf, src_area, src_stride);
+ if(!done)
+ VG_LITE_LOG_TRACE("VG-Lite buffer copy failed. Fallback.");
+ }
+
+ if(!done)
+ lv_draw_sw_buffer_copy(draw_ctx, dest_buf, dest_stride, dest_area, src_buf, src_stride, src_area);
+}
+
static void lv_draw_vglite_line(lv_draw_ctx_t * draw_ctx, const lv_draw_line_dsc_t * dsc, const lv_point_t * point1,
const lv_point_t * point2)
{
@@ -284,21 +327,19 @@ static void lv_draw_vglite_line(lv_draw_ctx_t * draw_ctx, const lv_draw_line_dsc
rel_clip_area.y1 = LV_MIN(point1->y, point2->y) - dsc->width / 2;
rel_clip_area.y2 = LV_MAX(point1->y, point2->y) + dsc->width / 2;
- bool is_common;
- is_common = _lv_area_intersect(&rel_clip_area, &rel_clip_area, draw_ctx->clip_area);
- if(!is_common)
- return;
+ lv_area_t clipped_coords;
+ if(!_lv_area_intersect(&clipped_coords, &rel_clip_area, draw_ctx->clip_area))
+ return; /*Fully clipped, nothing to do*/
- /* Make coordinates relative to the draw buffer */
lv_area_move(&rel_clip_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
lv_point_t rel_point1 = { point1->x - draw_ctx->buf_area->x1, point1->y - draw_ctx->buf_area->y1 };
lv_point_t rel_point2 = { point2->x - draw_ctx->buf_area->x1, point2->y - draw_ctx->buf_area->y1 };
bool done = false;
- bool mask_any = lv_draw_mask_is_any(&rel_clip_area);
+ bool has_mask = lv_draw_mask_is_any(&rel_clip_area);
- if(!mask_any) {
+ if(!has_mask) {
done = (lv_gpu_nxp_vglite_draw_line(&rel_point1, &rel_point2, &rel_clip_area, dsc) == LV_RES_OK);
if(!done)
VG_LITE_LOG_TRACE("VG-Lite draw line failed. Fallback.");
@@ -369,8 +410,6 @@ static lv_res_t lv_draw_vglite_bg(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_d
rel_coords.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0;
rel_coords.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0;
}
-
- /* Make coordinates relative to draw buffer */
lv_area_move(&rel_coords, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
lv_area_t rel_clip_area;
@@ -379,9 +418,9 @@ static lv_res_t lv_draw_vglite_bg(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_d
lv_area_t clipped_coords;
if(!_lv_area_intersect(&clipped_coords, &rel_coords, &rel_clip_area))
- return LV_RES_INV;
+ return LV_RES_OK; /*Fully clipped, nothing to do*/
- bool mask_any = lv_draw_mask_is_any(&rel_coords);
+ bool has_mask = lv_draw_mask_is_any(&rel_coords);
lv_grad_dir_t grad_dir = dsc->bg_grad.dir;
lv_color_t bg_color = (grad_dir == (lv_grad_dir_t)LV_GRAD_DIR_NONE) ?
dsc->bg_color : dsc->bg_grad.stops[0].color;
@@ -394,7 +433,7 @@ static lv_res_t lv_draw_vglite_bg(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_d
*
* Complex case: gradient or radius but no mask.
*/
- if(!mask_any && ((dsc->radius != 0) || (grad_dir != (lv_grad_dir_t)LV_GRAD_DIR_NONE))) {
+ if(!has_mask && ((dsc->radius != 0) || (grad_dir != (lv_grad_dir_t)LV_GRAD_DIR_NONE))) {
lv_res_t res = lv_gpu_nxp_vglite_draw_bg(&rel_coords, &rel_clip_area, dsc);
if(res != LV_RES_OK)
VG_LITE_LOG_TRACE("VG-Lite draw bg failed. Fallback.");
@@ -426,13 +465,16 @@ static lv_res_t lv_draw_vglite_border(lv_draw_ctx_t * draw_ctx, const lv_draw_re
rel_coords.y1 = coords->y1 + ceil(border_width / 2.0f);
rel_coords.y2 = coords->y2 - floor(border_width / 2.0f);
- /* Make coordinates relative to the draw buffer */
lv_area_move(&rel_coords, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
lv_area_t rel_clip_area;
lv_area_copy(&rel_clip_area, draw_ctx->clip_area);
lv_area_move(&rel_clip_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
+ lv_area_t clipped_coords;
+ if(!_lv_area_intersect(&clipped_coords, &rel_coords, &rel_clip_area))
+ return LV_RES_OK; /*Fully clipped, nothing to do*/
+
lv_res_t res = lv_gpu_nxp_vglite_draw_border_generic(&rel_coords, &rel_clip_area, dsc, true);
if(res != LV_RES_OK)
VG_LITE_LOG_TRACE("VG-Lite draw border failed. Fallback.");
@@ -456,13 +498,16 @@ static lv_res_t lv_draw_vglite_outline(lv_draw_ctx_t * draw_ctx, const lv_draw_r
rel_coords.y1 = coords->y1 - outline_pad - floor(dsc->outline_width / 2.0f);
rel_coords.y2 = coords->y2 + outline_pad + ceil(dsc->outline_width / 2.0f);
- /* Make coordinates relative to the draw buffer */
lv_area_move(&rel_coords, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
lv_area_t rel_clip_area;
lv_area_copy(&rel_clip_area, draw_ctx->clip_area);
lv_area_move(&rel_clip_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
+ lv_area_t clipped_coords;
+ if(!_lv_area_intersect(&clipped_coords, &rel_coords, &rel_clip_area))
+ return LV_RES_OK; /*Fully clipped, nothing to do*/
+
lv_res_t res = lv_gpu_nxp_vglite_draw_border_generic(&rel_coords, &rel_clip_area, dsc, false);
if(res != LV_RES_OK)
VG_LITE_LOG_TRACE("VG-Lite draw outline failed. Fallback.");
@@ -488,17 +533,21 @@ static void lv_draw_vglite_arc(lv_draw_ctx_t * draw_ctx, const lv_draw_arc_dsc_t
return;
}
- /* Make coordinates relative to the draw buffer */
lv_point_t rel_center = {center->x - draw_ctx->buf_area->x1, center->y - draw_ctx->buf_area->y1};
lv_area_t rel_clip_area;
lv_area_copy(&rel_clip_area, draw_ctx->clip_area);
lv_area_move(&rel_clip_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
- done = (lv_gpu_nxp_vglite_draw_arc(&rel_center, (int32_t)radius, (int32_t)start_angle, (int32_t)end_angle,
- &rel_clip_area, dsc) == LV_RES_OK);
- if(!done)
- VG_LITE_LOG_TRACE("VG-Lite draw arc failed. Fallback.");
+ bool has_mask = lv_draw_mask_is_any(&rel_clip_area);
+
+ if(!has_mask) {
+ done = (lv_gpu_nxp_vglite_draw_arc(&rel_center, (int32_t)radius, (int32_t)start_angle, (int32_t)end_angle,
+ &rel_clip_area, dsc) == LV_RES_OK);
+ if(!done)
+ VG_LITE_LOG_TRACE("VG-Lite draw arc failed. Fallback.");
+ }
+
#endif/*LV_DRAW_COMPLEX*/
if(!done)
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_arc.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_arc.c
index 775bf734b..39470527d 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_arc.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_arc.c
@@ -216,6 +216,8 @@ lv_res_t lv_gpu_nxp_vglite_draw_arc(const lv_point_t * center, int32_t radius, i
vg_lite_matrix_t matrix;
vg_lite_identity(&matrix);
+ lv_vglite_set_scissor(clip_area);
+
/*** Draw arc ***/
err = vg_lite_draw(vgbuf, &path, VG_LITE_FILL_NON_ZERO, &matrix, VG_LITE_BLEND_SRC_OVER, vgcol);
VG_LITE_ERR_RETURN_INV(err, "Draw arc failed.");
@@ -223,6 +225,8 @@ lv_res_t lv_gpu_nxp_vglite_draw_arc(const lv_point_t * center, int32_t radius, i
if(lv_vglite_run() != LV_RES_OK)
VG_LITE_RETURN_INV("Run failed.");
+ lv_vglite_disable_scissor();
+
err = vg_lite_clear_path(&path);
VG_LITE_ERR_RETURN_INV(err, "Clear path failed.");
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.c
index e1408b760..4a15fd55c 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.c
@@ -35,6 +35,7 @@
#if LV_USE_GPU_NXP_VG_LITE
#include "lv_vglite_buf.h"
+#include "lv_vglite_utils.h"
/*********************
* DEFINES
@@ -43,21 +44,6 @@
/** Stride in px required by VG-Lite HW*/
#define LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX 16U
-/**
- * Enable BLIT quality degradation workaround for RT595,
- * recommended for screen's dimension > 352 pixels.
- */
-#define RT595_BLIT_WRKRND_ENABLED 1
-
-/* Internal compound symbol */
-#if (defined(CPU_MIMXRT595SFFOB) || defined(CPU_MIMXRT595SFFOB_cm33) || \
- defined(CPU_MIMXRT595SFFOC) || defined(CPU_MIMXRT595SFFOC_cm33)) && \
- RT595_BLIT_WRKRND_ENABLED
-#define VG_LITE_BLIT_SPLIT_ENABLED 1
-#else
-#define VG_LITE_BLIT_SPLIT_ENABLED 0
-#endif
-
#if VG_LITE_BLIT_SPLIT_ENABLED
/**
* BLIT split threshold - BLITs with width or height higher than this value will be done
@@ -75,16 +61,15 @@
**********************/
/**
- * Blit single image, with optional opacity.
+ * Blit image, with optional opacity.
*
- * @param[in] dest_area Area with relative coordinates of destination buffer
* @param[in] src_area Source area with relative coordinates of source buffer
* @param[in] opa Opacity
*
* @retval LV_RES_OK Transfer complete
* @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS)
*/
-static lv_res_t lv_vglite_blit_single(const lv_area_t * dest_area, const lv_area_t * src_area, lv_opa_t opa);
+static lv_res_t lv_vglite_blit(const lv_area_t * src_area, lv_opa_t opa);
/**
* Check source memory and stride alignment.
@@ -113,7 +98,6 @@ static inline void lv_vglite_set_translation_matrix(const lv_area_t * dest_area)
static inline void lv_vglite_set_transformation_matrix(const lv_area_t * dest_area, const lv_draw_img_dsc_t * dsc);
#if VG_LITE_BLIT_SPLIT_ENABLED
-
/**
* Move buffer pointer as close as possible to area, but with respect to alignment requirements. X-axis only.
*
@@ -148,7 +132,7 @@ static void align_y(lv_area_t * area, lv_color_t ** buf, lv_coord_t stride);
static lv_res_t lv_vglite_blit_split(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
const lv_color_t * src_buf, lv_area_t * src_area, lv_coord_t src_stride,
lv_opa_t opa);
-#endif
+#endif /*VG_LITE_BLIT_SPLIT_ENABLED*/
/**********************
* STATIC VARIABLES
@@ -223,17 +207,14 @@ lv_res_t lv_gpu_nxp_vglite_fill(const lv_area_t * dest_area, lv_color_t color, l
return LV_RES_OK;
}
-lv_res_t lv_gpu_nxp_vglite_blit(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
- const lv_color_t * src_buf, lv_area_t * src_area, lv_coord_t src_stride,
- lv_opa_t opa)
+#if VG_LITE_BLIT_SPLIT_ENABLED
+lv_res_t lv_gpu_nxp_vglite_blit_split(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
+ const lv_color_t * src_buf, lv_area_t * src_area, lv_coord_t src_stride,
+ lv_opa_t opa)
{
- /* Set vgmatrix. */
- lv_vglite_set_translation_matrix(dest_area);
-
/* Set src_vgbuf structure. */
lv_vglite_set_src_buf(src_buf, src_area, src_stride);
-#if VG_LITE_BLIT_SPLIT_ENABLED
lv_color_t * orig_dest_buf = dest_buf;
lv_res_t rv = lv_vglite_blit_split(dest_buf, dest_area, dest_stride, src_buf, src_area, src_stride, opa);
@@ -242,45 +223,112 @@ lv_res_t lv_gpu_nxp_vglite_blit(lv_color_t * dest_buf, lv_area_t * dest_area, lv
lv_vglite_set_dest_buf_ptr(orig_dest_buf);
return rv;
+}
#else
- LV_UNUSED(dest_buf);
- LV_UNUSED(dest_stride);
-
+lv_res_t lv_gpu_nxp_vglite_blit(const lv_area_t * dest_area,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
+ lv_opa_t opa)
+{
if(check_src_alignment(src_buf, src_stride) != LV_RES_OK)
VG_LITE_RETURN_INV("Check src alignment failed.");
- return lv_vglite_blit_single(dest_area, src_area, opa);
-#endif
-}
-
-lv_res_t lv_gpu_nxp_vglite_blit_transform(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
- const lv_color_t * src_buf, lv_area_t * src_area, lv_coord_t src_stride,
- const lv_draw_img_dsc_t * dsc)
-{
- /* Set vgmatrix. */
- lv_vglite_set_transformation_matrix(dest_area, dsc);
-
/* Set src_vgbuf structure. */
lv_vglite_set_src_buf(src_buf, src_area, src_stride);
-#if VG_LITE_BLIT_SPLIT_ENABLED
- lv_color_t * orig_dest_buf = dest_buf;
+ /* Set scissor. */
+ lv_vglite_set_scissor(dest_area);
- lv_res_t rv = lv_vglite_blit_split(dest_buf, dest_area, dest_stride, src_buf, src_area, src_stride, dsc->opa);
+ /* Set vgmatrix. */
+ lv_vglite_set_translation_matrix(dest_area);
- /* Restore the original dest_vgbuf memory address. */
- lv_vglite_set_dest_buf_ptr(orig_dest_buf);
+ /* Start blit. */
+ lv_res_t rv = lv_vglite_blit(src_area, opa);
+
+ /* Disable scissor. */
+ lv_vglite_disable_scissor();
return rv;
-#else
- LV_UNUSED(dest_buf);
- LV_UNUSED(dest_stride);
+}
+
+lv_res_t lv_gpu_nxp_vglite_blit_transform(const lv_area_t * dest_area, const lv_area_t * clip_area,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
+ const lv_draw_img_dsc_t * dsc)
+{
+ lv_res_t rv = LV_RES_INV;
if(check_src_alignment(src_buf, src_stride) != LV_RES_OK)
VG_LITE_RETURN_INV("Check src alignment failed.");
- return lv_vglite_blit_single(dest_area, src_area, dsc->opa);
-#endif
+ /* Set src_vgbuf structure. */
+ lv_vglite_set_src_buf(src_buf, src_area, src_stride);
+
+ /* Set scissor */
+ lv_vglite_set_scissor(clip_area);
+
+ /* Set vgmatrix. */
+ lv_vglite_set_transformation_matrix(dest_area, dsc);
+
+ /* Start blit. */
+ rv = lv_vglite_blit(src_area, dsc->opa);
+
+ /* Disable scissor. */
+ lv_vglite_disable_scissor();
+
+ return rv;
+}
+#endif /*VG_LITE_BLIT_SPLIT_ENABLED*/
+
+lv_res_t lv_gpu_nxp_vglite_buffer_copy(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride)
+{
+ vg_lite_error_t err = VG_LITE_SUCCESS;
+
+ if(check_src_alignment(src_buf, src_stride) != LV_RES_OK)
+ VG_LITE_RETURN_INV("Check src alignment failed.");
+
+ vg_lite_buffer_t src_vgbuf;
+ /* Set src_vgbuf structure. */
+ lv_vglite_set_buf(&src_vgbuf, src_buf, src_area, src_stride);
+
+ vg_lite_buffer_t dest_vgbuf;
+ /* Set dest_vgbuf structure. */
+ lv_vglite_set_buf(&dest_vgbuf, dest_buf, dest_area, dest_stride);
+
+ uint32_t rect[] = {
+ (uint32_t)src_area->x1, /* start x */
+ (uint32_t)src_area->y1, /* start y */
+ (uint32_t)lv_area_get_width(src_area), /* width */
+ (uint32_t)lv_area_get_height(src_area) /* height */
+ };
+
+ /* Set scissor. */
+ lv_vglite_set_scissor(dest_area);
+
+ /* Set vgmatrix. */
+ lv_vglite_set_translation_matrix(dest_area);
+
+ err = vg_lite_blit_rect(&dest_vgbuf, &src_vgbuf, rect, &vgmatrix,
+ VG_LITE_BLEND_NONE, 0xFFFFFFFFU, VG_LITE_FILTER_POINT);
+ if(err != VG_LITE_SUCCESS) {
+ LV_LOG_ERROR("Blit rectangle failed.");
+ /* Disable scissor. */
+ lv_vglite_disable_scissor();
+
+ return LV_RES_INV;
+ }
+
+ if(lv_vglite_run() != LV_RES_OK) {
+ LV_LOG_ERROR("Run failed.");
+ /* Disable scissor. */
+ lv_vglite_disable_scissor();
+
+ return LV_RES_INV;
+ }
+
+ /* Disable scissor. */
+ lv_vglite_disable_scissor();
+
+ return LV_RES_OK;
}
/**********************
@@ -320,10 +368,17 @@ static lv_res_t lv_vglite_blit_split(lv_color_t * dest_buf, lv_area_t * dest_are
lv_vglite_set_dest_buf_ptr(dest_buf);
lv_vglite_set_src_buf_ptr(src_buf);
+ /* Set scissor */
+ lv_vglite_set_scissor(dest_area);
+
/* Set vgmatrix. */
lv_vglite_set_translation_matrix(dest_area);
- rv = lv_vglite_blit_single(dest_area, src_area, opa);
+ /* Start blit. */
+ rv = lv_vglite_blit(src_area, opa);
+
+ /* Disable scissor. */
+ lv_vglite_disable_scissor();
VG_LITE_LOG_TRACE("Single "
"Area: ([%d,%d], [%d,%d]) -> ([%d,%d], [%d,%d]) | "
@@ -426,14 +481,21 @@ static lv_res_t lv_vglite_blit_split(lv_color_t * dest_buf, lv_area_t * dest_are
if(check_src_alignment(tile_src_buf, src_stride) != LV_RES_OK)
VG_LITE_RETURN_INV("Check src alignment failed.");
- /* Set vgmatrix. */
- lv_vglite_set_translation_matrix(&tile_dest_area);
-
/* Set new dest_vgbuf and src_vgbuf memory addresses. */
lv_vglite_set_dest_buf_ptr(tile_dest_buf);
lv_vglite_set_src_buf_ptr(tile_src_buf);
- rv = lv_vglite_blit_single(&tile_dest_area, &tile_src_area, opa);
+ /* Set scissor */
+ lv_vglite_set_scissor(&tile_dest_area);
+
+ /* Set vgmatrix. */
+ lv_vglite_set_translation_matrix(&tile_dest_area);
+
+ /* Start blit. */
+ rv = lv_vglite_blit(&tile_src_area, opa);
+
+ /* Disable scissor. */
+ lv_vglite_disable_scissor();
VG_LITE_LOG_TRACE("Tile [%d, %d] "
"Area: ([%d,%d], [%d,%d]) -> ([%d,%d], [%d,%d]) | "
@@ -455,9 +517,9 @@ static lv_res_t lv_vglite_blit_split(lv_color_t * dest_buf, lv_area_t * dest_are
return rv;
}
-#endif /* VG_LITE_BLIT_SPLIT_ENABLED */
+#endif /*VG_LITE_BLIT_SPLIT_ENABLED*/
-static lv_res_t lv_vglite_blit_single(const lv_area_t * dest_area, const lv_area_t * src_area, lv_opa_t opa)
+static lv_res_t lv_vglite_blit(const lv_area_t * src_area, lv_opa_t opa)
{
vg_lite_error_t err = VG_LITE_SUCCESS;
vg_lite_buffer_t * dst_vgbuf = lv_vglite_get_dest_buf();
@@ -489,30 +551,11 @@ static lv_res_t lv_vglite_blit_single(const lv_area_t * dest_area, const lv_area
src_vgbuf->transparency_mode = VG_LITE_IMAGE_TRANSPARENT;
}
- bool scissoring = lv_area_get_width(dest_area) < lv_area_get_width(src_area) ||
- lv_area_get_height(dest_area) < lv_area_get_height(src_area);
- if(scissoring) {
- vg_lite_enable_scissor();
- vg_lite_set_scissor((int32_t)dest_area->x1, (int32_t)dest_area->y1,
- (int32_t)lv_area_get_width(dest_area),
- (int32_t)lv_area_get_height(dest_area));
- }
-
err = vg_lite_blit_rect(dst_vgbuf, src_vgbuf, rect, &vgmatrix, blend, color, VG_LITE_FILTER_POINT);
- if(err != VG_LITE_SUCCESS) {
- if(scissoring)
- vg_lite_disable_scissor();
- VG_LITE_RETURN_INV("Blit rectangle failed.");
- }
+ VG_LITE_ERR_RETURN_INV(err, "Blit rectangle failed.");
- if(lv_vglite_run() != LV_RES_OK) {
- if(scissoring)
- vg_lite_disable_scissor();
+ if(lv_vglite_run() != LV_RES_OK)
VG_LITE_RETURN_INV("Run failed.");
- }
-
- if(scissoring)
- vg_lite_disable_scissor();
return LV_RES_OK;
}
@@ -546,16 +589,14 @@ static inline void lv_vglite_set_transformation_matrix(const lv_area_t * dest_ar
bool has_scale = (dsc->zoom != LV_IMG_ZOOM_NONE);
bool has_rotation = (dsc->angle != 0);
- if(has_scale || has_rotation) {
- vg_lite_translate(dsc->pivot.x, dsc->pivot.y, &vgmatrix);
- if(has_rotation)
- vg_lite_rotate(dsc->angle / 10.0f, &vgmatrix); /* angle is 1/10 degree */
- if(has_scale) {
- vg_lite_float_t scale = 1.0f * dsc->zoom / LV_IMG_ZOOM_NONE;
- vg_lite_scale(scale, scale, &vgmatrix);
- }
- vg_lite_translate(0.0f - dsc->pivot.x, 0.0f - dsc->pivot.y, &vgmatrix);
+ vg_lite_translate(dsc->pivot.x, dsc->pivot.y, &vgmatrix);
+ if(has_rotation)
+ vg_lite_rotate(dsc->angle / 10.0f, &vgmatrix); /* angle is 1/10 degree */
+ if(has_scale) {
+ vg_lite_float_t scale = 1.0f * dsc->zoom / LV_IMG_ZOOM_NONE;
+ vg_lite_scale(scale, scale, &vgmatrix);
}
+ vg_lite_translate(0.0f - dsc->pivot.x, 0.0f - dsc->pivot.y, &vgmatrix);
}
#if VG_LITE_BLIT_SPLIT_ENABLED
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.h b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.h
index 025d2b5cc..1aae34bd9 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.h
@@ -47,6 +47,21 @@ extern "C" {
* DEFINES
*********************/
+/**
+ * Enable BLIT quality degradation workaround for RT595,
+ * recommended for screen's dimension > 352 pixels.
+ */
+#define RT595_BLIT_WRKRND_ENABLED 1
+
+/* Internal compound symbol */
+#if (defined(CPU_MIMXRT595SFFOB) || defined(CPU_MIMXRT595SFFOB_cm33) || \
+ defined(CPU_MIMXRT595SFFOC) || defined(CPU_MIMXRT595SFFOC_cm33)) && \
+ RT595_BLIT_WRKRND_ENABLED
+#define VG_LITE_BLIT_SPLIT_ENABLED 1
+#else
+#define VG_LITE_BLIT_SPLIT_ENABLED 0
+#endif
+
/**********************
* TYPEDEFS
**********************/
@@ -67,6 +82,7 @@ extern "C" {
*/
lv_res_t lv_gpu_nxp_vglite_fill(const lv_area_t * dest_area, lv_color_t color, lv_opa_t opa);
+#if VG_LITE_BLIT_SPLIT_ENABLED
/**
* BLock Image Transfer - copy rectangular image from src_buf to dst_buf with effects.
* By default, image is copied directly, with optional opacity.
@@ -82,17 +98,33 @@ lv_res_t lv_gpu_nxp_vglite_fill(const lv_area_t * dest_area, lv_color_t color, l
* @retval LV_RES_OK Transfer complete
* @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS)
*/
-lv_res_t lv_gpu_nxp_vglite_blit(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
- const lv_color_t * src_buf, lv_area_t * src_area, lv_coord_t src_stride,
+lv_res_t lv_gpu_nxp_vglite_blit_split(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
+ const lv_color_t * src_buf, lv_area_t * src_area, lv_coord_t src_stride,
+ lv_opa_t opa);
+#else
+/**
+ * BLock Image Transfer - copy rectangular image from src_buf to dst_buf with effects.
+ * By default, image is copied directly, with optional opacity.
+ *
+ * @param[in] dest_stride Stride of destination buffer in pixels
+ * @param[in] src_buf Source buffer
+ * @param[in] src_area Source area with relative coordinates of source buffer
+ * @param[in] src_stride Stride of source buffer in pixels
+ * @param[in] opa Opacity
+ *
+ * @retval LV_RES_OK Transfer complete
+ * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS)
+ */
+lv_res_t lv_gpu_nxp_vglite_blit(const lv_area_t * dest_area,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
lv_opa_t opa);
/**
* BLock Image Transfer - copy rectangular image from src_buf to dst_buf with transformation.
* By default, image is copied directly, with optional opacity.
*
- * @param[in/out] dest_buf Destination buffer
* @param[in] dest_area Area with relative coordinates of destination buffer
- * @param[in] dest_stride Stride of destination buffer in pixels
+ * @param[in] clip_area Clip area with relative coordinates of destination buffer
* @param[in] src_buf Source buffer
* @param[in] src_area Source area with relative coordinates of source buffer
* @param[in] src_stride Stride of source buffer in pixels
@@ -101,10 +133,28 @@ lv_res_t lv_gpu_nxp_vglite_blit(lv_color_t * dest_buf, lv_area_t * dest_area, lv
* @retval LV_RES_OK Transfer complete
* @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS)
*/
-lv_res_t lv_gpu_nxp_vglite_blit_transform(lv_color_t * dest_buf, lv_area_t * dest_area, lv_coord_t dest_stride,
- const lv_color_t * src_buf, lv_area_t * src_area, lv_coord_t src_stride,
+lv_res_t lv_gpu_nxp_vglite_blit_transform(const lv_area_t * dest_area, const lv_area_t * clip_area,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride,
const lv_draw_img_dsc_t * dsc);
+#endif /*VG_LITE_BLIT_SPLIT_ENABLED*/
+
+/**
+ * BLock Image Transfer - simple copy of rectangular image from source to destination.
+ *
+ * @param[in] dest_buf Destination buffer
+ * @param[in] dest_area Area with relative coordinates of destination buffer
+ * @param[in] dest_stride Stride of destination buffer in pixels
+ * @param[in] src_buf Source buffer
+ * @param[in] src_area Source area with relative coordinates of source buffer
+ * @param[in] src_stride Stride of source buffer in pixels
+ *
+ * @retval LV_RES_OK Transfer complete
+ * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS)
+ */
+lv_res_t lv_gpu_nxp_vglite_buffer_copy(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride,
+ const lv_color_t * src_buf, const lv_area_t * src_area, lv_coord_t src_stride);
+
/**********************
* MACROS
**********************/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_line.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_line.c
index f6e1c4352..bf7bee11a 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_line.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_line.c
@@ -119,12 +119,16 @@ lv_res_t lv_gpu_nxp_vglite_draw_line(const lv_point_t * point1, const lv_point_t
err = vg_lite_update_stroke(&path);
VG_LITE_ERR_RETURN_INV(err, "Update stroke failed.");
+ lv_vglite_set_scissor(clip_area);
+
err = vg_lite_draw(vgbuf, &path, VG_LITE_FILL_NON_ZERO, &matrix, vglite_blend_mode, vgcol);
VG_LITE_ERR_RETURN_INV(err, "Draw line failed.");
if(lv_vglite_run() != LV_RES_OK)
VG_LITE_RETURN_INV("Run failed.");
+ lv_vglite_disable_scissor();
+
err = vg_lite_clear_path(&path);
VG_LITE_ERR_RETURN_INV(err, "Clear path failed.");
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_rect.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_rect.c
index 39ccaa481..e9db57da9 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_rect.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_draw_vglite_rect.c
@@ -166,6 +166,8 @@ lv_res_t lv_gpu_nxp_vglite_draw_bg(const lv_area_t * coords, const lv_area_t * c
if(lv_vglite_premult_and_swizzle(&vgcol, bg_col32, dsc->bg_opa, color_format) != LV_RES_OK)
VG_LITE_RETURN_INV("Premultiplication and swizzle failed.");
+ lv_vglite_set_scissor(clip_area);
+
/*** Draw rectangle ***/
if(dsc->bg_grad.dir == (lv_grad_dir_t)LV_GRAD_DIR_NONE) {
err = vg_lite_draw(vgbuf, &path, VG_LITE_FILL_EVEN_ODD, &matrix, VG_LITE_BLEND_SRC_OVER, vgcol);
@@ -178,6 +180,8 @@ lv_res_t lv_gpu_nxp_vglite_draw_bg(const lv_area_t * coords, const lv_area_t * c
if(lv_vglite_run() != LV_RES_OK)
VG_LITE_RETURN_INV("Run failed.");
+ lv_vglite_disable_scissor();
+
err = vg_lite_clear_path(&path);
VG_LITE_ERR_RETURN_INV(err, "Clear path failed.");
@@ -263,12 +267,16 @@ lv_res_t lv_gpu_nxp_vglite_draw_border_generic(const lv_area_t * coords, const l
err = vg_lite_update_stroke(&path);
VG_LITE_ERR_RETURN_INV(err, "Update stroke failed.");
+ lv_vglite_set_scissor(clip_area);
+
err = vg_lite_draw(vgbuf, &path, VG_LITE_FILL_NON_ZERO, &matrix, vglite_blend_mode, vgcol);
VG_LITE_ERR_RETURN_INV(err, "Draw border failed.");
if(lv_vglite_run() != LV_RES_OK)
VG_LITE_RETURN_INV("Run failed.");
+ lv_vglite_disable_scissor();
+
err = vg_lite_clear_path(&path);
VG_LITE_ERR_RETURN_INV(err, "Clear path failed.");
@@ -276,6 +284,10 @@ lv_res_t lv_gpu_nxp_vglite_draw_border_generic(const lv_area_t * coords, const l
}
+/**********************
+ * STATIC FUNCTIONS
+ **********************/
+
static void lv_vglite_create_rect_path_data(int32_t * path_data, uint32_t * path_data_size,
lv_coord_t radius,
const lv_area_t * coords)
@@ -444,8 +456,4 @@ static void lv_vglite_create_rect_path_data(int32_t * path_data, uint32_t * path
*path_data_size = pidx * sizeof(int32_t);
}
-/**********************
- * STATIC FUNCTIONS
- **********************/
-
#endif /*LV_USE_GPU_NXP_VG_LITE*/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.c b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.c
index f6325ab2a..e1ff6a297 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.c
@@ -57,8 +57,6 @@
static inline void lv_vglite_set_dest_buf(const lv_color_t * buf, const lv_area_t * area, lv_coord_t stride);
static inline void lv_vglite_set_buf_ptr(vg_lite_buffer_t * vgbuf, const lv_color_t * buf);
-static inline void lv_vglite_set_buf(vg_lite_buffer_t * vgbuf, const lv_color_t * buf,
- const lv_area_t * area, lv_coord_t stride);
/**********************
* STATIC VARIABLES
@@ -106,23 +104,8 @@ void lv_vglite_set_src_buf(const lv_color_t * buf, const lv_area_t * area, lv_co
lv_vglite_set_buf(&src_vgbuf, buf, area, stride);
}
-/**********************
- * STATIC FUNCTIONS
- **********************/
-
-static inline void lv_vglite_set_dest_buf(const lv_color_t * buf, const lv_area_t * area, lv_coord_t stride)
-{
- lv_vglite_set_buf(&dest_vgbuf, buf, area, stride);
-}
-
-static inline void lv_vglite_set_buf_ptr(vg_lite_buffer_t * vgbuf, const lv_color_t * buf)
-{
- vgbuf->memory = (void *)buf;
- vgbuf->address = (uint32_t)vgbuf->memory;
-}
-
-static inline void lv_vglite_set_buf(vg_lite_buffer_t * vgbuf, const lv_color_t * buf,
- const lv_area_t * area, lv_coord_t stride)
+void lv_vglite_set_buf(vg_lite_buffer_t * vgbuf, const lv_color_t * buf,
+ const lv_area_t * area, lv_coord_t stride)
{
vgbuf->format = VG_LITE_PX_FMT;
vgbuf->tiled = VG_LITE_LINEAR;
@@ -140,4 +123,19 @@ static inline void lv_vglite_set_buf(vg_lite_buffer_t * vgbuf, const lv_color_t
vgbuf->handle = NULL;
}
+/**********************
+ * STATIC FUNCTIONS
+ **********************/
+
+static inline void lv_vglite_set_dest_buf(const lv_color_t * buf, const lv_area_t * area, lv_coord_t stride)
+{
+ lv_vglite_set_buf(&dest_vgbuf, buf, area, stride);
+}
+
+static inline void lv_vglite_set_buf_ptr(vg_lite_buffer_t * vgbuf, const lv_color_t * buf)
+{
+ vgbuf->memory = (void *)buf;
+ vgbuf->address = (uint32_t)vgbuf->memory;
+}
+
#endif /*LV_USE_GPU_NXP_VG_LITE*/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.h b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.h
index 9219dca05..e89af1c87 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_buf.h
@@ -100,6 +100,17 @@ void lv_vglite_set_src_buf_ptr(const lv_color_t * buf);
*/
void lv_vglite_set_src_buf(const lv_color_t * buf, const lv_area_t * area, lv_coord_t stride);
+/**
+ * Set vglite buffer.
+ *
+ * @param[in] vgbuf Address of the VGLite buffer object
+ * @param[in] buf Address of the memory for the VGLite buffer
+ * @param[in] area buffer area (for width and height)
+ * @param[in] stride buffer stride
+ */
+void lv_vglite_set_buf(vg_lite_buffer_t * vgbuf, const lv_color_t * buf,
+ const lv_area_t * area, lv_coord_t stride);
+
/**********************
* MACROS
**********************/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_utils.h b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_utils.h
index 9ff4de02f..219396b10 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_utils.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/nxp/vglite/lv_vglite_utils.h
@@ -71,6 +71,23 @@ extern "C" {
* TYPEDEFS
**********************/
+/**********************
+ * STATIC PROTOTYPES
+ **********************/
+
+/**
+ * Enable scissor and set the clipping box.
+ *
+ * @param[in] clip_area Clip area with relative coordinates of destination buffer
+ */
+static inline void lv_vglite_set_scissor(const lv_area_t * clip_area);
+
+/**
+ * Disable scissor.
+ */
+static inline void lv_vglite_disable_scissor(void);
+
+
/**********************
* GLOBAL PROTOTYPES
**********************/
@@ -157,6 +174,23 @@ lv_res_t lv_vglite_run(void);
}while(0)
#endif /*LV_GPU_NXP_VG_LITE_LOG_TRACES*/
+/**********************
+ * STATIC FUNCTIONS
+ **********************/
+
+static inline void lv_vglite_set_scissor(const lv_area_t * clip_area)
+{
+ vg_lite_enable_scissor();
+ vg_lite_set_scissor((int32_t)clip_area->x1, (int32_t)clip_area->y1,
+ (int32_t)lv_area_get_width(clip_area),
+ (int32_t)lv_area_get_height(clip_area));
+}
+
+static inline void lv_vglite_disable_scissor(void)
+{
+ vg_lite_disable_scissor();
+}
+
#endif /*LV_USE_GPU_NXP_VG_LITE*/
#ifdef __cplusplus
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_draw_label.c b/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_draw_label.c
new file mode 100644
index 000000000..b12866de5
--- /dev/null
+++ b/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_draw_label.c
@@ -0,0 +1,292 @@
+/**
+ * @file lv_gpu_d2_draw_label.c
+ *
+ * @description HAL layer for display driver
+ *
+ */
+
+/*********************
+ * INCLUDES
+ *********************/
+#include "../../draw/lv_draw_label.h"
+#include "../../misc/lv_assert.h"
+#include "../../core/lv_refr.h"
+#include "lv_gpu_d2_ra6m3.h"
+
+#if LV_USE_GPU_RA6M3_G2D
+#include LV_GPU_RA6M3_G2D_INCLUDE
+
+/**********************
+ * STATIC VARIABLES
+ **********************/
+
+/**********************
+ * GLOBAL VARIABLES
+ **********************/
+extern const uint8_t _lv_bpp1_opa_table[2];
+extern const uint8_t _lv_bpp2_opa_table[4];
+extern const uint8_t _lv_bpp4_opa_table[16];
+extern const uint8_t _lv_bpp8_opa_table[256];
+
+/**********************
+ * MACROS
+ **********************/
+
+/**********************
+ * GLOBAL FUNCTIONS
+ **********************/
+
+/**********************
+ * STATIC FUNCTIONS
+ **********************/
+
+LV_ATTRIBUTE_FAST_MEM static void draw_letter_normal(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t * dsc,
+ const lv_point_t * pos, lv_font_glyph_dsc_t * g, const uint8_t * map_p)
+{
+
+ const uint8_t * bpp_opa_table_p;
+ uint32_t bitmask_init;
+ uint32_t bitmask;
+ uint32_t bpp = g->bpp;
+ lv_opa_t opa = dsc->opa;
+ uint32_t shades;
+ if(bpp == 3) bpp = 4;
+
+#if LV_USE_IMGFONT
+ if(bpp == LV_IMGFONT_BPP) { //is imgfont
+ lv_area_t fill_area;
+ fill_area.x1 = pos->x;
+ fill_area.y1 = pos->y;
+ fill_area.x2 = pos->x + g->box_w - 1;
+ fill_area.y2 = pos->y + g->box_h - 1;
+ lv_draw_img_dsc_t img_dsc;
+ lv_draw_img_dsc_init(&img_dsc);
+ img_dsc.angle = 0;
+ img_dsc.zoom = LV_IMG_ZOOM_NONE;
+ img_dsc.opa = dsc->opa;
+ img_dsc.blend_mode = dsc->blend_mode;
+ lv_draw_img(draw_ctx, &img_dsc, &fill_area, map_p);
+ return;
+ }
+#endif
+
+ switch(bpp) {
+ case 1:
+ bpp_opa_table_p = _lv_bpp1_opa_table;
+ bitmask_init = 0x80;
+ shades = 2;
+ break;
+ case 2:
+ bpp_opa_table_p = _lv_bpp2_opa_table;
+ bitmask_init = 0xC0;
+ shades = 4;
+ break;
+ case 4:
+ bpp_opa_table_p = _lv_bpp4_opa_table;
+ bitmask_init = 0xF0;
+ shades = 16;
+ break;
+ case 8:
+ bpp_opa_table_p = _lv_bpp8_opa_table;
+ bitmask_init = 0xFF;
+ shades = 256;
+ break; /*No opa table, pixel value will be used directly*/
+ default:
+ LV_LOG_WARN("lv_draw_letter: invalid bpp");
+ return; /*Invalid bpp. Can't render the letter*/
+ }
+
+ static lv_opa_t opa_table[256];
+ static lv_opa_t prev_opa = LV_OPA_TRANSP;
+ static uint32_t prev_bpp = 0;
+ if(opa < LV_OPA_MAX) {
+ if(prev_opa != opa || prev_bpp != bpp) {
+ uint32_t i;
+ for(i = 0; i < shades; i++) {
+ opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8);
+ }
+ }
+ bpp_opa_table_p = opa_table;
+ prev_opa = opa;
+ prev_bpp = bpp;
+ }
+
+ int32_t col, row;
+ int32_t box_w = g->box_w;
+ int32_t box_h = g->box_h;
+ int32_t width_bit = box_w * bpp; /*Letter width in bits*/
+
+ /*Calculate the col/row start/end on the map*/
+ int32_t col_start = pos->x >= draw_ctx->clip_area->x1 ? 0 : draw_ctx->clip_area->x1 - pos->x;
+ int32_t col_end = pos->x + box_w <= draw_ctx->clip_area->x2 ? box_w : draw_ctx->clip_area->x2 - pos->x + 1;
+ int32_t row_start = pos->y >= draw_ctx->clip_area->y1 ? 0 : draw_ctx->clip_area->y1 - pos->y;
+ int32_t row_end = pos->y + box_h <= draw_ctx->clip_area->y2 ? box_h : draw_ctx->clip_area->y2 - pos->y + 1;
+
+ /*Move on the map too*/
+ uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp);
+ map_p += bit_ofs >> 3;
+
+ uint8_t letter_px;
+ uint32_t col_bit;
+ col_bit = bit_ofs & 0x7; /*"& 0x7" equals to "% 8" just faster*/
+
+ lv_draw_sw_blend_dsc_t blend_dsc;
+ lv_memset_00(&blend_dsc, sizeof(blend_dsc));
+ blend_dsc.color = dsc->color;
+ blend_dsc.opa = LV_OPA_COVER;
+ blend_dsc.blend_mode = dsc->blend_mode;
+
+ lv_coord_t hor_res = lv_disp_get_hor_res(_lv_refr_get_disp_refreshing());
+ uint32_t mask_buf_size = box_w * box_h > hor_res ? hor_res : box_w * box_h;
+ lv_opa_t * mask_buf = lv_mem_buf_get(mask_buf_size);
+ blend_dsc.mask_buf = mask_buf;
+ int32_t mask_p = 0;
+
+ lv_area_t fill_area;
+ fill_area.x1 = col_start + pos->x;
+ fill_area.x2 = col_end + pos->x - 1;
+ fill_area.y1 = row_start + pos->y;
+ fill_area.y2 = fill_area.y1;
+#if LV_DRAW_COMPLEX
+ lv_coord_t fill_w = lv_area_get_width(&fill_area);
+ lv_area_t mask_area;
+ lv_area_copy(&mask_area, &fill_area);
+ mask_area.y2 = mask_area.y1 + row_end;
+ bool mask_any = lv_draw_mask_is_any(&mask_area);
+#endif
+ blend_dsc.blend_area = &fill_area;
+ blend_dsc.mask_area = &fill_area;
+
+ uint32_t col_bit_max = 8 - bpp;
+ uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp;
+
+ for(row = row_start ; row < row_end; row++) {
+#if LV_DRAW_COMPLEX
+ int32_t mask_p_start = mask_p;
+#endif
+ bitmask = bitmask_init >> col_bit;
+ for(col = col_start; col < col_end; col++) {
+ /*Load the pixel's opacity into the mask*/
+ letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit);
+ if(letter_px) {
+ mask_buf[mask_p] = bpp_opa_table_p[letter_px];
+ }
+ else {
+ mask_buf[mask_p] = 0;
+ }
+
+ /*Go to the next column*/
+ if(col_bit < col_bit_max) {
+ col_bit += bpp;
+ bitmask = bitmask >> bpp;
+ }
+ else {
+ col_bit = 0;
+ bitmask = bitmask_init;
+ map_p++;
+ }
+
+ /*Next mask byte*/
+ mask_p++;
+ }
+
+#if LV_DRAW_COMPLEX
+ /*Apply masks if any*/
+ if(mask_any) {
+ blend_dsc.mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2,
+ fill_w);
+ if(blend_dsc.mask_res == LV_DRAW_MASK_RES_TRANSP) {
+ lv_memset_00(mask_buf + mask_p_start, fill_w);
+ }
+ }
+#endif
+
+ if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) {
+ fill_area.y2 ++;
+ }
+ else {
+ blend_dsc.mask_res = LV_DRAW_MASK_RES_CHANGED;
+ lv_draw_ra6m3_2d_blend(draw_ctx, &blend_dsc);
+
+ fill_area.y1 = fill_area.y2 + 1;
+ fill_area.y2 = fill_area.y1;
+ mask_p = 0;
+ }
+
+ col_bit += col_bit_row_ofs;
+ map_p += (col_bit >> 3);
+ col_bit = col_bit & 0x7;
+ }
+
+ /*Flush the last part*/
+ if(fill_area.y1 != fill_area.y2) {
+ fill_area.y2--;
+ blend_dsc.mask_res = LV_DRAW_MASK_RES_CHANGED;
+ lv_draw_ra6m3_2d_blend(draw_ctx, &blend_dsc);
+ mask_p = 0;
+ }
+
+ lv_mem_buf_release(mask_buf);
+}
+
+void lv_draw_gpu_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t * dsc, const lv_point_t * pos_p,
+ uint32_t letter)
+{
+ const lv_font_t * font_p = dsc->font;
+
+ lv_opa_t opa = dsc->opa;
+ if(opa < LV_OPA_MIN) return;
+ if(opa > LV_OPA_MAX) opa = LV_OPA_COVER;
+
+ if(font_p == NULL) {
+ LV_LOG_WARN("lv_draw_letter: font is NULL");
+ return;
+ }
+
+ lv_font_glyph_dsc_t g;
+ bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0');
+ if(g_ret == false) {
+ /*Add warning if the dsc is not found
+ *but do not print warning for non printable ASCII chars (e.g. '\n')*/
+ if(letter >= 0x20 &&
+ letter != 0xf8ff && /*LV_SYMBOL_DUMMY*/
+ letter != 0x200c) { /*ZERO WIDTH NON-JOINER*/
+ LV_LOG_WARN("lv_draw_letter: glyph dsc. not found for U+%X", letter);
+ }
+ return;
+ }
+
+ /*Don't draw anything if the character is empty. E.g. space*/
+ if((g.box_h == 0) || (g.box_w == 0)) return;
+
+ lv_point_t gpos;
+ gpos.x = pos_p->x + g.ofs_x;
+ gpos.y = pos_p->y + (dsc->font->line_height - dsc->font->base_line) - g.box_h - g.ofs_y;
+
+ /*If the letter is completely out of mask don't draw it*/
+ if(gpos.x + g.box_w < draw_ctx->clip_area->x1 ||
+ gpos.x > draw_ctx->clip_area->x2 ||
+ gpos.y + g.box_h < draw_ctx->clip_area->y1 ||
+ gpos.y > draw_ctx->clip_area->y2) {
+ return;
+ }
+
+ const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter);
+ if(map_p == NULL) {
+ LV_LOG_WARN("lv_draw_letter: character's bitmap not found");
+ return;
+ }
+
+ if(font_p->subpx) {
+#if LV_DRAW_COMPLEX && LV_USE_FONT_SUBPX
+ draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode);
+#else
+ LV_LOG_WARN("Can't draw sub-pixel rendered letter because LV_USE_FONT_SUBPX == 0 in lv_conf.h");
+#endif
+ }
+ else {
+ draw_letter_normal(draw_ctx, dsc, &gpos, &g, map_p);
+ }
+}
+
+#endif
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_ra6m3.c b/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_ra6m3.c
new file mode 100644
index 000000000..ba4c08425
--- /dev/null
+++ b/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_ra6m3.c
@@ -0,0 +1,742 @@
+/**
+ * @file lv_gpu_d2_ra6m3.c
+ *
+ */
+
+/*********************
+ * INCLUDES
+ *********************/
+#include "lv_gpu_d2_ra6m3.h"
+#include "../../core/lv_refr.h"
+#include
+
+#if LV_USE_GPU_RA6M3_G2D
+
+#include LV_GPU_RA6M3_G2D_INCLUDE
+
+/*********************
+ * DEFINES
+ *********************/
+#define LOG_ERRORS
+#ifdef LOG_ERRORS
+ #define STRINGIFY(x) #x
+ #define TOSTRING(x) STRINGIFY(x)
+
+ #define ERROR_LIST_SIZE (4)
+ #define D2_EXEC(a) lv_port_gpu_log_error(a, __func__, __LINE__)
+#else
+ /* here is error logging not enabled */
+ #define D2_EXEC(a) a;
+#endif
+
+/**********************
+ * TYPEDEFS
+ **********************/
+typedef struct {
+ d2_s32 error;
+ const char * func;
+ int line;
+} log_error_entry;
+
+/**********************
+ * STATIC PROTOTYPES
+ **********************/
+#ifdef LOG_ERRORS
+ static void lv_port_gpu_log_error(d2_s32 status, const char * func, int line);
+#endif
+static void invalidate_cache(void);
+
+void lv_draw_gpu_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t * dsc, const lv_point_t * pos_p,
+ uint32_t letter);
+
+/**********************
+ * STATIC VARIABLES
+ **********************/
+#ifdef LOG_ERRORS
+ static log_error_entry log_error_list[ERROR_LIST_SIZE];
+ static int error_list_index;
+ static int error_count;
+#endif
+
+static d2_device * _d2_handle;
+static d2_renderbuffer * renderbuffer;
+
+static d2_s32 src_cf_val, dst_cf_val;
+static lv_draw_img_dsc_t img_dsc;
+static bool color_key_enabled, alpha_enabled, blend_enabled, colorize_enabled;
+
+/**********************
+ * STATIC FUNCTIONS
+ **********************/
+static d2_s32 lv_port_gpu_cf_lv_to_d2(lv_img_cf_t cf)
+{
+ d2_s32 d2_cf;
+
+#if (DLG_LVGL_CF == 1)
+ switch(cf & ~(1 << 5)) {
+#else
+ switch(cf) {
+#endif /* (DLG_LVGL_CF == 1) */
+ case LV_IMG_CF_TRUE_COLOR:
+ d2_cf = d2_mode_rgb565;
+ break;
+ case LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED:
+ d2_cf = d2_mode_rgb565;
+ break;
+ case LV_IMG_CF_ALPHA_1BIT:
+ d2_cf = d2_mode_alpha1;
+ break;
+ case LV_IMG_CF_ALPHA_2BIT:
+ d2_cf = d2_mode_alpha2;
+ break;
+ case LV_IMG_CF_ALPHA_4BIT:
+ d2_cf = d2_mode_alpha4;
+ break;
+ case LV_IMG_CF_ALPHA_8BIT:
+ d2_cf = d2_mode_alpha8;
+ break;
+ case LV_IMG_CF_INDEXED_1BIT:
+ d2_cf = d2_mode_i1 | d2_mode_clut;
+ break;
+ case LV_IMG_CF_INDEXED_2BIT:
+ d2_cf = d2_mode_i2 | d2_mode_clut;
+ break;
+ case LV_IMG_CF_INDEXED_4BIT:
+ d2_cf = d2_mode_i4 | d2_mode_clut;
+ break;
+ case LV_IMG_CF_INDEXED_8BIT:
+ d2_cf = d2_mode_i8 | d2_mode_clut;
+ break;
+#if (DLG_LVGL_CF == 1)
+ case LV_IMG_CF_RGB565:
+ d2_cf = d2_mode_rgb565;
+ break;
+ case LV_IMG_CF_RGB888:
+ d2_cf = d2_mode_rgb888;
+ break;
+ case LV_IMG_CF_RGBA8888:
+ d2_cf = d2_mode_rgba8888;
+ break;
+#endif /* DLG_LVGL_CF */
+ default:
+ return -1;
+ }
+
+#if (DLG_LVGL_CF == 1)
+ return d2_cf | (cf & (1 << 5) ? d2_mode_rle : 0);
+#else
+ return d2_cf;
+#endif /* (DLG_LVGL_CF == 1) */
+}
+
+static bool lv_port_gpu_cf_fb_valid(d2_s32 cf)
+{
+ if((cf & (d2_mode_rle | d2_mode_clut)) || cf < 0) {
+ return false;
+ }
+
+ switch(cf) {
+ case d2_mode_alpha8:
+ case d2_mode_rgb565:
+ case d2_mode_argb8888:
+ case d2_mode_argb4444:
+ case d2_mode_rgba8888:
+ case d2_mode_rgba4444:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool lv_port_gpu_cf_has_alpha(d2_s32 cf)
+{
+ switch(cf & ~(d2_mode_clut | d2_mode_rle)) {
+ case d2_mode_argb8888:
+ case d2_mode_rgba8888:
+ case d2_mode_argb4444:
+ case d2_mode_rgba4444:
+ case d2_mode_argb1555:
+ case d2_mode_rgba5551:
+ case d2_mode_ai44:
+ case d2_mode_i8:
+ case d2_mode_i4:
+ case d2_mode_i2:
+ case d2_mode_i1:
+ case d2_mode_alpha8:
+ case d2_mode_alpha4:
+ case d2_mode_alpha2:
+ case d2_mode_alpha1:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool lv_port_gpu_cf_is_alpha(d2_s32 cf)
+{
+ switch(cf & ~d2_mode_rle) {
+ case d2_mode_alpha8:
+ case d2_mode_alpha4:
+ case d2_mode_alpha2:
+ case d2_mode_alpha1:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static d2_color lv_port_gpu_color_lv_to_d2(lv_color_t color)
+{
+ uint8_t alpha, red, green, blue;
+
+ alpha = 0xFF;
+ red = color.ch.red << 3 | color.ch.red >> 2;
+ green = color.ch.green << 2 | color.ch.green >> 4;
+ blue = color.ch.blue << 3 | color.ch.blue >> 2;
+
+ return (alpha) << 24UL
+ | (red) << 16UL
+ | (green) << 8UL
+ | (blue) << 0UL;
+}
+
+static void lv_port_gpu_get_recolor_consts(d2_color * cl, d2_color * ch)
+{
+ d2_color c = lv_port_gpu_color_lv_to_d2(img_dsc.recolor);
+ d2_alpha r, g, b, opa = img_dsc.recolor_opa > LV_OPA_MAX ? LV_OPA_COVER : img_dsc.recolor_opa;
+
+ r = ((uint32_t)((uint8_t)(c >> 16UL)) * opa) / 255;
+ g = ((uint32_t)((uint8_t)(c >> 8UL)) * opa) / 255;
+ b = ((uint32_t)((uint8_t)(c >> 0UL)) * opa) / 255;
+ *cl = r << 16UL | g << 8UL | b << 0UL;
+
+ r += 255 - opa;
+ g += 255 - opa;
+ b += 255 - opa;
+ *ch = r << 16UL | g << 8UL | b << 0UL;
+}
+
+static int lv_port_gpu_handle_indexed_color(const lv_color_t ** src, const d2_color ** clut, d2_s32 cf)
+{
+ int clut_len = 0;
+
+ if(cf & d2_mode_clut) {
+ /* Calculate CLUT length in entries */
+ switch(cf & ~(d2_mode_clut | d2_mode_rle)) {
+ case d2_mode_i1:
+ clut_len = 2;
+ break;
+ case d2_mode_i2:
+ clut_len = 4;
+ break;
+ case d2_mode_i4:
+ clut_len = 16;
+ break;
+ case d2_mode_i8:
+ clut_len = 256;
+ break;
+ case d2_mode_ai44:
+ clut_len = 16;
+ break;
+ default:
+ return 0;
+ }
+
+ *clut = (const d2_color *)*src;
+ *src = (const lv_color_t *)((const uint32_t *)*src + clut_len);
+ }
+ return clut_len;
+}
+
+static int lv_port_gpu_cf_bpp(d2_s32 cf)
+{
+ switch(cf & ~(d2_mode_clut | d2_mode_rle)) {
+ case d2_mode_argb8888:
+ return 32;
+ case d2_mode_rgba8888:
+ return 32;
+ case d2_mode_rgb888:
+ return 32;
+ case d2_mode_argb4444:
+ return 16;
+ case d2_mode_rgba4444:
+ return 16;
+ case d2_mode_argb1555:
+ return 16;
+ case d2_mode_rgba5551:
+ return 16;
+ case d2_mode_rgb565:
+ return 16;
+ case d2_mode_ai44:
+ return 8;
+ case d2_mode_i8:
+ return 8;
+ case d2_mode_i4:
+ return 4;
+ case d2_mode_i2:
+ return 2;
+ case d2_mode_i1:
+ return 1;
+ case d2_mode_alpha8:
+ return 8;
+ case d2_mode_alpha4:
+ return 4;
+ case d2_mode_alpha2:
+ return 2;
+ case d2_mode_alpha1:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static d2_s32 lv_port_gpu_cf_get_default(void)
+{
+ return d2_mode_rgb565;
+}
+
+static void lv_port_gpu_config_blit_clear(void)
+{
+ alpha_enabled = false;
+ color_key_enabled = false;
+ blend_enabled = true;
+ colorize_enabled = false;
+
+ lv_draw_img_dsc_init(&img_dsc);
+
+ src_cf_val = lv_port_gpu_cf_get_default();
+ dst_cf_val = lv_port_gpu_cf_get_default();
+}
+
+void lv_port_gpu_init(void)
+{
+ lv_port_gpu_config_blit_clear();
+}
+
+static void lv_port_gpu_rotate_point(int * x, int * y, float cos_angle, float sin_angle, int pivot_x, int pivot_y)
+{
+ float fx, fy;
+
+ *x -= pivot_x;
+ *y -= pivot_y;
+
+ fx = ((float) * x) / 16.0f;
+ fy = ((float) * y) / 16.0f;
+
+ *x = (int)(((fx * cos_angle) - (fy * sin_angle)) * 16.0f);
+ *y = (int)(((fx * sin_angle) + (fy * cos_angle)) * 16.0f);
+
+ *x += pivot_x;
+ *y += pivot_y;
+}
+
+void lv_draw_ra6m3_g2d_init(void)
+{
+ if(_d2_handle != NULL) {
+ return;
+ }
+
+ _d2_handle = d2_opendevice(0);
+
+ if(_d2_handle == NULL)
+ return;
+
+ /* set blocksize for default displaylist */
+ if(d2_setdlistblocksize(_d2_handle, 25) != D2_OK) {
+ LV_LOG_ERROR("Could NOT d2_setdlistblocksize\n");
+ d2_closedevice(_d2_handle);
+
+ return;
+ }
+
+ /* bind the hardware */
+ if(d2_inithw(_d2_handle, 0) != D2_OK) {
+ LV_LOG_ERROR("Could NOT d2_inithw\n");
+ d2_closedevice(_d2_handle);
+
+ return;
+ }
+
+ renderbuffer = d2_newrenderbuffer(_d2_handle, 20, 20);
+ if(!renderbuffer) {
+ LV_LOG_ERROR("NO renderbuffer\n");
+ d2_closedevice(_d2_handle);
+
+ return;
+ }
+}
+
+static void lv_port_gpu_hw_deinit(void)
+{
+ if(_d2_handle == NULL)
+ return;
+
+ D2_EXEC(d2_freerenderbuffer(_d2_handle, renderbuffer));
+ D2_EXEC(d2_closedevice(_d2_handle));
+
+ renderbuffer = NULL;
+ _d2_handle = NULL;
+}
+
+void lv_port_gpu_flush(void)
+{
+ lv_port_gpu_hw_deinit();
+}
+
+static void lv_port_gpu_start_render(void)
+{
+ D2_EXEC(d2_selectrenderbuffer(_d2_handle, renderbuffer));
+}
+
+static void lv_port_gpu_complete_render(void)
+{
+ D2_EXEC(d2_flushframe(_d2_handle));
+}
+
+void lv_port_gpu_wait(lv_draw_ctx_t * draw_ctx)
+{
+ lv_port_gpu_complete_render();
+
+ lv_draw_sw_wait_for_finish(draw_ctx);
+}
+
+static void lv_port_gpu_execute_render(void)
+{
+ if(_d2_handle) {
+ D2_EXEC(d2_executerenderbuffer(_d2_handle, renderbuffer, 0));
+ }
+}
+
+void lv_port_gpu_blit(int32_t x, int32_t y, lv_color_t * dst, const lv_area_t * fill_area)
+{
+ uint32_t ModeSrc;
+
+ ModeSrc = d2_mode_rgb565;
+
+ lv_coord_t dst_width, dst_hight;
+ dst_width = lv_area_get_width(fill_area);
+ dst_hight = lv_area_get_height(fill_area);
+
+ d2_selectrenderbuffer(_d2_handle, renderbuffer);
+
+ // Generate render operations
+ d2_framebuffer(_d2_handle, (uint16_t *)&fb_background[0], LV_HOR_RES_MAX, LV_HOR_RES_MAX,
+ MAX(fill_area->y2 + 1, 2), lv_port_gpu_cf_get_default());
+
+ d2_cliprect(_d2_handle, 0, 0, LV_HOR_RES_MAX - 1, fill_area->y2);
+ d2_setblitsrc(_d2_handle, (void *) dst, dst_width, dst_width, dst_hight, ModeSrc);
+ d2_blitcopy(_d2_handle, dst_width, dst_hight, 0, 0, D2_FIX4(dst_width), D2_FIX4(dst_hight),
+ D2_FIX4(fill_area->x1), D2_FIX4(fill_area->y1), 0);
+
+ // Execute render operations
+ d2_executerenderbuffer(_d2_handle, renderbuffer, 0);
+}
+
+void lv_port_gpu_fill(lv_color_t * dest_buf, const lv_area_t * fill_area, lv_coord_t dst_width,
+ lv_color_t color, lv_opa_t opa)
+{
+ invalidate_cache();
+
+ lv_port_gpu_start_render();
+
+ D2_EXEC(d2_framebuffer(_d2_handle, d1_maptovidmem(_d2_handle, dest_buf), MAX(dst_width, 2), MAX(dst_width, 2),
+ MAX(fill_area->y2 + 1, 2), lv_port_gpu_cf_get_default()));
+
+ D2_EXEC(d2_cliprect(_d2_handle, 0, 0, dst_width - 1, fill_area->y2));
+ D2_EXEC(d2_setalpha(_d2_handle, opa > LV_OPA_MAX ? 0xFF : opa));
+ D2_EXEC(d2_setcolor(_d2_handle, 0, lv_port_gpu_color_lv_to_d2(color)));
+ D2_EXEC(d2_renderbox(_d2_handle, D2_FIX4(fill_area->x1), D2_FIX4(fill_area->y1),
+ D2_FIX4(lv_area_get_width(fill_area)), D2_FIX4(lv_area_get_height(fill_area))));
+
+ lv_port_gpu_execute_render();
+}
+
+bool lv_port_gpu_config_blit(const lv_draw_img_dsc_t * draw_dsc, lv_img_cf_t dst_cf,
+ lv_img_cf_t src_cf, bool alpha_en, bool color_key_en, bool blend_en, bool colorize_en)
+{
+ d2_s32 d2_src_cf, d2_dst_cf;
+
+ if(blend_en && draw_dsc->blend_mode != LV_BLEND_MODE_NORMAL
+ && draw_dsc->blend_mode != LV_BLEND_MODE_ADDITIVE) {
+ return false;
+ }
+
+ d2_src_cf = lv_port_gpu_cf_lv_to_d2(src_cf);
+ d2_dst_cf = lv_port_gpu_cf_lv_to_d2(dst_cf);
+ if(d2_src_cf < 0 || !lv_port_gpu_cf_fb_valid(d2_dst_cf)) {
+ return false;
+ }
+ src_cf_val = d2_src_cf;
+ dst_cf_val = d2_dst_cf;
+
+ img_dsc = *draw_dsc;
+
+ /* Disable alpha if alpha channel does not exist */
+ alpha_enabled = lv_port_gpu_cf_has_alpha(src_cf_val) ? alpha_en : 0;
+ color_key_enabled = color_key_en;
+ blend_enabled = blend_en;
+ colorize_enabled = colorize_en | lv_port_gpu_cf_is_alpha(src_cf_val);
+
+ return true;
+}
+
+static void lv_port_gpu_blit_internal(const lv_area_t * dest_area, const lv_color_t * src_buf,
+ const lv_area_t * src_area, d2_u32 flags)
+{
+ const lv_area_t * img_area = src_area;
+ lv_area_t img_area_scaled;
+ lv_coord_t w, h, img_w, img_h;
+ d2_s32 pitch;
+ int bpp = lv_port_gpu_cf_bpp(src_cf_val);
+
+ D2_EXEC(d2_cliprect(_d2_handle, dest_area->x1, dest_area->y1, dest_area->x2, dest_area->y2));
+
+ pitch = w = lv_area_get_width(src_area);
+ h = lv_area_get_height(src_area);
+
+ if(img_dsc.zoom != LV_IMG_ZOOM_NONE) {
+ img_area_scaled.x1 = src_area->x1 + ((((int32_t)0 - img_dsc.pivot.x) * img_dsc.zoom) >> 8) + img_dsc.pivot.x;
+ img_area_scaled.x2 = src_area->x1 + ((((int32_t)w - img_dsc.pivot.x) * img_dsc.zoom) >> 8) + img_dsc.pivot.x;
+ img_area_scaled.y1 = src_area->y1 + ((((int32_t)0 - img_dsc.pivot.y) * img_dsc.zoom) >> 8) + img_dsc.pivot.y;
+ img_area_scaled.y2 = src_area->y1 + ((((int32_t)h - img_dsc.pivot.y) * img_dsc.zoom) >> 8) + img_dsc.pivot.y;
+ img_area = &img_area_scaled;
+ }
+
+ img_w = lv_area_get_width(img_area);
+ img_h = lv_area_get_height(img_area);
+
+ if(0 < bpp && bpp < 8) {
+ pitch = (w + (8 - bpp)) & (~(8 - bpp));
+ }
+
+ if(img_dsc.angle == 0) {
+ D2_EXEC(d2_setblitsrc(_d2_handle, (void *) src_buf, pitch, w, h, src_cf_val));
+
+ D2_EXEC(d2_blitcopy(_d2_handle, w, h, 0, 0,
+ D2_FIX4(img_w), D2_FIX4(img_h), D2_FIX4(img_area->x1), D2_FIX4(img_area->y1), flags));
+ }
+ else {
+ int x, y, x1, y1, x2, y2, x3, y3, x4, y4, dxu, dxv, dyu, dyv, xx, xy, yx, yy;
+ int pivot_scaled_x, pivot_scaled_y;
+ int tex_offset = (flags & d2_bf_filter) ? -32767 : 0;
+ d2_u8 amode, cmode = d2_to_copy;
+ float angle = ((float)img_dsc.angle / 10) * M_PI / 180;
+ float cos_angle = cosf(angle);
+ float sin_angle = sinf(angle);
+ d2_u8 fillmode_backup;
+
+ /* setup texture params */
+ fillmode_backup = d2_getfillmode(_d2_handle);
+ D2_EXEC(d2_setfillmode(_d2_handle, d2_fm_texture));
+ D2_EXEC(d2_settexture(_d2_handle, (void *) src_buf, pitch, w, h, src_cf_val));
+ D2_EXEC(d2_settexturemode(_d2_handle, flags & (d2_bf_filter | d2_bf_wrap)));
+ amode = flags & d2_bf_usealpha ? d2_to_copy : d2_to_one;
+ cmode = flags & d2_bf_colorize2 ? d2_to_blend : d2_to_copy;
+ D2_EXEC(d2_settextureoperation(_d2_handle, amode, cmode, cmode, cmode));
+ if(flags & d2_bf_colorize2) {
+ d2_color cl = d2_getcolor(_d2_handle, 0), ch = d2_getcolor(_d2_handle, 1);
+ D2_EXEC(d2_settexopparam(_d2_handle, d2_cc_red, (uint8_t)(cl >> 16UL),
+ (uint8_t)(ch >> 16UL)));
+ D2_EXEC(d2_settexopparam(_d2_handle, d2_cc_green, (uint8_t)(cl >> 8UL),
+ (uint8_t)(ch >> 8UL)));
+ D2_EXEC(d2_settexopparam(_d2_handle, d2_cc_blue, (uint8_t)(cl >> 0UL),
+ (uint8_t)(ch >> 0UL)));
+ }
+
+ x = D2_FIX4(img_area->x1);
+ y = D2_FIX4(img_area->y1);
+
+ /* define quad points */
+ x1 = D2_FIX4(0);
+ y1 = D2_FIX4(0);
+ x2 = D2_FIX4(img_w);
+ y2 = D2_FIX4(0);
+ x3 = D2_FIX4(img_w);
+ y3 = D2_FIX4(img_h);
+ x4 = D2_FIX4(0);
+ y4 = D2_FIX4(img_h);
+
+ /* rotate points for quad */
+ pivot_scaled_x = (img_dsc.pivot.x * img_dsc.zoom) >> 4;
+ pivot_scaled_y = (img_dsc.pivot.y * img_dsc.zoom) >> 4;
+
+ lv_port_gpu_rotate_point(&x1, &y1, cos_angle, sin_angle, pivot_scaled_x, pivot_scaled_y);
+ lv_port_gpu_rotate_point(&x2, &y2, cos_angle, sin_angle, pivot_scaled_x, pivot_scaled_y);
+ lv_port_gpu_rotate_point(&x3, &y3, cos_angle, sin_angle, pivot_scaled_x, pivot_scaled_y);
+ lv_port_gpu_rotate_point(&x4, &y4, cos_angle, sin_angle, pivot_scaled_x, pivot_scaled_y);
+
+ /* compute texture increments */
+ xx = (int)(cos_angle * 65536.0f);
+ xy = (int)(sin_angle * 65536.0f);
+ yx = (int)(-sin_angle * 65536.0f);
+ yy = (int)(cos_angle * 65536.0f);
+ dxu = ((D2_FIX16(w) / D2_FIX4(img_w)) * xx) >> 12;
+ dxv = ((D2_FIX16(w) / D2_FIX4(img_w)) * xy) >> 12;
+ dyu = ((D2_FIX16(h) / D2_FIX4(img_h)) * yx) >> 12;
+ dyv = ((D2_FIX16(h) / D2_FIX4(img_h)) * yy) >> 12;
+
+ /* map texture exactly to rotated quad, so texel center is always (0/0) top-left */
+ D2_EXEC(d2_settexelcenter(_d2_handle, 0, 0));
+ D2_EXEC(d2_settexturemapping(_d2_handle, (d2_point)(x + x1), (d2_point)(y + y1),
+ tex_offset, tex_offset, dxu, dxv, dyu, dyv));
+
+ int minx = MAX(dest_area->x1, D2_INT4(x + MIN(x1, MIN(x2, MIN(x3, x4)))));
+ int maxx = MIN(dest_area->x2, D2_INT4(x + MAX(x1, MAX(x2, MAX(x3, x4)))));
+ int slice = (flags & d2_bf_filter) ? 6 : 8;
+
+ /* Perform render operation in slices to acheive better performance */
+ for(int posx = minx; posx < maxx; posx += slice) {
+ D2_EXEC(d2_cliprect(_d2_handle, posx, dest_area->y1, MIN(posx + slice - 1, maxx), dest_area->y2));
+ D2_EXEC(d2_renderquad(_d2_handle, (d2_point)(x + x1), (d2_point)(y + y1),
+ (d2_point)(x + x2), (d2_point)(y + y2),
+ (d2_point)(x + x3), (d2_point)(y + y3),
+ (d2_point)(x + x4), (d2_point)(y + y4), 0));
+ }
+ D2_EXEC(d2_setfillmode(_d2_handle, fillmode_backup));
+ }
+}
+
+void lv_port_ra_gpu_blit(lv_color_t * dst, const lv_area_t * dst_area, lv_coord_t dest_stride,
+ const lv_color_t * src, const lv_area_t * src_area, lv_opa_t opa)
+{
+ d2_u32 flags = 0;
+ const d2_color * clut = NULL;
+ int clut_len = 0;
+
+ invalidate_cache();
+
+ clut_len = lv_port_gpu_handle_indexed_color(&src, &clut, src_cf_val);
+
+ lv_port_gpu_start_render();
+
+ D2_EXEC(d2_framebuffer(_d2_handle, d1_maptovidmem(_d2_handle, dst), MAX(dest_stride, 2),
+ MAX(dst_area->x2 + 1, 2), MAX(dst_area->y2 + 1, 2), dst_cf_val));
+
+ flags |= alpha_enabled ? d2_bf_usealpha : 0;
+
+ D2_EXEC(d2_setalpha(_d2_handle, opa > LV_OPA_MAX ? LV_OPA_COVER : opa));
+
+ if(clut) {
+ D2_EXEC(d2_writetexclut_direct(_d2_handle, clut, 0, clut_len));
+ }
+
+ flags |= color_key_enabled ? d2_bf_usealpha : 0;
+ flags |= (colorize_enabled || img_dsc.recolor_opa != LV_OPA_TRANSP) ? d2_bf_colorize2 : 0;
+ if(colorize_enabled) {
+ D2_EXEC(d2_setcolor(_d2_handle, 0, lv_port_gpu_color_lv_to_d2(img_dsc.recolor)));
+ D2_EXEC(d2_setcolor(_d2_handle, 1, lv_port_gpu_color_lv_to_d2(img_dsc.recolor)));
+ }
+ else if(img_dsc.recolor_opa != LV_OPA_TRANSP) {
+ d2_color cl = 0, ch = 0;
+ lv_port_gpu_get_recolor_consts(&cl, &ch);
+ D2_EXEC(d2_setcolor(_d2_handle, 0, cl));
+ D2_EXEC(d2_setcolor(_d2_handle, 1, ch));
+ }
+
+ flags |= ((img_dsc.angle || img_dsc.zoom != LV_IMG_ZOOM_NONE) && img_dsc.antialias) ? d2_bf_filter : 0;
+
+ if(blend_enabled) {
+ D2_EXEC(d2_setblendmode(_d2_handle, d2_bm_alpha,
+ img_dsc.blend_mode != LV_BLEND_MODE_NORMAL ? d2_bm_one : d2_bm_one_minus_alpha));
+ D2_EXEC(d2_setalphablendmode(_d2_handle, d2_bm_one, d2_bm_one_minus_alpha));
+ }
+ else {
+ D2_EXEC(d2_setblendmode(_d2_handle, d2_bm_one, d2_bm_zero));
+ D2_EXEC(d2_setalphablendmode(_d2_handle, d2_bm_one, d2_bm_zero));
+ }
+
+ lv_port_gpu_blit_internal(dst_area, src, src_area, flags);
+
+ lv_port_gpu_execute_render();
+}
+
+void lv_draw_ra6m3_2d_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc)
+{
+ lv_area_t blend_area;
+ if(!_lv_area_intersect(&blend_area, dsc->blend_area, draw_ctx->clip_area)) return;
+
+ bool done = false;
+
+ if(dsc->mask_buf == NULL && dsc->blend_mode == LV_BLEND_MODE_NORMAL && lv_area_get_size(&blend_area) > 100) {
+ lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area);
+
+ lv_color_t * dest_buf = draw_ctx->buf;
+
+ const lv_color_t * src_buf = dsc->src_buf;
+ if(src_buf) {
+ lv_draw_sw_blend_basic(draw_ctx, dsc);
+
+ lv_area_t src_area;
+ src_area.x1 = blend_area.x1 - (dsc->blend_area->x1 - draw_ctx->buf_area->x1);
+ src_area.y1 = blend_area.y1 - (dsc->blend_area->y1 - draw_ctx->buf_area->y1);
+ src_area.x2 = src_area.x1 + lv_area_get_width(dsc->blend_area) - 1;
+ src_area.y2 = src_area.y1 + lv_area_get_height(dsc->blend_area) - 1;
+
+ lv_port_ra_gpu_blit(dest_buf, &blend_area, dest_stride, src_buf, &src_area, dsc->opa);
+ done = true;
+ }
+ else if(dsc->opa >= LV_OPA_MAX) {
+ lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1);
+ lv_port_gpu_fill(dest_buf, &blend_area, dest_stride, dsc->color, dsc->opa);
+ done = true;
+ }
+ }
+
+ if(!done) lv_draw_sw_blend_basic(draw_ctx, dsc);
+}
+
+static void lv_port_gpu_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * dsc,
+ const lv_area_t * coords, const uint8_t * map_p, lv_img_cf_t color_format)
+{
+ /*TODO basic ARGB8888 image can be handles here*/
+
+ lv_draw_sw_img_decoded(draw_ctx, dsc, coords, map_p, color_format);
+}
+
+void lv_draw_ra6m3_2d_ctx_init(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx)
+{
+ lv_draw_sw_init_ctx(drv, draw_ctx);
+
+ lv_draw_ra6m3_dma2d_ctx_t * ra_2d_draw_ctx = (lv_draw_sw_ctx_t *)draw_ctx;
+
+ ra_2d_draw_ctx->blend = lv_draw_ra6m3_2d_blend;
+ ra_2d_draw_ctx->base_draw.draw_img_decoded = lv_port_gpu_img_decoded;
+ ra_2d_draw_ctx->base_draw.wait_for_finish = lv_port_gpu_wait;
+ ra_2d_draw_ctx->base_draw.draw_letter = lv_draw_gpu_letter;
+ //ra_2d_draw_ctx->base_draw.buffer_copy = lv_draw_ra6m3_2d_buffer_copy;
+}
+
+void lv_draw_stm32_dma2d_ctx_deinit(lv_disp_t * disp, lv_draw_ctx_t * draw_ctx)
+{
+ LV_UNUSED(disp);
+ LV_UNUSED(draw_ctx);
+}
+
+static void invalidate_cache(void)
+{
+ lv_disp_t * disp = _lv_refr_get_disp_refreshing();
+ if(disp->driver->clean_dcache_cb) disp->driver->clean_dcache_cb(disp->driver);
+}
+
+#ifdef LOG_ERRORS
+static void lv_port_gpu_log_error(d2_s32 status, const char * func, int line)
+{
+ if(status) {
+ log_error_list[error_list_index].error = status;
+ log_error_list[error_list_index].func = func;
+ log_error_list[error_list_index].line = line;
+ LV_LOG_ERROR("%s\r\n", d2_geterrorstring(_d2_handle));
+ LV_LOG_ERROR("%d:\t%d - %s : %d\r\n", error_count,
+ log_error_list[error_list_index].error,
+ log_error_list[error_list_index].func,
+ log_error_list[error_list_index].line);
+
+ error_count++;
+ error_list_index++;
+ if(error_list_index >= ERROR_LIST_SIZE) {
+ error_list_index = 0;
+ }
+ }
+}
+#endif
+#endif /* LV_USE_GPU_RA6M3_G2D */
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_ra6m3.h b/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_ra6m3.h
new file mode 100644
index 000000000..5d37ce45e
--- /dev/null
+++ b/lib/libesp32_lvgl/lvgl/src/draw/renesas/lv_gpu_d2_ra6m3.h
@@ -0,0 +1,56 @@
+/**
+ * @file lv_gpu_d2_ra6m3.h
+ *
+ */
+#ifndef LV_GPU_D2_RA6M3_H
+#define LV_GPU_D2_RA6M3_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*********************
+ * INCLUDES
+ *********************/
+#include "../../misc/lv_color.h"
+
+#if LV_USE_GPU_RA6M3_G2D
+#include "../../core/lv_disp.h"
+#include "../sw/lv_draw_sw.h"
+
+/**********************
+ * DEFINE
+ **********************/
+#define MIN(A, B) ((A) < (B) ? (A) : (B))
+#define MAX(A, B) ((A) > (B) ? (A) : (B))
+#define M_PI 3.1415926
+
+/**********************
+ * TYPEDEFS
+ **********************/
+typedef lv_draw_sw_ctx_t lv_draw_ra6m3_dma2d_ctx_t;
+
+/**********************
+ * GLOBAL PROTOTYPES
+ **********************/
+void lv_draw_ra6m3_g2d_init(void);
+
+void lv_port_gpu_init(void);
+
+void lv_port_gpu_flush(void);
+
+void lv_port_gpu_blit(int32_t x, int32_t y, lv_color_t * dst, const lv_area_t * fill_area);
+
+void lv_draw_ra6m3_2d_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
+
+void lv_draw_ra6m3_2d_ctx_init(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx);
+
+void lv_draw_ra6m3_2d_ctx_deinit(lv_disp_drv_t * disp, lv_draw_ctx_t * draw_ctx);
+
+#endif /*LV_USE_GPU_GD32_IPA*/
+
+#ifdef __cplusplus
+} /*extern "C"*/
+#endif
+
+#endif
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_arc.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_arc.c
index 5786eaeb9..f43fef641 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_arc.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_arc.c
@@ -104,7 +104,9 @@ void lv_draw_sdl_draw_arc(lv_draw_ctx_t * draw_ctx, const lv_draw_arc_dsc_t * ds
}
lv_coord_t w = lv_area_get_width(&draw_area), h = lv_area_get_height(&draw_area);
- SDL_Texture * texture = lv_draw_sdl_composite_texture_obtain(ctx, LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_STREAM1, w, h);
+ bool texture_cached = false;
+ SDL_Texture * texture = lv_draw_sdl_composite_texture_obtain(ctx, LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_STREAM1, w, h,
+ &texture_cached);
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
dump_masks(texture, &draw_area, mask_ids, mask_ids_count, cap_ids[0] != LV_MASK_ID_INV ? cap_ids : NULL);
@@ -135,6 +137,11 @@ void lv_draw_sdl_draw_arc(lv_draw_ctx_t * draw_ctx, const lv_draw_arc_dsc_t * ds
SDL_SetTextureColorMod(texture, color.r, color.g, color.b);
SDL_SetTextureAlphaMod(texture, dsc->opa);
SDL_RenderCopy(ctx->renderer, texture, &srcrect, &dstrect);
+
+ if(!texture_cached) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(texture);
+ }
}
/**********************
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.c
index 4d0603d70..e155570d8 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.c
@@ -86,7 +86,8 @@ bool lv_draw_sdl_composite_begin(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coor
LV_ASSERT(internals->mask == NULL && internals->composition == NULL && internals->target_backup == NULL);
lv_coord_t w = lv_area_get_width(apply_area), h = lv_area_get_height(apply_area);
- internals->composition = lv_draw_sdl_composite_texture_obtain(ctx, LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_TARGET0, w, h);
+ internals->composition = lv_draw_sdl_composite_texture_obtain(ctx, LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_TARGET0, w, h,
+ &internals->composition_cached);
/* Don't need to worry about integral overflow */
lv_coord_t ofs_x = (lv_coord_t) - apply_area->x1, ofs_y = (lv_coord_t) - apply_area->y1;
/* Offset draw area to start with (0,0) of coords */
@@ -174,19 +175,23 @@ void lv_draw_sdl_composite_end(lv_draw_sdl_ctx_t * ctx, const lv_area_t * apply_
break;
}
SDL_RenderCopy(ctx->renderer, internals->composition, &src_rect, &dst_rect);
+ if(!internals->composition_cached) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(internals->composition);
+ }
}
internals->mask = internals->composition = internals->target_backup = NULL;
}
SDL_Texture * lv_draw_sdl_composite_texture_obtain(lv_draw_sdl_ctx_t * ctx, lv_draw_sdl_composite_texture_id_t id,
- lv_coord_t w, lv_coord_t h)
+ lv_coord_t w, lv_coord_t h, bool * texture_in_cache)
{
lv_point_t * tex_size = NULL;
composite_key_t mask_key = mask_key_create(id);
SDL_Texture * result = lv_draw_sdl_texture_cache_get_with_userdata(ctx, &mask_key, sizeof(composite_key_t), NULL,
(void **) &tex_size);
- if(!result || tex_size->x < w || tex_size->y < h) {
+ if(result == NULL || tex_size->x < w || tex_size->y < h) {
lv_coord_t size = next_pow_of_2(LV_MAX(w, h));
int access = SDL_TEXTUREACCESS_STREAMING;
if(id >= LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_TRANSFORM0) {
@@ -198,8 +203,19 @@ SDL_Texture * lv_draw_sdl_composite_texture_obtain(lv_draw_sdl_ctx_t * ctx, lv_d
result = SDL_CreateTexture(ctx->renderer, LV_DRAW_SDL_TEXTURE_FORMAT, access, size, size);
tex_size = lv_mem_alloc(sizeof(lv_point_t));
tex_size->x = tex_size->y = size;
- lv_draw_sdl_texture_cache_put_advanced(ctx, &mask_key, sizeof(composite_key_t), result, tex_size, lv_mem_free, 0);
+ bool in_cache = lv_draw_sdl_texture_cache_put_advanced(ctx, &mask_key, sizeof(composite_key_t), result,
+ tex_size, lv_mem_free, 0);
+ if(!in_cache) {
+ lv_mem_free(tex_size);
+ }
+ if(texture_in_cache != NULL) {
+ *texture_in_cache = in_cache;
+ }
}
+ else if(texture_in_cache != NULL) {
+ *texture_in_cache = true;
+ }
+
return result;
}
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.h b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.h
index 72a2daef7..57191bbce 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_composite.h
@@ -45,6 +45,7 @@ typedef enum lv_draw_sdl_composite_texture_id_t {
/**
* Begin drawing with mask. Render target will be switched to a temporary texture,
* and drawing coordinates may get clipped or translated
+ * @param ctx Drawing context
* @param coords_in Original coordinates
* @param clip_in Original clip area
* @param extension Useful for shadows or outlines, can be NULL
@@ -59,8 +60,18 @@ bool lv_draw_sdl_composite_begin(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coor
void lv_draw_sdl_composite_end(lv_draw_sdl_ctx_t * ctx, const lv_area_t * apply_area, lv_blend_mode_t blend_mode);
+/**
+ *
+ * @param ctx Drawing context
+ * @param id Texture ID
+ * @param w Maximum width needed
+ * @param h Maximum height needed
+ * @param texture_in_cache output to query if the texture is in cache. If it's not in cache, you'll need to destroy it
+ * by yourself
+ * @return Obtained texture
+ */
SDL_Texture * lv_draw_sdl_composite_texture_obtain(lv_draw_sdl_ctx_t * ctx, lv_draw_sdl_composite_texture_id_t id,
- lv_coord_t w, lv_coord_t h);
+ lv_coord_t w, lv_coord_t h, bool * texture_in_cache);
/**********************
* MACROS
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.c
index 3c955d840..4dddc8c60 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.c
@@ -72,7 +72,8 @@ static void draw_img_rounded(lv_draw_sdl_ctx_t * ctx, SDL_Texture * texture, con
lv_coord_t radius);
static SDL_Texture * img_rounded_frag_obtain(lv_draw_sdl_ctx_t * ctx, SDL_Texture * texture,
- const lv_draw_sdl_img_header_t * header, int w, int h, lv_coord_t radius);
+ const lv_draw_sdl_img_header_t * header, int w, int h, lv_coord_t radius,
+ bool * in_cache);
static lv_draw_img_rounded_key_t rounded_key_create(const SDL_Texture * texture, lv_coord_t w, lv_coord_t h,
lv_coord_t radius);
@@ -106,11 +107,16 @@ lv_res_t lv_draw_sdl_img_core(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t
lv_draw_sdl_img_header_t * header = NULL;
SDL_Texture * texture = lv_draw_sdl_texture_cache_get_with_userdata(ctx, key, key_size, &texture_found,
(void **) &header);
+ bool texture_in_cache = false;
if(!texture_found) {
- lv_draw_sdl_img_load_texture(ctx, key, key_size, src, draw_dsc->frame_id, &texture, &header);
+ lv_draw_sdl_img_load_texture(ctx, key, key_size, src, draw_dsc->frame_id, &texture, &header,
+ &texture_in_cache);
+ }
+ else {
+ texture_in_cache = true;
}
SDL_free(key);
- if(!texture) {
+ if(!texture || !header) {
return LV_RES_INV;
}
@@ -148,6 +154,14 @@ lv_res_t lv_draw_sdl_img_core(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t
lv_draw_sdl_composite_end(ctx, &apply_area, draw_dsc->blend_mode);
+ if(!texture_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ if(!header->managed) {
+ SDL_DestroyTexture(texture);
+ }
+ lv_mem_free(header);
+ }
+
return LV_RES_OK;
}
@@ -185,7 +199,7 @@ static void calc_draw_part(SDL_Texture * texture, const lv_draw_sdl_img_header_t
bool lv_draw_sdl_img_load_texture(lv_draw_sdl_ctx_t * ctx, lv_draw_sdl_cache_key_head_img_t * key, size_t key_size,
const void * src, int32_t frame_id, SDL_Texture ** texture,
- lv_draw_sdl_img_header_t ** header)
+ lv_draw_sdl_img_header_t ** header, bool * texture_in_cache)
{
_lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, lv_color_white(), frame_id);
lv_draw_sdl_cache_flag_t tex_flags = 0;
@@ -210,16 +224,18 @@ bool lv_draw_sdl_img_load_texture(lv_draw_sdl_ctx_t * ctx, lv_draw_sdl_cache_key
#endif
}
if(texture && cdsc) {
- *header = SDL_malloc(sizeof(lv_draw_sdl_img_header_t));
+ *header = lv_mem_alloc(sizeof(lv_draw_sdl_img_header_t));
SDL_memcpy(&(*header)->base, &cdsc->dec_dsc.header, sizeof(lv_img_header_t));
(*header)->rect = rect;
- lv_draw_sdl_texture_cache_put_advanced(ctx, key, key_size, *texture, *header, SDL_free, tex_flags);
+ (*header)->managed = (tex_flags & LV_DRAW_SDL_CACHE_FLAG_MANAGED) != 0;
+ *texture_in_cache = lv_draw_sdl_texture_cache_put_advanced(ctx, key, key_size, *texture, *header, SDL_free,
+ tex_flags);
+ return true;
}
else {
- lv_draw_sdl_texture_cache_put(ctx, key, key_size, NULL);
+ *texture_in_cache = lv_draw_sdl_texture_cache_put(ctx, key, key_size, NULL);
return false;
}
- return true;
}
/**********************
@@ -320,7 +336,8 @@ static void draw_img_rounded(lv_draw_sdl_ctx_t * ctx, SDL_Texture * texture, con
{
const int w = lv_area_get_width(coords), h = lv_area_get_height(coords);
lv_coord_t real_radius = LV_MIN3(radius, w, h);
- SDL_Texture * frag = img_rounded_frag_obtain(ctx, texture, header, w, h, real_radius);
+ bool frag_in_cache = false;
+ SDL_Texture * frag = img_rounded_frag_obtain(ctx, texture, header, w, h, real_radius, &frag_in_cache);
apply_recolor_opa(frag, draw_dsc);
lv_draw_sdl_rect_bg_frag_draw_corners(ctx, frag, real_radius, coords, clip, true);
@@ -360,6 +377,11 @@ static void draw_img_rounded(lv_draw_sdl_ctx_t * ctx, SDL_Texture * texture, con
SDL_RenderCopy(ctx->renderer, texture, &src_rect, &dst_rect);
}
SDL_RenderSetClipRect(ctx->renderer, NULL);
+
+ if(!frag_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(frag);
+ }
}
static void apply_recolor_opa(SDL_Texture * texture, const lv_draw_img_dsc_t * draw_dsc)
@@ -377,15 +399,18 @@ static void apply_recolor_opa(SDL_Texture * texture, const lv_draw_img_dsc_t * d
}
static SDL_Texture * img_rounded_frag_obtain(lv_draw_sdl_ctx_t * ctx, SDL_Texture * texture,
- const lv_draw_sdl_img_header_t * header, int w, int h, lv_coord_t radius)
+ const lv_draw_sdl_img_header_t * header, int w, int h, lv_coord_t radius,
+ bool * in_cache)
{
lv_draw_img_rounded_key_t key = rounded_key_create(texture, w, h, radius);
- SDL_Texture * mask_frag = lv_draw_sdl_rect_bg_frag_obtain(ctx, radius);
+ bool mask_frag_in_cache = false;
+ SDL_Texture * mask_frag = lv_draw_sdl_rect_bg_frag_obtain(ctx, radius, &mask_frag_in_cache);
SDL_Texture * img_frag = lv_draw_sdl_texture_cache_get(ctx, &key, sizeof(key), NULL);
if(img_frag == NULL) {
const lv_coord_t full_frag_size = radius * 2 + 3;
img_frag = SDL_CreateTexture(ctx->renderer, LV_DRAW_SDL_TEXTURE_FORMAT, SDL_TEXTUREACCESS_TARGET,
full_frag_size, full_frag_size);
+ SDL_assert(img_frag);
SDL_SetTextureBlendMode(img_frag, SDL_BLENDMODE_BLEND);
SDL_Texture * old_target = SDL_GetRenderTarget(ctx->renderer);
SDL_SetRenderTarget(ctx->renderer, img_frag);
@@ -395,7 +420,7 @@ static SDL_Texture * img_rounded_frag_obtain(lv_draw_sdl_ctx_t * ctx, SDL_Textur
SDL_RenderFillRect(ctx->renderer, NULL);
SDL_SetRenderDrawBlendMode(ctx->renderer, SDL_BLENDMODE_BLEND);
- lv_area_t coords = {0, 0, w - 1, h - 1}, clip;
+ lv_area_t coords = {0, 0, w - 1, h - 1};
lv_area_t frag_coords = {0, 0, full_frag_size - 1, full_frag_size - 1};
lv_draw_sdl_rect_bg_frag_draw_corners(ctx, mask_frag, radius, &frag_coords, NULL, false);
@@ -446,7 +471,14 @@ static SDL_Texture * img_rounded_frag_obtain(lv_draw_sdl_ctx_t * ctx, SDL_Textur
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
SDL_SetRenderTarget(ctx->renderer, old_target);
- lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), img_frag);
+ *in_cache = lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), img_frag);
+ }
+ else {
+ *in_cache = true;
+ }
+ if(!mask_frag_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(mask_frag);
}
return img_frag;
}
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.h b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.h
index 0e2702772..6233913d8 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_img.h
@@ -35,6 +35,7 @@ extern "C" {
typedef struct lv_draw_sdl_img_header_t {
lv_img_header_t base;
SDL_Rect rect;
+ bool managed;
} lv_draw_sdl_img_header_t;
/**********************
@@ -56,9 +57,22 @@ typedef struct lv_draw_sdl_img_header_t {
/*=====================
* Other functions
*====================*/
+/**
+ *
+ * @param ctx Drawing context
+ * @param key Texture cache key
+ * @param key_size Size of texture cache key
+ * @param src Image source pointer
+ * @param frame_id Frame ID for animated image
+ * @param texture Texture for render
+ * @param header Header also holds sdl image info
+ * @param texture_in_cache Whether the texture has been put in the cache. Please note for managed texture,
+ * this will be false too. So you'll need to check header.managed too.
+ * @return Whether the image has been loaded successfully
+ */
bool lv_draw_sdl_img_load_texture(lv_draw_sdl_ctx_t * ctx, lv_draw_sdl_cache_key_head_img_t * key, size_t key_size,
const void * src, int32_t frame_id, SDL_Texture ** texture,
- lv_draw_sdl_img_header_t ** header);
+ lv_draw_sdl_img_header_t ** header, bool * texture_in_cache);
/**********************
* MACROS
**********************/
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_label.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_label.c
index b8c79ae4a..d043c510b 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_label.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_label.c
@@ -54,7 +54,7 @@ static lv_font_glyph_key_t font_key_glyph_create(const lv_font_t * font_p, uint3
* GLOBAL FUNCTIONS
**********************/
-void lv_draw_sdl_draw_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t * dsc, const lv_point_t * pos_p,
+void lv_draw_sdl_draw_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t * dsc, const lv_point_t * pos_p,
uint32_t letter)
{
const lv_area_t * clip_area = draw_ctx->clip_area;
@@ -117,6 +117,7 @@ void lv_draw_sdl_draw_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t
lv_font_glyph_key_t glyph_key = font_key_glyph_create(font_p, letter);
bool glyph_found = false;
SDL_Texture * texture = lv_draw_sdl_texture_cache_get(ctx, &glyph_key, sizeof(glyph_key), &glyph_found);
+ bool in_cache = false;
if(!glyph_found) {
if(g.resolved_font) {
font_p = g.resolved_font;
@@ -128,7 +129,10 @@ void lv_draw_sdl_draw_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t
texture = SDL_CreateTextureFromSurface(renderer, mask);
SDL_FreeSurface(mask);
lv_mem_free(buf);
- lv_draw_sdl_texture_cache_put(ctx, &glyph_key, sizeof(glyph_key), texture);
+ in_cache = lv_draw_sdl_texture_cache_put(ctx, &glyph_key, sizeof(glyph_key), texture);
+ }
+ else {
+ in_cache = true;
}
if(!texture) {
return;
@@ -142,6 +146,10 @@ void lv_draw_sdl_draw_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t
/*If the letter is completely out of mask don't draw it*/
if(!_lv_area_intersect(&draw_area, &t_letter, &t_clip)) {
+ if(!in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(texture);
+ }
return;
}
SDL_Rect srcrect, dstrect;
@@ -156,6 +164,11 @@ void lv_draw_sdl_draw_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t
SDL_RenderCopy(renderer, texture, &srcrect, &dstrect);
lv_draw_sdl_composite_end(ctx, &apply_area, dsc->blend_mode);
+
+ if(!in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(texture);
+ }
}
/**********************
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.c
index ae5c327ac..d517636d9 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.c
@@ -58,7 +58,8 @@ lv_draw_layer_ctx_t * lv_draw_sdl_layer_init(lv_draw_ctx_t * draw_ctx, lv_draw_l
enum lv_draw_sdl_composite_texture_id_t texture_id = LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_TRANSFORM0 +
ctx->internals->transform_count;
- transform_ctx->target = lv_draw_sdl_composite_texture_obtain(ctx, texture_id, target_w, target_h);
+ transform_ctx->target = lv_draw_sdl_composite_texture_obtain(ctx, texture_id, target_w, target_h,
+ &transform_ctx->target_in_cache);
transform_ctx->target_rect.x = 0;
transform_ctx->target_rect.y = 0;
transform_ctx->target_rect.w = target_w;
@@ -117,6 +118,11 @@ void lv_draw_sdl_layer_blend(lv_draw_ctx_t * draw_ctx, lv_draw_layer_ctx_t * lay
void lv_draw_sdl_layer_destroy(lv_draw_ctx_t * draw_ctx, lv_draw_layer_ctx_t * layer_ctx)
{
lv_draw_sdl_ctx_t * ctx = (lv_draw_sdl_ctx_t *) draw_ctx;
+ lv_draw_sdl_layer_ctx_t * transform_ctx = (lv_draw_sdl_layer_ctx_t *) layer_ctx;
+ if(!transform_ctx->target_in_cache && transform_ctx->target != NULL) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(transform_ctx->target);
+ }
ctx->internals->transform_count -= 1;
}
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.h b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.h
index b60303c47..f6aa66867 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_layer.h
@@ -28,6 +28,7 @@ typedef struct _lv_draw_sdl_layer_ctx_t {
SDL_Texture * orig_target;
SDL_Texture * target;
SDL_Rect target_rect;
+ bool target_in_cache;
lv_draw_layer_flags_t flags;
} lv_draw_sdl_layer_ctx_t;
/**********************
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_line.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_line.c
index 3a15d6d33..204e1a3d8 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_line.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_line.c
@@ -53,7 +53,7 @@ static SDL_Texture * line_texture_create(lv_draw_sdl_ctx_t * sdl_ctx, const lv_d
* GLOBAL FUNCTIONS
**********************/
void lv_draw_sdl_draw_line(lv_draw_ctx_t * draw_ctx, const lv_draw_line_dsc_t * dsc, const lv_point_t * point1,
- const lv_point_t * point2)
+ const lv_point_t * point2, bool * in_cache)
{
lv_draw_sdl_ctx_t * sdl_ctx = (lv_draw_sdl_ctx_t *) draw_ctx;
SDL_Renderer * renderer = sdl_ctx->renderer;
@@ -68,7 +68,7 @@ void lv_draw_sdl_draw_line(lv_draw_ctx_t * draw_ctx, const lv_draw_line_dsc_t *
SDL_Texture * texture = lv_draw_sdl_texture_cache_get(sdl_ctx, &key, sizeof(key), NULL);
if(!texture) {
texture = line_texture_create(sdl_ctx, dsc, (lv_coord_t) length);
- lv_draw_sdl_texture_cache_put(sdl_ctx, &key, sizeof(key), texture);
+ *in_cache = lv_draw_sdl_texture_cache_put(sdl_ctx, &key, sizeof(key), texture);
}
lv_area_t coords = {x1, y1, x2, y2};
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_polygon.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_polygon.c
index c5df50cb9..68305c7c8 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_polygon.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_polygon.c
@@ -77,7 +77,9 @@ void lv_draw_sdl_polygon(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dr
int16_t mask_id = lv_draw_mask_add(&polygon_param, NULL);
lv_coord_t w = lv_area_get_width(&draw_area), h = lv_area_get_height(&draw_area);
- SDL_Texture * texture = lv_draw_sdl_composite_texture_obtain(ctx, LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_STREAM1, w, h);
+ bool texture_in_cache = false;
+ SDL_Texture * texture = lv_draw_sdl_composite_texture_obtain(ctx, LV_DRAW_SDL_COMPOSITE_TEXTURE_ID_STREAM1, w, h,
+ &texture_in_cache);
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
dump_masks(texture, &draw_area);
@@ -91,6 +93,10 @@ void lv_draw_sdl_polygon(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dr
SDL_SetTextureColorMod(texture, color.r, color.g, color.b);
SDL_SetTextureAlphaMod(texture, draw_dsc->bg_opa);
SDL_RenderCopy(ctx->renderer, texture, &srcrect, &dstrect);
+ if(!texture_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(texture);
+ }
}
/**********************
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_priv.h b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_priv.h
index 24a876218..ffc191b0a 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_priv.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_priv.h
@@ -35,6 +35,7 @@ typedef struct lv_draw_sdl_context_internals_t {
lv_lru_t * texture_cache;
SDL_Texture * mask;
SDL_Texture * composition;
+ bool composition_cached;
SDL_Texture * target_backup;
uint8_t transform_count;
} lv_draw_sdl_context_internals_t;
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.c
index 6418a0af6..149dcbf67 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.c
@@ -175,7 +175,7 @@ void lv_draw_sdl_draw_rect(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t *
lv_draw_sdl_composite_end(ctx, &apply_area, dsc->blend_mode);
}
-SDL_Texture * lv_draw_sdl_rect_bg_frag_obtain(lv_draw_sdl_ctx_t * ctx, lv_coord_t radius)
+SDL_Texture * lv_draw_sdl_rect_bg_frag_obtain(lv_draw_sdl_ctx_t * ctx, lv_coord_t radius, bool * in_cache)
{
lv_draw_rect_bg_key_t key = rect_bg_key_create(radius, radius);
SDL_Texture * texture = lv_draw_sdl_texture_cache_get(ctx, &key, sizeof(key), NULL);
@@ -188,13 +188,16 @@ SDL_Texture * lv_draw_sdl_rect_bg_frag_obtain(lv_draw_sdl_ctx_t * ctx, lv_coord_
texture = lv_draw_sdl_mask_dump_texture(ctx->renderer, &coords_frag, &mask_id, 1);
SDL_assert(texture != NULL);
lv_draw_mask_remove_id(mask_id);
- lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ *in_cache = lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ }
+ else {
+ *in_cache = true;
}
return texture;
}
SDL_Texture * lv_draw_sdl_rect_grad_frag_obtain(lv_draw_sdl_ctx_t * ctx, const lv_grad_dsc_t * grad, lv_coord_t w,
- lv_coord_t h, lv_coord_t radius)
+ lv_coord_t h, lv_coord_t radius, bool * in_cache)
{
lv_draw_rect_grad_frag_key_t key = rect_grad_frag_key_create(grad, w, h, radius);
SDL_Texture * texture = lv_draw_sdl_texture_cache_get(ctx, &key, sizeof(key), NULL);
@@ -240,12 +243,15 @@ SDL_Texture * lv_draw_sdl_rect_grad_frag_obtain(lv_draw_sdl_ctx_t * ctx, const l
draw_bg_grad_simple(ctx, &blend_coords, &draw_area, grad, true);
SDL_SetRenderTarget(ctx->renderer, target_backup);
- lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ *in_cache = lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ }
+ else {
+ *in_cache = true;
}
return texture;
}
-SDL_Texture * lv_draw_sdl_rect_grad_strip_obtain(lv_draw_sdl_ctx_t * ctx, const lv_grad_dsc_t * grad)
+SDL_Texture * lv_draw_sdl_rect_grad_strip_obtain(lv_draw_sdl_ctx_t * ctx, const lv_grad_dsc_t * grad, bool * in_cache)
{
lv_draw_rect_grad_strip_key_t key = rect_grad_strip_key_create(grad);
SDL_Texture * texture = lv_draw_sdl_texture_cache_get(ctx, &key, sizeof(key), NULL);
@@ -265,7 +271,10 @@ SDL_Texture * lv_draw_sdl_rect_grad_strip_obtain(lv_draw_sdl_ctx_t * ctx, const
texture = SDL_CreateTextureFromSurface(ctx->renderer, surface);
SDL_assert(texture != NULL);
SDL_FreeSurface(surface);
- lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ *in_cache = lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ }
+ else {
+ *in_cache = true;
}
return texture;
}
@@ -388,7 +397,8 @@ static void draw_bg_color(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, con
/*A small texture with a quarter of the rect is enough*/
lv_coord_t bg_w = lv_area_get_width(coords), bg_h = lv_area_get_height(coords);
lv_coord_t real_radius = LV_MIN3(bg_w / 2, bg_h / 2, radius);
- SDL_Texture * texture = lv_draw_sdl_rect_bg_frag_obtain(ctx, real_radius);
+ bool texture_in_cache = false;
+ SDL_Texture * texture = lv_draw_sdl_rect_bg_frag_obtain(ctx, real_radius, &texture_in_cache);
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
SDL_SetTextureAlphaMod(texture, dsc->bg_opa);
@@ -396,6 +406,11 @@ static void draw_bg_color(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, con
lv_draw_sdl_rect_bg_frag_draw_corners(ctx, texture, real_radius, coords, draw_area, false);
frag_render_borders(ctx->renderer, texture, real_radius, coords, draw_area, false);
frag_render_center(ctx->renderer, texture, real_radius, coords, draw_area, false);
+
+ if(!texture_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(texture);
+ }
}
static void draw_bg_grad_simple(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, const lv_area_t * draw_area,
@@ -427,7 +442,8 @@ static void draw_bg_grad_simple(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coord
}
}
- SDL_Texture * grad_texture = lv_draw_sdl_rect_grad_strip_obtain(ctx, grad);
+ bool grad_texture_in_cache = false;
+ SDL_Texture * grad_texture = lv_draw_sdl_rect_grad_strip_obtain(ctx, grad, &grad_texture_in_cache);
if(blend_mod) {
SDL_SetTextureBlendMode(grad_texture, SDL_BLENDMODE_MOD);
}
@@ -436,6 +452,11 @@ static void draw_bg_grad_simple(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coord
}
SDL_RenderCopy(ctx->renderer, grad_texture, &srcrect, &dstrect);
+
+ if(!grad_texture_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(grad_texture);
+ }
}
static void draw_bg_grad_radius(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, const lv_area_t * draw_area,
@@ -445,7 +466,9 @@ static void draw_bg_grad_radius(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coord
/*A small texture with a quarter of the rect is enough*/
lv_coord_t bg_w = lv_area_get_width(coords), bg_h = lv_area_get_height(coords);
lv_coord_t real_radius = LV_MIN3(bg_w / 2, bg_h / 2, radius);
- SDL_Texture * grad_texture = lv_draw_sdl_rect_grad_frag_obtain(ctx, &dsc->bg_grad, bg_w, bg_h, radius);
+ bool grad_texture_in_cache = false;
+ SDL_Texture * grad_texture = lv_draw_sdl_rect_grad_frag_obtain(ctx, &dsc->bg_grad, bg_w, bg_h, radius,
+ &grad_texture_in_cache);
SDL_SetTextureBlendMode(grad_texture, SDL_BLENDMODE_BLEND);
lv_draw_sdl_rect_bg_frag_draw_corners(ctx, grad_texture, real_radius, coords, draw_area, true);
@@ -497,6 +520,11 @@ static void draw_bg_grad_radius(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coord
_lv_area_intersect(&part_area, &part_coords, draw_area);
draw_bg_grad_simple(ctx, coords, &part_area, &dsc->bg_grad, false);
}
+
+ if(!grad_texture_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(grad_texture);
+ }
}
static void draw_bg_img(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, const lv_area_t * draw_area,
@@ -632,6 +660,7 @@ static void draw_shadow(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, const
lv_draw_rect_shadow_key_t key = rect_shadow_key_create(radius, frag_size, sw);
SDL_Texture * texture = lv_draw_sdl_texture_cache_get(ctx, &key, sizeof(key), NULL);
+ bool texture_in_cache = false;
if(texture == NULL) {
lv_area_t mask_area = {blur_growth, blur_growth}, mask_area_blurred = {0, 0};
lv_area_set_width(&mask_area, frag_size * 2);
@@ -650,7 +679,10 @@ static void draw_shadow(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, const
lv_mem_buf_release(mask_buf);
lv_draw_mask_remove_id(mask_id);
SDL_assert(texture);
- lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ texture_in_cache = lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ }
+ else {
+ texture_in_cache = true;
}
SDL_Color shadow_color;
@@ -662,6 +694,11 @@ static void draw_shadow(lv_draw_sdl_ctx_t * ctx, const lv_area_t * coords, const
lv_draw_sdl_rect_bg_frag_draw_corners(ctx, texture, blur_frag_size, &shadow_area, clip, false);
frag_render_borders(ctx->renderer, texture, blur_frag_size, &shadow_area, clip, false);
frag_render_center(ctx->renderer, texture, blur_frag_size, &shadow_area, clip, false);
+
+ if(!texture_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(texture);
+ }
}
@@ -743,6 +780,7 @@ static void draw_border_generic(lv_draw_sdl_ctx_t * ctx, const lv_area_t * outer
lv_coord_t max_side = LV_MAX4(key.offsets.x1, key.offsets.y1, -key.offsets.x2, -key.offsets.y2);
lv_coord_t frag_size = LV_MAX(radius, max_side);
SDL_Texture * texture = lv_draw_sdl_texture_cache_get(ctx, &key, sizeof(key), NULL);
+ bool texture_in_cache;
if(texture == NULL) {
/* Create a mask texture with size of (frag_size * 2 + FRAG_SPACING) */
const lv_area_t frag_area = {0, 0, frag_size * 2 + FRAG_SPACING - 1, frag_size * 2 + FRAG_SPACING - 1};
@@ -769,7 +807,10 @@ static void draw_border_generic(lv_draw_sdl_ctx_t * ctx, const lv_area_t * outer
lv_draw_mask_remove_id(mask_ids[1]);
lv_draw_mask_remove_id(mask_ids[0]);
SDL_assert(texture);
- lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ texture_in_cache = lv_draw_sdl_texture_cache_put(ctx, &key, sizeof(key), texture);
+ }
+ else {
+ texture_in_cache = true;
}
SDL_Rect outer_rect;
@@ -783,6 +824,11 @@ static void draw_border_generic(lv_draw_sdl_ctx_t * ctx, const lv_area_t * outer
lv_draw_sdl_rect_bg_frag_draw_corners(ctx, texture, frag_size, outer_area, clip, true);
frag_render_borders(renderer, texture, frag_size, outer_area, clip, true);
+
+ if(!texture_in_cache) {
+ LV_LOG_WARN("Texture is not cached, this will impact performance.");
+ SDL_DestroyTexture(texture);
+ }
}
static void frag_render_borders(SDL_Renderer * renderer, SDL_Texture * frag, lv_coord_t frag_size,
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.h b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.h
index 3472af31b..c3262d5f1 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_rect.h
@@ -57,12 +57,36 @@ typedef struct lv_draw_sdl_rect_header_t {
* Other functions
*====================*/
-SDL_Texture * lv_draw_sdl_rect_bg_frag_obtain(lv_draw_sdl_ctx_t * ctx, lv_coord_t radius);
+/**
+ *
+ * @param ctx Drawing context
+ * @param radius Corner radius of the rectangle
+ * @param in_cache Whether the texture has been put in the cache
+ * @return Background fragment texture
+ */
+SDL_Texture * lv_draw_sdl_rect_bg_frag_obtain(lv_draw_sdl_ctx_t * ctx, lv_coord_t radius, bool * in_cache);
+/**
+ *
+ * @param ctx Drawing context
+ * @param grad Gradient info
+ * @param w Width of the rectangle
+ * @param h Height of the rectangle
+ * @param radius Corner radius of the rectangle
+ * @param in_cache Whether the texture has been put in the cache
+ * @return Gradient fragment texture
+ */
SDL_Texture * lv_draw_sdl_rect_grad_frag_obtain(lv_draw_sdl_ctx_t * ctx, const lv_grad_dsc_t * grad, lv_coord_t w,
- lv_coord_t h, lv_coord_t radius);
+ lv_coord_t h, lv_coord_t radius, bool * in_cache);
-SDL_Texture * lv_draw_sdl_rect_grad_strip_obtain(lv_draw_sdl_ctx_t * ctx, const lv_grad_dsc_t * grad);
+/**
+ *
+ * @param ctx Drawing context
+ * @param grad Gradient info
+ * @param in_cache Whether the texture has been put in the cache
+ * @return Gradient strip texture
+ */
+SDL_Texture * lv_draw_sdl_rect_grad_strip_obtain(lv_draw_sdl_ctx_t * ctx, const lv_grad_dsc_t * grad, bool * in_cache);
void lv_draw_sdl_rect_bg_frag_draw_corners(lv_draw_sdl_ctx_t * ctx, SDL_Texture * frag, lv_coord_t frag_size,
const lv_area_t * coords, const lv_area_t * clip, bool full);
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.c b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.c
index 6845addf5..406741783 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.c
@@ -81,12 +81,12 @@ SDL_Texture * lv_draw_sdl_texture_cache_get_with_userdata(lv_draw_sdl_ctx_t * ct
return value->texture;
}
-void lv_draw_sdl_texture_cache_put(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length, SDL_Texture * texture)
+bool lv_draw_sdl_texture_cache_put(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length, SDL_Texture * texture)
{
- lv_draw_sdl_texture_cache_put_advanced(ctx, key, key_length, texture, NULL, NULL, 0);
+ return lv_draw_sdl_texture_cache_put_advanced(ctx, key, key_length, texture, NULL, NULL, 0);
}
-void lv_draw_sdl_texture_cache_put_advanced(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length,
+bool lv_draw_sdl_texture_cache_put_advanced(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length,
SDL_Texture * texture, void * userdata, void userdata_free(void *),
lv_draw_sdl_cache_flag_t flags)
{
@@ -97,22 +97,20 @@ void lv_draw_sdl_texture_cache_put_advanced(lv_draw_sdl_ctx_t * ctx, const void
value->userdata_free = userdata_free;
value->flags = flags;
if(!texture) {
- lv_lru_set(lru, key, key_length, value, 1);
- return;
+ return lv_lru_set(lru, key, key_length, value, 1) == LV_LRU_OK;
}
if(flags & LV_DRAW_SDL_CACHE_FLAG_MANAGED) {
/* Managed texture doesn't count into cache size */
LV_LOG_INFO("cache texture %p", texture);
- lv_lru_set(lru, key, key_length, value, 1);
- return;
+ return lv_lru_set(lru, key, key_length, value, 1) == LV_LRU_OK;
}
Uint32 format;
int access, width, height;
if(SDL_QueryTexture(texture, &format, &access, &width, &height) != 0) {
- return;
+ return false;
}
LV_LOG_INFO("cache texture %p, %d*%d@%dbpp", texture, width, height, SDL_BITSPERPIXEL(format));
- lv_lru_set(lru, key, key_length, value, width * height * SDL_BITSPERPIXEL(format) / 8);
+ return lv_lru_set(lru, key, key_length, value, width * height * SDL_BITSPERPIXEL(format) / 8) == LV_LRU_OK;
}
lv_draw_sdl_cache_key_head_img_t * lv_draw_sdl_texture_img_key_create(const void * src, int32_t frame_id, size_t * size)
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.h b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.h
index 1bbf17cd8..3a799f58b 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.h
@@ -82,9 +82,15 @@ SDL_Texture * lv_draw_sdl_texture_cache_get(lv_draw_sdl_ctx_t * ctx, const void
SDL_Texture * lv_draw_sdl_texture_cache_get_with_userdata(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length,
bool * found, void ** userdata);
-void lv_draw_sdl_texture_cache_put(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length, SDL_Texture * texture);
+/**
+ * @return Whether the texture has been put in the cache
+ */
+bool lv_draw_sdl_texture_cache_put(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length, SDL_Texture * texture);
-void lv_draw_sdl_texture_cache_put_advanced(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length,
+/**
+ * @return Whether the texture has been put in the cache
+ */
+bool lv_draw_sdl_texture_cache_put_advanced(lv_draw_sdl_ctx_t * ctx, const void * key, size_t key_length,
SDL_Texture * texture, void * userdata, void userdata_free(void *),
lv_draw_sdl_cache_flag_t flags);
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c b/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c
index 908909df8..715cdd2c0 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c
@@ -34,6 +34,41 @@
#error "Cannot use DMA2D with LV_COLOR_DEPTH other than 16 or 32"
#endif
+/**********************
+ * STATIC PROTOTYPES
+ **********************/
+static void lv_draw_stm32_dma2d_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
+static void lv_draw_stm32_dma2d_buffer_copy(lv_draw_ctx_t * draw_ctx,
+ void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area,
+ void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area);
+static void lv_draw_stm32_dma2d_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
+ const lv_area_t * coords, const uint8_t * src_buf, lv_img_cf_t color_format);
+static dma2d_color_format_t lv_color_format_to_dma2d_color_format(lv_img_cf_t color_format);
+static lv_point_t lv_area_get_offset(const lv_area_t * area1, const lv_area_t * area2);
+
+LV_STM32_DMA2D_STATIC void lv_gpu_stm32_dma2d_wait_cb(lv_draw_ctx_t * draw_ctx);
+LV_STM32_DMA2D_STATIC lv_res_t lv_draw_stm32_dma2d_img(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
+ const lv_area_t * src_area, const void * src);
+LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_fill(const lv_color_t * dst_buf, lv_coord_t dst_stride,
+ const lv_area_t * draw_area, lv_color_t color, lv_opa_t opa);
+LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_map(const lv_color_t * dest_buf, lv_coord_t dest_stride,
+ const lv_area_t * draw_area, const void * src_buf, lv_coord_t src_stride, const lv_point_t * src_offset, lv_opa_t opa,
+ dma2d_color_format_t src_color_format, bool ignore_src_alpha);
+LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_paint(const lv_color_t * dst_buf, lv_coord_t dst_stride,
+ const lv_area_t * draw_area, const lv_opa_t * mask_buf, lv_coord_t mask_stride, const lv_point_t * mask_offset,
+ lv_color_t color, lv_opa_t opa);
+LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_copy_buffer(const lv_color_t * dest_buf, lv_coord_t dest_stride,
+ const lv_area_t * draw_area, const lv_color_t * src_buf, lv_coord_t src_stride, const lv_point_t * src_offset);
+LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_await_dma_transfer_finish(lv_disp_drv_t * disp_drv);
+LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_start_dma_transfer(void);
+LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_invalidate_cache(uint32_t address, lv_coord_t offset,
+ lv_coord_t width, lv_coord_t height, uint8_t pixel_size);
+LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_clean_cache(uint32_t address, lv_coord_t offset, lv_coord_t width,
+ lv_coord_t height, uint8_t pixel_size);
+LV_STM32_DMA2D_STATIC bool _lv_gpu_stm32_dwt_init(void);
+LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dwt_reset(void);
+LV_STM32_DMA2D_STATIC uint32_t _lv_gpu_stm32_dwt_get_us(void);
+
static bool isDma2dInProgess = false; // indicates whether DMA2D transfer *initiated here* is in progress
/**
@@ -276,9 +311,8 @@ static dma2d_color_format_t lv_color_format_to_dma2d_color_format(lv_img_cf_t co
}
}
-static lv_res_t lv_draw_stm32_dma2d_img(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
- const lv_area_t * src_area,
- const void * src)
+LV_STM32_DMA2D_STATIC lv_res_t lv_draw_stm32_dma2d_img(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
+ const lv_area_t * src_area, const void * src)
{
//if(lv_img_src_get_type(src) != LV_IMG_SRC_VARIABLE) return LV_RES_INV;
return LV_RES_INV;
@@ -315,7 +349,7 @@ static lv_res_t lv_draw_stm32_dma2d_img(lv_draw_ctx_t * draw_ctx, const lv_draw_
return LV_RES_OK;
}
-static void lv_gpu_stm32_dma2d_wait_cb(lv_draw_ctx_t * draw_ctx)
+LV_STM32_DMA2D_STATIC void lv_gpu_stm32_dma2d_wait_cb(lv_draw_ctx_t * draw_ctx)
{
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
_lv_gpu_stm32_dma2d_await_dma_transfer_finish(disp->driver);
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h b/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h
index 5ecce6deb..0a970426d 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h
+++ b/lib/libesp32_lvgl/lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h
@@ -53,40 +53,6 @@ struct _lv_disp_drv_t;
void lv_draw_stm32_dma2d_init(void);
void lv_draw_stm32_dma2d_ctx_init(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx);
void lv_draw_stm32_dma2d_ctx_deinit(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx);
-static void lv_draw_stm32_dma2d_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
-static void lv_draw_stm32_dma2d_buffer_copy(lv_draw_ctx_t * draw_ctx,
- void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area,
- void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area);
-static lv_res_t lv_draw_stm32_dma2d_img(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
- const lv_area_t * src_area, const void * src);
-static void lv_gpu_stm32_dma2d_wait_cb(lv_draw_ctx_t * draw_ctx);
-static void lv_draw_stm32_dma2d_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
- const lv_area_t * coords, const uint8_t * src_buf, lv_img_cf_t color_format);
-static dma2d_color_format_t lv_color_format_to_dma2d_color_format(lv_img_cf_t color_format);
-static lv_point_t lv_area_get_offset(const lv_area_t * area1, const lv_area_t * area2);
-
-/**********************
- * STATIC PROTOTYPES
- **********************/
-LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_fill(const lv_color_t * dst_buf, lv_coord_t dst_stride,
- const lv_area_t * draw_area, lv_color_t color, lv_opa_t opa);
-LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_map(const lv_color_t * dest_buf, lv_coord_t dest_stride,
- const lv_area_t * draw_area, const void * src_buf, lv_coord_t src_stride, const lv_point_t * src_offset, lv_opa_t opa,
- dma2d_color_format_t src_color_format, bool ignore_src_alpha);
-LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_paint(const lv_color_t * dst_buf, lv_coord_t dst_stride,
- const lv_area_t * draw_area, const lv_opa_t * mask_buf, lv_coord_t mask_stride, const lv_point_t * mask_offset,
- lv_color_t color, lv_opa_t opa);
-LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_copy_buffer(const lv_color_t * dest_buf, lv_coord_t dest_stride,
- const lv_area_t * draw_area, const lv_color_t * src_buf, lv_coord_t src_stride, const lv_point_t * src_offset);
-LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_await_dma_transfer_finish(lv_disp_drv_t * disp_drv);
-LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_start_dma_transfer(void);
-LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_invalidate_cache(uint32_t address, lv_coord_t offset,
- lv_coord_t width, lv_coord_t height, uint8_t pixel_size);
-LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_clean_cache(uint32_t address, lv_coord_t offset, lv_coord_t width,
- lv_coord_t height, uint8_t pixel_size);
-LV_STM32_DMA2D_STATIC bool _lv_gpu_stm32_dwt_init(void);
-LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dwt_reset(void);
-LV_STM32_DMA2D_STATIC uint32_t _lv_gpu_stm32_dwt_get_us(void);
/**********************
* MACROS
diff --git a/lib/libesp32_lvgl/lvgl/src/draw/sw/lv_draw_sw_blend.c b/lib/libesp32_lvgl/lvgl/src/draw/sw/lv_draw_sw_blend.c
index bff0a8f19..a31d64a88 100644
--- a/lib/libesp32_lvgl/lvgl/src/draw/sw/lv_draw_sw_blend.c
+++ b/lib/libesp32_lvgl/lvgl/src/draw/sw/lv_draw_sw_blend.c
@@ -430,7 +430,7 @@ static inline void set_px_argb_blend(uint8_t * buf, lv_color_t color, lv_opa_t o
/*Set the result color*/
#if LV_COLOR_DEPTH == 8
- buf[0] = res_color.full;
+ buf[0] = last_res_color.full;
#elif LV_COLOR_DEPTH == 16
buf[0] = last_res_color.full & 0xff;
buf[1] = last_res_color.full >> 8;
diff --git a/lib/libesp32_lvgl/lvgl/src/extra/layouts/flex/lv_flex.c b/lib/libesp32_lvgl/lvgl/src/extra/layouts/flex/lv_flex.c
index a53c95e88..8f0b4d290 100644
--- a/lib/libesp32_lvgl/lvgl/src/extra/layouts/flex/lv_flex.c
+++ b/lib/libesp32_lvgl/lvgl/src/extra/layouts/flex/lv_flex.c
@@ -97,6 +97,7 @@ void lv_flex_init(void)
LV_STYLE_FLEX_MAIN_PLACE = lv_style_register_prop(LV_STYLE_PROP_LAYOUT_REFR);
LV_STYLE_FLEX_CROSS_PLACE = lv_style_register_prop(LV_STYLE_PROP_LAYOUT_REFR);
LV_STYLE_FLEX_TRACK_PLACE = lv_style_register_prop(LV_STYLE_PROP_LAYOUT_REFR);
+ LV_STYLE_FLEX_GROW = lv_style_register_prop(LV_STYLE_PROP_LAYOUT_REFR);
}
void lv_obj_set_flex_flow(lv_obj_t * obj, lv_flex_flow_t flow)
diff --git a/lib/libesp32_lvgl/lvgl/src/extra/libs/png/lv_png.c b/lib/libesp32_lvgl/lvgl/src/extra/libs/png/lv_png.c
index d067ef508..9228e29c8 100644
--- a/lib/libesp32_lvgl/lvgl/src/extra/libs/png/lv_png.c
+++ b/lib/libesp32_lvgl/lvgl/src/extra/libs/png/lv_png.c
@@ -103,13 +103,33 @@ static lv_res_t decoder_info(struct _lv_img_decoder_t * decoder, const void * sr
else if(src_type == LV_IMG_SRC_VARIABLE) {
const lv_img_dsc_t * img_dsc = src;
const uint32_t data_size = img_dsc->data_size;
+ const uint32_t * size = ((uint32_t *)img_dsc->data) + 4;
const uint8_t magic[] = {0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a};
if(data_size < sizeof(magic)) return LV_RES_INV;
if(memcmp(magic, img_dsc->data, sizeof(magic))) return LV_RES_INV;
header->always_zero = 0;
- header->cf = img_dsc->header.cf; /*Save the color format*/
- header->w = img_dsc->header.w; /*Save the color width*/
- header->h = img_dsc->header.h; /*Save the color height*/
+
+ if(img_dsc->header.cf) {
+ header->cf = img_dsc->header.cf; /*Save the color format*/
+ }
+ else {
+ header->cf = LV_IMG_CF_TRUE_COLOR_ALPHA;
+ }
+
+ if(img_dsc->header.w) {
+ header->w = img_dsc->header.w; /*Save the image width*/
+ }
+ else {
+ header->w = (lv_coord_t)((size[0] & 0xff000000) >> 24) + ((size[0] & 0x00ff0000) >> 8);
+ }
+
+ if(img_dsc->header.h) {
+ header->h = img_dsc->header.h; /*Save the color height*/
+ }
+ else {
+ header->h = (lv_coord_t)((size[1] & 0xff000000) >> 24) + ((size[1] & 0x00ff0000) >> 8);
+ }
+
return LV_RES_OK;
}
@@ -142,13 +162,13 @@ static lv_res_t decoder_open(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t *
error = lodepng_load_file(&png_data, &png_data_size, fn); /*Load the file*/
if(error) {
- LV_LOG_WARN("error %u: %s\n", error, lodepng_error_text(error));
+ LV_LOG_WARN("error %" LV_PRIu32 ": %s\n", error, lodepng_error_text(error));
return LV_RES_INV;
}
/*Decode the PNG image*/
- uint32_t png_width; /*Will be the width of the decoded image*/
- uint32_t png_height; /*Will be the width of the decoded image*/
+ unsigned png_width; /*Will be the width of the decoded image*/
+ unsigned png_height; /*Will be the width of the decoded image*/
/*Decode the loaded image in ARGB8888 */
error = lodepng_decode32(&img_data, &png_width, &png_height, png_data, png_data_size);
@@ -157,7 +177,7 @@ static lv_res_t decoder_open(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t *
if(img_data != NULL) {
lv_mem_free(img_data);
}
- LV_LOG_WARN("error %u: %s\n", error, lodepng_error_text(error));
+ LV_LOG_WARN("error %" LV_PRIu32 ": %s\n", error, lodepng_error_text(error));
return LV_RES_INV;
}
@@ -170,8 +190,8 @@ static lv_res_t decoder_open(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t *
/*If it's a PNG file in a C array...*/
else if(dsc->src_type == LV_IMG_SRC_VARIABLE) {
const lv_img_dsc_t * img_dsc = dsc->src;
- uint32_t png_width; /*No used, just required by he decoder*/
- uint32_t png_height; /*No used, just required by he decoder*/
+ unsigned png_width; /*No used, just required by he decoder*/
+ unsigned png_height; /*No used, just required by he decoder*/
/*Decode the image in ARGB8888 */
error = lodepng_decode32(&img_data, &png_width, &png_height, img_dsc->data, img_dsc->data_size);
diff --git a/lib/libesp32_lvgl/lvgl/src/extra/lv_extra.c b/lib/libesp32_lvgl/lvgl/src/extra/lv_extra.c
index e7c604103..0b5000240 100644
--- a/lib/libesp32_lvgl/lvgl/src/extra/lv_extra.c
+++ b/lib/libesp32_lvgl/lvgl/src/extra/lv_extra.c
@@ -78,16 +78,14 @@ void lv_extra_init(void)
lv_bmp_init();
#endif
-// TASMOTA Specific, the initialization is done in Tasmota code to adjust with PSRAM
-
-// #if LV_USE_FREETYPE
-// /*Init freetype library*/
-// # if LV_FREETYPE_CACHE_SIZE >= 0
-// lv_freetype_init(LV_FREETYPE_CACHE_FT_FACES, LV_FREETYPE_CACHE_FT_SIZES, LV_FREETYPE_CACHE_SIZE);
-// # else
-// lv_freetype_init(0, 0, 0);
-// # endif
-// #endif
+#if LV_USE_FREETYPE
+ /*Init freetype library*/
+# if LV_FREETYPE_CACHE_SIZE >= 0
+ lv_freetype_init(LV_FREETYPE_CACHE_FT_FACES, LV_FREETYPE_CACHE_FT_SIZES, LV_FREETYPE_CACHE_SIZE);
+# else
+ lv_freetype_init(0, 0, 0);
+# endif
+#endif
}
/**********************
diff --git a/lib/libesp32_lvgl/lvgl/src/extra/widgets/chart/lv_chart.c b/lib/libesp32_lvgl/lvgl/src/extra/widgets/chart/lv_chart.c
index c5afb8b94..2d53adb20 100644
--- a/lib/libesp32_lvgl/lvgl/src/extra/widgets/chart/lv_chart.c
+++ b/lib/libesp32_lvgl/lvgl/src/extra/widgets/chart/lv_chart.c
@@ -1382,8 +1382,10 @@ static void draw_y_ticks(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx, lv_chart_axis
lv_chart_tick_dsc_t * t = get_tick_gsc(obj, axis);
- if(t->major_cnt <= 1) return;
if(!t->label_en && !t->major_len && !t->minor_len) return;
+ if(t->major_cnt <= 1) return;
+ uint32_t total_tick_num = (t->major_cnt - 1) * (t->minor_cnt);
+ if(total_tick_num == 0) return;
uint8_t sec_axis = axis == LV_CHART_AXIS_PRIMARY_Y ? 0 : 1;
@@ -1433,7 +1435,6 @@ static void draw_y_ticks(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx, lv_chart_axis
part_draw_dsc.line_dsc = &line_dsc;
part_draw_dsc.label_dsc = &label_dsc;
- uint32_t total_tick_num = (t->major_cnt - 1) * (t->minor_cnt);
for(i = 0; i <= total_tick_num; i++) {
/*draw a line at moving y position*/
p2.y = p1.y = y_ofs + (int32_t)((int32_t)(h - line_dsc.width) * i) / total_tick_num;
@@ -1514,6 +1515,8 @@ static void draw_x_ticks(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx, lv_chart_axis
lv_chart_tick_dsc_t * t = get_tick_gsc(obj, axis);
if(t->major_cnt <= 1) return;
if(!t->label_en && !t->major_len && !t->minor_len) return;
+ uint32_t total_tick_num = (t->major_cnt - 1) * (t->minor_cnt);
+ if(total_tick_num == 0) return;
uint32_t i;
lv_point_t p1;
@@ -1571,7 +1574,6 @@ static void draw_x_ticks(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx, lv_chart_axis
}
p1.y = y_ofs;
- uint32_t total_tick_num = (t->major_cnt - 1) * t->minor_cnt;
for(i = 0; i <= total_tick_num; i++) { /*one extra loop - it may not exist in the list, empty label*/
bool major = false;
if(i % t->minor_cnt == 0) major = true;
diff --git a/lib/libesp32_lvgl/lvgl/src/extra/widgets/msgbox/lv_msgbox.c b/lib/libesp32_lvgl/lvgl/src/extra/widgets/msgbox/lv_msgbox.c
index 8db5df7ee..54d65e353 100644
--- a/lib/libesp32_lvgl/lvgl/src/extra/widgets/msgbox/lv_msgbox.c
+++ b/lib/libesp32_lvgl/lvgl/src/extra/widgets/msgbox/lv_msgbox.c
@@ -106,6 +106,9 @@ lv_obj_t * lv_msgbox_create(lv_obj_t * parent, const char * title, const char *
}
mbox->content = lv_obj_class_create_obj(&lv_msgbox_content_class, obj);
+ LV_ASSERT_MALLOC(mbox->content);
+ if(mbox->content == NULL) return NULL;
+ lv_obj_class_init_obj(mbox->content);
bool has_txt = txt && strlen(txt) > 0;
if(has_txt) {
diff --git a/lib/libesp32_lvgl/lvgl/src/extra/widgets/tabview/lv_tabview.c b/lib/libesp32_lvgl/lvgl/src/extra/widgets/tabview/lv_tabview.c
index 81addc663..b77e0be3e 100755
--- a/lib/libesp32_lvgl/lvgl/src/extra/widgets/tabview/lv_tabview.c
+++ b/lib/libesp32_lvgl/lvgl/src/extra/widgets/tabview/lv_tabview.c
@@ -308,7 +308,7 @@ static void btns_value_changed_event_cb(lv_event_t * e)
lv_obj_t * tv = lv_obj_get_parent(btns);
uint32_t id = lv_btnmatrix_get_selected_btn(btns);
- lv_tabview_set_act(tv, id, LV_ANIM_ON);
+ lv_tabview_set_act(tv, id, LV_ANIM_OFF);
}
static void cont_scroll_end_event_cb(lv_event_t * e)
diff --git a/lib/libesp32_lvgl/lvgl/src/hal/lv_hal_disp.c b/lib/libesp32_lvgl/lvgl/src/hal/lv_hal_disp.c
index 10640a28a..0cebc3354 100644
--- a/lib/libesp32_lvgl/lvgl/src/hal/lv_hal_disp.c
+++ b/lib/libesp32_lvgl/lvgl/src/hal/lv_hal_disp.c
@@ -25,6 +25,7 @@
#include "../draw/arm2d/lv_gpu_arm2d.h"
#include "../draw/nxp/vglite/lv_draw_vglite.h"
#include "../draw/nxp/pxp/lv_draw_pxp.h"
+#include "../draw/renesas/lv_gpu_d2_ra6m3.h"
#if LV_USE_THEME_DEFAULT
#include "../extra/themes/default/lv_theme_default.h"
@@ -95,8 +96,11 @@ void lv_disp_drv_init(lv_disp_drv_t * driver)
driver->dpi = LV_DPI_DEF;
driver->color_chroma_key = LV_COLOR_CHROMA_KEY;
-
-#if LV_USE_GPU_STM32_DMA2D
+#if LV_USE_GPU_RA6M3_G2D
+ driver->draw_ctx_init = lv_draw_ra6m3_2d_ctx_init;
+ driver->draw_ctx_deinit = lv_draw_ra6m3_2d_ctx_init;
+ driver->draw_ctx_size = sizeof(lv_draw_ra6m3_dma2d_ctx_t);
+#elif LV_USE_GPU_STM32_DMA2D
driver->draw_ctx_init = lv_draw_stm32_dma2d_ctx_init;
driver->draw_ctx_deinit = lv_draw_stm32_dma2d_ctx_init;
driver->draw_ctx_size = sizeof(lv_draw_stm32_dma2d_ctx_t);
diff --git a/lib/libesp32_lvgl/lvgl/src/lv_conf_internal.h b/lib/libesp32_lvgl/lvgl/src/lv_conf_internal.h
index 4cd3895f2..a625ba960 100644
--- a/lib/libesp32_lvgl/lvgl/src/lv_conf_internal.h
+++ b/lib/libesp32_lvgl/lvgl/src/lv_conf_internal.h
@@ -445,6 +445,26 @@
#endif
#endif
+/*Enable RA6M3 G2D GPU*/
+#ifndef LV_USE_GPU_RA6M3_G2D
+ #ifdef CONFIG_LV_USE_GPU_RA6M3_G2D
+ #define LV_USE_GPU_RA6M3_G2D CONFIG_LV_USE_GPU_RA6M3_G2D
+ #else
+ #define LV_USE_GPU_RA6M3_G2D 0
+ #endif
+#endif
+#if LV_USE_GPU_RA6M3_G2D
+ /*include path of target processor
+ e.g. "hal_data.h"*/
+ #ifndef LV_GPU_RA6M3_G2D_INCLUDE
+ #ifdef CONFIG_LV_GPU_RA6M3_G2D_INCLUDE
+ #define LV_GPU_RA6M3_G2D_INCLUDE CONFIG_LV_GPU_RA6M3_G2D_INCLUDE
+ #else
+ #define LV_GPU_RA6M3_G2D_INCLUDE "hal_data.h"
+ #endif
+ #endif
+#endif
+
/*Use SWM341's DMA2D GPU*/
#ifndef LV_USE_GPU_SWM341_DMA2D
#ifdef CONFIG_LV_USE_GPU_SWM341_DMA2D
diff --git a/lib/libesp32_lvgl/lvgl/src/misc/lv_bidi.c b/lib/libesp32_lvgl/lvgl/src/misc/lv_bidi.c
index 3dc3ce7f1..70af1c4b4 100644
--- a/lib/libesp32_lvgl/lvgl/src/misc/lv_bidi.c
+++ b/lib/libesp32_lvgl/lvgl/src/misc/lv_bidi.c
@@ -376,7 +376,6 @@ static bool lv_bidi_letter_is_weak(uint32_t letter)
*/
static bool lv_bidi_letter_is_rtl(uint32_t letter)
{
- if(letter >= 0x5d0 && letter <= 0x5ea) return true;
if(letter == 0x202E) return true; /*Unicode of LV_BIDI_RLO*/
/*Check for Persian and Arabic characters [https://en.wikipedia.org/wiki/Arabic_script_in_Unicode]*/
@@ -384,6 +383,10 @@ static bool lv_bidi_letter_is_rtl(uint32_t letter)
if(letter >= 0xFB50 && letter <= 0xFDFF) return true;
if(letter >= 0xFE70 && letter <= 0xFEFF) return true;
+ /*Check for Hebrew characters [https://en.wikipedia.org/wiki/Unicode_and_HTML_for_the_Hebrew_alphabet]*/
+ if(letter >= 0x590 && letter <= 0x5FF) return true;
+ if(letter >= 0xFB1D && letter <= 0xFB4F) return true;
+
return false;
}
diff --git a/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.c b/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.c
index 92a4d2fe3..923f19afb 100644
--- a/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.c
+++ b/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.c
@@ -23,7 +23,7 @@
#define MY_CLASS &lv_btnmatrix_class
#define BTN_EXTRA_CLICK_AREA_MAX (LV_DPI_DEF / 10)
-#define LV_BTNMATRIX_WIDTH_MASK 0x0007
+#define LV_BTNMATRIX_WIDTH_MASK 0x000F
/**********************
* TYPEDEFS
@@ -520,6 +520,8 @@ static void lv_btnmatrix_event(const lv_obj_class_t * class_p, lv_event_t * e)
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
}
else if(code == LV_EVENT_FOCUSED) {
+ if(btnm->btn_cnt == 0) return;
+
lv_indev_t * indev = lv_event_get_param(e);
lv_indev_type_t indev_type = lv_indev_get_type(indev);
@@ -563,9 +565,15 @@ static void lv_btnmatrix_event(const lv_obj_class_t * class_p, lv_event_t * e)
else btnm->btn_id_sel++;
if(btnm->btn_id_sel >= btnm->btn_cnt) btnm->btn_id_sel = 0;
+ uint16_t btn_id_start = btnm->btn_id_sel;
while(button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) || button_is_inactive(btnm->ctrl_bits[btnm->btn_id_sel])) {
btnm->btn_id_sel++;
if(btnm->btn_id_sel >= btnm->btn_cnt) btnm->btn_id_sel = 0;
+
+ if(btnm->btn_id_sel == btn_id_start) {
+ btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
+ break;
+ }
}
}
else if(c == LV_KEY_LEFT) {
@@ -574,9 +582,15 @@ static void lv_btnmatrix_event(const lv_obj_class_t * class_p, lv_event_t * e)
if(btnm->btn_id_sel == 0) btnm->btn_id_sel = btnm->btn_cnt - 1;
else if(btnm->btn_id_sel > 0) btnm->btn_id_sel--;
+ uint16_t btn_id_start = btnm->btn_id_sel;
while(button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) || button_is_inactive(btnm->ctrl_bits[btnm->btn_id_sel])) {
if(btnm->btn_id_sel > 0) btnm->btn_id_sel--;
else btnm->btn_id_sel = btnm->btn_cnt - 1;
+
+ if(btnm->btn_id_sel == btn_id_start) {
+ btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
+ break;
+ }
}
}
else if(c == LV_KEY_DOWN) {
@@ -586,7 +600,10 @@ static void lv_btnmatrix_event(const lv_obj_class_t * class_p, lv_event_t * e)
btnm->btn_id_sel = 0;
while(button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) || button_is_inactive(btnm->ctrl_bits[btnm->btn_id_sel])) {
btnm->btn_id_sel++;
- if(btnm->btn_id_sel >= btnm->btn_cnt) btnm->btn_id_sel = 0;
+ if(btnm->btn_id_sel >= btnm->btn_cnt) {
+ btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
+ break;
+ }
}
}
else {
@@ -614,7 +631,10 @@ static void lv_btnmatrix_event(const lv_obj_class_t * class_p, lv_event_t * e)
btnm->btn_id_sel = 0;
while(button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) || button_is_inactive(btnm->ctrl_bits[btnm->btn_id_sel])) {
btnm->btn_id_sel++;
- if(btnm->btn_id_sel >= btnm->btn_cnt) btnm->btn_id_sel = 0;
+ if(btnm->btn_id_sel >= btnm->btn_cnt) {
+ btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
+ break;
+ }
}
}
else {
diff --git a/pio-tools/add_c_flags.py b/pio-tools/add_c_flags.py
index 0c39e777f..40d8a3937 100644
--- a/pio-tools/add_c_flags.py
+++ b/pio-tools/add_c_flags.py
@@ -2,3 +2,6 @@ Import("env")
# General options that are passed to the C compiler (C only; not C++).
env.Append(CFLAGS=["-Wno-discarded-qualifiers", "-Wno-implicit-function-declaration"])
+
+# General options that are passed to the C++ compiler
+env.Append(CXXFLAGS=["-Wno-volatile"])
diff --git a/pio-tools/get_flash_size.py b/pio-tools/get_flash_size.py
new file mode 100644
index 000000000..c0480d854
--- /dev/null
+++ b/pio-tools/get_flash_size.py
@@ -0,0 +1,45 @@
+from os.path import join
+import subprocess
+from SCons.Script import COMMAND_LINE_TARGETS
+
+Import("env")
+env = DefaultEnvironment()
+platform = env.PioPlatform()
+
+if "upload" in COMMAND_LINE_TARGETS:
+
+ def esp32_detect_flashsize():
+ esptoolpy = join(platform.get_package_dir("tool-esptoolpy") or "", "esptool.py")
+ esptoolpy_flags = ["flash_id"]
+ esptoolpy_cmd = [env["PYTHONEXE"], esptoolpy] + esptoolpy_flags
+ try:
+ output = subprocess.run(esptoolpy_cmd, capture_output=True).stdout.splitlines()
+ for l in output:
+ if l.decode().startswith("Detected flash size: "):
+ size = (l.decode().split(": ")[1])
+ print("Did get flash size:",size)
+ return size, True
+ return "4MB",False
+ except subprocess.CalledProcessError as exc:
+ print("Did get chip info failed with " + str(exc))
+ return "4MB",False
+
+ size, overridden = esp32_detect_flashsize()
+ old_flash_size = env.BoardConfig().get("upload.flash_size")
+ old_maximum_size = env.BoardConfig().get("upload.maximum_size")
+ new_maximum_size = int(size.split("MB")[0]) * 0x100000
+
+ if new_maximum_size > old_maximum_size:
+
+ extra_flags = env.BoardConfig().get("build.extra_flags").split(" ")
+ new_flags = ""
+ for flag in extra_flags:
+ if flag.startswith("-DESP32"):
+ flag = f"-DESP32_{size}"
+ new_flags += flag + " "
+ env.BoardConfig().update("build.extra_flags",new_flags)
+ env.BoardConfig().update("upload.flash_size",size)
+
+ env.BoardConfig().update("upload.maximum_size", new_maximum_size)
+
+ env.Replace(TASMOTA_flash_size=size)
\ No newline at end of file
diff --git a/pio-tools/metrics-firmware.py b/pio-tools/metrics-firmware.py
index 0ecdb3f36..623256245 100644
--- a/pio-tools/metrics-firmware.py
+++ b/pio-tools/metrics-firmware.py
@@ -7,7 +7,7 @@ from os.path import join
def firm_metrics(source, target, env):
if env["PIOPLATFORM"] == "espressif32":
import tasmota_metrics
- env.Execute("$PYTHONEXE -m tasmota_metrics " + str(tasmotapiolib.get_source_map_path(env).resolve()))
+ env.Execute("$PYTHONEXE -m tasmota_metrics \"" + str(tasmotapiolib.get_source_map_path(env).resolve()) + "\"")
elif env["PIOPLATFORM"] == "espressif8266":
map_file = join(env.subst("$BUILD_DIR")) + os.sep + "firmware.map"
with open(map_file,'r') as f:
@@ -22,4 +22,4 @@ def firm_metrics(source, target, env):
print("Used static IRAM:",used_bytes,"bytes (",remaining_bytes,"remain,",percentage,"% used)")
-env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin",firm_metrics)
\ No newline at end of file
+env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin",firm_metrics)
diff --git a/pio-tools/override_copy.py b/pio-tools/override_copy.py
index 53a2762a5..7a45512a8 100644
--- a/pio-tools/override_copy.py
+++ b/pio-tools/override_copy.py
@@ -1,8 +1,13 @@
Import('env')
import os
+import pathlib
+from os.path import join
import shutil
+if " " in join(pathlib.Path(env["PROJECT_DIR"])):
+ print ("\u001b[31;1m*** Whitespace(s) in project path, unexpected issues/errors can happen ***\u001b[0m")
+
# copy tasmota/user_config_override_sample.h to tasmota/user_config_override.h
if os.path.isfile("tasmota/user_config_override.h"):
print ("*** use provided user_config_override.h as planned ***")
diff --git a/pio-tools/post_esp32.py b/pio-tools/post_esp32.py
index 9f8a2f637..facff33e7 100644
--- a/pio-tools/post_esp32.py
+++ b/pio-tools/post_esp32.py
@@ -1,6 +1,8 @@
# From: https://github.com/letscontrolit/ESPEasy/blob/mega/tools/pio/post_esp32.py
# Thanks TD-er :)
+# Thanks @staars for safeboot and auto resizing LittleFS code and enhancements
+
# Combines separate bin files with their respective offsets into a single file
# This single file must then be flashed to an ESP32 node with 0 offset.
#
@@ -29,6 +31,8 @@ import csv
import requests
import shutil
import subprocess
+import codecs
+from SCons.Script import COMMAND_LINE_TARGETS
sys.path.append(join(platform.get_package_dir("tool-esptoolpy")))
import esptool
@@ -52,6 +56,30 @@ else:
variants_dir = join(FRAMEWORK_DIR, "variants", "tasmota")
+def patch_partitions_bin(size_string):
+ partition_bin_path = join(env.subst("$BUILD_DIR"),"partitions.bin")
+ with open(partition_bin_path, 'r+b') as file:
+ binary_data = file.read(0xb0)
+ import hashlib
+ bin_list = list(binary_data)
+ size = codecs.decode(size_string[2:], 'hex_codec') # 0xc50000 -> [c5,00,00]
+ bin_list[0x8a] = size[0]
+ bin_list[0x8b] = size[1]
+ result = hashlib.md5(bytes(bin_list[0:0xa0]))
+ partition_data = bytes(bin_list) + result.digest()
+ file.seek(0)
+ file.write(partition_data)
+ print("New partition hash:",result.digest().hex())
+
+def esp32_detect_flashsize():
+ if not "upload" in COMMAND_LINE_TARGETS:
+ return "4MB",False
+ size = env.get("TASMOTA_flash_size")
+ if size == None:
+ return "4MB",False
+ else:
+ return size,True
+
def esp32_create_chip_string(chip):
tasmota_platform = env.subst("$BUILD_DIR").split(os.path.sep)[-1]
tasmota_platform = tasmota_platform.split('-')[0]
@@ -120,6 +148,8 @@ def esp32_create_combined_bin(source, target, env):
# factory_offset = -1 # error code value - currently unused
app_offset = 0x10000 # default value for "old" scheme
fs_offset = -1 # error code value
+ flash_size_from_esp, flash_size_was_overridden = esp32_detect_flashsize()
+
with open(env.BoardConfig().get("build.partitions")) as csv_file:
print("Read partitions from ",env.BoardConfig().get("build.partitions"))
csv_reader = csv.reader(csv_file, delimiter=',')
@@ -136,7 +166,13 @@ def esp32_create_combined_bin(source, target, env):
# elif(row[0] == 'factory'):
# factory_offset = int(row[3],base=16)
elif(row[0] == 'spiffs'):
- if esp32_build_filesystem(row[4]):
+ partition_size = row[4]
+ if flash_size_was_overridden:
+ print(f"Will override fixed FS partition size from {env.BoardConfig().get('build.partitions')}: {partition_size} ...")
+ partition_size = hex(int(flash_size_from_esp.split("MB")[0]) * 0x100000 - int(row[3],base=16))
+ print(f"... with computed maximum size from connected {env.get('BOARD_MCU')}: {partition_size}")
+ patch_partitions_bin(partition_size)
+ if esp32_build_filesystem(partition_size):
fs_offset = int(row[3],base=16)
@@ -147,16 +183,19 @@ def esp32_create_combined_bin(source, target, env):
tasmota_platform = esp32_create_chip_string(chip)
if "-DUSE_USB_CDC_CONSOLE" in env.BoardConfig().get("build.extra_flags") and "cdc" not in tasmota_platform:
- tasmota_platform += "cdc"
+ tasmota_platform += "cdc"
print("WARNING: board definition uses CDC configuration, but environment name does not -> changing tasmota safeboot binary to:", tasmota_platform + "-safeboot.bin")
-
+
if not os.path.exists(variants_dir):
os.makedirs(variants_dir)
if("safeboot" in firmware_name):
esp32_copy_new_safeboot_bin(tasmota_platform,firmware_name)
else:
esp32_fetch_safeboot_bin(tasmota_platform)
+
flash_size = env.BoardConfig().get("upload.flash_size", "4MB")
+ if flash_size_was_overridden:
+ flash_size = flash_size_from_esp
flash_freq = env.BoardConfig().get("build.f_flash", "40000000L")
flash_freq = str(flash_freq).replace("L", "")
flash_freq = str(int(int(flash_freq) / 1000000)) + "m"
@@ -225,4 +264,4 @@ def esp32_create_combined_bin(source, target, env):
esptool.main(cmd)
-env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", esp32_create_combined_bin)
+env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", esp32_create_combined_bin)
\ No newline at end of file
diff --git a/pio-tools/pre_source_dir.py b/pio-tools/pre_source_dir.py
index 6027d2ba9..8ff1e8753 100644
--- a/pio-tools/pre_source_dir.py
+++ b/pio-tools/pre_source_dir.py
@@ -10,3 +10,8 @@ def FindInoNodes(env):
)
env.AddMethod(FindInoNodes)
+
+# Pass flashmode at build time to macro
+tasmota_flash_mode = "-DCONFIG_TASMOTA_FLASHMODE_" + (env.BoardConfig().get("build.flash_mode", "dio")).upper()
+env.Append(CXXFLAGS=[tasmota_flash_mode])
+print(tasmota_flash_mode)
diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini
index 7d9b1d9e8..97290c0cd 100644
--- a/platformio_override_sample.ini
+++ b/platformio_override_sample.ini
@@ -28,6 +28,7 @@ default_envs =
; tasmota-zbbridge
; tasmota-ir
; tasmota32
+; tasmota32-arduino30
; tasmota32-zbbrdgpro
; tasmota32-bluetooth
; tasmota32-webcam
diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini
index f6a4ec000..b150a58c9 100644
--- a/platformio_tasmota32.ini
+++ b/platformio_tasmota32.ini
@@ -15,7 +15,7 @@ build_flags = ${esp_defaults.build_flags}
-Wno-switch-unreachable
-Wno-stringop-overflow
-fno-exceptions
- -flto
+ -flto=auto
-DBUFFER_LENGTH=128
-DHTTP_UPLOAD_BUFLEN=2048
-DMQTT_MAX_PACKET_SIZE=1200
@@ -37,12 +37,33 @@ build_flags = ${esp_defaults.build_flags}
-Wl,--wrap=_Z11analogWritehi ; `analogWrite(unsigned char, int)` use the Tasmota version of analogWrite for deeper integration and phase control
-Wl,--wrap=ledcReadFreq ; `uint32_t ledcReadFreq(uint8_t chan)`
extra_scripts = pre:pio-tools/add_c_flags.py
+ pre:pio-tools/get_flash_size.py
pre:pio-tools/gen-berry-structures.py
post:pio-tools/post_esp32.py
${esp_defaults.extra_scripts}
[core32]
-platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.04/platform-espressif32.zip
+platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.07.00/platform-espressif32.zip
platform_packages =
build_unflags = ${esp32_defaults.build_unflags}
build_flags = ${esp32_defaults.build_flags}
+
+[safeboot_flags]
+lib_ignore = ESP Mail Client
+ IRremoteESP8266
+ NeoPixelBus
+ OneWire
+ MFRC522
+ universal display Library
+ ESP8266Audio
+ ESP8266SAM
+ FFat
+ Berry
+ Berry mapping to C
+ Berry Tasmota mapping
+ Berry int64 implementation for 32 bits architecture
+ Berry Matter protocol implementation
+ Micro-RTSP
+ re1.5
+ DHT sensor library
+ ccronexpr
diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini
index 30ac45f39..ed427a6ed 100644
--- a/platformio_tasmota_cenv_sample.ini
+++ b/platformio_tasmota_cenv_sample.ini
@@ -22,13 +22,6 @@ board_build.f_flash = 80000000L
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_TASMOTA32
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32s3.bin"'
-; !!! Real flash size needed, avoid autoresize since it is formating FS !!!
-board_upload.flash_size = 8MB
-board_upload.maximum_size = 8388608
-; Without autoresize a partition scheme is needed which does fit to flash size
-board_build.partitions = partitions/esp32_partition_app2944k_fs2M.csv
-; Dont use safeboot, not used in this partition scheme -> an empty entry needed to overwrite the default setting
-board_upload.arduino.flash_extra_images =
; Example for custom file upload in Tasmota Filesystem
custom_files_upload = ${env:tasmota32_base.custom_files_upload}
tasmota/berry/modules/Partition_Wizard.tapp
@@ -46,6 +39,19 @@ build_flags = ${env:tasmota32_base.build_flags}
-DUSE_LVGL_OPENHASP
-DOTA_URL='""'
+;*** Tasmota ESP32-C3 version before ROM revision 3
+;*** Actual used Arduino/IDF does not support this old revisions
+;*** This build env is without any support, unexpected issues can happen
+;*** Includes only basic drivers to fit in smaller app partition
+[env:tasmota32c3-old]
+extends = env:tasmota32c3
+platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.9.20230531/framework-arduinoespressif32.zip
+build_flags = ${env:tasmota32_base.build_flags}
+ -DOTA_URL='""'
+; *** Do not use safe boot scheme, since safeboot is build with new core!!
+board_build.partitions = partitions/esp32_partition_app1856k_fs320k.csv
+; Safeboot not used in this partition scheme -> an empty entry needed to overwrite the default setting
+board_upload.arduino.flash_extra_images =
[env:tasmota32c3-bluetooth]
extends = env:tasmota32c3
diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini
index 337255131..2e826f757 100644
--- a/platformio_tasmota_env32.ini
+++ b/platformio_tasmota_env32.ini
@@ -15,7 +15,6 @@ lib_compat_mode = ${common.lib_compat_mode}
lib_extra_dirs = ${common.lib_extra_dirs}
lib/libesp32
lib/libesp32_lvgl
- lib/libesp32_div
lib/libesp32_eink
lib/libesp32_audio
lib_ignore =
@@ -40,16 +39,55 @@ lib_ignore =
; tasmota/berry/modules/Partition_Manager.tapp
custom_files_upload = no_files
+[env:tasmota32-arduino30]
+platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5
+platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/1457/framework-arduinoespressif32-release_v5.1-69cdc81680.zip
+extends = env:tasmota32_base
+board = esp32
+build_unflags = ${env:tasmota32_base.build_unflags}
+ -DUSE_IPV6
+build_flags = ${env:tasmota32_base.build_flags}
+ -DFIRMWARE_ARDUINO30
+ -DOTA_URL='""'
+lib_extra_dirs = lib/lib_ssl, lib/libesp32
+lib_ignore =
+ ESP Mail Client
+ IRremoteESP8266
+ NeoPixelBus
+ OneWire
+ MFRC522
+ universal display Library
+ ESP8266Audio
+ ESP8266SAM
+
+[env:tasmota32c6-safeboot]
+platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5
+platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/1457/framework-arduinoespressif32-release_v5.1-69cdc81680.zip
+extends = env:tasmota32_base
+board = esp32c6
+build_unflags = ${env:tasmota32_base.build_unflags}
+ -DUSE_IPV6
+build_flags = ${env:tasmota32_base.build_flags}
+ -DFIRMWARE_SAFEBOOT
+ -DOTA_URL='""'
+lib_extra_dirs = lib/lib_ssl, lib/libesp32
+lib_ignore =
+ ESP Mail Client
+ IRremoteESP8266
+ NeoPixelBus
+ OneWire
+ MFRC522
+ universal display Library
+ ESP8266Audio
+ ESP8266SAM
+
[env:tasmota32-safeboot]
extends = env:tasmota32_base
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32-safeboot.bin"'
lib_extra_dirs = lib/lib_ssl, lib/libesp32
-lib_ignore =
- Micro-RTSP
- ESP Mail Client
- DHT sensor library
+lib_ignore = ${safeboot_flags.lib_ignore}
[env:tasmota32]
extends = env:tasmota32_base
@@ -134,10 +172,7 @@ build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32solo1-safeboot.bin"'
lib_extra_dirs = lib/lib_ssl, lib/libesp32
-lib_ignore =
- Micro-RTSP
- ESP Mail Client
- DHT sensor library
+lib_ignore = ${safeboot_flags.lib_ignore}
[env:tasmota32-zbbrdgpro]
extends = env:tasmota32_base
@@ -172,10 +207,7 @@ build_flags = ${env:tasmota32_base.build_flags}
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3-safeboot.bin"'
-fno-lto
lib_extra_dirs = lib/lib_ssl, lib/libesp32
-lib_ignore =
- Micro-RTSP
- ESP Mail Client
- DHT sensor library
+lib_ignore = ${safeboot_flags.lib_ignore}
[env:tasmota32c3]
extends = env:tasmota32_base
@@ -215,10 +247,7 @@ build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32s2-safeboot.bin"'
lib_extra_dirs = lib/lib_ssl, lib/libesp32
-lib_ignore =
- Micro-RTSP
- ESP Mail Client
- DHT sensor library
+lib_ignore = ${safeboot_flags.lib_ignore}
[env:tasmota32s2]
extends = env:tasmota32_base
@@ -253,10 +282,7 @@ build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32s3-safeboot.bin"'
lib_extra_dirs = lib/lib_ssl, lib/libesp32
-lib_ignore =
- Micro-RTSP
- ESP Mail Client
- DHT sensor library
+lib_ignore = ${safeboot_flags.lib_ignore}
[env:tasmota32s3]
extends = env:tasmota32_base
diff --git a/tasmota/berry/modules/Partition_Wizard.tapp b/tasmota/berry/modules/Partition_Wizard.tapp
index 14665731d..98bfc21b9 100644
Binary files a/tasmota/berry/modules/Partition_Wizard.tapp and b/tasmota/berry/modules/Partition_Wizard.tapp differ
diff --git a/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec b/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec
index f0c39f5af..786b64901 100644
Binary files a/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec and b/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec differ
diff --git a/tasmota/berry/modules/partition_wizard.be b/tasmota/berry/modules/partition_wizard.be
index 500b15fff..9db989901 100644
--- a/tasmota/berry/modules/partition_wizard.be
+++ b/tasmota/berry/modules/partition_wizard.be
@@ -24,25 +24,49 @@ class Partition_wizard_UI
if persist.find("factory_migrate") == true
# remove marker to avoid bootloop if something goes wrong
+ tasmota.log("UPL: Resuming after step 1", 2)
persist.remove("factory_migrate")
persist.save()
# continue the migration process 5 seconds after Wifi is connected
def continue_after_5s()
- tasmota.remove_rule("parwiz_5s") # first remove rule to avoid firing it again at Wifi reconnect
+ tasmota.remove_rule("parwiz_5s1") # first remove rule to avoid firing it again at Wifi reconnect
+ tasmota.remove_rule("parwiz_5s2") # first remove rule to avoid firing it again at Wifi reconnect
tasmota.set_timer(5000, /-> self.do_safeboot_partitioning()) # delay by 5 s
end
- tasmota.add_rule("Wifi#Connected=1", continue_after_5s, "parwiz_5s")
+ tasmota.add_rule("Wifi#Connected=1", continue_after_5s, "parwiz_5s1")
+ tasmota.add_rule("Wifi#Connected==1", continue_after_5s, "parwiz_5s2")
end
end
+ # ----------------------------------------------------------------------
+ # Patch partition core since we can't chang the solidified code
+ # ----------------------------------------------------------------------
+ def patch_partition_core(p)
+ var otadata = p.otadata
+
+ # patch load
+ import flash
+ var otadata0 = flash.read(otadata.offset, 32)
+ var otadata1 = flash.read(otadata.offset + 0x1000, 32)
+ otadata.seq0 = otadata0.get(0, 4) #- ota_seq for block 1 -#
+ otadata.seq1 = otadata1.get(0, 4) #- ota_seq for block 2 -#
+ var valid0 = otadata0.get(28, 4) == otadata.crc32_ota_seq(otadata.seq0) #- is CRC32 valid? -#
+ var valid1 = otadata1.get(28, 4) == otadata.crc32_ota_seq(otadata.seq1) #- is CRC32 valid? -#
+ if !valid0 otadata.seq0 = nil end
+ if !valid1 otadata.seq1 = nil end
+
+ otadata._validate()
+ end
+
def default_safeboot_URL()
+ import string
var arch_sub = tasmota.arch()
if arch_sub[0..4] == "esp32"
arch_sub = arch_sub[5..] # get the esp32 variant
end
- return format(self._default_safeboot_URL, arch_sub)
+ return string.format(self._default_safeboot_URL, arch_sub)
end
# create a method for adding a button to the main menu
@@ -53,15 +77,34 @@ class Partition_wizard_UI
"")
end
+ # ----------------------------------------------------------------------
+ # Get last fs
+ #
+ # Get the last fs partition
+ # Return the actual slot
+ # ----------------------------------------------------------------------
+ def get_last_fs(p)
+ var sz = size(p.slots)
+ var idx = 1
+ while idx < sz
+ var slot = p.slots[-idx]
+ if slot.is_spiffs()
+ return slot
+ end
+ idx += 1
+ end
+ return nil
+ end
+
#- ---------------------------------------------------------------------- -#
#- Get fs unallocated size
#- ---------------------------------------------------------------------- -#
def get_unallocated_k(p)
- var last_slot = p.slots[-1]
- if last_slot.is_spiffs()
+ var last_fs = self.get_last_fs(p)
+ if last_fs != nil
# verify that last slot is filesystem
var flash_size_k = self.get_max_flash_size_k(p)
- var partition_end_k = (last_slot.start + last_slot.sz) / 1024 # last kb used for fs
+ var partition_end_k = (last_fs.start + last_fs.sz) / 1024 # last kb used for fs
if partition_end_k < flash_size_k
return flash_size_k - partition_end_k
end
@@ -73,8 +116,8 @@ class Partition_wizard_UI
#- Get max fs start address when expanded to maximum
#- ---------------------------------------------------------------------- -#
def get_max_fs_start_k(p)
- var last_slot = p.slots[-1]
- if last_slot.is_spiffs() # verify that last slot is filesystem
+ var last_fs = p.slots[-1]
+ if last_fs != nil # verify that last slot is filesystem
# get end of previous partition slot
var last_app = p.slots[-2]
# round upper 64kB
@@ -85,7 +128,7 @@ class Partition_wizard_UI
end
#- ---------------------------------------------------------------------- -#
- #- Get max falsh size
+ #- Get max flash size
#
# Takes into account that the flash size written may not be accurate
# and the flash chip may be larger
@@ -99,15 +142,40 @@ class Partition_wizard_UI
return flash_size_k
end
+ # ----------------------------------------------------------------------
+ # Remove any non wanted partion after last FS
+ # ----------------------------------------------------------------------
+ def remove_partition_after_last_fs(p)
+ # remove any partition after last fs
+ do
+ var last_fs = self.get_last_fs(p)
+ var changed = false
+ if last_fs != nil
+ while true
+ var last_slot = p.slots[-1]
+ if !last_slot.is_spiffs() && (last_slot.type != 0)
+ p.slots.remove(size(p.slots) - 1) # remove last slot
+ changed = true
+ else
+ break
+ end
+ end
+ if changed p.save() end
+ end
+ end
+ end
+
#- ---------------------------------------------------------------------- -#
#- Resize flash definition if needed
#- ---------------------------------------------------------------------- -#
def resize_max_flash_size_k(p)
+ self.remove_partition_after_last_fs(p)
var flash_size_k = tasmota.memory()['flash']
var flash_size_real_k = tasmota.memory().find("flash_real", flash_size_k)
var flash_definition_sector = self.get_flash_definition_sector(p)
if (flash_size_k != flash_size_real_k) && flash_definition_sector != nil
import flash
+ import string
flash_size_k = flash_size_real_k # try to expand the flash size definition
@@ -131,7 +199,7 @@ class Partition_wizard_UI
var old_def = flash_def[3]
flash_def[3] = (flash_def[3] & 0x0F) | flash_size_code
flash.write(flash_definition_sector, flash_def)
- tasmota.log(format("UPL: changing flash definition from 0x02X to 0x%02X", old_def, flash_def[3]), 3)
+ tasmota.log(string.format("UPL: changing flash definition from 0x02X to 0x%02X", old_def, flash_def[3]), 3)
else
raise "internal_error", "wrong flash size "+str(flash_size_real_m)
end
@@ -142,9 +210,9 @@ class Partition_wizard_UI
#- Get current fs size
#- ---------------------------------------------------------------------- -#
def get_cur_fs_size_k(p)
- var last_slot = p.slots[-1]
- if last_slot.is_spiffs() # verify that last slot is filesystem
- return (last_slot.sz + 1023) / 1024
+ var last_fs = p.slots[-1]
+ if last_fs != nil
+ return (last_fs.sz + 1023) / 1024
end
return 0
end
@@ -171,13 +239,14 @@ class Partition_wizard_UI
#- ---------------------------------------------------------------------- -#
def show_resize_fs(p)
import webserver
+ import string
var unallocated = self.get_unallocated_k(p)
# if there is unallocated space, propose only to claim it
if unallocated > 0
webserver.content_send("