mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 11:16:34 +00:00
Merge branch 'development' into prerelease-13.3
This commit is contained in:
commit
fb904a0610
7
.github/workflows/Tasmota_build_devel.yml
vendored
7
.github/workflows/Tasmota_build_devel.yml
vendored
@ -106,6 +106,7 @@ jobs:
|
||||
pip install wheel
|
||||
pip install -U platformio
|
||||
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
|
||||
cp ./platformio_override_sample.ini ./platformio_override.ini
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e ${{ matrix.variant }}
|
||||
- name: Upload safeboot firmware artifacts
|
||||
@ -175,6 +176,8 @@ jobs:
|
||||
- tasmota32s3
|
||||
- tasmota32s3cdc
|
||||
- tasmota32solo1
|
||||
- tasmota32c2-arduino30
|
||||
- tasmota32c6cdc-arduino30
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@ -187,6 +190,8 @@ jobs:
|
||||
run: |
|
||||
pip install wheel
|
||||
pip install -U platformio
|
||||
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
|
||||
cp ./platformio_override_sample.ini ./platformio_override.ini
|
||||
- name: Download safeboot firmwares
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
@ -224,6 +229,8 @@ jobs:
|
||||
run: |
|
||||
pip install wheel
|
||||
pip install -U platformio
|
||||
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
|
||||
cp ./platformio_override_sample.ini ./platformio_override.ini
|
||||
- name: Download safeboot firmwares
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
|
1
.github/workflows/Tasmota_build_master.yml
vendored
1
.github/workflows/Tasmota_build_master.yml
vendored
@ -45,6 +45,7 @@ jobs:
|
||||
pip install wheel
|
||||
pip install -U platformio
|
||||
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
|
||||
cp ./platformio_override_sample.ini ./platformio_override.ini
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e ${{ matrix.variant }}
|
||||
- name: Upload safeboot firmware artifacts
|
||||
|
2
.github/workflows/build_all_the_things.yml
vendored
2
.github/workflows/build_all_the_things.yml
vendored
@ -91,6 +91,7 @@ jobs:
|
||||
- tasmota-zbbridge
|
||||
- tasmota32
|
||||
- tasmota32c3
|
||||
- tasmota32c6cdc-arduino30
|
||||
- tasmota32s2
|
||||
- tasmota32s3
|
||||
- tasmota32-zbbrdgpro
|
||||
@ -129,6 +130,7 @@ jobs:
|
||||
#platformio upgrade --dev
|
||||
#platformio update
|
||||
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
|
||||
cp ./platformio_override_sample.ini ./platformio_override.ini
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e ${{ matrix.variant }}
|
||||
- uses: actions/upload-artifact@v3
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -19,6 +19,8 @@ data
|
||||
unpacked_fs
|
||||
unpacked_boards
|
||||
tasmota/user_config_override.h
|
||||
variants
|
||||
variants3
|
||||
build
|
||||
build_output/*
|
||||
firmware.map
|
||||
|
2
API.md
2
API.md
@ -17,7 +17,7 @@ Callback Id | Bool | xdrv | xsns | xnrg | xlgt | Description
|
||||
----------------------------|------|------|------|------|------|----------------------------------
|
||||
FUNC_SETTINGS_OVERRIDE | | x | | | | Override start-up settings
|
||||
FUNC_PIN_STATE | x | 1 | 2 | | | At GPIO configuration
|
||||
FUNC_I2C_INIT | | x | | | | Immediatly after I2C init
|
||||
FUNC_I2C_INIT | | x | | | | Immediately after I2C init
|
||||
FUNC_MODULE_INIT | x | 3 | 1 | | 2 | Init module specific parameters
|
||||
FUNC_PRE_INIT | | 1 | 3 | 2 | | Once GPIO have been established
|
||||
FUNC_INIT | | 1 | 3 | 2 | | At end of initialisation
|
||||
|
@ -1,8 +1,6 @@
|
||||
## Available Features and Sensors
|
||||
|
||||
ESP8266 / ESP32
|
||||
|
||||
l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display
|
||||
l = lite, t = tasmota (ESP8266 / ESP32), k = knx, s = sensors, i = ir, d = display
|
||||
|
||||
Note: `minimal` variant is not listed as it shouldn't be used outside of the [upgrading](https://tasmota.github.io/docs/Upgrading/) process.
|
||||
|
||||
|
102
CHANGELOG.md
102
CHANGELOG.md
@ -3,6 +3,92 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
## [Released]
|
||||
|
||||
## [13.3.0] 20231213
|
||||
- Release Quinlan
|
||||
|
||||
## [13.2.0.3] 20231213
|
||||
### Added
|
||||
- DeepSleep support through TIMERS (#20117)
|
||||
- Command ``WebCanvas linear-gradient(#F02 7%,#F93,#FF4,#082,#00F,#708 93%)`` to set GUI canvas
|
||||
|
||||
### Breaking Changed
|
||||
- Remove Berry `every_200ms` event which didn't work anyways (#20205)
|
||||
|
||||
### Changed
|
||||
- ESP32 LVGL library from v8.3.10 to v8.3.11 (no functional change)
|
||||
- Berry ULP API changes for Core3/IDF5 (#20198)
|
||||
- Berry leds animation refactoring stage 1 (#20197)
|
||||
|
||||
### Fixed
|
||||
- TUYA state machine (in TUYA v1) (#20110)
|
||||
- ESP32 Neopixel flicker for Core3/IDF5 (#20196)
|
||||
- HASPmota `bar` fixed `val` attribute (#20208)
|
||||
|
||||
## [13.2.0.2] 20231130
|
||||
### Added
|
||||
- Scripter TCP client (#19914)
|
||||
- Berry ``debug.gcdebug()`` to enable GC debugging (#19936)
|
||||
- Berry AES_CBC to crypto module (#19964)
|
||||
- NeoPool sensor delta trigger (command ``NPTelePeriod``) (#19973)
|
||||
- NeoPool store settings on unified file system (#19973)
|
||||
- NeoPool command ``NPBoost`` (#19973)
|
||||
- ESP32 Partition Wizard can be loaded dynamically (#19980)
|
||||
- Berry `scale_int`, equivalent of `scale_uint` for signed integers (#20090)
|
||||
- ESP32 support for Avago Tech Bluetooth Buttons (#20088)
|
||||
|
||||
### Changed
|
||||
- Matter update hierarchy of plugins (#19915)
|
||||
- NeoPool ``NPHydrolysis`` percent and unit (#19924)
|
||||
- Thermostat JSON index from 0 to 1 (#20011)
|
||||
|
||||
### Fixed
|
||||
- Scripter timer issue (#19914)
|
||||
- Zero-Cross Dimmer for ESP32 with Core3 (#19929)
|
||||
- Matter flow sensor (#19961)
|
||||
- Berry ``gpio.dac_voltage()`` regression from v13.1.0.1 (#19997)
|
||||
- ESP32-C3 ledlink functionality regression from v13.1.0.2
|
||||
- Berry parser error in specific cases (#20059)
|
||||
- ``changeUIntScale`` for linearity when expanding range (#20089)
|
||||
- ESP32 remove restart energy logging if no energy monitoring is selected
|
||||
- ``WebQuery`` response buffer corruption and format character ``%`` (#20111)
|
||||
|
||||
## [13.2.0.1] 20231103
|
||||
### Added
|
||||
- I2C bus2 support to iAQ core sensor (#19799)
|
||||
- I2C bus2 support to HTU temperature and humidity sensor
|
||||
- I2C bus2 support to BH1750 ambient light sensor
|
||||
- I2C bus2 support to ADS1115 A/D Converter
|
||||
- I2C bus2 support to SHTxX temperature and humidity sensor
|
||||
- I2C bus2 support to HYTxxx temperature and humidity sensor
|
||||
- I2C bus2 support to SI1145/6/7 Ultra violet index and light sensor
|
||||
- I2C bus2 support to LM75AD temperature sensor
|
||||
- Command ``GpioRead`` to show input state (#19810)
|
||||
- ESP32 core v3 auto TasConsole USB or Serial connection by @staars
|
||||
- Support for Winsen XH03x dust particle sensors using USE_PMS5003 and PMS_MODEL_ZH03X (#19850)
|
||||
- NeoPool hydrolysis setpoint and max
|
||||
- NeoPool command ``NPFiltrationSpeed`` to set non-standard filtration type speed (#19857)
|
||||
- NeoPool ``SetOption157`` to output sensitive data (#19857)
|
||||
- NeoPool enhancements for HA (#19857)
|
||||
- ST7735S display.ini for 1.44 inch 128x128 red SPI display (#19862)
|
||||
- HASPmota add styling properties (#19912)
|
||||
- Matter flow sensor support (#19852)
|
||||
|
||||
### Breaking Changed
|
||||
- NeoPool SENSOR topic ``Power`` renamed to ``Powerunit`` (#19857)
|
||||
|
||||
### Changed
|
||||
- Prepare I2C drivers for bus2 support
|
||||
- Matter Light0 now accept a Relay number (#19809)
|
||||
- ESP32 keep FS intact when over flashing with VSC (#19816)
|
||||
- Increase MAX_HUE_DEVICES to 32 (#19820)
|
||||
- MI32 updates (#19893)
|
||||
|
||||
### Fixed
|
||||
- NeoPool filtration mode display (#19801)
|
||||
- Compile USE_PID (#19890)
|
||||
- ESP32 I2C allow bus2 support when bus1 is not enabled
|
||||
- ESP32 IR receive with Arduino Core 3 (#19904)
|
||||
|
||||
## [13.2.0] 20231019
|
||||
- Release Quincy
|
||||
|
||||
@ -73,7 +159,7 @@ All notable changes to this project will be documented in this file.
|
||||
- ESP32 Shutter migration (#19454)
|
||||
- ESP32 Shutter multi press button events (#19465)
|
||||
- Support for IPv6 link-local zones for esp-idf 5.1 (necessary for Matter)
|
||||
- ESP32C3 relay click on restart
|
||||
- ESP32-C3 relay click on restart
|
||||
|
||||
## [13.1.0.1] 20230831
|
||||
### Added
|
||||
@ -128,7 +214,7 @@ All notable changes to this project will be documented in this file.
|
||||
- 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 support for large attribute responses (#19252)
|
||||
- Matter auto-configuration Relay indices (#19255)
|
||||
|
||||
## [13.0.0.2] 20230721
|
||||
@ -975,14 +1061,14 @@ All notable changes to this project will be documented in this file.
|
||||
- Support for MQ analog sensor for air quality by Francesco Adriani (#14581)
|
||||
- Command ``SetOption134 1`` to disable PWM auto-phasing for lights by default (new behavior) (#14590)
|
||||
- Increase PWM channels to 16 (Esp32 only)
|
||||
- Initial support for ESP32S3 with support for 38 configurable GPIOs
|
||||
- Initial support for ESP32-S3 with support for 38 configurable GPIOs
|
||||
|
||||
### Changed
|
||||
- BME68x-Sensor-API library from v3.5.9 to v4.4.7
|
||||
- ESP32 core library from v2.0.2 to v2.0.2.1 (#14553)
|
||||
|
||||
### Fixed
|
||||
- OneWire-Stickbreaker (DS18x20) library support for ESP32S2 (#14338)
|
||||
- OneWire-Stickbreaker (DS18x20) library support for ESP32-S2 (#14338)
|
||||
|
||||
## [2022.01.2 = 10.1.0.5] 20220116
|
||||
### Added
|
||||
@ -1171,10 +1257,10 @@ All notable changes to this project will be documented in this file.
|
||||
### Added
|
||||
- Command ``WebGetConfig <url>`` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034)
|
||||
- Berry class ``webclient`` for HTTP/HTTPS requests
|
||||
- Support for ESP32S2 GPIOs
|
||||
- Support for ESP32-S2 GPIOs
|
||||
- ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible)
|
||||
- Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4
|
||||
- Support for ESP32/ESP32S2 DAC gpio via Berry
|
||||
- Crash recorder ``Status 12`` for ESP32/ESP32-S2/ESP32-C3, supporting Esp-idf 3.3/4.4
|
||||
- Support for ESP32/ESP32-S2 DAC gpio via Berry
|
||||
- Berry support for Serial
|
||||
- Support for Sensirion SCD40/SCD41 CO2 sensor (#13139)
|
||||
- Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow (#13195)
|
||||
@ -1226,7 +1312,7 @@ All notable changes to this project will be documented in this file.
|
||||
- Berry now compiling in ``strict`` mode to catch more bugs
|
||||
|
||||
### Fixed
|
||||
- Fixed PWM5 on ESP32C3
|
||||
- ESP32-C3 PWM5
|
||||
|
||||
## [9.5.0.5] 20210815
|
||||
### Added
|
||||
|
@ -99,7 +99,7 @@ To accept the CLA it is required to put a x between [ ] on `[ ] I accept the CLA
|
||||
|
||||
**Why a CLA ?**
|
||||
|
||||
_"A Contributor Licence Agreement (CLA) is strongly recommended when accepting third party contributions to an open development project, such as an open source software project. In order to redistribute contributions, it is necessary to ensure that the project has the necessary rights to do so. A Contributor Licence Agreement is a lightweight agreement, signed by the copyright holder, that grants the necessary rights for the contribution to be redistributed as part of the project."_ [OSS Watch](http://oss-watch.ac.uk/resources/cla)
|
||||
_"A Contributor License Agreement (CLA) is strongly recommended when accepting third party contributions to an open development project, such as an open source software project. In order to redistribute contributions, it is necessary to ensure that the project has the necessary rights to do so. A Contributor License Agreement is a lightweight agreement, signed by the copyright holder, that grants the necessary rights for the contribution to be redistributed as part of the project."_ [OSS Watch](http://oss-watch.ac.uk/resources/cla)
|
||||
|
||||
A CLA is a legal document in which you state _you are entitled to contribute the code/documentation/translation to the project_ you’re contributing to and that _you are willing to have it used in distributions and derivative works_. This means that should there be any kind of legal issue in the future as to the origins and ownership of any particular piece of code, then that project has the necessary forms on file from the contributor(s) saying they were permitted to make this contribution.
|
||||
|
||||
|
@ -27,7 +27,7 @@ See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/tasmota/C
|
||||
|
||||
Unless your Tasmota powered device exhibits a problem or you need to make use of a feature that is not available in the Tasmota version currently installed on your device, leave your device alone - it works so don't make unnecessary changes! If the release version (i.e., the master branch) exhibits unexpected behaviour for your device and configuration, you should upgrade to the latest development version instead to see if your problem is resolved as some bugs in previous releases or development builds may already have been resolved.
|
||||
|
||||
If new commits have been merged and they compile successfuly, new binary files for every variant will be placed here https://github.com/arendst/Tasmota-firmware/tree/main/firmware (this URL address can NOT be used for OTA updates) It is important to note that these binaries are based on the current development codebase. These commits are tested as much as is possible and are typically quite stable. However, it is infeasible to test on the hundreds of different types of devices with all the available configuration options permitted.
|
||||
If new commits have been merged and they compile successfully, new binary files for every variant will be placed here https://github.com/arendst/Tasmota-firmware/tree/main/firmware (this URL address can NOT be used for OTA updates) It is important to note that these binaries are based on the current development codebase. These commits are tested as much as is possible and are typically quite stable. However, it is infeasible to test on the hundreds of different types of devices with all the available configuration options permitted.
|
||||
|
||||
Note that there is a chance, as with any upgrade, that the device may not function as expected. You must always account for the possibility that you may need to flash the device via the serial programming interface if the OTA upgrade fails. Even with the master release, you should always attempt to test the device or a similar prototype before upgrading a device which is in production or is hard to reach. And, as always, make a backup of the device configuration before beginning any firmware update.
|
||||
|
||||
|
234
I2CDEVICES.md
234
I2CDEVICES.md
@ -6,120 +6,122 @@ Using command ``I2cDriver`` individual drivers can be enabled or disabled at run
|
||||
## Supported I2C devices
|
||||
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
|
||||
4 | USE_DISPLAY_SSD1306 | xdsp_02 | SSD1306 | 0x3C - 0x3D | Oled display
|
||||
5 | USE_DISPLAY_MATRIX | xdsp_03 | HT16K33 | 0x70 - 0x77 | 8x8 led matrix
|
||||
6 | USE_DISPLAY_SH1106 | xdsp_07 | SH1106 | 0x3C - 0x3D | Oled display
|
||||
7 | USE_ADE7953 | xnrg_07 | ADE7953 | 0x38 | Energy monitor
|
||||
8 | USE_SHT | xsns_07 | SHT1X | Any | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | HTU21 | 0x40 | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | SI7013 | 0x40 | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | SI7020 | 0x40 | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | SI7021 | 0x40 | Temperature and Humidity sensor
|
||||
10 | USE_BMP | xsns_09 | BMP085 | 0x76 - 0x77 | Pressure and temperature sensor
|
||||
10 | USE_BMP | xsns_09 | BMP180 | 0x76 - 0x77 | Pressure and temperature sensor
|
||||
10 | USE_BMP | xsns_09 | BMP280 | 0x76 - 0x77 | Pressure and temperature sensor
|
||||
10 | USE_BMP | xsns_09 | BME280 | 0x76 - 0x77 | Pressure, temperature and humidity sensor
|
||||
10 | USE_BMP | xsns_09 | BME680 | 0x76 - 0x77 | Pressure, temperature, humidity and gas sensor
|
||||
11 | USE_BH1750 | xsns_10 | BH1750 | 0x23, 0x5C | Ambient light intensity sensor
|
||||
12 | USE_VEML6070 | xsns_11 | VEML6070 | 0x38 - 0x39 | Ultra violet light intensity sensor
|
||||
13 | USE_ADS1115 | xsns_12 | ADS1115 | 0x48 - 0x4B | 4-channel 16-bit A/D converter
|
||||
14 | USE_INA219 | xsns_13 | INA219 | 0x40 - 0x41, 0x44 - 0x45 | Low voltage current sensor
|
||||
15 | USE_SHT3X | xsns_14 | SHT3X | 0x44 - 0x45 | Temperature and Humidity sensor
|
||||
15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x45 | Temperature and Humidity sensor
|
||||
15 | USE_SHT3X | xsns_14 | SHTCX | 0x70 | Temperature and Humidity sensor
|
||||
16 | USE_TSL2561 | xsns_16 | TSL2561 | 0x29, 0x39, 0x49 | Light intensity sensor
|
||||
17 | USE_MGS | xsns_19 | Grove | 0x04 | Multichannel gas sensor
|
||||
18 | USE_SGP30 | xsns_21 | SGP30 | 0x58 | Gas (TVOC) and air quality sensor
|
||||
19 | USE_SI1145 | xsns_24 | SI1145 | 0x60 | Ultra violet index and light sensor
|
||||
19 | USE_SI1145 | xsns_24 | SI1146 | 0x60 | Ultra violet index and light sensor
|
||||
19 | USE_SI1145 | xsns_24 | SI1147 | 0x60 | Ultra violet index and light sensor
|
||||
20 | USE_LM75AD | xsns_26 | LM75AD | 0x48 - 0x4F | Temperature sensor
|
||||
21 | USE_APDS9960 | xsns_27 | APDS9960 | 0x39 | Proximity ambient light RGB and gesture sensor
|
||||
22 | USE_MCP230xx | xsns_29 | MCP23008 | 0x20 - 0x26 | 8-bit I/O expander
|
||||
22 | USE_MCP230xx | xsns_29 | MCP23017 | 0x20 - 0x26 | 16-bit I/O expander
|
||||
23 | USE_MPR121 | xsns_30 | MPR121 | 0x5A - 0x5D | Proximity capacitive touch sensor
|
||||
24 | USE_CCS811 | xsns_31 | CCS811 | 0x5A | Gas (TVOC) and air quality sensor
|
||||
24' | USE_CCS811_V2 | xsns_31 | CCS811 | 0x5A - 0x5B | Gas (TVOC) and air quality sensor
|
||||
25 | USE_MPU6050 | xsns_32 | MPU6050 | 0x68 - 0x69 | 3-axis gyroscope and temperature sensor
|
||||
26 | USE_DS3231 | xsns_33 | DS3231 | 0x68 | Real time clock
|
||||
27 | USE_MGC3130 | xsns_36 | MGC3130 | 0x42 | Electric field sensor
|
||||
28 | USE_MAX44009 | xsns_41 | MAX44009 | 0x4A - 0x4B | Ambient light intensity sensor
|
||||
29 | USE_SCD30 | xsns_42 | SCD30 | 0x61 | CO2 sensor
|
||||
30 | USE_SPS30 | xsns_44 | SPS30 | 0x69 | Particle sensor
|
||||
31 | USE_VL53L0X | xsns_45 | VL53L0X | 0x29 | Time-of-flight (ToF) distance sensor
|
||||
32 | USE_MLX90614 | xsns_46 | MLX90614 | 0x5A | Infra red temperature sensor
|
||||
33 | USE_CHIRP | xsns_48 | CHIRP | 0x20 | Soil moisture sensor
|
||||
34 | USE_PAJ7620 | xsns_50 | PAJ7620 | 0x73 | Gesture sensor
|
||||
35 | USE_INA226 | xsns_54 | INA226 | 0x40 - 0x41, 0x44 - 0x45 | Low voltage current sensor
|
||||
36 | USE_HIH6 | xsns_55 | HIH6130 | 0x27 | Temperature and Humidity sensor
|
||||
37 | USE_24C256 | xdrv_10 | 24C256 | 0x50 | Scripter EEPROM storage
|
||||
38 | USE_DISPLAY_ILI9488 | xdsp_08 | FT6236 | 0x38 | Touch panel controller
|
||||
39 | USE_DISPLAY_RA8876 | xdsp_10 | FT5316 | 0x38 | Touch panel controller
|
||||
40 | USE_TSL2591 | xsns_57 | TSL2591 | 0x29 | Light intensity sensor
|
||||
41 | USE_DHT12 | xsns_58 | DHT12 | 0x5C | Temperature and humidity sensor
|
||||
42 | USE_DS1624 | xsns_59 | DS1621 | 0x48 - 0x4F | Temperature sensor
|
||||
42 | USE_DS1624 | xsns_59 | DS1624 | 0x48 - 0x4F | Temperature sensor
|
||||
43 | USE_AHT1x | xsns_63 | AHT10/15 | 0x38 - 0x39 | Temperature and humidity sensor
|
||||
43 | USE_AHT2x | xsns_63 | AHT20 | 0x38 | Temperature and humidity sensor
|
||||
43 | USE_AHT2x | xsns_63 | AM2301B | 0x38 | Temperature and humidity sensor
|
||||
44 | USE_WEMOS_MOTOR_V1 | xdrv_34 | | 0x2D - 0x30 | WEMOS motor shield v1.0.0 (6612FNG)
|
||||
45 | USE_HDC1080 | xsns_65 | HDC1080 | 0x40 | Temperature and Humidity sensor
|
||||
46 | USE_IAQ | xsns_66 | IAQ | 0x5a | Air quality sensor
|
||||
47 | USE_DISPLAY_SEVENSEG| xdsp_11 | HT16K33 | 0x70 - 0x77 | Seven segment LED
|
||||
48 | USE_AS3935 | xsns_67 | AS3935 | 0x03 | Franklin Lightning Sensor
|
||||
49 | USE_VEML6075 | xsns_70 | VEML6075 | 0x10 | UVA/UVB/UVINDEX Sensor
|
||||
50 | USE_VEML7700 | xsns_71 | VEML7700 | 0x10 | Ambient light intensity sensor
|
||||
51 | USE_MCP9808 | xsns_72 | MCP9808 | 0x18 - 0x1F | Temperature sensor
|
||||
52 | USE_HP303B | xsns_73 | HP303B | 0x76 - 0x77 | Pressure and temperature sensor
|
||||
53 | USE_MLX90640 | xdrv_43 | MLX90640 | 0x33 | IR array temperature sensor
|
||||
54 | USE_VL53L1X | xsns_77 | VL53L1X | 0x29 | Time-of-flight (ToF) distance sensor
|
||||
55 | USE_EZOPH | xsns_78 | EZOPH | 0x61 - 0x70 | pH sensor
|
||||
55 | USE_EZOORP | xsns_78 | EZOORP | 0x61 - 0x70 | ORP sensor
|
||||
55 | USE_EZORTD | xsns_78 | EZORTD | 0x61 - 0x70 | Temperature sensor
|
||||
55 | USE_EZOHUM | xsns_78 | EZOHUM | 0x61 - 0x70 | Humidity sensor
|
||||
55 | USE_EZOEC | xsns_78 | EZOEC | 0x61 - 0x70 | Electric conductivity sensor
|
||||
55 | USE_EZOCO2 | xsns_78 | EZOCO2 | 0x61 - 0x70 | CO2 sensor
|
||||
55 | USE_EZOO2 | xsns_78 | EZOO2 | 0x61 - 0x70 | O2 sensor
|
||||
55 | USE_EZOPRS | xsns_78 | EZOPRS | 0x61 - 0x70 | Pressure sensor
|
||||
55 | USE_EZOFLO | xsns_78 | EZOFLO | 0x61 - 0x70 | Flow meter sensor
|
||||
55 | USE_EZODO | xsns_78 | EZODO | 0x61 - 0x70 | Disolved Oxygen sensor
|
||||
55 | USE_EZORGB | xsns_78 | EZORGB | 0x61 - 0x70 | Color sensor
|
||||
55 | USE_EZOPMP | xsns_78 | EZOPMP | 0x61 - 0x70 | Peristaltic Pump
|
||||
56 | USE_SEESAW_SOIL | xsns_81 | SEESOIL | 0x36 - 0x39 | Adafruit seesaw soil moisture sensor
|
||||
57 | USE_TOF10120 | xsns_84 | TOF10120 | 0x52 | Time-of-flight (ToF) distance sensor
|
||||
58 | USE_MPU_ACCEL | xsns_85 | MPU_ACCEL| 0x68 | MPU6886/MPU9250 6-axis MotionTracking sensor from M5Stack
|
||||
59 | USE_BM8563 | xdrv_56 | BM8563 | 0x51 | BM8563 RTC from M5Stack
|
||||
60 | USE_AM2320 | xsns_88 | AM2320 | 0x5C | Temperature and Humidity sensor
|
||||
61 | USE_T67XX | xsns_89 | T67XX | 0x15 | CO2 sensor
|
||||
62 | USE_SCD40 | xsns_92 | SCD40 | 0x62 | CO2 sensor Sensirion SCD40/SCD41
|
||||
63 | USE_HM330X | xsns_93 | HM330X | 0x40 | Particule sensor
|
||||
64 | USE_HDC2010 | xsns_94 | HDC2010 | 0x40 | Temperature and Humidity sensor
|
||||
65 | USE_ADE7880 | xnrg_23 | ADE7880 | 0x38 | Energy monitor
|
||||
66 | USE_PCF85363 | xsns_99 | PCF85363 | 0x51 | Real time clock
|
||||
67 | USE_DS3502 | xdrv_61 | DS3502 | 0x28 - 0x2B | Digital potentiometer
|
||||
68 | USE_HYT | xsns_97 | HYTxxx | 0x28 | Temperature and Humidity sensor
|
||||
69 | USE_SGP40 | xsns_98 | SGP40 | 0x59 | Gas (TVOC) and air quality
|
||||
70 | USE_LUXV30B | xsns_99 | LUXV30B | 0x4A | DFRobot SEN0390 V30B lux sensor
|
||||
71 | USE_QMC5883L | xsns_33 | QMC5883L | 0x0D | Magnetic Field Sensor
|
||||
72 | USE_INA3221 | xsns_100 | INA3221 | 0x40-0x43 | 3-channels Voltage and Current sensor
|
||||
73 | USE_HMC5883L | xsns_101 | HMC5883L | 0x1E | 3-channels Magnetic Field Sensor
|
||||
74 | USE_DISPLAY_TM1650 | xdsp_20 | TM1650 | 0x24 - 0x27, 0x34 - 0x37 | Four-digit seven-segment LED controller
|
||||
75 | USE_PCA9632 | xdrv_64 | PCA9632 | 0x60 | 4-channel 4-bit pwm driver
|
||||
76 | USE_SEN5X | xsns_103 | SEN5X | 0x69 | Gas (VOC/NOx index) and air quality (PPM <1,<2.5,<4,<10)
|
||||
77 | USE_MCP23XXX_DRV | xdrv_67 | MCP23x17 | 0x20 - 0x26 | 16-bit I/O expander as virtual button/switch/relay
|
||||
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
|
||||
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
|
||||
84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | Gas (TVOC, eCO2) and air quality sensor
|
||||
85 | USE_ENS210 | xsns_112 | ENS210 | 0x43 - 0x44 | Temperature and humidity sensor
|
||||
Index | Define | Driver | Device | Address(es) | Bus2 | 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
|
||||
4 | USE_DISPLAY_SSD1306 | xdsp_02 | SSD1306 | 0x3C - 0x3D | | Oled display
|
||||
5 | USE_DISPLAY_MATRIX | xdsp_03 | HT16K33 | 0x70 - 0x77 | | 8x8 led matrix
|
||||
6 | USE_DISPLAY_SH1106 | xdsp_07 | SH1106 | 0x3C - 0x3D | | Oled display
|
||||
7 | USE_ADE7953 | xnrg_07 | ADE7953 | 0x38 | | Energy monitor
|
||||
8 | USE_SHT | xsns_07 | SHT1X | Any | | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | HTU21 | 0x40 | Yes | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | SI7013 | 0x40 | Yes | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | SI7020 | 0x40 | Yes | Temperature and Humidity sensor
|
||||
9 | USE_HTU | xsns_08 | SI7021 | 0x40 | Yes | Temperature and Humidity sensor
|
||||
10 | USE_BMP | xsns_09 | BMP085 | 0x76 - 0x77 | Yes | Pressure and temperature sensor
|
||||
10 | USE_BMP | xsns_09 | BMP180 | 0x76 - 0x77 | Yes | Pressure and temperature sensor
|
||||
10 | USE_BMP | xsns_09 | BMP280 | 0x76 - 0x77 | Yes | Pressure and temperature sensor
|
||||
10 | USE_BMP | xsns_09 | BME280 | 0x76 - 0x77 | Yes | Pressure, temperature and humidity sensor
|
||||
10 | USE_BMP | xsns_09 | BME680 | 0x76 - 0x77 | Yes | Pressure, temperature, humidity and gas sensor
|
||||
11 | USE_BH1750 | xsns_10 | BH1750 | 0x23, 0x5C | Yes | Ambient light intensity sensor
|
||||
12 | USE_VEML6070 | xsns_11 | VEML6070 | 0x38 - 0x39 | | Ultra violet light intensity sensor
|
||||
13 | USE_ADS1115 | xsns_12 | ADS1115 | 0x48 - 0x4B | Yes | 4-channel 16-bit A/D converter
|
||||
14 | USE_INA219 | xsns_13 | INA219 | 0x40 - 0x41, 0x44 - 0x45 | | Low voltage current sensor
|
||||
15 | USE_SHT3X | xsns_14 | SHT3X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
|
||||
15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
|
||||
15 | USE_SHT3X | xsns_14 | SHTCX | 0x70 | Yes | Temperature and Humidity sensor
|
||||
16 | USE_TSL2561 | xsns_16 | TSL2561 | 0x29, 0x39, 0x49 | | Light intensity sensor
|
||||
17 | USE_MGS | xsns_19 | Grove | 0x04 | | Multichannel gas sensor
|
||||
18 | USE_SGP30 | xsns_21 | SGP30 | 0x58 | | Gas (TVOC) and air quality sensor
|
||||
19 | USE_SI1145 | xsns_24 | SI1145 | 0x60 | Yes | Ultra violet index and light sensor
|
||||
19 | USE_SI1145 | xsns_24 | SI1146 | 0x60 | Yes | Ultra violet index and light sensor
|
||||
19 | USE_SI1145 | xsns_24 | SI1147 | 0x60 | Yes | Ultra violet index and light sensor
|
||||
20 | USE_LM75AD | xsns_26 | LM75AD | 0x48 - 0x4F | Yes | Temperature sensor
|
||||
21 | USE_APDS9960 | xsns_27 | APDS9960 | 0x39 | | Proximity ambient light RGB and gesture sensor
|
||||
22 | USE_MCP230xx | xsns_29 | MCP23008 | 0x20 - 0x26 | | 8-bit I/O expander
|
||||
22 | USE_MCP230xx | xsns_29 | MCP23017 | 0x20 - 0x26 | | 16-bit I/O expander
|
||||
23 | USE_MPR121 | xsns_30 | MPR121 | 0x5A - 0x5D | | Proximity capacitive touch sensor
|
||||
24 | USE_CCS811 | xsns_31 | CCS811 | 0x5A | | Gas (TVOC) and air quality sensor
|
||||
24' | USE_CCS811_V2 | xsns_31 | CCS811 | 0x5A - 0x5B | | Gas (TVOC) and air quality sensor
|
||||
25 | USE_MPU6050 | xsns_32 | MPU6050 | 0x68 - 0x69 | | 3-axis gyroscope and temperature sensor
|
||||
26 | USE_DS3231 | xsns_33 | DS1307 | 0x68 | | Real time clock
|
||||
26 | USE_DS3231 | xsns_33 | DS3231 | 0x68 | | Real time clock
|
||||
27 | USE_MGC3130 | xsns_36 | MGC3130 | 0x42 | | Electric field sensor
|
||||
28 | USE_MAX44009 | xsns_41 | MAX44009 | 0x4A - 0x4B | | Ambient light intensity sensor
|
||||
29 | USE_SCD30 | xsns_42 | SCD30 | 0x61 | | CO2 sensor
|
||||
30 | USE_SPS30 | xsns_44 | SPS30 | 0x69 | | Particle sensor
|
||||
31 | USE_VL53L0X | xsns_45 | VL53L0X | 0x29 | | Time-of-flight (ToF) distance sensor
|
||||
32 | USE_MLX90614 | xsns_46 | MLX90614 | 0x5A | | Infra red temperature sensor
|
||||
33 | USE_CHIRP | xsns_48 | CHIRP | 0x20 | | Soil moisture sensor
|
||||
34 | USE_PAJ7620 | xsns_50 | PAJ7620 | 0x73 | | Gesture sensor
|
||||
35 | USE_INA226 | xsns_54 | INA226 | 0x40 - 0x41, 0x44 - 0x45 | | Low voltage current sensor
|
||||
36 | USE_HIH6 | xsns_55 | HIH6130 | 0x27 | | Temperature and Humidity sensor
|
||||
37 | USE_24C256 | xdrv_10 | 24C256 | 0x50 | | Scripter EEPROM storage
|
||||
38 | USE_DISPLAY_ILI9488 | xdsp_08 | FT6236 | 0x38 | | Touch panel controller
|
||||
39 | USE_DISPLAY_RA8876 | xdsp_10 | FT5316 | 0x38 | | Touch panel controller
|
||||
40 | USE_TSL2591 | xsns_57 | TSL2591 | 0x29 | | Light intensity sensor
|
||||
41 | USE_DHT12 | xsns_58 | DHT12 | 0x5C | | Temperature and humidity sensor
|
||||
42 | USE_DS1624 | xsns_59 | DS1621 | 0x48 - 0x4F | | Temperature sensor
|
||||
42 | USE_DS1624 | xsns_59 | DS1624 | 0x48 - 0x4F | | Temperature sensor
|
||||
43 | USE_AHT1x | xsns_63 | AHT10/15 | 0x38 - 0x39 | | Temperature and humidity sensor
|
||||
43 | USE_AHT2x | xsns_63 | AHT20 | 0x38 | | Temperature and humidity sensor
|
||||
43 | USE_AHT2x | xsns_63 | AM2301B | 0x38 | | Temperature and humidity sensor
|
||||
44 | USE_WEMOS_MOTOR_V1 | xdrv_34 | | 0x2D - 0x30 | | WEMOS motor shield v1.0.0 (6612FNG)
|
||||
45 | USE_HDC1080 | xsns_65 | HDC1080 | 0x40 | | Temperature and Humidity sensor
|
||||
46 | USE_IAQ | xsns_66 | IAQ | 0x5a | Yes | Air quality sensor
|
||||
47 | USE_DISPLAY_SEVENSEG| xdsp_11 | HT16K33 | 0x70 - 0x77 | | Seven segment LED
|
||||
48 | USE_AS3935 | xsns_67 | AS3935 | 0x03 | | Franklin Lightning Sensor
|
||||
49 | USE_VEML6075 | xsns_70 | VEML6075 | 0x10 | | UVA/UVB/UVINDEX Sensor
|
||||
50 | USE_VEML7700 | xsns_71 | VEML7700 | 0x10 | | Ambient light intensity sensor
|
||||
51 | USE_MCP9808 | xsns_72 | MCP9808 | 0x18 - 0x1F | | Temperature sensor
|
||||
52 | USE_HP303B | xsns_73 | HP303B | 0x76 - 0x77 | | Pressure and temperature sensor
|
||||
53 | USE_MLX90640 | xdrv_43 | MLX90640 | 0x33 | | IR array temperature sensor
|
||||
54 | USE_VL53L1X | xsns_77 | VL53L1X | 0x29 | | Time-of-flight (ToF) distance sensor
|
||||
55 | USE_EZOPH | xsns_78 | EZOPH | 0x61 - 0x70 | | pH sensor
|
||||
55 | USE_EZOORP | xsns_78 | EZOORP | 0x61 - 0x70 | | ORP sensor
|
||||
55 | USE_EZORTD | xsns_78 | EZORTD | 0x61 - 0x70 | | Temperature sensor
|
||||
55 | USE_EZOHUM | xsns_78 | EZOHUM | 0x61 - 0x70 | | Humidity sensor
|
||||
55 | USE_EZOEC | xsns_78 | EZOEC | 0x61 - 0x70 | | Electric conductivity sensor
|
||||
55 | USE_EZOCO2 | xsns_78 | EZOCO2 | 0x61 - 0x70 | | CO2 sensor
|
||||
55 | USE_EZOO2 | xsns_78 | EZOO2 | 0x61 - 0x70 | | O2 sensor
|
||||
55 | USE_EZOPRS | xsns_78 | EZOPRS | 0x61 - 0x70 | | Pressure sensor
|
||||
55 | USE_EZOFLO | xsns_78 | EZOFLO | 0x61 - 0x70 | | Flow meter sensor
|
||||
55 | USE_EZODO | xsns_78 | EZODO | 0x61 - 0x70 | | Disolved Oxygen sensor
|
||||
55 | USE_EZORGB | xsns_78 | EZORGB | 0x61 - 0x70 | | Color sensor
|
||||
55 | USE_EZOPMP | xsns_78 | EZOPMP | 0x61 - 0x70 | | Peristaltic Pump
|
||||
56 | USE_SEESAW_SOIL | xsns_81 | SEESOIL | 0x36 - 0x39 | | Adafruit seesaw soil moisture sensor
|
||||
57 | USE_TOF10120 | xsns_84 | TOF10120 | 0x52 | | Time-of-flight (ToF) distance sensor
|
||||
58 | USE_MPU_ACCEL | xsns_85 | MPU_ACCEL| 0x68 | Yes | MPU6886/MPU9250 6-axis MotionTracking sensor from M5Stack
|
||||
59 | USE_BM8563 | xdrv_56 | BM8563 | 0x51 | Yes | BM8563 RTC from M5Stack
|
||||
60 | USE_AM2320 | xsns_88 | AM2320 | 0x5C | | Temperature and Humidity sensor
|
||||
61 | USE_T67XX | xsns_89 | T67XX | 0x15 | | CO2 sensor
|
||||
62 | USE_SCD40 | xsns_92 | SCD40 | 0x62 | | CO2 sensor Sensirion SCD40/SCD41
|
||||
63 | USE_HM330X | xsns_93 | HM330X | 0x40 | | Particule sensor
|
||||
64 | USE_HDC2010 | xsns_94 | HDC2010 | 0x40 | | Temperature and Humidity sensor
|
||||
65 | USE_ADE7880 | xnrg_23 | ADE7880 | 0x38 | | Energy monitor
|
||||
66 | USE_PCF85363 | xsns_99 | PCF85363 | 0x51 | | Real time clock
|
||||
67 | USE_DS3502 | xdrv_61 | DS3502 | 0x28 - 0x2B | | Digital potentiometer
|
||||
68 | USE_HYT | xsns_97 | HYTxxx | 0x28 | Yes | Temperature and Humidity sensor
|
||||
69 | USE_SGP40 | xsns_98 | SGP40 | 0x59 | | Gas (TVOC) and air quality
|
||||
70 | USE_LUXV30B | xsns_99 | LUXV30B | 0x4A | | DFRobot SEN0390 V30B lux sensor
|
||||
71 | USE_QMC5883L | xsns_33 | QMC5883L | 0x0D | | Magnetic Field Sensor
|
||||
72 | USE_INA3221 | xsns_100 | INA3221 | 0x40-0x43 | | 3-channels Voltage and Current sensor
|
||||
73 | USE_HMC5883L | xsns_101 | HMC5883L | 0x1E | | 3-channels Magnetic Field Sensor
|
||||
74 | USE_DISPLAY_TM1650 | xdsp_20 | TM1650 | 0x24 - 0x27, 0x34 - 0x37 | | Four-digit seven-segment LED controller
|
||||
75 | USE_PCA9632 | xdrv_64 | PCA9632 | 0x60 | | 4-channel 4-bit pwm driver
|
||||
76 | USE_SEN5X | xsns_103 | SEN5X | 0x69 | Yes | Gas (VOC/NOx index) and air quality (PPM <1,<2.5,<4,<10)
|
||||
77 | USE_MCP23XXX_DRV | xdrv_67 | MCP23x17 | 0x20 - 0x26 | | 16-bit I/O expander as virtual button/switch/relay
|
||||
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
|
||||
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
|
||||
84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | | Gas (TVOC, eCO2) and air quality sensor
|
||||
85 | USE_ENS210 | xsns_112 | ENS210 | 0x43 - 0x44 | | Temperature and humidity sensor
|
||||
|
||||
NOTE: Bus2 supported on ESP32 only.
|
||||
|
@ -6,7 +6,7 @@ _Written for PlatformIO._
|
||||
[](http://ota.tasmota.com/tasmota/release)
|
||||
[](https://github.com/arendst/Tasmota/releases/latest)
|
||||
[](LICENSE.txt)
|
||||
[](https://discord.gg/Ks2Kzd4)
|
||||
[](https://discord.gg/Ks2Kzd4)
|
||||
[](https://gitpod.io/#https://github.com/arendst/Tasmota)
|
||||
|
||||
<hr></hr>
|
||||
|
114
RELEASENOTES.md
114
RELEASENOTES.md
@ -75,7 +75,7 @@ Latest released binaries can be downloaded from
|
||||
- http://ota.tasmota.com/tasmota/release
|
||||
|
||||
Historical binaries can be downloaded from
|
||||
- http://ota.tasmota.com/tasmota/release-13.2.0
|
||||
- http://ota.tasmota.com/tasmota/release-13.3.0
|
||||
|
||||
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
|
||||
|
||||
@ -95,12 +95,18 @@ The following binary downloads have been compiled with ESP32/Arduino library cor
|
||||
- **tasmota32-webcam.bin** = The Webcam version adds webcam support for 4M+ flash.
|
||||
- **tasmota32-zbbridgepro.bin** - The Sonoff Zigbee Bridge Pro version with CC2652P firmware load support.
|
||||
|
||||
### ESP32-C2 and ESP32-C6 based
|
||||
The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.0-alpha3**.
|
||||
|
||||
- **tasmota32c2-arduino30.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C2 and 4M+ flash.
|
||||
- **tasmota32c6cdc-arduino30.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C6 with serial over embedded USB CDC or hardware USB and 4M+ flash.
|
||||
|
||||
Latest released binaries can be downloaded from
|
||||
- https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware
|
||||
- https://ota.tasmota.com/tasmota32/release
|
||||
|
||||
Historical binaries can be downloaded from
|
||||
- https://ota.tasmota.com/tasmota32/release-13.2.0
|
||||
- https://ota.tasmota.com/tasmota32/release-13.3.0
|
||||
|
||||
The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin``
|
||||
|
||||
@ -110,55 +116,69 @@ 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.2.0 Quincy
|
||||
## Changelog v13.3.0 Quinlan
|
||||
### Added
|
||||
- Experimental support for ESP32-C2 and ESP32-C6 using Arduino core v3
|
||||
- Commands to allow setting of timeprop parameters [#19310](https://github.com/arendst/Tasmota/issues/19310)
|
||||
- Command ``Mi32Name`` [#19619](https://github.com/arendst/Tasmota/issues/19619)
|
||||
- Variables ``%power<1..28>%`` and ``%switch<1..28>%`` to rules [#19331](https://github.com/arendst/Tasmota/issues/19331)
|
||||
- Support different baudrates on BL0942 energy monitor
|
||||
- Support for Shelly PlusPMMini, Plus1Mini and Plus1PMMini
|
||||
- Support for HDMI CEC protocol [#19434](https://github.com/arendst/Tasmota/issues/19434)
|
||||
- Support for ENS16x (air quality) and ENS210 (temp & RH) sensors [#19479](https://github.com/arendst/Tasmota/issues/19479)
|
||||
- Support for HC8 CO2 sensor [#19714](https://github.com/arendst/Tasmota/issues/19714)
|
||||
- Support for non-persistent ``WebButton17`` to ``WebButton32`` [#19580](https://github.com/arendst/Tasmota/issues/19580)
|
||||
- ESP32 commands ``Ds18Rescan`` and ``Ds18RetryRead`` [#19700](https://github.com/arendst/Tasmota/issues/19700)
|
||||
- ESP32 support for influxdb access using https [#19582](https://github.com/arendst/Tasmota/issues/19582)
|
||||
- Berry read and write Counters [#19558](https://github.com/arendst/Tasmota/issues/19558)
|
||||
- Matter support for Virtual Devices controllable via Rules or Berry [#19520](https://github.com/arendst/Tasmota/issues/19520)
|
||||
- Support for ESP32-C2 and ESP32-C6 using Arduino Core3
|
||||
- Command ``GpioRead`` to show input state [#19810](https://github.com/arendst/Tasmota/issues/19810)
|
||||
- Command ``WebCanvas linear-gradient(#F02 7%,#F93,#FF4,#082,#00F,#708 93%)`` to set GUI canvas
|
||||
- I2C bus2 support to iAQ core sensor [#19799](https://github.com/arendst/Tasmota/issues/19799)
|
||||
- I2C bus2 support to HTU temperature and humidity sensor
|
||||
- I2C bus2 support to BH1750 ambient light sensor
|
||||
- I2C bus2 support to ADS1115 A/D Converter
|
||||
- I2C bus2 support to SHTxX temperature and humidity sensor
|
||||
- I2C bus2 support to HYTxxx temperature and humidity sensor
|
||||
- I2C bus2 support to SI1145/6/7 Ultra violet index and light sensor
|
||||
- I2C bus2 support to LM75AD temperature sensor
|
||||
- Support for Winsen XH03x dust particle sensors using USE_PMS5003 and PMS_MODEL_ZH03X [#19850](https://github.com/arendst/Tasmota/issues/19850)
|
||||
- ST7735S display.ini for 1.44 inch 128x128 red SPI display [#19862](https://github.com/arendst/Tasmota/issues/19862)
|
||||
- Scripter TCP client [#19914](https://github.com/arendst/Tasmota/issues/19914)
|
||||
- NeoPool hydrolysis setpoint and max
|
||||
- NeoPool command ``NPFiltrationSpeed`` to set non-standard filtration type speed [#19857](https://github.com/arendst/Tasmota/issues/19857)
|
||||
- NeoPool command ``SetOption157`` to enable output of sensitive data [#19857](https://github.com/arendst/Tasmota/issues/19857)
|
||||
- NeoPool command ``NPBoost`` [#19973](https://github.com/arendst/Tasmota/issues/19973)
|
||||
- NeoPool sensor delta trigger (command ``NPTelePeriod``) [#19973](https://github.com/arendst/Tasmota/issues/19973)
|
||||
- NeoPool enhancements for HomeAssistant [#19857](https://github.com/arendst/Tasmota/issues/19857)
|
||||
- NeoPool store settings on unified file system [#19973](https://github.com/arendst/Tasmota/issues/19973)
|
||||
- DeepSleep support through TIMERS [#20117](https://github.com/arendst/Tasmota/issues/20117)
|
||||
- ESP32 auto TasConsole USB or Serial connection for Core3 by @staars
|
||||
- ESP32 Partition Wizard can be loaded dynamically [#19980](https://github.com/arendst/Tasmota/issues/19980)
|
||||
- ESP32 support for Avago Tech Bluetooth Buttons [#20088](https://github.com/arendst/Tasmota/issues/20088)
|
||||
- Berry ``debug.gcdebug()`` to enable GC debugging [#19936](https://github.com/arendst/Tasmota/issues/19936)
|
||||
- Berry AES_CBC to crypto module [#19964](https://github.com/arendst/Tasmota/issues/19964)
|
||||
- Berry `scale_int`, equivalent of `scale_uint` for signed integers [#20090](https://github.com/arendst/Tasmota/issues/20090)
|
||||
- HASPmota add styling properties [#19912](https://github.com/arendst/Tasmota/issues/19912)
|
||||
- Matter flow sensor support [#19852](https://github.com/arendst/Tasmota/issues/19852)
|
||||
|
||||
### Breaking Changed
|
||||
- `Sendmail` upgraded to ESP-Mail-Client v3.4.9 from v1.2.0, using BearSSL instead of MbedTLS [#19460](https://github.com/arendst/Tasmota/issues/19460)
|
||||
- Removed support for Homekit in favour of Matter [#19738](https://github.com/arendst/Tasmota/issues/19738)
|
||||
- NeoPool SENSOR topic ``Power`` renamed to ``Powerunit`` [#19857](https://github.com/arendst/Tasmota/issues/19857)
|
||||
- Remove Berry `every_200ms` event which didn't work anyways [#20205](https://github.com/arendst/Tasmota/issues/20205)
|
||||
|
||||
### Changed
|
||||
- ESP32 Framework (Arduino Core) from v2.0.11 to v2.0.14
|
||||
- ESP32 LVGL library from v8.3.8 to v8.3.10 (no functional change)
|
||||
- Display invert setting after tasmota start in uDisplay driver [#19337](https://github.com/arendst/Tasmota/issues/19337)
|
||||
- Consolidate SGP40 and SGP41 into SGP4x driver [#19560](https://github.com/arendst/Tasmota/issues/19560)
|
||||
- MAX31855/MAX6675 sensors driver support up to 6 [#19329](https://github.com/arendst/Tasmota/issues/19329)
|
||||
- Teleinfo use Apparent Power as Active Power approximation [#19756](https://github.com/arendst/Tasmota/issues/19756)
|
||||
- ESP32 LittleFS updated to version with grow option [#19635](https://github.com/arendst/Tasmota/issues/19635)
|
||||
- ESP32 I2S audio preparation for Arduino Core v3 [#19637](https://github.com/arendst/Tasmota/issues/19637)
|
||||
- ESP32 analog from `analogRead()` to calibrated `analogReadMilliVolts()` [#19732](https://github.com/arendst/Tasmota/issues/19732)
|
||||
- ESP32 Framework (Arduino Core3) from v3.0.0-alpha1 to v3.0.0-alpha3
|
||||
- ESP32 LVGL library from v8.3.10 to v8.3.11 (no functional change)
|
||||
- Increase MAX_HUE_DEVICES to 32 [#19820](https://github.com/arendst/Tasmota/issues/19820)
|
||||
- NeoPool ``NPHydrolysis`` percent and unit [#19924](https://github.com/arendst/Tasmota/issues/19924)
|
||||
- Thermostat JSON index from 0 to 1 [#20011](https://github.com/arendst/Tasmota/issues/20011)
|
||||
- MI32 updates [#19893](https://github.com/arendst/Tasmota/issues/19893)
|
||||
- ESP32 keep FileSystem intact when over flashing with VSC [#19816](https://github.com/arendst/Tasmota/issues/19816)
|
||||
- Berry leds animation refactoring stage 1 [#20197](https://github.com/arendst/Tasmota/issues/20197)
|
||||
- Berry ULP API changes for Core3/IDF5 [#20198](https://github.com/arendst/Tasmota/issues/20198)
|
||||
- Matter Light0 now accept a Relay number [#19809](https://github.com/arendst/Tasmota/issues/19809)
|
||||
- Matter update hierarchy of plugins [#19915](https://github.com/arendst/Tasmota/issues/19915)
|
||||
|
||||
### Fixed
|
||||
- Shutter invert [#19341](https://github.com/arendst/Tasmota/issues/19341) and [#19374](https://github.com/arendst/Tasmota/issues/19374)
|
||||
- Teleinfo power [#19381](https://github.com/arendst/Tasmota/issues/19381)
|
||||
- Exception 3 in IRHVAC [#19389](https://github.com/arendst/Tasmota/issues/19389)
|
||||
- PCF8574 mode 1 with base relays exception 3/28 regression from v12.4.0.4 [#19408](https://github.com/arendst/Tasmota/issues/19408)
|
||||
- ModbusBridge write memory leak [#19758](https://github.com/arendst/Tasmota/issues/19758)
|
||||
- Zigbee timezone when device reads LocalTime attribute [#19772](https://github.com/arendst/Tasmota/issues/19772)
|
||||
- ESP32 DS18x20 driver support extended over GPIO33
|
||||
- ESP32 Support for IPv6 link-local zones for esp-idf 5.1 (necessary for Matter)
|
||||
- ESP32 Shutter migration [#19454](https://github.com/arendst/Tasmota/issues/19454)
|
||||
- ESP32 Shutter multi press button events [#19465](https://github.com/arendst/Tasmota/issues/19465)
|
||||
- ESP32 Shutter button quad press [#19589](https://github.com/arendst/Tasmota/issues/19589)
|
||||
- ESP32 shutter frequency [#19717](https://github.com/arendst/Tasmota/issues/19717)
|
||||
- ESP32 Arduino Core v2 wifi client flush [#19642](https://github.com/arendst/Tasmota/issues/19642)
|
||||
- ESP32 Partition Wizard grow filesystem support [#19645](https://github.com/arendst/Tasmota/issues/19645)
|
||||
- ESP32-C3 relay click on restart
|
||||
- Matter support for Virtual Devices controllable via Rules or Berry [#19520](https://github.com/arendst/Tasmota/issues/19520)
|
||||
|
||||
### Removed
|
||||
- Support for Homekit in favour of Matter [#19738](https://github.com/arendst/Tasmota/issues/19738)
|
||||
- Compile USE_PID [#19890](https://github.com/arendst/Tasmota/issues/19890)
|
||||
- Scripter timer issue [#19914](https://github.com/arendst/Tasmota/issues/19914)
|
||||
- NeoPool filtration mode display [#19801](https://github.com/arendst/Tasmota/issues/19801)
|
||||
- ``changeUIntScale`` for linearity when expanding range [#20089](https://github.com/arendst/Tasmota/issues/20089)
|
||||
- TUYA state machine (in TUYA v1) [#20110](https://github.com/arendst/Tasmota/issues/20110)
|
||||
- ``WebQuery`` response buffer corruption and format character ``%`` [#20111](https://github.com/arendst/Tasmota/issues/20111)
|
||||
- ESP32 I2C allow bus2 support when bus1 is not enabled
|
||||
- ESP32 remove restart energy logging if no energy monitoring is selected
|
||||
- ESP32 IR receive with Arduino Core3 [#19904](https://github.com/arendst/Tasmota/issues/19904)
|
||||
- ESP32 Zero-Cross Dimmer for Core3 [#19929](https://github.com/arendst/Tasmota/issues/19929)
|
||||
- ESP32-C3 ledlink functionality regression from v13.1.0.2
|
||||
- ESP32 Neopixel flicker for Core3/IDF5 [#20196](https://github.com/arendst/Tasmota/issues/20196)
|
||||
- Berry parser error in specific cases [#20059](https://github.com/arendst/Tasmota/issues/20059)
|
||||
- Berry ``gpio.dac_voltage()`` regression from v13.1.0.1 [#19997](https://github.com/arendst/Tasmota/issues/19997)
|
||||
- HASPmota `bar` fixed `val` attribute [#20208](https://github.com/arendst/Tasmota/issues/20208)
|
||||
|
54
TEMPLATES.md
54
TEMPLATES.md
@ -5,7 +5,7 @@
|
||||
|
||||
# Templates
|
||||
|
||||
Find below the available templates as of October 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 December 2023. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
|
||||
|
||||
## Adapter Board
|
||||
```
|
||||
@ -183,7 +183,7 @@ HeyLight Plafoniera 30W CCT {"NAME":"HeyLight Ceiling Light","GPIO":[0,0,0,0,0,
|
||||
Hykolity 13" RGBCCT Flush Mount {"NAME":"Hykolity","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lamptan 3 Lights in 1 36W {"NAME":"Lamptan Smart Wi-Fi Ceiling Lamp LUMINA 36W","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
LE lampUX 15W RGBCCT {"NAME":"LE lampUX 15W","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
LightZone MeLiTec {"NAME":"LightZone MeLiTec D114 Light ","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,20 | TuyaMCU 21,22 | TuyaMCU 23,23 | DimmerRange 25,1000"}
|
||||
LightZone MeLiTec {"NAME":"LightZone MeLiTec D114 Light ","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Lohas ZN026CL10 RGBCCT {"NAME":"Lohas LED Lamp","GPIO":[0,0,0,0,417,416,0,0,419,418,420,0,0,0],"FLAG":0,"BASE":18}
|
||||
LOLAsmart Uranus White 70 cm {"NAME":"lola smart","GPIO":[0,0,0,1088,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
LSC 20W 1400lm White Ambiance {"NAME":"LSC RGBCW LED","GPIO":[0,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -301,6 +301,7 @@ Coiaca Tasmota Development Board AWR12 {"NAME":"AWR12t","GPIO":[320,1,1,1,1,1,0
|
||||
Dasduino CONNECT {"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}
|
||||
Freenove ESP32-WROOM {"NAME":"FREENOVE SP32 WROOM","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0],"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}
|
||||
KinCony 64 Channel Controller {"NAME":"KC868-A64","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}
|
||||
LC Technology MicroPython Maker {"NAME":"LC-ESP-Python","GPIO":[1,1,544,1,1,1,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
@ -314,6 +315,7 @@ Olimex ESP32-POE Ethernet {"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,
|
||||
QuinLED 2 Channel {"NAME":"QuinLED 2 channel","GPIO":[416,0,417,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Silicognition wESP32 {"NAME":"wESP32","GPIO":[0,0,1,0,1,1,0,0,1,1,1,1,5568,5600,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
TZT ESP8266 Weather Station Kit {"NAME":"TZT Weather Station","GPIO":[32,0,640,0,1,1184,0,0,1,1,608,1,1,1],"FLAG":0,"BASE":18}
|
||||
WeAct Studio ESP32 Core {"NAME":"ESP32CoreBoard","GPIO":[32,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,544,1,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
Wemos D1 Mini ESP32 {"NAME":"Wemos D1 Mini ESP32","GPIO":[0,0,1,0,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Wemos LOLIN32 Lite V1.0.0 (ESP32) {"NAME":"Wemos LOLIN32 Lite V1.0.0","GPIO":[1,0,1,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Wireless Tag ESP32 Ethernet {"NAME":"WT32_ETH01","GPIO":[1,1,1,1,1,1,0,0,1,0,1,1,3840,576,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
@ -456,11 +458,13 @@ QS-WiFi-D01-TRIAC 150W {"NAME":"QS-WiFi-D01-TRIAC","GPIO":[0,3200,0,3232,0
|
||||
RJWF-02A {"NAME":"RJWF-02A","GPIO":[32,2272,0,2304,0,0,0,0,0,0,288,0,0,0],"FLAG":0,"BASE":54}
|
||||
Shelly Dimmer {"NAME":"Shelly Dimmer 1","GPIO":[0,3200,0,3232,5568,5600,0,0,192,0,193,288,0,4736],"FLAG":0,"BASE":18}
|
||||
Shelly Dimmer 2 {"NAME":"Shelly Dimmer 2","GPIO":[0,3200,0,3232,5568,5600,0,0,193,0,192,0,320,4736],"FLAG":0,"BASE":18}
|
||||
Shelly Plus 0-10V Dimmer {"NAME":"Shelly Plus 0-10V Dimmer","GPIO":[288,0,0,0,192,0,0,0,0,0,0,0,0,0,193,1,0,0,0,0,0,32,416,0,0,0,0,0,4736,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sonoff D1 {"NAME":"Sonoff D1","GPIO":[1,3200,0,3232,0,0,0,0,0,320,0,0,0,0],"FLAG":0,"BASE":74}
|
||||
```
|
||||
|
||||
## Display
|
||||
```
|
||||
Espressif ESP-WROVER-KIT {"NAME":"ESPWroverKit41","GPIO":[1,1,1,1,1,992,1,1,1,1,1,1,1,1,1024,736,0,800,768,704,0,672,6210,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
Heltec WiFi Kit 32 {"NAME":"WiFi Kit 32","GPIO":[1,1,1,1,640,1,1,1,1,1,1,608,3840,1,1,1,0,1,1,1,0,224,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
Heltec WiFi Kit 8 {"NAME":"WifiKit8","GPIO":[1,1,1,1,640,608,1,1,1,1,1,1,1024,1],"FLAG":0,"BASE":18}
|
||||
LilyGO T5 4.7 inch E-paper {"NAME":"LilyGO T5-4.7","GPIO":[0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,7616,0,0,0,0,0,0,0,0,0,0,33,34,4704,0,0,32],"FLAG":0,"BASE":1}
|
||||
@ -477,6 +481,7 @@ M5Stack M5StickC {"NAME":"M5StickC","GPIO":[1,0,0,0,0,768,1056,576,0
|
||||
M5Stack Tough {"NAME":"M5Stack Tough","GPIO":[6210,1,1,1,6720,768,0,0,0,1,1,800,0,0,736,1,0,641,609,704,0,0,0,1,0,0,0,0,640,608,1,1,1,0,672,7968],"FLAG":0,"BASE":1}
|
||||
ODROID-GO Game Kit {"NAME":"ODROID-GO","GPIO":[32,3200,544,3232,608,768,0,0,6210,33,416,640,1,1,736,672,0,800,6720,704,0,0,0,34,0,0,0,0,164,165,3328,3329,4866,0,0,35],"FLAG":0,"BASE":3}
|
||||
OLED Display Module 0.66" for Wemos D1 Mini {"NAME":"OLED 64x48","GPIO":[1,1,1,1,640,608,0,0,1,1,1,1,1024,1],"FLAG":0,"BASE":18}
|
||||
Sunton 2.8" 240*320 CYD {"NAME":"ESP32-2432S028","GPIO":[6210,1,800,0,448,0,1,1,672,704,736,768,449,450,1,1,0,992,1,1,0,737,480,1,0,0,0,0,705,7264,4768,1,0,0,0,673],"FLAG":0,"BASE":1}
|
||||
Wireless Tag 3.5" Touch {"NAME":"WT32-SC01","GPIO":[6210,1,1,1,1,1,0,0,1,704,736,768,1,1,640,608,1,800,1024,992,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
```
|
||||
|
||||
@ -591,6 +596,7 @@ Devola Designer Glass Panel {"NAME":"Devola Heater","GPIO":[0,0,0,0,224,1,0,0,0
|
||||
EBERG ROT 720 Infrared {"NAME":"Tuya MCU","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,4 | TuyaMCU 72,2 | TuyaMCU 71,3"}
|
||||
Klarstein Bornholm Smart 2000W {"NAME":"Klarstein Bornholm","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Kogan 1500W Panel {"NAME":"Kogan Panel Heater","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
LSC Smart Connect 500W IR Panel {"NAME":"LSC Connect Smart IR Panel Heater","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
SmartMi Electric Air {"NAME":"ZNNFJ07ZM","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,3200,3232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
```
|
||||
|
||||
@ -618,12 +624,13 @@ BlitzWolf BW-RC1 {"NAME":"BW-RC1","GPIO":[0,0,0,0,320,1088,0,0,0,32,
|
||||
Connect SmartHome Universal Remote {"NAME":"CSH IR Controller","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
Cusam CS-IRC-1 {"NAME":"YTF IR Controller","GPIO":[1,1,1,1,288,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
Eachen IR DC6 {"NAME":"Eachen IR","GPIO":[0,0,0,0,320,1088,0,0,1,32,1056,0,0,0],"FLAG":0,"BASE":18}
|
||||
ESP_IR_TR {"NAME":"Tasmota IR-Gateway","GPIO":[0,0,0,0,1056,0,0,0,0,0,1088,0,0,0],"FLAG":0,"BASE":18}
|
||||
Frankever Smart Remote {"NAME":"FK-UFO-R4","GPIO":[1,1,1,1,288,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
Geeklink GK01 {"NAME":"GL IR Blaster","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
HIPER IoT IR2 {"NAME":"hiper_HI-IR2","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
Jinvoo AC/TV Box {"NAME":"Jinvoo IR Controller","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
JS-IR1 Universal Remote {"NAME":"JS-IR1","GPIO":[1,1,1,1,288,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":18}
|
||||
KinCony ESP32 433MHz RF and {"NAME":"KC868-AG","GPIO":[0,0,1056,0,480,0,0,0,0,0,1,0,1,1,1,1,0,1,1120,1152,0,7968,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1,"CMND":"BuzzerPwm 1"}
|
||||
KinCony ESP32 433MHz RF and {"NAME":"KC868-AG","GPIO":[0,0,1056,0,480,0,0,0,0,1152,1,0,1,1,1,1,0,1,1120,1088,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1,"CMND":"BuzzerPwm 1"}
|
||||
Lenovo SE-741C {"NAME":"Lenovo IR","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
Mirabella Genio I002577 {"NAME":"Genio IR TxRx","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
Moes Tuya Remote Control {"NAME":"Moes IR Controller","GPIO":[1,1,1,1,1,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
|
||||
@ -864,12 +871,13 @@ Sinilink PCIe Computer Remote {"NAME":"XY-WPCE","GPIO":[1,1,320,1,32,224,0,0,16
|
||||
Sinilink USB Computer Remote {"NAME":"XY-WPCL","GPIO":[0,0,320,0,0,224,0,32,160,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO114 1 | Pulsetime 10 | SwitchMode1 2"}
|
||||
Sinilink XY-Clock Clock Alarm Module {"NAME":"XY-Clock","GPIO":[288,0,289,0,0,416,32,33,608,640,0,0,34,0],"FLAG":0,"BASE":18}
|
||||
Sunbeam LoftTec Electric Blanket {"NAME":"Sunbeam Heated Blanket","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Ulanzi Smart Pixel Clock {"NAME":"Ulanzi TC001","GPIO":[0,0,0,0,0,0,0,0,0,0,34,480,0,0,0,0,0,640,608,0,0,0,32,33,0,0,0,0,1376,0,4704,4768,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Ulanzi Smart Pixel Clock {"NAME":"Ulanzi TC001","GPIO":[0,0,0,0,0,0,0,0,0,0,34,480,0,0,0,0,0,640,608,0,0,0,32,33,0,0,0,0,1376,0,4705,4768,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Xystec USB3.0 4 Port Hub {"NAME":"Xystec USB Hub","GPIO":[0,0,0,0,224,0,0,0,226,227,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## Module
|
||||
```
|
||||
Ants Make 16 Channel ESP32 Relay Driver 5V DC {"NAME":"AM-022","GPIO":[1,1,1,1,232,237,1,1,228,231,229,1,233,230,234,235,0,238,239,236,0,224,227,226,0,0,0,0,1,225,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
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}
|
||||
@ -899,13 +907,18 @@ Tuya Alarm PIR {"NAME":"CT61W","GPIO":[0,0,0,0,0,0,0,0,0,160,480,2
|
||||
```
|
||||
Steren Curtain {"NAME":"Steren_SHOME-155","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54,"CMND":"SO54 1|SO20 1|TuyaMCU 61,1|TuyaMCU 21,2|TuyaMCU 27,3|TuyaMCU 97,5|TuyaMCU 11,6|TuyaMCU 62,7|TuyaMCU 63,8|TuyaMCU 81,9|TuyaMCU 98,10|TuyaMCU 82,11"}
|
||||
Zemismart BCM300D-TY {"NAME":"Zemistart_Curt","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
Zemismart Blinds Controller {"NAME":"Zemismart Blind","GPIO":[1,1,1,1,1,1,0,0,1,2304,1,2272,1,0],"FLAG":0,"BASE":54}
|
||||
Zemismart Blinds Controller {"NAME":"Zemismart Blind WBR3","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,7|TuyaMCU 21,2"}
|
||||
Zemismart Curtain {"NAME":"Zemismart_Curt","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
Zemismart Rechargeable Roller Shade {"NAME":"Zemismart Remote","GPIO":[544,0,288,33,225,32,0,0,34,226,289,224,290,0],"FLAG":0,"BASE":18}
|
||||
Zemismart Roller Shade {"NAME":"M2805EIGB","GPIO":[1,2272,1,2304,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
Zemismart Updated RF Remote Roller Shade {"NAME":"Zemismart M515EGB","GPIO":[1,2272,1,2304,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
```
|
||||
|
||||
## Other
|
||||
```
|
||||
Kogan SmarterHome 1.9L Pet Water Fountain {"NAME":"WaterFountain","GPIO":[257,0,259,0,576,32,0,0,224,161,0,480,226,4704],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## Outdoor Plug
|
||||
```
|
||||
Acenx SOP04-US Dual {"NAME":"SOP04-US Dual","GPIO":[1,1,1,1,320,321,0,0,224,32,225,1,1,0],"FLAG":0,"BASE":18}
|
||||
@ -962,6 +975,7 @@ Maxcio EOP03-EU {"NAME":"Maxcio EOP03-EU","GPIO":[0,0,0,0,225,321,0
|
||||
Maxcio SOP02-US {"NAME":"Maxcio SOP02US","GPIO":[0,0,0,0,0,544,0,0,224,32,225,0,0,1],"FLAG":0,"BASE":18}
|
||||
Merkury {"NAME":"Merkury Switch","GPIO":[32,0,0,0,0,321,0,0,0,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Merkury {"NAME":"Merkury Switch","GPIO":[0,0,0,0,32,0,0,0,0,224,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Meross MSS620 16A IP44 {"NAME":"MSS620","GPIO":[0,320,0,320,225,0,0,0,224,576,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
Minoston MP22W {"NAME":"Minoston MP22W","GPIO":[0,0,0,0,320,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nedis PO120 IP44 {"NAME":"WIFIPO120FWT","GPIO":[32,0,0,0,2688,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
|
||||
Obi Stecker IP44 {"NAME":"OBI-Outdoor-Socket2","GPIO":[0,0,0,0,224,32,0,0,576,288,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
@ -1036,7 +1050,7 @@ Aquiv S1 {"NAME":"Aquiv S1","GPIO":[0,0,544,0,320,0,0,0,224,
|
||||
Arlec 10m Smart Extension Lead {"NAME":"Arlec Ext Cord","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Heavy Duty 20m Extension Lead {"NAME":"Arlec Ext Cord","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Plug In Socket {"NAME":"PC191HA","GPIO":[0,32,0,0,2720,2656,0,0,2624,224,288,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Plug In Socket {"NAME":"PC191HAS2","GPIO":[0,0,0,32,2656,2624,0,0,224,2720,320,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Plug In Socket {"NAME":"PC191HAS2 CB2S","GPIO":[0,0,0,32,2656,2624,0,0,224,2720,320,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Smart {"NAME":"Arlec-PC190HA","GPIO":[0,0,0,0,320,0,0,0,224,576,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Smart {"NAME":"PC399HA","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":52}
|
||||
Arlec Smart 2.1A USB Charger {"NAME":"Arlec Single","GPIO":[0,0,0,0,321,0,0,0,224,0,64,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1053,11 +1067,11 @@ Athom 16A EU V2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0
|
||||
Athom 16A Israel {"NAME":"Athom Power Monitoring Plug","GPIO":[0,0,0,32,2720,2656,0,0,2624,544,224,0,0,1],"FLAG":0,"BASE":18}
|
||||
Athom 16A Israel v2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 16A Italy {"NAME":"Athom PG05-IT16A","GPIO":[0,0,0,32,2720,2656,0,0,2624,544,224,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 16A Switzerland v2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 16A UK {"NAME":"Athom PG04-UK16A","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 16A UK V2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 16A US {"NAME":"Athom PG03-US16A","GPIO":[0,0,0,32,2720,2656,0,0,2624,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 16A US V2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom Plug V3 {"NAME":"Athom Plug V3","GPIO":[0,0,0,32,0,224,576,0,0,0,0,0,0,0,0,0,0,0,0,0,3104,0],"FLAG":0,"BASE":1}
|
||||
Atlantis {"NAME":"Atlantis Smart Plug","GPIO":[32,0,0,0,2720,2656,0,0,2624,544,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Atomi AT1217 {"NAME":"AT1217","GPIO":[0,0,0,0,320,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Aubess 16A {"NAME":"Aubess 16A Power Monitoring Plug","GPIO":[0,32,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1083,10 +1097,10 @@ Avatto OT08 {"NAME":"Avatto OT08","GPIO":[416,0,418,0,417,2720,
|
||||
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}
|
||||
AWP08L 20A {"NAME":"AWP08L","GPIO":[0,0,0,32,0,0,0,0,0,0,224,0,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}
|
||||
Baco Smart Power Socket {"NAME":"Balco HE200021","GPIO":[0,0,0,32,2720,2656,0,0,2624,576,224,0,0,0],"FLAG":0,"BASE":52}
|
||||
Bagotte SK-EU-A01 {"NAME":"Bagotte SK-EU-A01","GPIO":[96,0,0,0,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Bakibo Mini {"NAME":"SM300","GPIO":[320,0,576,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":59}
|
||||
Bakibo TP22Y {"NAME":"Bakibo TP22Y","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":52}
|
||||
Bardi 16A {"NAME":"BARDI","GPIO":[320,0,0,0,0,2720,0,0,224,32,2656,321,2624,0],"FLAG":0,"BASE":18}
|
||||
Bauhn ASPU-1019 {"NAME":"Bauhn Smart Pl","GPIO":[0,0,0,0,224,225,0,0,0,320,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1180,6 +1194,7 @@ DWFeng AWP02L-N {"NAME":"AWP02L-N","GPIO":[1,1,320,1,1,1,0,0,1,32,1
|
||||
DWFeng BSD01 {"NAME":"DWFeng BSD01","GPIO":[1,1,1,1,1,1,1,1,224,32,320,1,1,1],"FLAG":0,"BASE":18}
|
||||
ECO Plugs CT-065W {"NAME":"ECO/CT-065W","GPIO":[0,0,576,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
eco4life DPS1101S {"NAME":"Eco4Life Plug","GPIO":[0,0,0,0,288,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Edisio 10A {"NAME":"Edisio Wifi Timer","GPIO":[1,1,1,1,1,1,1,1,1,1,32,1,320,1,1,1,1,1,1,1,1,1,224,1,1,1,1,1,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":1}
|
||||
ednet 84334 {"NAME":"84334","GPIO":[0,0,0,0,320,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
eFamilyCloud ASDFEE174 {"NAME":"eFamily Plug","GPIO":[0,0,0,0,288,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
EFUN SH330W {"NAME":"EFUNPlug","GPIO":[320,1,1,1,1,1,1,1,1,32,1,224,1,1],"FLAG":0,"BASE":18}
|
||||
@ -1343,6 +1358,7 @@ Koogeek KLSP2 {"NAME":"KOOGEEK KLSP2","GPIO":[321,3072,320,3104,0
|
||||
Koogeek KLWP1 {"NAME":"Koogeek-KLWP1","GPIO":[544,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":1}
|
||||
Koogeek W-DEXI {"NAME":"W-DEXI","GPIO":[0,64,0,0,2720,2656,0,0,2592,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Koogeek W-UKX {"NAME":"Koogeek W-UKX","GPIO":[0,32,1,1,1,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":1}
|
||||
Kruger & Matz Connect P2 {"NAME":"KM2200","GPIO":[0,0,321,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
KULED K63 {"NAME":"KULED K63","GPIO":[0,0,0,0,224,32,0,0,320,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Laduo YX-DE01 {"NAME":"YX-DE01","GPIO":[1,32,1,1,1,1,0,0,1,320,224,1,1,0],"FLAG":0,"BASE":18}
|
||||
LE LampUX Smart Socket {"NAME":"LE LampUX","GPIO":[0,0,0,0,0,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1406,7 +1422,7 @@ MoKo 2 USB {"NAME":"MoKo Plug","GPIO":[0,32,0,0,0,0,0,0,0,321,
|
||||
MoKo YX-WS01A {"NAME":"MoKo Plug","GPIO":[0,32,0,0,0,0,0,0,0,321,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Muvit iO MIOSMP008 {"NAME":"MIOSMP008","GPIO":[0,0,0,32,2656,2624,0,0,224,2720,320,0,0,0],"FLAG":0,"BASE":1}
|
||||
MXQ LED Nightlight {"NAME":"MXQ SP06","GPIO":[0,0,0,0,288,192,0,0,225,321,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nanxin NX-SM400 {"NAME":"NX-SM400","GPIO":[0,0,0,32,2720,2656,0,0,2592,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nanxin {"NAME":"NX-SM400","GPIO":[0,0,0,32,2720,2656,0,0,2592,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Naxa NSH-1000 {"NAME":"Naxa NSH-1000","GPIO":[0,0,0,0,32,0,0,0,321,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nedis P110 {"NAME":"Nedis WIFIP110","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
|
||||
Nedis P120 {"NAME":"WIFIP120EWT","GPIO":[32,0,0,0,2688,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
|
||||
@ -1507,7 +1523,7 @@ SM-PW701K {"NAME":"SM-PW701K","GPIO":[0,0,0,0,288,0,0,0,224,3
|
||||
Smaho {"NAME":"SMAHO WiFi P.","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Smart 15A {"NAME":"JH-G09U","GPIO":[0,0,0,0,224,32,0,0,288,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Smart Plug {"NAME":"SO08WP","GPIO":[1,1,1,32,2688,2656,1,1,2624,288,224,1,1,1],"FLAG":0,"BASE":18}
|
||||
SmartDGM PP-W162 {"NAME":"SmartDGM Plug","GPIO":[0,0,0,32,2720,2656,0,0,2624,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
SmartDGM PP-W162 {"NAME":"SmartDGM Plug","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
SmartGrade {"NAME":"SmartGrade AC","GPIO":[32,0,0,0,2688,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
|
||||
SmartVU Home {"NAME":"SHWSP1","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":52}
|
||||
Smitch 16A {"NAME":"Smitch SP0602","GPIO":[321,1,320,1,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
@ -1797,6 +1813,8 @@ ZLD64-EU-W {"NAME":"ZLD64-EU-W","GPIO":[0,320,0,32,225,224,0,0
|
||||
|
||||
## Presence Sensor
|
||||
```
|
||||
Everything Presence Lite {"NAME":"Everything Presence Lite","GPIO":[0,0,0,0,0,0,0,0,0,0,544,0,3232,3200,160,161,0,640,608,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Everything Presence One {"NAME":"Everything Presence One","GPIO":[0,0,0,0,0,0,0,0,0,3200,3232,160,0,1,1,1,0,0,1,1,0,608,640,0,0,0,0,0,544,161,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"SO114 1 | SwitchMode1 1 | SwitchMode2 1"}
|
||||
Tuya mmWave {"NAME":"ZY-M100","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"SO97 1 | TuyaMCU 99,1 | TuyaMCU 75,104"}
|
||||
```
|
||||
|
||||
@ -1819,7 +1837,6 @@ muvit IO miobulb001 600lm {"NAME":"miobulb001","GPIO":[0,0,0,0,419,0,0,0,417,
|
||||
Oobest ZN93028 11W {"NAME":"RGB Bulb 11W","GPIO":[0,0,0,0,419,0,0,0,417,418,416,0,0,4704],"FLAG":0,"BASE":18}
|
||||
SuperBrightLEDs 3W 70lm 12V {"NAME":"G4-RGB3W","GPIO":[0,0,0,0,417,0,0,0,418,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
V-Tac P45 4.5W 300lm {"NAME":"V-TAC VT-5154","GPIO":[0,0,0,0,0,0,0,0,4065,0,4032,0,0,0],"FLAG":0,"BASE":18}
|
||||
Wipro Garnet NS7001 480lm {"NAME":"WiproSmartBulb","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## RGBCCT
|
||||
@ -2006,6 +2023,7 @@ WdtPro 8W 800lm {"NAME":"WdtPro","GPIO":[0,0,0,0,419,420,0,0,417,41
|
||||
Wipro Garnet 9W 810lm {"NAME":"Wipro","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
WiZ BR30 13.8W 750lm {"NAME":"WiZ RGBCCT PAR30","GPIO":[0,0,0,0,419,0,0,0,417,420,418,416,0,0],"FLAG":0,"BASE":48}
|
||||
Wiz Colors A19 8.8w 800lm {"NAME":"Wiz Colors RGBCCT","GPIO":[0,0,0,0,419,0,0,0,416,420,418,417,0,0],"FLAG":0,"BASE":48}
|
||||
Wiz Colors A21 14.5w 1600lm {"NAME":"WIZ-922-65","GPIO":[1,1,420,1,419,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,416,417,418,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
WiZ PAR16 4.9W 400lm {"NAME":"WIZ GU10","GPIO":[0,0,420,0,419,416,0,0,0,0,0,0,0,0,417,418,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Xtricity A19 10W 800lm {"NAME":"XTRICITY A19 10W 800LM RGBCCT BULB","GPIO":[0,0,0,0,416,419,0,0,417,452,418,2304,2272,0],"FLAG":0,"BASE":48}
|
||||
Zemismart 5W 480lm {"NAME":"Zemismart 5W","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -2154,6 +2172,7 @@ MoKo GU10 {"NAME":"MoKo GU10","GPIO":[1,1,1,1,418,1,1,1,417,4
|
||||
MoKo JL81 5W 400lm {"NAME":"MoKo E14","GPIO":[0,0,0,0,0,0,0,0,3008,0,3040,0,0,0],"FLAG":0,"BASE":27}
|
||||
MOKO YX-L01C-E14 A60 810lm {"NAME":"MOKO","GPIO":[32,0,0,0,3008,3040,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":27}
|
||||
Nedis 4.5W 380lm {"NAME":"Nedis RGBW","GPIO":[0,0,0,0,2912,416,0,0,417,2976,2944,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nedis 6W 450lm {"NAME":"WIFILC10WTB22","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nedis 6W 470lm {"NAME":"nedis Bulb","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
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}
|
||||
@ -2200,6 +2219,7 @@ V-TAC A95 18W 1350lm {"NAME":"V-TAC VT-5021","GPIO":[0,0,0,0,416,420,0,0
|
||||
V-TAC G45 4.5W 300lm {"NAME":"V-TAC VT-5124","GPIO":[0,0,0,0,0,0,0,0,4065,0,4032,0,0,0],"FLAG":0,"BASE":18}
|
||||
Vivitar 1100lm {"NAME":"Vivitar (Tuya) RGBW Lamp","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Wallfire WF-05 {"NAME":"Wallfire E27","GPIO":[32,0,0,0,0,0,0,0,0,3008,0,3040,0,0],"FLAG":0,"BASE":27}
|
||||
Wipro Garnet NS7001 480lm {"NAME":"Wipro Garnet NS7001","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Wixann C37 5W 450lm {"NAME":"WIXANNE12","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Woopower 460lm {"NAME":"Woopower E14","GPIO":[0,0,0,0,0,0,0,0,0,3008,0,3040,0,0],"FLAG":0,"BASE":27}
|
||||
WOOX 4W 350lm {"NAME":"WOOX R4553","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -2341,8 +2361,10 @@ T13 100W PD3.0 Portable {"NAME":"PTS200","GPIO":[0,0,33,0,34,0,0,0,6210,0,3
|
||||
```
|
||||
3 Way Smart Light {"NAME":"KS-602F","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
3A Smart Home {"NAME":"3A Smart Home ","GPIO":[544,0,290,33,225,34,0,0,32,224,289,226,288,0],"FLAG":0,"BASE":18}
|
||||
4 Gang Light Touch {"NAME":"03O","GPIO":[32,0,0,0,226,225,33,34,224,260,35,227,0,0],"FLAG":0,"BASE":7}
|
||||
AGL 2 Gang {"NAME":"AGL WiFi 02","GPIO":[0,0,544,0,0,33,0,0,225,224,0,0,32,0],"FLAG":0,"BASE":18}
|
||||
AGL 3 Gang {"NAME":"AGL WiFi 03","GPIO":[0,0,544,0,34,33,0,0,225,224,226,0,32,0],"FLAG":0,"BASE":18}
|
||||
AmmToo 433Mhz 2 Gang US Light {"NAME":"Dual band touch switch","GPIO":[0,0,0,32,33,0,0,0,0,224,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Aoycocr SW1 {"NAME":"Aoycocr SW1","GPIO":[576,1,321,1,1,1,1,1,320,32,1,224,1,1],"FLAG":0,"BASE":18}
|
||||
APPIO 1 Gang Switch {"NAME":"Appio-9608","GPIO":[0,0,0,0,0,32,0,0,0,0,0,224,288,0],"FLAG":0,"BASE":18}
|
||||
Appio 3 Gang Touch {"NAME":"Appio-9611","GPIO":[0,0,0,0,224,33,0,0,34,226,32,225,288,0],"FLAG":0,"BASE":18}
|
||||
@ -2406,6 +2428,7 @@ Eachen 3CH {"NAME":"Eachen Smart Switch 3CH","GPIO":[34,0,0,0,
|
||||
Eachen CD303 3 Gang {"NAME":"ID Components","GPIO":[544,289,0,162,224,161,0,0,160,225,290,226,288,1],"FLAG":0,"BASE":18}
|
||||
Eachen SWT-2Gang {"NAME":"ID Components","GPIO":[544,1,1,1,1,161,1,1,160,224,289,225,288,1],"FLAG":0,"BASE":18}
|
||||
Earda 3-Way {"NAME":"ESW-1WAA-US","GPIO":[160,0,0,0,320,0,0,0,0,224,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
EJLINK RF433 2 Gang {"NAME":"EJLINK EK02","GPIO":[32,0,0,0,0,225,33,0,224,544,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Enjowi WF-SK301 {"NAME":"Tuya 3 Channel","GPIO":[0,0,0,0,226,33,0,0,32,224,34,225,544,0],"FLAG":0,"BASE":18}
|
||||
Esooli 1 Gang {"NAME":"Esooli 1G","GPIO":[0,288,0,0,0,32,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Esooli 2 Gang 1 Way {"NAME":"Esooli 2 gang","GPIO":[0,288,0,32,33,0,0,0,0,224,225,0,0,0],"FLAG":0,"BASE":1}
|
||||
@ -2441,6 +2464,7 @@ Jinvoo SM-SW101-2 {"NAME":"SM-SW101-2","GPIO":[288,0,0,33,225,0,0,0,3
|
||||
Jinvoo SM-SW101-3 {"NAME":"Jinvoo Wall Sw","GPIO":[288,0,0,33,225,34,0,0,32,224,0,226,0,4704],"FLAG":0,"BASE":18}
|
||||
KaBuM! 15A 3 Gang Touch {"NAME":"Kabum Switch 3","GPIO":[0,0,0,0,226,33,0,0,32,224,34,225,576,0],"FLAG":0,"BASE":18}
|
||||
Kauf RGB Wall {"NAME":"Kauf SRF10","GPIO":[448,1,450,1,450,449,1,1,449,32,448,224,1,1],"FLAG":0,"BASE":18}
|
||||
Ketotek {"NAME":"KETOTEK KTSS1NU","GPIO":[0,0,0,0,0,32,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
KingArt 1 Gang {"NAME":"KING-L1","GPIO":[0,0,0,0,0,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
KingArt 3 Gang {"NAME":"KING-L3","GPIO":[0,0,0,0,226,225,0,0,224,164,165,0,167,0],"FLAG":0,"BASE":18}
|
||||
KMC 70008 {"NAME":"KMC 70008","GPIO":[32,1,1,0,0,1,0,0,0,320,224,1,1,0],"FLAG":0,"BASE":18}
|
||||
@ -2603,6 +2627,11 @@ Sonoff TX T4 EU No Neutral 1 Gang {"NAME":"Sonoff T4 1CH","GPIO":[32,1,1,1,0,0,
|
||||
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"}
|
||||
Sonoff TX Ultimate 4 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 US 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 US 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 US 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"}
|
||||
Sonoff TX Ultimate US 4 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"}
|
||||
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}
|
||||
@ -2632,6 +2661,8 @@ TreatLife 3-Way {"NAME":"Treatlife 3-Way","GPIO":[0,0,0,0,224,576,0
|
||||
TreatLife Single Pole ON/OFF {"NAME":"Treatlife SS02","GPIO":[0,0,0,0,288,576,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Tuya 20A {"NAME":"DS-161","GPIO":[544,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
Tuya 3 Gang {"NAME":"KING-Tuya-key","GPIO":[0,0,0,0,226,225,0,0,224,32,34,0,33,0],"FLAG":0,"BASE":18}
|
||||
Tuya T1 2 Gang No Neutral {"NAME":"Tuya T1 Wifi 2 Gang No Neutral Switch","GPIO":[32,0,0,0,0,225,33,0,224,544,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Tuya T1 3 Gang No Neutral {"NAME":"Tuya T1 Wifi 3 Gang No Neutral Switch","GPIO":[32,0,0,0,226,225,33,34,224,544,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
TY-US-L1-W {"NAME":"TY-US-L1-W","GPIO":[0,0,0,0,0,32,0,0,0,224,0,0,576,0],"FLAG":0,"BASE":18}
|
||||
TY-US-L3-W {"NAME":"TY-US-L3-W","GPIO":[0,0,0,0,224,33,0,0,34,226,32,225,576,1],"FLAG":0,"BASE":18}
|
||||
Useelink 1 Gang {"NAME":"USEELINK-SW-1G","GPIO":[288,0,0,0,0,0,0,0,32,224,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -2718,6 +2749,7 @@ Nous 1 Channel Touch {"NAME":"NOUS L1T","GPIO":[544,0,1,32,0,0,0,0,0,224
|
||||
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}
|
||||
ONiOFF Smart Switch {"NAME":"ONOFF SmartSwitch","GPIO":[1,320,1,1,1,32,0,0,224,1,1,0,0,0],"FLAG":0,"BASE":1}
|
||||
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}
|
||||
QS-WIFI-S03 {"NAME":"QS-WIFI-S03","GPIO":[32,1,1,1,1,0,0,0,192,224,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
|
@ -31,7 +31,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32-safeboot.bin"
|
||||
"tasmota32-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -31,7 +31,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32-safeboot.bin"
|
||||
"tasmota32-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -31,7 +31,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32solo1-safeboot.bin"
|
||||
"tasmota32solo1-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -7,7 +7,7 @@
|
||||
"extra_flags": "-DESP32_4M -DESP32C2",
|
||||
"f_cpu": "120000000L",
|
||||
"f_flash": "60000000L",
|
||||
"flash_mode": "dio",
|
||||
"flash_mode": "qio",
|
||||
"mcu": "esp32c2",
|
||||
"variant": "esp32c2",
|
||||
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
|
||||
@ -23,13 +23,13 @@
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "Espressif Generic ESP32-C2 = 4M Flash",
|
||||
"name": "Espressif Generic ESP32-C2 = 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
|
||||
"upload": {
|
||||
"arduino": {
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32c2-safeboot.bin"
|
||||
"tasmota32c2-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -7,7 +7,7 @@
|
||||
"extra_flags": "-DESP32_2M -DESP32C2",
|
||||
"f_cpu": "120000000L",
|
||||
"f_flash": "60000000L",
|
||||
"flash_mode": "dio",
|
||||
"flash_mode": "qio",
|
||||
"mcu": "esp32c2",
|
||||
"variant": "esp32c2",
|
||||
"partitions": "partitions/esp32_partition_app1245k_fs64k.csv"
|
||||
@ -29,7 +29,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32c2-safeboot.bin"
|
||||
"tasmota32c2-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -29,7 +29,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32c3-safeboot.bin"
|
||||
"tasmota32c3-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -17,6 +17,10 @@
|
||||
"bluetooth"
|
||||
],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": [
|
||||
"esp-builtin"
|
||||
],
|
||||
"openocd_target": "esp32c3.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
@ -29,7 +33,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32c3cdc-safeboot.bin"
|
||||
"tasmota32c3cdc-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
@ -37,7 +41,6 @@
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"before_reset": "usb_reset",
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
|
||||
|
@ -29,7 +29,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32c6-safeboot.bin"
|
||||
"tasmota32c6-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -17,6 +17,10 @@
|
||||
"bluetooth"
|
||||
],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": [
|
||||
"esp-builtin"
|
||||
],
|
||||
"openocd_target": "esp32c6.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
@ -29,7 +33,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32c6cdc-safeboot.bin"
|
||||
"tasmota32c6cdc-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
@ -37,7 +41,6 @@
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"before_reset": "usb_reset",
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
|
||||
|
@ -28,7 +28,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32s2-safeboot.bin"
|
||||
"tasmota32s2-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -28,7 +28,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32s2cdc-safeboot.bin"
|
||||
"tasmota32s2cdc-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
@ -37,7 +37,6 @@
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"before_reset": "usb_reset",
|
||||
"after_reset": "no_reset",
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html",
|
||||
|
46
boards/esp32s3-opi_opi.json
Normal file
46
boards/esp32s3-opi_opi.json
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32s3_out.ld",
|
||||
"memory_type": "opi_opi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "dout",
|
||||
"mcu": "esp32s3",
|
||||
"variant": "esp32s3",
|
||||
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth",
|
||||
"ethernet"
|
||||
],
|
||||
"debug": {
|
||||
"openocd_target": "esp32s3.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"espidf",
|
||||
"arduino"
|
||||
],
|
||||
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
|
||||
"upload": {
|
||||
"arduino": {
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"tasmota32s3-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
"flash_size": "4MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
|
||||
"vendor": "Espressif"
|
||||
}
|
@ -31,7 +31,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32s3-safeboot.bin"
|
||||
"tasmota32s3-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -31,7 +31,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32s3-safeboot.bin"
|
||||
"tasmota32s3-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
|
56
boards/esp32s3cdc-opi_opi.json
Normal file
56
boards/esp32s3cdc-opi_opi.json
Normal file
@ -0,0 +1,56 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32s3_out.ld",
|
||||
"memory_type": "opi_opi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "dout",
|
||||
"hwids": [
|
||||
[
|
||||
"0x303A",
|
||||
"0x1001"
|
||||
]
|
||||
],
|
||||
"mcu": "esp32s3",
|
||||
"variant": "esp32s3",
|
||||
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth",
|
||||
"ethernet"
|
||||
],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": [
|
||||
"esp-builtin"
|
||||
],
|
||||
"openocd_target": "esp32s3.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"espidf",
|
||||
"arduino"
|
||||
],
|
||||
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
|
||||
"upload": {
|
||||
"arduino": {
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"tasmota32s3cdc-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
"flash_size": "4MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
|
||||
"vendor": "Espressif"
|
||||
}
|
@ -41,7 +41,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32s3cdc-safeboot.bin"
|
||||
"tasmota32s3cdc-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
@ -49,7 +49,6 @@
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"before_reset": "usb_reset",
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
|
||||
|
@ -41,7 +41,7 @@
|
||||
"flash_extra_images": [
|
||||
[
|
||||
"0x10000",
|
||||
"variants/tasmota/tasmota32s3cdc-safeboot.bin"
|
||||
"tasmota32s3cdc-safeboot.bin"
|
||||
]
|
||||
]
|
||||
},
|
||||
@ -49,7 +49,6 @@
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"before_reset": "usb_reset",
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
|
||||
|
@ -58,38 +58,15 @@
|
||||
#define FSPI_HOST SPI2_HOST
|
||||
#define HSPI_HOST SPI3_HOST
|
||||
#define VSPI_HOST SPI3_HOST
|
||||
#ifndef REG_SPI_BASE
|
||||
#define REG_SPI_BASE(i) (DR_REG_SPI1_BASE + (((i)>1) ? (((i)* 0x1000) + 0x20000) : (((~(i)) & 1)* 0x1000 )))
|
||||
// SPI_MOSI_DLEN_REG is not defined anymore in esp32s3, instead use SPI_MS_DLEN_REG
|
||||
// SPI_MOSI_DLEN_REG is not defined anymore in esp32s3
|
||||
#define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x)
|
||||
#endif // REG_SPI_BASE
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C3
|
||||
#elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
|
||||
#define SPI_HOST SPI1_HOST
|
||||
#define HSPI_HOST SPI2_HOST
|
||||
#define VSPI_HOST SPI2_HOST /* No SPI3_host on C3 */
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
// fix a bug in esp-idf 4.4 for esp32c3
|
||||
#ifndef REG_SPI_BASE
|
||||
#define REG_SPI_BASE(i) (DR_REG_SPI1_BASE + (((i)>1) ? (((i)* 0x1000) + 0x20000) : (((~(i)) & 1)* 0x1000 )))
|
||||
// SPI_MOSI_DLEN_REG is not defined anymore in esp32c3, instead use SPI_MS_DLEN_REG
|
||||
#define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x)
|
||||
#endif // REG_SPI_BASE
|
||||
#endif //ESP_IDF_VERSION_MAJOR < 5
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C6
|
||||
#define SPI_HOST SPI1_HOST
|
||||
#define HSPI_HOST SPI1_HOST /* No SPI2_host on C2/C6 */
|
||||
#define VSPI_HOST SPI1_HOST /* No SPI3_host on C2/C6 */
|
||||
#define VSPI_HOST SPI2_HOST /* No SPI3_host on C2/C6 */
|
||||
#define VSPI SPI
|
||||
// #if ESP_IDF_VERSION_MAJOR < 5
|
||||
// // fix a bug in esp-idf 4.4 for esp32c3
|
||||
// #ifndef REG_SPI_BASE
|
||||
// #define REG_SPI_BASE(i) (DR_REG_SPI1_BASE + (((i)>1) ? (((i)* 0x1000) + 0x20000) : (((~(i)) & 1)* 0x1000 )))
|
||||
// // SPI_MOSI_DLEN_REG is not defined anymore in esp32c3, instead use SPI_MS_DLEN_REG
|
||||
// SPI_MOSI_DLEN_REG is not defined anymore
|
||||
#define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x)
|
||||
// #endif // REG_SPI_BASE
|
||||
// #endif //ESP_IDF_VERSION_MAJOR < 5
|
||||
|
||||
|
||||
#endif // TARGET
|
||||
|
@ -8,7 +8,7 @@ Automatic payload encryption is applied using the WiFi-password1 as the key. A m
|
||||
As ACK/NACK messages seem to be not reliable on both ESP-platforms, the method "send-and-pray" is used.
|
||||
|
||||
|
||||
## Working priciple
|
||||
## Working principle
|
||||
|
||||
An ESP32 is needed as gateway/broker to connect the nodes (typically an ESP8266) to the WLAN. The ESP32 will receive the MQTT-topic of every node and subscribe to it as a proxy.
|
||||
If a MQTT-message in the form of 'cmnd/node_topic/...' is received, the broker will automatically send this to the referring node via ESP-NOW.
|
||||
|
@ -248,8 +248,8 @@ static void USE_IRAM_ATTR gpio_intr() {
|
||||
timer->dev->config.alarm_en = 1;
|
||||
#else // _ESP32_IRRECV_TIMER_HACK
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 3) )
|
||||
timerAlarm(timer, MS_TO_USEC(params.timeout), ONCE, 0);
|
||||
timerAttachInterrupt(timer, &read_timeout);
|
||||
timerWrite(timer, 0);
|
||||
timerStart(timer);
|
||||
#else // ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||
timerWrite(timer, 0);
|
||||
timerAlarmEnable(timer);
|
||||
@ -344,7 +344,10 @@ IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize,
|
||||
IRrecv::~IRrecv(void) {
|
||||
disableIRIn();
|
||||
#if defined(ESP32)
|
||||
if (timer != NULL) timerEnd(timer); // Cleanup the ESP32 timeout timer.
|
||||
if (timer != NULL) {
|
||||
timerEnd(timer); // Cleanup the ESP32 timeout timer.
|
||||
timer = NULL;
|
||||
}
|
||||
#endif // ESP32
|
||||
delete[] params.rawbuf;
|
||||
if (params_save != NULL) {
|
||||
@ -370,9 +373,9 @@ void IRrecv::enableIRIn(const bool pullup) {
|
||||
// Initialise the ESP32 timer.
|
||||
// 80MHz / 80 = 1 uSec granularity.
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 3) )
|
||||
timer = timerBegin(80);
|
||||
timer = timerBegin(1000000); // 1 MHz
|
||||
#else // ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||
timer = timerBegin(_timer_num, 80, true);
|
||||
timer = timerBegin(_timer_num, 80, true); // 1 MHz : 80 MHz with divider 80
|
||||
#endif // ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||
#ifdef DEBUG
|
||||
if (timer == NULL) {
|
||||
@ -382,8 +385,8 @@ void IRrecv::enableIRIn(const bool pullup) {
|
||||
#endif // DEBUG
|
||||
assert(timer != NULL); // Check we actually got the timer.
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 3) )
|
||||
timerAlarm(timer, MS_TO_USEC(params.timeout), ONCE, 0);
|
||||
timerAttachInterrupt(timer, &read_timeout);
|
||||
timerAlarm(timer, MS_TO_USEC(params.timeout), ONCE, 0);
|
||||
#else // ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||
// Set the timer so it only fires once, and set it's trigger in uSeconds.
|
||||
timerAlarmWrite(timer, MS_TO_USEC(params.timeout), ONCE);
|
||||
@ -418,6 +421,7 @@ void IRrecv::disableIRIn(void) {
|
||||
#endif // ESP8266
|
||||
#if defined(ESP32)
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 3) )
|
||||
timerDetachInterrupt(timer);
|
||||
timerEnd(timer);
|
||||
#else // ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||
timerAlarmDisable(timer);
|
||||
@ -450,7 +454,7 @@ void IRrecv::resume(void) {
|
||||
params.overflow = false;
|
||||
#if defined(ESP32)
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 3) )
|
||||
timerEnd(timer);
|
||||
timerStop(timer);
|
||||
#else // ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||
timerAlarmDisable(timer);
|
||||
#endif // ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||
|
@ -513,7 +513,7 @@ public:
|
||||
rmt_tx_channel_config_t config = {};
|
||||
config.clk_src = RMT_CLK_SRC_DEFAULT;
|
||||
config.gpio_num = static_cast<gpio_num_t>(_pin);
|
||||
config.mem_block_symbols = 64; // memory block size, 64 * 4 = 256 Bytes
|
||||
config.mem_block_symbols = 192; // memory block size, 64 * 4 = 256 Bytes
|
||||
config.resolution_hz = RMT_LED_STRIP_RESOLUTION_HZ; // 1 MHz tick resolution, i.e., 1 tick = 1 µs
|
||||
config.trans_queue_depth = 4; // set the number of transactions that can pend in the background
|
||||
config.flags.invert_out = false; // do not invert output signal
|
||||
@ -529,7 +529,9 @@ public:
|
||||
|
||||
// ESP_LOGI(TAG, "Enable RMT TX channel");
|
||||
ret += rmt_enable(_channel.RmtChannelNumber);
|
||||
AddLog(2,"RMT:initialized with error code: %u on pin: %u",ret, _pin);
|
||||
// if (ret) {
|
||||
// AddLog(2,"RMT: initialized with error code: %u on pin: %u",ret, _pin);
|
||||
// }
|
||||
}
|
||||
|
||||
void Update(bool maintainBufferConsistency)
|
||||
|
@ -328,8 +328,9 @@ public:
|
||||
|
||||
_spi_strip->bytes_per_pixel = bytes_per_pixel;
|
||||
_spi_strip->strip_len = _pixelCount;
|
||||
|
||||
AddLog(2,"SPI:initialized with error code: %u on pin: %u",ret, _pin);
|
||||
// if (ret) {
|
||||
// AddLog(2,"SPI: initialized with error code: %u on pin: %u",ret, _pin);
|
||||
// }
|
||||
return;
|
||||
err:
|
||||
if (_spi_strip) {
|
||||
@ -341,7 +342,9 @@ public:
|
||||
}
|
||||
free(_spi_strip);
|
||||
}
|
||||
AddLog(2,"SPI-Error:initialized with error code: %u on pin: %u",ret, _pin);
|
||||
// if (ret) {
|
||||
// AddLog(2,"SPI-Error:initialized with error code: %u on pin: %u",ret, _pin);
|
||||
// }
|
||||
return;
|
||||
}
|
||||
|
||||
|
Binary file not shown.
@ -206,8 +206,10 @@ be_extern_native_class(AXP192);
|
||||
be_extern_native_class(AXP202);
|
||||
be_extern_native_class(OneWire);
|
||||
be_extern_native_class(Leds_ntv);
|
||||
be_extern_native_class(Leds_frame);
|
||||
be_extern_native_class(Leds);
|
||||
be_extern_native_class(Leds_animator);
|
||||
be_extern_native_class(Leds_pulse);
|
||||
be_extern_native_class(AudioGenerator);
|
||||
be_extern_native_class(AudioFileSource);
|
||||
be_extern_native_class(AudioOutputI2S);
|
||||
@ -276,7 +278,9 @@ BERRY_LOCAL bclass_array be_class_table = {
|
||||
#ifdef USE_WS2812
|
||||
&be_native_class(Leds_ntv),
|
||||
&be_native_class(Leds),
|
||||
&be_native_class(Leds_frame),
|
||||
&be_native_class(Leds_animator),
|
||||
&be_native_class(Leds_pulse),
|
||||
#endif // USE_WS2812
|
||||
#ifdef USE_ENERGY_SENSOR
|
||||
&be_native_class(energy_struct),
|
||||
|
@ -596,6 +596,24 @@ void load_global_info(bvm *vm, void *fp)
|
||||
be_global_release_space(vm);
|
||||
}
|
||||
|
||||
bclosure* be_bytecode_load_from_fs(bvm *vm, void *fp)
|
||||
{
|
||||
int version = load_head(fp);
|
||||
if (version == BYTECODE_VERSION) {
|
||||
bclosure *cl = be_newclosure(vm, 0);
|
||||
var_setclosure(vm->top, cl);
|
||||
be_stackpush(vm);
|
||||
load_global_info(vm, fp);
|
||||
load_proto(vm, fp, &cl->proto, -1, version);
|
||||
be_stackpop(vm, 2); /* pop the closure and list */
|
||||
be_fclose(fp);
|
||||
return cl;
|
||||
}
|
||||
bytecode_error(vm, be_pushfstring(vm,
|
||||
"invalid bytecode version."));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bclosure* be_bytecode_load(bvm *vm, const char *filename)
|
||||
{
|
||||
void *fp = be_fopen(filename, "rb");
|
||||
@ -603,22 +621,9 @@ bclosure* be_bytecode_load(bvm *vm, const char *filename)
|
||||
bytecode_error(vm, be_pushfstring(vm,
|
||||
"can not open file '%s'.", filename));
|
||||
} else {
|
||||
int version = load_head(fp);
|
||||
if (version == BYTECODE_VERSION) {
|
||||
bclosure *cl = be_newclosure(vm, 0);
|
||||
var_setclosure(vm->top, cl);
|
||||
be_stackpush(vm);
|
||||
load_global_info(vm, fp);
|
||||
load_proto(vm, fp, &cl->proto, -1, version);
|
||||
be_stackpop(vm, 2); /* pop the closure and list */
|
||||
be_fclose(fp);
|
||||
return cl;
|
||||
}
|
||||
bytecode_error(vm, be_pushfstring(vm,
|
||||
"invalid bytecode version '%s'.", filename));
|
||||
return be_bytecode_load_from_fs(vm, fp);
|
||||
}
|
||||
bytecode_error(vm, be_pushfstring(vm,
|
||||
"invalid bytecode file '%s'.", filename));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* BE_USE_BYTECODE_LOADER */
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
void be_bytecode_save(bvm *vm, const char *filename, bproto *proto);
|
||||
bclosure* be_bytecode_load(bvm *vm, const char *filename);
|
||||
bclosure* be_bytecode_load_from_fs(bvm *vm, void *fp);
|
||||
bbool be_bytecode_check(const char *path);
|
||||
|
||||
#endif
|
||||
|
@ -364,7 +364,7 @@ static uint32_t buf_get3_le(buf_impl* attr, size_t offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint16_t buf_get3_be(buf_impl* attr, size_t offset)
|
||||
static uint32_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);
|
||||
|
@ -478,11 +478,7 @@ static int exp2reg(bfuncinfo *finfo, bexpdesc *e, int dst)
|
||||
reg = e->v.idx;
|
||||
} else {
|
||||
/* otherwise, we allocate a new register or use the target provided */
|
||||
if (dst < 0) {
|
||||
reg = be_code_allocregs(finfo, 1);
|
||||
} else {
|
||||
reg = dst;
|
||||
}
|
||||
reg = (dst < 0) ? be_code_allocregs(finfo, 1) : dst;
|
||||
}
|
||||
be_code_conjump(finfo, &e->t, jpt);
|
||||
pcf = code_bool(finfo, reg, 0, 1);
|
||||
@ -690,16 +686,20 @@ static void setsfxvar(bfuncinfo *finfo, bopcode op, bexpdesc *e1, int src)
|
||||
|
||||
/* Assign expr e2 to e1 */
|
||||
/* e1 must be in a register and have a valid idx */
|
||||
/* if `keep_reg` is true, do not release registre */
|
||||
/* if `keep_reg` is true, do not release register */
|
||||
/* return 1 if assignment was possible, 0 if type is not compatible */
|
||||
int be_code_setvar(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2, bbool keep_reg)
|
||||
{
|
||||
/* free_e2 indicates special case where ETINDEX or ETMEMBER need to be freed if top of registers */
|
||||
bbool free_e2 = (e2->type == ETINDEX || e2->type == ETMEMBER) && (e2->v.ss.idx != e1->v.idx) && (e2->v.ss.idx == finfo->freereg - 1);
|
||||
int src = exp2reg(finfo, e2,
|
||||
e1->type == ETLOCAL ? e1->v.idx : -1); /* Convert e2 to kreg */
|
||||
/* If e1 is a local variable, use the register */
|
||||
|
||||
if (!keep_reg && (e1->type != ETLOCAL || e1->v.idx != src)) {
|
||||
free_expreg(finfo, e2); /* free source (checks only ETREG) */ /* TODO e2 is at top */
|
||||
} else if (!keep_reg && free_e2) {
|
||||
be_code_freeregs(finfo, 1);
|
||||
}
|
||||
switch (e1->type) {
|
||||
case ETLOCAL: /* It can't be ETREG. */
|
||||
|
@ -84,6 +84,19 @@ static int m_codedump(bvm *vm)
|
||||
be_return_nil(vm);
|
||||
}
|
||||
|
||||
static int m_gcdebug(bvm *vm) {
|
||||
int argc = be_top(vm);
|
||||
if (argc >= 1 && be_isbool(vm, 1)) {
|
||||
if (be_tobool(vm, 1)) {
|
||||
comp_set_gc_debug(vm);
|
||||
} else {
|
||||
comp_clear_gc_debug(vm);
|
||||
}
|
||||
}
|
||||
be_pushbool(vm, comp_is_gc_debug(vm));
|
||||
be_return(vm);
|
||||
}
|
||||
|
||||
static int m_traceback(bvm *vm)
|
||||
{
|
||||
be_tracestack(vm);
|
||||
@ -223,6 +236,7 @@ be_native_module_attr_table(debug) {
|
||||
be_native_module_function("varname", m_varname),
|
||||
be_native_module_function("upvname", m_upvname)
|
||||
#endif
|
||||
be_native_module_function("gcdebug", m_gcdebug)
|
||||
};
|
||||
|
||||
be_define_native_module(debug, NULL);
|
||||
@ -242,6 +256,8 @@ module debug (scope: global, depend: BE_USE_DEBUG_MODULE) {
|
||||
allocs, func(m_allocs)
|
||||
frees, func(m_frees)
|
||||
reallocs, func(m_reallocs)
|
||||
// GC debug mode
|
||||
gcdebug, func(m_gcdebug)
|
||||
}
|
||||
@const_object_info_end */
|
||||
#include "../generate/be_fixed_debug.h"
|
||||
|
@ -545,15 +545,9 @@ static void reset_fixedlist(bvm *vm)
|
||||
|
||||
void be_gc_auto(bvm *vm)
|
||||
{
|
||||
#if BE_USE_DEBUG_GC
|
||||
if (vm->gc.status & GC_PAUSE) { /* force gc each time it's possible */
|
||||
if (vm->gc.status & GC_PAUSE && (BE_USE_DEBUG_GC || vm->gc.usage > vm->gc.threshold || comp_is_gc_debug(vm))) {
|
||||
be_gc_collect(vm);
|
||||
}
|
||||
#else
|
||||
if (vm->gc.status & GC_PAUSE && vm->gc.usage > vm->gc.threshold) {
|
||||
be_gc_collect(vm);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
size_t be_gc_memcount(bvm *vm)
|
||||
|
@ -260,6 +260,7 @@ static void skip_comment(blexer *lexer)
|
||||
{
|
||||
next(lexer); /* skip '#' */
|
||||
if (lgetc(lexer) == '-') { /* mult-line comment */
|
||||
int lno = lexer->linenumber;
|
||||
int mark, c = 'x'; /* skip first '-' (#- ... -#) */
|
||||
do {
|
||||
mark = c == '-';
|
||||
@ -269,6 +270,9 @@ static void skip_comment(blexer *lexer)
|
||||
}
|
||||
c = next(lexer);
|
||||
} while (!(mark && c == '#') && c != EOS);
|
||||
if (c == EOS) {
|
||||
be_lexerror(lexer, be_pushfstring(lexer->vm, "unterminated comment block started in line %d", lno));
|
||||
}
|
||||
next(lexer); /* skip '#' */
|
||||
} else { /* line comment */
|
||||
while (!is_newline(lgetc(lexer)) && lgetc(lexer)) {
|
||||
|
@ -73,9 +73,9 @@ BERRY_API void* be_realloc(bvm *vm, void *ptr, size_t old_size, size_t new_size)
|
||||
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 */
|
||||
#endif
|
||||
if (BE_USE_DEBUG_GC || comp_is_gc_debug(vm)) {
|
||||
memset(ptr, 0xFF, old_size); /* fill the structure with invalid pointers */
|
||||
}
|
||||
free_from_pool(vm, ptr, old_size);
|
||||
break; /* early exit */
|
||||
}
|
||||
|
@ -268,13 +268,13 @@ void be_gcstrtab(bvm *vm)
|
||||
}
|
||||
}
|
||||
}
|
||||
#if BE_USE_DEBUG_GC == 0
|
||||
if (tab->count < size >> 2 && size > 8) {
|
||||
resize(vm, size >> 1);
|
||||
if (BE_USE_DEBUG_GC || comp_is_gc_debug(vm)) {
|
||||
resize(vm, tab->count + 4);
|
||||
} else {
|
||||
if (tab->count < size >> 2 && size > 8) {
|
||||
resize(vm, size >> 1);
|
||||
}
|
||||
}
|
||||
#else
|
||||
resize(vm, tab->count + 4);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t be_strhash(const bstring *s)
|
||||
|
@ -671,8 +671,17 @@ newframe: /* a new call frame */
|
||||
if (var_isint(a) && var_isint(b)) {
|
||||
var_setint(dst, ibinop(-, a, b));
|
||||
} else if (var_isnumber(a) && var_isnumber(b)) {
|
||||
#if CONFIG_IDF_TARGET_ESP32 /* when running on ESP32 in IRAM, there is a bug in early chip revision */
|
||||
union bvaldata x, y; // TASMOTA workaround for ESP32 rev0 bug
|
||||
x.i = a->v.i;
|
||||
if (var_isint(a)) { x.r = (breal) x.i; }
|
||||
y.i = b->v.i;
|
||||
if (var_isint(b)) { y.r = (breal) y.i; }
|
||||
var_setreal(dst, x.r - y.r);
|
||||
#else // CONFIG_IDF_TARGET_ESP32
|
||||
breal x = var2real(a), y = var2real(b);
|
||||
var_setreal(dst, x - y);
|
||||
#endif // CONFIG_IDF_TARGET_ESP32
|
||||
} else if (var_isinstance(a)) {
|
||||
ins_binop(vm, "-", ins);
|
||||
} else {
|
||||
@ -685,8 +694,17 @@ newframe: /* a new call frame */
|
||||
if (var_isint(a) && var_isint(b)) {
|
||||
var_setint(dst, ibinop(*, a, b));
|
||||
} else if (var_isnumber(a) && var_isnumber(b)) {
|
||||
#if CONFIG_IDF_TARGET_ESP32 /* when running on ESP32 in IRAM, there is a bug in early chip revision */
|
||||
union bvaldata x, y; // TASMOTA workaround for ESP32 rev0 bug
|
||||
x.i = a->v.i;
|
||||
if (var_isint(a)) { x.r = (breal) x.i; }
|
||||
y.i = b->v.i;
|
||||
if (var_isint(b)) { y.r = (breal) y.i; }
|
||||
var_setreal(dst, x.r * y.r);
|
||||
#else // CONFIG_IDF_TARGET_ESP32
|
||||
breal x = var2real(a), y = var2real(b);
|
||||
var_setreal(dst, x * y);
|
||||
#endif // CONFIG_IDF_TARGET_ESP32
|
||||
} else if (var_isinstance(a)) {
|
||||
ins_binop(vm, "*", ins);
|
||||
} else {
|
||||
@ -704,11 +722,23 @@ newframe: /* a new call frame */
|
||||
var_setint(dst, x / y);
|
||||
}
|
||||
} else if (var_isnumber(a) && var_isnumber(b)) {
|
||||
#if CONFIG_IDF_TARGET_ESP32 /* when running on ESP32 in IRAM, there is a bug in early chip revision */
|
||||
union bvaldata x, y; // TASMOTA workaround for ESP32 rev0 bug
|
||||
x.i = a->v.i;
|
||||
if (var_isint(a)) { x.r = (breal) x.i; }
|
||||
y.i = b->v.i;
|
||||
if (var_isint(b)) { y.r = (breal) y.i; }
|
||||
if (y.r == cast(breal, 0)) {
|
||||
vm_error(vm, "divzero_error", "division by zero");
|
||||
}
|
||||
var_setreal(dst, x.r / y.r);
|
||||
#else // CONFIG_IDF_TARGET_ESP32
|
||||
breal x = var2real(a), y = var2real(b);
|
||||
if (y == cast(breal, 0)) {
|
||||
vm_error(vm, "divzero_error", "division by zero");
|
||||
}
|
||||
var_setreal(dst, x / y);
|
||||
#endif // CONFIG_IDF_TARGET_ESP32
|
||||
} else if (var_isinstance(a)) {
|
||||
ins_binop(vm, "/", ins);
|
||||
} else {
|
||||
@ -721,7 +751,16 @@ newframe: /* a new call frame */
|
||||
if (var_isint(a) && var_isint(b)) {
|
||||
var_setint(dst, ibinop(%, a, b));
|
||||
} else if (var_isnumber(a) && var_isnumber(b)) {
|
||||
#if CONFIG_IDF_TARGET_ESP32 /* when running on ESP32 in IRAM, there is a bug in early chip revision */
|
||||
union bvaldata x, y; // TASMOTA workaround for ESP32 rev0 bug
|
||||
x.i = a->v.i;
|
||||
if (var_isint(a)) { x.r = (breal) x.i; }
|
||||
y.i = b->v.i;
|
||||
if (var_isint(b)) { y.r = (breal) y.i; }
|
||||
var_setreal(dst, mathfunc(fmod)(x.r, y.r));
|
||||
#else // CONFIG_IDF_TARGET_ESP32
|
||||
var_setreal(dst, mathfunc(fmod)(var_toreal(a), var_toreal(b)));
|
||||
#endif // CONFIG_IDF_TARGET_ESP32
|
||||
} else if (var_isinstance(a)) {
|
||||
ins_binop(vm, "%", ins);
|
||||
} else {
|
||||
|
@ -14,14 +14,19 @@
|
||||
#define comp_set_named_gbl(vm) ((vm)->compopt |= (1<<COMP_NAMED_GBL))
|
||||
#define comp_clear_named_gbl(vm) ((vm)->compopt &= ~(1<<COMP_NAMED_GBL))
|
||||
|
||||
#define comp_is_strict(vm) ((vm)->compopt & (1<<COMP_STRICT))
|
||||
#define comp_set_strict(vm) ((vm)->compopt |= (1<<COMP_STRICT))
|
||||
#define comp_clear_strict(vm) ((vm)->compopt &= ~(1<<COMP_STRICT))
|
||||
#define comp_is_strict(vm) ((vm)->compopt & (1<<COMP_STRICT))
|
||||
#define comp_set_strict(vm) ((vm)->compopt |= (1<<COMP_STRICT))
|
||||
#define comp_clear_strict(vm) ((vm)->compopt &= ~(1<<COMP_STRICT))
|
||||
|
||||
#define comp_is_gc_debug(vm) ((vm)->compopt & (1<<COMP_GC_DEBUG))
|
||||
#define comp_set_gc_debug(vm) ((vm)->compopt |= (1<<COMP_GC_DEBUG))
|
||||
#define comp_clear_gc_debug(vm) ((vm)->compopt &= ~(1<<COMP_GC_DEBUG))
|
||||
|
||||
/* Compilation options */
|
||||
typedef enum {
|
||||
COMP_NAMED_GBL = 0x00, /* compile with named globals */
|
||||
COMP_STRICT = 0x01, /* compile with named globals */
|
||||
COMP_NAMED_GBL = 0x00, /* compile with named globals */
|
||||
COMP_STRICT = 0x01, /* compile with named globals */
|
||||
COMP_GC_DEBUG = 0x02, /* compile with gc debug */
|
||||
} compoptmask;
|
||||
|
||||
typedef struct {
|
||||
|
@ -57,3 +57,24 @@ assert(s == "foo")
|
||||
def f(a,b) return b end
|
||||
l = [1,2,3,4]
|
||||
assert(f(l[-1],l[-2]) == 3)
|
||||
|
||||
# Compilation problem:
|
||||
# def test()
|
||||
# var line = '1234567890'
|
||||
# line = line[3..7]
|
||||
# # print(line)
|
||||
# for n : 1..2 end
|
||||
# end
|
||||
# test()
|
||||
|
||||
# BRY: Exception> 'attribute_error' - the 'range' object has no method '()'
|
||||
# stack traceback:
|
||||
# :5: in function `test`
|
||||
# :7: in function `main`
|
||||
def test()
|
||||
var line = '1234567890'
|
||||
line = line[3..7]
|
||||
# print(line)
|
||||
for n : 1..2 end
|
||||
end
|
||||
test()
|
||||
|
@ -104,7 +104,7 @@ class coc_parser:
|
||||
return r[0]
|
||||
|
||||
def parse_object(self):
|
||||
self.text = re.sub("\s+//.*?$", "", self.text, flags=re.MULTILINE) # remove trailing comments
|
||||
self.text = re.sub(r"\s+//.*?$", "", self.text, flags=re.MULTILINE) # remove trailing comments
|
||||
while True:
|
||||
obj = self.parse_block()
|
||||
self.objects.append(obj)
|
||||
|
@ -204,39 +204,41 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
|
||||
#include "solidify/solidified_Matter_Plugin_0.h"
|
||||
#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"
|
||||
|
||||
#include "solidify/solidified_Matter_Plugin_1_Root.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Aggregator.h"
|
||||
#include "solidify/solidified_Matter_Plugin_1_Aggregator.h"
|
||||
#include "solidify/solidified_Matter_Plugin_1_Device.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_OnOff.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_OnOff.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Light0.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Light0.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Light0.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Light1.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Light1.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Light1.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Light2.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Light2.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Light2.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Light3.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Light3.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Light3.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Shutter.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_ShutterTilt.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Sensor.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Flow.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Pressure.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Flow.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Temp.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Temp.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Illuminance.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Humidity.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Contact.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Sensor_Contact.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h"
|
||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h"
|
||||
#include "solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Bridge_Light0.h"
|
||||
@ -248,8 +250,11 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
|
||||
#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Occupancy.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Contact.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h"
|
||||
#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h"
|
||||
#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h"
|
||||
#include "solidify/solidified_Matter_Plugin_z_All.h"
|
||||
#include "solidify/solidified_Matter_zz_Device.h"
|
||||
|
||||
/*********************************************************************************************\
|
||||
* Get a bytes() object of the certificate DAC/PAI_Cert
|
||||
@ -429,48 +434,10 @@ module matter (scope: global, strings: weak) {
|
||||
DAC_Priv_FFF1_8000, func(matter_DAC_Priv_FFF1_8000)
|
||||
CD_FFF1_8000, func(matter_CD_FFF1_8000) // Certification Declaration
|
||||
|
||||
// Plugins
|
||||
// Plugins - only the core classes, all others are taken from `matter_device.plugins_classes`
|
||||
Plugin_Root, class(be_class_Matter_Plugin_Root) // Generic behavior common to all devices
|
||||
Plugin_Aggregator, class(be_class_Matter_Plugin_Aggregator) // Aggregator
|
||||
Plugin_Device, class(be_class_Matter_Plugin_Device) // Generic device (abstract)
|
||||
Plugin_OnOff, class(be_class_Matter_Plugin_OnOff) // Relay/Light behavior (OnOff)
|
||||
Plugin_Virt_OnOff, class(be_class_Matter_Plugin_Virt_OnOff) // Relay/Light virtual (OnOff)
|
||||
Plugin_Light0, class(be_class_Matter_Plugin_Light0) // OnOff Light
|
||||
Plugin_Virt_Light0, class(be_class_Matter_Plugin_Virt_Light0) // OnOff Light Virtual
|
||||
Plugin_Light1, class(be_class_Matter_Plugin_Light1) // Dimmable Light
|
||||
Plugin_Virt_Light1, class(be_class_Matter_Plugin_Virt_Light1) // Dimmable Light Virtual
|
||||
Plugin_Light2, class(be_class_Matter_Plugin_Light2) // Color Temperature Light
|
||||
Plugin_Virt_Light2, class(be_class_Matter_Plugin_Virt_Light2) // Color Temperature Light Virtual
|
||||
Plugin_Light3, class(be_class_Matter_Plugin_Light3) // Extended Color Light
|
||||
Plugin_Virt_Light3, class(be_class_Matter_Plugin_Virt_Light3) // Extended Color Light Virtual
|
||||
Plugin_Shutter, class(be_class_Matter_Plugin_Shutter) // Shutter
|
||||
Plugin_ShutterTilt, class(be_class_Matter_Plugin_ShutterTilt) // Shutter + Tilt
|
||||
Plugin_Sensor, class(be_class_Matter_Plugin_Sensor) // Generic Sensor
|
||||
Plugin_Sensor_Pressure, class(be_class_Matter_Plugin_Sensor_Pressure) // Pressure Sensor
|
||||
Plugin_Sensor_Virt_Pressure, class(be_class_Matter_Plugin_Virt_Sensor_Pressure) // Pressure Virtual Sensor
|
||||
Plugin_Sensor_Temp, class(be_class_Matter_Plugin_Sensor_Temp) // Temperature Sensor
|
||||
Plugin_Virt_Sensor_Temp, class(be_class_Matter_Plugin_Virt_Sensor_Temp) // Temperature Sensor
|
||||
Plugin_Sensor_Illuminance, class(be_class_Matter_Plugin_Sensor_Illuminance) // Illuminance Sensor
|
||||
Plugin_Virt_Sensor_Illuminance, class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) // Illuminance Virtual Sensor
|
||||
Plugin_Sensor_Humidity, class(be_class_Matter_Plugin_Sensor_Humidity) // Humidity Sensor
|
||||
Plugin_Sensor_Virt_Humidity, class(be_class_Matter_Plugin_Virt_Sensor_Humidity) // Humidity Virtual Sensor
|
||||
Plugin_Sensor_Occupancy, class(be_class_Matter_Plugin_Sensor_Occupancy) // Occupancy Sensor
|
||||
Plugin_Sensor_OnOff, class(be_class_Matter_Plugin_Sensor_OnOff) // Simple OnOff Sensor
|
||||
Plugin_Sensor_Contact, class(be_class_Matter_Plugin_Sensor_Contact) // Contact Sensor
|
||||
Plugin_Virt_Sensor_Contact, class(be_class_Matter_Plugin_Virt_Sensor_Contact) // Virtual Contact Sensor
|
||||
Plugin_Bridge_HTTP, class(be_class_Matter_Plugin_Bridge_HTTP) // HTTP bridge superclass
|
||||
Plugin_Bridge_OnOff, class(be_class_Matter_Plugin_Bridge_OnOff) // HTTP Relay/Light behavior (OnOff)
|
||||
Plugin_Bridge_Light0, class(be_class_Matter_Plugin_Bridge_Light0) // HTTP OnOff Light
|
||||
Plugin_Bridge_Light1, class(be_class_Matter_Plugin_Bridge_Light1) // HTTP Dimmer Light
|
||||
Plugin_Bridge_Light2, class(be_class_Matter_Plugin_Bridge_Light2) // HTTP CT Light
|
||||
Plugin_Bridge_Light3, class(be_class_Matter_Plugin_Bridge_Light3) // HTTP RGB Light
|
||||
Plugin_Bridge_Sensor, class(be_class_Matter_Plugin_Bridge_Sensor) // HTTP generic sensor
|
||||
Plugin_Bridge_Sensor_Pressure, class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) // HTTP Pressure sensor
|
||||
Plugin_Bridge_Sensor_Temp, class(be_class_Matter_Plugin_Bridge_Sensor_Temp) // HTTP Temperature sensor
|
||||
Plugin_Bridge_Sensor_Illuminance, class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) // HTTP Illuminance sensor
|
||||
Plugin_Bridge_Sensor_Humidity, class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) // HTTP Humidity sensor
|
||||
Plugin_Bridge_Sensor_Occupancy, class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) // HTTP Occupancy sensor
|
||||
Plugin_Bridge_Sensor_Contact, class(be_class_Matter_Plugin_Bridge_Sensor_Contact) // HTTP Contact sensor
|
||||
}
|
||||
|
||||
@const_object_info_end */
|
||||
|
@ -1,161 +0,0 @@
|
||||
#
|
||||
# Matter_Plugin_Light0.be - implements the behavior for a generic Lighting (OnOff only)
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import matter
|
||||
|
||||
# Matter plug-in for core behavior
|
||||
|
||||
#@ solidify:Matter_Plugin_Light0,weak
|
||||
|
||||
class Matter_Plugin_Light0 : Matter_Plugin_Device
|
||||
static var TYPE = "light0" # name of the plug-in in json
|
||||
static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in
|
||||
static var UPDATE_TIME = 250 # update every 250ms
|
||||
static var CLUSTERS = matter.consolidate_clusters(_class,
|
||||
{
|
||||
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
|
||||
# 0x0003: inherited # Identify 1.2 p.16
|
||||
# 0x0004: inherited # Groups 1.3 p.21
|
||||
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
|
||||
0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
|
||||
})
|
||||
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power")
|
||||
static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff
|
||||
|
||||
# Inherited
|
||||
# var device # reference to the `device` global object
|
||||
# var endpoint # current endpoint
|
||||
# var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
|
||||
# var tick # tick value when it was last updated
|
||||
# var node_label # name of the endpoint, used only in bridge mode, "" if none
|
||||
var shadow_onoff # (bool) status of the light power on/off
|
||||
|
||||
#############################################################
|
||||
# Constructor
|
||||
def init(device, endpoint, config)
|
||||
super(self).init(device, endpoint, config)
|
||||
self.shadow_onoff = false
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Update shadow
|
||||
#
|
||||
def update_shadow()
|
||||
if !self.VIRTUAL
|
||||
import light
|
||||
var light_status = light.get()
|
||||
if light_status != nil
|
||||
var pow = light_status.find('power', nil)
|
||||
if pow != self.shadow_onoff
|
||||
self.attribute_updated(0x0006, 0x0000)
|
||||
self.shadow_onoff = pow
|
||||
end
|
||||
end
|
||||
end
|
||||
super(self).update_shadow()
|
||||
end
|
||||
|
||||
def set_onoff(pow)
|
||||
if !self.VIRTUAL
|
||||
import light
|
||||
light.set({'power':pow})
|
||||
self.update_shadow()
|
||||
else
|
||||
if pow != self.shadow_onoff
|
||||
self.attribute_updated(0x0006, 0x0000)
|
||||
self.shadow_onoff = pow
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
|
||||
# ====================================================================================================
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- OnOff / bool ----------
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Invoke a command
|
||||
#
|
||||
# returns a TLV object if successful, contains the response
|
||||
# or an `int` to indicate a status
|
||||
def invoke_request(session, val, ctx)
|
||||
import light
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var command = ctx.command
|
||||
|
||||
# ====================================================================================================
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if command == 0x0000 # ---------- Off ----------
|
||||
self.set_onoff(false)
|
||||
self.publish_command('Power', 0)
|
||||
return true
|
||||
elif command == 0x0001 # ---------- On ----------
|
||||
self.set_onoff(true)
|
||||
self.publish_command('Power', 1)
|
||||
return true
|
||||
elif command == 0x0002 # ---------- Toggle ----------
|
||||
self.set_onoff(!self.shadow_onoff)
|
||||
self.publish_command('Power', self.shadow_onoff ? 1 : 0)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# find_val_i - get value of map case insensitive
|
||||
static def find_val_i(m, k)
|
||||
var key_i = tasmota.find_key_i(m, k)
|
||||
return m.find(key_i)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# update_virtual
|
||||
#
|
||||
# Update internal state for virtual devices
|
||||
def update_virtual(payload_json)
|
||||
var val_onoff = payload_json.find("Power")
|
||||
if val_onoff != nil
|
||||
self.set_onoff(bool(val_onoff))
|
||||
end
|
||||
super(self).update_virtual(payload_json)
|
||||
end
|
||||
|
||||
end
|
||||
matter.Plugin_Light0 = Matter_Plugin_Light0
|
@ -23,18 +23,19 @@ import matter
|
||||
|
||||
#@ solidify:Matter_Plugin_Light1,weak
|
||||
|
||||
class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
class Matter_Plugin_Light1 : Matter_Plugin_Device
|
||||
static var TYPE = "light1" # name of the plug-in in json
|
||||
static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in
|
||||
static var UPDATE_TIME = 250 # update every 250ms
|
||||
static var CLUSTERS = matter.consolidate_clusters(_class, {
|
||||
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
|
||||
# 0x0003: inherited # Identify 1.2 p.16
|
||||
# 0x0004: inherited # Groups 1.3 p.21
|
||||
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
|
||||
# 0x0006: inherited # On/Off 1.5 p.48
|
||||
0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
|
||||
0x0008: [0,2,3,0x0F,0x11,0xFFFC,0xFFFD], # Level Control 1.6 p.57
|
||||
})
|
||||
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Bri")
|
||||
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power", "Bri")
|
||||
static var TYPES = { 0x0101: 2 } # Dimmable Light
|
||||
|
||||
# Inherited
|
||||
@ -43,13 +44,14 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
# var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
|
||||
# var tick # tick value when it was last updated
|
||||
# var node_label # name of the endpoint, used only in bridge mode, "" if none
|
||||
# var shadow_onoff # (bool) status of the light power on/off
|
||||
var shadow_onoff # (bool) status of the light power on/off
|
||||
var shadow_bri # (int 0..254) brightness before Gamma correction - as per Matter 255 is not allowed
|
||||
|
||||
#############################################################
|
||||
# Constructor
|
||||
def init(device, endpoint, arguments)
|
||||
super(self).init(device, endpoint, arguments)
|
||||
self.shadow_onoff = false
|
||||
self.shadow_bri = 0
|
||||
end
|
||||
|
||||
@ -61,6 +63,11 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
import light
|
||||
var light_status = light.get()
|
||||
if light_status != nil
|
||||
var pow = light_status.find('power', nil)
|
||||
if pow != self.shadow_onoff
|
||||
self.attribute_updated(0x0006, 0x0000)
|
||||
self.shadow_onoff = pow
|
||||
end
|
||||
var bri = light_status.find('bri', nil)
|
||||
if bri != nil
|
||||
bri = tasmota.scale_uint(bri, 0, 255, 0, 254)
|
||||
@ -74,6 +81,19 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
super(self).update_shadow() # superclass manages 'power'
|
||||
end
|
||||
|
||||
def set_onoff(pow)
|
||||
if !self.VIRTUAL
|
||||
import light
|
||||
light.set({'power':pow})
|
||||
self.update_shadow()
|
||||
else
|
||||
if pow != self.shadow_onoff
|
||||
self.attribute_updated(0x0006, 0x0000)
|
||||
self.shadow_onoff = pow
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Set Bri
|
||||
#
|
||||
@ -113,7 +133,18 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
var attribute = ctx.attribute
|
||||
|
||||
# ====================================================================================================
|
||||
if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- OnOff / bool ----------
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
|
||||
return tlv_solo.set(TLV.U1, self.shadow_bri)
|
||||
@ -148,7 +179,23 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
var command = ctx.command
|
||||
|
||||
# ====================================================================================================
|
||||
if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if command == 0x0000 # ---------- Off ----------
|
||||
self.set_onoff(false)
|
||||
self.publish_command('Power', 0)
|
||||
return true
|
||||
elif command == 0x0001 # ---------- On ----------
|
||||
self.set_onoff(true)
|
||||
self.publish_command('Power', 1)
|
||||
return true
|
||||
elif command == 0x0002 # ---------- Toggle ----------
|
||||
self.set_onoff(!self.shadow_onoff)
|
||||
self.publish_command('Power', self.shadow_onoff ? 1 : 0)
|
||||
return true
|
||||
end
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
|
||||
self.update_shadow_lazy()
|
||||
if command == 0x0000 # ---------- MoveToLevel ----------
|
||||
var bri_254 = val.findsubval(0) # Hue 0..254
|
||||
@ -198,6 +245,8 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
if val_bri != nil
|
||||
self.set_bri(int(val_bri), val_onoff)
|
||||
return # don't call super() because we already handeld 'Power'
|
||||
elif val_onoff != nil
|
||||
self.set_onoff(bool(val_onoff))
|
||||
end
|
||||
super(self).update_virtual(payload_json)
|
||||
end
|
@ -49,7 +49,7 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device
|
||||
# The device calls regularly `tasmota.read_sensors()` and converts
|
||||
# it to json.
|
||||
def parse_sensors(payload)
|
||||
if self.tasmota_sensor_matcher
|
||||
if !self.VIRTUAL && self.tasmota_sensor_matcher
|
||||
var val = self.pre_value(real(self.tasmota_sensor_matcher.match(payload)))
|
||||
if val != nil
|
||||
if val != self.shadow_value
|
||||
|
@ -60,18 +60,19 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
|
||||
#
|
||||
def update_shadow()
|
||||
super(self).update_shadow()
|
||||
if !self.VIRTUAL
|
||||
import json
|
||||
var ret = tasmota.cmd("Status 8", true)
|
||||
if ret != nil
|
||||
var j = json.load(ret)
|
||||
if j != nil
|
||||
var state = false
|
||||
state = (j.find("Switch" + str(self.tasmota_switch_index)) == "ON")
|
||||
|
||||
import json
|
||||
var ret = tasmota.cmd("Status 8", true)
|
||||
if ret != nil
|
||||
var j = json.load(ret)
|
||||
if j != nil
|
||||
var state = false
|
||||
state = (j.find("Switch" + str(self.tasmota_switch_index)) == "ON")
|
||||
|
||||
if self.shadow_contact != state
|
||||
self.attribute_updated(0x0045, 0x0000)
|
||||
self.shadow_contact = state
|
||||
if self.shadow_contact != state
|
||||
self.attribute_updated(0x0045, 0x0000)
|
||||
self.shadow_contact = state
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -60,17 +60,19 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
|
||||
#
|
||||
def update_shadow()
|
||||
super(self).update_shadow()
|
||||
var switch_str = "Switch" + str(self.tasmota_switch_index)
|
||||
if !self.VIRTUAL
|
||||
var switch_str = "Switch" + str(self.tasmota_switch_index)
|
||||
|
||||
var j = tasmota.cmd("Status 8", true)
|
||||
if j != nil j = j.find("StatusSNS") end
|
||||
if j != nil && j.contains(switch_str)
|
||||
var state = (j.find(switch_str) == "ON")
|
||||
var j = tasmota.cmd("Status 8", true)
|
||||
if j != nil j = j.find("StatusSNS") end
|
||||
if j != nil && j.contains(switch_str)
|
||||
var state = (j.find(switch_str) == "ON")
|
||||
|
||||
if (self.shadow_occupancy != state)
|
||||
self.attribute_updated(0x0406, 0x0000)
|
||||
if (self.shadow_occupancy != state)
|
||||
self.attribute_updated(0x0406, 0x0000)
|
||||
end
|
||||
self.shadow_occupancy = state
|
||||
end
|
||||
self.shadow_occupancy = state
|
||||
end
|
||||
end
|
||||
|
@ -50,17 +50,19 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
|
||||
#
|
||||
def update_shadow()
|
||||
super(self).update_shadow()
|
||||
var switch_str = "Switch" + str(self.tasmota_switch_index)
|
||||
if !self.VIRTUAL
|
||||
var switch_str = "Switch" + str(self.tasmota_switch_index)
|
||||
|
||||
var j = tasmota.cmd("Status 8", true)
|
||||
if j != nil j = j.find("StatusSNS") end
|
||||
if j != nil && j.contains(switch_str)
|
||||
var state = (j.find(switch_str) == "ON")
|
||||
var j = tasmota.cmd("Status 8", true)
|
||||
if j != nil j = j.find("StatusSNS") end
|
||||
if j != nil && j.contains(switch_str)
|
||||
var state = (j.find(switch_str) == "ON")
|
||||
|
||||
if (self.shadow_onoff != state)
|
||||
self.attribute_updated(0x0006, 0x0000)
|
||||
if (self.shadow_onoff != state)
|
||||
self.attribute_updated(0x0006, 0x0000)
|
||||
end
|
||||
self.shadow_onoff = state
|
||||
end
|
||||
self.shadow_onoff = state
|
||||
end
|
||||
end
|
||||
|
@ -78,10 +78,12 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
|
||||
# Update shadow
|
||||
#
|
||||
def update_shadow()
|
||||
self.update_inverted()
|
||||
var sp = tasmota.cmd("ShutterPosition" + str(self.tasmota_shutter_index + 1), true)
|
||||
if sp
|
||||
self.parse_sensors(sp)
|
||||
if !self.VIRTUAL
|
||||
self.update_inverted()
|
||||
var sp = tasmota.cmd("ShutterPosition" + str(self.tasmota_shutter_index + 1), true)
|
||||
if sp
|
||||
self.parse_sensors(sp)
|
||||
end
|
||||
end
|
||||
super(self).update_shadow()
|
||||
end
|
||||
|
@ -0,0 +1,40 @@
|
||||
#
|
||||
# Matter_Plugin_Light0.be - implements the behavior for a generic Lighting (OnOff only)
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import matter
|
||||
|
||||
# Matter plug-in for core behavior
|
||||
|
||||
#@ solidify:Matter_Plugin_Light0,weak
|
||||
|
||||
class Matter_Plugin_Light0 : Matter_Plugin_OnOff
|
||||
static var TYPE = "light0" # name of the plug-in in json
|
||||
static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in
|
||||
static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff
|
||||
|
||||
# Inherited
|
||||
# var device # reference to the `device` global object
|
||||
# var endpoint # current endpoint
|
||||
# var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
|
||||
# var tick # tick value when it was last updated
|
||||
# var node_label # name of the endpoint, used only in bridge mode, "" if none
|
||||
# var shadow_onoff # (bool) status of the light power on/off
|
||||
|
||||
end
|
||||
matter.Plugin_Light0 = Matter_Plugin_Light0
|
@ -61,17 +61,21 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
|
||||
# Update shadow
|
||||
#
|
||||
def update_shadow()
|
||||
import light
|
||||
self.update_ct_minmax()
|
||||
super(self).update_shadow()
|
||||
var light_status = light.get()
|
||||
if light_status != nil
|
||||
var ct = light_status.find('ct', nil)
|
||||
if ct == nil ct = self.shadow_ct end
|
||||
if ct != self.shadow_ct
|
||||
self.attribute_updated(0x0300, 0x0007)
|
||||
self.shadow_ct = ct
|
||||
if !self.VIRTUAL
|
||||
import light
|
||||
self.update_ct_minmax()
|
||||
super(self).update_shadow()
|
||||
var light_status = light.get()
|
||||
if light_status != nil
|
||||
var ct = light_status.find('ct', nil)
|
||||
if ct == nil ct = self.shadow_ct end
|
||||
if ct != self.shadow_ct
|
||||
self.attribute_updated(0x0300, 0x0007)
|
||||
self.shadow_ct = ct
|
||||
end
|
||||
end
|
||||
else
|
||||
super(self).update_shadow()
|
||||
end
|
||||
end
|
||||
|
@ -0,0 +1,86 @@
|
||||
#
|
||||
# Matter_Plugin_Sensor_Flow.be - implements the behavior for a Flow Sensor
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import matter
|
||||
|
||||
# Matter plug-in for core behavior
|
||||
|
||||
#@ solidify:Matter_Plugin_Sensor_Flow,weak
|
||||
|
||||
class Matter_Plugin_Sensor_Flow : Matter_Plugin_Sensor
|
||||
static var TYPE = "flow" # name of the plug-in in json
|
||||
static var DISPLAY_NAME = "Flow" # display name of the plug-in
|
||||
static var JSON_NAME = "Flow" # Name of the sensor attribute in JSON payloads
|
||||
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Flow")
|
||||
static var CLUSTERS = matter.consolidate_clusters(_class, {
|
||||
0x0404: [0,1,2,0xFFFC,0xFFFD], # Flow Measurement
|
||||
})
|
||||
static var TYPES = { 0x0306: 1 } # Flow Sensor, rev 1
|
||||
|
||||
#############################################################
|
||||
# Pre-process value
|
||||
#
|
||||
# This must be overriden.
|
||||
# This allows to convert the raw sensor value to the target one, typically int
|
||||
def pre_value(val)
|
||||
return val != nil ? int(val * 10) : nil # MeasuredValue represents 10 x flow in m3/h
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Called when the value changed compared to shadow value
|
||||
#
|
||||
# This must be overriden.
|
||||
# This is where you call `self.attribute_updated(<cluster>, <attribute>)`
|
||||
def value_changed()
|
||||
self.attribute_updated(0x0404, 0x0000)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
|
||||
# ====================================================================================================
|
||||
if cluster == 0x0404 # ========== Flow Measurement 2.4 p.98 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
|
||||
if self.shadow_value != nil
|
||||
return tlv_solo.set(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h.
|
||||
else
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
|
||||
return tlv_solo.set(TLV.U2, 0) # 0 m3/h
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
|
||||
return tlv_solo.set(TLV.U2, 65534) # 65534 m3/h
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
matter.Plugin_Sensor_Flow = Matter_Plugin_Sensor_Flow
|
@ -0,0 +1,96 @@
|
||||
#
|
||||
# Matter_Plugin_Bridge_Sensor_Flow.be - implements base class for a Flow Sensor via HTTP to Tasmota
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import matter
|
||||
|
||||
# Matter plug-in for core behavior
|
||||
|
||||
#@ solidify:Matter_Plugin_Bridge_Sensor_Flow,weak
|
||||
|
||||
class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Bridge_Sensor
|
||||
static var TYPE = "http_flow" # name of the plug-in in json
|
||||
static var DISPLAY_NAME = "Flow" # display name of the plug-in
|
||||
|
||||
static var CLUSTERS = matter.consolidate_clusters(_class, {
|
||||
0x0404: [0,1,2,0xFFFC,0xFFFD], # Flow Measurement
|
||||
})
|
||||
static var TYPES = { 0x0306: 1 } # Flow Sensor, rev 1
|
||||
|
||||
#############################################################
|
||||
# Called when the value changed compared to shadow value
|
||||
#
|
||||
# This must be overriden.
|
||||
# This is where you call `self.attribute_updated(<cluster>, <attribute>)`
|
||||
def value_changed()
|
||||
self.attribute_updated(0x0404, 0x0000)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Pre-process value
|
||||
#
|
||||
# This must be overriden.
|
||||
# This allows to convert the raw sensor value to the target one, typically int
|
||||
def pre_value(val)
|
||||
return val != nil ? int(val * 10) : nil # MeasuredValue represents 10 x flow in m3/h
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
|
||||
# ====================================================================================================
|
||||
if cluster == 0x0404 # ========== Flow Measurement 2.1.2 p.127 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
|
||||
if self.shadow_value != nil
|
||||
return tlv_solo.set(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h.
|
||||
else
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
|
||||
return tlv_solo.set(TLV.U2, 0) # 0 m3/h
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
|
||||
return tlv_solo.set(TLV.U2, 65534) # 65534 m3/h
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# web_values
|
||||
#
|
||||
# Show values of the remote device as HTML
|
||||
def web_values()
|
||||
import webserver
|
||||
self.web_values_prefix() # display '| ' and name if present
|
||||
webserver.content_send(format("⛅ %i m3/h",
|
||||
int(self.shadow_value)))
|
||||
end
|
||||
|
||||
end
|
||||
matter.Plugin_Bridge_Sensor_Flow = Matter_Plugin_Bridge_Sensor_Flow
|
@ -0,0 +1,34 @@
|
||||
#
|
||||
# Matter_Plugin_9_Virt_Sensor_Flow.be - implements the behavior for a Flow Sensor
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import matter
|
||||
|
||||
# Matter plug-in for core behavior
|
||||
|
||||
#@ solidify:Matter_Plugin_Virt_Sensor_Flow,weak
|
||||
|
||||
class Matter_Plugin_Virt_Sensor_Flow : Matter_Plugin_Sensor_Flow
|
||||
static var TYPE = "v_flow" # name of the plug-in in json
|
||||
static var DISPLAY_NAME = "v.Flow" # display name of the plug-in
|
||||
static var ARG = "" # no arg for virtual device
|
||||
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
|
||||
static var VIRTUAL = true # virtual device
|
||||
|
||||
end
|
||||
matter.Plugin_Virt_Sensor_Flow = Matter_Plugin_Virt_Sensor_Flow
|
@ -0,0 +1,34 @@
|
||||
#
|
||||
# Matter_Plugin_9_Virt_Sensor_Occupancy.be - implements the behavior for a Virtual Occupancy Sensor
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import matter
|
||||
|
||||
# Matter plug-in for core behavior
|
||||
|
||||
#@ solidify:Matter_Plugin_Virt_Sensor_Occupancy,weak
|
||||
|
||||
class Matter_Plugin_Virt_Sensor_Occupancy : Matter_Plugin_Sensor_Occupancy
|
||||
static var TYPE = "v_occupancy" # name of the plug-in in json
|
||||
static var DISPLAY_NAME = "v.Occupancy" # display name of the plug-in
|
||||
static var ARG = "" # no arg for virtual device
|
||||
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
|
||||
static var VIRTUAL = true # virtual device
|
||||
|
||||
end
|
||||
matter.Plugin_Virt_Sensor_Occupancy = Matter_Plugin_Virt_Sensor_Occupancy
|
@ -0,0 +1,43 @@
|
||||
#
|
||||
# Matter_Plugin_z_All.be - list all plugin classes in a solidified map
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import matter
|
||||
|
||||
# this is used to solidify plugins list in Matter_Device
|
||||
|
||||
def register_native_classes()
|
||||
var plugins_classes = {}
|
||||
# try to register any class that starts with 'Plugin_'
|
||||
import introspect
|
||||
import string
|
||||
for k: introspect.members(matter)
|
||||
var v = introspect.get(matter, k)
|
||||
if type(v) == 'class' && string.find(k, "Plugin_") == 0
|
||||
var typ = introspect.get(v, 'TYPE') # make sure we don't crash if TYPE does not exist
|
||||
if typ
|
||||
plugins_classes[typ] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
return plugins_classes
|
||||
end
|
||||
|
||||
plugins_classes = register_native_classes()
|
||||
|
||||
matter.plugins_classes = plugins_classes
|
@ -33,13 +33,13 @@ import matter
|
||||
#################################################################################
|
||||
class Matter_UI
|
||||
static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt"
|
||||
"|temperature|pressure|illuminance|humidity|occupancy|onoff|contact"
|
||||
"|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow"
|
||||
"|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3"
|
||||
"|v_temp|v_pressure|v_illuminance|v_humidity|v_contact"
|
||||
"|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow"
|
||||
# static var _CLASSES_HTTP = "-http"
|
||||
static var _CLASSES_TYPES2= "|http_relay|http_light0|http_light1|http_light2|http_light3"
|
||||
"|http_temperature|http_pressure|http_illuminance|http_humidity"
|
||||
"|http_occupancy|http_contact"
|
||||
"|http_occupancy|http_contact|http_flow"
|
||||
var device
|
||||
|
||||
# ####################################################################################################
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Matter_Device.be - implements a generic Matter device (commissionee)
|
||||
# Matter_zz_Device.be - implements a generic Matter device (commissionee)
|
||||
#
|
||||
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
|
||||
#
|
||||
@ -31,7 +31,7 @@ class Matter_Device
|
||||
var started # is the Matter Device started (configured, mDNS and UDPServer started)
|
||||
var plugins # list of plugins instances
|
||||
var plugins_persist # true if plugins configuration needs to be saved
|
||||
var plugins_classes # map of registered classes by type name
|
||||
static var plugins_classes = matter.plugins_classes # map of registered classes by type name
|
||||
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
|
||||
@ -86,9 +86,7 @@ class Matter_Device
|
||||
self.tick = 0
|
||||
self.plugins = []
|
||||
self.plugins_persist = false # plugins need to saved only when the first fabric is associated
|
||||
self.plugins_classes = {}
|
||||
self.plugins_config_remotes = {}
|
||||
self.register_native_classes() # register all native classes
|
||||
self.vendorid = self.VENDOR_ID
|
||||
self.productid = self.PRODUCT_ID
|
||||
self.root_iterations = self.PBKDF_ITERATIONS
|
||||
@ -1270,18 +1268,6 @@ class Matter_Device
|
||||
for i:1..size(l)-1 var k = l[i] var j = i while (j > 0) && (l[j-1] > k) l[j] = l[j-1] j -= 1 end l[j] = k end return l
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# register_plugin_class
|
||||
#
|
||||
# Adds a class by name
|
||||
def register_plugin_class(cl)
|
||||
import introspect
|
||||
var typ = introspect.get(cl, 'TYPE') # make sure we don't crash if TYPE does not exist
|
||||
if typ
|
||||
self.plugins_classes[typ] = cl
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# get_plugin_class_displayname
|
||||
#
|
||||
@ -1300,23 +1286,6 @@ class Matter_Device
|
||||
return cl ? cl.ARG : ""
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# register_native_classes
|
||||
#
|
||||
# Adds a class by name
|
||||
def register_native_classes(name, cl)
|
||||
# try to register any class that starts with 'Plugin_'
|
||||
import introspect
|
||||
import string
|
||||
for k: introspect.members(matter)
|
||||
var v = introspect.get(matter, k)
|
||||
if type(v) == 'class' && string.find(k, "Plugin_") == 0
|
||||
self.register_plugin_class(v)
|
||||
end
|
||||
end
|
||||
# tasmota.log("MTR: registered classes "+str(self.k2l(self.plugins_classes)), 3)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Dynamic adding and removal of endpoints (bridge mode)
|
||||
#############################################################
|
@ -2455,19 +2455,19 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
|
||||
0x882C0121, // 00C6 GETMBR R11 R0 K33
|
||||
0x5431FFFE, // 00C7 LDINT R12 -1
|
||||
0x942C160C, // 00C8 GETIDX R11 R11 R12
|
||||
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
|
||||
0x6030000C, // 00C9 GETGBL R12 G12
|
||||
0x5C341600, // 00CA MOVE R13 R11
|
||||
0x7C300200, // 00CB CALL R12 1
|
||||
0x6034000C, // 00CC GETGBL R13 G12
|
||||
0x5C381400, // 00CD MOVE R14 R10
|
||||
0x7C340200, // 00CE CALL R13 1
|
||||
0x0030180D, // 00CF ADD R12 R12 R13
|
||||
0xB8360000, // 00D0 GETNGBL R13 K0
|
||||
0x88341B0E, // 00D1 GETMBR R13 R13 K14
|
||||
0x88341B0F, // 00D2 GETMBR R13 R13 K15
|
||||
0x1830180D, // 00D3 LE R12 R12 R13
|
||||
0x78320001, // 00D4 JMPF R12 #00D7
|
||||
0x4030160A, // 00D5 CONNECT R12 R11 R10
|
||||
0x70020003, // 00D6 JMP #00DB
|
||||
0x88300121, // 00D7 GETMBR R12 R0 K33
|
||||
0x8C301912, // 00D8 GETMET R12 R12 K18
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_2_Aggregator.h */
|
||||
/* Solidification of Matter_Plugin_1_Aggregator.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
@ -1341,7 +1341,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
|
||||
}),
|
||||
be_str_weak(invoke_request),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[713]) { /* code */
|
||||
( &(const binstruction[712]) { /* code */
|
||||
0xA4120000, // 0000 IMPORT R4 K0
|
||||
0xB8160200, // 0001 GETNGBL R5 K1
|
||||
0x88140B02, // 0002 GETMBR R5 R5 K2
|
||||
@ -1442,10 +1442,10 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
|
||||
0x80041000, // 0061 RET 1 R8
|
||||
0x70020000, // 0062 JMP #0064
|
||||
0xB0063119, // 0063 RAISE 1 K24 K25
|
||||
0x70020261, // 0064 JMP #02C7
|
||||
0x70020260, // 0064 JMP #02C6
|
||||
0x5422003D, // 0065 LDINT R8 62
|
||||
0x1C200C08, // 0066 EQ R8 R6 R8
|
||||
0x782201C2, // 0067 JMPF R8 #022B
|
||||
0x782201C1, // 0067 JMPF R8 #022A
|
||||
0x1C200F0E, // 0068 EQ R8 R7 K14
|
||||
0x7822001D, // 0069 JMPF R8 #0088
|
||||
0x8C200506, // 006A GETMET R8 R2 K6
|
||||
@ -1477,7 +1477,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
|
||||
0x7C280800, // 0084 CALL R10 4
|
||||
0x900E0910, // 0085 SETMBR R3 K4 K16
|
||||
0x80041200, // 0086 RET 1 R9
|
||||
0x700201A1, // 0087 JMP #022A
|
||||
0x700201A0, // 0087 JMP #0229
|
||||
0x1C200F05, // 0088 EQ R8 R7 K5
|
||||
0x7822003C, // 0089 JMPF R8 #00C7
|
||||
0x8C200506, // 008A GETMET R8 R2 K6
|
||||
@ -1540,7 +1540,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
|
||||
0x7C3C0800, // 00C3 CALL R15 4
|
||||
0x900E0907, // 00C4 SETMBR R3 K4 K7
|
||||
0x80041C00, // 00C5 RET 1 R14
|
||||
0x70020162, // 00C6 JMP #022A
|
||||
0x70020161, // 00C6 JMP #0229
|
||||
0x54220003, // 00C7 LDINT R8 4
|
||||
0x1C200E08, // 00C8 EQ R8 R7 R8
|
||||
0x7822003C, // 00C9 JMPF R8 #0107
|
||||
@ -1604,7 +1604,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
|
||||
0x54420004, // 0103 LDINT R16 5
|
||||
0x900E0810, // 0104 SETMBR R3 K4 R16
|
||||
0x80041E00, // 0105 RET 1 R15
|
||||
0x70020122, // 0106 JMP #022A
|
||||
0x70020121, // 0106 JMP #0229
|
||||
0x5422000A, // 0107 LDINT R8 11
|
||||
0x1C200E08, // 0108 EQ R8 R7 R8
|
||||
0x7822000B, // 0109 JMPF R8 #0116
|
||||
@ -1619,10 +1619,10 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
|
||||
0x900E3409, // 0112 SETMBR R3 K26 R9
|
||||
0x4C240000, // 0113 LDNIL R9
|
||||
0x80041200, // 0114 RET 1 R9
|
||||
0x70020113, // 0115 JMP #022A
|
||||
0x70020112, // 0115 JMP #0229
|
||||
0x54220005, // 0116 LDINT R8 6
|
||||
0x1C200E08, // 0117 EQ R8 R7 R8
|
||||
0x782200B9, // 0118 JMPF R8 #01D3
|
||||
0x782200B8, // 0118 JMPF R8 #01D2
|
||||
0xB8224400, // 0119 GETNGBL R8 K34
|
||||
0x8C20112C, // 011A GETMET R8 R8 K44
|
||||
0x60280008, // 011B GETGBL R10 G8
|
||||
@ -1748,313 +1748,312 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
|
||||
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
|
||||
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
|
||||
0x604C0015, // 0196 GETGBL R19 G21
|
||||
0x7C4C0000, // 0197 CALL R19 0
|
||||
0x8C4C2741, // 0198 GETMET R19 R19 K65
|
||||
0x58540042, // 0199 LDCONST R21 K66
|
||||
0x7C4C0400, // 019A CALL R19 2
|
||||
0x8C500943, // 019B GETMET R20 R4 K67
|
||||
0x7C500200, // 019C CALL R20 1
|
||||
0x8C542144, // 019D GETMET R21 R16 K68
|
||||
0x7C540200, // 019E CALL R21 1
|
||||
0x8C542B45, // 019F GETMET R21 R21 K69
|
||||
0x7C540200, // 01A0 CALL R21 1
|
||||
0x8C582946, // 01A1 GETMET R22 R20 K70
|
||||
0x5C602400, // 01A2 MOVE R24 R18
|
||||
0x5C642A00, // 01A3 MOVE R25 R21
|
||||
0x5C682600, // 01A4 MOVE R26 R19
|
||||
0x546E0007, // 01A5 LDINT R27 8
|
||||
0x7C580A00, // 01A6 CALL R22 5
|
||||
0x885C0312, // 01A7 GETMBR R23 R1 K18
|
||||
0x785E0001, // 01A8 JMPF R23 #01AB
|
||||
0x885C0312, // 01A9 GETMBR R23 R1 K18
|
||||
0x70020001, // 01AA JMP #01AD
|
||||
0x885C0116, // 01AB GETMBR R23 R0 K22
|
||||
0x885C2F47, // 01AC GETMBR R23 R23 K71
|
||||
0x8C601B48, // 01AD GETMET R24 R13 K72
|
||||
0x5C682000, // 01AE MOVE R26 R16
|
||||
0x5C6C2200, // 01AF MOVE R27 R17
|
||||
0x5C702C00, // 01B0 MOVE R28 R22
|
||||
0x5C742E00, // 01B1 MOVE R29 R23
|
||||
0x7C600A00, // 01B2 CALL R24 5
|
||||
0x8C601B49, // 01B3 GETMET R24 R13 K73
|
||||
0x7C600200, // 01B4 CALL R24 1
|
||||
0x88600116, // 01B5 GETMBR R24 R0 K22
|
||||
0x8C60314A, // 01B6 GETMET R24 R24 K74
|
||||
0x5C681A00, // 01B7 MOVE R26 R13
|
||||
0x7C600400, // 01B8 CALL R24 2
|
||||
0x8C60034B, // 01B9 GETMET R24 R1 K75
|
||||
0x7C600200, // 01BA CALL R24 1
|
||||
0x78620002, // 01BB JMPF R24 #01BF
|
||||
0x8C60034C, // 01BC GETMET R24 R1 K76
|
||||
0x546A003B, // 01BD LDINT R26 60
|
||||
0x7C600400, // 01BE CALL R24 2
|
||||
0x8C601B4D, // 01BF GETMET R24 R13 K77
|
||||
0x7C600200, // 01C0 CALL R24 1
|
||||
0x8C600B09, // 01C1 GETMET R24 R5 K9
|
||||
0x7C600200, // 01C2 CALL R24 1
|
||||
0x8C64310A, // 01C3 GETMET R25 R24 K10
|
||||
0x586C0005, // 01C4 LDCONST R27 K5
|
||||
0x88700B0B, // 01C5 GETMBR R28 R5 K11
|
||||
0xB8760200, // 01C6 GETNGBL R29 K1
|
||||
0x88743B2B, // 01C7 GETMBR R29 R29 K43
|
||||
0x7C640800, // 01C8 CALL R25 4
|
||||
0x8C64310A, // 01C9 GETMET R25 R24 K10
|
||||
0x586C0007, // 01CA LDCONST R27 K7
|
||||
0x88700B0B, // 01CB GETMBR R28 R5 K11
|
||||
0x58740007, // 01CC LDCONST R29 K7
|
||||
0x7C640800, // 01CD CALL R25 4
|
||||
0x54660007, // 01CE LDINT R25 8
|
||||
0x900E0819, // 01CF SETMBR R3 K4 R25
|
||||
0x80043000, // 01D0 RET 1 R24
|
||||
0x70020056, // 01D1 JMP #0229
|
||||
0x54220008, // 01D2 LDINT R8 9
|
||||
0x1C200E08, // 01D3 EQ R8 R7 R8
|
||||
0x7822001E, // 01D4 JMPF R8 #01F4
|
||||
0x8C200506, // 01D5 GETMET R8 R2 K6
|
||||
0x58280005, // 01D6 LDCONST R10 K5
|
||||
0x7C200400, // 01D7 CALL R8 2
|
||||
0x8C24034E, // 01D8 GETMET R9 R1 K78
|
||||
0x5C2C1000, // 01D9 MOVE R11 R8
|
||||
0x7C240400, // 01DA CALL R9 2
|
||||
0xB8264400, // 01DB GETNGBL R9 K34
|
||||
0x8C24132C, // 01DC GETMET R9 R9 K44
|
||||
0x602C0018, // 01DD GETGBL R11 G24
|
||||
0x5830004F, // 01DE LDCONST R12 K79
|
||||
0x88340312, // 01DF GETMBR R13 R1 K18
|
||||
0x8C341B50, // 01E0 GETMET R13 R13 K80
|
||||
0x7C340200, // 01E1 CALL R13 1
|
||||
0x8C341B44, // 01E2 GETMET R13 R13 K68
|
||||
0x7C340200, // 01E3 CALL R13 1
|
||||
0x8C341B45, // 01E4 GETMET R13 R13 K69
|
||||
0x7C340200, // 01E5 CALL R13 1
|
||||
0x8C341B51, // 01E6 GETMET R13 R13 K81
|
||||
0x7C340200, // 01E7 CALL R13 1
|
||||
0x60380008, // 01E8 GETGBL R14 G8
|
||||
0x5C3C1000, // 01E9 MOVE R15 R8
|
||||
0x7C380200, // 01EA CALL R14 1
|
||||
0x7C2C0600, // 01EB CALL R11 3
|
||||
0x58300010, // 01EC LDCONST R12 K16
|
||||
0x7C240600, // 01ED CALL R9 3
|
||||
0xB8260200, // 01EE GETNGBL R9 K1
|
||||
0x8824132B, // 01EF GETMBR R9 R9 K43
|
||||
0x900E3409, // 01F0 SETMBR R3 K26 R9
|
||||
0x4C240000, // 01F1 LDNIL R9
|
||||
0x80041200, // 01F2 RET 1 R9
|
||||
0x70020034, // 01F3 JMP #0229
|
||||
0x54220009, // 01F4 LDINT R8 10
|
||||
0x1C200E08, // 01F5 EQ R8 R7 R8
|
||||
0x78220031, // 01F6 JMPF R8 #0229
|
||||
0x8C200506, // 01F7 GETMET R8 R2 K6
|
||||
0x58280005, // 01F8 LDCONST R10 K5
|
||||
0x7C200400, // 01F9 CALL R8 2
|
||||
0x60240008, // 01FA GETGBL R9 G8
|
||||
0x5C281000, // 01FB MOVE R10 R8
|
||||
0x7C240200, // 01FC CALL R9 1
|
||||
0x0026A409, // 01FD ADD R9 K82 R9
|
||||
0x900E5809, // 01FE SETMBR R3 K44 R9
|
||||
0x60240010, // 01FF GETGBL R9 G16
|
||||
0x88280116, // 0200 GETMBR R10 R0 K22
|
||||
0x88281530, // 0201 GETMBR R10 R10 K48
|
||||
0x8C281553, // 0202 GETMET R10 R10 K83
|
||||
0x7C280200, // 0203 CALL R10 1
|
||||
0x7C240200, // 0204 CALL R9 1
|
||||
0xA8020010, // 0205 EXBLK 0 #0217
|
||||
0x5C281200, // 0206 MOVE R10 R9
|
||||
0x7C280000, // 0207 CALL R10 0
|
||||
0x8C2C1554, // 0208 GETMET R11 R10 K84
|
||||
0x7C2C0200, // 0209 CALL R11 1
|
||||
0x1C2C1608, // 020A EQ R11 R11 R8
|
||||
0x782E0008, // 020B JMPF R11 #0215
|
||||
0xB82E4400, // 020C GETNGBL R11 K34
|
||||
0x8C2C1755, // 020D GETMET R11 R11 K85
|
||||
0x543607CF, // 020E LDINT R13 2000
|
||||
0x84380000, // 020F CLOSURE R14 P0
|
||||
0x7C2C0600, // 0210 CALL R11 3
|
||||
0x502C0200, // 0211 LDBOOL R11 1 0
|
||||
0xA0000000, // 0212 CLOSE R0
|
||||
0xA8040001, // 0213 EXBLK 1 1
|
||||
0x80041600, // 0214 RET 1 R11
|
||||
0xA0240000, // 0215 CLOSE R9
|
||||
0x7001FFEE, // 0216 JMP #0206
|
||||
0x58240056, // 0217 LDCONST R9 K86
|
||||
0xAC240200, // 0218 CATCH R9 1 0
|
||||
0xB0080000, // 0219 RAISE 2 R0 R0
|
||||
0xB8264400, // 021A GETNGBL R9 K34
|
||||
0x8C24132C, // 021B GETMET R9 R9 K44
|
||||
0x602C0008, // 021C GETGBL R11 G8
|
||||
0x5C301000, // 021D MOVE R12 R8
|
||||
0x7C2C0200, // 021E CALL R11 1
|
||||
0x002EAE0B, // 021F ADD R11 K87 R11
|
||||
0x002C1758, // 0220 ADD R11 R11 K88
|
||||
0x5830000E, // 0221 LDCONST R12 K14
|
||||
0x7C240600, // 0222 CALL R9 3
|
||||
0xB8260200, // 0223 GETNGBL R9 K1
|
||||
0x88241359, // 0224 GETMBR R9 R9 K89
|
||||
0x900E3409, // 0225 SETMBR R3 K26 R9
|
||||
0x4C240000, // 0226 LDNIL R9
|
||||
0xA0000000, // 0227 CLOSE R0
|
||||
0x80041200, // 0228 RET 1 R9
|
||||
0x7002009B, // 0229 JMP #02C6
|
||||
0x5422003B, // 022A LDINT R8 60
|
||||
0x1C200C08, // 022B EQ R8 R6 R8
|
||||
0x78220085, // 022C JMPF R8 #02B3
|
||||
0x1C200F05, // 022D EQ R8 R7 K5
|
||||
0x78220065, // 022E JMPF R8 #0295
|
||||
0x8C200506, // 022F GETMET R8 R2 K6
|
||||
0x58280005, // 0230 LDCONST R10 K5
|
||||
0x7C200400, // 0231 CALL R8 2
|
||||
0x8C240506, // 0232 GETMET R9 R2 K6
|
||||
0x582C0007, // 0233 LDCONST R11 K7
|
||||
0x7C240400, // 0234 CALL R9 2
|
||||
0x8C280506, // 0235 GETMET R10 R2 K6
|
||||
0x5830000E, // 0236 LDCONST R12 K14
|
||||
0x7C280400, // 0237 CALL R10 2
|
||||
0x8C2C0506, // 0238 GETMET R11 R2 K6
|
||||
0x58340010, // 0239 LDCONST R13 K16
|
||||
0x7C2C0400, // 023A CALL R11 2
|
||||
0x8C300506, // 023B GETMET R12 R2 K6
|
||||
0x543A0003, // 023C LDINT R14 4
|
||||
0x7C300400, // 023D CALL R12 2
|
||||
0xB8364400, // 023E GETNGBL R13 K34
|
||||
0x8C341B2C, // 023F GETMET R13 R13 K44
|
||||
0x603C0018, // 0240 GETGBL R15 G24
|
||||
0x5840005A, // 0241 LDCONST R16 K90
|
||||
0x5C441000, // 0242 MOVE R17 R8
|
||||
0x8C481351, // 0243 GETMET R18 R9 K81
|
||||
0x7C480200, // 0244 CALL R18 1
|
||||
0x5C4C1400, // 0245 MOVE R19 R10
|
||||
0x5C501600, // 0246 MOVE R20 R11
|
||||
0x8C541951, // 0247 GETMET R21 R12 K81
|
||||
0x7C540200, // 0248 CALL R21 1
|
||||
0x7C3C0C00, // 0249 CALL R15 6
|
||||
0x54420003, // 024A LDINT R16 4
|
||||
0x7C340600, // 024B CALL R13 3
|
||||
0x4C340000, // 024C LDNIL R13
|
||||
0x1C34100D, // 024D EQ R13 R8 R13
|
||||
0x7436000B, // 024E JMPT R13 #025B
|
||||
0x4C340000, // 024F LDNIL R13
|
||||
0x1C34120D, // 0250 EQ R13 R9 R13
|
||||
0x74360008, // 0251 JMPT R13 #025B
|
||||
0x4C340000, // 0252 LDNIL R13
|
||||
0x1C34140D, // 0253 EQ R13 R10 R13
|
||||
0x74360005, // 0254 JMPT R13 #025B
|
||||
0x4C340000, // 0255 LDNIL R13
|
||||
0x1C34160D, // 0256 EQ R13 R11 R13
|
||||
0x74360002, // 0257 JMPT R13 #025B
|
||||
0x4C340000, // 0258 LDNIL R13
|
||||
0x1C34180D, // 0259 EQ R13 R12 R13
|
||||
0x78360005, // 025A JMPF R13 #0261
|
||||
0xB8360200, // 025B GETNGBL R13 K1
|
||||
0x88341B5B, // 025C GETMBR R13 R13 K91
|
||||
0x900E340D, // 025D SETMBR R3 K26 R13
|
||||
0x4C340000, // 025E LDNIL R13
|
||||
0xA0000000, // 025F CLOSE R0
|
||||
0x80041A00, // 0260 RET 1 R13
|
||||
0x6034000C, // 0261 GETGBL R13 G12
|
||||
0x5C381200, // 0262 MOVE R14 R9
|
||||
0x7C340200, // 0263 CALL R13 1
|
||||
0x543A001F, // 0264 LDINT R14 32
|
||||
0x543E0040, // 0265 LDINT R15 65
|
||||
0x00381C0F, // 0266 ADD R14 R14 R15
|
||||
0x20341A0E, // 0267 NE R13 R13 R14
|
||||
0x7436000B, // 0268 JMPT R13 #0275
|
||||
0x6034000C, // 0269 GETGBL R13 G12
|
||||
0x5C381800, // 026A MOVE R14 R12
|
||||
0x7C340200, // 026B CALL R13 1
|
||||
0x543A000F, // 026C LDINT R14 16
|
||||
0x14341A0E, // 026D LT R13 R13 R14
|
||||
0x74360005, // 026E JMPT R13 #0275
|
||||
0x6034000C, // 026F GETGBL R13 G12
|
||||
0x5C381800, // 0270 MOVE R14 R12
|
||||
0x7C340200, // 0271 CALL R13 1
|
||||
0x543A001F, // 0272 LDINT R14 32
|
||||
0x24341A0E, // 0273 GT R13 R13 R14
|
||||
0x7836000A, // 0274 JMPF R13 #0280
|
||||
0xB8364400, // 0275 GETNGBL R13 K34
|
||||
0x8C341B2C, // 0276 GETMET R13 R13 K44
|
||||
0x583C005C, // 0277 LDCONST R15 K92
|
||||
0x5840000E, // 0278 LDCONST R16 K14
|
||||
0x7C340600, // 0279 CALL R13 3
|
||||
0xB8360200, // 027A GETNGBL R13 K1
|
||||
0x88341B5D, // 027B GETMBR R13 R13 K93
|
||||
0x900E340D, // 027C SETMBR R3 K26 R13
|
||||
0x4C340000, // 027D LDNIL R13
|
||||
0xA0000000, // 027E CLOSE R0
|
||||
0x80041A00, // 027F RET 1 R13
|
||||
0x5436001E, // 0280 LDINT R13 31
|
||||
0x40360A0D, // 0281 CONNECT R13 K5 R13
|
||||
0x9434120D, // 0282 GETIDX R13 R9 R13
|
||||
0x543A001F, // 0283 LDINT R14 32
|
||||
0x40381D40, // 0284 CONNECT R14 R14 K64
|
||||
0x9438120E, // 0285 GETIDX R14 R9 R14
|
||||
0x883C0116, // 0286 GETMBR R15 R0 K22
|
||||
0x8C3C1F5E, // 0287 GETMET R15 R15 K94
|
||||
0x5C441000, // 0288 MOVE R17 R8
|
||||
0x5C481600, // 0289 MOVE R18 R11
|
||||
0x5C4C1400, // 028A MOVE R19 R10
|
||||
0x5C501800, // 028B MOVE R20 R12
|
||||
0x5C541A00, // 028C MOVE R21 R13
|
||||
0x5C581C00, // 028D MOVE R22 R14
|
||||
0x8C5C035F, // 028E GETMET R23 R1 K95
|
||||
0x7C5C0200, // 028F CALL R23 1
|
||||
0x7C3C1000, // 0290 CALL R15 8
|
||||
0x503C0200, // 0291 LDBOOL R15 1 0
|
||||
0xA0000000, // 0292 CLOSE R0
|
||||
0x80041E00, // 0293 RET 1 R15
|
||||
0x7002001C, // 0294 JMP #02B2
|
||||
0x1C200F07, // 0295 EQ R8 R7 K7
|
||||
0x78220012, // 0296 JMPF R8 #02AA
|
||||
0x8C200506, // 0297 GETMET R8 R2 K6
|
||||
0x58280005, // 0298 LDCONST R10 K5
|
||||
0x7C200400, // 0299 CALL R8 2
|
||||
0xB8264400, // 029A GETNGBL R9 K34
|
||||
0x8C24132C, // 029B GETMET R9 R9 K44
|
||||
0x602C0008, // 029C GETGBL R11 G8
|
||||
0x5C301000, // 029D MOVE R12 R8
|
||||
0x7C2C0200, // 029E CALL R11 1
|
||||
0x002EC00B, // 029F ADD R11 K96 R11
|
||||
0x58300010, // 02A0 LDCONST R12 K16
|
||||
0x7C240600, // 02A1 CALL R9 3
|
||||
0x88240116, // 02A2 GETMBR R9 R0 K22
|
||||
0x8C241361, // 02A3 GETMET R9 R9 K97
|
||||
0x5C2C1000, // 02A4 MOVE R11 R8
|
||||
0x7C240400, // 02A5 CALL R9 2
|
||||
0x50240200, // 02A6 LDBOOL R9 1 0
|
||||
0xA0000000, // 02A7 CLOSE R0
|
||||
0x80041200, // 02A8 RET 1 R9
|
||||
0x70020007, // 02A9 JMP #02B2
|
||||
0x1C200F0E, // 02AA EQ R8 R7 K14
|
||||
0x78220005, // 02AB JMPF R8 #02B2
|
||||
0x88200116, // 02AC GETMBR R8 R0 K22
|
||||
0x8C201162, // 02AD GETMET R8 R8 K98
|
||||
0x7C200200, // 02AE CALL R8 1
|
||||
0x50200200, // 02AF LDBOOL R8 1 0
|
||||
0xA0000000, // 02B0 CLOSE R0
|
||||
0x80041000, // 02B1 RET 1 R8
|
||||
0x70020012, // 02B2 JMP #02C6
|
||||
0x54220029, // 02B3 LDINT R8 42
|
||||
0x1C200C08, // 02B4 EQ R8 R6 R8
|
||||
0x78220005, // 02B5 JMPF R8 #02BC
|
||||
0x1C200F05, // 02B6 EQ R8 R7 K5
|
||||
0x78220002, // 02B7 JMPF R8 #02BB
|
||||
0x50200200, // 02B8 LDBOOL R8 1 0
|
||||
0xA0000000, // 02B9 CLOSE R0
|
||||
0x80041000, // 02BA RET 1 R8
|
||||
0x70020009, // 02BB JMP #02C6
|
||||
0x60200003, // 02BC GETGBL R8 G3
|
||||
0x5C240000, // 02BD MOVE R9 R0
|
||||
0x7C200200, // 02BE CALL R8 1
|
||||
0x8C201163, // 02BF GETMET R8 R8 K99
|
||||
0x5C280200, // 02C0 MOVE R10 R1
|
||||
0x5C2C0400, // 02C1 MOVE R11 R2
|
||||
0x5C300600, // 02C2 MOVE R12 R3
|
||||
0x7C200800, // 02C3 CALL R8 4
|
||||
0xA0000000, // 02C4 CLOSE R0
|
||||
0x80041000, // 02C5 RET 1 R8
|
||||
0xA0000000, // 02C6 CLOSE R0
|
||||
0x80000000, // 02C7 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -1,511 +0,0 @@
|
||||
/* Solidification of Matter_Plugin_2_Light0.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Light0;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read_attribute
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_read_attribute, /* 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[11]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(matter),
|
||||
/* K1 */ be_nested_str_weak(TLV),
|
||||
/* K2 */ be_nested_str_weak(cluster),
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
/* K10 */ be_nested_str_weak(read_attribute),
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(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
|
||||
0x541EFFFB, // 0011 LDINT R7 65532
|
||||
0x1C1C0C07, // 0012 EQ R7 R6 R7
|
||||
0x781E0005, // 0013 JMPF R7 #001A
|
||||
0x8C1C0706, // 0014 GETMET R7 R3 K6
|
||||
0x88240909, // 0015 GETMBR R9 R4 K9
|
||||
0x58280005, // 0016 LDCONST R10 K5
|
||||
0x7C1C0600, // 0017 CALL R7 3
|
||||
0x80040E00, // 0018 RET 1 R7
|
||||
0x70020007, // 0019 JMP #0022
|
||||
0x541EFFFC, // 001A LDINT R7 65533
|
||||
0x1C1C0C07, // 001B EQ R7 R6 R7
|
||||
0x781E0004, // 001C JMPF R7 #0022
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240909, // 001E GETMBR R9 R4 K9
|
||||
0x542A0003, // 001F LDINT R10 4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
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
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: set_onoff
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_set_onoff, /* 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[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(light),
|
||||
/* K2 */ be_nested_str_weak(set),
|
||||
/* K3 */ be_nested_str_weak(power),
|
||||
/* K4 */ be_nested_str_weak(update_shadow),
|
||||
/* K5 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K6 */ be_nested_str_weak(attribute_updated),
|
||||
/* K7 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(set_onoff),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[20]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0008, // 0001 JMPT R2 #000B
|
||||
0xA40A0200, // 0002 IMPORT R2 K1
|
||||
0x8C0C0502, // 0003 GETMET R3 R2 K2
|
||||
0x60140013, // 0004 GETGBL R5 G19
|
||||
0x7C140000, // 0005 CALL R5 0
|
||||
0x98160601, // 0006 SETIDX R5 K3 R1
|
||||
0x7C0C0400, // 0007 CALL R3 2
|
||||
0x8C0C0104, // 0008 GETMET R3 R0 K4
|
||||
0x7C0C0200, // 0009 CALL R3 1
|
||||
0x70020007, // 000A JMP #0013
|
||||
0x88080105, // 000B GETMBR R2 R0 K5
|
||||
0x20080202, // 000C NE R2 R1 R2
|
||||
0x780A0004, // 000D JMPF R2 #0013
|
||||
0x8C080106, // 000E GETMET R2 R0 K6
|
||||
0x54120005, // 000F LDINT R4 6
|
||||
0x58140007, // 0010 LDCONST R5 K7
|
||||
0x7C080600, // 0011 CALL R2 3
|
||||
0x90020A01, // 0012 SETMBR R0 K5 R1
|
||||
0x80000000, // 0013 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: update_virtual
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_update_virtual, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(find),
|
||||
/* K1 */ be_nested_str_weak(Power),
|
||||
/* K2 */ be_nested_str_weak(set_onoff),
|
||||
/* K3 */ be_nested_str_weak(update_virtual),
|
||||
}),
|
||||
be_str_weak(update_virtual),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[18]) { /* code */
|
||||
0x8C080300, // 0000 GETMET R2 R1 K0
|
||||
0x58100001, // 0001 LDCONST R4 K1
|
||||
0x7C080400, // 0002 CALL R2 2
|
||||
0x4C0C0000, // 0003 LDNIL R3
|
||||
0x200C0403, // 0004 NE R3 R2 R3
|
||||
0x780E0004, // 0005 JMPF R3 #000B
|
||||
0x8C0C0102, // 0006 GETMET R3 R0 K2
|
||||
0x60140017, // 0007 GETGBL R5 G23
|
||||
0x5C180400, // 0008 MOVE R6 R2
|
||||
0x7C140200, // 0009 CALL R5 1
|
||||
0x7C0C0400, // 000A CALL R3 2
|
||||
0x600C0003, // 000B GETGBL R3 G3
|
||||
0x5C100000, // 000C MOVE R4 R0
|
||||
0x7C0C0200, // 000D CALL R3 1
|
||||
0x8C0C0703, // 000E GETMET R3 R3 K3
|
||||
0x5C140200, // 000F MOVE R5 R1
|
||||
0x7C0C0400, // 0010 CALL R3 2
|
||||
0x80000000, // 0011 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_init, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(init),
|
||||
/* K1 */ be_nested_str_weak(shadow_onoff),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[11]) { /* code */
|
||||
0x60100003, // 0000 GETGBL R4 G3
|
||||
0x5C140000, // 0001 MOVE R5 R0
|
||||
0x7C100200, // 0002 CALL R4 1
|
||||
0x8C100900, // 0003 GETMET R4 R4 K0
|
||||
0x5C180200, // 0004 MOVE R6 R1
|
||||
0x5C1C0400, // 0005 MOVE R7 R2
|
||||
0x5C200600, // 0006 MOVE R8 R3
|
||||
0x7C100800, // 0007 CALL R4 4
|
||||
0x50100000, // 0008 LDBOOL R4 0 0
|
||||
0x90020204, // 0009 SETMBR R0 K1 R4
|
||||
0x80000000, // 000A RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: update_shadow
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_update_shadow, /* name */
|
||||
be_nested_proto(
|
||||
8, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(light),
|
||||
/* K2 */ be_nested_str_weak(get),
|
||||
/* K3 */ be_nested_str_weak(find),
|
||||
/* K4 */ be_nested_str_weak(power),
|
||||
/* K5 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K6 */ be_nested_str_weak(attribute_updated),
|
||||
/* K7 */ be_const_int(0),
|
||||
/* K8 */ be_nested_str_weak(update_shadow),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[26]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x74060011, // 0001 JMPT R1 #0014
|
||||
0xA4060200, // 0002 IMPORT R1 K1
|
||||
0x8C080302, // 0003 GETMET R2 R1 K2
|
||||
0x7C080200, // 0004 CALL R2 1
|
||||
0x4C0C0000, // 0005 LDNIL R3
|
||||
0x200C0403, // 0006 NE R3 R2 R3
|
||||
0x780E000B, // 0007 JMPF R3 #0014
|
||||
0x8C0C0503, // 0008 GETMET R3 R2 K3
|
||||
0x58140004, // 0009 LDCONST R5 K4
|
||||
0x4C180000, // 000A LDNIL R6
|
||||
0x7C0C0600, // 000B CALL R3 3
|
||||
0x88100105, // 000C GETMBR R4 R0 K5
|
||||
0x20100604, // 000D NE R4 R3 R4
|
||||
0x78120004, // 000E JMPF R4 #0014
|
||||
0x8C100106, // 000F GETMET R4 R0 K6
|
||||
0x541A0005, // 0010 LDINT R6 6
|
||||
0x581C0007, // 0011 LDCONST R7 K7
|
||||
0x7C100600, // 0012 CALL R4 3
|
||||
0x90020A03, // 0013 SETMBR R0 K5 R3
|
||||
0x60040003, // 0014 GETGBL R1 G3
|
||||
0x5C080000, // 0015 MOVE R2 R0
|
||||
0x7C040200, // 0016 CALL R1 1
|
||||
0x8C040308, // 0017 GETMET R1 R1 K8
|
||||
0x7C040200, // 0018 CALL R1 1
|
||||
0x80000000, // 0019 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: invoke_request
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_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[13]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(light),
|
||||
/* K1 */ be_nested_str_weak(matter),
|
||||
/* K2 */ be_nested_str_weak(TLV),
|
||||
/* K3 */ be_nested_str_weak(cluster),
|
||||
/* K4 */ be_nested_str_weak(command),
|
||||
/* K5 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_str_weak(set_onoff),
|
||||
/* K8 */ be_nested_str_weak(publish_command),
|
||||
/* K9 */ be_nested_str_weak(Power),
|
||||
/* K10 */ be_const_int(1),
|
||||
/* K11 */ be_const_int(2),
|
||||
/* K12 */ be_nested_str_weak(shadow_onoff),
|
||||
}),
|
||||
be_str_weak(invoke_request),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[53]) { /* code */
|
||||
0xA4120000, // 0000 IMPORT R4 K0
|
||||
0xB8160200, // 0001 GETNGBL R5 K1
|
||||
0x88140B02, // 0002 GETMBR R5 R5 K2
|
||||
0x88180703, // 0003 GETMBR R6 R3 K3
|
||||
0x881C0704, // 0004 GETMBR R7 R3 K4
|
||||
0x54220005, // 0005 LDINT R8 6
|
||||
0x1C200C08, // 0006 EQ R8 R6 R8
|
||||
0x7822002B, // 0007 JMPF R8 #0034
|
||||
0x8C200105, // 0008 GETMET R8 R0 K5
|
||||
0x7C200200, // 0009 CALL R8 1
|
||||
0x1C200F06, // 000A EQ R8 R7 K6
|
||||
0x78220009, // 000B JMPF R8 #0016
|
||||
0x8C200107, // 000C GETMET R8 R0 K7
|
||||
0x50280000, // 000D LDBOOL R10 0 0
|
||||
0x7C200400, // 000E CALL R8 2
|
||||
0x8C200108, // 000F GETMET R8 R0 K8
|
||||
0x58280009, // 0010 LDCONST R10 K9
|
||||
0x582C0006, // 0011 LDCONST R11 K6
|
||||
0x7C200600, // 0012 CALL R8 3
|
||||
0x50200200, // 0013 LDBOOL R8 1 0
|
||||
0x80041000, // 0014 RET 1 R8
|
||||
0x7002001D, // 0015 JMP #0034
|
||||
0x1C200F0A, // 0016 EQ R8 R7 K10
|
||||
0x78220009, // 0017 JMPF R8 #0022
|
||||
0x8C200107, // 0018 GETMET R8 R0 K7
|
||||
0x50280200, // 0019 LDBOOL R10 1 0
|
||||
0x7C200400, // 001A CALL R8 2
|
||||
0x8C200108, // 001B GETMET R8 R0 K8
|
||||
0x58280009, // 001C LDCONST R10 K9
|
||||
0x582C000A, // 001D LDCONST R11 K10
|
||||
0x7C200600, // 001E CALL R8 3
|
||||
0x50200200, // 001F LDBOOL R8 1 0
|
||||
0x80041000, // 0020 RET 1 R8
|
||||
0x70020011, // 0021 JMP #0034
|
||||
0x1C200F0B, // 0022 EQ R8 R7 K11
|
||||
0x7822000F, // 0023 JMPF R8 #0034
|
||||
0x8C200107, // 0024 GETMET R8 R0 K7
|
||||
0x8828010C, // 0025 GETMBR R10 R0 K12
|
||||
0x782A0000, // 0026 JMPF R10 #0028
|
||||
0x50280001, // 0027 LDBOOL R10 0 1
|
||||
0x50280200, // 0028 LDBOOL R10 1 0
|
||||
0x7C200400, // 0029 CALL R8 2
|
||||
0x8C200108, // 002A GETMET R8 R0 K8
|
||||
0x58280009, // 002B LDCONST R10 K9
|
||||
0x882C010C, // 002C GETMBR R11 R0 K12
|
||||
0x782E0001, // 002D JMPF R11 #0030
|
||||
0x582C000A, // 002E LDCONST R11 K10
|
||||
0x70020000, // 002F JMP #0031
|
||||
0x582C0006, // 0030 LDCONST R11 K6
|
||||
0x7C200600, // 0031 CALL R8 3
|
||||
0x50200200, // 0032 LDBOOL R8 1 0
|
||||
0x80041000, // 0033 RET 1 R8
|
||||
0x80000000, // 0034 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: find_val_i
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_find_val_i, /* name */
|
||||
be_nested_proto(
|
||||
7, /* 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_Light0),
|
||||
/* K1 */ be_nested_str_weak(tasmota),
|
||||
/* K2 */ be_nested_str_weak(find_key_i),
|
||||
/* K3 */ be_nested_str_weak(find),
|
||||
}),
|
||||
be_str_weak(find_val_i),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x58080000, // 0000 LDCONST R2 K0
|
||||
0xB80E0200, // 0001 GETNGBL R3 K1
|
||||
0x8C0C0702, // 0002 GETMET R3 R3 K2
|
||||
0x5C140000, // 0003 MOVE R5 R0
|
||||
0x5C180200, // 0004 MOVE R6 R1
|
||||
0x7C0C0600, // 0005 CALL R3 3
|
||||
0x8C100103, // 0006 GETMET R4 R0 K3
|
||||
0x5C180600, // 0007 MOVE R6 R3
|
||||
0x7C100400, // 0008 CALL R4 2
|
||||
0x80040800, // 0009 RET 1 R4
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Light0
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_Device;
|
||||
be_local_class(Matter_Plugin_Light0,
|
||||
1,
|
||||
&be_class_Matter_Plugin_Device,
|
||||
be_nested_map(14,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(read_attribute, 9), be_const_closure(Matter_Plugin_Light0_read_attribute_closure) },
|
||||
{ be_const_key_weak(UPDATE_TIME, 4), be_const_int(250) },
|
||||
{ be_const_key_weak(update_virtual, 1), be_const_closure(Matter_Plugin_Light0_update_virtual_closure) },
|
||||
{ be_const_key_weak(UPDATE_COMMANDS, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(1,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_nested_str_weak(Power),
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(find_val_i, -1), be_const_static_closure(Matter_Plugin_Light0_find_val_i_closure) },
|
||||
{ be_const_key_weak(init, 11), be_const_closure(Matter_Plugin_Light0_init_closure) },
|
||||
{ be_const_key_weak(set_onoff, 12), be_const_closure(Matter_Plugin_Light0_set_onoff_closure) },
|
||||
{ be_const_key_weak(update_shadow, 8), be_const_closure(Matter_Plugin_Light0_update_shadow_closure) },
|
||||
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Light0_invoke_request_closure) },
|
||||
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(6,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(8,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(4),
|
||||
be_const_int(5),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(7,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(17),
|
||||
be_const_int(3),
|
||||
be_const_int(5),
|
||||
be_const_int(10),
|
||||
be_const_int(15),
|
||||
be_const_int(17),
|
||||
be_const_int(18),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(4,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(6,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(256, -1), be_const_int(2) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X200_X20On) },
|
||||
{ be_const_key_weak(shadow_onoff, -1), be_const_var(0) },
|
||||
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(light0) },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Light0)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Light0_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Light0);
|
||||
be_setglobal(vm, "Matter_Plugin_Light0");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -0,0 +1,828 @@
|
||||
/* Solidification of Matter_Plugin_2_Light1.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Light1;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_init, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(init),
|
||||
/* K1 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K2 */ be_nested_str_weak(shadow_bri),
|
||||
/* K3 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
0x60100003, // 0000 GETGBL R4 G3
|
||||
0x5C140000, // 0001 MOVE R5 R0
|
||||
0x7C100200, // 0002 CALL R4 1
|
||||
0x8C100900, // 0003 GETMET R4 R4 K0
|
||||
0x5C180200, // 0004 MOVE R6 R1
|
||||
0x5C1C0400, // 0005 MOVE R7 R2
|
||||
0x5C200600, // 0006 MOVE R8 R3
|
||||
0x7C100800, // 0007 CALL R4 4
|
||||
0x50100000, // 0008 LDBOOL R4 0 0
|
||||
0x90020204, // 0009 SETMBR R0 K1 R4
|
||||
0x90020503, // 000A SETMBR R0 K2 K3
|
||||
0x80000000, // 000B RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: invoke_request
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_invoke_request, /* name */
|
||||
be_nested_proto(
|
||||
22, /* nstack */
|
||||
4, /* 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(light),
|
||||
/* K1 */ be_nested_str_weak(matter),
|
||||
/* K2 */ be_nested_str_weak(TLV),
|
||||
/* K3 */ be_nested_str_weak(cluster),
|
||||
/* K4 */ be_nested_str_weak(command),
|
||||
/* K5 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_str_weak(set_onoff),
|
||||
/* K8 */ be_nested_str_weak(publish_command),
|
||||
/* K9 */ be_nested_str_weak(Power),
|
||||
/* K10 */ be_const_int(1),
|
||||
/* K11 */ be_const_int(2),
|
||||
/* K12 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K13 */ be_nested_str_weak(findsubval),
|
||||
/* K14 */ be_nested_str_weak(set_bri),
|
||||
/* K15 */ be_nested_str_weak(log),
|
||||
/* K16 */ be_nested_str_weak(bri_X3A),
|
||||
/* K17 */ be_nested_str_weak(Bri),
|
||||
/* K18 */ be_nested_str_weak(Dimmer),
|
||||
/* K19 */ be_nested_str_weak(tasmota),
|
||||
/* K20 */ be_nested_str_weak(scale_uint),
|
||||
/* K21 */ be_const_int(3),
|
||||
/* K22 */ be_nested_str_weak(invoke_request),
|
||||
}),
|
||||
be_str_weak(invoke_request),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[167]) { /* code */
|
||||
0xA4120000, // 0000 IMPORT R4 K0
|
||||
0xB8160200, // 0001 GETNGBL R5 K1
|
||||
0x88140B02, // 0002 GETMBR R5 R5 K2
|
||||
0x88180703, // 0003 GETMBR R6 R3 K3
|
||||
0x881C0704, // 0004 GETMBR R7 R3 K4
|
||||
0x54220005, // 0005 LDINT R8 6
|
||||
0x1C200C08, // 0006 EQ R8 R6 R8
|
||||
0x7822002C, // 0007 JMPF R8 #0035
|
||||
0x8C200105, // 0008 GETMET R8 R0 K5
|
||||
0x7C200200, // 0009 CALL R8 1
|
||||
0x1C200F06, // 000A EQ R8 R7 K6
|
||||
0x78220009, // 000B JMPF R8 #0016
|
||||
0x8C200107, // 000C GETMET R8 R0 K7
|
||||
0x50280000, // 000D LDBOOL R10 0 0
|
||||
0x7C200400, // 000E CALL R8 2
|
||||
0x8C200108, // 000F GETMET R8 R0 K8
|
||||
0x58280009, // 0010 LDCONST R10 K9
|
||||
0x582C0006, // 0011 LDCONST R11 K6
|
||||
0x7C200600, // 0012 CALL R8 3
|
||||
0x50200200, // 0013 LDBOOL R8 1 0
|
||||
0x80041000, // 0014 RET 1 R8
|
||||
0x7002001D, // 0015 JMP #0034
|
||||
0x1C200F0A, // 0016 EQ R8 R7 K10
|
||||
0x78220009, // 0017 JMPF R8 #0022
|
||||
0x8C200107, // 0018 GETMET R8 R0 K7
|
||||
0x50280200, // 0019 LDBOOL R10 1 0
|
||||
0x7C200400, // 001A CALL R8 2
|
||||
0x8C200108, // 001B GETMET R8 R0 K8
|
||||
0x58280009, // 001C LDCONST R10 K9
|
||||
0x582C000A, // 001D LDCONST R11 K10
|
||||
0x7C200600, // 001E CALL R8 3
|
||||
0x50200200, // 001F LDBOOL R8 1 0
|
||||
0x80041000, // 0020 RET 1 R8
|
||||
0x70020011, // 0021 JMP #0034
|
||||
0x1C200F0B, // 0022 EQ R8 R7 K11
|
||||
0x7822000F, // 0023 JMPF R8 #0034
|
||||
0x8C200107, // 0024 GETMET R8 R0 K7
|
||||
0x8828010C, // 0025 GETMBR R10 R0 K12
|
||||
0x782A0000, // 0026 JMPF R10 #0028
|
||||
0x50280001, // 0027 LDBOOL R10 0 1
|
||||
0x50280200, // 0028 LDBOOL R10 1 0
|
||||
0x7C200400, // 0029 CALL R8 2
|
||||
0x8C200108, // 002A GETMET R8 R0 K8
|
||||
0x58280009, // 002B LDCONST R10 K9
|
||||
0x882C010C, // 002C GETMBR R11 R0 K12
|
||||
0x782E0001, // 002D JMPF R11 #0030
|
||||
0x582C000A, // 002E LDCONST R11 K10
|
||||
0x70020000, // 002F JMP #0031
|
||||
0x582C0006, // 0030 LDCONST R11 K6
|
||||
0x7C200600, // 0031 CALL R8 3
|
||||
0x50200200, // 0032 LDBOOL R8 1 0
|
||||
0x80041000, // 0033 RET 1 R8
|
||||
0x70020070, // 0034 JMP #00A6
|
||||
0x54220007, // 0035 LDINT R8 8
|
||||
0x1C200C08, // 0036 EQ R8 R6 R8
|
||||
0x78220064, // 0037 JMPF R8 #009D
|
||||
0x8C200105, // 0038 GETMET R8 R0 K5
|
||||
0x7C200200, // 0039 CALL R8 1
|
||||
0x1C200F06, // 003A EQ R8 R7 K6
|
||||
0x7822001A, // 003B JMPF R8 #0057
|
||||
0x8C20050D, // 003C GETMET R8 R2 K13
|
||||
0x58280006, // 003D LDCONST R10 K6
|
||||
0x7C200400, // 003E CALL R8 2
|
||||
0x8C24010E, // 003F GETMET R9 R0 K14
|
||||
0x5C2C1000, // 0040 MOVE R11 R8
|
||||
0x7C240400, // 0041 CALL R9 2
|
||||
0x60240008, // 0042 GETGBL R9 G8
|
||||
0x5C281000, // 0043 MOVE R10 R8
|
||||
0x7C240200, // 0044 CALL R9 1
|
||||
0x00262009, // 0045 ADD R9 K16 R9
|
||||
0x900E1E09, // 0046 SETMBR R3 K15 R9
|
||||
0x8C240108, // 0047 GETMET R9 R0 K8
|
||||
0x582C0011, // 0048 LDCONST R11 K17
|
||||
0x5C301000, // 0049 MOVE R12 R8
|
||||
0x58340012, // 004A LDCONST R13 K18
|
||||
0xB83A2600, // 004B GETNGBL R14 K19
|
||||
0x8C381D14, // 004C GETMET R14 R14 K20
|
||||
0x5C401000, // 004D MOVE R16 R8
|
||||
0x58440006, // 004E LDCONST R17 K6
|
||||
0x544A00FD, // 004F LDINT R18 254
|
||||
0x584C0006, // 0050 LDCONST R19 K6
|
||||
0x54520063, // 0051 LDINT R20 100
|
||||
0x7C380C00, // 0052 CALL R14 6
|
||||
0x7C240A00, // 0053 CALL R9 5
|
||||
0x50240200, // 0054 LDBOOL R9 1 0
|
||||
0x80041200, // 0055 RET 1 R9
|
||||
0x70020044, // 0056 JMP #009C
|
||||
0x1C200F0A, // 0057 EQ R8 R7 K10
|
||||
0x78220002, // 0058 JMPF R8 #005C
|
||||
0x50200200, // 0059 LDBOOL R8 1 0
|
||||
0x80041000, // 005A RET 1 R8
|
||||
0x7002003F, // 005B JMP #009C
|
||||
0x1C200F0B, // 005C EQ R8 R7 K11
|
||||
0x78220002, // 005D JMPF R8 #0061
|
||||
0x50200200, // 005E LDBOOL R8 1 0
|
||||
0x80041000, // 005F RET 1 R8
|
||||
0x7002003A, // 0060 JMP #009C
|
||||
0x1C200F15, // 0061 EQ R8 R7 K21
|
||||
0x78220002, // 0062 JMPF R8 #0066
|
||||
0x50200200, // 0063 LDBOOL R8 1 0
|
||||
0x80041000, // 0064 RET 1 R8
|
||||
0x70020035, // 0065 JMP #009C
|
||||
0x54220003, // 0066 LDINT R8 4
|
||||
0x1C200E08, // 0067 EQ R8 R7 R8
|
||||
0x78220021, // 0068 JMPF R8 #008B
|
||||
0x8C20050D, // 0069 GETMET R8 R2 K13
|
||||
0x58280006, // 006A LDCONST R10 K6
|
||||
0x7C200400, // 006B CALL R8 2
|
||||
0x24241106, // 006C GT R9 R8 K6
|
||||
0x8C28010E, // 006D GETMET R10 R0 K14
|
||||
0x5C301000, // 006E MOVE R12 R8
|
||||
0x5C341200, // 006F MOVE R13 R9
|
||||
0x7C280600, // 0070 CALL R10 3
|
||||
0x60280008, // 0071 GETGBL R10 G8
|
||||
0x5C2C1000, // 0072 MOVE R11 R8
|
||||
0x7C280200, // 0073 CALL R10 1
|
||||
0x002A200A, // 0074 ADD R10 K16 R10
|
||||
0x900E1E0A, // 0075 SETMBR R3 K15 R10
|
||||
0x8C280108, // 0076 GETMET R10 R0 K8
|
||||
0x58300011, // 0077 LDCONST R12 K17
|
||||
0x5C341000, // 0078 MOVE R13 R8
|
||||
0x58380012, // 0079 LDCONST R14 K18
|
||||
0xB83E2600, // 007A GETNGBL R15 K19
|
||||
0x8C3C1F14, // 007B GETMET R15 R15 K20
|
||||
0x5C441000, // 007C MOVE R17 R8
|
||||
0x58480006, // 007D LDCONST R18 K6
|
||||
0x544E00FD, // 007E LDINT R19 254
|
||||
0x58500006, // 007F LDCONST R20 K6
|
||||
0x54560063, // 0080 LDINT R21 100
|
||||
0x7C3C0C00, // 0081 CALL R15 6
|
||||
0x58400009, // 0082 LDCONST R16 K9
|
||||
0x78260001, // 0083 JMPF R9 #0086
|
||||
0x5844000A, // 0084 LDCONST R17 K10
|
||||
0x70020000, // 0085 JMP #0087
|
||||
0x58440006, // 0086 LDCONST R17 K6
|
||||
0x7C280E00, // 0087 CALL R10 7
|
||||
0x50280200, // 0088 LDBOOL R10 1 0
|
||||
0x80041400, // 0089 RET 1 R10
|
||||
0x70020010, // 008A JMP #009C
|
||||
0x54220004, // 008B LDINT R8 5
|
||||
0x1C200E08, // 008C EQ R8 R7 R8
|
||||
0x78220002, // 008D JMPF R8 #0091
|
||||
0x50200200, // 008E LDBOOL R8 1 0
|
||||
0x80041000, // 008F RET 1 R8
|
||||
0x7002000A, // 0090 JMP #009C
|
||||
0x54220005, // 0091 LDINT R8 6
|
||||
0x1C200E08, // 0092 EQ R8 R7 R8
|
||||
0x78220002, // 0093 JMPF R8 #0097
|
||||
0x50200200, // 0094 LDBOOL R8 1 0
|
||||
0x80041000, // 0095 RET 1 R8
|
||||
0x70020004, // 0096 JMP #009C
|
||||
0x54220006, // 0097 LDINT R8 7
|
||||
0x1C200E08, // 0098 EQ R8 R7 R8
|
||||
0x78220001, // 0099 JMPF R8 #009C
|
||||
0x50200200, // 009A LDBOOL R8 1 0
|
||||
0x80041000, // 009B RET 1 R8
|
||||
0x70020008, // 009C JMP #00A6
|
||||
0x60200003, // 009D GETGBL R8 G3
|
||||
0x5C240000, // 009E MOVE R9 R0
|
||||
0x7C200200, // 009F CALL R8 1
|
||||
0x8C201116, // 00A0 GETMET R8 R8 K22
|
||||
0x5C280200, // 00A1 MOVE R10 R1
|
||||
0x5C2C0400, // 00A2 MOVE R11 R2
|
||||
0x5C300600, // 00A3 MOVE R12 R3
|
||||
0x7C200800, // 00A4 CALL R8 4
|
||||
0x80041000, // 00A5 RET 1 R8
|
||||
0x80000000, // 00A6 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: set_onoff
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_set_onoff, /* 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[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(light),
|
||||
/* K2 */ be_nested_str_weak(set),
|
||||
/* K3 */ be_nested_str_weak(power),
|
||||
/* K4 */ be_nested_str_weak(update_shadow),
|
||||
/* K5 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K6 */ be_nested_str_weak(attribute_updated),
|
||||
/* K7 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(set_onoff),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[20]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0008, // 0001 JMPT R2 #000B
|
||||
0xA40A0200, // 0002 IMPORT R2 K1
|
||||
0x8C0C0502, // 0003 GETMET R3 R2 K2
|
||||
0x60140013, // 0004 GETGBL R5 G19
|
||||
0x7C140000, // 0005 CALL R5 0
|
||||
0x98160601, // 0006 SETIDX R5 K3 R1
|
||||
0x7C0C0400, // 0007 CALL R3 2
|
||||
0x8C0C0104, // 0008 GETMET R3 R0 K4
|
||||
0x7C0C0200, // 0009 CALL R3 1
|
||||
0x70020007, // 000A JMP #0013
|
||||
0x88080105, // 000B GETMBR R2 R0 K5
|
||||
0x20080202, // 000C NE R2 R1 R2
|
||||
0x780A0004, // 000D JMPF R2 #0013
|
||||
0x8C080106, // 000E GETMET R2 R0 K6
|
||||
0x54120005, // 000F LDINT R4 6
|
||||
0x58140007, // 0010 LDCONST R5 K7
|
||||
0x7C080600, // 0011 CALL R2 3
|
||||
0x90020A01, // 0012 SETMBR R0 K5 R1
|
||||
0x80000000, // 0013 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: update_shadow
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_update_shadow, /* 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[13]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(light),
|
||||
/* K2 */ be_nested_str_weak(get),
|
||||
/* K3 */ be_nested_str_weak(find),
|
||||
/* K4 */ be_nested_str_weak(power),
|
||||
/* K5 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K6 */ be_nested_str_weak(attribute_updated),
|
||||
/* K7 */ be_const_int(0),
|
||||
/* K8 */ be_nested_str_weak(bri),
|
||||
/* K9 */ be_nested_str_weak(tasmota),
|
||||
/* K10 */ be_nested_str_weak(scale_uint),
|
||||
/* K11 */ be_nested_str_weak(shadow_bri),
|
||||
/* K12 */ be_nested_str_weak(update_shadow),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[50]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x74060029, // 0001 JMPT R1 #002C
|
||||
0xA4060200, // 0002 IMPORT R1 K1
|
||||
0x8C080302, // 0003 GETMET R2 R1 K2
|
||||
0x7C080200, // 0004 CALL R2 1
|
||||
0x4C0C0000, // 0005 LDNIL R3
|
||||
0x200C0403, // 0006 NE R3 R2 R3
|
||||
0x780E0023, // 0007 JMPF R3 #002C
|
||||
0x8C0C0503, // 0008 GETMET R3 R2 K3
|
||||
0x58140004, // 0009 LDCONST R5 K4
|
||||
0x4C180000, // 000A LDNIL R6
|
||||
0x7C0C0600, // 000B CALL R3 3
|
||||
0x88100105, // 000C GETMBR R4 R0 K5
|
||||
0x20100604, // 000D NE R4 R3 R4
|
||||
0x78120004, // 000E JMPF R4 #0014
|
||||
0x8C100106, // 000F GETMET R4 R0 K6
|
||||
0x541A0005, // 0010 LDINT R6 6
|
||||
0x581C0007, // 0011 LDCONST R7 K7
|
||||
0x7C100600, // 0012 CALL R4 3
|
||||
0x90020A03, // 0013 SETMBR R0 K5 R3
|
||||
0x8C100503, // 0014 GETMET R4 R2 K3
|
||||
0x58180008, // 0015 LDCONST R6 K8
|
||||
0x4C1C0000, // 0016 LDNIL R7
|
||||
0x7C100600, // 0017 CALL R4 3
|
||||
0x4C140000, // 0018 LDNIL R5
|
||||
0x20140805, // 0019 NE R5 R4 R5
|
||||
0x78160010, // 001A JMPF R5 #002C
|
||||
0xB8161200, // 001B GETNGBL R5 K9
|
||||
0x8C140B0A, // 001C GETMET R5 R5 K10
|
||||
0x5C1C0800, // 001D MOVE R7 R4
|
||||
0x58200007, // 001E LDCONST R8 K7
|
||||
0x542600FE, // 001F LDINT R9 255
|
||||
0x58280007, // 0020 LDCONST R10 K7
|
||||
0x542E00FD, // 0021 LDINT R11 254
|
||||
0x7C140C00, // 0022 CALL R5 6
|
||||
0x5C100A00, // 0023 MOVE R4 R5
|
||||
0x8814010B, // 0024 GETMBR R5 R0 K11
|
||||
0x20140805, // 0025 NE R5 R4 R5
|
||||
0x78160004, // 0026 JMPF R5 #002C
|
||||
0x8C140106, // 0027 GETMET R5 R0 K6
|
||||
0x541E0007, // 0028 LDINT R7 8
|
||||
0x58200007, // 0029 LDCONST R8 K7
|
||||
0x7C140600, // 002A CALL R5 3
|
||||
0x90021604, // 002B SETMBR R0 K11 R4
|
||||
0x60040003, // 002C GETGBL R1 G3
|
||||
0x5C080000, // 002D MOVE R2 R0
|
||||
0x7C040200, // 002E CALL R1 1
|
||||
0x8C04030C, // 002F GETMET R1 R1 K12
|
||||
0x7C040200, // 0030 CALL R1 1
|
||||
0x80000000, // 0031 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: update_virtual
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_update_virtual, /* 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[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(find),
|
||||
/* K1 */ be_nested_str_weak(Power),
|
||||
/* K2 */ be_nested_str_weak(Bri),
|
||||
/* K3 */ be_nested_str_weak(set_bri),
|
||||
/* K4 */ be_nested_str_weak(set_onoff),
|
||||
/* K5 */ be_nested_str_weak(update_virtual),
|
||||
}),
|
||||
be_str_weak(update_virtual),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[32]) { /* code */
|
||||
0x8C080300, // 0000 GETMET R2 R1 K0
|
||||
0x58100001, // 0001 LDCONST R4 K1
|
||||
0x7C080400, // 0002 CALL R2 2
|
||||
0x8C0C0300, // 0003 GETMET R3 R1 K0
|
||||
0x58140002, // 0004 LDCONST R5 K2
|
||||
0x7C0C0400, // 0005 CALL R3 2
|
||||
0x4C100000, // 0006 LDNIL R4
|
||||
0x20100604, // 0007 NE R4 R3 R4
|
||||
0x78120007, // 0008 JMPF R4 #0011
|
||||
0x8C100103, // 0009 GETMET R4 R0 K3
|
||||
0x60180009, // 000A GETGBL R6 G9
|
||||
0x5C1C0600, // 000B MOVE R7 R3
|
||||
0x7C180200, // 000C CALL R6 1
|
||||
0x5C1C0400, // 000D MOVE R7 R2
|
||||
0x7C100600, // 000E CALL R4 3
|
||||
0x80000800, // 000F RET 0
|
||||
0x70020007, // 0010 JMP #0019
|
||||
0x4C100000, // 0011 LDNIL R4
|
||||
0x20100404, // 0012 NE R4 R2 R4
|
||||
0x78120004, // 0013 JMPF R4 #0019
|
||||
0x8C100104, // 0014 GETMET R4 R0 K4
|
||||
0x60180017, // 0015 GETGBL R6 G23
|
||||
0x5C1C0400, // 0016 MOVE R7 R2
|
||||
0x7C180200, // 0017 CALL R6 1
|
||||
0x7C100400, // 0018 CALL R4 2
|
||||
0x60100003, // 0019 GETGBL R4 G3
|
||||
0x5C140000, // 001A MOVE R5 R0
|
||||
0x7C100200, // 001B CALL R4 1
|
||||
0x8C100905, // 001C GETMET R4 R4 K5
|
||||
0x5C180200, // 001D MOVE R6 R1
|
||||
0x7C100400, // 001E CALL R4 2
|
||||
0x80000000, // 001F RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read_attribute
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_read_attribute, /* 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[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(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
/* K10 */ be_nested_str_weak(U1),
|
||||
/* K11 */ be_nested_str_weak(shadow_bri),
|
||||
/* K12 */ be_const_int(2),
|
||||
/* K13 */ be_const_int(3),
|
||||
/* K14 */ be_const_int(1),
|
||||
/* K15 */ be_nested_str_weak(read_attribute),
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[110]) { /* 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
|
||||
0x541EFFFB, // 0011 LDINT R7 65532
|
||||
0x1C1C0C07, // 0012 EQ R7 R6 R7
|
||||
0x781E0005, // 0013 JMPF R7 #001A
|
||||
0x8C1C0706, // 0014 GETMET R7 R3 K6
|
||||
0x88240909, // 0015 GETMBR R9 R4 K9
|
||||
0x58280005, // 0016 LDCONST R10 K5
|
||||
0x7C1C0600, // 0017 CALL R7 3
|
||||
0x80040E00, // 0018 RET 1 R7
|
||||
0x70020007, // 0019 JMP #0022
|
||||
0x541EFFFC, // 001A LDINT R7 65533
|
||||
0x1C1C0C07, // 001B EQ R7 R6 R7
|
||||
0x781E0004, // 001C JMPF R7 #0022
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240909, // 001E GETMBR R9 R4 K9
|
||||
0x542A0003, // 001F LDINT R10 4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020049, // 0022 JMP #006D
|
||||
0x541E0007, // 0023 LDINT R7 8
|
||||
0x1C1C0A07, // 0024 EQ R7 R5 R7
|
||||
0x781E003D, // 0025 JMPF R7 #0064
|
||||
0x8C1C0104, // 0026 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0027 CALL R7 1
|
||||
0x1C1C0D05, // 0028 EQ R7 R6 K5
|
||||
0x781E0005, // 0029 JMPF R7 #0030
|
||||
0x8C1C0706, // 002A GETMET R7 R3 K6
|
||||
0x8824090A, // 002B GETMBR R9 R4 K10
|
||||
0x8828010B, // 002C GETMBR R10 R0 K11
|
||||
0x7C1C0600, // 002D CALL R7 3
|
||||
0x80040E00, // 002E RET 1 R7
|
||||
0x70020032, // 002F JMP #0063
|
||||
0x1C1C0D0C, // 0030 EQ R7 R6 K12
|
||||
0x781E0005, // 0031 JMPF R7 #0038
|
||||
0x8C1C0706, // 0032 GETMET R7 R3 K6
|
||||
0x8824090A, // 0033 GETMBR R9 R4 K10
|
||||
0x58280005, // 0034 LDCONST R10 K5
|
||||
0x7C1C0600, // 0035 CALL R7 3
|
||||
0x80040E00, // 0036 RET 1 R7
|
||||
0x7002002A, // 0037 JMP #0063
|
||||
0x1C1C0D0D, // 0038 EQ R7 R6 K13
|
||||
0x781E0005, // 0039 JMPF R7 #0040
|
||||
0x8C1C0706, // 003A GETMET R7 R3 K6
|
||||
0x8824090A, // 003B GETMBR R9 R4 K10
|
||||
0x542A00FD, // 003C LDINT R10 254
|
||||
0x7C1C0600, // 003D CALL R7 3
|
||||
0x80040E00, // 003E RET 1 R7
|
||||
0x70020022, // 003F JMP #0063
|
||||
0x541E000E, // 0040 LDINT R7 15
|
||||
0x1C1C0C07, // 0041 EQ R7 R6 R7
|
||||
0x781E0005, // 0042 JMPF R7 #0049
|
||||
0x8C1C0706, // 0043 GETMET R7 R3 K6
|
||||
0x8824090A, // 0044 GETMBR R9 R4 K10
|
||||
0x58280005, // 0045 LDCONST R10 K5
|
||||
0x7C1C0600, // 0046 CALL R7 3
|
||||
0x80040E00, // 0047 RET 1 R7
|
||||
0x70020019, // 0048 JMP #0063
|
||||
0x541E0010, // 0049 LDINT R7 17
|
||||
0x1C1C0C07, // 004A EQ R7 R6 R7
|
||||
0x781E0005, // 004B JMPF R7 #0052
|
||||
0x8C1C0706, // 004C GETMET R7 R3 K6
|
||||
0x8824090A, // 004D GETMBR R9 R4 K10
|
||||
0x8828010B, // 004E GETMBR R10 R0 K11
|
||||
0x7C1C0600, // 004F CALL R7 3
|
||||
0x80040E00, // 0050 RET 1 R7
|
||||
0x70020010, // 0051 JMP #0063
|
||||
0x541EFFFB, // 0052 LDINT R7 65532
|
||||
0x1C1C0C07, // 0053 EQ R7 R6 R7
|
||||
0x781E0005, // 0054 JMPF R7 #005B
|
||||
0x8C1C0706, // 0055 GETMET R7 R3 K6
|
||||
0x88240909, // 0056 GETMBR R9 R4 K9
|
||||
0x5828000E, // 0057 LDCONST R10 K14
|
||||
0x7C1C0600, // 0058 CALL R7 3
|
||||
0x80040E00, // 0059 RET 1 R7
|
||||
0x70020007, // 005A JMP #0063
|
||||
0x541EFFFC, // 005B LDINT R7 65533
|
||||
0x1C1C0C07, // 005C EQ R7 R6 R7
|
||||
0x781E0004, // 005D JMPF R7 #0063
|
||||
0x8C1C0706, // 005E GETMET R7 R3 K6
|
||||
0x88240909, // 005F GETMBR R9 R4 K9
|
||||
0x542A0004, // 0060 LDINT R10 5
|
||||
0x7C1C0600, // 0061 CALL R7 3
|
||||
0x80040E00, // 0062 RET 1 R7
|
||||
0x70020008, // 0063 JMP #006D
|
||||
0x601C0003, // 0064 GETGBL R7 G3
|
||||
0x5C200000, // 0065 MOVE R8 R0
|
||||
0x7C1C0200, // 0066 CALL R7 1
|
||||
0x8C1C0F0F, // 0067 GETMET R7 R7 K15
|
||||
0x5C240200, // 0068 MOVE R9 R1
|
||||
0x5C280400, // 0069 MOVE R10 R2
|
||||
0x5C2C0600, // 006A MOVE R11 R3
|
||||
0x7C1C0800, // 006B CALL R7 4
|
||||
0x80040E00, // 006C RET 1 R7
|
||||
0x80000000, // 006D RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: set_bri
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_set_bri, /* 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[12]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K2 */ be_nested_str_weak(light),
|
||||
/* K3 */ be_nested_str_weak(tasmota),
|
||||
/* K4 */ be_nested_str_weak(scale_uint),
|
||||
/* K5 */ be_nested_str_weak(set),
|
||||
/* K6 */ be_nested_str_weak(bri),
|
||||
/* K7 */ be_nested_str_weak(power),
|
||||
/* K8 */ be_nested_str_weak(update_shadow),
|
||||
/* K9 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K10 */ be_nested_str_weak(attribute_updated),
|
||||
/* K11 */ be_nested_str_weak(shadow_bri),
|
||||
}),
|
||||
be_str_weak(set_bri),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[65]) { /* code */
|
||||
0x140C0300, // 0000 LT R3 R1 K0
|
||||
0x780E0000, // 0001 JMPF R3 #0003
|
||||
0x58040000, // 0002 LDCONST R1 K0
|
||||
0x540E00FD, // 0003 LDINT R3 254
|
||||
0x240C0203, // 0004 GT R3 R1 R3
|
||||
0x780E0000, // 0005 JMPF R3 #0007
|
||||
0x540600FD, // 0006 LDINT R1 254
|
||||
0x4C0C0000, // 0007 LDNIL R3
|
||||
0x200C0403, // 0008 NE R3 R2 R3
|
||||
0x780E0003, // 0009 JMPF R3 #000E
|
||||
0x600C0017, // 000A GETGBL R3 G23
|
||||
0x5C100400, // 000B MOVE R4 R2
|
||||
0x7C0C0200, // 000C CALL R3 1
|
||||
0x70020000, // 000D JMP #000F
|
||||
0x4C0C0000, // 000E LDNIL R3
|
||||
0x5C080600, // 000F MOVE R2 R3
|
||||
0x880C0101, // 0010 GETMBR R3 R0 K1
|
||||
0x740E001A, // 0011 JMPT R3 #002D
|
||||
0xA40E0400, // 0012 IMPORT R3 K2
|
||||
0xB8120600, // 0013 GETNGBL R4 K3
|
||||
0x8C100904, // 0014 GETMET R4 R4 K4
|
||||
0x5C180200, // 0015 MOVE R6 R1
|
||||
0x581C0000, // 0016 LDCONST R7 K0
|
||||
0x542200FD, // 0017 LDINT R8 254
|
||||
0x58240000, // 0018 LDCONST R9 K0
|
||||
0x542A00FE, // 0019 LDINT R10 255
|
||||
0x7C100C00, // 001A CALL R4 6
|
||||
0x4C140000, // 001B LDNIL R5
|
||||
0x1C140405, // 001C EQ R5 R2 R5
|
||||
0x78160005, // 001D JMPF R5 #0024
|
||||
0x8C140705, // 001E GETMET R5 R3 K5
|
||||
0x601C0013, // 001F GETGBL R7 G19
|
||||
0x7C1C0000, // 0020 CALL R7 0
|
||||
0x981E0C04, // 0021 SETIDX R7 K6 R4
|
||||
0x7C140400, // 0022 CALL R5 2
|
||||
0x70020005, // 0023 JMP #002A
|
||||
0x8C140705, // 0024 GETMET R5 R3 K5
|
||||
0x601C0013, // 0025 GETGBL R7 G19
|
||||
0x7C1C0000, // 0026 CALL R7 0
|
||||
0x981E0C04, // 0027 SETIDX R7 K6 R4
|
||||
0x981E0E02, // 0028 SETIDX R7 K7 R2
|
||||
0x7C140400, // 0029 CALL R5 2
|
||||
0x8C140108, // 002A GETMET R5 R0 K8
|
||||
0x7C140200, // 002B CALL R5 1
|
||||
0x70020012, // 002C JMP #0040
|
||||
0x4C0C0000, // 002D LDNIL R3
|
||||
0x200C0403, // 002E NE R3 R2 R3
|
||||
0x780E0007, // 002F JMPF R3 #0038
|
||||
0x880C0109, // 0030 GETMBR R3 R0 K9
|
||||
0x200C0403, // 0031 NE R3 R2 R3
|
||||
0x780E0004, // 0032 JMPF R3 #0038
|
||||
0x8C0C010A, // 0033 GETMET R3 R0 K10
|
||||
0x54160005, // 0034 LDINT R5 6
|
||||
0x58180000, // 0035 LDCONST R6 K0
|
||||
0x7C0C0600, // 0036 CALL R3 3
|
||||
0x90021202, // 0037 SETMBR R0 K9 R2
|
||||
0x880C010B, // 0038 GETMBR R3 R0 K11
|
||||
0x200C0203, // 0039 NE R3 R1 R3
|
||||
0x780E0004, // 003A JMPF R3 #0040
|
||||
0x8C0C010A, // 003B GETMET R3 R0 K10
|
||||
0x54160007, // 003C LDINT R5 8
|
||||
0x58180000, // 003D LDCONST R6 K0
|
||||
0x7C0C0600, // 003E CALL R3 3
|
||||
0x90021601, // 003F SETMBR R0 K11 R1
|
||||
0x80000000, // 0040 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Light1
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_Device;
|
||||
be_local_class(Matter_Plugin_Light1,
|
||||
2,
|
||||
&be_class_Matter_Plugin_Device,
|
||||
be_nested_map(15,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Light1_init_closure) },
|
||||
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Light1_update_shadow_closure) },
|
||||
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Light1_invoke_request_closure) },
|
||||
{ be_const_key_weak(set_onoff, -1), be_const_closure(Matter_Plugin_Light1_set_onoff_closure) },
|
||||
{ be_const_key_weak(TYPE, 10), be_nested_str_weak(light1) },
|
||||
{ be_const_key_weak(update_virtual, 11), be_const_closure(Matter_Plugin_Light1_update_virtual_closure) },
|
||||
{ be_const_key_weak(UPDATE_TIME, 8), be_const_int(250) },
|
||||
{ be_const_key_weak(shadow_bri, 1), be_const_var(1) },
|
||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X201_X20Dimmer) },
|
||||
{ be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(2,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_nested_str_weak(Power),
|
||||
be_nested_str_weak(Bri),
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(7,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(6,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(7,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(15),
|
||||
be_const_int(17),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(7,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(17),
|
||||
be_const_int(3),
|
||||
be_const_int(5),
|
||||
be_const_int(10),
|
||||
be_const_int(15),
|
||||
be_const_int(17),
|
||||
be_const_int(18),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(4,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(8,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(4),
|
||||
be_const_int(5),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(257, -1), be_const_int(2) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Light1_read_attribute_closure) },
|
||||
{ be_const_key_weak(shadow_onoff, -1), be_const_var(0) },
|
||||
{ be_const_key_weak(set_bri, -1), be_const_closure(Matter_Plugin_Light1_set_bri_closure) },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Light1)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Light1_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Light1);
|
||||
be_setglobal(vm, "Matter_Plugin_Light1");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -77,36 +77,39 @@ be_local_closure(Matter_Plugin_Sensor_parse_sensors, /* 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[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(tasmota_sensor_matcher),
|
||||
/* K2 */ be_nested_str_weak(pre_value),
|
||||
/* K3 */ be_nested_str_weak(match),
|
||||
/* K4 */ be_nested_str_weak(shadow_value),
|
||||
/* K5 */ be_nested_str_weak(value_changed),
|
||||
}),
|
||||
be_str_weak(parse_sensors),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[20]) { /* code */
|
||||
( &(const binstruction[22]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x780A0010, // 0001 JMPF R2 #0013
|
||||
0x8C080101, // 0002 GETMET R2 R0 K1
|
||||
0x6010000A, // 0003 GETGBL R4 G10
|
||||
0x88140100, // 0004 GETMBR R5 R0 K0
|
||||
0x8C140B02, // 0005 GETMET R5 R5 K2
|
||||
0x5C1C0200, // 0006 MOVE R7 R1
|
||||
0x7C140400, // 0007 CALL R5 2
|
||||
0x7C100200, // 0008 CALL R4 1
|
||||
0x7C080400, // 0009 CALL R2 2
|
||||
0x4C0C0000, // 000A LDNIL R3
|
||||
0x200C0403, // 000B NE R3 R2 R3
|
||||
0x780E0005, // 000C JMPF R3 #0013
|
||||
0x880C0103, // 000D GETMBR R3 R0 K3
|
||||
0x200C0403, // 000E NE R3 R2 R3
|
||||
0x780E0002, // 000F JMPF R3 #0013
|
||||
0x8C0C0104, // 0010 GETMET R3 R0 K4
|
||||
0x7C0C0200, // 0011 CALL R3 1
|
||||
0x90020602, // 0012 SETMBR R0 K3 R2
|
||||
0x80000000, // 0013 RET 0
|
||||
0x740A0012, // 0001 JMPT R2 #0015
|
||||
0x88080101, // 0002 GETMBR R2 R0 K1
|
||||
0x780A0010, // 0003 JMPF R2 #0015
|
||||
0x8C080102, // 0004 GETMET R2 R0 K2
|
||||
0x6010000A, // 0005 GETGBL R4 G10
|
||||
0x88140101, // 0006 GETMBR R5 R0 K1
|
||||
0x8C140B03, // 0007 GETMET R5 R5 K3
|
||||
0x5C1C0200, // 0008 MOVE R7 R1
|
||||
0x7C140400, // 0009 CALL R5 2
|
||||
0x7C100200, // 000A CALL R4 1
|
||||
0x7C080400, // 000B CALL R2 2
|
||||
0x4C0C0000, // 000C LDNIL R3
|
||||
0x200C0403, // 000D NE R3 R2 R3
|
||||
0x780E0005, // 000E JMPF R3 #0015
|
||||
0x880C0104, // 000F GETMBR R3 R0 K4
|
||||
0x200C0403, // 0010 NE R3 R2 R3
|
||||
0x780E0002, // 0011 JMPF R3 #0015
|
||||
0x8C0C0105, // 0012 GETMET R3 R0 K5
|
||||
0x7C0C0200, // 0013 CALL R3 1
|
||||
0x90020802, // 0014 SETMBR R0 K4 R2
|
||||
0x80000000, // 0015 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_3_Sensor_Contact.h */
|
||||
/* Solidification of Matter_Plugin_2_Sensor_Contact.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
@ -93,62 +93,65 @@ be_local_closure(Matter_Plugin_Sensor_Contact_update_shadow, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[13]) { /* constants */
|
||||
( &(const bvalue[14]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(update_shadow),
|
||||
/* K1 */ be_nested_str_weak(json),
|
||||
/* K2 */ be_nested_str_weak(tasmota),
|
||||
/* K3 */ be_nested_str_weak(cmd),
|
||||
/* K4 */ be_nested_str_weak(Status_X208),
|
||||
/* K5 */ be_nested_str_weak(load),
|
||||
/* K6 */ be_nested_str_weak(find),
|
||||
/* K7 */ be_nested_str_weak(Switch),
|
||||
/* K8 */ be_nested_str_weak(tasmota_switch_index),
|
||||
/* K9 */ be_nested_str_weak(ON),
|
||||
/* K10 */ be_nested_str_weak(shadow_contact),
|
||||
/* K11 */ be_nested_str_weak(attribute_updated),
|
||||
/* K12 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K2 */ be_nested_str_weak(json),
|
||||
/* K3 */ be_nested_str_weak(tasmota),
|
||||
/* K4 */ be_nested_str_weak(cmd),
|
||||
/* K5 */ be_nested_str_weak(Status_X208),
|
||||
/* K6 */ be_nested_str_weak(load),
|
||||
/* K7 */ be_nested_str_weak(find),
|
||||
/* K8 */ be_nested_str_weak(Switch),
|
||||
/* K9 */ be_nested_str_weak(tasmota_switch_index),
|
||||
/* K10 */ be_nested_str_weak(ON),
|
||||
/* K11 */ be_nested_str_weak(shadow_contact),
|
||||
/* K12 */ be_nested_str_weak(attribute_updated),
|
||||
/* K13 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[38]) { /* code */
|
||||
( &(const binstruction[40]) { /* code */
|
||||
0x60040003, // 0000 GETGBL R1 G3
|
||||
0x5C080000, // 0001 MOVE R2 R0
|
||||
0x7C040200, // 0002 CALL R1 1
|
||||
0x8C040300, // 0003 GETMET R1 R1 K0
|
||||
0x7C040200, // 0004 CALL R1 1
|
||||
0xA4060200, // 0005 IMPORT R1 K1
|
||||
0xB80A0400, // 0006 GETNGBL R2 K2
|
||||
0x8C080503, // 0007 GETMET R2 R2 K3
|
||||
0x58100004, // 0008 LDCONST R4 K4
|
||||
0x50140200, // 0009 LDBOOL R5 1 0
|
||||
0x7C080600, // 000A CALL R2 3
|
||||
0x4C0C0000, // 000B LDNIL R3
|
||||
0x200C0403, // 000C NE R3 R2 R3
|
||||
0x780E0016, // 000D JMPF R3 #0025
|
||||
0x8C0C0305, // 000E GETMET R3 R1 K5
|
||||
0x5C140400, // 000F MOVE R5 R2
|
||||
0x7C0C0400, // 0010 CALL R3 2
|
||||
0x4C100000, // 0011 LDNIL R4
|
||||
0x20100604, // 0012 NE R4 R3 R4
|
||||
0x78120010, // 0013 JMPF R4 #0025
|
||||
0x50100000, // 0014 LDBOOL R4 0 0
|
||||
0x8C140706, // 0015 GETMET R5 R3 K6
|
||||
0x601C0008, // 0016 GETGBL R7 G8
|
||||
0x88200108, // 0017 GETMBR R8 R0 K8
|
||||
0x7C1C0200, // 0018 CALL R7 1
|
||||
0x001E0E07, // 0019 ADD R7 K7 R7
|
||||
0x7C140400, // 001A CALL R5 2
|
||||
0x1C140B09, // 001B EQ R5 R5 K9
|
||||
0x5C100A00, // 001C MOVE R4 R5
|
||||
0x8814010A, // 001D GETMBR R5 R0 K10
|
||||
0x20140A04, // 001E NE R5 R5 R4
|
||||
0x78160004, // 001F JMPF R5 #0025
|
||||
0x8C14010B, // 0020 GETMET R5 R0 K11
|
||||
0x541E0044, // 0021 LDINT R7 69
|
||||
0x5820000C, // 0022 LDCONST R8 K12
|
||||
0x7C140600, // 0023 CALL R5 3
|
||||
0x90021404, // 0024 SETMBR R0 K10 R4
|
||||
0x80000000, // 0025 RET 0
|
||||
0x88040101, // 0005 GETMBR R1 R0 K1
|
||||
0x7406001F, // 0006 JMPT R1 #0027
|
||||
0xA4060400, // 0007 IMPORT R1 K2
|
||||
0xB80A0600, // 0008 GETNGBL R2 K3
|
||||
0x8C080504, // 0009 GETMET R2 R2 K4
|
||||
0x58100005, // 000A LDCONST R4 K5
|
||||
0x50140200, // 000B LDBOOL R5 1 0
|
||||
0x7C080600, // 000C CALL R2 3
|
||||
0x4C0C0000, // 000D LDNIL R3
|
||||
0x200C0403, // 000E NE R3 R2 R3
|
||||
0x780E0016, // 000F JMPF R3 #0027
|
||||
0x8C0C0306, // 0010 GETMET R3 R1 K6
|
||||
0x5C140400, // 0011 MOVE R5 R2
|
||||
0x7C0C0400, // 0012 CALL R3 2
|
||||
0x4C100000, // 0013 LDNIL R4
|
||||
0x20100604, // 0014 NE R4 R3 R4
|
||||
0x78120010, // 0015 JMPF R4 #0027
|
||||
0x50100000, // 0016 LDBOOL R4 0 0
|
||||
0x8C140707, // 0017 GETMET R5 R3 K7
|
||||
0x601C0008, // 0018 GETGBL R7 G8
|
||||
0x88200109, // 0019 GETMBR R8 R0 K9
|
||||
0x7C1C0200, // 001A CALL R7 1
|
||||
0x001E1007, // 001B ADD R7 K8 R7
|
||||
0x7C140400, // 001C CALL R5 2
|
||||
0x1C140B0A, // 001D EQ R5 R5 K10
|
||||
0x5C100A00, // 001E MOVE R4 R5
|
||||
0x8814010B, // 001F GETMBR R5 R0 K11
|
||||
0x20140A04, // 0020 NE R5 R5 R4
|
||||
0x78160004, // 0021 JMPF R5 #0027
|
||||
0x8C14010C, // 0022 GETMET R5 R0 K12
|
||||
0x541E0044, // 0023 LDINT R7 69
|
||||
0x5820000D, // 0024 LDCONST R8 K13
|
||||
0x7C140600, // 0025 CALL R5 3
|
||||
0x90021604, // 0026 SETMBR R0 K11 R4
|
||||
0x80000000, // 0027 RET 0
|
||||
})
|
||||
)
|
||||
);
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_3_Sensor_Occupancy.h */
|
||||
/* Solidification of Matter_Plugin_2_Sensor_Occupancy.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
@ -93,65 +93,68 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_update_shadow, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[13]) { /* constants */
|
||||
( &(const bvalue[14]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(update_shadow),
|
||||
/* K1 */ be_nested_str_weak(Switch),
|
||||
/* K2 */ be_nested_str_weak(tasmota_switch_index),
|
||||
/* K3 */ be_nested_str_weak(tasmota),
|
||||
/* K4 */ be_nested_str_weak(cmd),
|
||||
/* K5 */ be_nested_str_weak(Status_X208),
|
||||
/* K6 */ be_nested_str_weak(find),
|
||||
/* K7 */ be_nested_str_weak(StatusSNS),
|
||||
/* K8 */ be_nested_str_weak(contains),
|
||||
/* K9 */ be_nested_str_weak(ON),
|
||||
/* K10 */ be_nested_str_weak(shadow_occupancy),
|
||||
/* K11 */ be_nested_str_weak(attribute_updated),
|
||||
/* K12 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K2 */ be_nested_str_weak(Switch),
|
||||
/* K3 */ be_nested_str_weak(tasmota_switch_index),
|
||||
/* K4 */ be_nested_str_weak(tasmota),
|
||||
/* K5 */ be_nested_str_weak(cmd),
|
||||
/* K6 */ be_nested_str_weak(Status_X208),
|
||||
/* K7 */ be_nested_str_weak(find),
|
||||
/* K8 */ be_nested_str_weak(StatusSNS),
|
||||
/* K9 */ be_nested_str_weak(contains),
|
||||
/* K10 */ be_nested_str_weak(ON),
|
||||
/* K11 */ be_nested_str_weak(shadow_occupancy),
|
||||
/* K12 */ be_nested_str_weak(attribute_updated),
|
||||
/* K13 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[41]) { /* code */
|
||||
( &(const binstruction[43]) { /* code */
|
||||
0x60040003, // 0000 GETGBL R1 G3
|
||||
0x5C080000, // 0001 MOVE R2 R0
|
||||
0x7C040200, // 0002 CALL R1 1
|
||||
0x8C040300, // 0003 GETMET R1 R1 K0
|
||||
0x7C040200, // 0004 CALL R1 1
|
||||
0x60040008, // 0005 GETGBL R1 G8
|
||||
0x88080102, // 0006 GETMBR R2 R0 K2
|
||||
0x7C040200, // 0007 CALL R1 1
|
||||
0x00060201, // 0008 ADD R1 K1 R1
|
||||
0xB80A0600, // 0009 GETNGBL R2 K3
|
||||
0x8C080504, // 000A GETMET R2 R2 K4
|
||||
0x58100005, // 000B LDCONST R4 K5
|
||||
0x50140200, // 000C LDBOOL R5 1 0
|
||||
0x7C080600, // 000D CALL R2 3
|
||||
0x4C0C0000, // 000E LDNIL R3
|
||||
0x200C0403, // 000F NE R3 R2 R3
|
||||
0x780E0003, // 0010 JMPF R3 #0015
|
||||
0x8C0C0506, // 0011 GETMET R3 R2 K6
|
||||
0x58140007, // 0012 LDCONST R5 K7
|
||||
0x7C0C0400, // 0013 CALL R3 2
|
||||
0x5C080600, // 0014 MOVE R2 R3
|
||||
0x4C0C0000, // 0015 LDNIL R3
|
||||
0x200C0403, // 0016 NE R3 R2 R3
|
||||
0x780E000F, // 0017 JMPF R3 #0028
|
||||
0x8C0C0508, // 0018 GETMET R3 R2 K8
|
||||
0x5C140200, // 0019 MOVE R5 R1
|
||||
0x7C0C0400, // 001A CALL R3 2
|
||||
0x780E000B, // 001B JMPF R3 #0028
|
||||
0x8C0C0506, // 001C GETMET R3 R2 K6
|
||||
0x5C140200, // 001D MOVE R5 R1
|
||||
0x7C0C0400, // 001E CALL R3 2
|
||||
0x1C0C0709, // 001F EQ R3 R3 K9
|
||||
0x8810010A, // 0020 GETMBR R4 R0 K10
|
||||
0x20100803, // 0021 NE R4 R4 R3
|
||||
0x78120003, // 0022 JMPF R4 #0027
|
||||
0x8C10010B, // 0023 GETMET R4 R0 K11
|
||||
0x541A0405, // 0024 LDINT R6 1030
|
||||
0x581C000C, // 0025 LDCONST R7 K12
|
||||
0x7C100600, // 0026 CALL R4 3
|
||||
0x90021403, // 0027 SETMBR R0 K10 R3
|
||||
0x80000000, // 0028 RET 0
|
||||
0x88040101, // 0005 GETMBR R1 R0 K1
|
||||
0x74060022, // 0006 JMPT R1 #002A
|
||||
0x60040008, // 0007 GETGBL R1 G8
|
||||
0x88080103, // 0008 GETMBR R2 R0 K3
|
||||
0x7C040200, // 0009 CALL R1 1
|
||||
0x00060401, // 000A ADD R1 K2 R1
|
||||
0xB80A0800, // 000B GETNGBL R2 K4
|
||||
0x8C080505, // 000C GETMET R2 R2 K5
|
||||
0x58100006, // 000D LDCONST R4 K6
|
||||
0x50140200, // 000E LDBOOL R5 1 0
|
||||
0x7C080600, // 000F CALL R2 3
|
||||
0x4C0C0000, // 0010 LDNIL R3
|
||||
0x200C0403, // 0011 NE R3 R2 R3
|
||||
0x780E0003, // 0012 JMPF R3 #0017
|
||||
0x8C0C0507, // 0013 GETMET R3 R2 K7
|
||||
0x58140008, // 0014 LDCONST R5 K8
|
||||
0x7C0C0400, // 0015 CALL R3 2
|
||||
0x5C080600, // 0016 MOVE R2 R3
|
||||
0x4C0C0000, // 0017 LDNIL R3
|
||||
0x200C0403, // 0018 NE R3 R2 R3
|
||||
0x780E000F, // 0019 JMPF R3 #002A
|
||||
0x8C0C0509, // 001A GETMET R3 R2 K9
|
||||
0x5C140200, // 001B MOVE R5 R1
|
||||
0x7C0C0400, // 001C CALL R3 2
|
||||
0x780E000B, // 001D JMPF R3 #002A
|
||||
0x8C0C0507, // 001E GETMET R3 R2 K7
|
||||
0x5C140200, // 001F MOVE R5 R1
|
||||
0x7C0C0400, // 0020 CALL R3 2
|
||||
0x1C0C070A, // 0021 EQ R3 R3 K10
|
||||
0x8810010B, // 0022 GETMBR R4 R0 K11
|
||||
0x20100803, // 0023 NE R4 R4 R3
|
||||
0x78120003, // 0024 JMPF R4 #0029
|
||||
0x8C10010C, // 0025 GETMET R4 R0 K12
|
||||
0x541A0405, // 0026 LDINT R6 1030
|
||||
0x581C000D, // 0027 LDCONST R7 K13
|
||||
0x7C100600, // 0028 CALL R4 3
|
||||
0x90021603, // 0029 SETMBR R0 K11 R3
|
||||
0x80000000, // 002A RET 0
|
||||
})
|
||||
)
|
||||
);
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_3_Sensor_OnOff.h */
|
||||
/* Solidification of Matter_Plugin_2_Sensor_OnOff.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
@ -46,65 +46,68 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_update_shadow, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[13]) { /* constants */
|
||||
( &(const bvalue[14]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(update_shadow),
|
||||
/* K1 */ be_nested_str_weak(Switch),
|
||||
/* K2 */ be_nested_str_weak(tasmota_switch_index),
|
||||
/* K3 */ be_nested_str_weak(tasmota),
|
||||
/* K4 */ be_nested_str_weak(cmd),
|
||||
/* K5 */ be_nested_str_weak(Status_X208),
|
||||
/* K6 */ be_nested_str_weak(find),
|
||||
/* K7 */ be_nested_str_weak(StatusSNS),
|
||||
/* K8 */ be_nested_str_weak(contains),
|
||||
/* K9 */ be_nested_str_weak(ON),
|
||||
/* K10 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K11 */ be_nested_str_weak(attribute_updated),
|
||||
/* K12 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K2 */ be_nested_str_weak(Switch),
|
||||
/* K3 */ be_nested_str_weak(tasmota_switch_index),
|
||||
/* K4 */ be_nested_str_weak(tasmota),
|
||||
/* K5 */ be_nested_str_weak(cmd),
|
||||
/* K6 */ be_nested_str_weak(Status_X208),
|
||||
/* K7 */ be_nested_str_weak(find),
|
||||
/* K8 */ be_nested_str_weak(StatusSNS),
|
||||
/* K9 */ be_nested_str_weak(contains),
|
||||
/* K10 */ be_nested_str_weak(ON),
|
||||
/* K11 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K12 */ be_nested_str_weak(attribute_updated),
|
||||
/* K13 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[41]) { /* code */
|
||||
( &(const binstruction[43]) { /* code */
|
||||
0x60040003, // 0000 GETGBL R1 G3
|
||||
0x5C080000, // 0001 MOVE R2 R0
|
||||
0x7C040200, // 0002 CALL R1 1
|
||||
0x8C040300, // 0003 GETMET R1 R1 K0
|
||||
0x7C040200, // 0004 CALL R1 1
|
||||
0x60040008, // 0005 GETGBL R1 G8
|
||||
0x88080102, // 0006 GETMBR R2 R0 K2
|
||||
0x7C040200, // 0007 CALL R1 1
|
||||
0x00060201, // 0008 ADD R1 K1 R1
|
||||
0xB80A0600, // 0009 GETNGBL R2 K3
|
||||
0x8C080504, // 000A GETMET R2 R2 K4
|
||||
0x58100005, // 000B LDCONST R4 K5
|
||||
0x50140200, // 000C LDBOOL R5 1 0
|
||||
0x7C080600, // 000D CALL R2 3
|
||||
0x4C0C0000, // 000E LDNIL R3
|
||||
0x200C0403, // 000F NE R3 R2 R3
|
||||
0x780E0003, // 0010 JMPF R3 #0015
|
||||
0x8C0C0506, // 0011 GETMET R3 R2 K6
|
||||
0x58140007, // 0012 LDCONST R5 K7
|
||||
0x7C0C0400, // 0013 CALL R3 2
|
||||
0x5C080600, // 0014 MOVE R2 R3
|
||||
0x4C0C0000, // 0015 LDNIL R3
|
||||
0x200C0403, // 0016 NE R3 R2 R3
|
||||
0x780E000F, // 0017 JMPF R3 #0028
|
||||
0x8C0C0508, // 0018 GETMET R3 R2 K8
|
||||
0x5C140200, // 0019 MOVE R5 R1
|
||||
0x7C0C0400, // 001A CALL R3 2
|
||||
0x780E000B, // 001B JMPF R3 #0028
|
||||
0x8C0C0506, // 001C GETMET R3 R2 K6
|
||||
0x5C140200, // 001D MOVE R5 R1
|
||||
0x7C0C0400, // 001E CALL R3 2
|
||||
0x1C0C0709, // 001F EQ R3 R3 K9
|
||||
0x8810010A, // 0020 GETMBR R4 R0 K10
|
||||
0x20100803, // 0021 NE R4 R4 R3
|
||||
0x78120003, // 0022 JMPF R4 #0027
|
||||
0x8C10010B, // 0023 GETMET R4 R0 K11
|
||||
0x541A0005, // 0024 LDINT R6 6
|
||||
0x581C000C, // 0025 LDCONST R7 K12
|
||||
0x7C100600, // 0026 CALL R4 3
|
||||
0x90021403, // 0027 SETMBR R0 K10 R3
|
||||
0x80000000, // 0028 RET 0
|
||||
0x88040101, // 0005 GETMBR R1 R0 K1
|
||||
0x74060022, // 0006 JMPT R1 #002A
|
||||
0x60040008, // 0007 GETGBL R1 G8
|
||||
0x88080103, // 0008 GETMBR R2 R0 K3
|
||||
0x7C040200, // 0009 CALL R1 1
|
||||
0x00060401, // 000A ADD R1 K2 R1
|
||||
0xB80A0800, // 000B GETNGBL R2 K4
|
||||
0x8C080505, // 000C GETMET R2 R2 K5
|
||||
0x58100006, // 000D LDCONST R4 K6
|
||||
0x50140200, // 000E LDBOOL R5 1 0
|
||||
0x7C080600, // 000F CALL R2 3
|
||||
0x4C0C0000, // 0010 LDNIL R3
|
||||
0x200C0403, // 0011 NE R3 R2 R3
|
||||
0x780E0003, // 0012 JMPF R3 #0017
|
||||
0x8C0C0507, // 0013 GETMET R3 R2 K7
|
||||
0x58140008, // 0014 LDCONST R5 K8
|
||||
0x7C0C0400, // 0015 CALL R3 2
|
||||
0x5C080600, // 0016 MOVE R2 R3
|
||||
0x4C0C0000, // 0017 LDNIL R3
|
||||
0x200C0403, // 0018 NE R3 R2 R3
|
||||
0x780E000F, // 0019 JMPF R3 #002A
|
||||
0x8C0C0509, // 001A GETMET R3 R2 K9
|
||||
0x5C140200, // 001B MOVE R5 R1
|
||||
0x7C0C0400, // 001C CALL R3 2
|
||||
0x780E000B, // 001D JMPF R3 #002A
|
||||
0x8C0C0507, // 001E GETMET R3 R2 K7
|
||||
0x5C140200, // 001F MOVE R5 R1
|
||||
0x7C0C0400, // 0020 CALL R3 2
|
||||
0x1C0C070A, // 0021 EQ R3 R3 K10
|
||||
0x8810010B, // 0022 GETMBR R4 R0 K11
|
||||
0x20100803, // 0023 NE R4 R4 R3
|
||||
0x78120003, // 0024 JMPF R4 #0029
|
||||
0x8C10010C, // 0025 GETMET R4 R0 K12
|
||||
0x541A0005, // 0026 LDINT R6 6
|
||||
0x581C000D, // 0027 LDCONST R7 K13
|
||||
0x7C100600, // 0028 CALL R4 3
|
||||
0x90021603, // 0029 SETMBR R0 K11 R3
|
||||
0x80000000, // 002A RET 0
|
||||
})
|
||||
)
|
||||
);
|
@ -606,40 +606,43 @@ be_local_closure(Matter_Plugin_Shutter_update_shadow, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(update_inverted),
|
||||
/* K1 */ be_nested_str_weak(tasmota),
|
||||
/* K2 */ be_nested_str_weak(cmd),
|
||||
/* K3 */ be_nested_str_weak(ShutterPosition),
|
||||
/* K4 */ be_nested_str_weak(tasmota_shutter_index),
|
||||
/* K5 */ be_const_int(1),
|
||||
/* K6 */ be_nested_str_weak(parse_sensors),
|
||||
/* K7 */ be_nested_str_weak(update_shadow),
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(update_inverted),
|
||||
/* K2 */ be_nested_str_weak(tasmota),
|
||||
/* K3 */ be_nested_str_weak(cmd),
|
||||
/* K4 */ be_nested_str_weak(ShutterPosition),
|
||||
/* K5 */ be_nested_str_weak(tasmota_shutter_index),
|
||||
/* K6 */ be_const_int(1),
|
||||
/* K7 */ be_nested_str_weak(parse_sensors),
|
||||
/* K8 */ be_nested_str_weak(update_shadow),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[21]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x7C040200, // 0001 CALL R1 1
|
||||
0xB8060200, // 0002 GETNGBL R1 K1
|
||||
0x8C040302, // 0003 GETMET R1 R1 K2
|
||||
0x600C0008, // 0004 GETGBL R3 G8
|
||||
0x88100104, // 0005 GETMBR R4 R0 K4
|
||||
0x00100905, // 0006 ADD R4 R4 K5
|
||||
0x7C0C0200, // 0007 CALL R3 1
|
||||
0x000E0603, // 0008 ADD R3 K3 R3
|
||||
0x50100200, // 0009 LDBOOL R4 1 0
|
||||
0x7C040600, // 000A CALL R1 3
|
||||
0x78060002, // 000B JMPF R1 #000F
|
||||
0x8C080106, // 000C GETMET R2 R0 K6
|
||||
0x5C100200, // 000D MOVE R4 R1
|
||||
0x7C080400, // 000E CALL R2 2
|
||||
0x60080003, // 000F GETGBL R2 G3
|
||||
0x5C0C0000, // 0010 MOVE R3 R0
|
||||
0x7C080200, // 0011 CALL R2 1
|
||||
0x8C080507, // 0012 GETMET R2 R2 K7
|
||||
0x7C080200, // 0013 CALL R2 1
|
||||
0x80000000, // 0014 RET 0
|
||||
( &(const binstruction[23]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x7406000E, // 0001 JMPT R1 #0011
|
||||
0x8C040101, // 0002 GETMET R1 R0 K1
|
||||
0x7C040200, // 0003 CALL R1 1
|
||||
0xB8060400, // 0004 GETNGBL R1 K2
|
||||
0x8C040303, // 0005 GETMET R1 R1 K3
|
||||
0x600C0008, // 0006 GETGBL R3 G8
|
||||
0x88100105, // 0007 GETMBR R4 R0 K5
|
||||
0x00100906, // 0008 ADD R4 R4 K6
|
||||
0x7C0C0200, // 0009 CALL R3 1
|
||||
0x000E0803, // 000A ADD R3 K4 R3
|
||||
0x50100200, // 000B LDBOOL R4 1 0
|
||||
0x7C040600, // 000C CALL R1 3
|
||||
0x78060002, // 000D JMPF R1 #0011
|
||||
0x8C080107, // 000E GETMET R2 R0 K7
|
||||
0x5C100200, // 000F MOVE R4 R1
|
||||
0x7C080400, // 0010 CALL R2 2
|
||||
0x60040003, // 0011 GETGBL R1 G3
|
||||
0x5C080000, // 0012 MOVE R2 R0
|
||||
0x7C040200, // 0013 CALL R1 1
|
||||
0x8C040308, // 0014 GETMET R1 R1 K8
|
||||
0x7C040200, // 0015 CALL R1 1
|
||||
0x80000000, // 0016 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_4_Bridge_Sensor_Contact.h */
|
||||
/* Solidification of Matter_Plugin_3_Bridge_Sensor_Contact.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_4_Bridge_Sensor_Occupancy.h */
|
||||
/* Solidification of Matter_Plugin_3_Bridge_Sensor_Occupancy.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
@ -0,0 +1,36 @@
|
||||
/* Solidification of Matter_Plugin_3_Light0.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Light0;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Light0
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_OnOff;
|
||||
be_local_class(Matter_Plugin_Light0,
|
||||
0,
|
||||
&be_class_Matter_Plugin_OnOff,
|
||||
be_nested_map(3,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X200_X20On) },
|
||||
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(light0) },
|
||||
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(256, -1), be_const_int(2) },
|
||||
})) ) } )) },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Light0)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Light0_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Light0);
|
||||
be_setglobal(vm, "Matter_Plugin_Light0");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -1,663 +0,0 @@
|
||||
/* Solidification of Matter_Plugin_3_Light1.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Light1;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: set_bri
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_set_bri, /* 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[12]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K2 */ be_nested_str_weak(light),
|
||||
/* K3 */ be_nested_str_weak(tasmota),
|
||||
/* K4 */ be_nested_str_weak(scale_uint),
|
||||
/* K5 */ be_nested_str_weak(set),
|
||||
/* K6 */ be_nested_str_weak(bri),
|
||||
/* K7 */ be_nested_str_weak(power),
|
||||
/* K8 */ be_nested_str_weak(update_shadow),
|
||||
/* K9 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K10 */ be_nested_str_weak(attribute_updated),
|
||||
/* K11 */ be_nested_str_weak(shadow_bri),
|
||||
}),
|
||||
be_str_weak(set_bri),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[65]) { /* code */
|
||||
0x140C0300, // 0000 LT R3 R1 K0
|
||||
0x780E0000, // 0001 JMPF R3 #0003
|
||||
0x58040000, // 0002 LDCONST R1 K0
|
||||
0x540E00FD, // 0003 LDINT R3 254
|
||||
0x240C0203, // 0004 GT R3 R1 R3
|
||||
0x780E0000, // 0005 JMPF R3 #0007
|
||||
0x540600FD, // 0006 LDINT R1 254
|
||||
0x4C0C0000, // 0007 LDNIL R3
|
||||
0x200C0403, // 0008 NE R3 R2 R3
|
||||
0x780E0003, // 0009 JMPF R3 #000E
|
||||
0x600C0017, // 000A GETGBL R3 G23
|
||||
0x5C100400, // 000B MOVE R4 R2
|
||||
0x7C0C0200, // 000C CALL R3 1
|
||||
0x70020000, // 000D JMP #000F
|
||||
0x4C0C0000, // 000E LDNIL R3
|
||||
0x5C080600, // 000F MOVE R2 R3
|
||||
0x880C0101, // 0010 GETMBR R3 R0 K1
|
||||
0x740E001A, // 0011 JMPT R3 #002D
|
||||
0xA40E0400, // 0012 IMPORT R3 K2
|
||||
0xB8120600, // 0013 GETNGBL R4 K3
|
||||
0x8C100904, // 0014 GETMET R4 R4 K4
|
||||
0x5C180200, // 0015 MOVE R6 R1
|
||||
0x581C0000, // 0016 LDCONST R7 K0
|
||||
0x542200FD, // 0017 LDINT R8 254
|
||||
0x58240000, // 0018 LDCONST R9 K0
|
||||
0x542A00FE, // 0019 LDINT R10 255
|
||||
0x7C100C00, // 001A CALL R4 6
|
||||
0x4C140000, // 001B LDNIL R5
|
||||
0x1C140405, // 001C EQ R5 R2 R5
|
||||
0x78160005, // 001D JMPF R5 #0024
|
||||
0x8C140705, // 001E GETMET R5 R3 K5
|
||||
0x601C0013, // 001F GETGBL R7 G19
|
||||
0x7C1C0000, // 0020 CALL R7 0
|
||||
0x981E0C04, // 0021 SETIDX R7 K6 R4
|
||||
0x7C140400, // 0022 CALL R5 2
|
||||
0x70020005, // 0023 JMP #002A
|
||||
0x8C140705, // 0024 GETMET R5 R3 K5
|
||||
0x601C0013, // 0025 GETGBL R7 G19
|
||||
0x7C1C0000, // 0026 CALL R7 0
|
||||
0x981E0C04, // 0027 SETIDX R7 K6 R4
|
||||
0x981E0E02, // 0028 SETIDX R7 K7 R2
|
||||
0x7C140400, // 0029 CALL R5 2
|
||||
0x8C140108, // 002A GETMET R5 R0 K8
|
||||
0x7C140200, // 002B CALL R5 1
|
||||
0x70020012, // 002C JMP #0040
|
||||
0x4C0C0000, // 002D LDNIL R3
|
||||
0x200C0403, // 002E NE R3 R2 R3
|
||||
0x780E0007, // 002F JMPF R3 #0038
|
||||
0x880C0109, // 0030 GETMBR R3 R0 K9
|
||||
0x200C0403, // 0031 NE R3 R2 R3
|
||||
0x780E0004, // 0032 JMPF R3 #0038
|
||||
0x8C0C010A, // 0033 GETMET R3 R0 K10
|
||||
0x54160005, // 0034 LDINT R5 6
|
||||
0x58180000, // 0035 LDCONST R6 K0
|
||||
0x7C0C0600, // 0036 CALL R3 3
|
||||
0x90021202, // 0037 SETMBR R0 K9 R2
|
||||
0x880C010B, // 0038 GETMBR R3 R0 K11
|
||||
0x200C0203, // 0039 NE R3 R1 R3
|
||||
0x780E0004, // 003A JMPF R3 #0040
|
||||
0x8C0C010A, // 003B GETMET R3 R0 K10
|
||||
0x54160007, // 003C LDINT R5 8
|
||||
0x58180000, // 003D LDCONST R6 K0
|
||||
0x7C0C0600, // 003E CALL R3 3
|
||||
0x90021601, // 003F SETMBR R0 K11 R1
|
||||
0x80000000, // 0040 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_init, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(init),
|
||||
/* K1 */ be_nested_str_weak(shadow_bri),
|
||||
/* K2 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x60100003, // 0000 GETGBL R4 G3
|
||||
0x5C140000, // 0001 MOVE R5 R0
|
||||
0x7C100200, // 0002 CALL R4 1
|
||||
0x8C100900, // 0003 GETMET R4 R4 K0
|
||||
0x5C180200, // 0004 MOVE R6 R1
|
||||
0x5C1C0400, // 0005 MOVE R7 R2
|
||||
0x5C200600, // 0006 MOVE R8 R3
|
||||
0x7C100800, // 0007 CALL R4 4
|
||||
0x90020302, // 0008 SETMBR R0 K1 K2
|
||||
0x80000000, // 0009 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: update_shadow
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_update_shadow, /* 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[11]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(light),
|
||||
/* K2 */ be_nested_str_weak(get),
|
||||
/* K3 */ be_nested_str_weak(find),
|
||||
/* K4 */ be_nested_str_weak(bri),
|
||||
/* K5 */ be_nested_str_weak(tasmota),
|
||||
/* K6 */ be_nested_str_weak(scale_uint),
|
||||
/* K7 */ be_const_int(0),
|
||||
/* K8 */ be_nested_str_weak(shadow_bri),
|
||||
/* K9 */ be_nested_str_weak(attribute_updated),
|
||||
/* K10 */ be_nested_str_weak(update_shadow),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[38]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x7406001D, // 0001 JMPT R1 #0020
|
||||
0xA4060200, // 0002 IMPORT R1 K1
|
||||
0x8C080302, // 0003 GETMET R2 R1 K2
|
||||
0x7C080200, // 0004 CALL R2 1
|
||||
0x4C0C0000, // 0005 LDNIL R3
|
||||
0x200C0403, // 0006 NE R3 R2 R3
|
||||
0x780E0017, // 0007 JMPF R3 #0020
|
||||
0x8C0C0503, // 0008 GETMET R3 R2 K3
|
||||
0x58140004, // 0009 LDCONST R5 K4
|
||||
0x4C180000, // 000A LDNIL R6
|
||||
0x7C0C0600, // 000B CALL R3 3
|
||||
0x4C100000, // 000C LDNIL R4
|
||||
0x20100604, // 000D NE R4 R3 R4
|
||||
0x78120010, // 000E JMPF R4 #0020
|
||||
0xB8120A00, // 000F GETNGBL R4 K5
|
||||
0x8C100906, // 0010 GETMET R4 R4 K6
|
||||
0x5C180600, // 0011 MOVE R6 R3
|
||||
0x581C0007, // 0012 LDCONST R7 K7
|
||||
0x542200FE, // 0013 LDINT R8 255
|
||||
0x58240007, // 0014 LDCONST R9 K7
|
||||
0x542A00FD, // 0015 LDINT R10 254
|
||||
0x7C100C00, // 0016 CALL R4 6
|
||||
0x5C0C0800, // 0017 MOVE R3 R4
|
||||
0x88100108, // 0018 GETMBR R4 R0 K8
|
||||
0x20100604, // 0019 NE R4 R3 R4
|
||||
0x78120004, // 001A JMPF R4 #0020
|
||||
0x8C100109, // 001B GETMET R4 R0 K9
|
||||
0x541A0007, // 001C LDINT R6 8
|
||||
0x581C0007, // 001D LDCONST R7 K7
|
||||
0x7C100600, // 001E CALL R4 3
|
||||
0x90021003, // 001F SETMBR R0 K8 R3
|
||||
0x60040003, // 0020 GETGBL R1 G3
|
||||
0x5C080000, // 0021 MOVE R2 R0
|
||||
0x7C040200, // 0022 CALL R1 1
|
||||
0x8C04030A, // 0023 GETMET R1 R1 K10
|
||||
0x7C040200, // 0024 CALL R1 1
|
||||
0x80000000, // 0025 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read_attribute
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_read_attribute, /* 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[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(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U1),
|
||||
/* K8 */ be_nested_str_weak(shadow_bri),
|
||||
/* K9 */ be_const_int(2),
|
||||
/* K10 */ be_const_int(3),
|
||||
/* K11 */ be_nested_str_weak(U4),
|
||||
/* K12 */ be_const_int(1),
|
||||
/* K13 */ be_nested_str_weak(read_attribute),
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: update_virtual
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_update_virtual, /* 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[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(find),
|
||||
/* K1 */ be_nested_str_weak(Power),
|
||||
/* K2 */ be_nested_str_weak(Bri),
|
||||
/* K3 */ be_nested_str_weak(set_bri),
|
||||
/* K4 */ be_nested_str_weak(update_virtual),
|
||||
}),
|
||||
be_str_weak(update_virtual),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[23]) { /* code */
|
||||
0x8C080300, // 0000 GETMET R2 R1 K0
|
||||
0x58100001, // 0001 LDCONST R4 K1
|
||||
0x7C080400, // 0002 CALL R2 2
|
||||
0x8C0C0300, // 0003 GETMET R3 R1 K0
|
||||
0x58140002, // 0004 LDCONST R5 K2
|
||||
0x7C0C0400, // 0005 CALL R3 2
|
||||
0x4C100000, // 0006 LDNIL R4
|
||||
0x20100604, // 0007 NE R4 R3 R4
|
||||
0x78120006, // 0008 JMPF R4 #0010
|
||||
0x8C100103, // 0009 GETMET R4 R0 K3
|
||||
0x60180009, // 000A GETGBL R6 G9
|
||||
0x5C1C0600, // 000B MOVE R7 R3
|
||||
0x7C180200, // 000C CALL R6 1
|
||||
0x5C1C0400, // 000D MOVE R7 R2
|
||||
0x7C100600, // 000E CALL R4 3
|
||||
0x80000800, // 000F RET 0
|
||||
0x60100003, // 0010 GETGBL R4 G3
|
||||
0x5C140000, // 0011 MOVE R5 R0
|
||||
0x7C100200, // 0012 CALL R4 1
|
||||
0x8C100904, // 0013 GETMET R4 R4 K4
|
||||
0x5C180200, // 0014 MOVE R6 R1
|
||||
0x7C100400, // 0015 CALL R4 2
|
||||
0x80000000, // 0016 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: invoke_request
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_invoke_request, /* name */
|
||||
be_nested_proto(
|
||||
22, /* nstack */
|
||||
4, /* 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(light),
|
||||
/* K1 */ be_nested_str_weak(matter),
|
||||
/* K2 */ be_nested_str_weak(TLV),
|
||||
/* K3 */ be_nested_str_weak(cluster),
|
||||
/* K4 */ be_nested_str_weak(command),
|
||||
/* K5 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_str_weak(findsubval),
|
||||
/* K8 */ be_nested_str_weak(set_bri),
|
||||
/* K9 */ be_nested_str_weak(log),
|
||||
/* K10 */ be_nested_str_weak(bri_X3A),
|
||||
/* K11 */ be_nested_str_weak(publish_command),
|
||||
/* K12 */ be_nested_str_weak(Bri),
|
||||
/* K13 */ be_nested_str_weak(Dimmer),
|
||||
/* K14 */ be_nested_str_weak(tasmota),
|
||||
/* K15 */ be_nested_str_weak(scale_uint),
|
||||
/* K16 */ be_const_int(1),
|
||||
/* K17 */ be_const_int(2),
|
||||
/* K18 */ be_const_int(3),
|
||||
/* K19 */ be_nested_str_weak(Power),
|
||||
/* K20 */ be_nested_str_weak(invoke_request),
|
||||
}),
|
||||
be_str_weak(invoke_request),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[119]) { /* code */
|
||||
0xA4120000, // 0000 IMPORT R4 K0
|
||||
0xB8160200, // 0001 GETNGBL R5 K1
|
||||
0x88140B02, // 0002 GETMBR R5 R5 K2
|
||||
0x88180703, // 0003 GETMBR R6 R3 K3
|
||||
0x881C0704, // 0004 GETMBR R7 R3 K4
|
||||
0x54220007, // 0005 LDINT R8 8
|
||||
0x1C200C08, // 0006 EQ R8 R6 R8
|
||||
0x78220064, // 0007 JMPF R8 #006D
|
||||
0x8C200105, // 0008 GETMET R8 R0 K5
|
||||
0x7C200200, // 0009 CALL R8 1
|
||||
0x1C200F06, // 000A EQ R8 R7 K6
|
||||
0x7822001A, // 000B JMPF R8 #0027
|
||||
0x8C200507, // 000C GETMET R8 R2 K7
|
||||
0x58280006, // 000D LDCONST R10 K6
|
||||
0x7C200400, // 000E CALL R8 2
|
||||
0x8C240108, // 000F GETMET R9 R0 K8
|
||||
0x5C2C1000, // 0010 MOVE R11 R8
|
||||
0x7C240400, // 0011 CALL R9 2
|
||||
0x60240008, // 0012 GETGBL R9 G8
|
||||
0x5C281000, // 0013 MOVE R10 R8
|
||||
0x7C240200, // 0014 CALL R9 1
|
||||
0x00261409, // 0015 ADD R9 K10 R9
|
||||
0x900E1209, // 0016 SETMBR R3 K9 R9
|
||||
0x8C24010B, // 0017 GETMET R9 R0 K11
|
||||
0x582C000C, // 0018 LDCONST R11 K12
|
||||
0x5C301000, // 0019 MOVE R12 R8
|
||||
0x5834000D, // 001A LDCONST R13 K13
|
||||
0xB83A1C00, // 001B GETNGBL R14 K14
|
||||
0x8C381D0F, // 001C GETMET R14 R14 K15
|
||||
0x5C401000, // 001D MOVE R16 R8
|
||||
0x58440006, // 001E LDCONST R17 K6
|
||||
0x544A00FD, // 001F LDINT R18 254
|
||||
0x584C0006, // 0020 LDCONST R19 K6
|
||||
0x54520063, // 0021 LDINT R20 100
|
||||
0x7C380C00, // 0022 CALL R14 6
|
||||
0x7C240A00, // 0023 CALL R9 5
|
||||
0x50240200, // 0024 LDBOOL R9 1 0
|
||||
0x80041200, // 0025 RET 1 R9
|
||||
0x70020044, // 0026 JMP #006C
|
||||
0x1C200F10, // 0027 EQ R8 R7 K16
|
||||
0x78220002, // 0028 JMPF R8 #002C
|
||||
0x50200200, // 0029 LDBOOL R8 1 0
|
||||
0x80041000, // 002A RET 1 R8
|
||||
0x7002003F, // 002B JMP #006C
|
||||
0x1C200F11, // 002C EQ R8 R7 K17
|
||||
0x78220002, // 002D JMPF R8 #0031
|
||||
0x50200200, // 002E LDBOOL R8 1 0
|
||||
0x80041000, // 002F RET 1 R8
|
||||
0x7002003A, // 0030 JMP #006C
|
||||
0x1C200F12, // 0031 EQ R8 R7 K18
|
||||
0x78220002, // 0032 JMPF R8 #0036
|
||||
0x50200200, // 0033 LDBOOL R8 1 0
|
||||
0x80041000, // 0034 RET 1 R8
|
||||
0x70020035, // 0035 JMP #006C
|
||||
0x54220003, // 0036 LDINT R8 4
|
||||
0x1C200E08, // 0037 EQ R8 R7 R8
|
||||
0x78220021, // 0038 JMPF R8 #005B
|
||||
0x8C200507, // 0039 GETMET R8 R2 K7
|
||||
0x58280006, // 003A LDCONST R10 K6
|
||||
0x7C200400, // 003B CALL R8 2
|
||||
0x24241106, // 003C GT R9 R8 K6
|
||||
0x8C280108, // 003D GETMET R10 R0 K8
|
||||
0x5C301000, // 003E MOVE R12 R8
|
||||
0x5C341200, // 003F MOVE R13 R9
|
||||
0x7C280600, // 0040 CALL R10 3
|
||||
0x60280008, // 0041 GETGBL R10 G8
|
||||
0x5C2C1000, // 0042 MOVE R11 R8
|
||||
0x7C280200, // 0043 CALL R10 1
|
||||
0x002A140A, // 0044 ADD R10 K10 R10
|
||||
0x900E120A, // 0045 SETMBR R3 K9 R10
|
||||
0x8C28010B, // 0046 GETMET R10 R0 K11
|
||||
0x5830000C, // 0047 LDCONST R12 K12
|
||||
0x5C341000, // 0048 MOVE R13 R8
|
||||
0x5838000D, // 0049 LDCONST R14 K13
|
||||
0xB83E1C00, // 004A GETNGBL R15 K14
|
||||
0x8C3C1F0F, // 004B GETMET R15 R15 K15
|
||||
0x5C441000, // 004C MOVE R17 R8
|
||||
0x58480006, // 004D LDCONST R18 K6
|
||||
0x544E00FD, // 004E LDINT R19 254
|
||||
0x58500006, // 004F LDCONST R20 K6
|
||||
0x54560063, // 0050 LDINT R21 100
|
||||
0x7C3C0C00, // 0051 CALL R15 6
|
||||
0x58400013, // 0052 LDCONST R16 K19
|
||||
0x78260001, // 0053 JMPF R9 #0056
|
||||
0x58440010, // 0054 LDCONST R17 K16
|
||||
0x70020000, // 0055 JMP #0057
|
||||
0x58440006, // 0056 LDCONST R17 K6
|
||||
0x7C280E00, // 0057 CALL R10 7
|
||||
0x50280200, // 0058 LDBOOL R10 1 0
|
||||
0x80041400, // 0059 RET 1 R10
|
||||
0x70020010, // 005A JMP #006C
|
||||
0x54220004, // 005B LDINT R8 5
|
||||
0x1C200E08, // 005C EQ R8 R7 R8
|
||||
0x78220002, // 005D JMPF R8 #0061
|
||||
0x50200200, // 005E LDBOOL R8 1 0
|
||||
0x80041000, // 005F RET 1 R8
|
||||
0x7002000A, // 0060 JMP #006C
|
||||
0x54220005, // 0061 LDINT R8 6
|
||||
0x1C200E08, // 0062 EQ R8 R7 R8
|
||||
0x78220002, // 0063 JMPF R8 #0067
|
||||
0x50200200, // 0064 LDBOOL R8 1 0
|
||||
0x80041000, // 0065 RET 1 R8
|
||||
0x70020004, // 0066 JMP #006C
|
||||
0x54220006, // 0067 LDINT R8 7
|
||||
0x1C200E08, // 0068 EQ R8 R7 R8
|
||||
0x78220001, // 0069 JMPF R8 #006C
|
||||
0x50200200, // 006A LDBOOL R8 1 0
|
||||
0x80041000, // 006B RET 1 R8
|
||||
0x70020008, // 006C JMP #0076
|
||||
0x60200003, // 006D GETGBL R8 G3
|
||||
0x5C240000, // 006E MOVE R9 R0
|
||||
0x7C200200, // 006F CALL R8 1
|
||||
0x8C201114, // 0070 GETMET R8 R8 K20
|
||||
0x5C280200, // 0071 MOVE R10 R1
|
||||
0x5C2C0400, // 0072 MOVE R11 R2
|
||||
0x5C300600, // 0073 MOVE R12 R3
|
||||
0x7C200800, // 0074 CALL R8 4
|
||||
0x80041000, // 0075 RET 1 R8
|
||||
0x80000000, // 0076 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Light1
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_Light0;
|
||||
be_local_class(Matter_Plugin_Light1,
|
||||
1,
|
||||
&be_class_Matter_Plugin_Light0,
|
||||
be_nested_map(12,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Light1_invoke_request_closure) },
|
||||
{ be_const_key_weak(shadow_bri, 7), be_const_var(0) },
|
||||
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(257, -1), be_const_int(2) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(UPDATE_COMMANDS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(2,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_nested_str_weak(Power),
|
||||
be_nested_str_weak(Bri),
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Light1_init_closure) },
|
||||
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Light1_update_shadow_closure) },
|
||||
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Light1_read_attribute_closure) },
|
||||
{ be_const_key_weak(TYPE, 5), be_nested_str_weak(light1) },
|
||||
{ be_const_key_weak(update_virtual, -1), be_const_closure(Matter_Plugin_Light1_update_virtual_closure) },
|
||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X201_X20Dimmer) },
|
||||
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(7,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(6,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(7,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(15),
|
||||
be_const_int(17),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(7,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(17),
|
||||
be_const_int(3),
|
||||
be_const_int(5),
|
||||
be_const_int(10),
|
||||
be_const_int(15),
|
||||
be_const_int(17),
|
||||
be_const_int(18),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(4,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(8,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(4),
|
||||
be_const_int(5),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(set_bri, 0), be_const_closure(Matter_Plugin_Light1_set_bri_closure) },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Light1)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Light1_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Light1);
|
||||
be_setglobal(vm, "Matter_Plugin_Light1");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_4_Light2.h */
|
||||
/* Solidification of Matter_Plugin_3_Light2.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
@ -156,49 +156,58 @@ be_local_closure(Matter_Plugin_Light2_update_shadow, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(light),
|
||||
/* K1 */ be_nested_str_weak(update_ct_minmax),
|
||||
/* K2 */ be_nested_str_weak(update_shadow),
|
||||
/* K3 */ be_nested_str_weak(get),
|
||||
/* K4 */ be_nested_str_weak(find),
|
||||
/* K5 */ be_nested_str_weak(ct),
|
||||
/* K6 */ be_nested_str_weak(shadow_ct),
|
||||
/* K7 */ be_nested_str_weak(attribute_updated),
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(VIRTUAL),
|
||||
/* K1 */ be_nested_str_weak(light),
|
||||
/* K2 */ be_nested_str_weak(update_ct_minmax),
|
||||
/* K3 */ be_nested_str_weak(update_shadow),
|
||||
/* K4 */ be_nested_str_weak(get),
|
||||
/* K5 */ be_nested_str_weak(find),
|
||||
/* K6 */ be_nested_str_weak(ct),
|
||||
/* K7 */ be_nested_str_weak(shadow_ct),
|
||||
/* K8 */ be_nested_str_weak(attribute_updated),
|
||||
}),
|
||||
be_str_weak(update_shadow),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[30]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080101, // 0001 GETMET R2 R0 K1
|
||||
0x7C080200, // 0002 CALL R2 1
|
||||
0x60080003, // 0003 GETGBL R2 G3
|
||||
0x5C0C0000, // 0004 MOVE R3 R0
|
||||
0x7C080200, // 0005 CALL R2 1
|
||||
0x8C080502, // 0006 GETMET R2 R2 K2
|
||||
( &(const binstruction[38]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x7406001D, // 0001 JMPT R1 #0020
|
||||
0xA4060200, // 0002 IMPORT R1 K1
|
||||
0x8C080102, // 0003 GETMET R2 R0 K2
|
||||
0x7C080200, // 0004 CALL R2 1
|
||||
0x60080003, // 0005 GETGBL R2 G3
|
||||
0x5C0C0000, // 0006 MOVE R3 R0
|
||||
0x7C080200, // 0007 CALL R2 1
|
||||
0x8C080303, // 0008 GETMET R2 R1 K3
|
||||
0x8C080503, // 0008 GETMET R2 R2 K3
|
||||
0x7C080200, // 0009 CALL R2 1
|
||||
0x4C0C0000, // 000A LDNIL R3
|
||||
0x200C0403, // 000B NE R3 R2 R3
|
||||
0x780E000F, // 000C JMPF R3 #001D
|
||||
0x8C0C0504, // 000D GETMET R3 R2 K4
|
||||
0x58140005, // 000E LDCONST R5 K5
|
||||
0x4C180000, // 000F LDNIL R6
|
||||
0x7C0C0600, // 0010 CALL R3 3
|
||||
0x4C100000, // 0011 LDNIL R4
|
||||
0x1C100604, // 0012 EQ R4 R3 R4
|
||||
0x78120000, // 0013 JMPF R4 #0015
|
||||
0x880C0106, // 0014 GETMBR R3 R0 K6
|
||||
0x88100106, // 0015 GETMBR R4 R0 K6
|
||||
0x20100604, // 0016 NE R4 R3 R4
|
||||
0x78120004, // 0017 JMPF R4 #001D
|
||||
0x8C100107, // 0018 GETMET R4 R0 K7
|
||||
0x541A02FF, // 0019 LDINT R6 768
|
||||
0x541E0006, // 001A LDINT R7 7
|
||||
0x7C100600, // 001B CALL R4 3
|
||||
0x90020C03, // 001C SETMBR R0 K6 R3
|
||||
0x80000000, // 001D RET 0
|
||||
0x8C080304, // 000A GETMET R2 R1 K4
|
||||
0x7C080200, // 000B CALL R2 1
|
||||
0x4C0C0000, // 000C LDNIL R3
|
||||
0x200C0403, // 000D NE R3 R2 R3
|
||||
0x780E000F, // 000E JMPF R3 #001F
|
||||
0x8C0C0505, // 000F GETMET R3 R2 K5
|
||||
0x58140006, // 0010 LDCONST R5 K6
|
||||
0x4C180000, // 0011 LDNIL R6
|
||||
0x7C0C0600, // 0012 CALL R3 3
|
||||
0x4C100000, // 0013 LDNIL R4
|
||||
0x1C100604, // 0014 EQ R4 R3 R4
|
||||
0x78120000, // 0015 JMPF R4 #0017
|
||||
0x880C0107, // 0016 GETMBR R3 R0 K7
|
||||
0x88100107, // 0017 GETMBR R4 R0 K7
|
||||
0x20100604, // 0018 NE R4 R3 R4
|
||||
0x78120004, // 0019 JMPF R4 #001F
|
||||
0x8C100108, // 001A GETMET R4 R0 K8
|
||||
0x541A02FF, // 001B LDINT R6 768
|
||||
0x541E0006, // 001C LDINT R7 7
|
||||
0x7C100600, // 001D CALL R4 3
|
||||
0x90020E03, // 001E SETMBR R0 K7 R3
|
||||
0x70020004, // 001F JMP #0025
|
||||
0x60040003, // 0020 GETGBL R1 G3
|
||||
0x5C080000, // 0021 MOVE R2 R0
|
||||
0x7C040200, // 0022 CALL R1 1
|
||||
0x8C040303, // 0023 GETMET R1 R1 K3
|
||||
0x7C040200, // 0024 CALL R1 1
|
||||
0x80000000, // 0025 RET 0
|
||||
})
|
||||
)
|
||||
);
|
@ -1,4 +1,4 @@
|
||||
/* Solidification of Matter_Plugin_4_Light3.h */
|
||||
/* Solidification of Matter_Plugin_3_Light3.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
@ -0,0 +1,279 @@
|
||||
/* Solidification of Matter_Plugin_3_Sensor_Flow.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Sensor_Flow;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: value_changed
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Flow_value_changed, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(attribute_updated),
|
||||
/* K1 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(value_changed),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E0403, // 0001 LDINT R3 1028
|
||||
0x58100001, // 0002 LDCONST R4 K1
|
||||
0x7C040600, // 0003 CALL R1 3
|
||||
0x80000000, // 0004 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read_attribute
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Flow_read_attribute, /* 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[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(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
/* K10 */ be_const_int(2),
|
||||
/* K11 */ be_nested_str_weak(U4),
|
||||
/* K12 */ be_const_int(3),
|
||||
/* K13 */ be_nested_str_weak(read_attribute),
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(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
|
||||
0x541E0403, // 0004 LDINT R7 1028
|
||||
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
|
||||
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
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x58280004, // 001F LDCONST R10 K4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
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
|
||||
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
|
||||
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
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: pre_value
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Flow_pre_value, /* name */
|
||||
be_nested_proto(
|
||||
4, /* 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[10]) { /* code */
|
||||
0x4C080000, // 0000 LDNIL R2
|
||||
0x20080202, // 0001 NE R2 R1 R2
|
||||
0x780A0004, // 0002 JMPF R2 #0008
|
||||
0x60080009, // 0003 GETGBL R2 G9
|
||||
0x540E0009, // 0004 LDINT R3 10
|
||||
0x080C0203, // 0005 MUL R3 R1 R3
|
||||
0x7C080200, // 0006 CALL R2 1
|
||||
0x70020000, // 0007 JMP #0009
|
||||
0x4C080000, // 0008 LDNIL R2
|
||||
0x80040400, // 0009 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Sensor_Flow
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_Sensor;
|
||||
be_local_class(Matter_Plugin_Sensor_Flow,
|
||||
0,
|
||||
&be_class_Matter_Plugin_Sensor,
|
||||
be_nested_map(9,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Flow) },
|
||||
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(flow) },
|
||||
{ be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(774, -1), be_const_int(1) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(1,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_nested_str_weak(Flow),
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(value_changed, 7), be_const_closure(Matter_Plugin_Sensor_Flow_value_changed_closure) },
|
||||
{ be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Flow) },
|
||||
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Sensor_Flow_read_attribute_closure) },
|
||||
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(6,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(8,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(4),
|
||||
be_const_int(5),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(7,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(17),
|
||||
be_const_int(3),
|
||||
be_const_int(5),
|
||||
be_const_int(10),
|
||||
be_const_int(15),
|
||||
be_const_int(17),
|
||||
be_const_int(18),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(5,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(4,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(6,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_Flow_pre_value_closure) },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Sensor_Flow)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Sensor_Flow_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Sensor_Flow);
|
||||
be_setglobal(vm, "Matter_Plugin_Sensor_Flow");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -0,0 +1,315 @@
|
||||
/* Solidification of Matter_Plugin_4_Bridge_Sensor_Flow.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: pre_value
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_pre_value, /* name */
|
||||
be_nested_proto(
|
||||
4, /* 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[10]) { /* code */
|
||||
0x4C080000, // 0000 LDNIL R2
|
||||
0x20080202, // 0001 NE R2 R1 R2
|
||||
0x780A0004, // 0002 JMPF R2 #0008
|
||||
0x60080009, // 0003 GETGBL R2 G9
|
||||
0x540E0009, // 0004 LDINT R3 10
|
||||
0x080C0203, // 0005 MUL R3 R1 R3
|
||||
0x7C080200, // 0006 CALL R2 1
|
||||
0x70020000, // 0007 JMP #0009
|
||||
0x4C080000, // 0008 LDNIL R2
|
||||
0x80040400, // 0009 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: value_changed
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_value_changed, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(attribute_updated),
|
||||
/* K1 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(value_changed),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E0403, // 0001 LDINT R3 1028
|
||||
0x58100001, // 0002 LDCONST R4 K1
|
||||
0x7C040600, // 0003 CALL R1 3
|
||||
0x80000000, // 0004 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read_attribute
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_read_attribute, /* 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[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(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
/* K10 */ be_const_int(2),
|
||||
/* K11 */ be_nested_str_weak(U4),
|
||||
/* K12 */ be_const_int(3),
|
||||
/* K13 */ be_nested_str_weak(read_attribute),
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(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
|
||||
0x541E0403, // 0004 LDINT R7 1028
|
||||
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
|
||||
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
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x58280004, // 001F LDCONST R10 K4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
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
|
||||
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
|
||||
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
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: web_values
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Flow_web_values, /* 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[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(webserver),
|
||||
/* K1 */ be_nested_str_weak(web_values_prefix),
|
||||
/* K2 */ be_nested_str_weak(content_send),
|
||||
/* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20m3_X2Fh),
|
||||
/* K4 */ be_nested_str_weak(shadow_value),
|
||||
}),
|
||||
be_str_weak(web_values),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080101, // 0001 GETMET R2 R0 K1
|
||||
0x7C080200, // 0002 CALL R2 1
|
||||
0x8C080302, // 0003 GETMET R2 R1 K2
|
||||
0x60100018, // 0004 GETGBL R4 G24
|
||||
0x58140003, // 0005 LDCONST R5 K3
|
||||
0x60180009, // 0006 GETGBL R6 G9
|
||||
0x881C0104, // 0007 GETMBR R7 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x7C100400, // 0009 CALL R4 2
|
||||
0x7C080400, // 000A CALL R2 2
|
||||
0x80000000, // 000B RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Bridge_Sensor_Flow
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
|
||||
be_local_class(Matter_Plugin_Bridge_Sensor_Flow,
|
||||
0,
|
||||
&be_class_Matter_Plugin_Bridge_Sensor,
|
||||
be_nested_map(8,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(pre_value, 1), be_const_closure(Matter_Plugin_Bridge_Sensor_Flow_pre_value_closure) },
|
||||
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Flow_web_values_closure) },
|
||||
{ be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(774, -1), be_const_int(1) },
|
||||
})) ) } )) },
|
||||
{ be_const_key_weak(read_attribute, 7), be_const_closure(Matter_Plugin_Bridge_Sensor_Flow_read_attribute_closure) },
|
||||
{ be_const_key_weak(value_changed, 6), be_const_closure(Matter_Plugin_Bridge_Sensor_Flow_value_changed_closure) },
|
||||
{ be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Flow) },
|
||||
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_flow) },
|
||||
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||
be_const_map( * be_nested_map(6,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(8,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(4),
|
||||
be_const_int(5),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(7,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(17),
|
||||
be_const_int(3),
|
||||
be_const_int(5),
|
||||
be_const_int(10),
|
||||
be_const_int(15),
|
||||
be_const_int(17),
|
||||
be_const_int(18),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(5,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(4,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(3,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
{ be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||
be_const_list( * be_nested_list(6,
|
||||
( (struct bvalue*) &(const bvalue[]) {
|
||||
be_const_int(0),
|
||||
be_const_int(1),
|
||||
be_const_int(2),
|
||||
be_const_int(3),
|
||||
be_const_int(65532),
|
||||
be_const_int(65533),
|
||||
})) ) } )) },
|
||||
})) ) } )) },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Bridge_Sensor_Flow)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Bridge_Sensor_Flow_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Bridge_Sensor_Flow);
|
||||
be_setglobal(vm, "Matter_Plugin_Bridge_Sensor_Flow");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -0,0 +1,34 @@
|
||||
/* Solidification of Matter_Plugin_9_Virt_Sensor_Flow.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Virt_Sensor_Flow;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Virt_Sensor_Flow
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_Sensor_Flow;
|
||||
be_local_class(Matter_Plugin_Virt_Sensor_Flow,
|
||||
0,
|
||||
&be_class_Matter_Plugin_Sensor_Flow,
|
||||
be_nested_map(5,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(VIRTUAL, 3), be_const_bool(1) },
|
||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EFlow) },
|
||||
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(v_flow) },
|
||||
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
|
||||
{ be_const_key_weak(ARG, 2), be_nested_str_weak() },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Virt_Sensor_Flow)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Virt_Sensor_Flow_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Virt_Sensor_Flow);
|
||||
be_setglobal(vm, "Matter_Plugin_Virt_Sensor_Flow");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -0,0 +1,34 @@
|
||||
/* Solidification of Matter_Plugin_9_Virt_Sensor_Occupancy.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern const bclass be_class_Matter_Plugin_Virt_Sensor_Occupancy;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Plugin_Virt_Sensor_Occupancy
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
|
||||
be_local_class(Matter_Plugin_Virt_Sensor_Occupancy,
|
||||
0,
|
||||
&be_class_Matter_Plugin_Sensor_Occupancy,
|
||||
be_nested_map(5,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(VIRTUAL, 3), be_const_bool(1) },
|
||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EOccupancy) },
|
||||
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(v_occupancy) },
|
||||
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
|
||||
{ be_const_key_weak(ARG, 2), be_nested_str_weak() },
|
||||
})),
|
||||
be_str_weak(Matter_Plugin_Virt_Sensor_Occupancy)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_Plugin_Virt_Sensor_Occupancy_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_Plugin_Virt_Sensor_Occupancy);
|
||||
be_setglobal(vm, "Matter_Plugin_Virt_Sensor_Occupancy");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -0,0 +1,7 @@
|
||||
/* Solidification of Matter_Plugin_z_All.h */
|
||||
/********************************************************************\
|
||||
* Generated code, don't edit *
|
||||
\********************************************************************/
|
||||
#include "be_constobj.h"
|
||||
/********************************************************************/
|
||||
/* End of solidification */
|
@ -3360,7 +3360,7 @@ be_local_class(Matter_UI,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(equal_map, -1), be_const_static_closure(Matter_UI_equal_map_closure) },
|
||||
{ be_const_key_weak(page_part_mgr_adv, -1), be_const_closure(Matter_UI_page_part_mgr_adv_closure) },
|
||||
{ be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact) },
|
||||
{ be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact_X7Chttp_flow) },
|
||||
{ be_const_key_weak(page_part_mgr, 25), be_const_closure(Matter_UI_page_part_mgr_closure) },
|
||||
{ be_const_key_weak(show_plugins_hints_js, -1), be_const_closure(Matter_UI_show_plugins_hints_js_closure) },
|
||||
{ be_const_key_weak(show_enable, -1), be_const_closure(Matter_UI_show_enable_closure) },
|
||||
@ -3372,7 +3372,7 @@ be_local_class(Matter_UI,
|
||||
{ be_const_key_weak(show_commissioning_info, -1), be_const_closure(Matter_UI_show_commissioning_info_closure) },
|
||||
{ be_const_key_weak(page_part_ctl, 18), be_const_closure(Matter_UI_page_part_ctl_closure) },
|
||||
{ be_const_key_weak(show_fabric_info, -1), be_const_closure(Matter_UI_show_fabric_info_closure) },
|
||||
{ be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_weak(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_contact) },
|
||||
{ be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_weak(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow) },
|
||||
{ be_const_key_weak(web_get_arg, -1), be_const_closure(Matter_UI_web_get_arg_closure) },
|
||||
{ be_const_key_weak(plugin_option, 5), be_const_closure(Matter_UI_plugin_option_closure) },
|
||||
{ be_const_key_weak(web_add_config_button, -1), be_const_closure(Matter_UI_web_add_config_button_closure) },
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,7 @@
|
||||
import os
|
||||
import global
|
||||
import solidify
|
||||
import string
|
||||
import string as string2
|
||||
import re
|
||||
|
||||
import sys
|
||||
@ -18,13 +18,27 @@ var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,M
|
||||
"_lvgl,"
|
||||
"int64"
|
||||
|
||||
for g:string.split(globs, ",")
|
||||
for g:string2.split(globs, ",")
|
||||
global.(g) = nil
|
||||
end
|
||||
|
||||
var prefix_dir = "src/embedded/"
|
||||
var prefix_out = "src/solidify/"
|
||||
|
||||
def sort(l)
|
||||
# insertion sort
|
||||
for i:1..size(l)-1
|
||||
var k = l[i]
|
||||
var j = i
|
||||
while (j > 0) && (l[j-1] > k)
|
||||
l[j] = l[j-1]
|
||||
j -= 1
|
||||
end
|
||||
l[j] = k
|
||||
end
|
||||
return l
|
||||
end
|
||||
|
||||
def clean_directory(dir)
|
||||
var file_list = os.listdir(dir)
|
||||
for f : file_list
|
||||
@ -44,9 +58,9 @@ def parse_file(fname, prefix_out)
|
||||
var compiled = compile(src)
|
||||
compiled() # run the compile code to instanciate the classes and modules
|
||||
# output solidified
|
||||
var fname_h = string.split(fname, '.be')[0] + '.h' # take whatever is before the first '.be'
|
||||
var fname_h = string2.split(fname, '.be')[0] + '.h' # take whatever is before the first '.be'
|
||||
var fout = open(prefix_out + "solidified_" + fname_h, "w")
|
||||
fout.write(format("/* Solidification of %s */\n", fname_h))
|
||||
fout.write(f"/* Solidification of {fname_h} */\n")
|
||||
fout.write("/********************************************************************\\\n")
|
||||
fout.write("* Generated code, don't edit *\n")
|
||||
fout.write("\\********************************************************************/\n")
|
||||
@ -56,13 +70,13 @@ def parse_file(fname, prefix_out)
|
||||
# print(directives)
|
||||
|
||||
for directive : directives
|
||||
var object_list = string.split(directive[1], ',')
|
||||
var object_list = string2.split(directive[1], ',')
|
||||
var object_name = object_list[0]
|
||||
var weak = (object_list.find('weak') != nil) # do we solidify with weak strings?
|
||||
var o = global
|
||||
var cl_name = nil
|
||||
var obj_name = nil
|
||||
for subname : string.split(object_name, '.')
|
||||
for subname : string2.split(object_name, '.')
|
||||
o = o.(subname)
|
||||
cl_name = obj_name
|
||||
obj_name = subname
|
||||
@ -78,6 +92,7 @@ end
|
||||
clean_directory(prefix_out)
|
||||
|
||||
var src_file_list = os.listdir(prefix_dir)
|
||||
src_file_list = sort(src_file_list)
|
||||
for src_file : src_file_list
|
||||
if src_file[0] == '.' continue end
|
||||
parse_file(src_file, prefix_out)
|
||||
|
@ -8,11 +8,6 @@
|
||||
|
||||
#if defined(USE_BERRY_ULP) && (defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3))
|
||||
|
||||
// #include "esp32/ulp.h"
|
||||
#include "driver/rtc_io.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/adc.h"
|
||||
|
||||
extern void be_ULP_run(int32_t entry);
|
||||
BE_FUNC_CTYPE_DECLARE(be_ULP_run, "", "[i]");
|
||||
|
||||
@ -25,10 +20,10 @@ BE_FUNC_CTYPE_DECLARE(be_ULP_set_mem, "i", "ii");
|
||||
extern int32_t be_ULP_get_mem(int32_t pos);
|
||||
BE_FUNC_CTYPE_DECLARE(be_ULP_get_mem, "i", "i");
|
||||
|
||||
extern int32_t be_ULP_gpio_init(gpio_num_t pin, rtc_gpio_mode_t mode);
|
||||
extern int32_t be_ULP_gpio_init(int32_t pin, int32_t mode);
|
||||
BE_FUNC_CTYPE_DECLARE(be_ULP_gpio_init, "i", "ii");
|
||||
|
||||
extern void be_ULP_adc_config(struct bvm *vm, adc1_channel_t channel, adc_atten_t attenuation, adc_bits_width_t width);
|
||||
extern void be_ULP_adc_config(struct bvm *vm, int32_t channel, int32_t attenuation, int32_t width);
|
||||
BE_FUNC_CTYPE_DECLARE(be_ULP_adc_config, "", "@iii");
|
||||
|
||||
extern void be_ULP_sleep(int32_t wake_up_s);
|
||||
|
@ -1,9 +1,9 @@
|
||||
/********************************************************************
|
||||
* Berry module `webserver`
|
||||
* Berry module `crypto`
|
||||
*
|
||||
* To use: `import webserver`
|
||||
* To use: `import crypto`
|
||||
*
|
||||
* Allows to respond to HTTP request
|
||||
* Allows to use crypto functions
|
||||
*******************************************************************/
|
||||
#include "be_constobj.h"
|
||||
#include "be_mapping.h"
|
||||
@ -29,6 +29,9 @@ extern int m_aes_ctr_init(bvm *vm);
|
||||
extern int m_aes_ctr_run(bvm *vm);
|
||||
extern int m_aes_ctr_tag(bvm *vm);
|
||||
|
||||
extern int m_aes_cbc_encrypt1(bvm *vm);
|
||||
extern int m_aes_cbc_decrypt1(bvm *vm);
|
||||
|
||||
extern int m_ec_p256_pubkey(bvm *vm);
|
||||
extern int m_ec_p256_sharedkey(bvm *vm);
|
||||
extern int m_ec_p256_ecdsa_sign_sha256(bvm *vm);
|
||||
@ -64,6 +67,7 @@ extern const bclass be_class_md5;
|
||||
#include "be_fixed_be_class_aes_ccm.h"
|
||||
#include "be_fixed_be_class_aes_gcm.h"
|
||||
#include "be_fixed_be_class_aes_ctr.h"
|
||||
#include "be_fixed_be_class_aes_cbc.h"
|
||||
#include "be_fixed_be_class_ec_p256.h"
|
||||
#include "be_fixed_be_class_ec_c25519.h"
|
||||
#include "be_fixed_be_class_sha256.h"
|
||||
@ -75,6 +79,10 @@ extern const bclass be_class_md5;
|
||||
const be_const_member_t be_crypto_members[] = {
|
||||
// name with prefix '/' indicates a Berry class
|
||||
// entries need to be sorted (ignoring the prefix char)
|
||||
#ifdef USE_BERRY_CRYPTO_AES_CBC
|
||||
{ "/AES_CBC", (intptr_t) &be_class_aes_cbc },
|
||||
#endif // USE_BERRY_CRYPTO_AES_CBC
|
||||
|
||||
#ifdef USE_BERRY_CRYPTO_AES_CCM
|
||||
{ "/AES_CCM", (intptr_t) &be_class_aes_ccm },
|
||||
#endif // USE_BERRY_CRYPTO_AES_CTR
|
||||
@ -162,6 +170,11 @@ class be_class_aes_ctr (scope: global, name: AES_CTR) {
|
||||
decrypt, func(m_aes_ctr_run)
|
||||
}
|
||||
|
||||
class be_class_aes_cbc (scope: global, name: AES_CBC) {
|
||||
decrypt1, static_func(m_aes_cbc_decrypt1)
|
||||
encrypt1, static_func(m_aes_cbc_encrypt1)
|
||||
}
|
||||
|
||||
class be_class_ec_p256 (scope: global, name: EC_P256) {
|
||||
public_key, static_func(m_ec_p256_pubkey)
|
||||
shared_key, static_func(m_ec_p256_sharedkey)
|
||||
@ -211,4 +224,4 @@ module crypto (scope: global) {
|
||||
random, func(m_crypto_random)
|
||||
}
|
||||
|
||||
@const_object_info_end */
|
||||
@const_object_info_end */
|
@ -4,6 +4,6 @@
|
||||
*******************************************************************/
|
||||
#ifdef USE_WS2812
|
||||
|
||||
#include "solidify/solidified_leds_animator.h"
|
||||
#include "solidify/solidified_leds_0_animator.h"
|
||||
|
||||
#endif // USE_WS2812
|
39
lib/libesp32/berry_tasmota/src/be_leds_frame_lib.c
Normal file
39
lib/libesp32/berry_tasmota/src/be_leds_frame_lib.c
Normal file
@ -0,0 +1,39 @@
|
||||
/********************************************************************
|
||||
* Berry class `neopixelbus_ntv`
|
||||
*
|
||||
*******************************************************************/
|
||||
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_WS2812
|
||||
|
||||
extern int be_leds_blend(bvm *vm);
|
||||
extern int be_leds_blend_pixels(bvm *vm);
|
||||
extern int be_leds_fill_pixels(bvm *vm);
|
||||
extern int be_leds_paste_pixels(bvm *vm);
|
||||
|
||||
BE_EXPORT_VARIABLE extern const bclass be_class_bytes;
|
||||
|
||||
#include "solidify/solidified_leds_frame_be_methods.h"
|
||||
|
||||
/* @const_object_info_begin
|
||||
class be_class_Leds_frame (scope: global, name: Leds_frame, super:be_class_bytes, strings: weak) {
|
||||
pixel_size, var
|
||||
|
||||
init, closure(Leds_frame_be_init_closure)
|
||||
|
||||
item, closure(Leds_frame_be_item_closure)
|
||||
setitem, closure(Leds_frame_be_setitem_closure)
|
||||
set_pixel, closure(Leds_frame_be_set_pixel_closure)
|
||||
|
||||
// the following are on buffers
|
||||
blend, static_func(be_leds_blend)
|
||||
fill_pixels, func(be_leds_fill_pixels)
|
||||
blend_pixels, func(be_leds_blend_pixels)
|
||||
paste_pixels, func(be_leds_paste_pixels)
|
||||
}
|
||||
@const_object_info_end */
|
||||
|
||||
#include "be_fixed_be_class_Leds_frame.h"
|
||||
|
||||
#endif // USE_WS2812
|
@ -1,50 +1,31 @@
|
||||
/********************************************************************
|
||||
* Berry class `neopixelbus_ntv`
|
||||
* Berry class `Leds_ntv`
|
||||
*
|
||||
*******************************************************************/
|
||||
/*
|
||||
|
||||
class Leds_ntv
|
||||
var _p # pointer to internal object of type `NeoPixelBus<FEATURE, METHOD>(uint16_t countPixels, uint8_t pin)`
|
||||
var _t # type of led strip
|
||||
static WS2812_GRB = 1
|
||||
static SK6812_GRBW = 2
|
||||
|
||||
# skeleton for native call
|
||||
def call_native() end
|
||||
end
|
||||
|
||||
*/
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_WS2812
|
||||
|
||||
extern int be_neopixelbus_call_native(bvm *vm);
|
||||
extern int be_leds_blend_color(bvm *vm);
|
||||
extern int be_leds_apply_bri_gamma(bvm *vm);
|
||||
|
||||
/* @const_object_info_begin
|
||||
class be_class_Leds_ntv (scope: global, name: Leds_ntv, strings: weak) {
|
||||
_p, var
|
||||
_t, var
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Leds_ntv
|
||||
********************************************************************/
|
||||
be_local_class(Leds_ntv,
|
||||
2,
|
||||
NULL,
|
||||
be_nested_map(5,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key(call_native, -1), be_const_func(be_neopixelbus_call_native) },
|
||||
{ be_const_key(_t, -1), be_const_var(1) },
|
||||
{ be_const_key(_p, 3), be_const_var(0) },
|
||||
{ be_const_key(SK6812_GRBW, 4), be_const_int(2) },
|
||||
{ be_const_key(WS2812_GRB, -1), be_const_int(1) },
|
||||
})),
|
||||
be_str_weak(Leds_ntv)
|
||||
);
|
||||
/*******************************************************************/
|
||||
WS2812_GRB, int(1)
|
||||
SK6812_GRBW, int(2)
|
||||
|
||||
void be_load_Leds_ntv_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Leds_ntv);
|
||||
be_setglobal(vm, "Leds_ntv");
|
||||
be_pop(vm, 1);
|
||||
call_native, func(be_neopixelbus_call_native)
|
||||
|
||||
blend_color, static_func(be_leds_blend_color)
|
||||
apply_bri_gamma, static_func(be_leds_apply_bri_gamma)
|
||||
}
|
||||
@const_object_info_end */
|
||||
|
||||
#include "be_fixed_be_class_Leds_ntv.h"
|
||||
|
||||
// be_const_func(be_neopixelbus_call_native)
|
||||
#endif // USE_WS2812
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user