mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 03:06:33 +00:00
Merge branch 'arendst:development' into development
This commit is contained in:
commit
e799c3e4d5
1385
.github/workflows/Tasmota_build_development.yml.off
vendored
1385
.github/workflows/Tasmota_build_development.yml.off
vendored
File diff suppressed because it is too large
Load Diff
17
.github/workflows/Tasmota_build_master.yml
vendored
17
.github/workflows/Tasmota_build_master.yml
vendored
@ -1365,28 +1365,35 @@ jobs:
|
||||
[ ! -f ./mv_firmware/firmware/tasmota32c3*.* ] || mv ./mv_firmware/firmware/tasmota32c3*.* ./release-firmware/tasmota32/
|
||||
[ ! -f ./mv_firmware/firmware/tasmota32* ] || mv ./mv_firmware/firmware/tasmota32* ./release-firmware/tasmota32/languages/
|
||||
[ ! -f ./mv_firmware/firmware/* ] || mv ./mv_firmware/firmware/* ./release-firmware/tasmota/languages/
|
||||
- name: Display files
|
||||
- name: Display files to transfer
|
||||
run: ls -R ./*
|
||||
- name: Push Firmware files to https://github.com/arendst/Tasmota-firmware
|
||||
- name: Push Firmware files to tmp_copy repo
|
||||
uses: Jason2866/copy_file_to_another_repo_action@main
|
||||
env:
|
||||
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
|
||||
with:
|
||||
source_file: 'release-firmware'
|
||||
destination_repo: 'arendst/Tasmota-firmware'
|
||||
destination_repo: 'arendst/tmp_copy'
|
||||
destination_branch: 'firmware'
|
||||
user_email: 'github-actions@github.com'
|
||||
user_name: 'github-actions'
|
||||
|
||||
Start_final_copy:
|
||||
needs: Upload
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Creat trigger.txt
|
||||
run: |
|
||||
echo ${GITHUB_SHA} &> trigger.txt
|
||||
echo "$(<trigger.txt)"
|
||||
- name: Push trigger.txt to start workflow in repo https://github.com/arendst/Tasmota-firmware
|
||||
- name: Push trigger.txt to start workflow copy in tmp repo
|
||||
uses: Jason2866/copy_file_to_another_repo_action@main
|
||||
env:
|
||||
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
|
||||
with:
|
||||
source_file: 'trigger.txt'
|
||||
destination_repo: 'arendst/Tasmota-firmware'
|
||||
destination_repo: 'arendst/tmp_copy'
|
||||
destination_branch: 'action-master'
|
||||
user_email: 'github-actions@github.com'
|
||||
user_name: 'github-actions'
|
||||
|
1
.github/workflows/build_all_the_things.yml
vendored
1
.github/workflows/build_all_the_things.yml
vendored
@ -3,6 +3,7 @@ name: Tasmota CI
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches: development
|
||||
paths:
|
||||
- '**.c'
|
||||
- '**.cpp'
|
||||
|
465
BUILDS.md
465
BUILDS.md
@ -2,236 +2,237 @@
|
||||
|
||||
ESP8266 / ESP32
|
||||
|
||||
m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display
|
||||
l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display
|
||||
|
||||
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
|
||||
|-----------------------|---|---|-------|---|---|---|---|--------
|
||||
| MY_LANGUAGE en_GB | x | x | x / x | x | x | x | x |
|
||||
| USE_UFILESYS | - | - | - / x | - | - | - | - |
|
||||
| USE_ARDUINO_OTA | - | - | - / - | - | - | - | - |
|
||||
| USE_DOMOTICZ | - | - | x / x | x | x | x | - |
|
||||
| USE_HOME_ASSISTANT | - | - | x / x | x | x | x | - |
|
||||
| USE_MQTT_TLS | - | - | - / - | - | - | - | - |
|
||||
| USE_MQTT_TLS_CA_CERT | - | - | - / - | - | - | - | - |
|
||||
| USE_MQTT_AWS_IOT | - | - | - / - | - | - | - | - |
|
||||
| USE_4K_RSA | - | - | - / - | - | - | - | - |
|
||||
| USE_TELEGRAM | - | - | - / - | - | - | - | - |
|
||||
| USE_KNX | - | - | - / x | x | - | - | - |
|
||||
| USE_WEBSERVER | x | x | x / x | x | x | x | x |
|
||||
| USE_JAVASCRIPT_ES6 | - | - | - / - | - | - | - | - |
|
||||
| USE_WEBSEND_RESPONSE | - | - | - / - | - | - | - | - |
|
||||
| USE_EMULATION_HUE | - | x | x / x | - | x | - | - |
|
||||
| USE_EMULATION_WEMO | - | x | x / x | - | x | - | - |
|
||||
| USE_DISCOVERY | - | - | - / - | - | - | - | - |
|
||||
| WEBSERVER_ADVERTISE | - | - | x / - | x | - | - | x |
|
||||
| MQTT_HOST_DISCOVERY | - | - | - / - | - | - | - | - |
|
||||
| USE_TIMERS | - | x | x / x | x | x | x | x |
|
||||
| USE_TIMERS_WEB | - | x | x / x | x | x | x | x |
|
||||
| USE_SUNRISE | - | x | x / x | x | x | x | x |
|
||||
| USE_RULES | - | x | x / x | x | x | x | x |
|
||||
| USE_SCRIPT | - | - | - / - | - | - | - | - |
|
||||
| USE_EXPRESSION | - | - | - / - | - | - | - | - |
|
||||
| SUPPORT_IF_STATEMENT | - | - | - / - | - | - | - | - |
|
||||
| USE_HOTPLUG | - | - | - / - | - | - | - | - |
|
||||
| USE_PROMETHEUS | - | - | - / - | - | - | - | - |
|
||||
| USE_PING | - | - | - / - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
|
||||
| ROTARY_V1 | - | - | x / x | - | x | - | - |
|
||||
| USE_SONOFF_RF | - | - | x / - | x | x | - | - |
|
||||
| USE_RF_FLASH | - | - | x / - | x | x | - | - |
|
||||
| USE_SONOFF_SC | - | - | x / - | x | x | - | - |
|
||||
| USE_TUYA_MCU | - | x | x / - | x | x | - | x |
|
||||
| USE_ARMTRONIX_DIMMERS | - | - | x / - | x | - | - | - |
|
||||
| USE_PS_16_DZ | - | - | x / - | x | - | - | - |
|
||||
| USE_SONOFF_IFAN | - | - | x / - | x | - | - | - |
|
||||
| USE_BUZZER | - | - | x / x | x | x | - | - |
|
||||
| USE_ARILUX_RF | - | - | x / - | x | - | - | - |
|
||||
| USE_SHUTTER | - | - | x / x | x | - | - | - |
|
||||
| USE_DEEPSLEEP | - | - | x / x | - | x | - | - |
|
||||
| USE_EXS_DIMMER | - | - | x / - | x | - | - | - |
|
||||
| USE_DEVICE_GROUPS | - | - | x / x | - | - | - | - |
|
||||
| USE_PWM_DIMMER | - | - | x / - | x | - | - | - |
|
||||
| USE_KEELOQ | - | - | - / - | - | - | - | - |
|
||||
| USE_SONOFF_D1 | - | - | x / - | x | - | - | - |
|
||||
| USE_SHELLY_DIMMER | - | - | x / - | - | - | - | - |
|
||||
| USE_AC_ZERO_CROSS_DIMMER | - | - | x / x | x | x | x | x |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
|
||||
| USE_LIGHT | - | x | x / x | x | x | x | x |
|
||||
| USE_WS2812 | - | - | x / x | x | x | - | x |
|
||||
| USE_WS2812_DMA | - | - | - / - | - | - | - | - |
|
||||
| USE_MY92X1 | - | - | x / - | x | x | - | x |
|
||||
| USE_SM16716 | - | - | x / - | x | x | - | x |
|
||||
| USE_SM2135 | - | - | x / - | x | x | - | x |
|
||||
| USE_SONOFF_L1 | - | - | x / - | x | x | - | x |
|
||||
| USE_ELECTRIQ_MOODL | - | - | x / - | x | x | - | x |
|
||||
| | | | | | | | |
|
||||
| USE_ENERGY_SENSOR | - | x | x / x | x | x | - | - |
|
||||
| USE_ENERGY_DUMMY | - | x | x / x | x | x | - | - |
|
||||
| USE_PZEM004T | - | - | x / x | x | x | - | - |
|
||||
| USE_PZEM_AC | - | - | x / x | x | x | - | - |
|
||||
| USE_PZEM_DC | - | - | x / x | x | x | - | - |
|
||||
| USE_MCP39F501 | - | x | x / - | x | x | - | - |
|
||||
| USE_SDM72 | - | - | - / x | - | x | - | - |
|
||||
| USE_SDM120 | - | - | - / x | - | x | - | - |
|
||||
| USE_SDM630 | - | - | - / x | - | x | - | - |
|
||||
| USE_DDS2382 | - | - | - / x | - | x | - | - |
|
||||
| USE_DDSU666 | - | - | - / x | - | x | - | - |
|
||||
| USE_SOLAX_X1 | - | - | - / - | - | - | - | - |
|
||||
| USE_LE01MR | - | - | - / - | - | - | - | - |
|
||||
| USE_BL09XX | - | x | x / x | x | x | - | - |
|
||||
| USE_TELEINFO | - | - | - / - | - | - | - | - |
|
||||
| USE_IEM3000 | - | - | - / - | - | - | - | - |
|
||||
| USE_WE517 | - | - | - / - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| USE_ADC_VCC | x | x | - / - | - | - | x | - |
|
||||
| USE_COUNTER | - | - | x / x | x | x | - | x |
|
||||
| USE_DS18x20 | - | - | x / x | x | x | - | x |
|
||||
| USE_DHT | - | - | x / x | x | x | - | x |
|
||||
| USE_MAX31855 | - | - | - / x | - | x | - | - |
|
||||
| USE_MAX31865 | - | - | - / - | - | - | - | - |
|
||||
| USE_THERMOSTAT | - | - | - / - | - | - | - | - |
|
||||
| USE_LMT01 | - | - | - / x | - | x | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
|
||||
| USE_I2C | - | - | x / x | x | x | - | x |
|
||||
| USE_SHT | - | - | - / x | - | x | - | - |
|
||||
| USE_HTU | - | - | - / x | - | x | - | - |
|
||||
| USE_BMP | - | - | - / x | - | x | - | - |
|
||||
| USE_BME680 | - | - | - / x | - | x | - | - |
|
||||
| USE_BH1750 | - | - | - / x | - | x | - | - |
|
||||
| USE_VEML6070 | - | - | - / x | - | x | - | - |
|
||||
| USE_ADS1115 | - | - | - / x | - | x | - | - |
|
||||
| USE_INA219 | - | - | - / x | - | x | - | - |
|
||||
| USE_INA226 | - | - | - / - | - | - | - | - |
|
||||
| USE_SHT3X | - | - | - / x | - | x | - | - |
|
||||
| USE_TSL2561 | - | - | - / - | - | - | - | - |
|
||||
| USE_TSL2591 | - | - | - / - | - | - | - | - |
|
||||
| USE_MGS | - | - | - / x | - | x | - | - |
|
||||
| USE_SGP30 | - | - | - / x | - | x | - | - |
|
||||
| USE_SI1145 | - | - | - / - | - | - | - | - |
|
||||
| USE_LM75AD | - | - | - / x | - | x | - | - |
|
||||
| USE_APDS9960 | - | - | - / - | - | - | - | - |
|
||||
| USE_MCP230xx | - | - | - / - | - | - | - | - |
|
||||
| USE_PCA9685 | - | - | - / - | - | - | - | - |
|
||||
| USE_MPR121 | - | - | - / - | - | - | - | - |
|
||||
| USE_CCS811 | - | - | - / - | - | x | - | - |
|
||||
| USE_CCS811_V2 | - | - | - / x | - | - | - | - |
|
||||
| USE_MPU6050 | - | - | - / - | - | - | - | - |
|
||||
| USE_DS3231 | - | - | - / - | - | - | - | - |
|
||||
| USE_MGC3130 | - | - | - / - | - | - | - | - |
|
||||
| USE_MAX44009 | - | - | - / - | - | - | - | - |
|
||||
| USE_SCD30 | - | - | - / x | - | x | - | - |
|
||||
| USE_SCD40 | - | - | - / x | - | - | - | - |
|
||||
| USE_SPS30 | - | - | - / - | - | - | - | - |
|
||||
| USE_ADE7953 | - | - | x / x | x | x | - | x |
|
||||
| USE_VL53L0X | - | - | - / x | - | x | - | - |
|
||||
| USE_MLX90614 | - | - | - / - | - | - | - | - |
|
||||
| USE_CHIRP | - | - | - / - | - | - | - | - |
|
||||
| USE_PAJ7620 | - | - | - / - | - | - | - | - |
|
||||
| USE_PCF8574 | - | - | - / - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
|
||||
| USE_HIH6 | - | - | - / x | - | x | - | - |
|
||||
| USE_DHT12 | - | - | - / x | - | x | - | - |
|
||||
| USE_DS1624 | - | - | - / x | - | x | - | - |
|
||||
| USE_AHT1x | - | - | - / - | - | - | - | - |
|
||||
| USE_HDC1080 | - | - | - / - | - | - | - | - |
|
||||
| USE_WEMOS_MOTOR_V1 | - | - | - / x | - | x | - | - |
|
||||
| USE_IAQ | - | - | - / x | - | x | - | - |
|
||||
| USE_AS3935 | - | - | - / x | - | x | - | - |
|
||||
| USE_VEML6075 | - | - | - / - | - | - | - | - |
|
||||
| USE_VEML7700 | - | - | - / - | - | - | - | - |
|
||||
| USE_MCP9808 | - | - | - / - | - | - | - | - |
|
||||
| USE_HP303B | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOCO2 | - | - | - / - | - | - | - | - |
|
||||
| USE_EZODO | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOEC | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOFLO | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOHUM | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOO2 | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOORP | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOPH | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOPMP | - | - | - / - | - | - | - | - |
|
||||
| USE_EZOPRS | - | - | - / - | - | - | - | - |
|
||||
| USE_EZORGB | - | - | - / - | - | - | - | - |
|
||||
| USE_EZORTD | - | - | - / - | - | - | - | - |
|
||||
| USE_SEESAW_SOIL | - | - | - / - | - | - | - | - |
|
||||
| USE_TOF10120 | - | - | - / - | - | - | - | - |
|
||||
| USE_AM2320 | - | - | - / - | - | - | - | - |
|
||||
| USE_T67XX | - | - | - / - | - | - | - | - |
|
||||
| USE_HM330X | - | - | - / - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
|
||||
| USE_SPI | - | - | - / - | - | - | - | x |
|
||||
| USE_RC522 | - | - | - / - | - | - | - | - |
|
||||
| USE_MHZ19 | - | - | - / x | - | x | - | - |
|
||||
| USE_SENSEAIR | - | - | - / x | - | x | - | - |
|
||||
| USE_PMS5003 | - | - | - / x | - | x | - | - |
|
||||
| USE_NOVA_SDS | - | - | - / x | - | x | - | - |
|
||||
| USE_HPMA | - | - | - / x | - | x | - | - |
|
||||
| USE_SERIAL_BRIDGE | - | - | x / x | x | x | - | x |
|
||||
| USE_MP3_PLAYER | - | - | - / x | - | x | - | - |
|
||||
| USE_AZ7798 | - | - | - / - | - | - | - | - |
|
||||
| USE_PN532_HSU | - | - | - / x | - | x | - | - |
|
||||
| USE_RDM6300 | - | - | - / x | - | x | - | - |
|
||||
| USE_IBEACON | - | - | - / x | - | x | - | - |
|
||||
| USE_GPS | - | - | - / - | - | - | - | - |
|
||||
| USE_HM10 | - | - | - / - | - | x | - | - |
|
||||
| USE_HRXL | - | - | - / x | - | x | - | - |
|
||||
| USE_TASMOTA_CLIENT | - | - | - / - | - | - | - | - |
|
||||
| USE_OPENTHERM | - | - | - / - | - | - | - | - |
|
||||
| USE_MIEL_HVAC | - | - | - / - | - | - | - | - |
|
||||
| USE_PROJECTOR_CTRL | - | - | - / - | - | - | - | - |
|
||||
| USE_AS608 | - | - | - / - | - | - | - | - |
|
||||
| USE_TCP_BRIDGE | - | - | - / - | - | - | - | - | zbbridge
|
||||
| | | | | | | | |
|
||||
| USE_NRF24 | - | - | - / - | - | - | - | - |
|
||||
| USE_MIBLE | - | - | - / - | - | - | - | - |
|
||||
| USE_ZIGBEE | - | - | - / - | - | - | - | - |
|
||||
| USE_ZIGBEE_ZNP | - | - | - / - | - | - | - | - |
|
||||
| USE_ZIGBEE_EZSP | - | - | - / - | - | - | - | - | Sonoff ZbBridge
|
||||
| | | | | | | | |
|
||||
| USE_IR_REMOTE | - | - | x / - | x | x | x | x |
|
||||
| USE_IR_RECEIVE | - | - | x / - | x | x | x | x |
|
||||
| USE_IR_REMOTE_FULL | - | - | - / - | - | - | x | - | Enable ALL protocols
|
||||
| | | | | | | | |
|
||||
| USE_SR04 | - | - | - / - | - | x | - | - |
|
||||
| USE_DYP | - | - | - / - | - | - | - | - |
|
||||
| USE_TM1638 | - | - | - / x | - | x | - | - |
|
||||
| USE_HX711 | - | - | - / x | - | x | - | - |
|
||||
| USE_TX2x_WIND_SENSOR | - | - | - / - | - | - | - | - |
|
||||
| USE_WINDMETER | - | - | - / - | - | - | - | - |
|
||||
| USE_RC_SWITCH | - | - | - / x | - | x | - | - |
|
||||
| USE_RF_SENSOR | - | - | - / x | - | x | - | - | AlectoV2 only
|
||||
| USE_HRE | - | - | - / x | - | x | - | - |
|
||||
| USE_A4988_STEPPER | - | - | - / - | - | - | - | - |
|
||||
| USE_NEOPOOL | - | - | - / - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
|
||||
| USE_DISPLAY | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_LCD | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_SSD1306 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_MATRIX | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_SH1106 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_ILI9341 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_29 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_42 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_SSD1351 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_RA8876 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_ST7789 | - | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_TM1637 | - | - | - / - | - | - | - | x |
|
||||
| | | | | | | | |
|
||||
| USE_FT5206 | - | - | - / - | - | - | - | - |
|
||||
| USE_FTC532 | - | - | - / - | - | - | - | - |
|
||||
| USE_BS814A2 | - | - | - / - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| ESP32 Feature | m | l | t | k | s | i | d | Remarks
|
||||
| USE_HALLEFFECT | | | / x | | | | |
|
||||
| USE_MI_ESP32 | | | / x | | | | | See SetOption115
|
||||
| USE_IBEACON_ESP32 | | | / - | | | | |
|
||||
| USE_WEBCAM | | | / - | | | | |
|
||||
| USE_ETHERNET | | | / - | | | | |
|
||||
| USE_I2S_AUDIO | | | / - | | | | |
|
||||
| USE_TTGO_WATCH | | | / - | | | | |
|
||||
Note: `minimal` variant is not listed as it shouldn't be used outside of the [upgrading](https://tasmota.github.io/docs/Upgrading/) process.
|
||||
|
||||
| Feature or Sensor | l | t | k | s | i | d | Remarks
|
||||
|-----------------------|---|-------|---|---|---|---|--------
|
||||
| MY_LANGUAGE en_GB | x | x / x | x | x | x | x |
|
||||
| USE_UFILESYS | - | - / x | - | - | - | - |
|
||||
| USE_ARDUINO_OTA | - | - / - | - | - | - | - |
|
||||
| USE_DOMOTICZ | - | x / x | x | x | x | - |
|
||||
| USE_HOME_ASSISTANT | - | x / x | x | x | x | - |
|
||||
| USE_MQTT_TLS | - | - / - | - | - | - | - |
|
||||
| USE_MQTT_AWS_IOT | - | - / - | - | - | - | - |
|
||||
| USE_4K_RSA | - | - / - | - | - | - | - |
|
||||
| USE_TELEGRAM | - | - / - | - | - | - | - |
|
||||
| USE_KNX | - | - / x | x | - | - | - |
|
||||
| USE_WEBSERVER | x | x / x | x | x | x | x |
|
||||
| USE_JAVASCRIPT_ES6 | - | - / - | - | - | - | - |
|
||||
| USE_WEBSEND_RESPONSE | - | - / - | - | - | - | - |
|
||||
| USE_EMULATION_HUE | x | x / x | - | x | - | - |
|
||||
| USE_EMULATION_WEMO | x | x / x | - | x | - | - |
|
||||
| USE_DISCOVERY | - | - / - | - | - | - | - |
|
||||
| WEBSERVER_ADVERTISE | - | x / - | x | - | - | x |
|
||||
| MQTT_HOST_DISCOVERY | - | - / - | - | - | - | - |
|
||||
| USE_TIMERS | x | x / x | x | x | x | x |
|
||||
| USE_TIMERS_WEB | x | x / x | x | x | x | x |
|
||||
| USE_SUNRISE | x | x / x | x | x | x | x |
|
||||
| USE_RULES | x | x / x | x | x | x | x |
|
||||
| USE_SCRIPT | - | - / - | - | - | - | - |
|
||||
| USE_EXPRESSION | - | - / - | - | - | - | - |
|
||||
| SUPPORT_IF_STATEMENT | - | - / - | - | - | - | - |
|
||||
| USE_HOTPLUG | - | - / - | - | - | - | - |
|
||||
| USE_PROMETHEUS | - | - / - | - | - | - | - |
|
||||
| USE_PING | - | - / - | - | - | - | - |
|
||||
| | | | | | | |
|
||||
| Feature or Sensor | l | t | k | s | i | d | Remarks
|
||||
| ROTARY_V1 | - | x / x | - | x | - | - |
|
||||
| USE_SONOFF_RF | - | x / - | x | x | - | - |
|
||||
| USE_RF_FLASH | - | x / - | x | x | - | - |
|
||||
| USE_SONOFF_SC | - | x / - | x | x | - | - |
|
||||
| USE_TUYA_MCU | x | x / - | x | x | - | x |
|
||||
| USE_ARMTRONIX_DIMMERS | - | x / - | x | - | - | - |
|
||||
| USE_PS_16_DZ | - | x / - | x | - | - | - |
|
||||
| USE_SONOFF_IFAN | - | x / - | x | - | - | - |
|
||||
| USE_BUZZER | - | x / x | x | x | - | - |
|
||||
| USE_ARILUX_RF | - | x / - | x | - | - | - |
|
||||
| USE_SHUTTER | - | x / x | x | - | - | - |
|
||||
| USE_DEEPSLEEP | - | x / x | - | x | - | - |
|
||||
| USE_EXS_DIMMER | - | x / - | x | - | - | - |
|
||||
| USE_DEVICE_GROUPS | - | x / x | - | - | - | - |
|
||||
| USE_PWM_DIMMER | - | x / - | x | - | - | - |
|
||||
| USE_KEELOQ | - | - / - | - | - | - | - |
|
||||
| USE_SONOFF_D1 | - | x / - | x | - | - | - |
|
||||
| USE_SHELLY_DIMMER | - | x / - | - | - | - | - |
|
||||
| USE_AC_ZERO_CROSS_DIMMER | - | x / x | x | x | x | x |
|
||||
| | | | | | | |
|
||||
| Feature or Sensor | l | t | k | s | i | d | Remarks
|
||||
| USE_LIGHT | x | x / x | x | x | x | x |
|
||||
| USE_WS2812 | - | x / x | x | x | - | x |
|
||||
| USE_WS2812_DMA | - | - / - | - | - | - | - |
|
||||
| USE_MY92X1 | - | x / - | x | x | - | x |
|
||||
| USE_SM16716 | - | x / - | x | x | - | x |
|
||||
| USE_SM2135 | - | x / - | x | x | - | x |
|
||||
| USE_SONOFF_L1 | - | x / - | x | x | - | x |
|
||||
| USE_ELECTRIQ_MOODL | - | x / - | x | x | - | x |
|
||||
| | | | | | | |
|
||||
| USE_ENERGY_SENSOR | x | x / x | x | x | - | - |
|
||||
| USE_ENERGY_DUMMY | x | x / x | x | x | - | - |
|
||||
| USE_PZEM004T | - | x / x | x | x | - | - |
|
||||
| USE_PZEM_AC | - | x / x | x | x | - | - |
|
||||
| USE_PZEM_DC | - | x / x | x | x | - | - |
|
||||
| USE_MCP39F501 | x | x / - | x | x | - | - |
|
||||
| USE_SDM72 | - | - / x | - | x | - | - |
|
||||
| USE_SDM120 | - | - / x | - | x | - | - |
|
||||
| USE_SDM630 | - | - / x | - | x | - | - |
|
||||
| USE_DDS2382 | - | - / x | - | x | - | - |
|
||||
| USE_DDSU666 | - | - / x | - | x | - | - |
|
||||
| USE_SOLAX_X1 | - | - / - | - | - | - | - |
|
||||
| USE_LE01MR | - | - / - | - | - | - | - |
|
||||
| USE_BL09XX | x | x / x | x | x | - | - |
|
||||
| USE_TELEINFO | - | - / - | - | - | - | - |
|
||||
| USE_IEM3000 | - | - / - | - | - | - | - |
|
||||
| USE_WE517 | - | - / - | - | - | - | - |
|
||||
| | | | | | | |
|
||||
| USE_ADC_VCC | x | - / - | - | - | x | - |
|
||||
| USE_COUNTER | - | x / x | x | x | - | x |
|
||||
| USE_DS18x20 | - | x / x | x | x | - | x |
|
||||
| USE_DHT | - | x / x | x | x | - | x |
|
||||
| USE_MAX31855 | - | - / x | - | x | - | - |
|
||||
| USE_MAX31865 | - | - / - | - | - | - | - |
|
||||
| USE_THERMOSTAT | - | - / - | - | - | - | - |
|
||||
| USE_LMT01 | - | - / x | - | x | - | - |
|
||||
| | | | | | | |
|
||||
| Feature or Sensor | l | t | k | s | i | d | Remarks
|
||||
| USE_I2C | - | x / x | x | x | - | x |
|
||||
| USE_SHT | - | - / x | - | x | - | - |
|
||||
| USE_HTU | - | - / x | - | x | - | - |
|
||||
| USE_BMP | - | - / x | - | x | - | - |
|
||||
| USE_BME680 | - | - / x | - | x | - | - |
|
||||
| USE_BH1750 | - | - / x | - | x | - | - |
|
||||
| USE_VEML6070 | - | - / x | - | x | - | - |
|
||||
| USE_ADS1115 | - | - / x | - | x | - | - |
|
||||
| USE_INA219 | - | - / x | - | x | - | - |
|
||||
| USE_INA226 | - | - / - | - | - | - | - |
|
||||
| USE_SHT3X | - | - / x | - | x | - | - |
|
||||
| USE_TSL2561 | - | - / - | - | - | - | - |
|
||||
| USE_TSL2591 | - | - / - | - | - | - | - |
|
||||
| USE_MGS | - | - / x | - | x | - | - |
|
||||
| USE_SGP30 | - | - / x | - | x | - | - |
|
||||
| USE_SI1145 | - | - / - | - | - | - | - |
|
||||
| USE_LM75AD | - | - / x | - | x | - | - |
|
||||
| USE_APDS9960 | - | - / - | - | - | - | - |
|
||||
| USE_MCP230xx | - | - / - | - | - | - | - |
|
||||
| USE_PCA9685 | - | - / - | - | - | - | - |
|
||||
| USE_MPR121 | - | - / - | - | - | - | - |
|
||||
| USE_CCS811 | - | - / - | - | x | - | - |
|
||||
| USE_CCS811_V2 | - | - / x | - | - | - | - |
|
||||
| USE_MPU6050 | - | - / - | - | - | - | - |
|
||||
| USE_DS3231 | - | - / - | - | - | - | - |
|
||||
| USE_MGC3130 | - | - / - | - | - | - | - |
|
||||
| USE_MAX44009 | - | - / - | - | - | - | - |
|
||||
| USE_SCD30 | - | - / x | - | x | - | - |
|
||||
| USE_SCD40 | - | - / x | - | - | - | - |
|
||||
| USE_SPS30 | - | - / - | - | - | - | - |
|
||||
| USE_ADE7953 | - | x / x | x | x | - | x |
|
||||
| USE_VL53L0X | - | - / x | - | x | - | - |
|
||||
| USE_MLX90614 | - | - / - | - | - | - | - |
|
||||
| USE_CHIRP | - | - / - | - | - | - | - |
|
||||
| USE_PAJ7620 | - | - / - | - | - | - | - |
|
||||
| USE_PCF8574 | - | - / - | - | - | - | - |
|
||||
| | | | | | | |
|
||||
| Feature or Sensor | l | t | k | s | i | d | Remarks
|
||||
| USE_HIH6 | - | - / x | - | x | - | - |
|
||||
| USE_DHT12 | - | - / x | - | x | - | - |
|
||||
| USE_DS1624 | - | - / x | - | x | - | - |
|
||||
| USE_AHT1x | - | - / - | - | - | - | - |
|
||||
| USE_HDC1080 | - | - / - | - | - | - | - |
|
||||
| USE_WEMOS_MOTOR_V1 | - | - / x | - | x | - | - |
|
||||
| USE_IAQ | - | - / x | - | x | - | - |
|
||||
| USE_AS3935 | - | - / x | - | x | - | - |
|
||||
| USE_VEML6075 | - | - / - | - | - | - | - |
|
||||
| USE_VEML7700 | - | - / - | - | - | - | - |
|
||||
| USE_MCP9808 | - | - / - | - | - | - | - |
|
||||
| USE_HP303B | - | - / - | - | - | - | - |
|
||||
| USE_EZOCO2 | - | - / - | - | - | - | - |
|
||||
| USE_EZODO | - | - / - | - | - | - | - |
|
||||
| USE_EZOEC | - | - / - | - | - | - | - |
|
||||
| USE_EZOFLO | - | - / - | - | - | - | - |
|
||||
| USE_EZOHUM | - | - / - | - | - | - | - |
|
||||
| USE_EZOO2 | - | - / - | - | - | - | - |
|
||||
| USE_EZOORP | - | - / - | - | - | - | - |
|
||||
| USE_EZOPH | - | - / - | - | - | - | - |
|
||||
| USE_EZOPMP | - | - / - | - | - | - | - |
|
||||
| USE_EZOPRS | - | - / - | - | - | - | - |
|
||||
| USE_EZORGB | - | - / - | - | - | - | - |
|
||||
| USE_EZORTD | - | - / - | - | - | - | - |
|
||||
| USE_SEESAW_SOIL | - | - / - | - | - | - | - |
|
||||
| USE_TOF10120 | - | - / - | - | - | - | - |
|
||||
| USE_AM2320 | - | - / - | - | - | - | - |
|
||||
| USE_T67XX | - | - / - | - | - | - | - |
|
||||
| USE_HM330X | - | - / - | - | - | - | - |
|
||||
| | | | | | | |
|
||||
| Feature or Sensor | l | t | k | s | i | d | Remarks
|
||||
| USE_SPI | - | - / - | - | - | - | x |
|
||||
| USE_RC522 | - | - / - | - | - | - | - |
|
||||
| USE_MHZ19 | - | - / x | - | x | - | - |
|
||||
| USE_SENSEAIR | - | - / x | - | x | - | - |
|
||||
| USE_PMS5003 | - | - / x | - | x | - | - |
|
||||
| USE_NOVA_SDS | - | - / x | - | x | - | - |
|
||||
| USE_HPMA | - | - / x | - | x | - | - |
|
||||
| USE_SERIAL_BRIDGE | - | x / x | x | x | - | x |
|
||||
| USE_MP3_PLAYER | - | - / x | - | x | - | - |
|
||||
| USE_AZ7798 | - | - / - | - | - | - | - |
|
||||
| USE_PN532_HSU | - | - / x | - | x | - | - |
|
||||
| USE_RDM6300 | - | - / x | - | x | - | - |
|
||||
| USE_IBEACON | - | - / x | - | x | - | - |
|
||||
| USE_GPS | - | - / - | - | - | - | - |
|
||||
| USE_HM10 | - | - / - | - | x | - | - |
|
||||
| USE_HRXL | - | - / x | - | x | - | - |
|
||||
| USE_TASMOTA_CLIENT | - | - / - | - | - | - | - |
|
||||
| USE_OPENTHERM | - | - / - | - | - | - | - |
|
||||
| USE_MIEL_HVAC | - | - / - | - | - | - | - |
|
||||
| USE_PROJECTOR_CTRL | - | - / - | - | - | - | - |
|
||||
| USE_AS608 | - | - / - | - | - | - | - |
|
||||
| USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge
|
||||
| | | | | | | |
|
||||
| USE_NRF24 | - | - / - | - | - | - | - |
|
||||
| USE_MIBLE | - | - / - | - | - | - | - |
|
||||
| USE_ZIGBEE | - | - / - | - | - | - | - |
|
||||
| USE_ZIGBEE_ZNP | - | - / - | - | - | - | - |
|
||||
| USE_ZIGBEE_EZSP | - | - / - | - | - | - | - | Sonoff ZbBridge
|
||||
| | | | | | | |
|
||||
| USE_IR_REMOTE | - | x / - | x | x | x | x |
|
||||
| USE_IR_RECEIVE | - | x / - | x | x | x | x |
|
||||
| USE_IR_REMOTE_FULL | - | - / - | - | - | x | - | Enable ALL protocols
|
||||
| | | | | | | |
|
||||
| USE_SR04 | - | - / - | - | x | - | - |
|
||||
| USE_DYP | - | - / - | - | - | - | - |
|
||||
| USE_TM1638 | - | - / x | - | x | - | - |
|
||||
| USE_HX711 | - | - / x | - | x | - | - |
|
||||
| USE_TX2x_WIND_SENSOR | - | - / - | - | - | - | - |
|
||||
| USE_WINDMETER | - | - / - | - | - | - | - |
|
||||
| USE_RC_SWITCH | - | - / x | - | x | - | - |
|
||||
| USE_RF_SENSOR | - | - / x | - | x | - | - | AlectoV2 only
|
||||
| USE_HRE | - | - / x | - | x | - | - |
|
||||
| USE_A4988_STEPPER | - | - / - | - | - | - | - |
|
||||
| USE_NEOPOOL | - | - / - | - | - | - | - |
|
||||
| | | | | | | |
|
||||
| Feature or Sensor | l | t | k | s | i | d | Remarks
|
||||
| USE_DISPLAY | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_LCD | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_SSD1306 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_MATRIX | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_SH1106 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_ILI9341 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_29 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_42 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_SSD1351 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_RA8876 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_ST7789 | - | - / - | - | - | - | x |
|
||||
| USE_DISPLAY_TM1637 | - | - / - | - | - | - | x |
|
||||
| | | | | | | |
|
||||
| USE_FT5206 | - | - / - | - | - | - | - |
|
||||
| USE_FTC532 | - | - / - | - | - | - | - |
|
||||
| USE_BS814A2 | - | - / - | - | - | - | - |
|
||||
| | | | | | | |
|
||||
| ESP32 Feature | l | t | k | s | i | d | Remarks
|
||||
| USE_HALLEFFECT | | / x | | | | |
|
||||
| USE_MI_ESP32 | | / x | | | | | See SetOption115
|
||||
| USE_IBEACON_ESP32 | | / - | | | | |
|
||||
| USE_WEBCAM | | / - | | | | |
|
||||
| USE_ETHERNET | | / - | | | | |
|
||||
| USE_I2S_AUDIO | | / - | | | | |
|
||||
| USE_TTGO_WATCH | | / - | | | | |
|
||||
|
43
CHANGELOG.md
43
CHANGELOG.md
@ -3,19 +3,46 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
## [Unreleased] - Development
|
||||
|
||||
## [10.0.0.3]
|
||||
## [10.1.0.1]
|
||||
|
||||
## [Released]
|
||||
|
||||
## [10.1.0] 20211208
|
||||
- Release Noelle
|
||||
|
||||
### Added
|
||||
- Berry added ``tcpclient``
|
||||
|
||||
## [10.0.0.4] 20211208
|
||||
### Added
|
||||
- (Internal) Support for FUNC_BUTTON_MULTI_PRESSED in (light)drivers
|
||||
- Support for GPE Multi color smart light as sold by Action in the Netherlands
|
||||
- Support for 74xx595 8-bit shift registers (#13921)
|
||||
|
||||
### Changed
|
||||
- (Internal) Range conversion edge values
|
||||
- NimBLE to v.1.3.3
|
||||
- MQTT TLS dual mode (CA or fingeprint) in same firmware, ``SetOption132 1`` to force fingerprint
|
||||
- Toolchains for ESP32x changed from 8.4.0-2021r1 to 8.4.0-2021r2
|
||||
|
||||
### Fixed
|
||||
- Tuya dimmer range issue (#13849)
|
||||
- BLE Memory leak with update NimBLE v.1.3.1 to v.1.3.3
|
||||
- Compile error BLE EQ3 driver with core 2.0.x (#13948)
|
||||
|
||||
## [10.0.0.3] 20211130
|
||||
### Added
|
||||
- Shutter support for venetian blinds with tilt control
|
||||
- Autoconfiguration for ESP32 and variants
|
||||
- ESP32 Autoconfiguration
|
||||
- ESP32 fix leftover GPIO configuration after restart
|
||||
- ESP32 Proof of Concept Sonoff SPM with limited functionality (switching and energy monitoring) (#13447)
|
||||
- WS2812 scheme 13 stairs effect (#13595)
|
||||
- Preliminary support for Tasmota Apps (.tapp extesions)
|
||||
- Berry support for neopixel (WS2812, SK6812)
|
||||
- ESP32 Preliminary support for Tasmota Apps (.tapp extesions)
|
||||
- ESP32 Berry support for neopixel (WS2812, SK6812)
|
||||
- Command ``IfxPeriod `` to overrule ``Teleperiod`` for Influx messages (#13750)
|
||||
- OTA over HTTPS (ESP32x only)
|
||||
- Berry add ``import re`` regex module
|
||||
- Add HTTPS support to ``WebQuery`` (ESP32x only)
|
||||
- ESP32 OTA over HTTPS
|
||||
- ESP32 Berry ``import re`` regex module
|
||||
- ESP32 HTTPS support to ``WebQuery``
|
||||
|
||||
### Changed
|
||||
- ESP8266 Gratuitous ARP enabled and set to 60 seconds (#13623)
|
||||
@ -61,8 +88,6 @@ All notable changes to this project will be documented in this file.
|
||||
- Discovery of shutters (#13572)
|
||||
- ESP32-C3 OneWire as used by DS18x20 (#13583)
|
||||
|
||||
## [Released]
|
||||
|
||||
## [10.0.0] 20211019
|
||||
- Release Norman
|
||||
|
||||
|
@ -18,7 +18,7 @@ See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/tasmota/C
|
||||
|
||||
## Development
|
||||
|
||||
[](https://github.com/arendst/Tasmota)
|
||||
[](https://github.com/arendst/Tasmota)
|
||||
[](http://ota.tasmota.com/tasmota/)
|
||||
[](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22)
|
||||
[](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22)
|
||||
|
@ -23,7 +23,7 @@ Easy initial installation of Tasmota can be performed using the [Tasmota WebInst
|
||||
|
||||
## Development
|
||||
|
||||
[](https://github.com/arendst/Tasmota)
|
||||
[](https://github.com/arendst/Tasmota)
|
||||
[](http://ota.tasmota.com/tasmota/)
|
||||
[](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22)
|
||||
[](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22)
|
||||
|
@ -66,12 +66,12 @@ Latest released binaries can be downloaded from
|
||||
- http://ota.tasmota.com/tasmota/release
|
||||
|
||||
Historical binaries can be downloaded from
|
||||
- http://ota.tasmota.com/tasmota/release-10.0.0
|
||||
- http://ota.tasmota.com/tasmota/release-10.1.0
|
||||
|
||||
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
|
||||
|
||||
### ESP32 based
|
||||
The following binary downloads have been compiled with ESP32/Arduino library core version **1.0.7.4**.
|
||||
The following binary downloads have been compiled with ESP32/Arduino library core version **2.0.1.1**.
|
||||
|
||||
- **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY**
|
||||
- **tasmota32c3.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C3 and 4M+ flash.
|
||||
@ -90,7 +90,7 @@ Latest released binaries can be downloaded from
|
||||
- http://ota.tasmota.com/tasmota32/release
|
||||
|
||||
Historical binaries can be downloaded from
|
||||
- http://ota.tasmota.com/tasmota32/release-10.0.0
|
||||
- http://ota.tasmota.com/tasmota32/release-10.1.0
|
||||
|
||||
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota32/release/tasmota32.bin``
|
||||
|
||||
@ -100,36 +100,13 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
|
||||
|
||||
[Complete list](BUILDS.md) of available feature and sensors.
|
||||
|
||||
## Changelog v10.0.0.3
|
||||
## Changelog v10.1.0.1
|
||||
### Added
|
||||
- 1 second heartbeat GPIO
|
||||
- ESP32 Berry add module ``python_compat`` to be closer to Python syntax [#13428](https://github.com/arendst/Tasmota/issues/13428)
|
||||
- ESP32 Proof of Concept Sonoff SPM with limited functionality (switching and energy monitoring) [#13447](https://github.com/arendst/Tasmota/issues/13447)
|
||||
- Command ``TcpConfig`` for TCPBridge protocol configuration [#13565](https://github.com/arendst/Tasmota/issues/13565)
|
||||
- Support for HDC2010 temperature/humidity sensor by Luc Boudreau [#13633](https://github.com/arendst/Tasmota/issues/13633)
|
||||
- WS2812 scheme 13 stairs effect [#13595](https://github.com/arendst/Tasmota/issues/13595)
|
||||
- Command ``IfxPeriod `` to overrule ``Teleperiod`` for Influx messages [#13750](https://github.com/arendst/Tasmota/issues/13750)
|
||||
|
||||
### Breaking Changed
|
||||
- ESP32-S2 TSettings memory usage fixed to 4096 bytes regression from v9.5.0.8
|
||||
|
||||
### Changed
|
||||
- ESP32 core library from v1.0.7.4 to v2.0.1
|
||||
- ESP32-C3 core library from v2.0.0-post to v2.0.1
|
||||
- IRremoteESP8266 library from v2.7.20 to v2.8.0
|
||||
- File editor no-wrap [#13427](https://github.com/arendst/Tasmota/issues/13427)
|
||||
- ESP8266 Gratuitous ARP enabled and set to 60 seconds [#13623](https://github.com/arendst/Tasmota/issues/13623)
|
||||
- Ethernet hostname ending in ``_eth`` to ``-eth`` according to RFC952
|
||||
|
||||
### Fixed
|
||||
- Initial reset RTC memory based variables like EnergyToday and EnergyTotal
|
||||
- ESP32 Telegram compile error [#13435](https://github.com/arendst/Tasmota/issues/13435)
|
||||
- SML compile error [#13441](https://github.com/arendst/Tasmota/issues/13441)
|
||||
- GUI checkbox MQTT TLS not saved regression from v9.2.0.3 [#13442](https://github.com/arendst/Tasmota/issues/13442)
|
||||
- Discovery of shutters [#13572](https://github.com/arendst/Tasmota/issues/13572)
|
||||
- ESP32-C3 OneWire as used by DS18x20 [#13583](https://github.com/arendst/Tasmota/issues/13583)
|
||||
- ESP32 analog NTC temperature calculation [#13703](https://github.com/arendst/Tasmota/issues/13703)
|
||||
|
||||
### Removed
|
||||
- ILI9488 driver in favour of Universal Display driver [#13719](https://github.com/arendst/Tasmota/issues/13719)
|
||||
|
||||
|
201
TEMPLATES.md
201
TEMPLATES.md
@ -2,11 +2,12 @@
|
||||
|
||||
# Templates
|
||||
|
||||
Find below the available templates as of October 2021. 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 2021. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
|
||||
|
||||
## Addressable LED Controller
|
||||
## Addressable LED
|
||||
```
|
||||
Athom 2812b {"NAME":"LS2812B-TAS","GPIO":[32,0,1376,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
BlitzWolf IC Smart RGB Magic {"NAME":"BW-LT31","GPIO":[0,0,32,1376,0,0,0,0,0,1088,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO37 24"}
|
||||
cod.m WLAN Pixel Controller v0.6 {"NAME":"cod.m Pixel Controller","GPIO":[32,0,1376,0,0,0,0,0,544,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
ESP01 NeoPixel Ring {"NAME":"ESP-01S-RGB-LED-v1.0","GPIO":[1,1,1376,1,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
SP501E WS2812B {"NAME":"SP501E","GPIO":[0,32,0,1376,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -19,6 +20,7 @@ BlitzWolf 400ml {"NAME":"BW-FUN3","GPIO":[0,2272,0,2304,0,0,0,0,0,0
|
||||
Brilex 400ml {"NAME":"BrilexDiffuser","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
Essential Oil 400ml {"NAME":"XD800W","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
GD-30W 300ml {"NAME":"GD-30W","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Gernems 400 ml {"NAME":"YX-088","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,1|TuyaMCU 61,2|TuyaMCU 62,3|TuyaMCU|12,5|TuyaMCU 63,6|TuyaMCU 21,7|TuyaMCU 24,8|TuyaRGB 3|DimmerRange 1,255|TuyaEnumList 1,2|TuyaEnumList 2,2|TuyaEnumList 3,1"}
|
||||
Kbaybo 300ml {"NAME":"K-H25","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Kogan 500ml {"NAME":"Kogan Difuser","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
Maxcio 400ml {"NAME":"MaxcioDiffuser","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
@ -40,7 +42,7 @@ Anoopsyche 9W 800lm {"NAME":"Anoop-CW-WW","GPIO":[0,0,0,0,0,416,0,0,0,4
|
||||
Arlec Smart 1350lm PAR38 {"NAME":"Arlec GLD302HA","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Smart 9.5W 806lm {"NAME":"Arlec GLD110HA","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":48}
|
||||
Arlec Smart 9.5W 806lm {"NAME":"Arlec CCT","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":48}
|
||||
Arlec Smart R80 9.5W 806lm {"NAME":"Arlec GLD115HA","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,0],"FLAG":0,"BASE":48}
|
||||
Arlec Smart R80 9.5W 806lm {"NAME":"Arlec R80","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,0],"FLAG":0,"BASE":48}
|
||||
BlitzWolf A70 9W 900lm {"NAME":"BW-LT29","GPIO":[0,0,0,0,0,0,0,0,0,449,0,416,0,0],"FLAG":0,"BASE":18}
|
||||
BrilliantSmart 20696 9W 900lm {"NAME":"Brilliant20696","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
BrilliantSmart 20697 9W 900lm {"NAME":"Brilliant20696","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -128,12 +130,6 @@ Wipro Garnet NS9100 810lm {"NAME":"WiproSmartBulb","GPIO":[0,0,0,0,417,0,0,0,
|
||||
Wyze A19 800lm {"NAME":"Wyze Bulb","GPIO":[5728,0,0,0,0,0,0,0,0,416,417,0,0,0],"FLAG":0,"BASE":48}
|
||||
```
|
||||
|
||||
## Camera
|
||||
```
|
||||
Ai-Thinker DIY Kit {"NAME":"AITHINKER CAM","GPIO":[4992,1,672,1,416,5088,1,1,1,6720,736,704,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,576,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":2}
|
||||
Wireles Tag DIY Kit {"NAME":"WT-ESP32-CAM","GPIO":[4992,1,1,1,1,5088,0,0,1,1,1,1,1,0,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,0,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":2}
|
||||
```
|
||||
|
||||
## Ceiling Light
|
||||
```
|
||||
BAZZ 14" RGBCCT {"NAME":"WF19129W","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -152,8 +148,11 @@ LOLAsmart Uranus White 70 cm {"NAME":"lola smart","GPIO":[0,0,0,1088,416,419,0,
|
||||
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}
|
||||
Luminea 24W CCT {"NAME":"Luminea NX6205-944","GPIO":[0,0,0,0,0,0,0,0,449,0,416,0,0,0],"FLAG":0,"BASE":48}
|
||||
LVL 300mm Round {"NAME":"LVL 300m Round 24W Ceiling LED","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,0],"FLAG":0,"BASE":48}
|
||||
Nedis CCT 800lm {"NAME":"NEDIS WIFILAW10WT","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nedis RGBCCT 1200lm {"NAME":"Nedis RGB","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
Oeegoo 15W RGBCCT {"NAME":"Oeegoo RGBCCT","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Offdarks Star Fine RGBCCT 60W 40mm {"NAME":"Offdarks","GPIO":[0,0,0,0,417,416,0,0,419,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Polux UFO RGBCCT 48W {"NAME":"Polux 313924","GPIO":[0,0,0,0,416,417,0,0,418,419,420,0,0,0],"FLAG":0,"BASE":18}
|
||||
SMRTLite LED Panel {"NAME":"SMRTLite","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
Spectrum Smart Nymphea 36W CCT {"NAME":"Nymphea_36w","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Taloya 12" 24W CCT Main and RGB Ambient {"NAME":"Taloya GA300-24W-AI-WEMG","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -184,6 +183,11 @@ MS-108 In-Wall {"NAME":"MS-108","GPIO":[0,0,0,0,161,160,0,0,224,0,
|
||||
QS-WIFI-C01-RF {"NAME":"Shutter-QS-WIFI-C01","GPIO":[0,0,1,0,288,0,0,0,32,33,224,225,0,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## Curtain Motor
|
||||
```
|
||||
Steren {"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"}
|
||||
```
|
||||
|
||||
## Curtain Switch
|
||||
```
|
||||
Anccy {"NAME":"Anccy Shutter","GPIO":[544,0,289,34,226,33,0,0,32,224,290,225,288,0],"FLAG":0,"BASE":18}
|
||||
@ -198,12 +202,15 @@ Konesky {"NAME":"KingArt","GPIO":[544,0,289,162,226,32,0,0,
|
||||
LoraTap SC400W-EU {"NAME":"Loratap SC400W","GPIO":[544,0,0,34,0,32,0,0,33,225,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
LoraTap SC411WSC-EU RF Remote {"NAME":"Loratap","GPIO":[0,0,0,34,226,32,0,0,33,225,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Maxcio WF-CS01 {"NAME":"Maxcio","GPIO":[544,0,289,162,226,33,0,0,32,224,290,225,288,0],"FLAG":0,"BASE":18}
|
||||
Moes RF {"NAME":"Moes WS-EUR-CW","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
SCS86-03AJAI {"NAME":"ESE86-03AJAI","GPIO":[544,227,289,34,226,33,0,0,32,224,290,225,288,0],"FLAG":0,"BASE":18}
|
||||
Teekar SYS-CS 01 {"NAME":"Teekar-Tag","GPIO":[320,0,544,33,225,162,0,0,0,224,321,258,32,0],"FLAG":0,"BASE":18}
|
||||
Teepao {"NAME":"Teepao","GPIO":[576,322,226,33,225,34,0,0,320,224,321,0,32,0],"FLAG":0,"BASE":18}
|
||||
WF-CS01 {"NAME":"ShutterSwitch","GPIO":[544,227,289,34,226,33,0,0,32,224,290,225,288,0],"FLAG":0,"BASE":18,"CMND":"Rule1 1"}
|
||||
WF-CS02 {"NAME":"WF-CS02 Tuya","GPIO":[544,0,289,162,226,33,0,0,32,224,290,225,288,0],"FLAG":0,"BASE":18}
|
||||
WuyunElek {"NAME":"MILOS Jalousie","GPIO":[1,0,224,225,1,320,0,0,32,33,34,226,0,0],"FLAG":0,"BASE":18}
|
||||
Zemismart {"NAME":"Zemismart","GPIO":[544,0,0,162,290,161,0,0,160,224,226,225,0,0],"FLAG":0,"BASE":18}
|
||||
Zemismart Backlit {"NAME":"WF-CS01","GPIO":[544,227,289,34,226,161,0,0,160,224,290,225,288,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## DIN Relay
|
||||
@ -214,7 +221,9 @@ OpenEnergyMonitor WiFi MQTT Thermostat {"NAME":"MQTT-RELAY","GPIO":[32,0,1,0,0,
|
||||
Sinotimer {"NAME":"TM608","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Sinotimer {"NAME":"Sinotimer TM60","GPIO":[0,0,0,0,0,288,0,0,224,160,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Sohan DIN Circuit Breaker 1P 50A {"NAME":"RDCBC-1P","GPIO":[32,0,0,0,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sonoff Smart Stackable Power Meter {"NAME":"Sonoff SPM (POC2)","GPIO":[1,0,1,0,3200,5536,0,0,1,1,1,0,3232,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,544,1,1,32,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
TOMZN 2P 63/80A Circuit Breaker {"NAME":"TOMZN","GPIO":[0,0,0,0,0,0,0,0,64,224,0,0,288,0],"FLAG":0,"BASE":18}
|
||||
TOMZN 4P 80A Circuit Breaker {"NAME":"TOMZN4","GPIO":[32,0,0,0,0,0,0,0,224,288,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## Dehumidifier
|
||||
@ -225,21 +234,29 @@ Vacplus 50 Pint {"NAME":"VacPlus Dehumidifier","GPIO":[0,0,0,0,0,0,
|
||||
|
||||
## Development Board
|
||||
```
|
||||
Adafruit ESP32 Feather {"NAME":"HUZZAH32","GPIO":[0,0,0,0,4709,0,1,1,1,288,1,1,1,1,0,1,0,0,608,640,0,4705,4704,1,0,0,0,0,1,1,4706,4710,4708,0,0,4707],"FLAG":0,"BASE":1}
|
||||
Adafruit HUZZAH {"NAME":"Huzzah","GPIO":[32,0,320,0,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":18}
|
||||
Ai-Thinker Camera {"NAME":"AITHINKER CAM","GPIO":[4992,1,672,1,416,5088,1,1,1,6720,736,704,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,576,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":2}
|
||||
Ai-Thinker ESP32-C3 "Not available"
|
||||
Ai-Thinker ESP32-S2F NodeMCU "Not available"
|
||||
AZ-Envy Environmental Sensor {"NAME":"AZ Envy","GPIO":[32,0,320,0,640,608,0,0,0,0,0,0,0,4704],"FLAG":0,"BASE":18}
|
||||
ESP32 Lite V1.0.0 {"NAME":"ESP32 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}
|
||||
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}
|
||||
LilyGO TTGO T-Internet-POE {"NAME":"LilyGO T-Internet-POE","GPIO":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,5600,1,0,1,1,5568,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
LilyGO T-OI Plus v1.2 ESP32-C3 "Not available"
|
||||
LilyGO T7 v1.5 {"NAME":"LilyGO T7 V1.5","GPIO":[1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,544,0,0,0,1,0,1,1,1,0,0,0,0,0,1,1,4704,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
LilyGO TTGO ESP32 Ethernet {"NAME":"T-Internet-POE v1.2","GPIO":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,5600,1,0,1,1,5568,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1,"CMND":"EthType 0|EthClockMode 1|EthAddress 0"}
|
||||
M5Stack Atom Lite ESP32 {"NAME":"M5Stack Atom Lite","GPIO":[1,1,1,1,1,1,1,1,1056,1,1,1,1,1,1,1,0,1,1,1,0,1,640,1376,0,0,0,0,608,1,1,1,1,0,0,32],"FLAG":0,"BASE":1}
|
||||
Mostly Robots Wemos D1 4 Channel MOSFET Shield {"NAME":"MOSFET","GPIO":[1,1,288,1,1,1,1,1,226,225,227,224,1,1],"FLAG":0,"BASE":18}
|
||||
Olimex ESP32-POE Ethernet {"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,5536,1,1,1,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
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}
|
||||
WifInfo - Teleinfo Server {"NAME":"WifInfo","GPIO":[1376,1,1,5152,640,608,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
Wireles Tag Camera {"NAME":"WT-ESP32-CAM","GPIO":[4992,1,1,1,1,5088,0,0,1,1,1,1,1,0,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,0,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":2}
|
||||
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}
|
||||
Witty Cloud {"NAME":"Witty Cloud","GPIO":[1,1,320,1,32,1,0,0,417,418,1,416,1,4704],"FLAG":0,"BASE":32}
|
||||
Yison ESP-01/ESP-202 {"NAME":"Yison Dev Board","GPIO":[259,544,258,1,260,261,1,1,416,418,257,417,256,1],"FLAG":0,"BASE":18}
|
||||
ZiGate-Ethernet {"NAME":"ZIGATE-ETH","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,0,1,1,0,1,1,0,0,1],"FLAG":0,"BASE":18,"CMND":"EthClockMode 3 | EthAddress 1"}
|
||||
ZiGate-Ethernet {"NAME":"ZIGATE-ETH","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,0,1,1,0,1,1,0,0],"FLAG":0,"BASE":18,"CMND":"EthClockMode 3 | EthAddress 1"}
|
||||
```
|
||||
|
||||
## Dimmable
|
||||
@ -326,6 +343,7 @@ Xiaomi Philips MUE4088RT {"NAME":"Xiaomi Philips","GPIO":[0,0,0,0,0,0,0,0,0,
|
||||
```
|
||||
3A Smart Home HGZB-04D {"NAME":"HGZB-4D","GPIO":[1,1,1,1,1,1,0,0,1,1,290,1,1,0],"FLAG":0,"BASE":54}
|
||||
Acenx SD03 {"NAME":"SD03","GPIO":[34,33,0,323,576,322,0,0,321,416,320,96,256,0],"FLAG":0,"BASE":73}
|
||||
Athom EU {"NAME":"Athom Dimmer Switch","GPIO":[576,2272,0,2304,0,0,0,0,0,0,0,0,0,1],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 21,2|Ledtable 0|DimmerRange 10,1000"}
|
||||
CE Smart Home {"NAME":"CE-WF500D","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
CE Smart Home CFW500D-3W 3 Way {"NAME":"CE-WF500D-3W","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
CNSKOU Touch {"NAME":"CNSKOU Dimmer Switch","GPIO":[0,0,0,0,0,0,0,0,0,0,290,0,0,0],"FLAG":0,"BASE":54}
|
||||
@ -338,14 +356,16 @@ Martin Jerry SD01 {"NAME":"MJ-SD01 Dimmer","GPIO":[34,33,0,323,576,32
|
||||
Martin Jerry Single Pole {"NAME":"MJ-KN01 Dimmer","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Maxcio Rotary {"NAME":"EDM-1WAA-EU","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
Minoston 3-Way {"NAME":"MS10W","GPIO":[1,2272,1,2304,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
Moes DS01-1 {"NAME":"MOES DS01","GPIO":[1,1,1,1,1,1,0,0,1,2304,1,2272,1,0],"FLAG":0,"BASE":54}
|
||||
Moes {"NAME":"MOES DS01","GPIO":[1,1,1,1,1,1,0,0,1,2304,1,2272,1,0],"FLAG":0,"BASE":54}
|
||||
PS-16-DZ {"NAME":"PS-16-DZ","GPIO":[1,3200,1,3232,1,1,0,0,1,288,1,1,1,0],"FLAG":0,"BASE":58}
|
||||
Teekar UIW001-1 {"NAME":"Teekar UIW001-","GPIO":[0,3232,416,3200,640,608,0,0,160,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Tessan MJ-SD02 {"NAME":"MJ-SD02","GPIO":[34,33,0,323,576,322,0,0,321,416,320,96,256,0],"FLAG":0,"BASE":73}
|
||||
TopGreener TGWF500D {"NAME":"TopGreener-Dimmer","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
TreatLife DS01 {"NAME":"DS02S Dimmer","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
TreatLife DS02S {"NAME":"DS02S Dimmer","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
TreatLife 400W {"NAME":"DS02S Dimmer","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
TreatLife 400W Single Pole {"NAME":"DS02S Dimmer","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Treatlife Dual Outdoor Dimmer {"NAME":"DP12","GPIO":[1,2272,1,2304,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"SO97 1 | TuyaMCU 11,1 | TuyaMCU 12,7 | TuyaMCU 21,2 | TuyaMCU 22,8 | SO20 1 | SO54 1"}
|
||||
TreatLife Light and Fan {"NAME":"DS03 Fan/Light","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Virage Labs VirageDimmer {"NAME":"VirageDimmer","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
WF-DS01 {"NAME":"Dimmer WF-DS01","GPIO":[1,1,1,1,1,1,0,0,1,1,290,1,1,0],"FLAG":0,"BASE":54}
|
||||
WiFi Dimmer Switch {"NAME":"PS-16-DZ","GPIO":[0,3200,0,3232,0,0,0,0,0,288,0,0,0,0],"FLAG":0,"BASE":58}
|
||||
Zemismart KS-7011 {"NAME":"KS-7011 Dimmer","GPIO":[1,2272,1,2304,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
@ -371,10 +391,11 @@ Sonoff D1 {"NAME":"Sonoff D1","GPIO":[1,3200,0,3232,0,0,0,0,0
|
||||
```
|
||||
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":"HTIT-W8266","GPIO":[1,1,1,1,640,608,0,0,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}
|
||||
LilyGO TTGO ESP8266 0.91 inch OLED SSD1306 {"NAME":"TTGO-0.91","GPIO":[1,1,640,1,1024,0,0,0,1,1,608,1,0,1],"FLAG":0,"BASE":18}
|
||||
LilyGO TTGO T-Camera {"NAME":"T-Camera","GPIO":[1,1,1,1,4992,5120,1,1,1,5089,5090,64,1,1,5024,65,0,640,608,5056,0,5184,1,5152,0,0,0,0,1,1,5088,5091,5095,5094,5093,5092],"FLAG":0,"BASE":1}
|
||||
LilyGO TTGO T-Display 1.14in {"NAME":"ESP32-ttgo-display","GPIO":[0,1,1,1,992,6592,1,1,1,1,1,1,6624,1,896,864,0,1,1,1024,0,1,1,1,0,0,0,0,1,1,1,33,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
LilyGO TTGO T-Watcher {"NAME":"TTGO T4 v1.3","GPIO":[35,1,672,1,992,1024,1,1,832,768,736,704,1,1,896,0,0,640,608,864,0,0,1,928,0,0,0,0,960,1,1,4704,1,32,33,34],"FLAG":0,"BASE":1}
|
||||
LilyGO TTGO T-Watcher {"NAME":"TTGO T4 v1.3","GPIO":[35,1,672,1,992,1024,1,1,832,768,736,704,1,1,896,0,0,640,608,864,0,0,1,6368,0,0,0,0,6400,1,1,4704,1,32,33,34],"FLAG":0,"BASE":1}
|
||||
LilyGO TTGO TO ESP8266 OLED SH1106 Weather Station {"NAME":"TTGO T12","GPIO":[1,1,1,1,608,640,0,0,32,34,33,1,1,1],"FLAG":0,"BASE":18}
|
||||
M5Stack Core2 {"NAME":"M5Stack Core 2","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,0],"FLAG":0,"BASE":1}
|
||||
M5Stack M5StickC {"NAME":"M5StickC","GPIO":[1,0,0,0,0,768,1056,576,0,736,0,704,0,0,1024,0,0,641,609,800,0,0,1,0,0,0,0,0,640,608,1,0,1,32,6210,33],"FLAG":0,"BASE":1}
|
||||
@ -383,6 +404,12 @@ OLED Display Module 0.66" for Wemos D1 Mini {"NAME":"OLED 64x48","GPIO":[1,1,1,
|
||||
TTGO ESP32 {"NAME":"TTGO T-Journal ESP32 Camera","GPIO":[4928,1,1,1,1,5091,1,1,1,608,640,4960,1,5088,5093,5095,0,5184,5120,5056,0,5024,5152,4992,0,0,0,0,1,1,5090,5089,5094,0,0,5092],"FLAG":0,"BASE":1}
|
||||
```
|
||||
|
||||
## Display Switch
|
||||
```
|
||||
Lanbon L8 5 in 1 LCD Touch {"NAME":"Lanbon L8","GPIO":[0,0,0,0,0,992,0,0,224,0,225,0,0,0,1024,896,0,6624,6592,864,0,832,416,226,0,0,0,0,417,418,0,352,0,0,0,4736],"FLAG":0,"BASE":1}
|
||||
Sonoff NSPanel Touch {"NAME":"NSPanel","GPIO":[0,0,0,0,3872,0,0,0,0,0,32,0,0,0,0,225,0,480,224,1,0,0,0,33,0,0,0,0,0,0,0,0,0,0,4736,0],"FLAG":0,"BASE":1,"CMND":"ADCParam 2,64000,10000,3950 | Sleep 0 | BuzzerPWM 1"}
|
||||
```
|
||||
|
||||
## Downlight
|
||||
```
|
||||
3A 12W RGBW {"NAME":"RGBWSpot","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -390,6 +417,7 @@ Arlec Smart 9W CCT {"NAME":"Arlec ALD092CHA","GPIO":[0,0,0,0,416,417,0
|
||||
Arlec Smart 9W RGB+CCT {"NAME":"Arlec ALD092RHA","GPIO":[0,0,0,0,419,420,0,0,416,418,417,0,0,0],"FLAG":0,"BASE":18}
|
||||
Atom 10W RGBCCT {"NAME":"Atom AT9017/WH/WIZ/TR","GPIO":[0,0,420,0,419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,416,417,418,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Atom 11W RGBCCT {"NAME":"Atom AT9012/WH/WIZ","GPIO":[0,0,420,0,419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,416,417,418,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Bazz 6" RGBCCT Recessed Lighting Conversion Kit {"NAME":"CON6RGBTNWWF","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
BrilliantSmart Prism 10W RGBCCT {"NAME":"Prism","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
BrilliantSmart Trilogy 9W CCT {"NAME":"SmartCCTDwnLgt","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,0],"FLAG":0,"BASE":48}
|
||||
Connect SmartHome RGB {"NAME":"CSH-240RGB10W","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -400,6 +428,7 @@ Globe 5W 4" Recessed RGBCCT {"NAME":"GlobeRGBWW","GPIO":[0,0,0,0,416,419,0,0,41
|
||||
Hyperikon 14W 1000lm 6" {"NAME":"HyperikonDL6","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
iHomma 6W RGBCCT {"NAME":"iHomma RGBWW","GPIO":[0,0,0,0,420,419,0,0,416,417,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
iHomma RGB BT+IR 12W {"NAME":"iHommaLEDDownl","GPIO":[0,0,0,0,0,419,0,0,416,417,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Illume 6-inch RGBCCT {"NAME":"I-SMRGBCCT6","GPIO":[0,0,0,0,407,406,0,0,409,420,408,0,0,0],"FLAG":0,"BASE":18}
|
||||
Kogan 9W RGBCCT {"NAME":"Kogan_SMARTLED","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
LEDLite CCT 10W Fire Rated {"NAME":"LEDLite-LTTD10Wifi","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
Mirabella Genio 9W CCT {"NAME":"GenioDLightCCT","GPIO":[0,0,0,0,0,0,0,0,449,0,416,0,0,0],"FLAG":0,"BASE":48}
|
||||
@ -427,6 +456,7 @@ Arlec Smart 45cm Smart DC Wall {"NAME":"Arlec 45cm Fan","GPIO":[0,0,0,0,0,0,0,0
|
||||
Geek Aire 3D Oscillating Desktop {"NAME":"Geek Aire Fan","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 12,4 | TuyaMCU 13,5"}
|
||||
Goldair SleepSmart GCPF315 {"NAME":"Goldair Fan","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
Lucci Connect Remote Control {"NAME":"Lucci Fan","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
QuietCool Gable Mount Attic {"NAME":"QuietCool-AFG-SMT-PRO-2.0","GPIO":[0,0,0,0,0,224,0,0,0,0,0,0,0,0,640,608,0,0,0,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Interlock 1|WebButton1 Low|WebButton2 High|SO8 1"}
|
||||
Sichler Haushaltsgeraete Column {"NAME":"Sichler Fan","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Technical Pro {"NAME":"FXA16 Fan","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 12,8"}
|
||||
Zemismart Bladeless {"NAME":"Bladeless Fan","GPIO":[1,2272,1,2304,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
@ -446,7 +476,7 @@ Sonoff iFan04-L 110V Light and Ceiling {"NAME":"iFan04-L","GPIO":[32,3200,0,323
|
||||
Avatto Light and {"NAME":"AVATTO SYS-FL01","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Deta Light and {"NAME":"Deta Fan Speed and Light Controller","GPIO":[33,0,0,576,226,34,0,0,0,225,224,227,32,0],"FLAG":0,"BASE":18}
|
||||
iSwitch Light and {"NAME":"iSwitchOZ Light Fan","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Treatlife Ceiling {"NAME":"DS02F","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,1|SO97 1|SO68 0"}
|
||||
Treatlife 1.5A 4 Speed Ceiling {"NAME":"DS02F","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,1|SO97 1|SO68 0"}
|
||||
```
|
||||
|
||||
## Garage Door Opener
|
||||
@ -567,7 +597,6 @@ ZJ-WF-ESP-A v1.1 {"NAME":"RGB2","GPIO":[0,0,0,0,0,0,0,0,417,416,418,
|
||||
Arlec Smart 2m LED Colour Changing Strip Light {"NAME":"Arlec_Light_Strip","GPIO":[1,1,1088,1,416,419,1,1,417,420,418,0,1,1],"FLAG":0,"BASE":18}
|
||||
B.K. Licht 2m RGB {"NAME":"RGBW-Strip","GPIO":[0,0,0,0,416,32,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
BAZZ 10 ft RGBW {"NAME":"BAZZ U183MRGBWWF RGBW LED Strip","GPIO":[32,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
BlitzWolf BW-LT11 {"NAME":"BW-LT11 Strip","GPIO":[32,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
BrilliantSmart 20743 RGB+W {"NAME":"BrilliantStrip","GPIO":[32,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Briloner 2256-150 RGB {"NAME":"Briloner2256-1","GPIO":[1088,0,0,0,416,0,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Calex 5m RGB + White {"NAME":"Calex RGBW IR","GPIO":[1088,0,0,0,416,0,0,0,417,419,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -589,7 +618,7 @@ LE LampUX 16.4ft RGB {"NAME":"LampUX","GPIO":[0,33,32,0,0,417,0,0,418,10
|
||||
LE LampUX 2m RGB TV Backlight {"NAME":"LE 904102","GPIO":[0,32,33,0,0,417,0,0,418,34,0,416,0,0],"FLAG":0,"BASE":18}
|
||||
LE LampUX 5m RGB {"NAME":"LampUX","GPIO":[32,0,0,0,0,417,0,0,418,0,0,416,0,0],"FLAG":0,"BASE":18}
|
||||
LE LampUX 5m RGB {"NAME":"LE LampUx","GPIO":[0,0,0,0,0,417,0,0,418,0,0,416,0,0],"FLAG":0,"BASE":34}
|
||||
LE lampUX 5m RGBW {"NAME":"LampUX","GPIO":[0,0,32,0,0,417,0,0,418,0,419,416,0,0],"FLAG":0,"BASE":18}
|
||||
LE lampUX 5m RGBW {"NAME":"LampUX","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lenovo 5m RGBW {"NAME":"Lenovo LED Strip 5m","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
LePower 32.8ft RGB {"NAME":"LePower","GPIO":[0,0,0,0,0,417,0,0,418,0,0,416,0,0],"FLAG":0,"BASE":18}
|
||||
Lohas ZN022 5m RGBW {"NAME":"LOHAS M5-022","GPIO":[0,0,0,0,417,416,0,0,32,418,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -617,7 +646,7 @@ Torchstar Safe Lighting Kit {"NAME":"Torchstar","GPIO":[0,0,0,0,288,0,0,0,0,0,0
|
||||
WiZ 2m Starter Kit {"NAME":"WiZ LED Strip","GPIO":[0,0,420,0,419,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,416,417,418,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
WOOX 5m RGBW {"NAME":"GardenLedstrip1","GPIO":[0,0,0,0,0,417,0,0,418,160,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
WOOX 5m RGBW {"NAME":"Woox R5093","GPIO":[32,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Yeelight Lightstrip 1S {"NAME":"Yeelight Lightstrip 1S","GPIO":[0,0,0,0,0,418,0,0,0,416,417,0,0,0,0,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,"CMND":"`SO37 128 | SO92 1"}
|
||||
Yeelight Lightstrip 1S {"NAME":"Yeelight Lightstrip 1S","GPIO":[0,0,0,0,0,418,0,0,0,416,417,0,0,0,0,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,"CMND":"SO37 128 | SO92 1"}
|
||||
Zemismart 3m Extendable RGBW {"NAME":"Zemismart LED","GPIO":[0,0,0,0,417,416,0,0,0,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
@ -641,6 +670,8 @@ electriQ MOODL Ambiance Lamp {"NAME":"ElectriQ MOODL","GPIO":[0,4640,0,0,0,0,0,
|
||||
Hama Wall Light Square, 10 cm, IP 44 {"NAME":"Hama Wifi Wall Light","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,1],"FLAG":0,"BASE":18}
|
||||
Hugoai Table Lamp {"NAME":"HG02","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,20 | TuyaMCU 26,21 | TuyaMCU 21,22 | TuyaMCU 23,23 | TuyaMCU 24,24 | DimmerRange 34,1000"}
|
||||
Iwoole Table Lamp {"NAME":"GLOBELAMP","GPIO":[0,0,0,0,419,0,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
LSC Multicolor Christmas String {"NAME":"LSC MC Lights","GPIO":[0,0,0,0,544,32,0,0,3840,0,3872,0,0,0],"FLAG":0,"BASE":18}
|
||||
LSC Smart Mood {"NAME":"LSC Mood Light","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lumary 18W RGBCCT Recessed Panel {"NAME":"LumaryDLghtRGB","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
Mi LED Desk Lamp {"NAME":"Mi Desk Lamp","GPIO":[0,0,32,0,416,417,0,0,3264,3296,0,0,0,0],"FLAG":0,"BASE":66}
|
||||
Mirabella Genio 10 LED Filament Festoon {"NAME":"GenioFestoon","GPIO":[0,0,0,0,0,0,0,0,0,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -648,16 +679,18 @@ Mirabella Genio 4 Black LED Garden Path {"NAME":"GenioGardenStr","GPIO":[0,0,0,
|
||||
Mirabella Genio CCT 6 LED 30mm Stainless Steel Deck {"NAME":"Mirabella Deck CCT","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
MiraBella Genio Colour 6 LED 30mm Stainless Steel Deck {"NAME":"Genio RGB Deck Lights","GPIO":[0,0,0,0,416,0,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Mirabella Genio Rechargable LED Portable Lamp {"NAME":"MirabellaPortableLamp","GPIO":[32,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nous CCT Desk Lamp {"NAME":"NOUS Smart Desk Lamp S1","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,1 | TuyaMCU 21,3 | TuyaMCU 23,4 | DimmerRange 25,255"}
|
||||
Novostella UT88835 20W Flood {"NAME":"Novo 20W Flood","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Novostella UT88836 20W Flood {"NAME":"Novo 20W Flood","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Nue Vision Care Desk Lamp {"NAME":"Nue Vision Desk Lamp VC18","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,1 | TuyaMCU 21,3 | TuyaMCU 23,4"}
|
||||
Sonoff BN-SZ01 {"NAME":"Sonoff BN-SZ","GPIO":[0,0,0,0,0,0,0,0,416,320,0,0,0,0],"FLAG":0,"BASE":22}
|
||||
Philips Wiz 24W LED White Batten {"NAME":"PHILIPS-wiz-24w","GPIO":[0,0,0,0,417,0,0,0,0,416,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Sonoff {"NAME":"Sonoff BN-SZ","GPIO":[0,0,0,0,0,0,0,0,416,320,0,0,0,0],"FLAG":0,"BASE":22}
|
||||
Spotlight 9cm RGB+W 7W {"NAME":"Spotlight RGBW","GPIO":[0,0,0,0,0,0,0,0,0,3008,0,3040,0,0],"FLAG":0,"BASE":27}
|
||||
TCP WPAN Square 600X600mm 36W CCT Panel {"NAME":"TCPsmart LED Panel","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
TCP WPAN Square 600X600mm 36W CCT Panel {"NAME":"TCPsmart LED Panel","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO92 1|DimmerRange 30,100"}
|
||||
Teckin FL41 {"NAME":"Teckin FL41","GPIO":[0,0,0,0,0,32,0,0,0,0,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
Wipro Next Smart Batten 20W CCT {"NAME":"WIPROBatten","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Xiaomi Mi Desk Lamp Pro {"NAME":"Mi Desk Lamp Pro","GPIO":[6212,0,416,0,417,0,0,0,3840,0,0,0,160,640,608,0,0,0,0,0,0,0,3296,3264,0,0,0,0,0,32,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"DimmerRange 30,100"}
|
||||
Yeelight Crystal Pendant {"NAME":"Yeelight Meteorite","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,420,0,419,0,0,0,0,417,418,0,0,0,0,0,416,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"`SO37 128 | SO92 1"}
|
||||
Yeelight Crystal Pendant {"NAME":"Yeelight Meteorite","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,420,0,419,0,0,0,0,417,418,0,0,0,0,0,416,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"SO37 128 | SO92 1"}
|
||||
Zemismart Moonlamp {"NAME":"Zemismart Moonlamp","GPIO":[1,1,1,1,416,419,1,1,417,420,418,1,1,1],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
@ -682,12 +715,16 @@ NEO Coolcam Mouse Trap {"NAME":"Neo Mouse Trap","GPIO":[1,2272,1,2304,1,1,
|
||||
PCI-e Desktop PC Remote Control {"NAME":"PC-Switch-01","GPIO":[32,0,0,0,0,0,0,0,224,544,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Proscenic T21 Air Fryer {"NAME":"Proscenic T21","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
RainPoint Indoor Water Pump {"NAME":"RainPoint","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 81,107|TuyaMCU 12,109|TuyaMCU 11,1|TuyaMCU 82,104"}
|
||||
Sinilink PCIe Computer Remote {"NAME":"XY-WPCE","GPIO":[1,1,320,1,32,224,0,0,160,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO114 1 | SwitchMode1 2"}
|
||||
Sinilink USB Computer Remote {"NAME":"XY-WPCL","GPIO":[1,1,320,1,32,224,0,0,160,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO114 1 | SwitchMode1 2"}
|
||||
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
|
||||
```
|
||||
Ai Thinker ESP-C3-12F ESP-12 Compatible "Not available"
|
||||
Ai-Thinker ESP32-C3 "Not available"
|
||||
Ai-Thinker ESP32-C3F ESP-12 Compatible "Not available"
|
||||
Ai-Thinker ESP32-S2F "Not available"
|
||||
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-01M "Not available"
|
||||
@ -700,7 +737,10 @@ ESP-M2 {"NAME":"ESP-M2","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,0,
|
||||
ESP-M3 {"NAME":"ESP-M3","GPIO":[1,1,1,1,1,0,0,0,0,1,1,0,1,0],"FLAG":0,"BASE":18}
|
||||
ESP-M4 {"NAME":"ESP-M4","GPIO":[1,1,0,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":18}
|
||||
LC Technology PSF-B04 Ewelink 4 Channel Switch {"NAME":"LC-EWL-B04-MB","GPIO":[1,1,1,1,1,1,0,0,1,288,1,1,0,0],"FLAG":0,"BASE":18}
|
||||
M5Stack M5Stamp C3 "Not available"
|
||||
M5Stack M5Stamp Pico {"NAME":"M5Stamp Pico","GPIO":[1,1,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1,0,1376,0,0,0,0,1,1,0,0,1,0,0,32],"FLAG":0,"BASE":1}
|
||||
MTools 16 Channel ESP32 Relay Driver 5V DC {"NAME":"16ch Board","GPIO":[1,1,237,1,232,1,1,1,228,231,1,1,233,230,234,235,0,238,239,236,0,224,227,226,0,0,0,0,229,225,1,1,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
PSF-B Series ESP8285 "Not available"
|
||||
Shelly Universal Input/Output {"NAME":"Shelly Uni","GPIO":[320,0,0,0,225,1216,0,0,192,193,0,224,0,4864],"FLAG":0,"BASE":18}
|
||||
Sinilink MODBUS Interface {"NAME":"XY-WFPOW","GPIO":[0,1,0,1,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Wireless Tag ESP32-C3 ESP-12 Compatible "Not available"
|
||||
@ -769,13 +809,14 @@ Konyks Pluviose 16A IP55 {"NAME":"Konyks Pluviose","GPIO":[32,0,0,0,0,0,0,0,
|
||||
Koolertron {"NAME":"C168 Outdoor","GPIO":[0,32,0,320,2720,2656,0,0,224,2624,225,226,0,0],"FLAG":0,"BASE":18}
|
||||
Luminea 2 Outlet {"NAME":"Luminea","GPIO":[0,0,0,0,225,320,0,0,224,321,32,0,0,1],"FLAG":0,"BASE":18}
|
||||
Luminea NX-4458 {"NAME":"Luminea NX4458","GPIO":[32,0,0,0,2688,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":65}
|
||||
Master {"NAME":"Master_IOT-EXTPLUG","GPIO":[32,1,0,1,1,0,0,0,224,288,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Maxcio EOP03-EU {"NAME":"Maxcio EOP03-EU","GPIO":[0,0,0,0,225,321,0,0,224,288,32,0,322,0],"FLAG":0,"BASE":18}
|
||||
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}
|
||||
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 Socket 2","GPIO":[0,0,0,0,224,32,0,0,320,289,0,0,0,0],"FLAG":0,"BASE":61}
|
||||
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}
|
||||
Oittm Outdoor {"NAME":"Oittm Outdoor","GPIO":[32,0,0,0,0,0,0,0,0,0,320,224,1,0],"FLAG":0,"BASE":18}
|
||||
Peteme PS-1602 {"NAME":"Peteme Outdoor","GPIO":[32,0,0,0,0,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Poweradd {"NAME":"POWERADD","GPIO":[0,0,0,0,320,321,0,0,224,32,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -802,6 +843,7 @@ Wyze {"NAME":"Wyze Plug Outdoor","GPIO":[0,0,0,0,0,576,0
|
||||
|
||||
## Plug
|
||||
```
|
||||
1AC 2USB {"NAME":"BSD31","GPIO":[0,0,0,0,0,225,0,0,224,32,320,0,0,0],"FLAG":0,"BASE":18}
|
||||
2nice SP111 {"NAME":"2NICE SP111","GPIO":[320,0,321,0,0,0,0,0,0,32,0,224,0,4736],"FLAG":0,"BASE":18}
|
||||
2nice UP111 {"NAME":"2NICE UP111","GPIO":[0,576,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
3Stone Mini {"NAME":"3Stone Smart Plug","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -840,6 +882,7 @@ Aoycocr X6 {"NAME":"Aoycocr X6","GPIO":[0,0,320,0,0,0,0,0,0,32
|
||||
Aquiv S1 {"NAME":"Aquiv S1","GPIO":[0,0,544,0,320,0,0,0,224,32,0,0,0,1],"FLAG":0,"BASE":18}
|
||||
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 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}
|
||||
@ -881,6 +924,7 @@ Bakibo TP22Y {"NAME":"Bakibo TP22Y","GPIO":[0,0,0,32,2720,2656,0
|
||||
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}
|
||||
BAW {"NAME":"BAW TPSWIFI-10","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Bawoo {"NAME":"Bawoo S120","GPIO":[0,0,0,0,288,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Be HiTech 16A {"NAME":"Be HiTech","GPIO":[0,0,0,288,0,2720,0,0,2624,32,2656,224,0],"FLAG":0,"BASE":18}
|
||||
Bearware 303492 3AC+2USB {"NAME":"Bearware 30349","GPIO":[0,320,0,32,225,226,0,0,227,224,544,0,0,0],"FLAG":0,"BASE":18}
|
||||
Bestek MRJ1011 {"NAME":"BestekMRJ1011","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
@ -952,6 +996,7 @@ Digoo NX-SP202 {"NAME":"Generic_SP202","GPIO":[288,0,0,2624,65,272
|
||||
Dilisens NX-SP201 Mini 2 in 1 {"NAME":"NX-SP201","GPIO":[0,0,2624,0,2720,2656,288,224,33,225,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
DILISENS SP201 {"NAME":"Dilisens SP201","GPIO":[0,0,2624,0,2688,2656,288,224,33,225,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
Dunnes Stores {"NAME":"SmartLifePlug","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Duvik 10A {"NAME":"Duvik M008","GPIO":[0,0,0,0,320,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
DWFeng AWP02L-N {"NAME":"AWP02L-N","GPIO":[1,1,320,1,1,1,0,0,1,32,1,224,1,0],"FLAG":0,"BASE":18}
|
||||
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}
|
||||
@ -971,10 +1016,11 @@ Energeeks 2 USB {"NAME":"EG-EW005MC","GPIO":[544,1,288,1,1,225,1,1,
|
||||
Energizer {"NAME":"Energizer EIE3-1001-WHT","GPIO":[32,0,448,0,2688,2656,0,0,2624,450,224,0,449,0],"FLAG":0,"BASE":18}
|
||||
Energizer Smart Plug {"NAME":"Energizer Smart Plug","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Epicka {"NAME":"Epicka","GPIO":[1,1,1,1,321,320,0,0,224,32,1,1,1,4704],"FLAG":0,"BASE":18}
|
||||
Eques Elf Smart Plug {"NAME":"EQP01WTGY","GPIO":[0,0,0,320,0,0,0,0,96,0,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Esicoo JSM-WF02 {"NAME":"Esicoo Plug","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Estink C178 {"NAME":"Estink C178","GPIO":[0,0,0,0,288,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Etekcity ESW01-USA {"NAME":"ESW01-USA","GPIO":[0,0,0,0,224,544,0,0,2656,2688,32,2592,288,0],"FLAG":0,"BASE":55}
|
||||
Etekcity ESW15-USA {"NAME":"ESW15-US","GPIO":[0,0,0,0,0,224,0,0,2656,2688,32,2592,288,0],"FLAG":0,"BASE":18}
|
||||
Etekcity 15A {"NAME":"ESW15-US","GPIO":[0,0,0,0,0,224,0,0,2656,2688,32,2592,288,0],"FLAG":0,"BASE":18}
|
||||
Etekcity 8A {"NAME":"ESW01-USA","GPIO":[0,0,0,0,224,544,0,0,2656,2688,32,2592,288,0],"FLAG":0,"BASE":55}
|
||||
EU3S {"NAME":"AWOW BSD33","GPIO":[0,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":18}
|
||||
Eva Logik {"NAME":"EVA LOGIK Plug","GPIO":[1,32,1,1,1,1,0,0,1,288,224,1,1,0],"FLAG":0,"BASE":18}
|
||||
EZPlug V1 OpenSource {"NAME":"EZPlug V1","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":1}
|
||||
@ -985,6 +1031,7 @@ FK-PW901U {"NAME":"FK-PW901U","GPIO":[320,1,1,1,1,226,0,0,224
|
||||
FLHS-ZN04 {"NAME":"FLHS-ZN04","GPIO":[321,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
Fontastic SH01 {"NAME":"Fontastic","GPIO":[1,0,1,0,320,0,0,0,224,32,0,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Foreet {"NAME":"Foreet_120V","GPIO":[0,0,0,0,224,32,0,0,289,288,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Fox&Summit FS-IP12PK {"NAME":"Fox & Summit Plug","GPIO":[0,0,32,0,3840,0,0,0,544,256,480,0,0,0],"FLAG":0,"BASE":18,"CMND":"BuzzerPwm 1"}
|
||||
FrankEver 15A {"NAME":"Israel plug","GPIO":[321,0,320,2624,0,2720,0,0,0,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
FrankEver 16A {"NAME":"FrankEver FK-PW801ER","GPIO":[0,0,0,0,288,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
FrankEver Mini {"NAME":"FK-PW801US","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
@ -999,12 +1046,14 @@ Geeni Spot Glo {"NAME":"Geeni Glo","GPIO":[0,0,0,0,320,0,0,0,224,3
|
||||
Geeni SWITCH {"NAME":"Geeni Switch","GPIO":[0,0,0,0,288,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Geeni Switch Duo {"NAME":"Geeni Duo","GPIO":[0,0,0,0,33,225,0,0,32,288,224,0,289,0],"FLAG":0,"BASE":18}
|
||||
Girier 16A {"NAME":"Girier - JR-PM01","GPIO":[0,544,0,2624,2720,2656,0,0,224,32,320,0,0,0],"FLAG":0,"BASE":68}
|
||||
Globe 15A {"NAME":"Globe 50329","GPIO":[0,0,0,0,320,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
Globe 2 Outlet {"NAME":"Globe 50020","GPIO":[0,576,0,321,33,32,0,0,224,320,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Globe Smart {"NAME":"GlobeSmartPlug","GPIO":[0,0,0,0,320,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
GoldenDot Mini {"NAME":"GoldenDot Mini","GPIO":[0,32,0,0,0,0,0,0,0,321,224,0,0,0],"FLAG":0,"BASE":52}
|
||||
GoldenDot with ADC {"NAME":"W-US003-Power","GPIO":[320,0,0,0,0,0,0,0,0,32,0,224,0,4896],"FLAG":0,"BASE":18}
|
||||
Goliath 16A {"NAME":"GOLIATH AV-SSTE01","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Gosund {"NAME":"Gosund EP2","GPIO":[320,1,576,1,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
|
||||
Gosund {"NAME":"SHP5","GPIO":[321,3072,320,3104,1,225,0,0,1,1,224,1,32,0],"FLAG":0,"BASE":18}
|
||||
Gosund 13A {"NAME":"Gosund UP111","GPIO":[0,320,0,32,2720,2656,0,0,2624,576,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Gosund 2 in 1 {"NAME":"Gosund WP212","GPIO":[321,288,544,0,224,2720,0,0,2624,32,2656,225,33,0],"FLAG":0,"BASE":18}
|
||||
Gosund Dual {"NAME":"Gosund SP211","GPIO":[33,576,320,2624,2720,2656,0,0,32,321,224,0,225,0],"FLAG":0,"BASE":18}
|
||||
@ -1012,10 +1061,9 @@ Gosund SP1 {"NAME":"Gosund SP1 v23","GPIO":[0,321,0,32,2720,26
|
||||
Gosund SP111 {"NAME":"Gosund SP111","GPIO":[320,0,321,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":18}
|
||||
Gosund SP111 v1.1 {"NAME":"Gosund SP111 v1.1","GPIO":[320,0,576,0,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
|
||||
Gosund SP111 v1.4 {"NAME":"Gosund SP111 v1.4","GPIO":[321,1,320,1,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
Gosund SP112 {"NAME":"SHP5","GPIO":[321,3072,320,3104,1,225,0,0,1,1,224,1,32,0],"FLAG":0,"BASE":18}
|
||||
Gosund SP112 {"NAME":"Gosund 112v3.4","GPIO":[320,0,321,0,2656,2720,0,0,2624,257,224,0,0,4800],"FLAG":0,"BASE":18}
|
||||
Gosund WP1 {"NAME":"Gosund WP1-1","GPIO":[0,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
Gosund WP2 {"NAME":"Gosund WP2","GPIO":[32,576,321,0,33,0,0,0,225,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Gosund WP2 {"NAME":"Gosund WP2 Plug","GPIO":[33,0,320,0,321,32,0,0,224,576,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Gosund WP211 {"NAME":"Gosund wp211","GPIO":[0,0,0,0,224,0,0,0,0,32,0,225,33,0],"FLAG":0,"BASE":18}
|
||||
Gosund WP212 {"NAME":"Gosund_WP212","GPIO":[32,544,321,0,33,0,0,0,225,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Gosund WP3 {"NAME":"Gosund WP3 v2","GPIO":[320,0,321,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1051,10 +1099,10 @@ Hyleton 313 {"NAME":"Hyleton 313","GPIO":[321,0,320,0,0,0,0,0,0
|
||||
Hyleton 314 {"NAME":"hyleton-314","GPIO":[321,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Hyleton 315 {"NAME":"hyleton-315","GPIO":[0,0,0,0,321,320,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Hyleton 317 {"NAME":"hyleton-317","GPIO":[320,0,321,0,322,0,0,0,0,64,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Hyleton HLT-311 {"NAME":"HLT-311","GPIO":[320,0,0,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Hyleton HLT-311 {"NAME":"HLT-311","GPIO":[544,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
iClever IC-BS08 {"NAME":"iClever BS08","GPIO":[0,0,0,0,544,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
iDIGITAL {"NAME":"Brilliant","GPIO":[0,0,0,0,288,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Ihommate 16A {"NAME":"ZCH-02","GPIO":[0,0,0,32,2688,2656,0,0,2592,320,224,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Ihommate 16A {"NAME":"ZCH-02","GPIO":[0,0,0,32,2688,2656,0,0,2624,320,224,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Infray 16A {"NAME":"AWP08L","GPIO":[32,0,288,0,0,0,0,0,0,0,0,224,0,4704],"FLAG":0,"BASE":18}
|
||||
Insmart WP5 {"NAME":"INSMART","GPIO":[0,0,448,0,0,0,0,0,0,160,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
iSwitch {"NAME":"Smart Plug XSA","GPIO":[1,32,1,1,1,1,0,0,1,320,224,1,1,0],"FLAG":0,"BASE":18}
|
||||
@ -1102,6 +1150,7 @@ Koogeek W-UKX {"NAME":"Koogeek W-UKX","GPIO":[0,32,1,1,1,0,0,0,0,
|
||||
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}
|
||||
Ledvance Smart+ {"NAME":"Ledvance Plug","GPIO":[0,0,0,320,2688,2656,0,0,224,32,2624,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lenovo SE-341A {"NAME":"Lenovo SE-341A","GPIO":[0,0,0,0,32,224,0,0,576,0,320,0,0,0],"FLAG":0,"BASE":18}
|
||||
LESHP KS-501 {"NAME":"LESHP KS-501","GPIO":[32,0,0,0,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Lighting Arena {"NAME":"Lighting Arena Smart Plug","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1113,6 +1162,7 @@ Lohas Nightlight + USB {"NAME":"Lohas LED Mini Plug","GPIO":[0,321,0,288,3
|
||||
Lonsonho 10A Type E {"NAME":"Lonsonho10ALed","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
LoraTap SP400W-IT {"NAME":"LoraTap SP400W","GPIO":[0,0,0,0,544,320,0,0,224,32,0,0,0,1],"FLAG":0,"BASE":18}
|
||||
LSC Power {"NAME":"LSC Smart Plug","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
LSC Smart Connect {"NAME":"LSC Smart Plug FR","GPIO":[0,0,0,0,320,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lumiman LM650 {"NAME":"Lumiman LM650","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Luminea NX-4491 {"NAME":"Luminea NX-449","GPIO":[320,0,576,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Luminea NX-4541 {"NAME":"NX-4451","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":55}
|
||||
@ -1134,9 +1184,11 @@ Merkury MI-WW101-199 {"NAME":"merkury WW101","GPIO":[0,0,0,0,0,0,0,0,320
|
||||
Merkury MI-WW102-199L {"NAME":"MIC-WW102","GPIO":[32,0,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":36}
|
||||
Merkury MI-WW105-199W {"NAME":"Merkury Switch","GPIO":[1,1,1,1,576,320,0,0,224,32,1,1,1,4704],"FLAG":0,"BASE":18}
|
||||
Mini {"NAME":"MiniSmartSocket_S03","GPIO":[0,0,0,0,320,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Mini Smart {"NAME":"W-US002S","GPIO":[0,32,0,0,2720,0,0,0,0,288,224,0,0,0],"FLAG":0,"BASE":45}
|
||||
Minleaf W-DEXI {"NAME":"W-DEXI","GPIO":[0,32,0,0,2720,2656,0,0,2624,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Mirabella Genio {"NAME":"GenioGpo","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Mirabella Genio 1002341 {"NAME":"Genio 1","GPIO":[0,0,320,0,0,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Mirabella Genio Double Plug with USB Ports {"NAME":"Genio I002932","GPIO":[0,320,1,32,0,0,0,0,224,0,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Mirabella Genio USB {"NAME":"Mirabella Genio 1002826","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":1}
|
||||
Mirabella Genio USB Port {"NAME":"Genio I002341","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Mistral {"NAME":"Mistral Smart ","GPIO":[320,0,0,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1158,6 +1210,7 @@ NEO Coolcam NAS-WR01W {"NAME":"NAS-WR01W","GPIO":[0,0,0,0,288,0,0,0,224,3
|
||||
NEO Coolcam NAS-WR01W 16A {"NAME":"Neo Coolcam 16","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
|
||||
Nestler-matho {"NAME":"N-m 485-1","GPIO":[0,0,0,32,2688,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
NETVIP XS-SSA01 {"NAME":"XS-SSA01","GPIO":[0,0,0,0,0,0,0,0,320,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Nexxt Surge Protector 220V Chile {"NAME":"Nexxt Smart Plug","GPIO":[0,0,0,0,320,1,0,0,32,544,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
NGS Loop Track 16A {"NAME":"LOOP","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Nightlight and AC Outlet {"NAME":"SWN03","GPIO":[32,0,0,0,0,0,1,1,416,0,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Nishica SM-PW701I {"NAME":"SM-PW701I","GPIO":[1,1,1,1,1,1,1,1,224,288,32,1,1,1],"FLAG":0,"BASE":18}
|
||||
@ -1215,12 +1268,12 @@ SilentNight {"NAME":"SilentNightPlug","GPIO":[0,0,0,0,288,0,0,0
|
||||
Silvergear Slimme Stekker {"NAME":"Silvergear SmartHomePlug","GPIO":[0,0,0,96,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
SimpleHome {"NAME":"SimpleHome","GPIO":[289,0,0,0,0,0,0,0,224,320,32,0,0,0],"FLAG":0,"BASE":1}
|
||||
SimpleHome 2 USB {"NAME":"SimpleHome","GPIO":[289,0,0,0,2656,2624,0,0,224,2688,32,0,0,0],"FLAG":0,"BASE":1}
|
||||
Slitinto Mini 2 in 1 {"NAME":"slitinto NX-SP201","GPIO":[0,0,0,2624,32,2720,0,0,224,33,2656,225,0,0],"FLAG":0,"BASE":18}
|
||||
Slitinto NX-SM110 {"NAME":"Slitinto SM110","GPIO":[0,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
Slitinto NX-SM112 {"NAME":"NX-SM112","GPIO":[576,0,0,2624,0,2720,0,0,0,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
Slitinto NX-SM112 v2 {"NAME":"Slitinto NX SM","GPIO":[320,1,576,1,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
Slitinto NX-SM200 {"NAME":"NX-SM200","GPIO":[0,0,0,32,2720,2656,0,0,0,288,224,2592,0,0],"FLAG":0,"BASE":45}
|
||||
Slitinto NX-SM2001 {"NAME":"NX-SM2001","GPIO":[0,0,0,32,2720,2656,0,0,2624,288,224,0,0,0],"FLAG":0,"BASE":45}
|
||||
Slitinto NX-SP201 Mini 2 in 1 {"NAME":"Slitinto Dual ","GPIO":[576,0,0,2624,64,2720,0,0,224,65,2656,225,0,0],"FLAG":0,"BASE":18}
|
||||
Slitinto NX-SP202 {"NAME":"Slitinto SP202","GPIO":[32,0,0,0,2720,2656,0,0,2624,288,225,224,65,0],"FLAG":0,"BASE":64}
|
||||
SM-PW701K {"NAME":"SM-PW701K","GPIO":[0,0,0,0,288,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Smaho {"NAME":"SMAHO WiFi P.","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1248,7 +1301,7 @@ STITCH {"NAME":"Stitch 27937","GPIO":[32,0,320,0,2688,2656
|
||||
STITCH {"NAME":"Stitch 35511","GPIO":[320,0,321,0,0,2688,0,0,0,32,2656,224,2624,0],"FLAG":0,"BASE":18}
|
||||
STITCH 15A In-Line {"NAME":"Stitch 39047","GPIO":[0,288,0,32,2688,2656,0,0,2624,0,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
STITCH Mini 10A {"NAME":"STITCH 41730","GPIO":[0,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
SuperNight Dual {"NAME":"SuperNight Dua","GPIO":[1,32,1,224,2656,2688,0,0,225,2592,322,1,1,4704],"FLAG":0,"BASE":18}
|
||||
SuperNight Dual {"NAME":"SUPERNIGHT","GPIO":[0,32,0,224,2656,2688,0,0,225,2624,576,0,0,4833],"FLAG":0,"BASE":18}
|
||||
SWA1 {"NAME":"SWA1","GPIO":[0,0,0,0,288,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
SWA1 FR {"NAME":"SWA1","GPIO":[0,0,0,0,288,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
SWA1 UK {"NAME":"SWA1","GPIO":[0,0,0,0,288,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1289,6 +1342,7 @@ TP20 {"NAME":"TP20","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0
|
||||
TP24 {"NAME":"TP24","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Treatlife Dimmable {"NAME":"DP20","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 21,2 | SO20 1 | SO54 1"}
|
||||
U10 Series {"NAME":"WIFI-Socket","GPIO":[1,32,1,1,1,1,1,1,1,320,224,1,1,4704],"FLAG":0,"BASE":18}
|
||||
UltraBrite {"NAME":"UltraBrite Smart Plug","GPIO":[1,1,1,1,288,289,1,1,224,32,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
Ultralink UL-P01W {"NAME":"UL-P01W","GPIO":[0,288,0,32,2720,2656,0,0,2624,544,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Upstone {"NAME":"UPSTONE","GPIO":[1,1,544,1,320,1,0,0,224,32,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
US212 {"NAME":"US212","GPIO":[320,0,0,2624,0,2720,0,0,224,32,2656,225,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1309,8 +1363,9 @@ WAZA JH-G01E 10A {"NAME":"Waza JH-G01E","GPIO":[0,0,0,0,288,0,0,0,22
|
||||
Waza JH-G01E 16A {"NAME":"Waza JH-G01E 2","GPIO":[0,0,0,0,0,0,0,0,32,288,224,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Wily Electronics {"NAME":"VC Plug","GPIO":[544,0,0,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
|
||||
WiOn {"NAME":"WiOn","GPIO":[1,0,288,0,0,0,0,0,1,32,0,224,0,0],"FLAG":0,"BASE":17}
|
||||
WiOn Single Outlet {"NAME":"WiOn 50050","GPIO":[0,0,576,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Wipro 16A {"NAME":"Wip-DSP1160","GPIO":[0,0,0,32,2720,2656,0,0,2624,576,224,0,0,0],"FLAG":0,"BASE":52}
|
||||
Wisdom ZY_ACU02 {"NAME":"ZY-ACU02","GPIO":[0,0,0,544,225,224,0,0,320,32,321,0,0,0],"FLAG":0,"BASE":18}
|
||||
Wisdom Dual {"NAME":"ZY-ACU02","GPIO":[0,0,0,544,225,224,0,0,320,32,321,0,0,0],"FLAG":0,"BASE":18}
|
||||
WL-SC01 {"NAME":"WL-SC01","GPIO":[0,0,0,0,320,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":1}
|
||||
WOOX R4026 {"NAME":"WOOX R4026","GPIO":[0,0,0,32,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
WOOX R4785 {"NAME":"WOOXR4785","GPIO":[0,0,0,0,288,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1329,14 +1384,14 @@ XS-A14 {"NAME":"NETVIP XS-A14","GPIO":[416,0,417,0,0,32,0,
|
||||
XS-A17 {"NAME":"XS-A18","GPIO":[416,0,417,0,0,418,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":45}
|
||||
XS-A18 {"NAME":"XS-A18","GPIO":[416,0,417,0,0,418,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":45}
|
||||
XS-A23 {"NAME":"XS-A23","GPIO":[320,1,0,2624,32,2720,0,0,0,33,2656,224,225,0],"FLAG":0,"BASE":45}
|
||||
XS-SSA01 {"NAME":"XS-SSA01","GPIO":[0,32,0,0,0,0,0,0,320,160,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
XS-SSA01 {"NAME":"XS-SSA01","GPIO":[1,0,0,1,0,0,0,0,320,32,1,224,1,0],"FLAG":0,"BASE":18}
|
||||
XS-SSA01 v2 {"NAME":"XS-SSA01","GPIO":[1,32,1,1,1,1,0,0,320,1,1,224,1,0],"FLAG":0,"BASE":18}
|
||||
XS-SSA05 {"NAME":"XS-SSA05","GPIO":[257,1,1,2624,1,2688,0,0,224,32,2656,258,1,4704],"FLAG":0,"BASE":18}
|
||||
XS-SSA06 {"NAME":"XS-SSA06","GPIO":[416,0,417,0,0,418,0,0,0,64,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Yagala SWA9 {"NAME":"SWA9","GPIO":[0,0,0,0,288,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Yelomin JH-G01E {"NAME":"Yelomin","GPIO":[0,3072,0,3104,0,0,0,0,32,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
YERON US101 {"NAME":"YERON_US101","GPIO":[1,1,1,32,2688,2656,0,0,2624,320,224,1,1,0],"FLAG":0,"BASE":18}
|
||||
YM-WS-1 Mini {"NAME":"YM-WS1","GPIO":[0,0,0,0,0,0,0,0,320,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
YM-WS-1 Mini {"NAME":"YM-WS-1-ALT","GPIO":[32,33,34,35,0,0,0,0,0,288,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
YM-WS-3 16A {"NAME":"YM-WS-3","GPIO":[0,32,0,0,0,0,0,0,0,288,224,0,576,4704],"FLAG":0,"BASE":18}
|
||||
YT-E002 {"NAME":"YT-E002","GPIO":[576,0,0,0,33,0,0,0,225,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
YT-E003 {"NAME":"YT-E003-SP202","GPIO":[32,0,0,0,2720,2656,0,0,2624,288,225,224,65,0],"FLAG":0,"BASE":64}
|
||||
@ -1360,6 +1415,7 @@ AHRise 4+4AC+4USB {"NAME":"AHRise-083","GPIO":[0,0,0,0,320,32,0,0,225
|
||||
AHRise AHR-085 {"NAME":"AHRise AHR-085","GPIO":[0,0,0,0,32,320,0,0,225,226,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Aicliv 4AC 3USB {"NAME":"Aicliv WiFi","GPIO":[0,0,0,227,226,576,0,0,224,32,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Ailink 4AC 4USB {"NAME":"Ailink","GPIO":[288,321,0,289,256,32,0,0,258,257,259,0,228,0],"FLAG":0,"BASE":4}
|
||||
Anhaorui 6+6AC 4USB {"NAME":"Anhaorui ZN-709","GPIO":[320,0,0,160,224,225,0,0,228,229,227,226,0,0],"FLAG":0,"BASE":18,"CMND":"SwitchMode1 5|SO32 10"}
|
||||
Anncoe 4AC 4USB {"NAME":"P-EU4U4S","GPIO":[288,0,0,0,226,227,0,0,0,0,225,224,0,0],"FLAG":0,"BASE":18}
|
||||
Annhome 3AC + 2USB {"NAME":"1200W WiFi SPS","GPIO":[259,0,0,0,321,288,0,0,224,32,225,226,260,0],"FLAG":0,"BASE":18}
|
||||
AOFO 3AC+4USB {"NAME":"AOFO","GPIO":[0,320,0,32,225,224,0,0,0,226,227,0,0,4704],"FLAG":0,"BASE":18}
|
||||
@ -1389,8 +1445,9 @@ Geeni Surge + Charge 2 USB {"NAME":"Geeni GN-SW023","GPIO":[288,0,0,0,225,224,
|
||||
Geeni SURGE 6-Outlet Surge Protector {"NAME":"Geeni 6 Strip","GPIO":[320,0,0,0,225,224,0,0,227,228,226,229,32,0],"FLAG":0,"BASE":18}
|
||||
Geeni Surge Mini {"NAME":"Geeni-GN-SW004","GPIO":[320,0,0,32,0,0,0,0,225,224,226,0,0,1],"FLAG":0,"BASE":18}
|
||||
Globe 4 Outlet 2 USB {"NAME":"PowerBar","GPIO":[320,0,0,0,227,32,0,0,225,226,224,0,0,1],"FLAG":0,"BASE":18}
|
||||
Gosund 3+3AC 3USB {"NAME":"Gosund-PM03-T","GPIO":[0,0,576,0,0,259,0,0,224,225,226,0,32,0],"FLAG":0,"BASE":18}
|
||||
Gosund P1 {"NAME":"Gosund_P1","GPIO":[0,3072,544,3104,0,259,0,0,225,226,224,0,32,4704],"FLAG":0,"BASE":18}
|
||||
Gosund P2 {"NAME":"Gosund P2","GPIO":[0,0,544,0,0,259,0,0,224,225,226,0,32,0],"FLAG":0,"BASE":18}
|
||||
Gosund P2 {"NAME":"Gosund-PM03-v2","GPIO":[0,0,576,0,0,0,0,0,224,225,226,259,32,0],"FLAG":0,"BASE":18}
|
||||
Gosund WP9 {"NAME":"Gosund WP9","GPIO":[320,291,290,289,0,224,0,0,226,227,225,0,32,0],"FLAG":0,"BASE":18}
|
||||
Hama 4AC 4USB {"NAME":"HamaStrip","GPIO":[0,544,0,32,225,224,0,0,226,227,228,0,0,0],"FLAG":0,"BASE":18}
|
||||
Heyvalue 3AC+3USB {"NAME":"HeyvalueHLT-330","GPIO":[288,0,289,0,227,256,0,0,257,35,258,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1430,6 +1487,7 @@ POWSAV 5+5AC 4USB {"NAME":"POWSAV 5+5AC+4USB","GPIO":[320,0,0,32,224,
|
||||
Prokord 4AC 4USB {"NAME":"PSH-WT003-EU","GPIO":[0,320,0,32,226,227,0,0,225,224,260,0,0,0],"FLAG":0,"BASE":18}
|
||||
S2199EU {"NAME":"S2199EU","GPIO":[0,32,0,288,226,228,0,0,224,227,225,0,0,4704],"FLAG":0,"BASE":18}
|
||||
SA-P402A {"NAME":"SA-P402A","GPIO":[0,32,0,320,226,228,224,227,225,0,0,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Smart Tech 4AC 4USB {"NAME":"ST-T-SPS1","GPIO":[0,576,320,0,228,225,0,0,227,32,226,224,0,0],"FLAG":0,"BASE":18}
|
||||
STITCH 4 AC, 2 Always-On USB {"NAME":"MP Stitch 34082","GPIO":[320,0,0,0,227,32,0,0,225,226,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
Surge Protector 3AC 2USB {"NAME":"C158","GPIO":[260,0,0,0,261,230,0,0,224,0,225,226,259,0],"FLAG":0,"BASE":18}
|
||||
SWB1 {"NAME":"SWB1","GPIO":[288,0,0,0,0,227,0,0,224,32,225,226,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1468,7 +1526,7 @@ ZLD64-EU-W {"NAME":"ZLD64-EU-W","GPIO":[0,320,0,32,225,224,0,0
|
||||
|
||||
## RF Gateway
|
||||
```
|
||||
Sonoff RF Gateway 433 {"NAME":"Sonoff Bridge","GPIO":[32,3200,1,3232,1,1,0,0,1,320,1,0,0,0],"FLAG":0,"BASE":25}
|
||||
Sonoff RF Bridge 433 {"NAME":"Sonoff Bridge","GPIO":[32,3200,1,3232,1,1,0,0,1,320,1,0,0,0],"FLAG":0,"BASE":25}
|
||||
```
|
||||
|
||||
## RGB
|
||||
@ -1495,9 +1553,10 @@ Aoycocr JL81 5W 400lm {"NAME":"AoycocrJLB1","GPIO":[0,0,0,0,418,0,0,0,417
|
||||
Aoycocr Q10CWM BR30 9W 720lm {"NAME":"AoycocrBR30","GPIO":[0,0,0,0,0,418,0,0,417,0,416,419,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Smart 9.5W 806lm {"NAME":"Arlec RGBWW","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Arlec Smart 9.5W 806lm {"NAME":"Arlec RGBWW","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 15W 1400lm {"NAME":"Athom LB017W","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":1,"CMND":"SO92 1 | DimmerRange 24,100"}
|
||||
Athom 12W 1000lm {"NAME":"LB03-12W-E27-TAS","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO92 1 | DimmerRange 24,100"}
|
||||
Athom 15W 1400lm {"NAME":"LB01-15W-E27-TAS","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO92 1 | DimmerRange 24 100"}
|
||||
Athom 4.5W 700lm {"NAME":"Athom LB10-5W-TAS","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 7W 600lm {"NAME":"Athom LB017W","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 7W 600lm {"NAME":"LB01-7W-E27-TAS","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Aunics 7W 600lm {"NAME":"Aunics RGBW","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Avatar 8W 800lm {"NAME":"Avatar 8W RGBCW","GPIO":[1,1,1,1,416,419,1,1,417,420,418,1,1,1],"FLAG":0,"BASE":18}
|
||||
Avatar ALB201W 720lm {"NAME":"AVATAR ALB201W","GPIO":[0,0,0,0,0,418,0,0,417,0,416,419,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1509,7 +1568,7 @@ Bardi 9W 900lm {"NAME":"Bardi 9W RGBWW","GPIO":[0,0,0,0,417,416,0,
|
||||
BAZZ BR30 650lm {"NAME":"BAZZrgb","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Beghelli dom-E 14W 1400lm {"NAME":"Beghelli Smart Bulb","GPIO":[0,0,0,0,416,417,0,0,418,419,420,0,0,0],"FLAG":3,"BASE":18,"CMND":"SO37 13"}
|
||||
BlitzWolf w/ remote 850lm {"NAME":"BW-LT27","GPIO":[0,0,0,0,420,417,0,0,418,1088,419,416,0,0],"FLAG":0,"BASE":18}
|
||||
BNETA 8.5W 800lm {"NAME":"BNETA IO-WIFI60-E27P","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
BNETA 8.5W 800lm {"NAME":"BNETA IO-WIFI60-E27P","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":48}
|
||||
BNETA 8.5W 800lm {"NAME":"OM60/RGBW","GPIO":[0,0,0,0,2912,416,0,0,417,2976,2944,0,0,0],"FLAG":0,"BASE":18}
|
||||
Bomcosy 600lm {"NAME":"Generic","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Boxlood 9W 900lm {"NAME":"Boxlood 9w 900lm RGBCCT","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1517,6 +1576,7 @@ Calex 429004 A60 806lm {"NAME":"Calex E27 RGB ","GPIO":[0,0,0,0,416,419,0,
|
||||
Calex 429008 B35 5W 470lm {"NAME":"Calex E14 RGBW","GPIO":[0,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
|
||||
Calex 5W 350lm Reflector {"NAME":"Calex RGBW","GPIO":[0,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
|
||||
Candle 5W 450lm {"NAME":"Candela","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Cleverio 400lm 5.5W {"NAME":"Cleverio 51573","GPIO":[0,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
|
||||
Cleverio 51395 806lm {"NAME":"CleverioE27RGB","GPIO":[0,0,0,0,2944,2912,0,0,417,2976,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
CMARS 4W Reflector {"NAME":"RGBWW GU10","GPIO":[0,0,0,0,419,420,0,0,417,418,416,0,0,1],"FLAG":0,"BASE":18}
|
||||
Connect SmartHome 5W GU5.3 {"NAME":"CSH-GU53RGB5W","GPIO":[0,0,0,0,419,420,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1572,6 +1632,7 @@ Legelite 5W Candle {"NAME":"Legelite E12","GPIO":[0,0,0,0,416,419,0,0,
|
||||
Legelite A60 7W {"NAME":"Legelite A60 7","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Legelite A60 7W 600lm {"NAME":"Legelite E26","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lenovo 800lm {"NAME":"Lenovo SE-241EB","GPIO":[0,0,0,0,416,419,0,0,417,452,418,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lloyd's 5W 400Lm {"NAME":"LLOYDS LC-1271","GPIO":[160,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lohas ZN004 8W 680lm {"NAME":"Lohas B22 R63","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lohas ZN011 5W 420lm {"NAME":"LohasZN011","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lohas ZN014-2 5W 380lm {"NAME":"Lohas ZN014-2","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1829,11 +1890,14 @@ Zilotek A19 800lm {"NAME":"Zilotek RGBW","GPIO":[0,0,0,0,2912,416,0,0
|
||||
|
||||
## Relay Board
|
||||
```
|
||||
2 Channel Tuya {"NAME":"TY-DIY-S02","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,1 | TuyaMCU 12,2 | TuyaMCU 13,13 | TuyaMCU 1,101"}
|
||||
Anmbest 2 Channel Inching Self-locking Switch Module {"NAME":"Generic","GPIO":[32,1,1,1,1,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Aptinex IOT RelayNode 4 Channel {"NAME":"APTINEX","GPIO":[0,0,1,0,0,0,0,0,224,225,226,227,0,0],"FLAG":0,"BASE":18}
|
||||
Armtronix Quad {"NAME":"Armtronix Wifi Four Relay Board","GPIO":[1,0,0,0,224,1,0,0,225,226,227,0,1,0],"FLAG":0,"BASE":7}
|
||||
Athom 1Ch Inching/Self-locking {"NAME":"Athom R01","GPIO":[1,1,1,1,1,224,1,1,1,1,1,1,576,0],"FLAG":0,"BASE":18}
|
||||
Athom 8Ch Inching/Self-locking 10A {"NAME":"Athom R08","GPIO":[229,1,1,1,230,231,1,1,226,227,225,228,224,0],"FLAG":0,"BASE":18}
|
||||
Claudy 5V {"NAME":"CLAUDY","GPIO":[0,0,225,0,0,0,0,0,0,0,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
Devantech 8x16A {"NAME":"ESP32LR88","GPIO":[0,0,231,0,32,35,0,0,229,230,228,0,33,34,36,37,0,38,39,544,0,225,226,227,0,0,0,0,0,224,3232,3200,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
DoHome HomeKit DIY Switch {"NAME":"DoHome DIY","GPIO":[1,1,0,1,1,544,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Eachen ST-DC2 {"NAME":"Garage Control","GPIO":[162,0,0,0,226,225,33,0,224,288,163,227,0,4704],"FLAG":0,"BASE":18}
|
||||
Eachen ST-DC4 {"NAME":"Eachen_ST-DC4","GPIO":[160,1,1,1,226,225,1,1,224,544,1,227,1,0],"FLAG":0,"BASE":54}
|
||||
@ -1847,11 +1911,12 @@ ESP-12F 5V/7-28V 4 Channel 30A {"NAME":"ESP12F_Relay_30A_X4","GPIO":[1,1,1,1,32
|
||||
ESP-12F 5V/7-28V 8 Channel {"NAME":"ESP12F_Relay_X8","GPIO":[229,1,1,1,230,231,0,0,226,227,225,228,224,1],"FLAG":0,"BASE":18}
|
||||
ESP-12F 5V/7-30V/220V 4 Channel {"NAME":"ESP12F_Relay_X4","GPIO":[1,1,320,1,1,321,1,1,226,227,225,1,224,1],"FLAG":0,"BASE":18}
|
||||
ESP-12F 5V/8-80V 2 Channel {"NAME":"LC-Relay-ESP12-2R-D8","GPIO":[1,1,1,1,224,225,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
ESP32 4 Channel {"NAME":"RobotDyn ESP32R4","GPIO":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,224,225,1,227,226,32,33,34,35],"FLAG":0,"BASE":1}
|
||||
ESP32 4 Channel {"NAME":"RobotDyn ESP32R4","GPIO":[0,0,1,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,224,225,0,0,0,0,0,227,226,32,33,34,0,0,35],"FLAG":0,"BASE":2}
|
||||
eWeLink PSF-B04 5V 7-32V 4 Channel {"NAME":"eWeLink 4CH","GPIO":[160,0,0,0,226,225,161,162,224,288,163,227,0,0],"FLAG":0,"BASE":18}
|
||||
Geekcreit 5V DIY 4 Channel Jog Inching Self-Locking {"NAME":"Geekcreit-4ch","GPIO":[160,0,0,0,226,225,161,162,224,288,163,227,0,0],"FLAG":0,"BASE":18}
|
||||
Geekcreit Module 220V 10A {"NAME":"DIY ESP8266 Re","GPIO":[0,0,544,0,224,32,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
HW-622 ESP8266 {"NAME":"HW-622","GPIO":[0,0,544,0,224,32,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Kincony 8 Channel {"NAME":"KC868-A8","GPIO":[32,0,1120,0,640,608,0,0,0,1,1,1152,0,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1],"FLAG":0,"BASE":1,"CMND":"EthClockMode 3 | EthAddress 0 | EthType 0 | I2CDriver2 1"}
|
||||
Kincony IR+RF 4 Channel {"NAME":"KC868-A4","GPIO":[32,0,227,0,224,225,0,0,0,1312,1,226,0,0,480,1152,0,1120,1056,1088,0,1,1,1,0,0,0,0,4706,4707,4704,4705,1,0,0,1],"FLAG":0,"BASE":1}
|
||||
LC Technology 12V 4 Channel {"NAME":"LC Technology 4CH Relay","GPIO":[224,0,225,0,226,227,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
LC Technology 5V 2 Channel {"NAME":"LC-ESP01-2R-5V","GPIO":[0,3200,0,3232,0,0,0,0,224,225,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1865,18 +1930,13 @@ Mhcozy 5V {"NAME":"Portail","GPIO":[160,0,0,0,0,0,0,0,224,320
|
||||
Sinilink DC5V Module {"NAME":"Sinilink XY-WF5V","GPIO":[0,0,0,0,224,1,0,0,32,288,0,0,1,0],"FLAG":0,"BASE":18}
|
||||
Sinilink DC6-36V Module {"NAME":"Sinilink XY-WF5V","GPIO":[0,0,0,0,224,1,0,0,32,288,0,0,1,0],"FLAG":0,"BASE":18}
|
||||
Sinilink MOS {"NAME":"Sinilink MOS","GPIO":[0,0,576,0,224,1,0,0,32,288,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Sinilink Thermostat {"NAME":"XY-WFT1","GPIO":[0,0,544,0,480,224,0,0,320,1,32,0,0,4736],"FLAG":0,"BASE":18,"CMND":"BuzzerPwm 1"}
|
||||
Sonoff 1 Channel Inching/Self-Locking {"NAME":"1 Channel","GPIO":[32,0,0,0,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":12}
|
||||
Sonoff RE5V1C 5V Inching/Selflock {"NAME":"Sonoff RE5V1C","GPIO":[32,1,1,1,1,1,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Sonoff SV {"NAME":"Sonoff SV","GPIO":[32,1,0,1,1,1,0,0,224,320,1,0,0,4704],"FLAG":0,"BASE":3}
|
||||
Yunshan 7-30V 10A {"NAME":"Yunshan 10A","GPIO":[32,1,288,1,224,161,0,0,225,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## Relay Module
|
||||
```
|
||||
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}
|
||||
Shelly Plus 1 {"NAME":"Shelly Plus 1 ","GPIO":[0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
```
|
||||
|
||||
## Siren
|
||||
```
|
||||
Connex Smart Indoor {"NAME":"Connex Siren","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
@ -1900,7 +1960,7 @@ SmartBase E0260 {"NAME":"SmartBaseE0260","GPIO":[0,0,0,0,320,0,0,0,
|
||||
|
||||
## Switch
|
||||
```
|
||||
3 Way Smart Light {"NAME":"Nexete KS-602F 3-Way","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
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}
|
||||
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}
|
||||
@ -1908,12 +1968,16 @@ Aoycocr SW1 {"NAME":"Aoycocr SW1","GPIO":[576,1,321,1,1,1,1,1,3
|
||||
Athom 1 Gang {"NAME":"Athom SW011EU","GPIO":[576,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 1 Gang {"NAME":"Athom SW031US","GPIO":[576,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 1 Gang No Neutral {"NAME":"Athom SW111EU","GPIO":[576,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 1 Gang No Neutral Touch {"NAME":"Athom SW33-1US","GPIO":[576,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 2 Gang {"NAME":"Athom SW012EU","GPIO":[576,289,0,32,225,33,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 2 Gang {"NAME":"Athom SW032US","GPIO":[576,289,0,32,225,33,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 2 Gang No Neutral {"NAME":"Athom SW112EU","GPIO":[576,289,0,32,225,33,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 2 Gang No Neutral Touch {"NAME":"Athom SW33-2US","GPIO":[576,289,0,32,225,33,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 3 Gang Key {"NAME":"Athom SW01-TAS-3EU","GPIO":[576,290,1,33,225,34,0,0,32,224,289,226,288,0],"FLAG":0,"BASE":18}
|
||||
Athom 3 Gang No Neutral Touch {"NAME":"Athom SW33-3US","GPIO":[576,290,0,33,225,34,0,0,32,224,289,226,288,0],"FLAG":0,"BASE":18}
|
||||
Athom 3 Gang Touch {"NAME":"Athom SW03-TAS-3US","GPIO":[576,290,0,33,225,34,0,0,32,224,289,226,288,0],"FLAG":0,"BASE":18}
|
||||
Athom 3 Gang Touch {"NAME":"Athom SW11-TAS-3EU","GPIO":[576,290,1,33,225,34,0,0,32,224,289,226,288,0],"FLAG":0,"BASE":18}
|
||||
Athom 4 Gang No Neutral Touch {"NAME":"Athom SW33-4US","GPIO":[576,0,0,33,225,34,0,0,32,224,227,226,35,0],"FLAG":0,"BASE":18}
|
||||
Athom 4 Gang Touch {"NAME":"Athom SW03-TAS-4US","GPIO":[576,0,0,33,225,34,0,0,32,224,227,226,35,0],"FLAG":0,"BASE":18}
|
||||
Athom 4 Gang Touch {"NAME":"Athom SW11-TAS-4EU","GPIO":[576,0,0,33,225,34,0,0,32,224,227,226,35,0],"FLAG":0,"BASE":18}
|
||||
Athom US Key Switch 1 Gang {"NAME":"Athom SW13","GPIO":[576,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
|
||||
@ -1954,9 +2018,10 @@ Eachen CD303 3 Gang {"NAME":"ID Components","GPIO":[544,289,0,162,224,1
|
||||
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}
|
||||
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}
|
||||
Etekcity ESWL01 {"NAME":"EtekCityESWL01","GPIO":[0,1,0,1,288,289,0,0,0,224,96,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Etekcity ESWL03 3-way {"NAME":"Etekcity 3Way","GPIO":[0,0,0,0,226,256,0,0,192,225,161,0,0,0],"FLAG":0,"BASE":18}
|
||||
Etekcity {"NAME":"EtekCityESWL01","GPIO":[0,1,0,1,288,289,0,0,0,224,96,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Etekcity 3-way {"NAME":"Etekcity 3Way","GPIO":[0,0,0,0,226,256,0,0,192,225,161,0,0,0],"FLAG":0,"BASE":18}
|
||||
Eva Logik 3-Way {"NAME":"WF30 Switch","GPIO":[0,0,0,0,33,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
FrankEver 4 Gang {"NAME":"FrankEver Wifi Smart Switch","GPIO":[0,0,0,32,224,33,1,1,34,226,227,225,35,0],"FLAG":0,"BASE":18}
|
||||
Freecube {"NAME":"Freecube","GPIO":[288,0,289,0,0,0,0,0,290,32,0,224,0,0],"FLAG":0,"BASE":18}
|
||||
@ -1998,7 +2063,6 @@ Kuled K36 {"NAME":"KULED-B","GPIO":[160,1,1,1,1,1,224,288,256
|
||||
Kuled KS602S {"NAME":"KULED","GPIO":[32,1,1,1,1,1,0,0,224,320,1,1,1,0],"FLAG":0,"BASE":18}
|
||||
Kygne CD-301 {"NAME":"KYGNE Touch","GPIO":[0,0,0,0,288,289,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":10}
|
||||
Laghten SS02S {"NAME":"Laghten SS02S","GPIO":[0,0,0,0,288,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Lanbon L8 5 in 1 LCD Touch {"NAME":"Lanbon L8","GPIO":[0,0,0,0,0,992,0,0,224,0,225,0,0,0,1024,896,0,6624,6592,864,0,832,416,226,0,0,0,0,417,418,0,352,0,0,0,4736],"FLAG":0,"BASE":1}
|
||||
LCARE Modular 2 Gang {"NAME":"2SW1-In","GPIO":[32,1,1,1,0,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":29}
|
||||
LerLink 1 Gang No Neutral {"NAME":"LerLink X801-L","GPIO":[0,0,0,0,32,0,0,0,224,320,0,0,0,1],"FLAG":0,"BASE":18}
|
||||
Lerlink 2 Gang {"NAME":"Lerlink X802A","GPIO":[0,0,0,33,32,0,0,0,224,288,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -2007,7 +2071,7 @@ Lerlink 3 Gang {"NAME":"X803A","GPIO":[0,0,0,33,32,34,0,0,224,259,
|
||||
Lerlink 3 Gang {"NAME":"X803A","GPIO":[0,0,0,33,32,34,0,0,224,288,225,226,0,0],"FLAG":0,"BASE":18}
|
||||
Lerlink 3 Gang No Neutral {"NAME":"X803K-L 3 Gang","GPIO":[0,0,320,0,32,34,33,0,224,0,225,226,0,0],"FLAG":0,"BASE":18}
|
||||
Lightstory WT02S {"NAME":"WT02S","GPIO":[0,0,0,0,321,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":50}
|
||||
Linkind 2-Way Single Pole {"NAME":"Linkind WS240010008","GPIO":[0,0,0,0,0,224,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,576,321,0,0,0,0,0,33,32,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Linkind 2-Way {"NAME":"Linkind WS240010008","GPIO":[0,0,0,0,0,224,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,576,321,0,0,0,0,0,33,32,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Lonsonho SK3-01 {"NAME":"Tuya 1 Channel","GPIO":[0,0,0,0,0,32,0,0,0,0,0,224,288,0],"FLAG":0,"BASE":18}
|
||||
Lonsonho SK3-02 {"NAME":"Tuya 2 Channel","GPIO":[0,0,0,0,225,0,0,0,32,224,33,0,288,0],"FLAG":0,"BASE":18}
|
||||
Lonsonho SK3-03 {"NAME":"Tuya 3-ch v2","GPIO":[544,322,0,33,225,34,0,0,32,224,321,226,320,0],"FLAG":0,"BASE":18}
|
||||
@ -2043,6 +2107,7 @@ Moes BS-US-W Boiler {"NAME":"BS-US-W","GPIO":[290,0,0,32,224,0,0,0,0,0,
|
||||
Moes Light and Fan {"NAME":"Moes WF-FL01","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Moes RF433 2 Gang Switch {"NAME":"WS-EUB2-WR","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Moes RF433 3 Gang {"NAME":"WS-EUB3-WR","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
|
||||
Moes RF433 3 Gang Touch {"NAME":"WS-EU-RF","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,1 | TuyaMCU 12,2 | TuyaMCU 13,3"}
|
||||
Moes SS01S-1 {"NAME":"Moes Switch","GPIO":[1,1,1,1,320,0,0,0,224,32,1,1,1,0],"FLAG":0,"BASE":18}
|
||||
Moes WS-EU1-LB 1 Gang No Neutral {"NAME":"Moes WS-EU1-LB","GPIO":[0,0,0,0,0,32,0,0,0,0,0,224,544,0],"FLAG":0,"BASE":18}
|
||||
Moes WS-EU2-LW 2 Gang No Neutral {"NAME":"Tuya 2 Channel","GPIO":[0,0,0,0,225,0,0,0,32,224,33,0,544,0],"FLAG":0,"BASE":18}
|
||||
@ -2080,6 +2145,7 @@ Sesoo WIFI-EU-SK3-02 {"NAME":"Sesoo SK3-02","GPIO":[0,0,321,0,225,0,0,0,
|
||||
Sesoo WIFI-US-SK3-04 {"NAME":"Tuya 4 Channel","GPIO":[288,1,1,34,226,32,0,0,35,227,225,224,33,0],"FLAG":0,"BASE":18}
|
||||
Shawader 1Ch Touch Light {"NAME":"ShawaderTuya1C","GPIO":[0,0,0,0,0,32,0,0,0,0,0,224,288,0],"FLAG":0,"BASE":18}
|
||||
Shawader 2Ch Touch Light {"NAME":"ShawaderTuya2C","GPIO":[0,0,0,0,224,0,0,0,33,225,32,0,288,0],"FLAG":0,"BASE":18}
|
||||
Shawader 3Ch Touch Light {"NAME":"ShawaderTuya3C","GPIO":[0,3872,0,66,64,65,0,0,225,226,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
SK-A801-01-US 1 Gang {"NAME":"jsankou US Switch 1 Gang","GPIO":[544,0,0,0,0,0,0,0,32,256,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
SK-W803-01-US 3 Gang {"NAME":"jsankou US Switch 3 Gang","GPIO":[544,0,0,33,257,34,0,0,32,256,0,258,0,0],"FLAG":0,"BASE":18}
|
||||
Smartlife Opard CD302 {"NAME":"CD302","GPIO":[0,0,0,0,288,321,0,0,256,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -2106,6 +2172,7 @@ Sonoff TX T1 EU 1 Gang {"NAME":"Sonoff T1 TX 1CH","GPIO":[32,1,1,1,0,0,0,0
|
||||
Sonoff TX T1 EU 2 Gang {"NAME":"Sonoff T1 TX 2CH","GPIO":[32,1,1,1,0,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":29}
|
||||
Sonoff TX T2 EU 1 Gang {"NAME":"Sonoff T2 TX 1CH","GPIO":[32,1,1,1,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":28}
|
||||
Sonoff TX T2 EU 2 Gang {"NAME":"Sonoff T2 TX 2CH","GPIO":[32,1,1,1,0,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":29}
|
||||
Sonoff TX T2 UK 2 Gang {"NAME":"Sonoff T1 TX 2CH","GPIO":[32,1,1,1,0,225,33,0,224,448,0,0,0,0],"FLAG":0,"BASE":29}
|
||||
Sonoff TX T3 EU 1 Gang {"NAME":"Sonoff T3 TX 1CH","GPIO":[32,1,1,1,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":28}
|
||||
Sonoff TX T3 EU 2 Gang {"NAME":"Sonoff T3 TX 2CH","GPIO":[32,1,1,1,0,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":29}
|
||||
Sonoff TX T3 EU 3 Gang {"NAME":"TX T3EU3C","GPIO":[32,1,0,1,226,225,33,34,224,576,0,0,0,0],"FLAG":0,"BASE":30}
|
||||
@ -2120,7 +2187,7 @@ SSMS118-01A1 Scene Light Smart {"NAME":"RGB Switch","GPIO":[257,0,259,161,418,4
|
||||
Steren Apagador {"NAME":"SHOME-115","GPIO":[32,0,0,0,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Steren Apagador Doble {"NAME":"STEREN SHOME-116","GPIO":[0,0,288,0,0,32,0,0,224,225,0,0,33,0],"FLAG":0,"BASE":18}
|
||||
Steren Apagador Triple {"NAME":"STEREN SHOME-117","GPIO":[0,0,288,0,34,32,0,0,224,225,226,0,33,0],"FLAG":0,"BASE":18}
|
||||
STITCH {"NAME":"Tuya WF15S ","GPIO":[1,1,0,0,1,1,0,0,1,2304,1,2272,0,0],"FLAG":0,"BASE":54}
|
||||
STITCH {"NAME":"Tuya WF15S ","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
TCP Smart 1 Gang {"NAME":"TCP 1 Gang 1 Way","GPIO":[544,0,0,32,224,0,0,0,0,0,320,0,0,0],"FLAG":0,"BASE":18}
|
||||
Teckin 2 Gang {"NAME":"Teckin SR43","GPIO":[0,0,288,0,0,32,0,0,224,225,0,0,33,0],"FLAG":0,"BASE":18}
|
||||
Teckin SR-41 Single Pole {"NAME":"Teckin SR-41","GPIO":[32,0,0,0,0,0,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -2134,10 +2201,10 @@ TopGreener Scene Controller {"NAME":"TGWF15RM","GPIO":[0,2272,0,2304,0,0,0,0,0,
|
||||
TopGreener TGWF15S {"NAME":"TopGreener-Switch","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
|
||||
Touch 3 Gang {"NAME":"Switch 3-Gang","GPIO":[0,0,0,0,226,33,0,0,32,224,34,225,544,0],"FLAG":0,"BASE":18}
|
||||
Touch Light Switch 1 Gang {"NAME":"Smart Touch Light Switch ","GPIO":[0,0,0,0,0,32,1,1,0,0,0,224,320,0],"FLAG":0,"BASE":18}
|
||||
TreatLife {"NAME":"TL SS01S Swtch","GPIO":[0,0,0,0,288,576,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Treatlife 3-Way {"NAME":"Treatlife SS01 3-Way","GPIO":[0,0,0,0,224,576,0,0,225,33,160,0,0,0],"FLAG":0,"BASE":18}
|
||||
TreatLife 3-Way {"NAME":"Treatlife 3-Way","GPIO":[0,0,0,0,224,576,0,0,225,33,160,0,0,0],"FLAG":0,"BASE":18}
|
||||
Treatlife SS01 3-Way {"NAME":"Treatlife SS01 3-Way","GPIO":[0,0,0,0,224,576,0,0,225,33,160,0,0,0],"FLAG":0,"BASE":18}
|
||||
TreatLife SS01S {"NAME":"TL SS01S Swtch","GPIO":[0,0,0,0,288,576,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
TreatLife SS02S {"NAME":"Treatlife SS02","GPIO":[0,0,0,0,288,576,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
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 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}
|
||||
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}
|
||||
@ -2148,6 +2215,7 @@ Vaticas 1 {"NAME":"Vaticas","GPIO":[0,0,0,32,224,0,0,0,0,0,28
|
||||
VHome RF433 1 Gang {"NAME":"VH-TW-CL-01","GPIO":[0,0,0,0,0,32,0,0,0,0,0,224,544,1],"FLAG":0,"BASE":18}
|
||||
VHome RF433 2 Gang {"NAME":"VX-TW-CL-002","GPIO":[0,0,0,0,224,0,0,0,33,225,32,0,544,1],"FLAG":0,"BASE":18}
|
||||
vhome RF433 3 Gang {"NAME":"VH-TB-US-003","GPIO":[0,0,0,0,224,33,0,0,34,226,32,225,576,1],"FLAG":0,"BASE":18}
|
||||
Virage Labs VirageSwitch Light {"NAME":"VirageSwitch","GPIO":[32,0,0,0,0,0,0,0,224,288,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Wall Touch Switch 2 Gang {"NAME":"VOVOWAY 120-WIFI-RF 2GANG","GPIO":[0,0,289,0,225,0,0,0,32,224,33,0,288,0],"FLAG":0,"BASE":18}
|
||||
Welaik 2-Gang 1-Way "Not available"
|
||||
WiFi Smart Switch 2 Gang {"NAME":"Kingart N2","GPIO":[32,1,0,1,0,225,33,0,224,0,0,0,0,1],"FLAG":0,"BASE":18}
|
||||
@ -2178,7 +2246,7 @@ ZUCZUG 3 Gang {"NAME":"2ph105626a x3","GPIO":[0,288,0,32,34,33,0,
|
||||
```
|
||||
AGL Modulo Relay 01 Canal {"NAME":"AGL-Basic","GPIO":[0,1,0,0,224,32,0,0,0,0,320,0,0,0],"FLAG":0,"BASE":18}
|
||||
Albohes 2 Channel {"NAME":"Albohes SH-08","GPIO":[0,3200,33,3232,321,320,0,0,224,544,32,0,225,1],"FLAG":0,"BASE":18}
|
||||
Athom 10A {"NAME":"Athom CB0110A","GPIO":[0,0,0,0,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Athom 10A {"NAME":"CB01-TAS-1","GPIO":[0,0,0,32,576,0,0,0,0,224,160,0,0,1],"FLAG":0,"BASE":18}
|
||||
Athom 2Ch Inching/Self-locking {"NAME":"Athom R02","GPIO":[1,1,1,1,225,224,1,1,1,1,1,1,576,0],"FLAG":0,"BASE":18}
|
||||
Athom 3-Way Mini Relay {"NAME":"RS01-TAS-1","GPIO":[0,0,0,32,576,0,0,0,0,224,160,0,0,0],"FLAG":0,"BASE":18}
|
||||
Athom 4Ch Inching/Self-locking 10A {"NAME":"Athom R04","GPIO":[1,1,1,1,32,576,1,1,226,227,225,1,224,0],"FLAG":0,"BASE":18}
|
||||
@ -2202,6 +2270,7 @@ Ener-J Outdoor Switch {"NAME":"Ener-J Smart WiFi Outdoor Relay","GPIO":[3
|
||||
eWelink No Neutral {"NAME":"SA-018","GPIO":[0,0,0,0,160,0,0,0,224,288,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
EX Store 2 Kanal V5 {"NAME":"EXS Relay V5","GPIO":[1,1,1,1,1,1,0,0,224,225,258,288,259,0],"FLAG":0,"BASE":16}
|
||||
Geekcreit 2 Channel AC 85V-250V {"NAME":"Geekcreit 2ch","GPIO":[32,0,0,0,0,225,33,0,224,288,0,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Gosund SW3 {"NAME":"Gosund WP3","GPIO":[0,0,0,32,0,0,0,0,320,321,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
HomeMate 4 Node In-wall {"NAME":"HomeMate Wifi 4N ","GPIO":[1,1,1,160,224,163,1,1,161,225,226,227,162,1],"FLAG":0,"BASE":18}
|
||||
L-5A01 {"NAME":"L-5A01","GPIO":[32,1,0,1,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
LoraTap 10A {"NAME":"LoraTap RR400W","GPIO":[0,0,0,0,544,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
@ -2211,17 +2280,20 @@ Luani HVIO {"NAME":"Luani HVIO","GPIO":[0,1,1,1,224,225,0,0,16
|
||||
Milfra Smart {"NAME":"Milfra Smart Module TB41","GPIO":[576,0,0,225,2688,2656,0,0,2592,193,480,224,192,0],"FLAG":0,"BASE":18}
|
||||
Moes {"NAME":"Moes MS-104B","GPIO":[0,0,32,0,480,0,0,0,161,160,224,225,0,0],"FLAG":0,"BASE":18}
|
||||
Nova Digital Basic 1 MS101 {"NAME":"NovaDigBasic1","GPIO":[0,1,0,1,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
PPA Contatto Wi-Fi {"NAME":"PPA Contatto","GPIO":[0,0,32,0,224,162,0,0,288,225,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
PS-1604 16A {"NAME":"PS-1604 16A","GPIO":[32,1,1,1,1,0,0,0,224,320,1,0,0,0],"FLAG":0,"BASE":1}
|
||||
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}
|
||||
QS-WIFI-S05 {"NAME":"QS-WIFI-S05","GPIO":[32,1,1,1,1,0,0,0,192,224,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Qualitel Breaker {"NAME":"Qualitel Smart Switch","GPIO":[0,0,0,0,224,0,0,0,32,321,288,0,0,0],"FLAG":0,"BASE":18}
|
||||
Shelly 1 {"NAME":"Shelly 1","GPIO":[0,0,0,0,224,192,0,0,0,0,0,0,0,4736],"FLAG":0,"BASE":46}
|
||||
Shelly 1 {"NAME":"Shelly 1","GPIO":[1,1,0,1,224,192,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":46}
|
||||
Shelly 1L No Neutral {"NAME":"Shelly 1L","GPIO":[320,0,0,0,192,224,0,0,0,0,193,0,0,4736],"FLAG":0,"BASE":18}
|
||||
Shelly 1PM {"NAME":"Shelly 1PM","GPIO":[320,0,0,0,192,2720,0,0,0,0,0,224,0,4736],"FLAG":0,"BASE":18}
|
||||
Shelly 2 {"NAME":"Shelly 2","GPIO":[0,2752,0,2784,224,225,0,0,160,0,161,2816,0,0],"FLAG":0,"BASE":47}
|
||||
Shelly 2.5 {"NAME":"Shelly 2.5","GPIO":[320,0,32,0,224,193,0,0,640,192,608,225,3456,4736],"FLAG":0,"BASE":18}
|
||||
Shelly EM {"NAME":"Shelly EM","GPIO":[0,0,0,0,0,0,0,0,640,3456,608,224,0,1],"FLAG":0,"BASE":18}
|
||||
Shelly EM {"NAME":"Shelly EM","GPIO":[0,0,288,0,32,0,0,0,640,3456,608,224,0,1],"FLAG":0,"BASE":18}
|
||||
Shelly i3 Action and Scenes Activation Device {"NAME":"Shelly i3","GPIO":[0,0,0,0,0,320,0,0,193,194,192,0,0,4736],"FLAG":0,"BASE":18}
|
||||
Shelly Plus 1 {"NAME":"Shelly Plus 1 ","GPIO":[0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Shelly Plus 1PM {"NAME":"Shelly Plus 1PM","GPIO":[0,0,0,0,192,2720,0,0,0,0,0,0,0,0,2656,0,0,0,0,2624,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sinilink USB {"NAME":"XY-WFUSB","GPIO":[1,1,0,1,32,224,0,0,0,0,320,0,544,0],"FLAG":0,"BASE":18}
|
||||
Smart Home SS-8839-01 {"NAME":"SS-8839-01","GPIO":[0,1,0,1,224,0,0,0,32,321,0,320,0,0],"FLAG":0,"BASE":18}
|
||||
Sonoff 4CH (R2) {"NAME":"Sonoff 4CH","GPIO":[32,1,1,1,226,225,33,34,224,320,35,227,0,0],"FLAG":0,"BASE":7}
|
||||
@ -2237,7 +2309,7 @@ Sonoff Dual R3 {"NAME":"Sonoff Dual R3","GPIO":[32,0,0,0,0,0,0,0,0
|
||||
Sonoff Dual R3 Lite {"NAME":"Sonoff Dual R3 Lite","GPIO":[32,0,0,0,0,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sonoff Dual R3 v2 {"NAME":"Sonoff Dual R3 v2","GPIO":[32,0,0,0,0,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,3200,8128,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sonoff Mini {"NAME":"Sonoff Mini","GPIO":[32,0,0,0,160,0,0,0,224,320,0,0,1,0],"FLAG":0,"BASE":1}
|
||||
Sonoff Mini R2 {"NAME":"Sonoff MINIR2","GPIO":[32,0,0,0,160,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sonoff Mini R2 {"NAME":"Sonoff MINIR2","GPIO":[32,0,0,0,160,0,0,0,224,544,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sonoff Pow {"NAME":"Sonoff Pow","GPIO":[32,0,0,0,0,2592,0,0,224,2656,2688,288,0,0],"FLAG":0,"BASE":6}
|
||||
Sonoff Pow R2 {"NAME":"Sonoff Pow R2","GPIO":[32,3072,0,3104,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":43}
|
||||
Sonoff POW R3 25A 5500W {"NAME":"Sonoff POWR3","GPIO":[32,3072,0,3104,0,0,0,0,256,320,0,1,1,1],"FLAG":0,"BASE":43}
|
||||
@ -2252,6 +2324,7 @@ Switch Module 2x5A {"NAME":"QS-WIFI-S04-2C","GPIO":[1,1,32,1,480,0,0,0
|
||||
Tinxy Single Node 7A {"NAME":"Tnxy07A","GPIO":[32,0,0,0,160,224,0,0,288,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
WL-SW01_10 {"NAME":"WL-SW01_10","GPIO":[32,3232,0,3200,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Woox Integrational Switch {"NAME":"WOOXR4967","GPIO":[0,0,0,1,320,224,0,0,0,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Yeelight Dual Control {"NAME":"YLAI002","GPIO":[0,0,0,0,0,0,0,0,96,0,224,0,0,320,320,160,0,160,0,0,0,0,0,225,0,0,0,0,162,163,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"SO127 1"}
|
||||
Yuntong Smart {"NAME":"Yuntong Smart","GPIO":[0,0,0,0,224,0,0,0,96,320,0,576,0,0],"FLAG":0,"BASE":1}
|
||||
Zemismart ERC309 Kinetic {"NAME":"Kinetic Switch","GPIO":[1,1,1,1,1,1,0,0,1,2304,1,2272,1,0],"FLAG":0,"BASE":54}
|
||||
```
|
||||
@ -2267,6 +2340,7 @@ Shelly Add-on {"NAME":"Shelly 1 Temp ","GPIO":[1344,0,0,1312,224,
|
||||
## Thermostat
|
||||
```
|
||||
Floor Heating or Water/Gas Boiler {"NAME":"ME81H Thermostat","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
|
||||
Mysa V1 Electric Baseboard Heater {"NAME":"Mysa Thermostat","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,640,608,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
```
|
||||
|
||||
## Valve
|
||||
@ -2277,6 +2351,7 @@ Jinvoo SM-AW713 {"NAME":"Jinvoo Valve","GPIO":[0,0,0,0,0,288,0,0,22
|
||||
Jinvoo SM-PW713 {"NAME":"Jinvoo Valve","GPIO":[0,0,0,0,224,288,0,0,32,289,0,0,0,4704],"FLAG":0,"BASE":18}
|
||||
Moes Gas-Water {"NAME":"MoesHouse WV-B","GPIO":[0,0,0,0,0,0,0,0,32,224,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Owfeel EN71 {"NAME":"SmartValve","GPIO":[224,0,0,0,0,0,0,0,32,288,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Tuya Gas/Water {"NAME":"Valve FM101","GPIO":[320,0,0,0,224,0,0,0,0,0,32,0,225,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
## Wall Outlet
|
||||
@ -2290,10 +2365,13 @@ BSEED Smart Socket {"NAME":"BSEED Socket","GPIO":[0,0,0,0,544,288,0,0,
|
||||
CE Smart Home {"NAME":"CE Smart Wall","GPIO":[1,1,1,1,544,32,0,0,224,1,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
CE Smart Home LQ-2-W3 {"NAME":"LITESUN","GPIO":[0,0,0,0,544,32,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
ChilITec Pilota Casa IP44 {"NAME":"Outdoor IP44","GPIO":[0,0,0,0,0,224,0,0,0,288,32,0,0,0],"FLAG":0,"BASE":18}
|
||||
DETA Double GPO + USB {"NAME":"DETA 6920HA","GPIO":[0,0,0,3104,32,288,0,0,33,224,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Deta Double Power Point {"NAME":"DETA 2G GPO","GPIO":[0,0,0,0,544,0,0,0,65,224,225,0,64,0],"FLAG":0,"BASE":18}
|
||||
DETA Outdoor Double Powerpoint {"NAME":"DETA 6294HA","GPIO":[0,0,0,3104,32,288,0,0,33,224,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Deta Single Power Point {"NAME":"DETA 2G GPO USB","GPIO":[0,0,0,2720,64,576,0,0,65,224,225,0,0,0],"FLAG":0,"BASE":18}
|
||||
Ener-J 13A Twin Wall Sockets with USB {"NAME":"Ener-J 2-Gang ","GPIO":[32,0,0,0,0,224,33,0,225,320,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Gosund {"NAME":"Gosund WO1","GPIO":[320,0,576,0,2656,2720,0,0,2624,321,225,224,0,4704],"FLAG":0,"BASE":18}
|
||||
Hevolta Glasense {"NAME":"Hevolta Socket","GPIO":[0,0,0,0,288,289,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Kapok T16 {"NAME":"tiltech-t16","GPIO":[0,320,0,32,192,0,0,0,224,225,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Kesen KS-604 {"NAME":"KS-604","GPIO":[1,1,288,1,1,33,0,0,225,224,1,1,32,0],"FLAG":0,"BASE":18}
|
||||
Kesen KS-604S {"NAME":"KS-604S","GPIO":[1,1,258,1,1,33,0,0,225,224,1,1,32,4704],"FLAG":0,"BASE":18}
|
||||
@ -2302,18 +2380,21 @@ KS-621 {"NAME":"KS-621","GPIO":[32,0,0,0,2688,2656,0,0,259
|
||||
Makegood MG-AUWF01 {"NAME":"MG-AUWF01","GPIO":[320,161,544,323,2720,2656,0,0,2624,225,321,224,160,0],"FLAG":0,"BASE":18}
|
||||
Makegood MG-UKWSG01 {"NAME":"Aseer 2-Gang","GPIO":[321,160,544,323,2720,2656,0,0,2624,224,320,225,161,0],"FLAG":0,"BASE":18}
|
||||
Makegood MG-UKWSW/B {"NAME":"Aseer 1-Gang","GPIO":[320,0,544,321,2720,2656,0,0,2624,0,0,224,160,0],"FLAG":0,"BASE":18}
|
||||
Master Contacto WiFi de pared {"NAME":"Master_IOT-WLSOCKET","GPIO":[32,0,0,0,0,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Moes WWK Glass Panel {"NAME":"Smart Socket","GPIO":[0,0,0,0,288,289,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Oittm 120 {"NAME":"Oittm WS01","GPIO":[32,0,0,0,0,2592,0,0,224,2656,2688,288,0,0],"FLAG":0,"BASE":18}
|
||||
PS-1607 {"NAME":"PS-1607","GPIO":[32,0,0,0,0,225,33,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Smanergy KA10 {"NAME":"KA10","GPIO":[0,320,0,32,2720,2656,0,0,2624,289,224,0,0,0],"FLAG":0,"BASE":64}
|
||||
Sonoff IW100 {"NAME":"Sonoff IW100","GPIO":[32,3072,0,3104,0,0,0,0,224,544,0,0,0,0],"FLAG":0,"BASE":41}
|
||||
Sonoff S55 {"NAME":"Sonoff S55","GPIO":[32,1,0,1,1,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Steren Dual Plug and USB Charger {"NAME":"Steren_SHOME-118","GPIO":[0,576,0,32,33,288,0,0,224,225,289,0,0,0],"FLAG":0,"BASE":18}
|
||||
T16E Dual USB 10A {"NAME":"T16E 10A","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
|
||||
TCP Smart Dual {"NAME":"TCP TAUWIS2GUK","GPIO":[33,0,0,0,0,224,32,0,225,544,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Teckin SR40 {"NAME":"RF-SR40-US","GPIO":[576,0,0,32,320,33,0,0,225,224,321,226,0,0],"FLAG":0,"BASE":18}
|
||||
TopGreener Dual USB {"NAME":"TGWF215U2A","GPIO":[0,320,0,32,2720,2656,0,0,2624,225,224,321,0,0],"FLAG":0,"BASE":18}
|
||||
TopGreener TGWF15RM {"NAME":"TGWF15RM","GPIO":[0,320,0,32,2720,2656,0,0,2624,321,224,0,0,0],"FLAG":0,"BASE":55}
|
||||
Vigica VGSPK00815 {"NAME":"VIGICA outlet","GPIO":[32,1,1,1,1,225,33,1,224,1,1,1,1,4704],"FLAG":0,"BASE":18}
|
||||
Virage Labs ViragePlug {"NAME":"ViragePlug","GPIO":[544,0,0,32,320,33,0,0,225,224,320,226,0,0],"FLAG":0,"BASE":18}
|
||||
Woox Dual {"NAME":"Woox R4053","GPIO":[33,0,0,0,0,224,32,0,225,320,0,0,0,0],"FLAG":0,"BASE":18}
|
||||
Xenon 2AC 1USB {"NAME":"Xenon SM-PW801-U1","GPIO":[0,0,0,0,288,32,0,0,224,0,225,0,226,0],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
@ -50,6 +50,12 @@ extern "C"
|
||||
#include <driver/rmt.h>
|
||||
}
|
||||
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 3, 0)
|
||||
#define NEOPIXELBUS_RMT_INT_FLAGS (ESP_INTR_FLAG_LOWMED)
|
||||
#else
|
||||
#define NEOPIXELBUS_RMT_INT_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_LEVEL1)
|
||||
#endif
|
||||
|
||||
class NeoEsp32RmtSpeed
|
||||
{
|
||||
public:
|
||||
@ -554,7 +560,7 @@ public:
|
||||
config.clk_div = T_SPEED::RmtClockDivider;
|
||||
|
||||
ESP_ERROR_CHECK(rmt_config(&config));
|
||||
ESP_ERROR_CHECK(rmt_driver_install(_channel.RmtChannelNumber, 0, ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_LEVEL1));
|
||||
ESP_ERROR_CHECK(rmt_driver_install(_channel.RmtChannelNumber, 0, NEOPIXELBUS_RMT_INT_FLAGS));
|
||||
ESP_ERROR_CHECK(rmt_translator_init(_channel.RmtChannelNumber, T_SPEED::Translate));
|
||||
}
|
||||
|
||||
|
@ -76,6 +76,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
||||
uint8_t section = 0;
|
||||
dsp_ncmds = 0;
|
||||
lut_num = 0;
|
||||
lvgl_param.data = 0;
|
||||
lvgl_param.fluslines = 40;
|
||||
|
||||
for (uint32_t cnt = 0; cnt < 5; cnt++) {
|
||||
lut_cnt[cnt] = 0;
|
||||
lut_cmd[cnt] = 0xff;
|
||||
|
@ -43,10 +43,8 @@ uint32_t stack_thunk_light_refcnt = 0;
|
||||
//#define _stackSize (5600/4)
|
||||
#if defined(USE_MQTT_AWS_IOT) || defined(USE_MQTT_AWS_IOT_LIGHT) || defined(USE_MQTT_AZURE_IOT)
|
||||
#define _stackSize (5300/4) // using a light version of bearssl we can save 300 bytes
|
||||
#elif defined(USE_MQTT_TLS_FORCE_EC_CIPHER) || defined(USE_4K_RSA)
|
||||
#define _stackSize (4800/4) // no private key, we can reduce a little, max observed 4300
|
||||
#else
|
||||
#define _stackSize (3800/4) // using a light version of bearssl we can save 2k
|
||||
#define _stackSize (4800/4) // no private key, we can reduce a little, max observed 4300
|
||||
#endif
|
||||
#define _stackPaint 0xdeadbeef
|
||||
|
||||
|
@ -191,11 +191,7 @@ void WiFiClientSecure_light::_clear() {
|
||||
_last_error = 0;
|
||||
_recvapp_buf = nullptr;
|
||||
_recvapp_len = 0;
|
||||
#ifdef USE_MQTT_TLS_CA_CERT
|
||||
_insecure = false; // insecure (fingerprint) mode is only enabled if setPubKeyFingerprint() is called
|
||||
#else
|
||||
_insecure = true; // force insecure if CA validation is not enabled
|
||||
#endif
|
||||
_insecure = false; // set to true when calling setPubKeyFingerprint()
|
||||
_fingerprint_any = true; // by default accept all fingerprints
|
||||
_fingerprint1 = nullptr;
|
||||
_fingerprint2 = nullptr;
|
||||
@ -920,11 +916,7 @@ extern "C" {
|
||||
// We limit to a single cipher to reduce footprint
|
||||
// we reference it, don't put in PROGMEM
|
||||
static const uint16_t suites[] = {
|
||||
#ifdef USE_MQTT_TLS_FORCE_EC_CIPHER
|
||||
BR_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
||||
#else
|
||||
BR_TLS_RSA_WITH_AES_128_GCM_SHA256
|
||||
#endif
|
||||
};
|
||||
|
||||
// Default initializion for our SSL clients
|
||||
@ -947,10 +939,8 @@ extern "C" {
|
||||
br_ssl_engine_set_aes_ctr(&cc->eng, &br_aes_small_ctr_vtable);
|
||||
br_ssl_engine_set_ghash(&cc->eng, &br_ghash_ctmul32);
|
||||
|
||||
#ifdef USE_MQTT_TLS_FORCE_EC_CIPHER
|
||||
// we support only P256 EC curve for AWS IoT, no EC curve for Letsencrypt unless forced
|
||||
br_ssl_engine_set_ec(&cc->eng, &br_ec_p256_m15); // TODO
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -958,9 +948,8 @@ extern "C" {
|
||||
// Returns if the SSL handshake succeeded.
|
||||
bool WiFiClientSecure_light::_connectSSL(const char* hostName) {
|
||||
// Validation context, either full CA validation or checking only fingerprints
|
||||
#ifdef USE_MQTT_TLS_CA_CERT
|
||||
|
||||
br_x509_minimal_context *x509_minimal = nullptr;
|
||||
#endif
|
||||
br_x509_pubkeyfingerprint_context *x509_insecure = nullptr;
|
||||
|
||||
LOG_HEAP_SIZE("_connectSSL.start");
|
||||
@ -998,7 +987,6 @@ bool WiFiClientSecure_light::_connectSSL(const char* hostName) {
|
||||
br_x509_pubkeyfingerprint_init(x509_insecure, _fingerprint1, _fingerprint2, _recv_fingerprint, _fingerprint_any);
|
||||
br_ssl_engine_set_x509(_eng, &x509_insecure->vtable);
|
||||
|
||||
#ifdef USE_MQTT_TLS_CA_CERT
|
||||
if (!_insecure) {
|
||||
x509_minimal = (br_x509_minimal_context*) malloc(sizeof(br_x509_minimal_context));
|
||||
if (!x509_minimal) break;
|
||||
@ -1011,7 +999,6 @@ bool WiFiClientSecure_light::_connectSSL(const char* hostName) {
|
||||
if (cfg_time > now) { now = cfg_time; }
|
||||
br_x509_minimal_set_time(x509_minimal, now / 86400 + 719528, now % 86400);
|
||||
}
|
||||
#endif
|
||||
LOG_HEAP_SIZE("_connectSSL after DecoderContext allocation");
|
||||
|
||||
// ============================================================
|
||||
@ -1050,9 +1037,7 @@ bool WiFiClientSecure_light::_connectSSL(const char* hostName) {
|
||||
LOG_HEAP_SIZE("_connectSSL.end, freeing StackThunk");
|
||||
#endif // ESP8266
|
||||
|
||||
#ifdef USE_MQTT_TLS_CA_CERT
|
||||
free(x509_minimal);
|
||||
#endif
|
||||
free(x509_minimal); // safe to call if nullptr
|
||||
free(x509_insecure);
|
||||
LOG_HEAP_SIZE("_connectSSL after release of Priv Key");
|
||||
return ret;
|
||||
@ -1065,9 +1050,7 @@ bool WiFiClientSecure_light::_connectSSL(const char* hostName) {
|
||||
#ifdef ESP8266
|
||||
stack_thunk_light_del_ref();
|
||||
#endif
|
||||
#ifdef USE_MQTT_TLS_CA_CERT
|
||||
free(x509_minimal);
|
||||
#endif
|
||||
free(x509_minimal); // safe to call if nullptr
|
||||
free(x509_insecure);
|
||||
LOG_HEAP_SIZE("_connectSSL clean_on_error");
|
||||
return false;
|
||||
|
@ -10,6 +10,8 @@ SRCPATH = src default
|
||||
GENERATE = generate
|
||||
CONFIG = default/berry_conf.h
|
||||
COC = tools/coc/coc
|
||||
PY = python3
|
||||
PYCOC = tools/pycoc/main.py
|
||||
CONST_TAB = $(GENERATE)/be_const_strtab.h
|
||||
MAKE_COC = $(MAKE) -C tools/coc
|
||||
|
||||
@ -18,6 +20,7 @@ ifeq ($(OS), Windows_NT) # Windows
|
||||
LFLAGS += -Wl,--out-implib,berry.lib # export symbols lib for dll linked
|
||||
TARGET := $(TARGET).exe
|
||||
COC := $(COC).exe
|
||||
PY := $(PY).exe
|
||||
else
|
||||
CFLAGS += -DUSE_READLINE_LIB
|
||||
LIBS += -lreadline -ldl
|
||||
@ -92,7 +95,7 @@ uninstall:
|
||||
|
||||
prebuild: $(COC) $(GENERATE)
|
||||
$(MSG) [Prebuild] generate resources
|
||||
$(Q) $(COC) -o $(GENERATE) $(SRCPATH) -c $(CONFIG)
|
||||
$(Q) $(PY) $(PYCOC) -o $(GENERATE) $(SRCPATH) -c $(CONFIG)
|
||||
$(MSG) done
|
||||
|
||||
clean:
|
||||
|
@ -20,17 +20,17 @@ be_local_closure(Animate_rotate_init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("closure", 1548407746, 7),
|
||||
/* K2 */ be_nested_string("code", -114201356, 4),
|
||||
/* K3 */ be_nested_string("push", -2022703139, 4),
|
||||
/* K4 */ be_nested_string("animate", -409180496, 7),
|
||||
/* K5 */ be_nested_string("ins_ramp", 1068049360, 8),
|
||||
/* K6 */ be_nested_string("ins_goto", 1342843963, 8),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(closure),
|
||||
/* K2 */ be_nested_str(code),
|
||||
/* K3 */ be_nested_str(push),
|
||||
/* K4 */ be_nested_str(animate),
|
||||
/* K5 */ be_nested_str(ins_ramp),
|
||||
/* K6 */ be_nested_str(ins_goto),
|
||||
/* K7 */ be_const_int(0),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[25]) { /* code */
|
||||
0x60140003, // 0000 GETGBL R5 G3
|
||||
0x5C180000, // 0001 MOVE R6 R0
|
||||
@ -72,9 +72,9 @@ be_local_class(Animate_rotate,
|
||||
&be_class_Animate_engine,
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(Animate_rotate_init_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(Animate_rotate_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Animate_rotate", -787188142, 14))
|
||||
be_str_literal("Animate_rotate")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
@ -91,15 +91,15 @@ be_local_closure(Animate_from_to_init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("closure", 1548407746, 7),
|
||||
/* K2 */ be_nested_string("code", -114201356, 4),
|
||||
/* K3 */ be_nested_string("push", -2022703139, 4),
|
||||
/* K4 */ be_nested_string("animate", -409180496, 7),
|
||||
/* K5 */ be_nested_string("ins_ramp", 1068049360, 8),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(closure),
|
||||
/* K2 */ be_nested_str(code),
|
||||
/* K3 */ be_nested_str(push),
|
||||
/* K4 */ be_nested_str(animate),
|
||||
/* K5 */ be_nested_str(ins_ramp),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[16]) { /* code */
|
||||
0x60140003, // 0000 GETGBL R5 G3
|
||||
0x5C180000, // 0001 MOVE R6 R0
|
||||
@ -132,9 +132,9 @@ be_local_class(Animate_from_to,
|
||||
&be_class_Animate_engine,
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(Animate_from_to_init_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(Animate_from_to_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Animate_from_to", 1699049867, 15))
|
||||
be_str_literal("Animate_from_to")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
@ -151,18 +151,18 @@ be_local_closure(Animate_back_forth_init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("closure", 1548407746, 7),
|
||||
/* K2 */ be_nested_string("code", -114201356, 4),
|
||||
/* K3 */ be_nested_string("push", -2022703139, 4),
|
||||
/* K4 */ be_nested_string("animate", -409180496, 7),
|
||||
/* K5 */ be_nested_string("ins_ramp", 1068049360, 8),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(closure),
|
||||
/* K2 */ be_nested_str(code),
|
||||
/* K3 */ be_nested_str(push),
|
||||
/* K4 */ be_nested_str(animate),
|
||||
/* K5 */ be_nested_str(ins_ramp),
|
||||
/* K6 */ be_const_int(2),
|
||||
/* K7 */ be_nested_string("ins_goto", 1342843963, 8),
|
||||
/* K7 */ be_nested_str(ins_goto),
|
||||
/* K8 */ be_const_int(0),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[34]) { /* code */
|
||||
0x60140003, // 0000 GETGBL R5 G3
|
||||
0x5C180000, // 0001 MOVE R6 R0
|
||||
@ -213,9 +213,9 @@ be_local_class(Animate_back_forth,
|
||||
&be_class_Animate_engine,
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(Animate_back_forth_init_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(Animate_back_forth_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Animate_back_forth", 5319526, 18))
|
||||
be_str_literal("Animate_back_forth")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
@ -232,12 +232,12 @@ be_local_closure(Animate_ins_goto_init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("pc_rel", 991921176, 6),
|
||||
/* K1 */ be_nested_string("pc_abs", 920256495, 6),
|
||||
/* K2 */ be_nested_string("duration", 799079693, 8),
|
||||
/* K0 */ be_nested_str(pc_rel),
|
||||
/* K1 */ be_nested_str(pc_abs),
|
||||
/* K2 */ be_nested_str(duration),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x90020202, // 0001 SETMBR R0 K1 R2
|
||||
@ -257,12 +257,12 @@ be_local_class(Animate_ins_goto,
|
||||
NULL,
|
||||
be_nested_map(4,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("pc_rel", 991921176, 6, -1), be_const_var(0) },
|
||||
{ be_nested_key("duration", 799079693, 8, -1), be_const_var(2) },
|
||||
{ be_nested_key("pc_abs", 920256495, 6, -1), be_const_var(1) },
|
||||
{ be_nested_key("init", 380752755, 4, 2), be_const_closure(Animate_ins_goto_init_closure) },
|
||||
{ be_const_key(pc_rel, -1), be_const_var(0) },
|
||||
{ be_const_key(duration, -1), be_const_var(2) },
|
||||
{ be_const_key(pc_abs, -1), be_const_var(1) },
|
||||
{ be_const_key(init, 2), be_const_closure(Animate_ins_goto_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Animate_ins_goto", 1667367043, 16))
|
||||
be_str_literal("Animate_ins_goto")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
@ -279,12 +279,12 @@ be_local_closure(Animate_ins_ramp_init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("a", -468965076, 1),
|
||||
/* K1 */ be_nested_string("b", -418632219, 1),
|
||||
/* K2 */ be_nested_string("duration", 799079693, 8),
|
||||
/* K0 */ be_nested_str(a),
|
||||
/* K1 */ be_nested_str(b),
|
||||
/* K2 */ be_nested_str(duration),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x90020202, // 0001 SETMBR R0 K1 R2
|
||||
@ -304,12 +304,12 @@ be_local_class(Animate_ins_ramp,
|
||||
NULL,
|
||||
be_nested_map(4,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("a", -468965076, 1, -1), be_const_var(0) },
|
||||
{ be_nested_key("b", -418632219, 1, 2), be_const_var(1) },
|
||||
{ be_nested_key("duration", 799079693, 8, -1), be_const_var(2) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(Animate_ins_ramp_init_closure) },
|
||||
{ be_const_key(a, -1), be_const_var(0) },
|
||||
{ be_const_key(b, 2), be_const_var(1) },
|
||||
{ be_const_key(duration, -1), be_const_var(2) },
|
||||
{ be_const_key(init, -1), be_const_closure(Animate_ins_ramp_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Animate_ins_ramp", 785058280, 16))
|
||||
be_str_literal("Animate_ins_ramp")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
@ -326,15 +326,15 @@ be_local_closure(Animate_engine_run, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K1 */ be_nested_string("millis", 1214679063, 6),
|
||||
/* K2 */ be_nested_string("value", 1113510858, 5),
|
||||
/* K3 */ be_nested_string("ins_time", -1314721743, 8),
|
||||
/* K4 */ be_nested_string("running", 343848780, 7),
|
||||
/* K5 */ be_nested_string("add_driver", 1654458371, 10),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
/* K1 */ be_nested_str(millis),
|
||||
/* K2 */ be_nested_str(value),
|
||||
/* K3 */ be_nested_str(ins_time),
|
||||
/* K4 */ be_nested_str(running),
|
||||
/* K5 */ be_nested_str(add_driver),
|
||||
}),
|
||||
(be_nested_const_str("run", 718098122, 3)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_run,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[19]) { /* code */
|
||||
0x4C0C0000, // 0000 LDNIL R3
|
||||
0x1C0C0203, // 0001 EQ R3 R1 R3
|
||||
@ -375,14 +375,14 @@ be_local_closure(Animate_engine_init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("code", -114201356, 4),
|
||||
/* K1 */ be_nested_string("pc", 1313756516, 2),
|
||||
/* K0 */ be_nested_str(code),
|
||||
/* K1 */ be_nested_str(pc),
|
||||
/* K2 */ be_const_int(0),
|
||||
/* K3 */ be_nested_string("ins_time", -1314721743, 8),
|
||||
/* K4 */ be_nested_string("running", 343848780, 7),
|
||||
/* K3 */ be_nested_str(ins_time),
|
||||
/* K4 */ be_nested_str(running),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 8]) { /* code */
|
||||
0x60040012, // 0000 GETGBL R1 G18
|
||||
0x7C040000, // 0001 CALL R1 0
|
||||
@ -412,12 +412,12 @@ be_local_closure(Animate_engine_autorun, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("run", 718098122, 3),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("add_driver", 1654458371, 10),
|
||||
/* K0 */ be_nested_str(run),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(add_driver),
|
||||
}),
|
||||
(be_nested_const_str("autorun", 1447527407, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_autorun,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 9]) { /* code */
|
||||
0x8C0C0100, // 0000 GETMET R3 R0 K0
|
||||
0x5C140200, // 0001 MOVE R5 R1
|
||||
@ -448,12 +448,12 @@ be_local_closure(Animate_engine_stop, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("running", 343848780, 7),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("remove_driver", 1030243768, 13),
|
||||
/* K0 */ be_nested_str(running),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(remove_driver),
|
||||
}),
|
||||
(be_nested_const_str("stop", -883741979, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_stop,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0x50040000, // 0000 LDBOOL R1 0 0
|
||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||
@ -482,10 +482,10 @@ be_local_closure(Animate_engine_is_running, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("running", 343848780, 7),
|
||||
/* K0 */ be_nested_str(running),
|
||||
}),
|
||||
(be_nested_const_str("is_running", -2068120035, 10)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_is_running,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x80040200, // 0001 RET 1 R1
|
||||
@ -509,10 +509,10 @@ be_local_closure(Animate_engine_every_50ms, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("animate", -409180496, 7),
|
||||
/* K0 */ be_nested_str(animate),
|
||||
}),
|
||||
(be_nested_const_str("every_50ms", -1911083288, 10)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_every_50ms,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x7C040200, // 0001 CALL R1 1
|
||||
@ -537,31 +537,31 @@ be_local_closure(Animate_engine_animate, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[22]) { /* constants */
|
||||
/* K0 */ be_nested_string("running", 343848780, 7),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("millis", 1214679063, 6),
|
||||
/* K3 */ be_nested_string("ins_time", -1314721743, 8),
|
||||
/* K4 */ be_nested_string("pc", 1313756516, 2),
|
||||
/* K5 */ be_nested_string("code", -114201356, 4),
|
||||
/* K0 */ be_nested_str(running),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(millis),
|
||||
/* K3 */ be_nested_str(ins_time),
|
||||
/* K4 */ be_nested_str(pc),
|
||||
/* K5 */ be_nested_str(code),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_string("internal_error", -1775809127, 14),
|
||||
/* K8 */ be_nested_string("Animate pc is out of range", 1854929421, 26),
|
||||
/* K9 */ be_nested_string("animate", -409180496, 7),
|
||||
/* K10 */ be_nested_string("ins_ramp", 1068049360, 8),
|
||||
/* K11 */ be_nested_string("closure", 1548407746, 7),
|
||||
/* K12 */ be_nested_string("duration", 799079693, 8),
|
||||
/* K13 */ be_nested_string("value", 1113510858, 5),
|
||||
/* K14 */ be_nested_string("scale_uint", -1204156202, 10),
|
||||
/* K15 */ be_nested_string("a", -468965076, 1),
|
||||
/* K16 */ be_nested_string("b", -418632219, 1),
|
||||
/* K7 */ be_nested_str(internal_error),
|
||||
/* K8 */ be_nested_str(Animate_X20pc_X20is_X20out_X20of_X20range),
|
||||
/* K9 */ be_nested_str(animate),
|
||||
/* K10 */ be_nested_str(ins_ramp),
|
||||
/* K11 */ be_nested_str(closure),
|
||||
/* K12 */ be_nested_str(duration),
|
||||
/* K13 */ be_nested_str(value),
|
||||
/* K14 */ be_nested_str(scale_uint),
|
||||
/* K15 */ be_nested_str(a),
|
||||
/* K16 */ be_nested_str(b),
|
||||
/* K17 */ be_const_int(1),
|
||||
/* K18 */ be_nested_string("ins_goto", 1342843963, 8),
|
||||
/* K19 */ be_nested_string("pc_rel", 991921176, 6),
|
||||
/* K20 */ be_nested_string("pc_abs", 920256495, 6),
|
||||
/* K21 */ be_nested_string("unknown instruction", 1093911841, 19),
|
||||
/* K18 */ be_nested_str(ins_goto),
|
||||
/* K19 */ be_nested_str(pc_rel),
|
||||
/* K20 */ be_nested_str(pc_abs),
|
||||
/* K21 */ be_nested_str(unknown_X20instruction),
|
||||
}),
|
||||
(be_nested_const_str("animate", -409180496, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_animate,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[99]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0000, // 0001 JMPT R2 #0003
|
||||
@ -676,21 +676,21 @@ be_local_class(Animate_engine,
|
||||
NULL,
|
||||
be_nested_map(13,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("code", -114201356, 4, -1), be_const_var(0) },
|
||||
{ be_nested_key("run", 718098122, 3, 4), be_const_closure(Animate_engine_run_closure) },
|
||||
{ be_nested_key("running", 343848780, 7, 8), be_const_var(4) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(Animate_engine_init_closure) },
|
||||
{ be_nested_key("autorun", 1447527407, 7, -1), be_const_closure(Animate_engine_autorun_closure) },
|
||||
{ be_nested_key("value", 1113510858, 5, -1), be_const_var(5) },
|
||||
{ be_nested_key("stop", -883741979, 4, 3), be_const_closure(Animate_engine_stop_closure) },
|
||||
{ be_nested_key("pc", 1313756516, 2, -1), be_const_var(2) },
|
||||
{ be_nested_key("is_running", -2068120035, 10, 11), be_const_closure(Animate_engine_is_running_closure) },
|
||||
{ be_nested_key("every_50ms", -1911083288, 10, 10), be_const_closure(Animate_engine_every_50ms_closure) },
|
||||
{ be_nested_key("animate", -409180496, 7, -1), be_const_closure(Animate_engine_animate_closure) },
|
||||
{ be_nested_key("closure", 1548407746, 7, -1), be_const_var(1) },
|
||||
{ be_nested_key("ins_time", -1314721743, 8, 9), be_const_var(3) },
|
||||
{ be_const_key(code, -1), be_const_var(0) },
|
||||
{ be_const_key(run, 4), be_const_closure(Animate_engine_run_closure) },
|
||||
{ be_const_key(running, 8), be_const_var(4) },
|
||||
{ be_const_key(init, -1), be_const_closure(Animate_engine_init_closure) },
|
||||
{ be_const_key(autorun, -1), be_const_closure(Animate_engine_autorun_closure) },
|
||||
{ be_const_key(value, -1), be_const_var(5) },
|
||||
{ be_const_key(stop, 3), be_const_closure(Animate_engine_stop_closure) },
|
||||
{ be_const_key(pc, -1), be_const_var(2) },
|
||||
{ be_const_key(is_running, 11), be_const_closure(Animate_engine_is_running_closure) },
|
||||
{ be_const_key(every_50ms, 10), be_const_closure(Animate_engine_every_50ms_closure) },
|
||||
{ be_const_key(animate, -1), be_const_closure(Animate_engine_animate_closure) },
|
||||
{ be_const_key(closure, -1), be_const_var(1) },
|
||||
{ be_const_key(ins_time, 9), be_const_var(3) },
|
||||
})),
|
||||
(be_nested_const_str("Animate_engine", 1498417667, 14))
|
||||
be_str_literal("Animate_engine")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
@ -700,12 +700,12 @@ be_local_module(animate,
|
||||
"animate",
|
||||
be_nested_map(6,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("rotate", -1510671094, 6, 2), be_const_class(be_class_Animate_rotate) },
|
||||
{ be_nested_key("from_to", 21625507, 7, 3), be_const_class(be_class_Animate_from_to) },
|
||||
{ be_nested_key("back_forth", -1629925234, 10, -1), be_const_class(be_class_Animate_back_forth) },
|
||||
{ be_nested_key("ins_goto", 1342843963, 8, -1), be_const_class(be_class_Animate_ins_goto) },
|
||||
{ be_nested_key("ins_ramp", 1068049360, 8, -1), be_const_class(be_class_Animate_ins_ramp) },
|
||||
{ be_nested_key("engine", -301606853, 6, -1), be_const_class(be_class_Animate_engine) },
|
||||
{ be_const_key(rotate, 2), be_const_class(be_class_Animate_rotate) },
|
||||
{ be_const_key(from_to, 3), be_const_class(be_class_Animate_from_to) },
|
||||
{ be_const_key(back_forth, -1), be_const_class(be_class_Animate_back_forth) },
|
||||
{ be_const_key(ins_goto, -1), be_const_class(be_class_Animate_ins_goto) },
|
||||
{ be_const_key(ins_ramp, -1), be_const_class(be_class_Animate_ins_ramp) },
|
||||
{ be_const_key(engine, -1), be_const_class(be_class_Animate_engine) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(animate);
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: page_autoconf_ctl
|
||||
********************************************************************/
|
||||
be_local_closure(page_autoconf_ctl, /* name */
|
||||
be_local_closure(Autoconf_page_autoconf_ctl, /* name */
|
||||
be_nested_proto(
|
||||
13, /* nstack */
|
||||
1, /* argc */
|
||||
@ -21,50 +21,50 @@ be_local_closure(page_autoconf_ctl, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[41]) { /* constants */
|
||||
/* K0 */ be_nested_string("webserver", 1572454038, 9),
|
||||
/* K1 */ be_nested_string("string", 398550328, 6),
|
||||
/* K2 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K3 */ be_nested_string("check_privileged_access", -602033328, 23),
|
||||
/* K4 */ be_nested_string("has_arg", 424878688, 7),
|
||||
/* K5 */ be_nested_string("reapply", -516027964, 7),
|
||||
/* K6 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K7 */ be_nested_string("log", 1062293841, 3),
|
||||
/* K8 */ be_nested_string("CFG: removing first time marker", 2125556683, 31),
|
||||
/* K0 */ be_nested_str(webserver),
|
||||
/* K1 */ be_nested_str(string),
|
||||
/* K2 */ be_nested_str(path),
|
||||
/* K3 */ be_nested_str(check_privileged_access),
|
||||
/* K4 */ be_nested_str(has_arg),
|
||||
/* K5 */ be_nested_str(reapply),
|
||||
/* K6 */ be_nested_str(tasmota),
|
||||
/* K7 */ be_nested_str(log),
|
||||
/* K8 */ be_nested_str(CFG_X3A_X20removing_X20first_X20time_X20marker),
|
||||
/* K9 */ be_const_int(2),
|
||||
/* K10 */ be_nested_string("clear_first_time", 632769909, 16),
|
||||
/* K11 */ be_nested_string("redirect", 389758641, 8),
|
||||
/* K12 */ be_nested_string("/?rst=", 580074707, 6),
|
||||
/* K13 */ be_nested_string("zip", -1417514060, 3),
|
||||
/* K14 */ be_nested_string("CFG: removing autoconf files", -280262326, 28),
|
||||
/* K15 */ be_nested_string("delete_all_configs", -1912899718, 18),
|
||||
/* K16 */ be_nested_string("arg", 1047474471, 3),
|
||||
/* K17 */ be_nested_string("reset", 1695364032, 5),
|
||||
/* K18 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K19 */ be_nested_string("https://raw.githubusercontent.com/tasmota/autoconf/main/%s/%s.autoconf", -1551440987, 70),
|
||||
/* K20 */ be_nested_string("arch", -1342162999, 4),
|
||||
/* K21 */ be_nested_string("CFG: downloading '%s'", 589480701, 21),
|
||||
/* K22 */ be_nested_string("%s.autoconf", -734583772, 11),
|
||||
/* K23 */ be_nested_string("webclient", -218578150, 9),
|
||||
/* K24 */ be_nested_string("begin", 1748273790, 5),
|
||||
/* K25 */ be_nested_string("GET", -1763262857, 3),
|
||||
/* K26 */ be_nested_string("return code=%i", 2127454401, 14),
|
||||
/* K27 */ be_nested_string("connection_error", 1358926260, 16),
|
||||
/* K28 */ be_nested_string("write_file", -1117308417, 10),
|
||||
/* K29 */ be_nested_string("close", 667630371, 5),
|
||||
/* K30 */ be_nested_string("value_error", 773297791, 11),
|
||||
/* K31 */ be_nested_string("Unknown command", 1830905432, 15),
|
||||
/* K32 */ be_nested_string("CFG: Exception> '%s' - %s", 1228874553, 25),
|
||||
/* K33 */ be_nested_string("content_start", -1357458227, 13),
|
||||
/* K34 */ be_nested_string("Parameter error", -454925258, 15),
|
||||
/* K35 */ be_nested_string("content_send_style", 1087907647, 18),
|
||||
/* K36 */ be_nested_string("content_send", 1673733649, 12),
|
||||
/* K37 */ be_nested_string("<p style='width:340px;'><b>Exception:</b><br>'%s'<br>%s</p>", -42402214, 59),
|
||||
/* K38 */ be_nested_string("content_button", 1956476087, 14),
|
||||
/* K39 */ be_nested_string("BUTTON_CONFIGURATION", 70820856, 20),
|
||||
/* K40 */ be_nested_string("content_stop", 658554751, 12),
|
||||
/* K10 */ be_nested_str(clear_first_time),
|
||||
/* K11 */ be_nested_str(redirect),
|
||||
/* K12 */ be_nested_str(_X2F_X3Frst_X3D),
|
||||
/* K13 */ be_nested_str(zip),
|
||||
/* K14 */ be_nested_str(CFG_X3A_X20removing_X20autoconf_X20files),
|
||||
/* K15 */ be_nested_str(delete_all_configs),
|
||||
/* K16 */ be_nested_str(arg),
|
||||
/* K17 */ be_nested_str(reset),
|
||||
/* K18 */ be_nested_str(format),
|
||||
/* K19 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_X2F_X25s_X2Eautoconf),
|
||||
/* K20 */ be_nested_str(arch),
|
||||
/* K21 */ be_nested_str(CFG_X3A_X20downloading_X20_X27_X25s_X27),
|
||||
/* K22 */ be_nested_str(_X25s_X2Eautoconf),
|
||||
/* K23 */ be_nested_str(webclient),
|
||||
/* K24 */ be_nested_str(begin),
|
||||
/* K25 */ be_nested_str(GET),
|
||||
/* K26 */ be_nested_str(return_X20code_X3D_X25i),
|
||||
/* K27 */ be_nested_str(connection_error),
|
||||
/* K28 */ be_nested_str(write_file),
|
||||
/* K29 */ be_nested_str(close),
|
||||
/* K30 */ be_nested_str(value_error),
|
||||
/* K31 */ be_nested_str(Unknown_X20command),
|
||||
/* K32 */ be_nested_str(CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
|
||||
/* K33 */ be_nested_str(content_start),
|
||||
/* K34 */ be_nested_str(Parameter_X20error),
|
||||
/* K35 */ be_nested_str(content_send_style),
|
||||
/* K36 */ be_nested_str(content_send),
|
||||
/* K37 */ be_nested_str(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E),
|
||||
/* K38 */ be_nested_str(content_button),
|
||||
/* K39 */ be_nested_str(BUTTON_CONFIGURATION),
|
||||
/* K40 */ be_nested_str(content_stop),
|
||||
}),
|
||||
(be_nested_const_str("page_autoconf_ctl", -1841585800, 17)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_page_autoconf_ctl,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[117]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
@ -192,7 +192,7 @@ be_local_closure(page_autoconf_ctl, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: autoexec
|
||||
********************************************************************/
|
||||
be_local_closure(autoexec, /* name */
|
||||
be_local_closure(Autoconf_autoexec, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
1, /* argc */
|
||||
@ -203,41 +203,41 @@ be_local_closure(autoexec, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[32]) { /* constants */
|
||||
/* K0 */ be_nested_string("_archive", -290407892, 8),
|
||||
/* K1 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K2 */ be_nested_string("#init.bat", -997372219, 9),
|
||||
/* K3 */ be_nested_string("is_first_time", 275242384, 13),
|
||||
/* K4 */ be_nested_string("exists", 1002329533, 6),
|
||||
/* K5 */ be_nested_string("set_first_time", -1183719746, 14),
|
||||
/* K6 */ be_nested_string("run_bat", -1758063998, 7),
|
||||
/* K7 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K8 */ be_nested_string("log", 1062293841, 3),
|
||||
/* K9 */ be_nested_string("CFG: 'init.bat' done, restarting", 1569670677, 32),
|
||||
/* K0 */ be_nested_str(_archive),
|
||||
/* K1 */ be_nested_str(path),
|
||||
/* K2 */ be_nested_str(_X23init_X2Ebat),
|
||||
/* K3 */ be_nested_str(is_first_time),
|
||||
/* K4 */ be_nested_str(exists),
|
||||
/* K5 */ be_nested_str(set_first_time),
|
||||
/* K6 */ be_nested_str(run_bat),
|
||||
/* K7 */ be_nested_str(tasmota),
|
||||
/* K8 */ be_nested_str(log),
|
||||
/* K9 */ be_nested_str(CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting),
|
||||
/* K10 */ be_const_int(2),
|
||||
/* K11 */ be_nested_string("cmd", -158181397, 3),
|
||||
/* K12 */ be_nested_string("Restart 1", -790511441, 9),
|
||||
/* K13 */ be_nested_string("#display.ini", 182218220, 12),
|
||||
/* K14 */ be_nested_string("gpio", -1656812038, 4),
|
||||
/* K15 */ be_nested_string("pin_used", -261112684, 8),
|
||||
/* K16 */ be_nested_string("OPTION_A", 1133299440, 8),
|
||||
/* K17 */ be_nested_string("display.ini", -1648793295, 11),
|
||||
/* K18 */ be_nested_string("CFG: skipping 'display.ini' because already present in file-system", -329418032, 66),
|
||||
/* K19 */ be_nested_string("display", 1164572437, 7),
|
||||
/* K20 */ be_nested_string("r", -150190315, 1),
|
||||
/* K21 */ be_nested_string("read", -824204347, 4),
|
||||
/* K22 */ be_nested_string("close", 667630371, 5),
|
||||
/* K23 */ be_nested_string("start", 1697318111, 5),
|
||||
/* K24 */ be_nested_string("#autoexec.bat", -912076799, 13),
|
||||
/* K25 */ be_nested_string("CFG: running ", -1816632762, 13),
|
||||
/* K11 */ be_nested_str(cmd),
|
||||
/* K12 */ be_nested_str(Restart_X201),
|
||||
/* K13 */ be_nested_str(_X23display_X2Eini),
|
||||
/* K14 */ be_nested_str(gpio),
|
||||
/* K15 */ be_nested_str(pin_used),
|
||||
/* K16 */ be_nested_str(OPTION_A),
|
||||
/* K17 */ be_nested_str(display_X2Eini),
|
||||
/* K18 */ be_nested_str(CFG_X3A_X20skipping_X20_X27display_X2Eini_X27_X20because_X20already_X20present_X20in_X20file_X2Dsystem),
|
||||
/* K19 */ be_nested_str(display),
|
||||
/* K20 */ be_nested_str(r),
|
||||
/* K21 */ be_nested_str(read),
|
||||
/* K22 */ be_nested_str(close),
|
||||
/* K23 */ be_nested_str(start),
|
||||
/* K24 */ be_nested_str(_X23autoexec_X2Ebat),
|
||||
/* K25 */ be_nested_str(CFG_X3A_X20running_X20),
|
||||
/* K26 */ be_const_int(3),
|
||||
/* K27 */ be_nested_string("CFG: ran ", -715396824, 10),
|
||||
/* K28 */ be_nested_string("#autoexec.be", 1181757091, 12),
|
||||
/* K29 */ be_nested_string("CFG: loading ", -284605793, 13),
|
||||
/* K30 */ be_nested_string("load", -435725847, 4),
|
||||
/* K31 */ be_nested_string("CFG: loaded ", -584693758, 13),
|
||||
/* K27 */ be_nested_str(CFG_X3A_X20ran_X20_X20),
|
||||
/* K28 */ be_nested_str(_X23autoexec_X2Ebe),
|
||||
/* K29 */ be_nested_str(CFG_X3A_X20loading_X20),
|
||||
/* K30 */ be_nested_str(load),
|
||||
/* K31 */ be_nested_str(CFG_X3A_X20loaded_X20_X20),
|
||||
}),
|
||||
(be_nested_const_str("autoexec", -618105405, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_autoexec,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[107]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x4C080000, // 0001 LDNIL R2
|
||||
@ -355,7 +355,7 @@ be_local_closure(autoexec, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: run_bat
|
||||
********************************************************************/
|
||||
be_local_closure(run_bat, /* name */
|
||||
be_local_closure(Autoconf_run_bat, /* name */
|
||||
be_nested_proto(
|
||||
13, /* nstack */
|
||||
2, /* argc */
|
||||
@ -366,19 +366,19 @@ be_local_closure(run_bat, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_string("string", 398550328, 6),
|
||||
/* K1 */ be_nested_string("r", -150190315, 1),
|
||||
/* K2 */ be_nested_string("readline", 1212709927, 8),
|
||||
/* K0 */ be_nested_str(string),
|
||||
/* K1 */ be_nested_str(r),
|
||||
/* K2 */ be_nested_str(readline),
|
||||
/* K3 */ be_const_int(0),
|
||||
/* K4 */ be_nested_string("\n", 252472541, 1),
|
||||
/* K5 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K6 */ be_nested_string("cmd", -158181397, 3),
|
||||
/* K7 */ be_nested_string("close", 667630371, 5),
|
||||
/* K8 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K9 */ be_nested_string("CFG: could not run %s (%s - %s)", 1428829580, 31),
|
||||
/* K4 */ be_nested_str(_X0A),
|
||||
/* K5 */ be_nested_str(tasmota),
|
||||
/* K6 */ be_nested_str(cmd),
|
||||
/* K7 */ be_nested_str(close),
|
||||
/* K8 */ be_nested_str(format),
|
||||
/* K9 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29),
|
||||
}),
|
||||
(be_nested_const_str("run_bat", -1758063998, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_run_bat,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[54]) { /* code */
|
||||
0xA40A0000, // 0000 IMPORT R2 K0
|
||||
0x4C0C0000, // 0001 LDNIL R3
|
||||
@ -443,7 +443,7 @@ be_local_closure(run_bat, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: page_autoconf_mgr
|
||||
********************************************************************/
|
||||
be_local_closure(page_autoconf_mgr, /* name */
|
||||
be_local_closure(Autoconf_page_autoconf_mgr, /* name */
|
||||
be_nested_proto(
|
||||
19, /* nstack */
|
||||
1, /* argc */
|
||||
@ -454,48 +454,48 @@ be_local_closure(page_autoconf_mgr, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[39]) { /* constants */
|
||||
/* K0 */ be_nested_string("webserver", 1572454038, 9),
|
||||
/* K1 */ be_nested_string("string", 398550328, 6),
|
||||
/* K2 */ be_nested_string("check_privileged_access", -602033328, 23),
|
||||
/* K3 */ be_nested_string("content_start", -1357458227, 13),
|
||||
/* K4 */ be_nested_string("Auto-configuration", 1665006109, 18),
|
||||
/* K5 */ be_nested_string("content_send_style", 1087907647, 18),
|
||||
/* K6 */ be_nested_string("content_send", 1673733649, 12),
|
||||
/* K7 */ be_nested_string("<p><small> (This feature requires an internet connection)</small></p>", -1575700810, 74),
|
||||
/* K8 */ be_nested_string("get_current_module_path", -1088293888, 23),
|
||||
/* K9 */ be_nested_string("tr", 1195724803, 2),
|
||||
/* K10 */ be_nested_string("get_current_module_name", -1915696556, 23),
|
||||
/* K11 */ be_nested_string("_", -636741266, 1),
|
||||
/* K12 */ be_nested_string(" ", 621580159, 1),
|
||||
/* K13 */ be_nested_string("_error", 1132109656, 6),
|
||||
/* K14 */ be_nested_string("<Error: apply new or remove>", -1439459347, 34),
|
||||
/* K15 */ be_nested_string("<None>", -1692801798, 12),
|
||||
/* K16 */ be_nested_string("<fieldset><style>.bdis{background:#888;}.bdis:hover{background:#888;}</style>", 842307168, 77),
|
||||
/* K17 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K18 */ be_nested_string("<legend><b title='Autoconfiguration'> Current auto-configuration</b></legend>", -82466516, 82),
|
||||
/* K19 */ be_nested_string("<p>Current configuration: </p><p><b>%s</b></p>", -179311535, 46),
|
||||
/* K20 */ be_nested_string("<p><form id=reapply style='display: block;' action='/ac' method='post' ", 546993478, 71),
|
||||
/* K21 */ be_nested_string("onsubmit='return confirm(\"This will cause a restart.\");'>", 232646018, 57),
|
||||
/* K22 */ be_nested_string("<button name='reapply' class='button bgrn'>Re-apply current configuration</button>", -1147033080, 82),
|
||||
/* K23 */ be_nested_string("</form></p>", -748395557, 11),
|
||||
/* K24 */ be_nested_string("<p></p></fieldset><p></p>", 2052843416, 25),
|
||||
/* K25 */ be_nested_string("<legend><b title='New autoconf'> Select new auto-configuration</b></legend>", 1926223891, 80),
|
||||
/* K26 */ be_nested_string("<p><form id=zip style='display: block;' action='/ac' method='post' ", -261345130, 67),
|
||||
/* K27 */ be_nested_string("onsubmit='return confirm(\"This will change the current configuration and cause a restart.\");'>", -502554737, 94),
|
||||
/* K28 */ be_nested_string("<label>Choose a device configuration:</label><br>", 1336654704, 49),
|
||||
/* K29 */ be_nested_string("<select name='zip'>", -47042760, 19),
|
||||
/* K30 */ be_nested_string("load_templates", -781097163, 14),
|
||||
/* K31 */ be_nested_string("<option value='reset'><Remove autoconf></option>", -300347541, 54),
|
||||
/* K32 */ be_nested_string("<option value='%s'>%s</option>", 510303524, 30),
|
||||
/* K33 */ be_nested_string("stop_iteration", -121173395, 14),
|
||||
/* K34 */ be_nested_string("</select><p></p>", 1863865923, 16),
|
||||
/* K35 */ be_nested_string("<button name='zipapply' class='button bgrn'>Apply configuration</button>", 1205771629, 72),
|
||||
/* K36 */ be_nested_string("content_button", 1956476087, 14),
|
||||
/* K37 */ be_nested_string("BUTTON_CONFIGURATION", 70820856, 20),
|
||||
/* K38 */ be_nested_string("content_stop", 658554751, 12),
|
||||
/* K0 */ be_nested_str(webserver),
|
||||
/* K1 */ be_nested_str(string),
|
||||
/* K2 */ be_nested_str(check_privileged_access),
|
||||
/* K3 */ be_nested_str(content_start),
|
||||
/* K4 */ be_nested_str(Auto_X2Dconfiguration),
|
||||
/* K5 */ be_nested_str(content_send_style),
|
||||
/* K6 */ be_nested_str(content_send),
|
||||
/* K7 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E),
|
||||
/* K8 */ be_nested_str(get_current_module_path),
|
||||
/* K9 */ be_nested_str(tr),
|
||||
/* K10 */ be_nested_str(get_current_module_name),
|
||||
/* K11 */ be_nested_str(_),
|
||||
/* K12 */ be_nested_str(_X20),
|
||||
/* K13 */ be_nested_str(_error),
|
||||
/* K14 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B),
|
||||
/* K15 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B),
|
||||
/* K16 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E),
|
||||
/* K17 */ be_nested_str(format),
|
||||
/* K18 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E),
|
||||
/* K19 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
|
||||
/* K20 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20),
|
||||
/* K21 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E),
|
||||
/* K22 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E),
|
||||
/* K23 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
|
||||
/* K24 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
|
||||
/* K25 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E),
|
||||
/* K26 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20),
|
||||
/* K27 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E),
|
||||
/* K28 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E),
|
||||
/* K29 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E),
|
||||
/* K30 */ be_nested_str(load_templates),
|
||||
/* K31 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E),
|
||||
/* K32 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E),
|
||||
/* K33 */ be_nested_str(stop_iteration),
|
||||
/* K34 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
|
||||
/* K35 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E),
|
||||
/* K36 */ be_nested_str(content_button),
|
||||
/* K37 */ be_nested_str(BUTTON_CONFIGURATION),
|
||||
/* K38 */ be_nested_str(content_stop),
|
||||
}),
|
||||
(be_nested_const_str("page_autoconf_mgr", -651030265, 17)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_page_autoconf_mgr,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[124]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
@ -630,7 +630,7 @@ be_local_closure(page_autoconf_mgr, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_current_module_name
|
||||
********************************************************************/
|
||||
be_local_closure(get_current_module_name, /* name */
|
||||
be_local_closure(Autoconf_get_current_module_name, /* name */
|
||||
be_nested_proto(
|
||||
3, /* nstack */
|
||||
1, /* argc */
|
||||
@ -641,11 +641,11 @@ be_local_closure(get_current_module_name, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("_archive", -290407892, 8),
|
||||
/* K0 */ be_nested_str(_archive),
|
||||
/* K1 */ be_const_int(0),
|
||||
}),
|
||||
(be_nested_const_str("get_current_module_name", -1915696556, 23)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_current_module_name,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x5405FFF5, // 0000 LDINT R1 -10
|
||||
0x40060201, // 0001 CONNECT R1 K1 R1
|
||||
@ -661,7 +661,7 @@ be_local_closure(get_current_module_name, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: delete_all_configs
|
||||
********************************************************************/
|
||||
be_local_closure(delete_all_configs, /* name */
|
||||
be_local_closure(Autoconf_delete_all_configs, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
1, /* argc */
|
||||
@ -672,18 +672,18 @@ be_local_closure(delete_all_configs, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K1 */ be_nested_string("string", 398550328, 6),
|
||||
/* K2 */ be_nested_string("listdir", 2005220720, 7),
|
||||
/* K3 */ be_nested_string("/", 705468254, 1),
|
||||
/* K4 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K5 */ be_nested_string(".autoconf", -1770288208, 9),
|
||||
/* K0 */ be_nested_str(path),
|
||||
/* K1 */ be_nested_str(string),
|
||||
/* K2 */ be_nested_str(listdir),
|
||||
/* K3 */ be_nested_str(_X2F),
|
||||
/* K4 */ be_nested_str(find),
|
||||
/* K5 */ be_nested_str(_X2Eautoconf),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_string("remove", -611183107, 6),
|
||||
/* K8 */ be_nested_string("stop_iteration", -121173395, 14),
|
||||
/* K7 */ be_nested_str(remove),
|
||||
/* K8 */ be_nested_str(stop_iteration),
|
||||
}),
|
||||
(be_nested_const_str("delete_all_configs", -1912899718, 18)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_delete_all_configs,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[25]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
@ -719,7 +719,7 @@ be_local_closure(delete_all_configs, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: set_first_time
|
||||
********************************************************************/
|
||||
be_local_closure(set_first_time, /* name */
|
||||
be_local_closure(Autoconf_set_first_time, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -730,12 +730,12 @@ be_local_closure(set_first_time, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("/.autoconf", -2082892903, 10),
|
||||
/* K1 */ be_nested_string("w", -234078410, 1),
|
||||
/* K2 */ be_nested_string("close", 667630371, 5),
|
||||
/* K0 */ be_nested_str(_X2F_X2Eautoconf),
|
||||
/* K1 */ be_nested_str(w),
|
||||
/* K2 */ be_nested_str(close),
|
||||
}),
|
||||
(be_nested_const_str("set_first_time", -1183719746, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_first_time,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0x60040011, // 0000 GETGBL R1 G17
|
||||
0x58080000, // 0001 LDCONST R2 K0
|
||||
@ -753,7 +753,7 @@ be_local_closure(set_first_time, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: load_templates
|
||||
********************************************************************/
|
||||
be_local_closure(load_templates, /* name */
|
||||
be_local_closure(Autoconf_load_templates, /* name */
|
||||
be_nested_proto(
|
||||
15, /* nstack */
|
||||
1, /* argc */
|
||||
@ -764,30 +764,30 @@ be_local_closure(load_templates, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[21]) { /* constants */
|
||||
/* K0 */ be_nested_string("string", 398550328, 6),
|
||||
/* K1 */ be_nested_string("json", 916562499, 4),
|
||||
/* K2 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K3 */ be_nested_string("https://raw.githubusercontent.com/tasmota/autoconf/main/%s_manifest.json", -637415251, 72),
|
||||
/* K4 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K5 */ be_nested_string("arch", -1342162999, 4),
|
||||
/* K6 */ be_nested_string("log", 1062293841, 3),
|
||||
/* K7 */ be_nested_string("CFG: loading '%s'", -2009661199, 17),
|
||||
/* K0 */ be_nested_str(string),
|
||||
/* K1 */ be_nested_str(json),
|
||||
/* K2 */ be_nested_str(format),
|
||||
/* K3 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson),
|
||||
/* K4 */ be_nested_str(tasmota),
|
||||
/* K5 */ be_nested_str(arch),
|
||||
/* K6 */ be_nested_str(log),
|
||||
/* K7 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27),
|
||||
/* K8 */ be_const_int(3),
|
||||
/* K9 */ be_nested_string("webclient", -218578150, 9),
|
||||
/* K10 */ be_nested_string("begin", 1748273790, 5),
|
||||
/* K11 */ be_nested_string("GET", -1763262857, 3),
|
||||
/* K12 */ be_nested_string("CFG: return_code=%i", 2059897320, 19),
|
||||
/* K9 */ be_nested_str(webclient),
|
||||
/* K10 */ be_nested_str(begin),
|
||||
/* K11 */ be_nested_str(GET),
|
||||
/* K12 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i),
|
||||
/* K13 */ be_const_int(2),
|
||||
/* K14 */ be_nested_string("get_string", -99119327, 10),
|
||||
/* K15 */ be_nested_string("close", 667630371, 5),
|
||||
/* K16 */ be_nested_string("load", -435725847, 4),
|
||||
/* K17 */ be_nested_string("CFG: loaded '%s'", 1699028828, 16),
|
||||
/* K18 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K19 */ be_nested_string("files", 1055342736, 5),
|
||||
/* K20 */ be_nested_string("CFG: exception '%s' - '%s'", -199559383, 26),
|
||||
/* K14 */ be_nested_str(get_string),
|
||||
/* K15 */ be_nested_str(close),
|
||||
/* K16 */ be_nested_str(load),
|
||||
/* K17 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27),
|
||||
/* K18 */ be_nested_str(find),
|
||||
/* K19 */ be_nested_str(files),
|
||||
/* K20 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27),
|
||||
}),
|
||||
(be_nested_const_str("load_templates", -781097163, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_load_templates,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[86]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
@ -884,7 +884,7 @@ be_local_closure(load_templates, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: web_add_config_button
|
||||
********************************************************************/
|
||||
be_local_closure(web_add_config_button, /* name */
|
||||
be_local_closure(Autoconf_web_add_config_button, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
@ -895,12 +895,12 @@ be_local_closure(web_add_config_button, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("webserver", 1572454038, 9),
|
||||
/* K1 */ be_nested_string("content_send", 1673733649, 12),
|
||||
/* K2 */ be_nested_string("<p><form id=ac action='ac' style='display: block;' method='get'><button>🪄 Auto-configuration</button></form></p>", 452285201, 120),
|
||||
/* K0 */ be_nested_str(webserver),
|
||||
/* K1 */ be_nested_str(content_send),
|
||||
/* K2 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E_X26_X23129668_X3B_X20Auto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
|
||||
}),
|
||||
(be_nested_const_str("web_add_config_button", 639674325, 21)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_web_add_config_button,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080301, // 0001 GETMET R2 R1 K1
|
||||
@ -916,7 +916,7 @@ be_local_closure(web_add_config_button, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: is_first_time
|
||||
********************************************************************/
|
||||
be_local_closure(is_first_time, /* name */
|
||||
be_local_closure(Autoconf_is_first_time, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
@ -927,12 +927,12 @@ be_local_closure(is_first_time, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K1 */ be_nested_string("exists", 1002329533, 6),
|
||||
/* K2 */ be_nested_string("/.autoconf", -2082892903, 10),
|
||||
/* K0 */ be_nested_str(path),
|
||||
/* K1 */ be_nested_str(exists),
|
||||
/* K2 */ be_nested_str(_X2F_X2Eautoconf),
|
||||
}),
|
||||
(be_nested_const_str("is_first_time", 275242384, 13)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_is_first_time,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 8]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080301, // 0001 GETMET R2 R1 K1
|
||||
@ -951,7 +951,7 @@ be_local_closure(is_first_time, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(Autoconf_init, /* name */
|
||||
be_nested_proto(
|
||||
12, /* nstack */
|
||||
1, /* argc */
|
||||
@ -962,26 +962,26 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[17]) { /* constants */
|
||||
/* K0 */ be_nested_str_literal("path"),
|
||||
/* K1 */ be_nested_str_literal("string"),
|
||||
/* K2 */ be_nested_str_literal("listdir"),
|
||||
/* K3 */ be_nested_str_literal("/"),
|
||||
/* K4 */ be_nested_str_literal("tasmota"),
|
||||
/* K5 */ be_nested_str_literal("add_driver"),
|
||||
/* K0 */ be_nested_str(path),
|
||||
/* K1 */ be_nested_str(string),
|
||||
/* K2 */ be_nested_str(listdir),
|
||||
/* K3 */ be_nested_str(_X2F),
|
||||
/* K4 */ be_nested_str(tasmota),
|
||||
/* K5 */ be_nested_str(add_driver),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_str_literal("find"),
|
||||
/* K8 */ be_nested_str_literal(".autoconf"),
|
||||
/* K9 */ be_nested_str_literal("format"),
|
||||
/* K10 */ be_nested_str_literal("CFG: multiple autoconf files found, aborting ('%s' + '%s')"),
|
||||
/* K11 */ be_nested_str_literal("_error"),
|
||||
/* K7 */ be_nested_str(find),
|
||||
/* K8 */ be_nested_str(_X2Eautoconf),
|
||||
/* K9 */ be_nested_str(format),
|
||||
/* K10 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29),
|
||||
/* K11 */ be_nested_str(_error),
|
||||
/* K12 */ be_const_int(1),
|
||||
/* K13 */ be_nested_str_literal("log"),
|
||||
/* K14 */ be_nested_str_literal("CFG: no '*.autoconf' file found"),
|
||||
/* K13 */ be_nested_str(log),
|
||||
/* K14 */ be_nested_str(CFG_X3A_X20no_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found),
|
||||
/* K15 */ be_const_int(2),
|
||||
/* K16 */ be_nested_str_literal("_archive"),
|
||||
/* K16 */ be_nested_str(_archive),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[51]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
@ -1043,7 +1043,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: preinit
|
||||
********************************************************************/
|
||||
be_local_closure(preinit, /* name */
|
||||
be_local_closure(Autoconf_preinit, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
1, /* argc */
|
||||
@ -1054,19 +1054,19 @@ be_local_closure(preinit, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_string("_archive", -290407892, 8),
|
||||
/* K1 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K2 */ be_nested_string("#preinit.be", 687035716, 11),
|
||||
/* K3 */ be_nested_string("exists", 1002329533, 6),
|
||||
/* K4 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K5 */ be_nested_string("log", 1062293841, 3),
|
||||
/* K6 */ be_nested_string("CFG: loading ", -284605793, 13),
|
||||
/* K0 */ be_nested_str(_archive),
|
||||
/* K1 */ be_nested_str(path),
|
||||
/* K2 */ be_nested_str(_X23preinit_X2Ebe),
|
||||
/* K3 */ be_nested_str(exists),
|
||||
/* K4 */ be_nested_str(tasmota),
|
||||
/* K5 */ be_nested_str(log),
|
||||
/* K6 */ be_nested_str(CFG_X3A_X20loading_X20),
|
||||
/* K7 */ be_const_int(3),
|
||||
/* K8 */ be_nested_string("load", -435725847, 4),
|
||||
/* K9 */ be_nested_string("CFG: loaded ", -584693758, 13),
|
||||
/* K8 */ be_nested_str(load),
|
||||
/* K9 */ be_nested_str(CFG_X3A_X20loaded_X20_X20),
|
||||
}),
|
||||
(be_nested_const_str("preinit", -1572960196, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_preinit,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[26]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x4C080000, // 0001 LDNIL R2
|
||||
@ -1103,7 +1103,7 @@ be_local_closure(preinit, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: reset
|
||||
********************************************************************/
|
||||
be_local_closure(reset, /* name */
|
||||
be_local_closure(Autoconf_reset, /* name */
|
||||
be_nested_proto(
|
||||
12, /* nstack */
|
||||
1, /* argc */
|
||||
@ -1114,22 +1114,22 @@ be_local_closure(reset, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[13]) { /* constants */
|
||||
/* K0 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K1 */ be_nested_string("string", 398550328, 6),
|
||||
/* K2 */ be_nested_string("listdir", 2005220720, 7),
|
||||
/* K3 */ be_nested_string("/", 705468254, 1),
|
||||
/* K0 */ be_nested_str(path),
|
||||
/* K1 */ be_nested_str(string),
|
||||
/* K2 */ be_nested_str(listdir),
|
||||
/* K3 */ be_nested_str(_X2F),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K6 */ be_nested_string(".autoconf", -1770288208, 9),
|
||||
/* K7 */ be_nested_string("remove", -611183107, 6),
|
||||
/* K8 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K9 */ be_nested_string("CFG: removed file '%s'", 2048602473, 22),
|
||||
/* K5 */ be_nested_str(find),
|
||||
/* K6 */ be_nested_str(_X2Eautoconf),
|
||||
/* K7 */ be_nested_str(remove),
|
||||
/* K8 */ be_nested_str(format),
|
||||
/* K9 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27),
|
||||
/* K10 */ be_const_int(1),
|
||||
/* K11 */ be_nested_string("_archive", -290407892, 8),
|
||||
/* K12 */ be_nested_string("_error", 1132109656, 6),
|
||||
/* K11 */ be_nested_str(_archive),
|
||||
/* K12 */ be_nested_str(_error),
|
||||
}),
|
||||
(be_nested_const_str("reset", 1695364032, 5)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_reset,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[35]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
@ -1175,7 +1175,7 @@ be_local_closure(reset, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: web_add_handler
|
||||
********************************************************************/
|
||||
be_local_closure(web_add_handler, /* name */
|
||||
be_local_closure(Autoconf_web_add_handler, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
1, /* argc */
|
||||
@ -1196,10 +1196,10 @@ be_local_closure(web_add_handler, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("page_autoconf_mgr", -651030265, 17),
|
||||
/* K0 */ be_nested_str(page_autoconf_mgr),
|
||||
}),
|
||||
(be_nested_const_str("<lambda>", 607256038, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__X3Clambda_X3E,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0x68000000, // 0000 GETUPV R0 U0
|
||||
0x8C000100, // 0001 GETMET R0 R0 K0
|
||||
@ -1219,10 +1219,10 @@ be_local_closure(web_add_handler, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("page_autoconf_ctl", -1841585800, 17),
|
||||
/* K0 */ be_nested_str(page_autoconf_ctl),
|
||||
}),
|
||||
(be_nested_const_str("<lambda>", 607256038, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__X3Clambda_X3E,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0x68000000, // 0000 GETUPV R0 U0
|
||||
0x8C000100, // 0001 GETMET R0 R0 K0
|
||||
@ -1233,14 +1233,14 @@ be_local_closure(web_add_handler, /* name */
|
||||
}),
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("webserver", 1572454038, 9),
|
||||
/* K1 */ be_nested_string("on", 1630810064, 2),
|
||||
/* K2 */ be_nested_string("/ac", -390315318, 3),
|
||||
/* K3 */ be_nested_string("HTTP_GET", 1722467738, 8),
|
||||
/* K4 */ be_nested_string("HTTP_POST", 1999554144, 9),
|
||||
/* K0 */ be_nested_str(webserver),
|
||||
/* K1 */ be_nested_str(on),
|
||||
/* K2 */ be_nested_str(_X2Fac),
|
||||
/* K3 */ be_nested_str(HTTP_GET),
|
||||
/* K4 */ be_nested_str(HTTP_POST),
|
||||
}),
|
||||
(be_nested_const_str("web_add_handler", -304792334, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_web_add_handler,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[13]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080301, // 0001 GETMET R2 R1 K1
|
||||
@ -1264,7 +1264,7 @@ be_local_closure(web_add_handler, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: clear_first_time
|
||||
********************************************************************/
|
||||
be_local_closure(clear_first_time, /* name */
|
||||
be_local_closure(Autoconf_clear_first_time, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
@ -1275,12 +1275,12 @@ be_local_closure(clear_first_time, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K1 */ be_nested_string("remove", -611183107, 6),
|
||||
/* K2 */ be_nested_string("/.autoconf", -2082892903, 10),
|
||||
/* K0 */ be_nested_str(path),
|
||||
/* K1 */ be_nested_str(remove),
|
||||
/* K2 */ be_nested_str(_X2F_X2Eautoconf),
|
||||
}),
|
||||
(be_nested_const_str("clear_first_time", 632769909, 16)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_clear_first_time,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080301, // 0001 GETMET R2 R1 K1
|
||||
@ -1296,7 +1296,7 @@ be_local_closure(clear_first_time, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_current_module_path
|
||||
********************************************************************/
|
||||
be_local_closure(get_current_module_path, /* name */
|
||||
be_local_closure(Autoconf_get_current_module_path, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
@ -1307,10 +1307,10 @@ be_local_closure(get_current_module_path, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("_archive", -290407892, 8),
|
||||
/* K0 */ be_nested_str(_archive),
|
||||
}),
|
||||
(be_nested_const_str("get_current_module_path", -1088293888, 23)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_current_module_path,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x80040200, // 0001 RET 1 R1
|
||||
@ -1328,26 +1328,26 @@ be_local_class(Autoconf,
|
||||
NULL,
|
||||
be_nested_map(18,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("page_autoconf_ctl", -1841585800, 17, -1), be_const_closure(page_autoconf_ctl_closure) },
|
||||
{ be_nested_key("autoexec", -618105405, 8, -1), be_const_closure(autoexec_closure) },
|
||||
{ be_nested_key("run_bat", -1758063998, 7, 6), be_const_closure(run_bat_closure) },
|
||||
{ be_nested_key("page_autoconf_mgr", -651030265, 17, -1), be_const_closure(page_autoconf_mgr_closure) },
|
||||
{ be_nested_key("get_current_module_name", -1915696556, 23, -1), be_const_closure(get_current_module_name_closure) },
|
||||
{ be_nested_key("delete_all_configs", -1912899718, 18, 13), be_const_closure(delete_all_configs_closure) },
|
||||
{ be_nested_key("set_first_time", -1183719746, 14, -1), be_const_closure(set_first_time_closure) },
|
||||
{ be_nested_key("load_templates", -781097163, 14, -1), be_const_closure(load_templates_closure) },
|
||||
{ be_nested_key("_archive", -290407892, 8, -1), be_const_var(0) },
|
||||
{ be_nested_key("web_add_config_button", 639674325, 21, -1), be_const_closure(web_add_config_button_closure) },
|
||||
{ be_nested_key("is_first_time", 275242384, 13, -1), be_const_closure(is_first_time_closure) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_nested_key("preinit", -1572960196, 7, 5), be_const_closure(preinit_closure) },
|
||||
{ be_nested_key("reset", 1695364032, 5, 17), be_const_closure(reset_closure) },
|
||||
{ be_nested_key("web_add_handler", -304792334, 15, 4), be_const_closure(web_add_handler_closure) },
|
||||
{ be_nested_key("clear_first_time", 632769909, 16, 11), be_const_closure(clear_first_time_closure) },
|
||||
{ be_nested_key("_error", 1132109656, 6, -1), be_const_var(1) },
|
||||
{ be_nested_key("get_current_module_path", -1088293888, 23, -1), be_const_closure(get_current_module_path_closure) },
|
||||
{ be_const_key(page_autoconf_ctl, -1), be_const_closure(Autoconf_page_autoconf_ctl_closure) },
|
||||
{ be_const_key(autoexec, -1), be_const_closure(Autoconf_autoexec_closure) },
|
||||
{ be_const_key(run_bat, 17), be_const_closure(Autoconf_run_bat_closure) },
|
||||
{ be_const_key(page_autoconf_mgr, -1), be_const_closure(Autoconf_page_autoconf_mgr_closure) },
|
||||
{ be_const_key(get_current_module_path, 13), be_const_closure(Autoconf_get_current_module_path_closure) },
|
||||
{ be_const_key(preinit, -1), be_const_closure(Autoconf_preinit_closure) },
|
||||
{ be_const_key(clear_first_time, -1), be_const_closure(Autoconf_clear_first_time_closure) },
|
||||
{ be_const_key(load_templates, -1), be_const_closure(Autoconf_load_templates_closure) },
|
||||
{ be_const_key(_archive, -1), be_const_var(0) },
|
||||
{ be_const_key(web_add_config_button, -1), be_const_closure(Autoconf_web_add_config_button_closure) },
|
||||
{ be_const_key(is_first_time, -1), be_const_closure(Autoconf_is_first_time_closure) },
|
||||
{ be_const_key(web_add_handler, -1), be_const_closure(Autoconf_web_add_handler_closure) },
|
||||
{ be_const_key(delete_all_configs, 4), be_const_closure(Autoconf_delete_all_configs_closure) },
|
||||
{ be_const_key(reset, 5), be_const_closure(Autoconf_reset_closure) },
|
||||
{ be_const_key(get_current_module_name, 11), be_const_closure(Autoconf_get_current_module_name_closure) },
|
||||
{ be_const_key(init, 6), be_const_closure(Autoconf_init_closure) },
|
||||
{ be_const_key(_error, -1), be_const_var(1) },
|
||||
{ be_const_key(set_first_time, -1), be_const_closure(Autoconf_set_first_time_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Autoconf", 984011268, 8))
|
||||
be_str_literal("Autoconf")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
@ -1366,8 +1366,8 @@ be_local_closure(_anonymous_, /* name */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_const_class(be_class_Autoconf),
|
||||
}),
|
||||
(be_nested_const_str("_anonymous_", 1957281476, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__anonymous_,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x58040000, // 0000 LDCONST R1 K0
|
||||
0xB4000000, // 0001 CLASS K0
|
||||
@ -1387,7 +1387,7 @@ be_local_module(autoconf,
|
||||
"autoconf",
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(_anonymous__closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(_anonymous__closure) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(autoconf);
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
// Tasmota specific
|
||||
|
||||
extern int be_disp_start(bvm *vm);
|
||||
extern int be_ntv_display_start(bvm *vm);
|
||||
|
||||
/********************************************************************
|
||||
** Solidified module: display
|
||||
@ -20,7 +20,7 @@ be_local_module(display,
|
||||
"display",
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("start", 1697318111, 5, -1), be_const_func(be_disp_start) },
|
||||
{ be_const_key(start, -1), be_const_func(be_ntv_display_start) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(display);
|
||||
|
@ -9,7 +9,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(Driver_init, /* name */
|
||||
be_nested_proto(
|
||||
1, /* nstack */
|
||||
1, /* argc */
|
||||
@ -20,8 +20,8 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
0, /* has constants */
|
||||
NULL, /* no const */
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 1]) { /* code */
|
||||
0x80000000, // 0000 RET 0
|
||||
})
|
||||
@ -33,7 +33,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_tasmota
|
||||
********************************************************************/
|
||||
be_local_closure(get_tasmota, /* name */
|
||||
be_local_closure(Driver_get_tasmota, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
@ -44,10 +44,10 @@ be_local_closure(get_tasmota, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
}),
|
||||
(be_nested_const_str("get_tasmota", 334356779, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_tasmota,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x80040200, // 0001 RET 1 R1
|
||||
@ -60,7 +60,7 @@ be_local_closure(get_tasmota, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: add_cmd
|
||||
********************************************************************/
|
||||
be_local_closure(add_cmd, /* name */
|
||||
be_local_closure(Driver_add_cmd, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
3, /* argc */
|
||||
@ -82,8 +82,8 @@ be_local_closure(add_cmd, /* name */
|
||||
NULL, /* no sub protos */
|
||||
0, /* has constants */
|
||||
NULL, /* no const */
|
||||
(be_nested_const_str("<lambda>", 607256038, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__X3Clambda_X3E,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 8]) { /* code */
|
||||
0x68100000, // 0000 GETUPV R4 U0
|
||||
0x68140001, // 0001 GETUPV R5 U1
|
||||
@ -98,11 +98,11 @@ be_local_closure(add_cmd, /* name */
|
||||
}),
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K1 */ be_nested_string("add_cmd", -933336417, 7),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
/* K1 */ be_nested_str(add_cmd),
|
||||
}),
|
||||
(be_nested_const_str("add_cmd", -933336417, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_add_cmd,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x8C0C0701, // 0001 GETMET R3 R3 K1
|
||||
@ -125,24 +125,24 @@ be_local_class(Driver,
|
||||
NULL,
|
||||
be_nested_map(16,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("web_add_main_button", -334599632, 19, 14), be_const_var(4) },
|
||||
{ be_nested_key("web_add_console_button", -813531104, 22, -1), be_const_var(7) },
|
||||
{ be_nested_key("web_add_management_button", -1556090110, 25, 8), be_const_var(5) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_nested_key("json_append", -1292948012, 11, -1), be_const_var(10) },
|
||||
{ be_nested_key("web_add_config_button", 639674325, 21, 7), be_const_var(6) },
|
||||
{ be_nested_key("every_100ms", 1546407804, 11, -1), be_const_var(1) },
|
||||
{ be_nested_key("display", 1164572437, 7, -1), be_const_var(12) },
|
||||
{ be_nested_key("web_add_button", -757092238, 14, 13), be_const_var(3) },
|
||||
{ be_nested_key("every_second", 2075451465, 12, -1), be_const_var(0) },
|
||||
{ be_nested_key("save_before_restart", 1253239338, 19, -1), be_const_var(8) },
|
||||
{ be_nested_key("get_tasmota", 334356779, 11, -1), be_const_closure(get_tasmota_closure) },
|
||||
{ be_nested_key("web_sensor", -1394870324, 10, 6), be_const_var(9) },
|
||||
{ be_nested_key("web_add_handler", -304792334, 15, -1), be_const_var(2) },
|
||||
{ be_nested_key("button_pressed", 1694209616, 14, 1), be_const_var(11) },
|
||||
{ be_nested_key("add_cmd", -933336417, 7, -1), be_const_closure(add_cmd_closure) },
|
||||
{ be_const_key(web_add_main_button, 14), be_const_var(4) },
|
||||
{ be_const_key(web_add_console_button, -1), be_const_var(7) },
|
||||
{ be_const_key(web_add_management_button, 8), be_const_var(5) },
|
||||
{ be_const_key(init, -1), be_const_closure(Driver_init_closure) },
|
||||
{ be_const_key(json_append, -1), be_const_var(10) },
|
||||
{ be_const_key(web_add_config_button, 7), be_const_var(6) },
|
||||
{ be_const_key(every_100ms, -1), be_const_var(1) },
|
||||
{ be_const_key(display, -1), be_const_var(12) },
|
||||
{ be_const_key(web_add_button, 13), be_const_var(3) },
|
||||
{ be_const_key(every_second, -1), be_const_var(0) },
|
||||
{ be_const_key(save_before_restart, -1), be_const_var(8) },
|
||||
{ be_const_key(get_tasmota, -1), be_const_closure(Driver_get_tasmota_closure) },
|
||||
{ be_const_key(web_sensor, 6), be_const_var(9) },
|
||||
{ be_const_key(web_add_handler, -1), be_const_var(2) },
|
||||
{ be_const_key(button_pressed, 1), be_const_var(11) },
|
||||
{ be_const_key(add_cmd, -1), be_const_closure(Driver_add_cmd_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Driver", -718580993, 6))
|
||||
be_str_literal("Driver")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -12,32 +12,127 @@
|
||||
extern struct ENERGY Energy;
|
||||
/*
|
||||
|
||||
_energy = nil # avoid compilation error
|
||||
energy = module("energy")
|
||||
energy._ptr = nil
|
||||
|
||||
def init(m)
|
||||
import global
|
||||
global._energy = energy_struct(m._ptr)
|
||||
return m
|
||||
end
|
||||
energy.init = init
|
||||
|
||||
def read()
|
||||
return _energy.tomap()
|
||||
end
|
||||
energy.read = read
|
||||
|
||||
def member(k)
|
||||
return _energy.(k)
|
||||
end
|
||||
energy.member = member
|
||||
|
||||
def setmember(k, v)
|
||||
_energy.(k) = v
|
||||
end
|
||||
energy.setmember = setmember
|
||||
|
||||
import solidify
|
||||
solidify.dump(m.init)
|
||||
solidify.dump(energy)
|
||||
*/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: member
|
||||
********************************************************************/
|
||||
be_local_closure(energy_member, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_str(_energy),
|
||||
}),
|
||||
&be_const_str_member,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x88040200, // 0001 GETMBR R1 R1 R0
|
||||
0x80040200, // 0002 RET 1 R1
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: setmember
|
||||
********************************************************************/
|
||||
be_local_closure(energy_setmember, /* name */
|
||||
be_nested_proto(
|
||||
3, /* nstack */
|
||||
2, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_str(_energy),
|
||||
}),
|
||||
&be_const_str_setmember,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0xB80A0000, // 0000 GETNGBL R2 K0
|
||||
0x90080001, // 0001 SETMBR R2 R0 R1
|
||||
0x80000000, // 0002 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read
|
||||
********************************************************************/
|
||||
be_local_closure(energy_read, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
0, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_str(_energy),
|
||||
/* K1 */ be_nested_str(tomap),
|
||||
}),
|
||||
&be_const_str_read,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0xB8020000, // 0000 GETNGBL R0 K0
|
||||
0x8C000101, // 0001 GETMET R0 R0 K1
|
||||
0x7C000200, // 0002 CALL R0 1
|
||||
0x80040000, // 0003 RET 1 R0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(energy_init, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -48,13 +143,13 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_string("global", 503252654, 6),
|
||||
/* K1 */ be_nested_string("_energy", 535372070, 7),
|
||||
/* K2 */ be_nested_string("energy_struct", 1655792843, 13),
|
||||
/* K3 */ be_nested_string("_ptr", 306235816, 4),
|
||||
/* K0 */ be_nested_str(global),
|
||||
/* K1 */ be_nested_str(_energy),
|
||||
/* K2 */ be_nested_str(energy_struct),
|
||||
/* K3 */ be_nested_str(_ptr),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xB80A0400, // 0001 GETNGBL R2 K2
|
||||
@ -69,100 +164,23 @@ be_local_closure(init, /* name */
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read
|
||||
** Solidified module: energy
|
||||
********************************************************************/
|
||||
be_local_closure(read, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
0, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("_energy", 535372070, 7),
|
||||
/* K1 */ be_nested_string("tomap", 612167626, 5),
|
||||
}),
|
||||
(be_nested_const_str("<anonymous>", 1160973142, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0xB8020000, // 0000 GETNGBL R0 K0
|
||||
0x8C000101, // 0001 GETMET R0 R0 K1
|
||||
0x7C000200, // 0002 CALL R0 1
|
||||
0x80040000, // 0003 RET 1 R0
|
||||
})
|
||||
)
|
||||
be_local_module(energy,
|
||||
"energy",
|
||||
be_nested_map(5,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key(init, -1), be_const_closure(energy_init_closure) },
|
||||
{ be_const_key(member, 2), be_const_closure(energy_member_closure) },
|
||||
{ be_const_key(_ptr, 3), be_const_comptr(&Energy) },
|
||||
{ be_const_key(setmember, -1), be_const_closure(energy_setmember_closure) },
|
||||
{ be_const_key(read, -1), be_const_closure(energy_read_closure) },
|
||||
}))
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: member
|
||||
********************************************************************/
|
||||
be_local_closure(member, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("_energy", 535372070, 7),
|
||||
}),
|
||||
(be_nested_const_str("member", 719708611, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x88040200, // 0001 GETMBR R1 R1 R0
|
||||
0x80040200, // 0002 RET 1 R1
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(energy);
|
||||
/********************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: setmember
|
||||
********************************************************************/
|
||||
be_local_closure(setmember, /* name */
|
||||
be_nested_proto(
|
||||
3, /* nstack */
|
||||
2, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("_energy", 535372070, 7),
|
||||
}),
|
||||
(be_nested_const_str("setmember", 1432909441, 9)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0xB80A0000, // 0000 GETNGBL R2 K0
|
||||
0x90080001, // 0001 SETMBR R2 R0 R1
|
||||
0x80000000, // 0002 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/* @const_object_info_begin
|
||||
module energy (scope: global) {
|
||||
_ptr, comptr(&Energy)
|
||||
init, closure(init_closure)
|
||||
|
||||
read, closure(read_closure)
|
||||
member, closure(member_closure)
|
||||
setmember, closure(setmember_closure)
|
||||
}
|
||||
@const_object_info_end */
|
||||
#include "../generate/be_fixed_energy.h"
|
||||
// { be_const_key(_ptr, 3), be_const_comptr(&Energy) }, /* patch */
|
||||
|
||||
#endif // USE_ENERGY_SENSOR
|
@ -6,7 +6,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: get_warning_level
|
||||
********************************************************************/
|
||||
be_local_closure(get_warning_level, /* name */
|
||||
be_local_closure(AXP192_get_warning_level, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -17,11 +17,11 @@ be_local_closure(get_warning_level, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read12", -3890326, 6),
|
||||
/* K0 */ be_nested_str(read12),
|
||||
/* K1 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("get_warning_level", 1737834441, 17)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_warning_level,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E0046, // 0001 LDINT R3 71
|
||||
@ -37,7 +37,7 @@ be_local_closure(get_warning_level, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_vbus_current
|
||||
********************************************************************/
|
||||
be_local_closure(get_vbus_current, /* name */
|
||||
be_local_closure(AXP192_get_vbus_current, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -48,11 +48,11 @@ be_local_closure(get_vbus_current, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read12", -3890326, 6),
|
||||
/* K0 */ be_nested_str(read12),
|
||||
/* K1 */ be_const_real_hex(0x3EC00000),
|
||||
}),
|
||||
(be_nested_const_str("get_vbus_current", 1205347942, 16)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_vbus_current,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E005B, // 0001 LDINT R3 92
|
||||
@ -68,7 +68,7 @@ be_local_closure(get_vbus_current, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: set_chg_current
|
||||
********************************************************************/
|
||||
be_local_closure(set_chg_current, /* name */
|
||||
be_local_closure(AXP192_set_chg_current, /* name */
|
||||
be_nested_proto(
|
||||
8, /* nstack */
|
||||
2, /* argc */
|
||||
@ -79,11 +79,11 @@ be_local_closure(set_chg_current, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("write8", -1160975764, 6),
|
||||
/* K1 */ be_nested_string("read8", -1492179129, 5),
|
||||
/* K0 */ be_nested_str(write8),
|
||||
/* K1 */ be_nested_str(read8),
|
||||
}),
|
||||
(be_nested_const_str("set_chg_current", 336304386, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_chg_current,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
0x8C080100, // 0000 GETMET R2 R0 K0
|
||||
0x54120032, // 0001 LDINT R4 51
|
||||
@ -106,7 +106,7 @@ be_local_closure(set_chg_current, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_bat_current
|
||||
********************************************************************/
|
||||
be_local_closure(get_bat_current, /* name */
|
||||
be_local_closure(AXP192_get_bat_current, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
@ -117,11 +117,11 @@ be_local_closure(get_bat_current, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read13", 12887293, 6),
|
||||
/* K0 */ be_nested_str(read13),
|
||||
/* K1 */ be_const_real_hex(0x3F000000),
|
||||
}),
|
||||
(be_nested_const_str("get_bat_current", 1912106073, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_bat_current,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 9]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E0079, // 0001 LDINT R3 122
|
||||
@ -141,7 +141,7 @@ be_local_closure(get_bat_current, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_bat_power
|
||||
********************************************************************/
|
||||
be_local_closure(get_bat_power, /* name */
|
||||
be_local_closure(AXP192_get_bat_power, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -152,11 +152,11 @@ be_local_closure(get_bat_power, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read24", 1808533811, 6),
|
||||
/* K0 */ be_nested_str(read24),
|
||||
/* K1 */ be_const_real_hex(0x3A102DE1),
|
||||
}),
|
||||
(be_nested_const_str("get_bat_power", -1227592443, 13)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_bat_power,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E006F, // 0001 LDINT R3 112
|
||||
@ -172,7 +172,7 @@ be_local_closure(get_bat_power, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: json_append
|
||||
********************************************************************/
|
||||
be_local_closure(json_append, /* name */
|
||||
be_local_closure(AXP192_json_append, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
@ -183,10 +183,10 @@ be_local_closure(json_append, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
}),
|
||||
(be_nested_const_str("json_append", -1292948012, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_json_append,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x74060001, // 0001 JMPT R1 #0004
|
||||
@ -202,7 +202,7 @@ be_local_closure(json_append, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_vbus_voltage
|
||||
********************************************************************/
|
||||
be_local_closure(get_vbus_voltage, /* name */
|
||||
be_local_closure(AXP192_get_vbus_voltage, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -213,11 +213,11 @@ be_local_closure(get_vbus_voltage, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read12", -3890326, 6),
|
||||
/* K0 */ be_nested_str(read12),
|
||||
/* K1 */ be_const_real_hex(0x3ADED28A),
|
||||
}),
|
||||
(be_nested_const_str("get_vbus_voltage", -1896756895, 16)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_vbus_voltage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E0059, // 0001 LDINT R3 90
|
||||
@ -233,7 +233,7 @@ be_local_closure(get_vbus_voltage, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_temp
|
||||
********************************************************************/
|
||||
be_local_closure(get_temp, /* name */
|
||||
be_local_closure(AXP192_get_temp, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -244,12 +244,12 @@ be_local_closure(get_temp, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("read12", -3890326, 6),
|
||||
/* K0 */ be_nested_str(read12),
|
||||
/* K1 */ be_const_real_hex(0x3DCCCCCD),
|
||||
/* K2 */ be_const_real_hex(0x4310B333),
|
||||
}),
|
||||
(be_nested_const_str("get_temp", -924047810, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_temp,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E005D, // 0001 LDINT R3 94
|
||||
@ -266,7 +266,7 @@ be_local_closure(get_temp, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: battery_present
|
||||
********************************************************************/
|
||||
be_local_closure(battery_present, /* name */
|
||||
be_local_closure(AXP192_battery_present, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
1, /* argc */
|
||||
@ -277,13 +277,13 @@ be_local_closure(battery_present, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read", -824204347, 4),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("battery_present", -706570238, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_battery_present,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[15]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -309,7 +309,7 @@ be_local_closure(battery_present, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_aps_voltage
|
||||
********************************************************************/
|
||||
be_local_closure(get_aps_voltage, /* name */
|
||||
be_local_closure(AXP192_get_aps_voltage, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -320,11 +320,11 @@ be_local_closure(get_aps_voltage, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read12", -3890326, 6),
|
||||
/* K0 */ be_nested_str(read12),
|
||||
/* K1 */ be_const_real_hex(0x3AB78035),
|
||||
}),
|
||||
(be_nested_const_str("get_aps_voltage", -2001930861, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_aps_voltage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E007D, // 0001 LDINT R3 126
|
||||
@ -340,7 +340,7 @@ be_local_closure(get_aps_voltage, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: set_dcdc_enable
|
||||
********************************************************************/
|
||||
be_local_closure(set_dcdc_enable, /* name */
|
||||
be_local_closure(AXP192_set_dcdc_enable, /* name */
|
||||
be_nested_proto(
|
||||
8, /* nstack */
|
||||
3, /* argc */
|
||||
@ -352,13 +352,13 @@ be_local_closure(set_dcdc_enable, /* name */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_const_int(1),
|
||||
/* K1 */ be_nested_string("write_bit", -1633976860, 9),
|
||||
/* K1 */ be_nested_str(write_bit),
|
||||
/* K2 */ be_const_int(0),
|
||||
/* K3 */ be_const_int(2),
|
||||
/* K4 */ be_const_int(3),
|
||||
}),
|
||||
(be_nested_const_str("set_dcdc_enable", 1594690786, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_dcdc_enable,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[22]) { /* code */
|
||||
0x1C0C0300, // 0000 EQ R3 R1 K0
|
||||
0x780E0004, // 0001 JMPF R3 #0007
|
||||
@ -391,7 +391,7 @@ be_local_closure(set_dcdc_enable, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: set_ldo_voltage
|
||||
********************************************************************/
|
||||
be_local_closure(set_ldo_voltage, /* name */
|
||||
be_local_closure(AXP192_set_ldo_voltage, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
3, /* argc */
|
||||
@ -403,12 +403,12 @@ be_local_closure(set_ldo_voltage, /* name */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_const_int(2),
|
||||
/* K1 */ be_nested_string("write8", -1160975764, 6),
|
||||
/* K2 */ be_nested_string("read8", -1492179129, 5),
|
||||
/* K1 */ be_nested_str(write8),
|
||||
/* K2 */ be_nested_str(read8),
|
||||
/* K3 */ be_const_int(3),
|
||||
}),
|
||||
(be_nested_const_str("set_ldo_voltage", -204466136, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_ldo_voltage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[39]) { /* code */
|
||||
0x540E0CE3, // 0000 LDINT R3 3300
|
||||
0x240C0403, // 0001 GT R3 R2 R3
|
||||
@ -458,7 +458,7 @@ be_local_closure(set_ldo_voltage, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(AXP192_init, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
@ -469,12 +469,12 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("I2C_Driver", 1714501658, 10),
|
||||
/* K1 */ be_nested_string("init", 380752755, 4),
|
||||
/* K2 */ be_nested_string("AXP192", 757230128, 6),
|
||||
/* K0 */ be_nested_str(I2C_Driver),
|
||||
/* K1 */ be_nested_str(init),
|
||||
/* K2 */ be_nested_str(AXP192),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 9]) { /* code */
|
||||
0x60040003, // 0000 GETGBL R1 G3
|
||||
0x5C080000, // 0001 MOVE R2 R0
|
||||
@ -494,7 +494,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_bat_voltage
|
||||
********************************************************************/
|
||||
be_local_closure(get_bat_voltage, /* name */
|
||||
be_local_closure(AXP192_get_bat_voltage, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -505,11 +505,11 @@ be_local_closure(get_bat_voltage, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read12", -3890326, 6),
|
||||
/* K0 */ be_nested_str(read12),
|
||||
/* K1 */ be_const_real_hex(0x3A902DE0),
|
||||
}),
|
||||
(be_nested_const_str("get_bat_voltage", 706676538, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_bat_voltage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E0077, // 0001 LDINT R3 120
|
||||
@ -525,7 +525,7 @@ be_local_closure(get_bat_voltage, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: set_ldo_enable
|
||||
********************************************************************/
|
||||
be_local_closure(set_ldo_enable, /* name */
|
||||
be_local_closure(AXP192_set_ldo_enable, /* name */
|
||||
be_nested_proto(
|
||||
8, /* nstack */
|
||||
3, /* argc */
|
||||
@ -537,11 +537,11 @@ be_local_closure(set_ldo_enable, /* name */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_const_int(2),
|
||||
/* K1 */ be_nested_string("write_bit", -1633976860, 9),
|
||||
/* K1 */ be_nested_str(write_bit),
|
||||
/* K2 */ be_const_int(3),
|
||||
}),
|
||||
(be_nested_const_str("set_ldo_enable", -1378465255, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_ldo_enable,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[15]) { /* code */
|
||||
0x1C0C0300, // 0000 EQ R3 R1 K0
|
||||
0x780E0004, // 0001 JMPF R3 #0007
|
||||
@ -567,7 +567,7 @@ be_local_closure(set_ldo_enable, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: set_dc_voltage
|
||||
********************************************************************/
|
||||
be_local_closure(set_dc_voltage, /* name */
|
||||
be_local_closure(AXP192_set_dc_voltage, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
@ -582,11 +582,11 @@ be_local_closure(set_dc_voltage, /* name */
|
||||
/* K1 */ be_const_int(3),
|
||||
/* K2 */ be_const_int(0),
|
||||
/* K3 */ be_const_int(2),
|
||||
/* K4 */ be_nested_string("write8", -1160975764, 6),
|
||||
/* K5 */ be_nested_string("read8", -1492179129, 5),
|
||||
/* K4 */ be_nested_str(write8),
|
||||
/* K5 */ be_nested_str(read8),
|
||||
}),
|
||||
(be_nested_const_str("set_dc_voltage", -2112985360, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_dc_voltage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[48]) { /* code */
|
||||
0x140C0300, // 0000 LT R3 R1 K0
|
||||
0x740E0001, // 0001 JMPT R3 #0004
|
||||
@ -645,7 +645,7 @@ be_local_closure(set_dc_voltage, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: write_gpio
|
||||
********************************************************************/
|
||||
be_local_closure(write_gpio, /* name */
|
||||
be_local_closure(AXP192_write_gpio, /* name */
|
||||
be_nested_proto(
|
||||
8, /* nstack */
|
||||
3, /* argc */
|
||||
@ -658,11 +658,11 @@ be_local_closure(write_gpio, /* name */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_const_int(2),
|
||||
/* K2 */ be_nested_string("write_bit", -1633976860, 9),
|
||||
/* K2 */ be_nested_str(write_bit),
|
||||
/* K3 */ be_const_int(3),
|
||||
}),
|
||||
(be_nested_const_str("write_gpio", -2027026962, 10)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_write_gpio,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[21]) { /* code */
|
||||
0x280C0300, // 0000 GE R3 R1 K0
|
||||
0x780E0007, // 0001 JMPF R3 #000A
|
||||
@ -694,7 +694,7 @@ be_local_closure(write_gpio, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: web_sensor
|
||||
********************************************************************/
|
||||
be_local_closure(web_sensor, /* name */
|
||||
be_local_closure(AXP192_web_sensor, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
1, /* argc */
|
||||
@ -705,23 +705,23 @@ be_local_closure(web_sensor, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[14]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("string", 398550328, 6),
|
||||
/* K2 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K3 */ be_nested_string("{s}VBus Voltage{m}%.3f V{e}", 165651270, 27),
|
||||
/* K4 */ be_nested_string("{s}VBus Current{m}%.1f mA{e}", 1032721155, 28),
|
||||
/* K5 */ be_nested_string("{s}Batt Voltage{m}%.3f V{e}", -1110659097, 27),
|
||||
/* K6 */ be_nested_string("{s}Batt Current{m}%.1f mA{e}", 866537156, 28),
|
||||
/* K7 */ be_nested_string("{s}Temp AXP{m}%.1f °C{e}", -1990510004, 25),
|
||||
/* K8 */ be_nested_string("get_vbus_voltage", -1896756895, 16),
|
||||
/* K9 */ be_nested_string("get_bat_voltage", 706676538, 15),
|
||||
/* K10 */ be_nested_string("get_bat_current", 1912106073, 15),
|
||||
/* K11 */ be_nested_string("get_temp", -924047810, 8),
|
||||
/* K12 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K13 */ be_nested_string("web_send_decimal", 1407210204, 16),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(string),
|
||||
/* K2 */ be_nested_str(format),
|
||||
/* K3 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D),
|
||||
/* K4 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
|
||||
/* K5 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D),
|
||||
/* K6 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
|
||||
/* K7 */ be_nested_str(_X7Bs_X7DTemp_X20AXP_X7Bm_X7D_X25_X2E1f_X20_XB0C_X7Be_X7D),
|
||||
/* K8 */ be_nested_str(get_vbus_voltage),
|
||||
/* K9 */ be_nested_str(get_bat_voltage),
|
||||
/* K10 */ be_nested_str(get_bat_current),
|
||||
/* K11 */ be_nested_str(get_temp),
|
||||
/* K12 */ be_nested_str(tasmota),
|
||||
/* K13 */ be_nested_str(web_send_decimal),
|
||||
}),
|
||||
(be_nested_const_str("web_sensor", -1394870324, 10)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_web_sensor,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[26]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x74060001, // 0001 JMPT R1 #0004
|
||||
@ -758,7 +758,7 @@ be_local_closure(web_sensor, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_bat_charge_current
|
||||
********************************************************************/
|
||||
be_local_closure(get_bat_charge_current, /* name */
|
||||
be_local_closure(AXP192_get_bat_charge_current, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -769,11 +769,11 @@ be_local_closure(get_bat_charge_current, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("read13", 12887293, 6),
|
||||
/* K0 */ be_nested_str(read13),
|
||||
/* K1 */ be_const_real_hex(0x3F000000),
|
||||
}),
|
||||
(be_nested_const_str("get_bat_charge_current", 1385293050, 22)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_bat_charge_current,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x540E0079, // 0001 LDINT R3 122
|
||||
@ -789,7 +789,7 @@ be_local_closure(get_bat_charge_current, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_battery_chargin_status
|
||||
********************************************************************/
|
||||
be_local_closure(get_battery_chargin_status, /* name */
|
||||
be_local_closure(AXP192_get_battery_chargin_status, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
1, /* argc */
|
||||
@ -800,13 +800,13 @@ be_local_closure(get_battery_chargin_status, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read", -824204347, 4),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("get_battery_chargin_status", -2061725725, 26)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_battery_chargin_status,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -824,7 +824,7 @@ be_local_closure(get_battery_chargin_status, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_input_power_status
|
||||
********************************************************************/
|
||||
be_local_closure(get_input_power_status, /* name */
|
||||
be_local_closure(AXP192_get_input_power_status, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
1, /* argc */
|
||||
@ -835,14 +835,14 @@ be_local_closure(get_input_power_status, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read", -824204347, 4),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(0),
|
||||
/* K4 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("get_input_power_status", -192138119, 22)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_input_power_status,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -866,29 +866,29 @@ be_local_class(AXP192,
|
||||
&be_class_I2C_Driver,
|
||||
be_nested_map(21,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("get_warning_level", 1737834441, 17, -1), be_const_closure(get_warning_level_closure) },
|
||||
{ be_nested_key("get_vbus_current", 1205347942, 16, -1), be_const_closure(get_vbus_current_closure) },
|
||||
{ be_nested_key("set_chg_current", 336304386, 15, 14), be_const_closure(set_chg_current_closure) },
|
||||
{ be_nested_key("get_bat_current", 1912106073, 15, -1), be_const_closure(get_bat_current_closure) },
|
||||
{ be_nested_key("get_bat_power", -1227592443, 13, 9), be_const_closure(get_bat_power_closure) },
|
||||
{ be_nested_key("json_append", -1292948012, 11, -1), be_const_closure(json_append_closure) },
|
||||
{ be_nested_key("get_vbus_voltage", -1896756895, 16, -1), be_const_closure(get_vbus_voltage_closure) },
|
||||
{ be_nested_key("get_temp", -924047810, 8, -1), be_const_closure(get_temp_closure) },
|
||||
{ be_nested_key("battery_present", -706570238, 15, -1), be_const_closure(battery_present_closure) },
|
||||
{ be_nested_key("get_aps_voltage", -2001930861, 15, -1), be_const_closure(get_aps_voltage_closure) },
|
||||
{ be_nested_key("set_dcdc_enable", 1594690786, 15, -1), be_const_closure(set_dcdc_enable_closure) },
|
||||
{ be_nested_key("set_ldo_voltage", -204466136, 15, 7), be_const_closure(set_ldo_voltage_closure) },
|
||||
{ be_nested_key("init", 380752755, 4, 2), be_const_closure(init_closure) },
|
||||
{ be_nested_key("get_bat_voltage", 706676538, 15, 18), be_const_closure(get_bat_voltage_closure) },
|
||||
{ be_nested_key("set_ldo_enable", -1378465255, 14, -1), be_const_closure(set_ldo_enable_closure) },
|
||||
{ be_nested_key("set_dc_voltage", -2112985360, 14, 13), be_const_closure(set_dc_voltage_closure) },
|
||||
{ be_nested_key("write_gpio", -2027026962, 10, -1), be_const_closure(write_gpio_closure) },
|
||||
{ be_nested_key("web_sensor", -1394870324, 10, -1), be_const_closure(web_sensor_closure) },
|
||||
{ be_nested_key("get_bat_charge_current", 1385293050, 22, 19), be_const_closure(get_bat_charge_current_closure) },
|
||||
{ be_nested_key("get_battery_chargin_status", -2061725725, 26, -1), be_const_closure(get_battery_chargin_status_closure) },
|
||||
{ be_nested_key("get_input_power_status", -192138119, 22, -1), be_const_closure(get_input_power_status_closure) },
|
||||
{ be_const_key(get_warning_level, -1), be_const_closure(AXP192_get_warning_level_closure) },
|
||||
{ be_const_key(get_vbus_current, -1), be_const_closure(AXP192_get_vbus_current_closure) },
|
||||
{ be_const_key(get_aps_voltage, -1), be_const_closure(AXP192_get_aps_voltage_closure) },
|
||||
{ be_const_key(get_bat_current, -1), be_const_closure(AXP192_get_bat_current_closure) },
|
||||
{ be_const_key(get_bat_power, 2), be_const_closure(AXP192_get_bat_power_closure) },
|
||||
{ be_const_key(json_append, -1), be_const_closure(AXP192_json_append_closure) },
|
||||
{ be_const_key(get_vbus_voltage, -1), be_const_closure(AXP192_get_vbus_voltage_closure) },
|
||||
{ be_const_key(get_battery_chargin_status, 9), be_const_closure(AXP192_get_battery_chargin_status_closure) },
|
||||
{ be_const_key(battery_present, -1), be_const_closure(AXP192_battery_present_closure) },
|
||||
{ be_const_key(get_bat_charge_current, 14), be_const_closure(AXP192_get_bat_charge_current_closure) },
|
||||
{ be_const_key(set_dcdc_enable, -1), be_const_closure(AXP192_set_dcdc_enable_closure) },
|
||||
{ be_const_key(get_temp, 19), be_const_closure(AXP192_get_temp_closure) },
|
||||
{ be_const_key(set_chg_current, 13), be_const_closure(AXP192_set_chg_current_closure) },
|
||||
{ be_const_key(set_ldo_enable, 18), be_const_closure(AXP192_set_ldo_enable_closure) },
|
||||
{ be_const_key(set_dc_voltage, -1), be_const_closure(AXP192_set_dc_voltage_closure) },
|
||||
{ be_const_key(get_bat_voltage, 7), be_const_closure(AXP192_get_bat_voltage_closure) },
|
||||
{ be_const_key(write_gpio, -1), be_const_closure(AXP192_write_gpio_closure) },
|
||||
{ be_const_key(web_sensor, -1), be_const_closure(AXP192_web_sensor_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(AXP192_init_closure) },
|
||||
{ be_const_key(set_ldo_voltage, -1), be_const_closure(AXP192_set_ldo_voltage_closure) },
|
||||
{ be_const_key(get_input_power_status, -1), be_const_closure(AXP192_get_input_power_status_closure) },
|
||||
})),
|
||||
(be_nested_const_str("AXP192", 757230128, 6))
|
||||
be_str_literal("AXP192")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -9,12 +9,10 @@
|
||||
*******************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern bclass* be_class_Driver; // Parent class
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: read32
|
||||
********************************************************************/
|
||||
be_local_closure(read32, /* name */
|
||||
be_local_closure(I2C_Driver_read32, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
@ -25,16 +23,16 @@ be_local_closure(read32, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read_bytes", -718234123, 10),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read_bytes),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(0),
|
||||
/* K4 */ be_const_int(1),
|
||||
/* K5 */ be_const_int(2),
|
||||
/* K6 */ be_const_int(3),
|
||||
}),
|
||||
(be_nested_const_str("read32", 1741276240, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_read32,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[20]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -65,7 +63,7 @@ be_local_closure(read32, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: write8
|
||||
********************************************************************/
|
||||
be_local_closure(write8, /* name */
|
||||
be_local_closure(I2C_Driver_write8, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
3, /* argc */
|
||||
@ -76,13 +74,13 @@ be_local_closure(write8, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("write", -1104765092, 5),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(write),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("write8", -1160975764, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_write8,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 8]) { /* code */
|
||||
0x880C0100, // 0000 GETMBR R3 R0 K0
|
||||
0x8C0C0701, // 0001 GETMET R3 R3 K1
|
||||
@ -101,7 +99,7 @@ be_local_closure(write8, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: read12
|
||||
********************************************************************/
|
||||
be_local_closure(read12, /* name */
|
||||
be_local_closure(I2C_Driver_read12, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
@ -112,15 +110,15 @@ be_local_closure(read12, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read_bytes", -718234123, 10),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read_bytes),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(2),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("read12", -3890326, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_read12,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -143,7 +141,7 @@ be_local_closure(read12, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: write_bit
|
||||
********************************************************************/
|
||||
be_local_closure(write_bit, /* name */
|
||||
be_local_closure(I2C_Driver_write_bit, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
4, /* argc */
|
||||
@ -156,11 +154,11 @@ be_local_closure(write_bit, /* name */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_const_int(1),
|
||||
/* K2 */ be_nested_string("write8", -1160975764, 6),
|
||||
/* K3 */ be_nested_string("read8", -1492179129, 5),
|
||||
/* K2 */ be_nested_str(write8),
|
||||
/* K3 */ be_nested_str(read8),
|
||||
}),
|
||||
(be_nested_const_str("write_bit", -1633976860, 9)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_write_bit,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[26]) { /* code */
|
||||
0x14100500, // 0000 LT R4 R2 K0
|
||||
0x74120002, // 0001 JMPT R4 #0005
|
||||
@ -197,7 +195,7 @@ be_local_closure(write_bit, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: read24
|
||||
********************************************************************/
|
||||
be_local_closure(read24, /* name */
|
||||
be_local_closure(I2C_Driver_read24, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
@ -208,16 +206,16 @@ be_local_closure(read24, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read_bytes", -718234123, 10),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read_bytes),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(3),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_const_int(1),
|
||||
/* K6 */ be_const_int(2),
|
||||
}),
|
||||
(be_nested_const_str("read24", 1808533811, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_read24,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[16]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -244,7 +242,7 @@ be_local_closure(read24, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: read8
|
||||
********************************************************************/
|
||||
be_local_closure(read8, /* name */
|
||||
be_local_closure(I2C_Driver_read8, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
@ -255,13 +253,13 @@ be_local_closure(read8, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read", -824204347, 4),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("read8", -1492179129, 5)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_read8,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -279,7 +277,7 @@ be_local_closure(read8, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(I2C_Driver_init, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
4, /* argc */
|
||||
@ -290,19 +288,19 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_string("get_tasmota", 334356779, 11),
|
||||
/* K1 */ be_nested_string("i2c_enabled", 218388101, 11),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K3 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K4 */ be_nested_string("wire_scan", -1623691416, 9),
|
||||
/* K5 */ be_nested_string("function", -1630125495, 8),
|
||||
/* K6 */ be_nested_string("name", -1925595674, 4),
|
||||
/* K7 */ be_nested_string("I2C:", 813483371, 4),
|
||||
/* K8 */ be_nested_string("detected on bus", 1432002650, 15),
|
||||
/* K9 */ be_nested_string("bus", 1607822841, 3),
|
||||
/* K0 */ be_nested_str(get_tasmota),
|
||||
/* K1 */ be_nested_str(i2c_enabled),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_nested_str(wire),
|
||||
/* K4 */ be_nested_str(wire_scan),
|
||||
/* K5 */ be_nested_str(function),
|
||||
/* K6 */ be_nested_str(name),
|
||||
/* K7 */ be_nested_str(I2C_X3A),
|
||||
/* K8 */ be_nested_str(detected_X20on_X20bus),
|
||||
/* K9 */ be_nested_str(bus),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[44]) { /* code */
|
||||
0x8C100100, // 0000 GETMET R4 R0 K0
|
||||
0x7C100200, // 0001 CALL R4 1
|
||||
@ -357,7 +355,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: read13
|
||||
********************************************************************/
|
||||
be_local_closure(read13, /* name */
|
||||
be_local_closure(I2C_Driver_read13, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
@ -368,15 +366,15 @@ be_local_closure(read13, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_string("wire", -212213352, 4),
|
||||
/* K1 */ be_nested_string("read_bytes", -718234123, 10),
|
||||
/* K2 */ be_nested_string("addr", 1087856498, 4),
|
||||
/* K0 */ be_nested_str(wire),
|
||||
/* K1 */ be_nested_str(read_bytes),
|
||||
/* K2 */ be_nested_str(addr),
|
||||
/* K3 */ be_const_int(2),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("read13", 12887293, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_read13,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -395,27 +393,33 @@ be_local_closure(read13, /* name */
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
#include "../generate/be_fixed_be_class_I2C_Driver.h"
|
||||
|
||||
void be_load_driver_i2c_lib(bvm *vm) {
|
||||
/********************************************************************
|
||||
** Solidified class: I2C_Driver
|
||||
********************************************************************/
|
||||
be_local_class(I2C_Driver,
|
||||
3,
|
||||
NULL,
|
||||
be_nested_map(11,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key(read32, -1), be_const_closure(I2C_Driver_read32_closure) },
|
||||
{ be_const_key(write8, 6), be_const_closure(I2C_Driver_write8_closure) },
|
||||
{ be_const_key(name, -1), be_const_var(2) },
|
||||
{ be_const_key(addr, 8), be_const_var(1) },
|
||||
{ be_const_key(read12, -1), be_const_closure(I2C_Driver_read12_closure) },
|
||||
{ be_const_key(wire, 10), be_const_var(0) },
|
||||
{ be_const_key(read13, -1), be_const_closure(I2C_Driver_read13_closure) },
|
||||
{ be_const_key(read24, -1), be_const_closure(I2C_Driver_read24_closure) },
|
||||
{ be_const_key(read8, -1), be_const_closure(I2C_Driver_read8_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(I2C_Driver_init_closure) },
|
||||
{ be_const_key(write_bit, -1), be_const_closure(I2C_Driver_write_bit_closure) },
|
||||
})),
|
||||
be_str_literal("I2C_Driver")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_I2C_Driver_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_I2C_Driver);
|
||||
be_setglobal(vm, "I2C_Driver");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/* @const_object_info_begin
|
||||
|
||||
class be_class_I2C_Driver (scope: global, name: I2C_Driver, super: be_class_Driver) {
|
||||
wire, var
|
||||
addr, var
|
||||
name, var
|
||||
|
||||
init, closure(init_closure)
|
||||
write8, closure(write8_closure)
|
||||
write_bit, closure(write_bit_closure)
|
||||
read8, closure(read8_closure)
|
||||
read12, closure(read12_closure)
|
||||
read13, closure(read13_closure)
|
||||
read24, closure(read24_closure)
|
||||
read32, closure(read32_closure)
|
||||
}
|
||||
@const_object_info_end */
|
||||
|
@ -20,17 +20,17 @@ be_local_closure(Leds_animator_init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_string("strip", -48555823, 5),
|
||||
/* K1 */ be_nested_string("bri", 2112284244, 3),
|
||||
/* K2 */ be_nested_string("running", 343848780, 7),
|
||||
/* K3 */ be_nested_string("pixel_count", -1855836553, 11),
|
||||
/* K4 */ be_nested_string("animators", 279858213, 9),
|
||||
/* K5 */ be_nested_string("clear", 1550717474, 5),
|
||||
/* K6 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K7 */ be_nested_string("add_driver", 1654458371, 10),
|
||||
/* K0 */ be_nested_str(strip),
|
||||
/* K1 */ be_nested_str(bri),
|
||||
/* K2 */ be_nested_str(running),
|
||||
/* K3 */ be_nested_str(pixel_count),
|
||||
/* K4 */ be_nested_str(animators),
|
||||
/* K5 */ be_nested_str(clear),
|
||||
/* K6 */ be_nested_str(tasmota),
|
||||
/* K7 */ be_nested_str(add_driver),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[18]) { /* code */
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x540A0031, // 0001 LDINT R2 50
|
||||
@ -70,10 +70,10 @@ be_local_closure(Leds_animator_set_bri, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("bri", 2112284244, 3),
|
||||
/* K0 */ be_nested_str(bri),
|
||||
}),
|
||||
(be_nested_const_str("set_bri", -1505848517, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_bri,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x80000000, // 0001 RET 0
|
||||
@ -97,10 +97,10 @@ be_local_closure(Leds_animator_stop, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("running", 343848780, 7),
|
||||
/* K0 */ be_nested_str(running),
|
||||
}),
|
||||
(be_nested_const_str("stop", -883741979, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_stop,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0x50040000, // 0000 LDBOOL R1 0 0
|
||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||
@ -125,8 +125,8 @@ be_local_closure(Leds_animator_animate, /* name */
|
||||
NULL, /* no sub protos */
|
||||
0, /* has constants */
|
||||
NULL, /* no const */
|
||||
(be_nested_const_str("animate", -409180496, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_animate,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 1]) { /* code */
|
||||
0x80000000, // 0000 RET 0
|
||||
})
|
||||
@ -149,11 +149,11 @@ be_local_closure(Leds_animator_remove, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K1 */ be_nested_string("remove_driver", 1030243768, 13),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
/* K1 */ be_nested_str(remove_driver),
|
||||
}),
|
||||
(be_nested_const_str("remove", -611183107, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_remove,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -180,16 +180,16 @@ be_local_closure(Leds_animator_every_50ms, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("running", 343848780, 7),
|
||||
/* K0 */ be_nested_str(running),
|
||||
/* K1 */ be_const_int(0),
|
||||
/* K2 */ be_nested_string("animators", 279858213, 9),
|
||||
/* K3 */ be_nested_string("is_running", -2068120035, 10),
|
||||
/* K4 */ be_nested_string("animate", -409180496, 7),
|
||||
/* K2 */ be_nested_str(animators),
|
||||
/* K3 */ be_nested_str(is_running),
|
||||
/* K4 */ be_nested_str(animate),
|
||||
/* K5 */ be_const_int(1),
|
||||
/* K6 */ be_nested_string("remove", -611183107, 6),
|
||||
/* K6 */ be_nested_str(remove),
|
||||
}),
|
||||
(be_nested_const_str("every_50ms", -1911083288, 10)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_every_50ms,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[25]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x78060015, // 0001 JMPF R1 #0018
|
||||
@ -236,10 +236,10 @@ be_local_closure(Leds_animator_get_bri, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("bri", 2112284244, 3),
|
||||
/* K0 */ be_nested_str(bri),
|
||||
}),
|
||||
(be_nested_const_str("get_bri", 2041809895, 7)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_bri,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x80040400, // 0001 RET 1 R2
|
||||
@ -263,10 +263,10 @@ be_local_closure(Leds_animator_start, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("running", 343848780, 7),
|
||||
/* K0 */ be_nested_str(running),
|
||||
}),
|
||||
(be_nested_const_str("start", 1697318111, 5)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_start,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0x50040200, // 0000 LDBOOL R1 1 0
|
||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||
@ -291,12 +291,12 @@ be_local_closure(Leds_animator_add_anim, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("animators", 279858213, 9),
|
||||
/* K1 */ be_nested_string("push", -2022703139, 4),
|
||||
/* K2 */ be_nested_string("run", 718098122, 3),
|
||||
/* K0 */ be_nested_str(animators),
|
||||
/* K1 */ be_nested_str(push),
|
||||
/* K2 */ be_nested_str(run),
|
||||
}),
|
||||
(be_nested_const_str("add_anim", -314304628, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_add_anim,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -325,12 +325,12 @@ be_local_closure(Leds_animator_clear, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("stop", -883741979, 4),
|
||||
/* K1 */ be_nested_string("strip", -48555823, 5),
|
||||
/* K2 */ be_nested_string("clear", 1550717474, 5),
|
||||
/* K0 */ be_nested_str(stop),
|
||||
/* K1 */ be_nested_str(strip),
|
||||
/* K2 */ be_nested_str(clear),
|
||||
}),
|
||||
(be_nested_const_str("clear", 1550717474, 5)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_clear,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x7C040200, // 0001 CALL R1 1
|
||||
@ -352,23 +352,23 @@ be_local_class(Leds_animator,
|
||||
NULL,
|
||||
be_nested_map(15,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, 7), be_const_closure(Leds_animator_init_closure) },
|
||||
{ be_nested_key("set_bri", -1505848517, 7, -1), be_const_closure(Leds_animator_set_bri_closure) },
|
||||
{ be_nested_key("stop", -883741979, 4, -1), be_const_closure(Leds_animator_stop_closure) },
|
||||
{ be_nested_key("strip", -48555823, 5, 4), be_const_var(0) },
|
||||
{ be_nested_key("animators", 279858213, 9, 12), be_const_var(4) },
|
||||
{ be_nested_key("animate", -409180496, 7, -1), be_const_closure(Leds_animator_animate_closure) },
|
||||
{ be_nested_key("remove", -611183107, 6, -1), be_const_closure(Leds_animator_remove_closure) },
|
||||
{ be_nested_key("running", 343848780, 7, -1), be_const_var(3) },
|
||||
{ be_nested_key("every_50ms", -1911083288, 10, -1), be_const_closure(Leds_animator_every_50ms_closure) },
|
||||
{ be_nested_key("bri", 2112284244, 3, 6), be_const_var(2) },
|
||||
{ be_nested_key("get_bri", 2041809895, 7, -1), be_const_closure(Leds_animator_get_bri_closure) },
|
||||
{ be_nested_key("start", 1697318111, 5, -1), be_const_closure(Leds_animator_start_closure) },
|
||||
{ be_nested_key("add_anim", -314304628, 8, 13), be_const_closure(Leds_animator_add_anim_closure) },
|
||||
{ be_nested_key("pixel_count", -1855836553, 11, -1), be_const_var(1) },
|
||||
{ be_nested_key("clear", 1550717474, 5, 1), be_const_closure(Leds_animator_clear_closure) },
|
||||
{ be_const_key(init, 12), be_const_closure(Leds_animator_init_closure) },
|
||||
{ be_const_key(clear, -1), be_const_closure(Leds_animator_clear_closure) },
|
||||
{ be_const_key(stop, -1), be_const_closure(Leds_animator_stop_closure) },
|
||||
{ be_const_key(strip, 4), be_const_var(0) },
|
||||
{ be_const_key(pixel_count, 6), be_const_var(1) },
|
||||
{ be_const_key(animate, -1), be_const_closure(Leds_animator_animate_closure) },
|
||||
{ be_const_key(add_anim, 13), be_const_closure(Leds_animator_add_anim_closure) },
|
||||
{ be_const_key(bri, -1), be_const_var(2) },
|
||||
{ be_const_key(every_50ms, -1), be_const_closure(Leds_animator_every_50ms_closure) },
|
||||
{ be_const_key(remove, 7), be_const_closure(Leds_animator_remove_closure) },
|
||||
{ be_const_key(get_bri, -1), be_const_closure(Leds_animator_get_bri_closure) },
|
||||
{ be_const_key(start, -1), be_const_closure(Leds_animator_start_closure) },
|
||||
{ be_const_key(running, -1), be_const_var(3) },
|
||||
{ be_const_key(animators, -1), be_const_var(4) },
|
||||
{ be_const_key(set_bri, 1), be_const_closure(Leds_animator_set_bri_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Leds_animator", 142168673, 13))
|
||||
be_str_literal("Leds_animator")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,185 +0,0 @@
|
||||
/********************************************************************
|
||||
* Berry class `Leds_matrix`
|
||||
*
|
||||
*******************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_WS2812
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: get_alternate
|
||||
********************************************************************/
|
||||
be_local_closure(Leds_matrix_get_alternate, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_str_literal("alternate"),
|
||||
}),
|
||||
(be_nested_const_str("get_alternate", 1450148894, 13)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x80040200, // 0001 RET 1 R1
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: set_alternate
|
||||
********************************************************************/
|
||||
be_local_closure(Leds_matrix_set_alternate, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
2, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_str_literal("alternate"),
|
||||
}),
|
||||
(be_nested_const_str("set_alternate", 1709680562, 13)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x80000000, // 0001 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: set_matrix_pixel_color
|
||||
********************************************************************/
|
||||
be_local_closure(Leds_matrix_set_matrix_pixel_color, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
5, /* argc */
|
||||
0, /* 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_literal("alternate"),
|
||||
/* K1 */ be_const_int(2),
|
||||
/* K2 */ be_nested_str_literal("set_pixel_color"),
|
||||
/* K3 */ be_nested_str_literal("w"),
|
||||
/* K4 */ be_nested_str_literal("h"),
|
||||
/* K5 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("set_matrix_pixel_color", 1197149462, 22)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[23]) { /* code */
|
||||
0x88140100, // 0000 GETMBR R5 R0 K0
|
||||
0x7816000C, // 0001 JMPF R5 #000F
|
||||
0x10140301, // 0002 MOD R5 R1 K1
|
||||
0x7816000A, // 0003 JMPF R5 #000F
|
||||
0x8C140102, // 0004 GETMET R5 R0 K2
|
||||
0x881C0103, // 0005 GETMBR R7 R0 K3
|
||||
0x081C0207, // 0006 MUL R7 R1 R7
|
||||
0x88200104, // 0007 GETMBR R8 R0 K4
|
||||
0x001C0E08, // 0008 ADD R7 R7 R8
|
||||
0x041C0E02, // 0009 SUB R7 R7 R2
|
||||
0x041C0F05, // 000A SUB R7 R7 K5
|
||||
0x5C200600, // 000B MOVE R8 R3
|
||||
0x5C240800, // 000C MOVE R9 R4
|
||||
0x7C140800, // 000D CALL R5 4
|
||||
0x70020006, // 000E JMP #0016
|
||||
0x8C140102, // 000F GETMET R5 R0 K2
|
||||
0x881C0103, // 0010 GETMBR R7 R0 K3
|
||||
0x081C0207, // 0011 MUL R7 R1 R7
|
||||
0x001C0E02, // 0012 ADD R7 R7 R2
|
||||
0x5C200600, // 0013 MOVE R8 R3
|
||||
0x5C240800, // 0014 MOVE R9 R4
|
||||
0x7C140800, // 0015 CALL R5 4
|
||||
0x80000000, // 0016 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(Leds_matrix_init, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
5, /* argc */
|
||||
0, /* 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_literal("w"),
|
||||
/* K1 */ be_nested_str_literal("h"),
|
||||
/* K2 */ be_nested_str_literal("alternate"),
|
||||
/* K3 */ be_nested_str_literal("init"),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[13]) { /* code */
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x90020202, // 0001 SETMBR R0 K1 R2
|
||||
0x50140000, // 0002 LDBOOL R5 0 0
|
||||
0x90020405, // 0003 SETMBR R0 K2 R5
|
||||
0x60140003, // 0004 GETGBL R5 G3
|
||||
0x5C180000, // 0005 MOVE R6 R0
|
||||
0x7C140200, // 0006 CALL R5 1
|
||||
0x8C140B03, // 0007 GETMET R5 R5 K3
|
||||
0x081C0202, // 0008 MUL R7 R1 R2
|
||||
0x5C200600, // 0009 MOVE R8 R3
|
||||
0x5C240800, // 000A MOVE R9 R4
|
||||
0x7C140800, // 000B CALL R5 4
|
||||
0x80000000, // 000C RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Leds_matrix
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Leds;
|
||||
be_local_class(Leds_matrix,
|
||||
3,
|
||||
&be_class_Leds,
|
||||
be_nested_map(7,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, 3), be_const_closure(Leds_matrix_init_closure) },
|
||||
{ be_nested_key("h", -317966505, 1, -1), be_const_var(0) },
|
||||
{ be_nested_key("set_alternate", 1709680562, 13, 6), be_const_closure(Leds_matrix_set_alternate_closure) },
|
||||
{ be_nested_key("set_matrix_pixel_color", 1197149462, 22, 4), be_const_closure(Leds_matrix_set_matrix_pixel_color_closure) },
|
||||
{ be_nested_key("w", -234078410, 1, -1), be_const_var(1) },
|
||||
{ be_nested_key("get_alternate", 1450148894, 13, 0), be_const_closure(Leds_matrix_get_alternate_closure) },
|
||||
{ be_nested_key("alternate", 1140253277, 9, -1), be_const_var(2) },
|
||||
})),
|
||||
be_str_literal("Leds_matrix")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Leds_matrix_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Leds_matrix);
|
||||
be_setglobal(vm, "Leds_matrix");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
|
||||
#endif // USE_WS2812
|
@ -8,9 +8,7 @@ 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 WS2812_GRBW = 2
|
||||
static SK6812_GRB = 3
|
||||
static SK6812_GRBW = 4
|
||||
static SK6812_GRBW = 2
|
||||
|
||||
# skeleton for native call
|
||||
def call_native() end
|
||||
@ -30,15 +28,13 @@ extern int be_neopixelbus_call_native(bvm *vm);
|
||||
be_local_class(Leds_ntv,
|
||||
2,
|
||||
NULL,
|
||||
be_nested_map(7,
|
||||
be_nested_map(5,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("WS2812_GRB", 1736405692, 10, 5), be_const_int(1) },
|
||||
{ be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) },
|
||||
{ be_nested_key("WS2812_GRBW", -660477967, 11, 3), be_const_int(2) },
|
||||
{ be_nested_key("call_native", 1389147405, 11, -1), be_const_func(be_neopixelbus_call_native) },
|
||||
{ be_nested_key("SK6812_GRBW", 81157857, 11, -1), be_const_int(4) },
|
||||
{ be_nested_key("_t", 1527481326, 2, -1), be_const_var(1) },
|
||||
{ be_nested_key("SK6812_GRB", 1159411308, 10, 1), be_const_int(3) },
|
||||
{ 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_literal("Leds_ntv")
|
||||
);
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: set_time
|
||||
********************************************************************/
|
||||
be_local_closure(set_time, /* name */
|
||||
be_local_closure(lv_clock_icon_set_time, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
4, /* argc */
|
||||
@ -21,19 +21,19 @@ be_local_closure(set_time, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_string("string", 398550328, 6),
|
||||
/* K1 */ be_nested_string("hour", -1241306097, 4),
|
||||
/* K2 */ be_nested_string("minute", 954666857, 6),
|
||||
/* K3 */ be_nested_string("sec", -1155074638, 3),
|
||||
/* K4 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K5 */ be_nested_string("%02d%s%02d", 1587999717, 10),
|
||||
/* K0 */ be_nested_str(string),
|
||||
/* K1 */ be_nested_str(hour),
|
||||
/* K2 */ be_nested_str(minute),
|
||||
/* K3 */ be_nested_str(sec),
|
||||
/* K4 */ be_nested_str(format),
|
||||
/* K5 */ be_nested_str(_X2502d_X25s_X2502d),
|
||||
/* K6 */ be_const_int(2),
|
||||
/* K7 */ be_nested_string(":", 1057798253, 1),
|
||||
/* K8 */ be_nested_string(" ", 621580159, 1),
|
||||
/* K9 */ be_nested_string("set_text", 1849641155, 8),
|
||||
/* K7 */ be_nested_str(_X3A),
|
||||
/* K8 */ be_nested_str(_X20),
|
||||
/* K9 */ be_nested_str(set_text),
|
||||
}),
|
||||
(be_nested_const_str("set_time", 900236405, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_time,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[27]) { /* code */
|
||||
0xA4120000, // 0000 IMPORT R4 K0
|
||||
0x88140101, // 0001 GETMBR R5 R0 K1
|
||||
@ -71,7 +71,7 @@ be_local_closure(set_time, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: every_second
|
||||
********************************************************************/
|
||||
be_local_closure(every_second, /* name */
|
||||
be_local_closure(lv_clock_icon_every_second, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
1, /* argc */
|
||||
@ -82,18 +82,18 @@ be_local_closure(every_second, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K1 */ be_nested_string("time_dump", -964556549, 9),
|
||||
/* K2 */ be_nested_string("rtc", 1070575216, 3),
|
||||
/* K3 */ be_nested_string("local", -1673304312, 5),
|
||||
/* K4 */ be_nested_string("year", -1367388900, 4),
|
||||
/* K5 */ be_nested_string("set_time", 900236405, 8),
|
||||
/* K6 */ be_nested_string("hour", -1241306097, 4),
|
||||
/* K7 */ be_nested_string("min", -913357481, 3),
|
||||
/* K8 */ be_nested_string("sec", -1155074638, 3),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
/* K1 */ be_nested_str(time_dump),
|
||||
/* K2 */ be_nested_str(rtc),
|
||||
/* K3 */ be_nested_str(local),
|
||||
/* K4 */ be_nested_str(year),
|
||||
/* K5 */ be_nested_str(set_time),
|
||||
/* K6 */ be_nested_str(hour),
|
||||
/* K7 */ be_nested_str(min),
|
||||
/* K8 */ be_nested_str(sec),
|
||||
}),
|
||||
(be_nested_const_str("every_second", 2075451465, 12)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_every_second,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[17]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -121,7 +121,7 @@ be_local_closure(every_second, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(lv_clock_icon_init, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
2, /* argc */
|
||||
@ -132,31 +132,31 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[22]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K2 */ be_nested_string("seg7_font", -195276607, 9),
|
||||
/* K3 */ be_nested_string("set_style_text_font", 1028590019, 19),
|
||||
/* K4 */ be_nested_string("PART_MAIN", -1821475788, 9),
|
||||
/* K5 */ be_nested_string("STATE_DEFAULT", 712406428, 13),
|
||||
/* K6 */ be_nested_string("get_height", -723211773, 10),
|
||||
/* K7 */ be_nested_string("set_text", 1849641155, 8),
|
||||
/* K8 */ be_nested_string("--:--", 1370615441, 5),
|
||||
/* K9 */ be_nested_string("refr_size", 1958144468, 9),
|
||||
/* K10 */ be_nested_string("get_width", -1001549996, 9),
|
||||
/* K11 */ be_nested_string("set_y", 1866178391, 5),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(lv),
|
||||
/* K2 */ be_nested_str(seg7_font),
|
||||
/* K3 */ be_nested_str(set_style_text_font),
|
||||
/* K4 */ be_nested_str(PART_MAIN),
|
||||
/* K5 */ be_nested_str(STATE_DEFAULT),
|
||||
/* K6 */ be_nested_str(get_height),
|
||||
/* K7 */ be_nested_str(set_text),
|
||||
/* K8 */ be_nested_str(_X2D_X2D_X3A_X2D_X2D),
|
||||
/* K9 */ be_nested_str(refr_size),
|
||||
/* K10 */ be_nested_str(get_width),
|
||||
/* K11 */ be_nested_str(set_y),
|
||||
/* K12 */ be_const_int(2),
|
||||
/* K13 */ be_nested_string("get_style_pad_right", -1144679830, 19),
|
||||
/* K14 */ be_nested_string("set_x", 1849400772, 5),
|
||||
/* K13 */ be_nested_str(get_style_pad_right),
|
||||
/* K14 */ be_nested_str(set_x),
|
||||
/* K15 */ be_const_int(3),
|
||||
/* K16 */ be_nested_string("set_style_pad_right", -980898242, 19),
|
||||
/* K17 */ be_nested_string("set_style_bg_color", 1689513089, 18),
|
||||
/* K18 */ be_nested_string("color", 1031692888, 5),
|
||||
/* K19 */ be_nested_string("COLOR_BLACK", 264427940, 11),
|
||||
/* K20 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K21 */ be_nested_string("add_driver", 1654458371, 10),
|
||||
/* K16 */ be_nested_str(set_style_pad_right),
|
||||
/* K17 */ be_nested_str(set_style_bg_color),
|
||||
/* K18 */ be_nested_str(color),
|
||||
/* K19 */ be_nested_str(COLOR_BLACK),
|
||||
/* K20 */ be_nested_str(tasmota),
|
||||
/* K21 */ be_nested_str(add_driver),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[82]) { /* code */
|
||||
0x60080003, // 0000 GETGBL R2 G3
|
||||
0x5C0C0000, // 0001 MOVE R3 R0
|
||||
@ -249,7 +249,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: del
|
||||
********************************************************************/
|
||||
be_local_closure(del, /* name */
|
||||
be_local_closure(lv_clock_icon_del, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -260,12 +260,12 @@ be_local_closure(del, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("del", -816214454, 3),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("remove_driver", 1030243768, 13),
|
||||
/* K0 */ be_nested_str(del),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(remove_driver),
|
||||
}),
|
||||
(be_nested_const_str("del", -816214454, 3)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_del,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x60040003, // 0000 GETGBL R1 G3
|
||||
0x5C080000, // 0001 MOVE R2 R0
|
||||
@ -292,15 +292,15 @@ be_local_class(lv_clock_icon,
|
||||
&be_class_lv_label,
|
||||
be_nested_map(7,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("sec", -1155074638, 3, -1), be_const_var(2) },
|
||||
{ be_nested_key("hour", -1241306097, 4, -1), be_const_var(0) },
|
||||
{ be_nested_key("set_time", 900236405, 8, 6), be_const_closure(set_time_closure) },
|
||||
{ be_nested_key("every_second", 2075451465, 12, -1), be_const_closure(every_second_closure) },
|
||||
{ be_nested_key("minute", 954666857, 6, -1), be_const_var(1) },
|
||||
{ be_nested_key("init", 380752755, 4, 2), be_const_closure(init_closure) },
|
||||
{ be_nested_key("del", -816214454, 3, -1), be_const_closure(del_closure) },
|
||||
{ be_const_key(sec, -1), be_const_var(2) },
|
||||
{ be_const_key(hour, -1), be_const_var(0) },
|
||||
{ be_const_key(set_time, 6), be_const_closure(lv_clock_icon_set_time_closure) },
|
||||
{ be_const_key(every_second, -1), be_const_closure(lv_clock_icon_every_second_closure) },
|
||||
{ be_const_key(minute, -1), be_const_var(1) },
|
||||
{ be_const_key(init, 2), be_const_closure(lv_clock_icon_init_closure) },
|
||||
{ be_const_key(del, -1), be_const_closure(lv_clock_icon_del_closure) },
|
||||
})),
|
||||
(be_nested_const_str("lv_clock_icon", -1037751086, 13))
|
||||
be_str_literal("lv_clock_icon")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: get_object_from_ptr
|
||||
********************************************************************/
|
||||
be_local_closure(get_object_from_ptr, /* name */
|
||||
be_local_closure(LVGL_glob_get_object_from_ptr, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -21,11 +21,11 @@ be_local_closure(get_object_from_ptr, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("cb_obj", 1195696482, 6),
|
||||
/* K1 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K0 */ be_nested_str(cb_obj),
|
||||
/* K1 */ be_nested_str(find),
|
||||
}),
|
||||
(be_nested_const_str("get_object_from_ptr", -1949948095, 19)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_object_from_ptr,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x4C0C0000, // 0001 LDNIL R3
|
||||
@ -46,7 +46,7 @@ be_local_closure(get_object_from_ptr, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: widget_event_impl
|
||||
********************************************************************/
|
||||
be_local_closure(widget_event_impl, /* name */
|
||||
be_local_closure(LVGL_glob_widget_event_impl, /* name */
|
||||
be_nested_proto(
|
||||
12, /* nstack */
|
||||
3, /* argc */
|
||||
@ -57,18 +57,18 @@ be_local_closure(widget_event_impl, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_string("introspect", 164638290, 10),
|
||||
/* K1 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K2 */ be_nested_string("lv_obj_class", -255311002, 12),
|
||||
/* K3 */ be_nested_string("lv_event", -1860877328, 8),
|
||||
/* K4 */ be_nested_string("target", 845187144, 6),
|
||||
/* K5 */ be_nested_string("get_object_from_ptr", -1949948095, 19),
|
||||
/* K6 */ be_nested_string("instance", 193386898, 8),
|
||||
/* K7 */ be_nested_string("get", 1410115415, 3),
|
||||
/* K8 */ be_nested_string("widget_event", 1951408186, 12),
|
||||
/* K0 */ be_nested_str(introspect),
|
||||
/* K1 */ be_nested_str(lv),
|
||||
/* K2 */ be_nested_str(lv_obj_class),
|
||||
/* K3 */ be_nested_str(lv_event),
|
||||
/* K4 */ be_nested_str(target),
|
||||
/* K5 */ be_nested_str(get_object_from_ptr),
|
||||
/* K6 */ be_nested_str(instance),
|
||||
/* K7 */ be_nested_str(get),
|
||||
/* K8 */ be_nested_str(widget_event),
|
||||
}),
|
||||
(be_nested_const_str("widget_event_impl", -2116536735, 17)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_widget_event_impl,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[30]) { /* code */
|
||||
0xA40E0000, // 0000 IMPORT R3 K0
|
||||
0xB8120200, // 0001 GETNGBL R4 K1
|
||||
@ -109,7 +109,7 @@ be_local_closure(widget_event_impl, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: lvgl_event_dispatch
|
||||
********************************************************************/
|
||||
be_local_closure(lvgl_event_dispatch, /* name */
|
||||
be_local_closure(LVGL_glob_lvgl_event_dispatch, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
2, /* argc */
|
||||
@ -120,16 +120,16 @@ be_local_closure(lvgl_event_dispatch, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("introspect", 164638290, 10),
|
||||
/* K1 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K2 */ be_nested_string("lv_event", -1860877328, 8),
|
||||
/* K3 */ be_nested_string("toptr", -915119842, 5),
|
||||
/* K4 */ be_nested_string("target", 845187144, 6),
|
||||
/* K5 */ be_nested_string("cb_event_closure", -466699971, 16),
|
||||
/* K6 */ be_nested_string("get_object_from_ptr", -1949948095, 19),
|
||||
/* K0 */ be_nested_str(introspect),
|
||||
/* K1 */ be_nested_str(lv),
|
||||
/* K2 */ be_nested_str(lv_event),
|
||||
/* K3 */ be_nested_str(toptr),
|
||||
/* K4 */ be_nested_str(target),
|
||||
/* K5 */ be_nested_str(cb_event_closure),
|
||||
/* K6 */ be_nested_str(get_object_from_ptr),
|
||||
}),
|
||||
(be_nested_const_str("lvgl_event_dispatch", 2104396622, 19)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_lvgl_event_dispatch,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[20]) { /* code */
|
||||
0xA40A0000, // 0000 IMPORT R2 K0
|
||||
0xB80E0200, // 0001 GETNGBL R3 K1
|
||||
@ -160,7 +160,7 @@ be_local_closure(lvgl_event_dispatch, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: widget_dtor_impl
|
||||
********************************************************************/
|
||||
be_local_closure(widget_dtor_impl, /* name */
|
||||
be_local_closure(LVGL_glob_widget_dtor_impl, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
@ -171,16 +171,16 @@ be_local_closure(widget_dtor_impl, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("introspect", 164638290, 10),
|
||||
/* K1 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K2 */ be_nested_string("lv_obj_class", -255311002, 12),
|
||||
/* K3 */ be_nested_string("get_object_from_ptr", -1949948095, 19),
|
||||
/* K4 */ be_nested_string("instance", 193386898, 8),
|
||||
/* K5 */ be_nested_string("get", 1410115415, 3),
|
||||
/* K6 */ be_nested_string("widget_destructor", -87578951, 17),
|
||||
/* K0 */ be_nested_str(introspect),
|
||||
/* K1 */ be_nested_str(lv),
|
||||
/* K2 */ be_nested_str(lv_obj_class),
|
||||
/* K3 */ be_nested_str(get_object_from_ptr),
|
||||
/* K4 */ be_nested_str(instance),
|
||||
/* K5 */ be_nested_str(get),
|
||||
/* K6 */ be_nested_str(widget_destructor),
|
||||
}),
|
||||
(be_nested_const_str("widget_dtor_impl", 520430610, 16)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_widget_dtor_impl,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[22]) { /* code */
|
||||
0xA40E0000, // 0000 IMPORT R3 K0
|
||||
0xB8120200, // 0001 GETNGBL R4 K1
|
||||
@ -213,7 +213,7 @@ be_local_closure(widget_dtor_impl, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: register_obj
|
||||
********************************************************************/
|
||||
be_local_closure(register_obj, /* name */
|
||||
be_local_closure(LVGL_glob_register_obj, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
2, /* argc */
|
||||
@ -224,11 +224,11 @@ be_local_closure(register_obj, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("cb_obj", 1195696482, 6),
|
||||
/* K1 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K0 */ be_nested_str(cb_obj),
|
||||
/* K1 */ be_nested_str(_p),
|
||||
}),
|
||||
(be_nested_const_str("register_obj", -312352526, 12)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_register_obj,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[13]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x4C0C0000, // 0001 LDNIL R3
|
||||
@ -252,7 +252,7 @@ be_local_closure(register_obj, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: gen_cb
|
||||
********************************************************************/
|
||||
be_local_closure(gen_cb, /* name */
|
||||
be_local_closure(LVGL_glob_gen_cb, /* name */
|
||||
be_nested_proto(
|
||||
8, /* nstack */
|
||||
5, /* argc */
|
||||
@ -273,10 +273,10 @@ be_local_closure(gen_cb, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("lvgl_event_dispatch", 2104396622, 19),
|
||||
/* K0 */ be_nested_str(lvgl_event_dispatch),
|
||||
}),
|
||||
(be_nested_const_str("<lambda>", 607256038, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__X3Clambda_X3E,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x68040000, // 0000 GETUPV R1 U0
|
||||
0x8C040300, // 0001 GETMET R1 R1 K0
|
||||
@ -288,17 +288,17 @@ be_local_closure(gen_cb, /* name */
|
||||
}),
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_string("lv_event_cb", -1814236280, 11),
|
||||
/* K1 */ be_nested_string("cb_event_closure", -466699971, 16),
|
||||
/* K2 */ be_nested_string("event_cb", -1166269279, 8),
|
||||
/* K3 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K4 */ be_nested_string("gen_cb", -1049739745, 6),
|
||||
/* K5 */ be_nested_string("register_obj", -312352526, 12),
|
||||
/* K6 */ be_nested_string("null_cb", -1961430836, 7),
|
||||
/* K7 */ be_nested_string("cb_do_nothing", 1488730702, 13),
|
||||
/* K0 */ be_nested_str(lv_event_cb),
|
||||
/* K1 */ be_nested_str(cb_event_closure),
|
||||
/* K2 */ be_nested_str(event_cb),
|
||||
/* K3 */ be_nested_str(tasmota),
|
||||
/* K4 */ be_nested_str(gen_cb),
|
||||
/* K5 */ be_nested_str(register_obj),
|
||||
/* K6 */ be_nested_str(null_cb),
|
||||
/* K7 */ be_nested_str(cb_do_nothing),
|
||||
}),
|
||||
(be_nested_const_str("gen_cb", -1049739745, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_gen_cb,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[41]) { /* code */
|
||||
0x1C140300, // 0000 EQ R5 R1 K0
|
||||
0x78160018, // 0001 JMPF R5 #001B
|
||||
@ -350,7 +350,7 @@ be_local_closure(gen_cb, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: deregister_obj
|
||||
********************************************************************/
|
||||
be_local_closure(deregister_obj, /* name */
|
||||
be_local_closure(LVGL_glob_deregister_obj, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -361,12 +361,12 @@ be_local_closure(deregister_obj, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("cb_obj", 1195696482, 6),
|
||||
/* K1 */ be_nested_string("remove", -611183107, 6),
|
||||
/* K2 */ be_nested_string("cb_event_closure", -466699971, 16),
|
||||
/* K0 */ be_nested_str(cb_obj),
|
||||
/* K1 */ be_nested_str(remove),
|
||||
/* K2 */ be_nested_str(cb_event_closure),
|
||||
}),
|
||||
(be_nested_const_str("deregister_obj", -385000303, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_deregister_obj,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[17]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x4C0C0000, // 0001 LDNIL R3
|
||||
@ -394,7 +394,7 @@ be_local_closure(deregister_obj, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: widget_cb
|
||||
********************************************************************/
|
||||
be_local_closure(widget_cb, /* name */
|
||||
be_local_closure(LVGL_glob_widget_cb, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -415,10 +415,10 @@ be_local_closure(widget_cb, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("widget_ctor_impl", 194252479, 16),
|
||||
/* K0 */ be_nested_str(widget_ctor_impl),
|
||||
}),
|
||||
(be_nested_const_str("<lambda>", 607256038, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__X3Clambda_X3E,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x68080000, // 0000 GETUPV R2 U0
|
||||
0x8C080500, // 0001 GETMET R2 R2 K0
|
||||
@ -440,10 +440,10 @@ be_local_closure(widget_cb, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("widget_dtor_impl", 520430610, 16),
|
||||
/* K0 */ be_nested_str(widget_dtor_impl),
|
||||
}),
|
||||
(be_nested_const_str("<lambda>", 607256038, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__X3Clambda_X3E,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x68080000, // 0000 GETUPV R2 U0
|
||||
0x8C080500, // 0001 GETMET R2 R2 K0
|
||||
@ -465,10 +465,10 @@ be_local_closure(widget_cb, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("widget_event_impl", -2116536735, 17),
|
||||
/* K0 */ be_nested_str(widget_event_impl),
|
||||
}),
|
||||
(be_nested_const_str("<lambda>", 607256038, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__X3Clambda_X3E,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x68080000, // 0000 GETUPV R2 U0
|
||||
0x8C080500, // 0001 GETMET R2 R2 K0
|
||||
@ -481,24 +481,24 @@ be_local_closure(widget_cb, /* name */
|
||||
}),
|
||||
1, /* has constants */
|
||||
( &(const bvalue[15]) { /* constants */
|
||||
/* K0 */ be_nested_string("widget_ctor_cb", 876007560, 14),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("gen_cb", -1049739745, 6),
|
||||
/* K3 */ be_nested_string("widget_dtor_cb", -1143421451, 14),
|
||||
/* K4 */ be_nested_string("widget_event_cb", 1508466754, 15),
|
||||
/* K5 */ be_nested_string("widget_struct_default", 781673633, 21),
|
||||
/* K6 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K7 */ be_nested_string("lv_obj_class", -255311002, 12),
|
||||
/* K8 */ be_nested_string("lv_obj", -37134147, 6),
|
||||
/* K9 */ be_nested_string("_class", -1562820946, 6),
|
||||
/* K10 */ be_nested_string("copy", -446502332, 4),
|
||||
/* K11 */ be_nested_string("base_class", 1107737279, 10),
|
||||
/* K12 */ be_nested_string("constructor_cb", -1805861999, 14),
|
||||
/* K13 */ be_nested_string("destructor_cb", 1930283190, 13),
|
||||
/* K14 */ be_nested_string("event_cb", -1166269279, 8),
|
||||
/* K0 */ be_nested_str(widget_ctor_cb),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(gen_cb),
|
||||
/* K3 */ be_nested_str(widget_dtor_cb),
|
||||
/* K4 */ be_nested_str(widget_event_cb),
|
||||
/* K5 */ be_nested_str(widget_struct_default),
|
||||
/* K6 */ be_nested_str(lv),
|
||||
/* K7 */ be_nested_str(lv_obj_class),
|
||||
/* K8 */ be_nested_str(lv_obj),
|
||||
/* K9 */ be_nested_str(_class),
|
||||
/* K10 */ be_nested_str(copy),
|
||||
/* K11 */ be_nested_str(base_class),
|
||||
/* K12 */ be_nested_str(constructor_cb),
|
||||
/* K13 */ be_nested_str(destructor_cb),
|
||||
/* K14 */ be_nested_str(event_cb),
|
||||
}),
|
||||
(be_nested_const_str("widget_cb", -1531384241, 9)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_widget_cb,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[56]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x4C080000, // 0001 LDNIL R2
|
||||
@ -565,7 +565,7 @@ be_local_closure(widget_cb, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: _anonymous_
|
||||
********************************************************************/
|
||||
be_local_closure(_anonymous_, /* name */
|
||||
be_local_closure(LVGL_glob__anonymous_, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
0, /* argc */
|
||||
@ -576,10 +576,10 @@ be_local_closure(_anonymous_, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("LVG: call to unsupported callback", 504176819, 33),
|
||||
/* K0 */ be_nested_str(LVG_X3A_X20call_X20to_X20unsupported_X20callback),
|
||||
}),
|
||||
(be_nested_const_str("_anonymous_", 1957281476, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__anonymous_,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0x60000001, // 0000 GETGBL R0 G1
|
||||
0x58040000, // 0001 LDCONST R1 K0
|
||||
@ -594,7 +594,7 @@ be_local_closure(_anonymous_, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: create_custom_widget
|
||||
********************************************************************/
|
||||
be_local_closure(create_custom_widget, /* name */
|
||||
be_local_closure(LVGL_glob_create_custom_widget, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
@ -605,36 +605,36 @@ be_local_closure(create_custom_widget, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[27]) { /* constants */
|
||||
/* K0 */ be_nested_string("introspect", 164638290, 10),
|
||||
/* K1 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K2 */ be_nested_string("lv_obj", -37134147, 6),
|
||||
/* K3 */ be_nested_string("value_error", 773297791, 11),
|
||||
/* K4 */ be_nested_string("arg must be a subclass of lv_obj", 1641882079, 32),
|
||||
/* K5 */ be_nested_string("widget_struct_by_class", -488593454, 22),
|
||||
/* K6 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K7 */ be_nested_string("widget_cb", -1531384241, 9),
|
||||
/* K8 */ be_nested_string("widget_struct_default", 781673633, 21),
|
||||
/* K9 */ be_nested_string("copy", -446502332, 4),
|
||||
/* K10 */ be_nested_string("base_class", 1107737279, 10),
|
||||
/* K11 */ be_nested_string("_class", -1562820946, 6),
|
||||
/* K12 */ be_nested_string("get", 1410115415, 3),
|
||||
/* K13 */ be_nested_string("widget_width_def", -308888434, 16),
|
||||
/* K14 */ be_nested_string("width_def", 1143717879, 9),
|
||||
/* K15 */ be_nested_string("widget_height_def", -1163299483, 17),
|
||||
/* K16 */ be_nested_string("height_def", -1946728458, 10),
|
||||
/* K17 */ be_nested_string("widget_editable", -473174010, 15),
|
||||
/* K18 */ be_nested_string("editable", 60532369, 8),
|
||||
/* K19 */ be_nested_string("widget_group_def", 1246968785, 16),
|
||||
/* K20 */ be_nested_string("group_def", 1524213328, 9),
|
||||
/* K21 */ be_nested_string("widget_instance_size", 2055354779, 20),
|
||||
/* K22 */ be_nested_string("instance_size", -14697778, 13),
|
||||
/* K23 */ be_nested_string("obj_class_create_obj", -990576664, 20),
|
||||
/* K24 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K25 */ be_nested_string("register_obj", -312352526, 12),
|
||||
/* K26 */ be_nested_string("class_init_obj", 178410604, 14),
|
||||
/* K0 */ be_nested_str(introspect),
|
||||
/* K1 */ be_nested_str(lv),
|
||||
/* K2 */ be_nested_str(lv_obj),
|
||||
/* K3 */ be_nested_str(value_error),
|
||||
/* K4 */ be_nested_str(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj),
|
||||
/* K5 */ be_nested_str(widget_struct_by_class),
|
||||
/* K6 */ be_nested_str(find),
|
||||
/* K7 */ be_nested_str(widget_cb),
|
||||
/* K8 */ be_nested_str(widget_struct_default),
|
||||
/* K9 */ be_nested_str(copy),
|
||||
/* K10 */ be_nested_str(base_class),
|
||||
/* K11 */ be_nested_str(_class),
|
||||
/* K12 */ be_nested_str(get),
|
||||
/* K13 */ be_nested_str(widget_width_def),
|
||||
/* K14 */ be_nested_str(width_def),
|
||||
/* K15 */ be_nested_str(widget_height_def),
|
||||
/* K16 */ be_nested_str(height_def),
|
||||
/* K17 */ be_nested_str(widget_editable),
|
||||
/* K18 */ be_nested_str(editable),
|
||||
/* K19 */ be_nested_str(widget_group_def),
|
||||
/* K20 */ be_nested_str(group_def),
|
||||
/* K21 */ be_nested_str(widget_instance_size),
|
||||
/* K22 */ be_nested_str(instance_size),
|
||||
/* K23 */ be_nested_str(obj_class_create_obj),
|
||||
/* K24 */ be_nested_str(_p),
|
||||
/* K25 */ be_nested_str(register_obj),
|
||||
/* K26 */ be_nested_str(class_init_obj),
|
||||
}),
|
||||
(be_nested_const_str("create_custom_widget", 1140594778, 20)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_create_custom_widget,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[86]) { /* code */
|
||||
0xA40E0000, // 0000 IMPORT R3 K0
|
||||
0x6010000F, // 0001 GETGBL R4 G15
|
||||
@ -731,7 +731,7 @@ be_local_closure(create_custom_widget, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: widget_ctor_impl
|
||||
********************************************************************/
|
||||
be_local_closure(widget_ctor_impl, /* name */
|
||||
be_local_closure(LVGL_glob_widget_ctor_impl, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
@ -742,18 +742,18 @@ be_local_closure(widget_ctor_impl, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_string("introspect", 164638290, 10),
|
||||
/* K1 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K2 */ be_nested_string("lv_obj_class", -255311002, 12),
|
||||
/* K3 */ be_nested_string("get_object_from_ptr", -1949948095, 19),
|
||||
/* K4 */ be_nested_string("cb_obj", 1195696482, 6),
|
||||
/* K5 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K6 */ be_nested_string("instance", 193386898, 8),
|
||||
/* K7 */ be_nested_string("get", 1410115415, 3),
|
||||
/* K8 */ be_nested_string("widget_constructor", -1751181362, 18),
|
||||
/* K0 */ be_nested_str(introspect),
|
||||
/* K1 */ be_nested_str(lv),
|
||||
/* K2 */ be_nested_str(lv_obj_class),
|
||||
/* K3 */ be_nested_str(get_object_from_ptr),
|
||||
/* K4 */ be_nested_str(cb_obj),
|
||||
/* K5 */ be_nested_str(find),
|
||||
/* K6 */ be_nested_str(instance),
|
||||
/* K7 */ be_nested_str(get),
|
||||
/* K8 */ be_nested_str(widget_constructor),
|
||||
}),
|
||||
(be_nested_const_str("widget_ctor_impl", 194252479, 16)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_widget_ctor_impl,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[29]) { /* code */
|
||||
0xA40E0000, // 0000 IMPORT R3 K0
|
||||
0xB8120200, // 0001 GETNGBL R4 K1
|
||||
@ -798,28 +798,28 @@ be_local_class(LVGL_glob,
|
||||
NULL,
|
||||
be_nested_map(20,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("widget_ctor_cb", 876007560, 14, 9), be_const_var(4) },
|
||||
{ be_nested_key("get_object_from_ptr", -1949948095, 19, 4), be_const_closure(get_object_from_ptr_closure) },
|
||||
{ be_nested_key("cb_obj", 1195696482, 6, 7), be_const_var(0) },
|
||||
{ be_nested_key("widget_struct_by_class", -488593454, 22, -1), be_const_var(8) },
|
||||
{ be_nested_key("widget_event_impl", -2116536735, 17, -1), be_const_closure(widget_event_impl_closure) },
|
||||
{ be_nested_key("widget_dtor_cb", -1143421451, 14, 6), be_const_var(5) },
|
||||
{ be_nested_key("cb_event_closure", -466699971, 16, -1), be_const_var(1) },
|
||||
{ be_nested_key("lvgl_event_dispatch", 2104396622, 19, 16), be_const_closure(lvgl_event_dispatch_closure) },
|
||||
{ be_nested_key("widget_dtor_impl", 520430610, 16, -1), be_const_closure(widget_dtor_impl_closure) },
|
||||
{ be_nested_key("null_cb", -1961430836, 7, -1), be_const_var(3) },
|
||||
{ be_nested_key("register_obj", -312352526, 12, 8), be_const_closure(register_obj_closure) },
|
||||
{ be_nested_key("gen_cb", -1049739745, 6, -1), be_const_closure(gen_cb_closure) },
|
||||
{ be_nested_key("widget_struct_default", 781673633, 21, -1), be_const_var(7) },
|
||||
{ be_nested_key("deregister_obj", -385000303, 14, 12), be_const_closure(deregister_obj_closure) },
|
||||
{ be_nested_key("widget_event_cb", 1508466754, 15, -1), be_const_var(6) },
|
||||
{ be_nested_key("widget_cb", -1531384241, 9, -1), be_const_closure(widget_cb_closure) },
|
||||
{ be_nested_key("cb_do_nothing", 1488730702, 13, 3), be_const_closure(_anonymous__closure) },
|
||||
{ be_nested_key("event_cb", -1166269279, 8, -1), be_const_var(2) },
|
||||
{ be_nested_key("create_custom_widget", 1140594778, 20, -1), be_const_closure(create_custom_widget_closure) },
|
||||
{ be_nested_key("widget_ctor_impl", 194252479, 16, -1), be_const_closure(widget_ctor_impl_closure) },
|
||||
{ be_const_key(widget_ctor_cb, 9), be_const_var(4) },
|
||||
{ be_const_key(get_object_from_ptr, 4), be_const_closure(LVGL_glob_get_object_from_ptr_closure) },
|
||||
{ be_const_key(cb_obj, 7), be_const_var(0) },
|
||||
{ be_const_key(widget_struct_by_class, -1), be_const_var(8) },
|
||||
{ be_const_key(widget_event_impl, -1), be_const_closure(LVGL_glob_widget_event_impl_closure) },
|
||||
{ be_const_key(widget_dtor_cb, 6), be_const_var(5) },
|
||||
{ be_const_key(cb_event_closure, -1), be_const_var(1) },
|
||||
{ be_const_key(lvgl_event_dispatch, 16), be_const_closure(LVGL_glob_lvgl_event_dispatch_closure) },
|
||||
{ be_const_key(widget_dtor_impl, -1), be_const_closure(LVGL_glob_widget_dtor_impl_closure) },
|
||||
{ be_const_key(null_cb, -1), be_const_var(3) },
|
||||
{ be_const_key(register_obj, 8), be_const_closure(LVGL_glob_register_obj_closure) },
|
||||
{ be_const_key(gen_cb, -1), be_const_closure(LVGL_glob_gen_cb_closure) },
|
||||
{ be_const_key(widget_struct_default, -1), be_const_var(7) },
|
||||
{ be_const_key(deregister_obj, 12), be_const_closure(LVGL_glob_deregister_obj_closure) },
|
||||
{ be_const_key(widget_event_cb, -1), be_const_var(6) },
|
||||
{ be_const_key(widget_cb, -1), be_const_closure(LVGL_glob_widget_cb_closure) },
|
||||
{ be_const_key(cb_do_nothing, 3), be_const_closure(LVGL_glob__anonymous__closure) },
|
||||
{ be_const_key(event_cb, -1), be_const_var(2) },
|
||||
{ be_const_key(create_custom_widget, -1), be_const_closure(LVGL_glob_create_custom_widget_closure) },
|
||||
{ be_const_key(widget_ctor_impl, -1), be_const_closure(LVGL_glob_widget_ctor_impl_closure) },
|
||||
})),
|
||||
(be_nested_const_str("LVGL_glob", 315437079, 9))
|
||||
be_str_literal("LVGL_glob")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: set_percentage
|
||||
********************************************************************/
|
||||
be_local_closure(set_percentage, /* name */
|
||||
be_local_closure(lv_signal_arcs_set_percentage, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -21,12 +21,12 @@ be_local_closure(set_percentage, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K0 */ be_nested_str(percentage),
|
||||
/* K1 */ be_const_int(0),
|
||||
/* K2 */ be_nested_string("invalidate", -1645232368, 10),
|
||||
/* K2 */ be_nested_str(invalidate),
|
||||
}),
|
||||
(be_nested_const_str("set_percentage", -1342944572, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_percentage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[18]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x540E0018, // 0001 LDINT R3 25
|
||||
@ -55,7 +55,7 @@ be_local_closure(set_percentage, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(lv_signal_arcs_init, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
2, /* argc */
|
||||
@ -66,19 +66,19 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_string("_lvgl", -1605747813, 5),
|
||||
/* K1 */ be_nested_string("create_custom_widget", 1140594778, 20),
|
||||
/* K2 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K3 */ be_nested_string("p1", -1605446022, 2),
|
||||
/* K4 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K5 */ be_nested_string("point", 414084241, 5),
|
||||
/* K6 */ be_nested_string("p2", -1622223641, 2),
|
||||
/* K7 */ be_nested_string("area", -1693507260, 4),
|
||||
/* K8 */ be_nested_string("line_dsc", -200476318, 8),
|
||||
/* K9 */ be_nested_string("draw_line_dsc", -74291093, 13),
|
||||
/* K0 */ be_nested_str(_lvgl),
|
||||
/* K1 */ be_nested_str(create_custom_widget),
|
||||
/* K2 */ be_nested_str(percentage),
|
||||
/* K3 */ be_nested_str(p1),
|
||||
/* K4 */ be_nested_str(lv),
|
||||
/* K5 */ be_nested_str(point),
|
||||
/* K6 */ be_nested_str(p2),
|
||||
/* K7 */ be_nested_str(area),
|
||||
/* K8 */ be_nested_str(line_dsc),
|
||||
/* K9 */ be_nested_str(draw_line_dsc),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[24]) { /* code */
|
||||
0xB80A0000, // 0000 GETNGBL R2 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -113,7 +113,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: widget_event
|
||||
********************************************************************/
|
||||
be_local_closure(widget_event, /* name */
|
||||
be_local_closure(lv_signal_arcs_widget_event, /* name */
|
||||
be_nested_proto(
|
||||
28, /* nstack */
|
||||
3, /* argc */
|
||||
@ -134,8 +134,8 @@ be_local_closure(widget_event, /* name */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("atleast1", 1956331672, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_atleast1,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x28040100, // 0000 GE R1 R0 K0
|
||||
0x78060001, // 0001 JMPF R1 #0004
|
||||
@ -148,44 +148,44 @@ be_local_closure(widget_event, /* name */
|
||||
}),
|
||||
1, /* has constants */
|
||||
( &(const bvalue[35]) { /* constants */
|
||||
/* K0 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K1 */ be_nested_string("obj_event_base", 1624064363, 14),
|
||||
/* K2 */ be_nested_string("RES_OK", 1233817284, 6),
|
||||
/* K3 */ be_nested_string("code", -114201356, 4),
|
||||
/* K4 */ be_nested_string("math", -293037681, 4),
|
||||
/* K5 */ be_nested_string("get_height", -723211773, 10),
|
||||
/* K6 */ be_nested_string("get_width", -1001549996, 9),
|
||||
/* K0 */ be_nested_str(lv),
|
||||
/* K1 */ be_nested_str(obj_event_base),
|
||||
/* K2 */ be_nested_str(RES_OK),
|
||||
/* K3 */ be_nested_str(code),
|
||||
/* K4 */ be_nested_str(math),
|
||||
/* K5 */ be_nested_str(get_height),
|
||||
/* K6 */ be_nested_str(get_width),
|
||||
/* K7 */ be_const_int(2),
|
||||
/* K8 */ be_const_int(3),
|
||||
/* K9 */ be_nested_string("EVENT_DRAW_MAIN", 1955620614, 15),
|
||||
/* K10 */ be_nested_string("area", -1693507260, 4),
|
||||
/* K11 */ be_nested_string("param", 1309554226, 5),
|
||||
/* K12 */ be_nested_string("get_coords", 1044089006, 10),
|
||||
/* K13 */ be_nested_string("x1", 274927234, 2),
|
||||
/* K14 */ be_nested_string("y1", -1939865569, 2),
|
||||
/* K15 */ be_nested_string("draw_line_dsc_init", -428273650, 18),
|
||||
/* K16 */ be_nested_string("line_dsc", -200476318, 8),
|
||||
/* K17 */ be_nested_string("init_draw_line_dsc", -1787031256, 18),
|
||||
/* K18 */ be_nested_string("PART_MAIN", -1821475788, 9),
|
||||
/* K19 */ be_nested_string("round_start", -1345482912, 11),
|
||||
/* K9 */ be_nested_str(EVENT_DRAW_MAIN),
|
||||
/* K10 */ be_nested_str(area),
|
||||
/* K11 */ be_nested_str(param),
|
||||
/* K12 */ be_nested_str(get_coords),
|
||||
/* K13 */ be_nested_str(x1),
|
||||
/* K14 */ be_nested_str(y1),
|
||||
/* K15 */ be_nested_str(draw_line_dsc_init),
|
||||
/* K16 */ be_nested_str(line_dsc),
|
||||
/* K17 */ be_nested_str(init_draw_line_dsc),
|
||||
/* K18 */ be_nested_str(PART_MAIN),
|
||||
/* K19 */ be_nested_str(round_start),
|
||||
/* K20 */ be_const_int(1),
|
||||
/* K21 */ be_nested_string("round_end", 985288225, 9),
|
||||
/* K22 */ be_nested_string("width", -1786286561, 5),
|
||||
/* K23 */ be_nested_string("get_style_line_color", 805371932, 20),
|
||||
/* K24 */ be_nested_string("STATE_DEFAULT", 712406428, 13),
|
||||
/* K25 */ be_nested_string("get_style_bg_color", 964794381, 18),
|
||||
/* K26 */ be_nested_string("deg", -967213025, 3),
|
||||
/* K27 */ be_nested_string("acos", 1006755615, 4),
|
||||
/* K28 */ be_nested_string("p1", -1605446022, 2),
|
||||
/* K29 */ be_nested_string("x", -49524601, 1),
|
||||
/* K30 */ be_nested_string("y", -66302220, 1),
|
||||
/* K31 */ be_nested_string("color", 1031692888, 5),
|
||||
/* K32 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K33 */ be_nested_string("draw_arc", 1828251676, 8),
|
||||
/* K21 */ be_nested_str(round_end),
|
||||
/* K22 */ be_nested_str(width),
|
||||
/* K23 */ be_nested_str(get_style_line_color),
|
||||
/* K24 */ be_nested_str(STATE_DEFAULT),
|
||||
/* K25 */ be_nested_str(get_style_bg_color),
|
||||
/* K26 */ be_nested_str(deg),
|
||||
/* K27 */ be_nested_str(acos),
|
||||
/* K28 */ be_nested_str(p1),
|
||||
/* K29 */ be_nested_str(x),
|
||||
/* K30 */ be_nested_str(y),
|
||||
/* K31 */ be_nested_str(color),
|
||||
/* K32 */ be_nested_str(percentage),
|
||||
/* K33 */ be_nested_str(draw_arc),
|
||||
/* K34 */ be_const_int(0),
|
||||
}),
|
||||
(be_nested_const_str("widget_event", 1951408186, 12)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_widget_event,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[182]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x8C0C0701, // 0001 GETMET R3 R3 K1
|
||||
@ -378,7 +378,7 @@ be_local_closure(widget_event, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_percentage
|
||||
********************************************************************/
|
||||
be_local_closure(get_percentage, /* name */
|
||||
be_local_closure(lv_signal_arcs_get_percentage, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
@ -389,10 +389,10 @@ be_local_closure(get_percentage, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K0 */ be_nested_str(percentage),
|
||||
}),
|
||||
(be_nested_const_str("get_percentage", -1414483304, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_percentage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x80040200, // 0001 RET 1 R1
|
||||
@ -411,17 +411,17 @@ be_local_class(lv_signal_arcs,
|
||||
&be_class_lv_obj,
|
||||
be_nested_map(9,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("percentage", -1756136011, 10, 4), be_const_var(0) },
|
||||
{ be_nested_key("p1", -1605446022, 2, 3), be_const_var(1) },
|
||||
{ be_nested_key("p2", -1622223641, 2, -1), be_const_var(2) },
|
||||
{ be_nested_key("area", -1693507260, 4, -1), be_const_var(3) },
|
||||
{ be_nested_key("line_dsc", -200476318, 8, -1), be_const_var(4) },
|
||||
{ be_nested_key("set_percentage", -1342944572, 14, -1), be_const_closure(set_percentage_closure) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_nested_key("widget_event", 1951408186, 12, -1), be_const_closure(widget_event_closure) },
|
||||
{ be_nested_key("get_percentage", -1414483304, 14, 5), be_const_closure(get_percentage_closure) },
|
||||
{ be_const_key(percentage, 4), be_const_var(0) },
|
||||
{ be_const_key(p1, 3), be_const_var(1) },
|
||||
{ be_const_key(p2, -1), be_const_var(2) },
|
||||
{ be_const_key(area, -1), be_const_var(3) },
|
||||
{ be_const_key(line_dsc, -1), be_const_var(4) },
|
||||
{ be_const_key(set_percentage, -1), be_const_closure(lv_signal_arcs_set_percentage_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(lv_signal_arcs_init_closure) },
|
||||
{ be_const_key(widget_event, -1), be_const_closure(lv_signal_arcs_widget_event_closure) },
|
||||
{ be_const_key(get_percentage, 5), be_const_closure(lv_signal_arcs_get_percentage_closure) },
|
||||
})),
|
||||
(be_nested_const_str("lv_signal_arcs", -1455810308, 14))
|
||||
be_str_literal("lv_signal_arcs")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: set_percentage
|
||||
********************************************************************/
|
||||
be_local_closure(set_percentage, /* name */
|
||||
be_local_closure(lv_signal_bars_set_percentage, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -21,12 +21,12 @@ be_local_closure(set_percentage, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K0 */ be_nested_str(percentage),
|
||||
/* K1 */ be_const_int(0),
|
||||
/* K2 */ be_nested_string("invalidate", -1645232368, 10),
|
||||
/* K2 */ be_nested_str(invalidate),
|
||||
}),
|
||||
(be_nested_const_str("set_percentage", -1342944572, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_set_percentage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[18]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x540E0013, // 0001 LDINT R3 20
|
||||
@ -55,7 +55,7 @@ be_local_closure(set_percentage, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(lv_signal_bars_init, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
2, /* argc */
|
||||
@ -66,19 +66,19 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_string("_lvgl", -1605747813, 5),
|
||||
/* K1 */ be_nested_string("create_custom_widget", 1140594778, 20),
|
||||
/* K2 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K3 */ be_nested_string("p1", -1605446022, 2),
|
||||
/* K4 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K5 */ be_nested_string("point", 414084241, 5),
|
||||
/* K6 */ be_nested_string("p2", -1622223641, 2),
|
||||
/* K7 */ be_nested_string("area", -1693507260, 4),
|
||||
/* K8 */ be_nested_string("line_dsc", -200476318, 8),
|
||||
/* K9 */ be_nested_string("draw_line_dsc", -74291093, 13),
|
||||
/* K0 */ be_nested_str(_lvgl),
|
||||
/* K1 */ be_nested_str(create_custom_widget),
|
||||
/* K2 */ be_nested_str(percentage),
|
||||
/* K3 */ be_nested_str(p1),
|
||||
/* K4 */ be_nested_str(lv),
|
||||
/* K5 */ be_nested_str(point),
|
||||
/* K6 */ be_nested_str(p2),
|
||||
/* K7 */ be_nested_str(area),
|
||||
/* K8 */ be_nested_str(line_dsc),
|
||||
/* K9 */ be_nested_str(draw_line_dsc),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[24]) { /* code */
|
||||
0xB80A0000, // 0000 GETNGBL R2 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -113,7 +113,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: widget_event
|
||||
********************************************************************/
|
||||
be_local_closure(widget_event, /* name */
|
||||
be_local_closure(lv_signal_bars_widget_event, /* name */
|
||||
be_nested_proto(
|
||||
23, /* nstack */
|
||||
3, /* argc */
|
||||
@ -134,8 +134,8 @@ be_local_closure(widget_event, /* name */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("atleast1", 1956331672, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_atleast1,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x28040100, // 0000 GE R1 R0 K0
|
||||
0x78060001, // 0001 JMPF R1 #0004
|
||||
@ -148,46 +148,46 @@ be_local_closure(widget_event, /* name */
|
||||
}),
|
||||
1, /* has constants */
|
||||
( &(const bvalue[37]) { /* constants */
|
||||
/* K0 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K1 */ be_nested_string("obj_event_base", 1624064363, 14),
|
||||
/* K2 */ be_nested_string("RES_OK", 1233817284, 6),
|
||||
/* K3 */ be_nested_string("code", -114201356, 4),
|
||||
/* K4 */ be_nested_string("get_height", -723211773, 10),
|
||||
/* K5 */ be_nested_string("get_width", -1001549996, 9),
|
||||
/* K0 */ be_nested_str(lv),
|
||||
/* K1 */ be_nested_str(obj_event_base),
|
||||
/* K2 */ be_nested_str(RES_OK),
|
||||
/* K3 */ be_nested_str(code),
|
||||
/* K4 */ be_nested_str(get_height),
|
||||
/* K5 */ be_nested_str(get_width),
|
||||
/* K6 */ be_const_int(3),
|
||||
/* K7 */ be_const_int(2),
|
||||
/* K8 */ be_nested_string("EVENT_DRAW_MAIN", 1955620614, 15),
|
||||
/* K9 */ be_nested_string("area", -1693507260, 4),
|
||||
/* K10 */ be_nested_string("param", 1309554226, 5),
|
||||
/* K11 */ be_nested_string("get_coords", 1044089006, 10),
|
||||
/* K12 */ be_nested_string("x1", 274927234, 2),
|
||||
/* K13 */ be_nested_string("y1", -1939865569, 2),
|
||||
/* K14 */ be_nested_string("draw_line_dsc_init", -428273650, 18),
|
||||
/* K15 */ be_nested_string("line_dsc", -200476318, 8),
|
||||
/* K16 */ be_nested_string("init_draw_line_dsc", -1787031256, 18),
|
||||
/* K17 */ be_nested_string("PART_MAIN", -1821475788, 9),
|
||||
/* K18 */ be_nested_string("round_start", -1345482912, 11),
|
||||
/* K8 */ be_nested_str(EVENT_DRAW_MAIN),
|
||||
/* K9 */ be_nested_str(area),
|
||||
/* K10 */ be_nested_str(param),
|
||||
/* K11 */ be_nested_str(get_coords),
|
||||
/* K12 */ be_nested_str(x1),
|
||||
/* K13 */ be_nested_str(y1),
|
||||
/* K14 */ be_nested_str(draw_line_dsc_init),
|
||||
/* K15 */ be_nested_str(line_dsc),
|
||||
/* K16 */ be_nested_str(init_draw_line_dsc),
|
||||
/* K17 */ be_nested_str(PART_MAIN),
|
||||
/* K18 */ be_nested_str(round_start),
|
||||
/* K19 */ be_const_int(1),
|
||||
/* K20 */ be_nested_string("round_end", 985288225, 9),
|
||||
/* K21 */ be_nested_string("width", -1786286561, 5),
|
||||
/* K22 */ be_nested_string("get_style_line_color", 805371932, 20),
|
||||
/* K23 */ be_nested_string("STATE_DEFAULT", 712406428, 13),
|
||||
/* K24 */ be_nested_string("get_style_bg_color", 964794381, 18),
|
||||
/* K25 */ be_nested_string("event_send", 598925582, 10),
|
||||
/* K26 */ be_nested_string("EVENT_DRAW_PART_BEGIN", -903102272, 21),
|
||||
/* K20 */ be_nested_str(round_end),
|
||||
/* K21 */ be_nested_str(width),
|
||||
/* K22 */ be_nested_str(get_style_line_color),
|
||||
/* K23 */ be_nested_str(STATE_DEFAULT),
|
||||
/* K24 */ be_nested_str(get_style_bg_color),
|
||||
/* K25 */ be_nested_str(event_send),
|
||||
/* K26 */ be_nested_str(EVENT_DRAW_PART_BEGIN),
|
||||
/* K27 */ be_const_int(0),
|
||||
/* K28 */ be_nested_string("color", 1031692888, 5),
|
||||
/* K29 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K30 */ be_nested_string("p1", -1605446022, 2),
|
||||
/* K31 */ be_nested_string("y", -66302220, 1),
|
||||
/* K32 */ be_nested_string("x", -49524601, 1),
|
||||
/* K33 */ be_nested_string("p2", -1622223641, 2),
|
||||
/* K34 */ be_nested_string("draw_line", 1634465686, 9),
|
||||
/* K35 */ be_nested_string("stop_iteration", -121173395, 14),
|
||||
/* K36 */ be_nested_string("EVENT_DRAW_PART_END", -993342004, 19),
|
||||
/* K28 */ be_nested_str(color),
|
||||
/* K29 */ be_nested_str(percentage),
|
||||
/* K30 */ be_nested_str(p1),
|
||||
/* K31 */ be_nested_str(y),
|
||||
/* K32 */ be_nested_str(x),
|
||||
/* K33 */ be_nested_str(p2),
|
||||
/* K34 */ be_nested_str(draw_line),
|
||||
/* K35 */ be_nested_str(stop_iteration),
|
||||
/* K36 */ be_nested_str(EVENT_DRAW_PART_END),
|
||||
}),
|
||||
(be_nested_const_str("widget_event", 1951408186, 12)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_widget_event,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[138]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x8C0C0701, // 0001 GETMET R3 R3 K1
|
||||
@ -336,7 +336,7 @@ be_local_closure(widget_event, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: get_percentage
|
||||
********************************************************************/
|
||||
be_local_closure(get_percentage, /* name */
|
||||
be_local_closure(lv_signal_bars_get_percentage, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
@ -347,10 +347,10 @@ be_local_closure(get_percentage, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_string("percentage", -1756136011, 10),
|
||||
/* K0 */ be_nested_str(percentage),
|
||||
}),
|
||||
(be_nested_const_str("get_percentage", -1414483304, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_get_percentage,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 2]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x80040200, // 0001 RET 1 R1
|
||||
@ -369,17 +369,17 @@ be_local_class(lv_signal_bars,
|
||||
&be_class_lv_obj,
|
||||
be_nested_map(9,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("percentage", -1756136011, 10, 4), be_const_var(0) },
|
||||
{ be_nested_key("p1", -1605446022, 2, 3), be_const_var(1) },
|
||||
{ be_nested_key("p2", -1622223641, 2, -1), be_const_var(2) },
|
||||
{ be_nested_key("area", -1693507260, 4, -1), be_const_var(3) },
|
||||
{ be_nested_key("line_dsc", -200476318, 8, -1), be_const_var(4) },
|
||||
{ be_nested_key("set_percentage", -1342944572, 14, -1), be_const_closure(set_percentage_closure) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_nested_key("widget_event", 1951408186, 12, -1), be_const_closure(widget_event_closure) },
|
||||
{ be_nested_key("get_percentage", -1414483304, 14, 5), be_const_closure(get_percentage_closure) },
|
||||
{ be_const_key(percentage, 4), be_const_var(0) },
|
||||
{ be_const_key(p1, 3), be_const_var(1) },
|
||||
{ be_const_key(p2, -1), be_const_var(2) },
|
||||
{ be_const_key(area, -1), be_const_var(3) },
|
||||
{ be_const_key(line_dsc, -1), be_const_var(4) },
|
||||
{ be_const_key(set_percentage, -1), be_const_closure(lv_signal_bars_set_percentage_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(lv_signal_bars_init_closure) },
|
||||
{ be_const_key(widget_event, -1), be_const_closure(lv_signal_bars_widget_event_closure) },
|
||||
{ be_const_key(get_percentage, 5), be_const_closure(lv_signal_bars_get_percentage_closure) },
|
||||
})),
|
||||
(be_nested_const_str("lv_signal_bars", -780994737, 14))
|
||||
be_str_literal("lv_signal_bars")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(lv_wifi_arcs_icon_init, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
2, /* argc */
|
||||
@ -21,27 +21,27 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[18]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("set_style_line_color", -629728320, 20),
|
||||
/* K2 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K3 */ be_nested_string("color", 1031692888, 5),
|
||||
/* K4 */ be_nested_string("COLOR_WHITE", -1758096026, 11),
|
||||
/* K5 */ be_nested_string("PART_MAIN", -1821475788, 9),
|
||||
/* K6 */ be_nested_string("STATE_DEFAULT", 712406428, 13),
|
||||
/* K7 */ be_nested_string("set_style_bg_color", 1689513089, 18),
|
||||
/* K8 */ be_nested_string("COLOR_BLACK", 264427940, 11),
|
||||
/* K9 */ be_nested_string("get_height", -723211773, 10),
|
||||
/* K10 */ be_nested_string("get_style_pad_right", -1144679830, 19),
|
||||
/* K11 */ be_nested_string("set_height", 1080207399, 10),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(set_style_line_color),
|
||||
/* K2 */ be_nested_str(lv),
|
||||
/* K3 */ be_nested_str(color),
|
||||
/* K4 */ be_nested_str(COLOR_WHITE),
|
||||
/* K5 */ be_nested_str(PART_MAIN),
|
||||
/* K6 */ be_nested_str(STATE_DEFAULT),
|
||||
/* K7 */ be_nested_str(set_style_bg_color),
|
||||
/* K8 */ be_nested_str(COLOR_BLACK),
|
||||
/* K9 */ be_nested_str(get_height),
|
||||
/* K10 */ be_nested_str(get_style_pad_right),
|
||||
/* K11 */ be_nested_str(set_height),
|
||||
/* K12 */ be_const_int(3),
|
||||
/* K13 */ be_nested_string("set_width", 484671920, 9),
|
||||
/* K14 */ be_nested_string("set_x", 1849400772, 5),
|
||||
/* K15 */ be_nested_string("get_width", -1001549996, 9),
|
||||
/* K16 */ be_nested_string("set_style_pad_right", -980898242, 19),
|
||||
/* K13 */ be_nested_str(set_width),
|
||||
/* K14 */ be_nested_str(set_x),
|
||||
/* K15 */ be_nested_str(get_width),
|
||||
/* K16 */ be_nested_str(set_style_pad_right),
|
||||
/* K17 */ be_const_int(1),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[67]) { /* code */
|
||||
0x60080003, // 0000 GETGBL R2 G3
|
||||
0x5C0C0000, // 0001 MOVE R3 R0
|
||||
@ -125,9 +125,9 @@ be_local_class(lv_wifi_arcs_icon,
|
||||
&be_class_lv_wifi_arcs,
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(lv_wifi_arcs_icon_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("lv_wifi_arcs_icon", 1507982909, 17))
|
||||
be_str_literal("lv_wifi_arcs_icon")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: every_second
|
||||
********************************************************************/
|
||||
be_local_closure(every_second, /* name */
|
||||
be_local_closure(lv_wifi_arcs_every_second, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
1, /* argc */
|
||||
@ -21,16 +21,16 @@ be_local_closure(every_second, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K1 */ be_nested_string("wifi", 120087624, 4),
|
||||
/* K2 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K3 */ be_nested_string("quality", -1697296346, 7),
|
||||
/* K4 */ be_nested_string("ip", 1261996636, 2),
|
||||
/* K5 */ be_nested_string("set_percentage", -1342944572, 14),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
/* K1 */ be_nested_str(wifi),
|
||||
/* K2 */ be_nested_str(find),
|
||||
/* K3 */ be_nested_str(quality),
|
||||
/* K4 */ be_nested_str(ip),
|
||||
/* K5 */ be_nested_str(set_percentage),
|
||||
/* K6 */ be_const_int(0),
|
||||
}),
|
||||
(be_nested_const_str("every_second", 2075451465, 12)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_every_second,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[23]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -64,7 +64,7 @@ be_local_closure(every_second, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(lv_wifi_arcs_init, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -75,14 +75,14 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("add_driver", 1654458371, 10),
|
||||
/* K3 */ be_nested_string("set_percentage", -1342944572, 14),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(add_driver),
|
||||
/* K3 */ be_nested_str(set_percentage),
|
||||
/* K4 */ be_const_int(0),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[14]) { /* code */
|
||||
0x60080003, // 0000 GETGBL R2 G3
|
||||
0x5C0C0000, // 0001 MOVE R3 R0
|
||||
@ -107,7 +107,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: del
|
||||
********************************************************************/
|
||||
be_local_closure(del, /* name */
|
||||
be_local_closure(lv_wifi_arcs_del, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -118,12 +118,12 @@ be_local_closure(del, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("del", -816214454, 3),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("remove_driver", 1030243768, 13),
|
||||
/* K0 */ be_nested_str(del),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(remove_driver),
|
||||
}),
|
||||
(be_nested_const_str("del", -816214454, 3)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_del,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x60040003, // 0000 GETGBL R1 G3
|
||||
0x5C080000, // 0001 MOVE R2 R0
|
||||
@ -150,11 +150,11 @@ be_local_class(lv_wifi_arcs,
|
||||
&be_class_lv_signal_arcs,
|
||||
be_nested_map(3,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("every_second", 2075451465, 12, 1), be_const_closure(every_second_closure) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_nested_key("del", -816214454, 3, -1), be_const_closure(del_closure) },
|
||||
{ be_const_key(every_second, 1), be_const_closure(lv_wifi_arcs_every_second_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(lv_wifi_arcs_init_closure) },
|
||||
{ be_const_key(del, -1), be_const_closure(lv_wifi_arcs_del_closure) },
|
||||
})),
|
||||
(be_nested_const_str("lv_wifi_arcs", 2082091963, 12))
|
||||
be_str_literal("lv_wifi_arcs")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(lv_wifi_bars_icon_init, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
2, /* argc */
|
||||
@ -21,26 +21,26 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[17]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("set_style_line_color", -629728320, 20),
|
||||
/* K2 */ be_nested_string("lv", 1529997255, 2),
|
||||
/* K3 */ be_nested_string("color", 1031692888, 5),
|
||||
/* K4 */ be_nested_string("COLOR_WHITE", -1758096026, 11),
|
||||
/* K5 */ be_nested_string("PART_MAIN", -1821475788, 9),
|
||||
/* K6 */ be_nested_string("STATE_DEFAULT", 712406428, 13),
|
||||
/* K7 */ be_nested_string("set_style_bg_color", 1689513089, 18),
|
||||
/* K8 */ be_nested_string("COLOR_BLACK", 264427940, 11),
|
||||
/* K9 */ be_nested_string("get_height", -723211773, 10),
|
||||
/* K10 */ be_nested_string("get_style_pad_right", -1144679830, 19),
|
||||
/* K11 */ be_nested_string("set_height", 1080207399, 10),
|
||||
/* K12 */ be_nested_string("set_width", 484671920, 9),
|
||||
/* K13 */ be_nested_string("set_x", 1849400772, 5),
|
||||
/* K14 */ be_nested_string("get_width", -1001549996, 9),
|
||||
/* K15 */ be_nested_string("set_style_pad_right", -980898242, 19),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(set_style_line_color),
|
||||
/* K2 */ be_nested_str(lv),
|
||||
/* K3 */ be_nested_str(color),
|
||||
/* K4 */ be_nested_str(COLOR_WHITE),
|
||||
/* K5 */ be_nested_str(PART_MAIN),
|
||||
/* K6 */ be_nested_str(STATE_DEFAULT),
|
||||
/* K7 */ be_nested_str(set_style_bg_color),
|
||||
/* K8 */ be_nested_str(COLOR_BLACK),
|
||||
/* K9 */ be_nested_str(get_height),
|
||||
/* K10 */ be_nested_str(get_style_pad_right),
|
||||
/* K11 */ be_nested_str(set_height),
|
||||
/* K12 */ be_nested_str(set_width),
|
||||
/* K13 */ be_nested_str(set_x),
|
||||
/* K14 */ be_nested_str(get_width),
|
||||
/* K15 */ be_nested_str(set_style_pad_right),
|
||||
/* K16 */ be_const_int(1),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[64]) { /* code */
|
||||
0x60080003, // 0000 GETGBL R2 G3
|
||||
0x5C0C0000, // 0001 MOVE R3 R0
|
||||
@ -121,9 +121,9 @@ be_local_class(lv_wifi_bars_icon,
|
||||
&be_class_lv_wifi_bars,
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(lv_wifi_bars_icon_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("lv_wifi_bars_icon", -1489151756, 17))
|
||||
be_str_literal("lv_wifi_bars_icon")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: every_second
|
||||
********************************************************************/
|
||||
be_local_closure(every_second, /* name */
|
||||
be_local_closure(lv_wifi_bars_every_second, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
1, /* argc */
|
||||
@ -21,16 +21,16 @@ be_local_closure(every_second, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K1 */ be_nested_string("wifi", 120087624, 4),
|
||||
/* K2 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K3 */ be_nested_string("quality", -1697296346, 7),
|
||||
/* K4 */ be_nested_string("ip", 1261996636, 2),
|
||||
/* K5 */ be_nested_string("set_percentage", -1342944572, 14),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
/* K1 */ be_nested_str(wifi),
|
||||
/* K2 */ be_nested_str(find),
|
||||
/* K3 */ be_nested_str(quality),
|
||||
/* K4 */ be_nested_str(ip),
|
||||
/* K5 */ be_nested_str(set_percentage),
|
||||
/* K6 */ be_const_int(0),
|
||||
}),
|
||||
(be_nested_const_str("every_second", 2075451465, 12)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_every_second,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[23]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -64,7 +64,7 @@ be_local_closure(every_second, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(lv_wifi_bars_init, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -75,14 +75,14 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("init", 380752755, 4),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("add_driver", 1654458371, 10),
|
||||
/* K3 */ be_nested_string("set_percentage", -1342944572, 14),
|
||||
/* K0 */ be_nested_str(init),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(add_driver),
|
||||
/* K3 */ be_nested_str(set_percentage),
|
||||
/* K4 */ be_const_int(0),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[14]) { /* code */
|
||||
0x60080003, // 0000 GETGBL R2 G3
|
||||
0x5C0C0000, // 0001 MOVE R3 R0
|
||||
@ -107,7 +107,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: del
|
||||
********************************************************************/
|
||||
be_local_closure(del, /* name */
|
||||
be_local_closure(lv_wifi_bars_del, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -118,12 +118,12 @@ be_local_closure(del, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("del", -816214454, 3),
|
||||
/* K1 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K2 */ be_nested_string("remove_driver", 1030243768, 13),
|
||||
/* K0 */ be_nested_str(del),
|
||||
/* K1 */ be_nested_str(tasmota),
|
||||
/* K2 */ be_nested_str(remove_driver),
|
||||
}),
|
||||
(be_nested_const_str("del", -816214454, 3)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_del,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x60040003, // 0000 GETGBL R1 G3
|
||||
0x5C080000, // 0001 MOVE R2 R0
|
||||
@ -150,11 +150,11 @@ be_local_class(lv_wifi_bars,
|
||||
&be_class_lv_signal_bars,
|
||||
be_nested_map(3,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("every_second", 2075451465, 12, 1), be_const_closure(every_second_closure) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_nested_key("del", -816214454, 3, -1), be_const_closure(del_closure) },
|
||||
{ be_const_key(every_second, 1), be_const_closure(lv_wifi_bars_every_second_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(lv_wifi_bars_init_closure) },
|
||||
{ be_const_key(del, -1), be_const_closure(lv_wifi_bars_del_closure) },
|
||||
})),
|
||||
(be_nested_const_str("lv_wifi_bars", 2109539196, 12))
|
||||
be_str_literal("lv_wifi_bars")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -131,14 +131,14 @@ extern void be_load_onewirelib(bvm *vm);
|
||||
extern void be_load_serial_lib(bvm *vm);
|
||||
extern void be_load_Driver_class(bvm *vm);
|
||||
extern void be_load_Timer_class(bvm *vm);
|
||||
extern void be_load_driver_i2c_lib(bvm *vm);
|
||||
extern void be_load_I2C_Driver_class(bvm *vm);
|
||||
extern void be_load_AXP192_class(bvm *vm);
|
||||
extern void be_load_md5_lib(bvm *vm);
|
||||
extern void be_load_webclient_lib(bvm *vm);
|
||||
extern void be_load_tcpclient_lib(bvm *vm);
|
||||
extern void be_load_crypto_lib(bvm *vm);
|
||||
extern void be_load_Leds_ntv_class(bvm *vm);
|
||||
extern void be_load_Leds_class(bvm *vm);
|
||||
extern void be_load_Leds_matrix_class(bvm *vm);
|
||||
extern void be_load_Leds_animator_class(bvm *vm);
|
||||
|
||||
extern void be_load_ctypes_lib(bvm *vm);
|
||||
@ -182,7 +182,7 @@ BERRY_API void be_load_custom_libs(bvm *vm)
|
||||
#endif
|
||||
#ifdef USE_I2C
|
||||
be_load_wirelib(vm);
|
||||
be_load_driver_i2c_lib(vm);
|
||||
be_load_I2C_Driver_class(vm);
|
||||
be_load_AXP192_class(vm);
|
||||
#endif // USE_I2C
|
||||
#ifdef USE_ENERGY_SENSOR
|
||||
@ -190,6 +190,7 @@ BERRY_API void be_load_custom_libs(bvm *vm)
|
||||
#endif // USE_ENERGY_SENSOR
|
||||
#ifdef USE_WEBCLIENT
|
||||
be_load_webclient_lib(vm);
|
||||
be_load_tcpclient_lib(vm);
|
||||
#endif // USE_WEBCLIENT
|
||||
#if defined(USE_ONEWIRE) || defined(USE_DS18x20)
|
||||
be_load_onewirelib(vm);
|
||||
@ -197,7 +198,6 @@ BERRY_API void be_load_custom_libs(bvm *vm)
|
||||
#ifdef USE_WS2812
|
||||
be_load_Leds_ntv_class(vm);
|
||||
be_load_Leds_class(vm);
|
||||
be_load_Leds_matrix_class(vm);
|
||||
be_load_Leds_animator_class(vm);
|
||||
#endif // USE_WS2812
|
||||
#ifdef USE_I2S_AUDIO_BERRY
|
||||
|
@ -10,7 +10,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: json_fdump_map
|
||||
********************************************************************/
|
||||
be_local_closure(json_fdump_map, /* name */
|
||||
be_local_closure(Persist_json_fdump_map, /* name */
|
||||
be_nested_proto(
|
||||
13, /* nstack */
|
||||
3, /* argc */
|
||||
@ -21,19 +21,19 @@ be_local_closure(json_fdump_map, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_string("json", 916562499, 4),
|
||||
/* K1 */ be_nested_string("write", -1104765092, 5),
|
||||
/* K2 */ be_nested_string("{", -32746982, 1),
|
||||
/* K3 */ be_nested_string("keys", -112588595, 4),
|
||||
/* K4 */ be_nested_string("dump", -631966073, 4),
|
||||
/* K5 */ be_nested_string(":", 1057798253, 1),
|
||||
/* K6 */ be_nested_string("json_fdump_any", -946337911, 14),
|
||||
/* K7 */ be_nested_string(",", 688690635, 1),
|
||||
/* K8 */ be_nested_string("stop_iteration", -121173395, 14),
|
||||
/* K9 */ be_nested_string("}", -133412696, 1),
|
||||
/* K0 */ be_nested_str(json),
|
||||
/* K1 */ be_nested_str(write),
|
||||
/* K2 */ be_nested_str(_X7B),
|
||||
/* K3 */ be_nested_str(keys),
|
||||
/* K4 */ be_nested_str(dump),
|
||||
/* K5 */ be_nested_str(_X3A),
|
||||
/* K6 */ be_nested_str(json_fdump_any),
|
||||
/* K7 */ be_nested_str(_X2C),
|
||||
/* K8 */ be_nested_str(stop_iteration),
|
||||
/* K9 */ be_nested_str(_X7D),
|
||||
}),
|
||||
(be_nested_const_str("json_fdump_map", -203012643, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_json_fdump_map,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[41]) { /* code */
|
||||
0xA40E0000, // 0000 IMPORT R3 K0
|
||||
0x8C100301, // 0001 GETMET R4 R1 K1
|
||||
@ -85,7 +85,7 @@ be_local_closure(json_fdump_map, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: setmember
|
||||
********************************************************************/
|
||||
be_local_closure(setmember, /* name */
|
||||
be_local_closure(Persist_setmember, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
3, /* argc */
|
||||
@ -96,11 +96,11 @@ be_local_closure(setmember, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K1 */ be_nested_string("_dirty", 283846766, 6),
|
||||
/* K0 */ be_nested_str(_p),
|
||||
/* K1 */ be_nested_str(_dirty),
|
||||
}),
|
||||
(be_nested_const_str("setmember", 1432909441, 9)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_setmember,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x880C0100, // 0000 GETMBR R3 R0 K0
|
||||
0x980C0202, // 0001 SETIDX R3 R1 R2
|
||||
@ -116,7 +116,7 @@ be_local_closure(setmember, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: zero
|
||||
********************************************************************/
|
||||
be_local_closure(zero, /* name */
|
||||
be_local_closure(Persist_zero, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
1, /* argc */
|
||||
@ -127,11 +127,11 @@ be_local_closure(zero, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K1 */ be_nested_string("_dirty", 283846766, 6),
|
||||
/* K0 */ be_nested_str(_p),
|
||||
/* K1 */ be_nested_str(_dirty),
|
||||
}),
|
||||
(be_nested_const_str("zero", -1955600541, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_zero,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x60040013, // 0000 GETGBL R1 G19
|
||||
0x7C040000, // 0001 CALL R1 0
|
||||
@ -148,7 +148,7 @@ be_local_closure(zero, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: member
|
||||
********************************************************************/
|
||||
be_local_closure(member, /* name */
|
||||
be_local_closure(Persist_member, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -159,11 +159,11 @@ be_local_closure(member, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K1 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K0 */ be_nested_str(_p),
|
||||
/* K1 */ be_nested_str(find),
|
||||
}),
|
||||
(be_nested_const_str("member", 719708611, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_member,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -179,7 +179,7 @@ be_local_closure(member, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: json_fdump
|
||||
********************************************************************/
|
||||
be_local_closure(json_fdump, /* name */
|
||||
be_local_closure(Persist_json_fdump, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
@ -190,14 +190,14 @@ be_local_closure(json_fdump, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("json", 916562499, 4),
|
||||
/* K1 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K2 */ be_nested_string("json_fdump_map", -203012643, 14),
|
||||
/* K3 */ be_nested_string("internal_error", -1775809127, 14),
|
||||
/* K4 */ be_nested_string("persist._p is not a map", 1176528732, 23),
|
||||
/* K0 */ be_nested_str(json),
|
||||
/* K1 */ be_nested_str(_p),
|
||||
/* K2 */ be_nested_str(json_fdump_map),
|
||||
/* K3 */ be_nested_str(internal_error),
|
||||
/* K4 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map),
|
||||
}),
|
||||
(be_nested_const_str("json_fdump", 1694216580, 10)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_json_fdump,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[13]) { /* code */
|
||||
0xA40A0000, // 0000 IMPORT R2 K0
|
||||
0x600C000F, // 0001 GETGBL R3 G15
|
||||
@ -221,7 +221,7 @@ be_local_closure(json_fdump, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: remove
|
||||
********************************************************************/
|
||||
be_local_closure(remove, /* name */
|
||||
be_local_closure(Persist_remove, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -232,12 +232,12 @@ be_local_closure(remove, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K1 */ be_nested_string("remove", -611183107, 6),
|
||||
/* K2 */ be_nested_string("_dirty", 283846766, 6),
|
||||
/* K0 */ be_nested_str(_p),
|
||||
/* K1 */ be_nested_str(remove),
|
||||
/* K2 */ be_nested_str(_dirty),
|
||||
}),
|
||||
(be_nested_const_str("remove", -611183107, 6)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_remove,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 7]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -255,7 +255,7 @@ be_local_closure(remove, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: json_fdump_any
|
||||
********************************************************************/
|
||||
be_local_closure(json_fdump_any, /* name */
|
||||
be_local_closure(Persist_json_fdump_any, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
3, /* argc */
|
||||
@ -266,14 +266,14 @@ be_local_closure(json_fdump_any, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("json", 916562499, 4),
|
||||
/* K1 */ be_nested_string("json_fdump_map", -203012643, 14),
|
||||
/* K2 */ be_nested_string("json_fdump_list", -391087443, 15),
|
||||
/* K3 */ be_nested_string("write", -1104765092, 5),
|
||||
/* K4 */ be_nested_string("dump", -631966073, 4),
|
||||
/* K0 */ be_nested_str(json),
|
||||
/* K1 */ be_nested_str(json_fdump_map),
|
||||
/* K2 */ be_nested_str(json_fdump_list),
|
||||
/* K3 */ be_nested_str(write),
|
||||
/* K4 */ be_nested_str(dump),
|
||||
}),
|
||||
(be_nested_const_str("json_fdump_any", -946337911, 14)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_json_fdump_any,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[27]) { /* code */
|
||||
0xA40E0000, // 0000 IMPORT R3 K0
|
||||
0x6010000F, // 0001 GETGBL R4 G15
|
||||
@ -311,7 +311,7 @@ be_local_closure(json_fdump_any, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: save
|
||||
********************************************************************/
|
||||
be_local_closure(save, /* name */
|
||||
be_local_closure(Persist_save, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
1, /* argc */
|
||||
@ -322,16 +322,16 @@ be_local_closure(save, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_string("_filename", 1430813195, 9),
|
||||
/* K1 */ be_nested_string("w", -234078410, 1),
|
||||
/* K2 */ be_nested_string("json_fdump", 1694216580, 10),
|
||||
/* K3 */ be_nested_string("close", 667630371, 5),
|
||||
/* K4 */ be_nested_string("write", -1104765092, 5),
|
||||
/* K5 */ be_nested_string("{}", 1415952421, 2),
|
||||
/* K6 */ be_nested_string("_dirty", 283846766, 6),
|
||||
/* K0 */ be_nested_str(_filename),
|
||||
/* K1 */ be_nested_str(w),
|
||||
/* K2 */ be_nested_str(json_fdump),
|
||||
/* K3 */ be_nested_str(close),
|
||||
/* K4 */ be_nested_str(write),
|
||||
/* K5 */ be_nested_str(_X7B_X7D),
|
||||
/* K6 */ be_nested_str(_dirty),
|
||||
}),
|
||||
(be_nested_const_str("save", -855671224, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_save,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[37]) { /* code */
|
||||
0x4C040000, // 0000 LDNIL R1
|
||||
0xA802000B, // 0001 EXBLK 0 #000E
|
||||
@ -379,7 +379,7 @@ be_local_closure(save, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: load
|
||||
********************************************************************/
|
||||
be_local_closure(load, /* name */
|
||||
be_local_closure(Persist_load, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
1, /* argc */
|
||||
@ -389,22 +389,23 @@ be_local_closure(load, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[11]) { /* constants */
|
||||
/* K0 */ be_nested_string("json", 916562499, 4),
|
||||
/* K1 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K2 */ be_nested_string("exists", 1002329533, 6),
|
||||
/* K3 */ be_nested_string("_filename", 1430813195, 9),
|
||||
/* K4 */ be_nested_string("r", -150190315, 1),
|
||||
/* K5 */ be_nested_string("load", -435725847, 4),
|
||||
/* K6 */ be_nested_string("read", -824204347, 4),
|
||||
/* K7 */ be_nested_string("close", 667630371, 5),
|
||||
/* K8 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K9 */ be_nested_string("BRY: failed to load _persist.json", -1303053851, 33),
|
||||
/* K10 */ be_nested_string("_dirty", 283846766, 6),
|
||||
( &(const bvalue[12]) { /* constants */
|
||||
/* K0 */ be_nested_str(json),
|
||||
/* K1 */ be_nested_str(path),
|
||||
/* K2 */ be_nested_str(exists),
|
||||
/* K3 */ be_nested_str(_filename),
|
||||
/* K4 */ be_nested_str(r),
|
||||
/* K5 */ be_nested_str(load),
|
||||
/* K6 */ be_nested_str(read),
|
||||
/* K7 */ be_nested_str(close),
|
||||
/* K8 */ be_nested_str(_p),
|
||||
/* K9 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_persist_X2Ejson),
|
||||
/* K10 */ be_nested_str(_dirty),
|
||||
/* K11 */ be_nested_str(save),
|
||||
}),
|
||||
(be_nested_const_str("load", -435725847, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[46]) { /* code */
|
||||
&be_const_str_load,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[49]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
0x4C0C0000, // 0002 LDNIL R3
|
||||
@ -412,7 +413,7 @@ be_local_closure(load, /* name */
|
||||
0x8C140502, // 0004 GETMET R5 R2 K2
|
||||
0x881C0103, // 0005 GETMBR R7 R0 K3
|
||||
0x7C140400, // 0006 CALL R5 2
|
||||
0x78160024, // 0007 JMPF R5 #002D
|
||||
0x78160025, // 0007 JMPF R5 #002E
|
||||
0xA802000D, // 0008 EXBLK 0 #0017
|
||||
0x60140011, // 0009 GETGBL R5 G17
|
||||
0x88180103, // 000A GETMBR R6 R0 K3
|
||||
@ -450,7 +451,10 @@ be_local_closure(load, /* name */
|
||||
0x7C140200, // 002A CALL R5 1
|
||||
0x50140000, // 002B LDBOOL R5 0 0
|
||||
0x90021405, // 002C SETMBR R0 K10 R5
|
||||
0x80000000, // 002D RET 0
|
||||
0x70020001, // 002D JMP #0030
|
||||
0x8C14010B, // 002E GETMET R5 R0 K11
|
||||
0x7C140200, // 002F CALL R5 1
|
||||
0x80000000, // 0030 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -460,7 +464,7 @@ be_local_closure(load, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: find
|
||||
********************************************************************/
|
||||
be_local_closure(find, /* name */
|
||||
be_local_closure(Persist_find, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
3, /* argc */
|
||||
@ -471,11 +475,11 @@ be_local_closure(find, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K1 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K0 */ be_nested_str(_p),
|
||||
/* K1 */ be_nested_str(find),
|
||||
}),
|
||||
(be_nested_const_str("find", -1108310694, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_find,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x880C0100, // 0000 GETMBR R3 R0 K0
|
||||
0x8C0C0701, // 0001 GETMET R3 R3 K1
|
||||
@ -492,7 +496,7 @@ be_local_closure(find, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(Persist_init, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
2, /* argc */
|
||||
@ -503,15 +507,15 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_string("_filename", 1430813195, 9),
|
||||
/* K1 */ be_nested_string("_persist.json", 2008425138, 13),
|
||||
/* K2 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K3 */ be_nested_string("copy", -446502332, 4),
|
||||
/* K4 */ be_nested_string("load", -435725847, 4),
|
||||
/* K5 */ be_nested_string("_dirty", 283846766, 6),
|
||||
/* K0 */ be_nested_str(_filename),
|
||||
/* K1 */ be_nested_str(_persist_X2Ejson),
|
||||
/* K2 */ be_nested_str(_p),
|
||||
/* K3 */ be_nested_str(copy),
|
||||
/* K4 */ be_nested_str(load),
|
||||
/* K5 */ be_nested_str(_dirty),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[20]) { /* code */
|
||||
0x90020101, // 0000 SETMBR R0 K0 K1
|
||||
0x6008000F, // 0001 GETGBL R2 G15
|
||||
@ -542,7 +546,7 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: json_fdump_list
|
||||
********************************************************************/
|
||||
be_local_closure(json_fdump_list, /* name */
|
||||
be_local_closure(Persist_json_fdump_list, /* name */
|
||||
be_nested_proto(
|
||||
9, /* nstack */
|
||||
3, /* argc */
|
||||
@ -553,17 +557,17 @@ be_local_closure(json_fdump_list, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_string("json", 916562499, 4),
|
||||
/* K1 */ be_nested_string("write", -1104765092, 5),
|
||||
/* K2 */ be_nested_string("[", -569630790, 1),
|
||||
/* K0 */ be_nested_str(json),
|
||||
/* K1 */ be_nested_str(write),
|
||||
/* K2 */ be_nested_str(_X5B),
|
||||
/* K3 */ be_const_int(0),
|
||||
/* K4 */ be_nested_string(",", 688690635, 1),
|
||||
/* K5 */ be_nested_string("json_fdump_any", -946337911, 14),
|
||||
/* K4 */ be_nested_str(_X2C),
|
||||
/* K5 */ be_nested_str(json_fdump_any),
|
||||
/* K6 */ be_const_int(1),
|
||||
/* K7 */ be_nested_string("]", -670296504, 1),
|
||||
/* K7 */ be_nested_str(_X5D),
|
||||
}),
|
||||
(be_nested_const_str("json_fdump_list", -391087443, 15)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_json_fdump_list,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[25]) { /* code */
|
||||
0xA40E0000, // 0000 IMPORT R3 K0
|
||||
0x8C100301, // 0001 GETMET R4 R1 K1
|
||||
@ -599,7 +603,7 @@ be_local_closure(json_fdump_list, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: has
|
||||
********************************************************************/
|
||||
be_local_closure(has, /* name */
|
||||
be_local_closure(Persist_has, /* name */
|
||||
be_nested_proto(
|
||||
5, /* nstack */
|
||||
2, /* argc */
|
||||
@ -610,11 +614,11 @@ be_local_closure(has, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("_p", 1594591802, 2),
|
||||
/* K1 */ be_nested_string("has", -306245661, 3),
|
||||
/* K0 */ be_nested_str(_p),
|
||||
/* K1 */ be_nested_str(has),
|
||||
}),
|
||||
(be_nested_const_str("has", -306245661, 3)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_has,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
@ -635,30 +639,30 @@ be_local_class(Persist,
|
||||
NULL,
|
||||
be_nested_map(16,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("json_fdump_map", -203012643, 14, 5), be_const_closure(json_fdump_map_closure) },
|
||||
{ be_nested_key("setmember", 1432909441, 9, -1), be_const_closure(setmember_closure) },
|
||||
{ be_nested_key("zero", -1955600541, 4, 15), be_const_closure(zero_closure) },
|
||||
{ be_nested_key("member", 719708611, 6, 12), be_const_closure(member_closure) },
|
||||
{ be_nested_key("json_fdump", 1694216580, 10, -1), be_const_closure(json_fdump_closure) },
|
||||
{ be_nested_key("remove", -611183107, 6, -1), be_const_closure(remove_closure) },
|
||||
{ be_nested_key("json_fdump_any", -946337911, 14, -1), be_const_closure(json_fdump_any_closure) },
|
||||
{ be_nested_key("_p", 1594591802, 2, -1), be_const_var(1) },
|
||||
{ be_nested_key("save", -855671224, 4, -1), be_const_closure(save_closure) },
|
||||
{ be_nested_key("load", -435725847, 4, 6), be_const_closure(load_closure) },
|
||||
{ be_nested_key("find", -1108310694, 4, 7), be_const_closure(find_closure) },
|
||||
{ be_nested_key("_filename", 1430813195, 9, -1), be_const_var(0) },
|
||||
{ be_nested_key("init", 380752755, 4, 2), be_const_closure(init_closure) },
|
||||
{ be_nested_key("json_fdump_list", -391087443, 15, 0), be_const_closure(json_fdump_list_closure) },
|
||||
{ be_nested_key("_dirty", 283846766, 6, -1), be_const_var(2) },
|
||||
{ be_nested_key("has", -306245661, 3, -1), be_const_closure(has_closure) },
|
||||
{ be_const_key(has, 6), be_const_closure(Persist_has_closure) },
|
||||
{ be_const_key(setmember, -1), be_const_closure(Persist_setmember_closure) },
|
||||
{ be_const_key(remove, -1), be_const_closure(Persist_remove_closure) },
|
||||
{ be_const_key(zero, 0), be_const_closure(Persist_zero_closure) },
|
||||
{ be_const_key(json_fdump, -1), be_const_closure(Persist_json_fdump_closure) },
|
||||
{ be_const_key(json_fdump_list, 2), be_const_closure(Persist_json_fdump_list_closure) },
|
||||
{ be_const_key(init, 15), be_const_closure(Persist_init_closure) },
|
||||
{ be_const_key(find, -1), be_const_closure(Persist_find_closure) },
|
||||
{ be_const_key(save, -1), be_const_closure(Persist_save_closure) },
|
||||
{ be_const_key(json_fdump_any, 12), be_const_closure(Persist_json_fdump_any_closure) },
|
||||
{ be_const_key(_p, 7), be_const_var(1) },
|
||||
{ be_const_key(_filename, -1), be_const_var(0) },
|
||||
{ be_const_key(load, -1), be_const_closure(Persist_load_closure) },
|
||||
{ be_const_key(json_fdump_map, 5), be_const_closure(Persist_json_fdump_map_closure) },
|
||||
{ be_const_key(_dirty, -1), be_const_var(2) },
|
||||
{ be_const_key(member, -1), be_const_closure(Persist_member_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Persist", 1456346147, 7))
|
||||
be_str_literal("Persist")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: _anonymous_
|
||||
********************************************************************/
|
||||
be_local_closure(_anonymous_, /* name */
|
||||
be_local_closure(persist__anonymous_, /* name */
|
||||
be_nested_proto(
|
||||
3, /* nstack */
|
||||
1, /* argc */
|
||||
@ -671,8 +675,8 @@ be_local_closure(_anonymous_, /* name */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_const_class(be_class_Persist),
|
||||
}),
|
||||
(be_nested_const_str("_anonymous_", 1957281476, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__anonymous_,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x58040000, // 0000 LDCONST R1 K0
|
||||
0xB4000000, // 0001 CLASS K0
|
||||
@ -692,7 +696,7 @@ be_local_module(persist,
|
||||
"persist",
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(_anonymous__closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(persist__anonymous__closure) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(persist);
|
||||
|
@ -8,7 +8,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: _anonymous_
|
||||
********************************************************************/
|
||||
be_local_closure(_anonymous_, /* name */
|
||||
be_local_closure(python_compat__anonymous_, /* name */
|
||||
be_nested_proto(
|
||||
3, /* nstack */
|
||||
1, /* argc */
|
||||
@ -19,25 +19,25 @@ be_local_closure(_anonymous_, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_string("global", 503252654, 6),
|
||||
/* K1 */ be_nested_string("True", -841064955, 4),
|
||||
/* K2 */ be_nested_string("False", -1753917960, 5),
|
||||
/* K3 */ be_nested_string("None", 810547195, 4),
|
||||
/* K4 */ be_nested_string("b", -418632219, 1),
|
||||
/* K0 */ be_nested_str(global),
|
||||
/* K1 */ be_nested_str(True),
|
||||
/* K2 */ be_nested_str(False),
|
||||
/* K3 */ be_nested_str(None),
|
||||
/* K4 */ be_nested_str(b),
|
||||
}),
|
||||
(be_nested_const_str("_anonymous_", 1957281476, 11)),
|
||||
(be_nested_const_str("python_compat.be", -225667571, 16)),
|
||||
&be_const_str__anonymous_,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x50080200, // 0001 LDBOOL R2 1 0
|
||||
0x90060202, // 0002 SETMBR R1 K1 R2
|
||||
0x50080000, // 0003 LDBOOL R2 0 0
|
||||
0x90060402, // 0004 SETMBR R1 K2 R2
|
||||
0x4C080000, // 0005 LDNIL R2
|
||||
0x90060602, // 0006 SETMBR R1 K3 R2
|
||||
0x60080015, // 0007 GETGBL R2 G21
|
||||
0x90060802, // 0008 SETMBR R1 K4 R2
|
||||
0x80040000, // 0009 RET 1 R0
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x50080200, // 0001 LDBOOL R2 1 0
|
||||
0x90060202, // 0002 SETMBR R1 K1 R2
|
||||
0x50080000, // 0003 LDBOOL R2 0 0
|
||||
0x90060402, // 0004 SETMBR R1 K2 R2
|
||||
0x4C080000, // 0005 LDNIL R2
|
||||
0x90060602, // 0006 SETMBR R1 K3 R2
|
||||
0x60080015, // 0007 GETGBL R2 G21
|
||||
0x90060802, // 0008 SETMBR R1 K4 R2
|
||||
0x80040000, // 0009 RET 1 R0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -51,7 +51,7 @@ be_local_module(python_compat,
|
||||
"python_compat",
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(_anonymous__closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(python_compat__anonymous__closure) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(python_compat);
|
||||
|
@ -9,7 +9,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(Tapp_init, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
1, /* argc */
|
||||
@ -20,11 +20,11 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 2]) { /* constants */
|
||||
/* K0 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K1 */ be_nested_string("add_driver", 1654458371, 10),
|
||||
/* K0 */ be_nested_str(tasmota),
|
||||
/* K1 */ be_nested_str(add_driver),
|
||||
}),
|
||||
(be_nested_const_str("init", 380752755, 4)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0xB8060000, // 0000 GETNGBL R1 K0
|
||||
0x8C040301, // 0001 GETMET R1 R1 K1
|
||||
@ -40,9 +40,9 @@ be_local_closure(init, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: autoexec
|
||||
********************************************************************/
|
||||
be_local_closure(autoexec, /* name */
|
||||
be_local_closure(Tapp_autoexec, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
12, /* nstack */
|
||||
1, /* argc */
|
||||
0, /* varg */
|
||||
0, /* has upvals */
|
||||
@ -50,24 +50,26 @@ be_local_closure(autoexec, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[13]) { /* constants */
|
||||
/* K0 */ be_nested_string("path", -2071507658, 4),
|
||||
/* K1 */ be_nested_string("string", 398550328, 6),
|
||||
/* K2 */ be_nested_string("listdir", 2005220720, 7),
|
||||
/* K3 */ be_nested_string("/", 705468254, 1),
|
||||
/* K4 */ be_nested_string("find", -1108310694, 4),
|
||||
/* K5 */ be_nested_string(".tapp", 1363391594, 5),
|
||||
( &(const bvalue[15]) { /* constants */
|
||||
/* K0 */ be_nested_str(path),
|
||||
/* K1 */ be_nested_str(string),
|
||||
/* K2 */ be_nested_str(listdir),
|
||||
/* K3 */ be_nested_str(_X2F),
|
||||
/* K4 */ be_nested_str(find),
|
||||
/* K5 */ be_nested_str(_X2Etapp),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K8 */ be_nested_string("TAP: found Tasmota App '%s'", -1651814898, 27),
|
||||
/* K9 */ be_nested_string("tasmota", 424643812, 7),
|
||||
/* K10 */ be_nested_string("load", -435725847, 4),
|
||||
/* K11 */ be_nested_string("#autoexec.be", 1181757091, 12),
|
||||
/* K12 */ be_nested_string("stop_iteration", -121173395, 14),
|
||||
/* K7 */ be_nested_str(tasmota),
|
||||
/* K8 */ be_nested_str(log),
|
||||
/* K9 */ be_nested_str(format),
|
||||
/* K10 */ be_nested_str(TAP_X3A_X20found_X20Tasmota_X20App_X20_X27_X25s_X27),
|
||||
/* K11 */ be_const_int(2),
|
||||
/* K12 */ be_nested_str(load),
|
||||
/* K13 */ be_nested_str(_X23autoexec_X2Ebe),
|
||||
/* K14 */ be_nested_str(stop_iteration),
|
||||
}),
|
||||
(be_nested_const_str("autoexec", -618105405, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
( &(const binstruction[32]) { /* code */
|
||||
&be_const_str_autoexec,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[34]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
0x8C0C0302, // 0002 GETMET R3 R1 K2
|
||||
@ -76,7 +78,7 @@ be_local_closure(autoexec, /* name */
|
||||
0x60100010, // 0005 GETGBL R4 G16
|
||||
0x5C140600, // 0006 MOVE R5 R3
|
||||
0x7C100200, // 0007 CALL R4 1
|
||||
0xA8020012, // 0008 EXBLK 0 #001C
|
||||
0xA8020014, // 0008 EXBLK 0 #001E
|
||||
0x5C140800, // 0009 MOVE R5 R4
|
||||
0x7C140000, // 000A CALL R5 0
|
||||
0x8C180504, // 000B GETMET R6 R2 K4
|
||||
@ -84,22 +86,24 @@ be_local_closure(autoexec, /* name */
|
||||
0x58240005, // 000D LDCONST R9 K5
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x24180D06, // 000F GT R6 R6 K6
|
||||
0x781A0009, // 0010 JMPF R6 #001B
|
||||
0x60180001, // 0011 GETGBL R6 G1
|
||||
0x8C1C0507, // 0012 GETMET R7 R2 K7
|
||||
0x58240008, // 0013 LDCONST R9 K8
|
||||
0x5C280A00, // 0014 MOVE R10 R5
|
||||
0x7C1C0600, // 0015 CALL R7 3
|
||||
0x7C180200, // 0016 CALL R6 1
|
||||
0xB81A1200, // 0017 GETNGBL R6 K9
|
||||
0x8C180D0A, // 0018 GETMET R6 R6 K10
|
||||
0x00200B0B, // 0019 ADD R8 R5 K11
|
||||
0x7C180400, // 001A CALL R6 2
|
||||
0x7001FFEC, // 001B JMP #0009
|
||||
0x5810000C, // 001C LDCONST R4 K12
|
||||
0xAC100200, // 001D CATCH R4 1 0
|
||||
0xB0080000, // 001E RAISE 2 R0 R0
|
||||
0x80000000, // 001F RET 0
|
||||
0x781A000B, // 0010 JMPF R6 #001D
|
||||
0xB81A0E00, // 0011 GETNGBL R6 K7
|
||||
0x8C180D08, // 0012 GETMET R6 R6 K8
|
||||
0x8C200509, // 0013 GETMET R8 R2 K9
|
||||
0x5828000A, // 0014 LDCONST R10 K10
|
||||
0x5C2C0A00, // 0015 MOVE R11 R5
|
||||
0x7C200600, // 0016 CALL R8 3
|
||||
0x5824000B, // 0017 LDCONST R9 K11
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0xB81A0E00, // 0019 GETNGBL R6 K7
|
||||
0x8C180D0C, // 001A GETMET R6 R6 K12
|
||||
0x00200B0D, // 001B ADD R8 R5 K13
|
||||
0x7C180400, // 001C CALL R6 2
|
||||
0x7001FFEA, // 001D JMP #0009
|
||||
0x5810000E, // 001E LDCONST R4 K14
|
||||
0xAC100200, // 001F CATCH R4 1 0
|
||||
0xB0080000, // 0020 RAISE 2 R0 R0
|
||||
0x80000000, // 0021 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -114,16 +118,16 @@ be_local_class(Tapp,
|
||||
NULL,
|
||||
be_nested_map(2,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_nested_key("autoexec", -618105405, 8, 0), be_const_closure(autoexec_closure) },
|
||||
{ be_const_key(autoexec, -1), be_const_closure(Tapp_autoexec_closure) },
|
||||
{ be_const_key(init, 0), be_const_closure(Tapp_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Tapp", 2012315062, 4))
|
||||
be_str_literal("Tapp")
|
||||
);
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: _anonymous_
|
||||
********************************************************************/
|
||||
be_local_closure(_anonymous_, /* name */
|
||||
be_local_closure(tapp__anonymous_, /* name */
|
||||
be_nested_proto(
|
||||
3, /* nstack */
|
||||
1, /* argc */
|
||||
@ -136,8 +140,8 @@ be_local_closure(_anonymous_, /* name */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_const_class(be_class_Tapp),
|
||||
}),
|
||||
(be_nested_const_str("_anonymous_", 1957281476, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str__anonymous_,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0x58040000, // 0000 LDCONST R1 K0
|
||||
0xB4000000, // 0001 CLASS K0
|
||||
@ -157,7 +161,7 @@ be_local_module(tapp,
|
||||
"tapp",
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(_anonymous__closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(tapp__anonymous__closure) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(tapp);
|
||||
|
File diff suppressed because it is too large
Load Diff
48
lib/libesp32/Berry/default/be_tcpclient_lib.c
Normal file
48
lib/libesp32/Berry/default/be_tcpclient_lib.c
Normal file
@ -0,0 +1,48 @@
|
||||
/********************************************************************
|
||||
* Webclient mapped to Arduino framework
|
||||
*
|
||||
* To use: `d = webclient()`
|
||||
*
|
||||
*******************************************************************/
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_WEBCLIENT
|
||||
|
||||
extern int wc_tcp_init(bvm *vm);
|
||||
extern int wc_tcp_deinit(bvm *vm);
|
||||
|
||||
extern int wc_tcp_connect(bvm *vm);
|
||||
extern int wc_tcp_connected(bvm *vm);
|
||||
extern int wc_tcp_close(bvm *vm);
|
||||
extern int wc_tcp_available(bvm *vm);
|
||||
|
||||
extern int wc_tcp_write(bvm *vm);
|
||||
extern int wc_tcp_read(bvm *vm);
|
||||
extern int wc_tcp_readbytes(bvm *vm);
|
||||
|
||||
#include "../generate/be_fixed_be_class_tcpclient.h"
|
||||
|
||||
void be_load_tcpclient_lib(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_tcpclient);
|
||||
be_setglobal(vm, "tcpclient");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
/* @const_object_info_begin
|
||||
|
||||
class be_class_tcpclient (scope: global, name: tcpclient) {
|
||||
.w, var
|
||||
init, func(wc_tcp_init)
|
||||
deinit, func(wc_tcp_deinit)
|
||||
|
||||
connect, func(wc_tcp_connect)
|
||||
connected, func(wc_tcp_connected)
|
||||
close, func(wc_tcp_close)
|
||||
available, func(wc_tcp_available)
|
||||
|
||||
write, func(wc_tcp_write)
|
||||
read, func(wc_tcp_read)
|
||||
readbytes, func(wc_tcp_readbytes)
|
||||
}
|
||||
@const_object_info_end */
|
||||
|
||||
#endif // USE_WEBCLIENT
|
@ -8,7 +8,7 @@
|
||||
/********************************************************************
|
||||
** Solidified function: tostring
|
||||
********************************************************************/
|
||||
be_local_closure(tostring, /* name */
|
||||
be_local_closure(Timer_tostring, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
1, /* argc */
|
||||
@ -19,35 +19,35 @@ be_local_closure(tostring, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_string("string", 398550328, 6),
|
||||
/* K1 */ be_nested_string("format", -1180859054, 6),
|
||||
/* K2 */ be_nested_string("<instance: %s(%s, %s, %s)", 257363333, 25),
|
||||
/* K3 */ be_nested_string("due", -399437003, 3),
|
||||
/* K4 */ be_nested_string("f", -485742695, 1),
|
||||
/* K5 */ be_nested_string("id", 926444256, 2),
|
||||
/* K0 */ be_nested_str(string),
|
||||
/* K1 */ be_nested_str(format),
|
||||
/* K2 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
|
||||
/* K3 */ be_nested_str(due),
|
||||
/* K4 */ be_nested_str(f),
|
||||
/* K5 */ be_nested_str(id),
|
||||
}),
|
||||
(be_nested_const_str("tostring", -1995258651, 8)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_tostring,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[19]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080301, // 0001 GETMET R2 R1 K1
|
||||
0x58100002, // 0002 LDCONST R4 K2
|
||||
0x60140008, // 0003 GETGBL R5 G8
|
||||
0x60180006, // 0004 GETGBL R6 G6
|
||||
0x5C1C0000, // 0005 MOVE R7 R0
|
||||
0x7C180200, // 0006 CALL R6 1
|
||||
0x7C140200, // 0007 CALL R5 1
|
||||
0x60180008, // 0008 GETGBL R6 G8
|
||||
0x881C0103, // 0009 GETMBR R7 R0 K3
|
||||
0x7C180200, // 000A CALL R6 1
|
||||
0x601C0008, // 000B GETGBL R7 G8
|
||||
0x88200104, // 000C GETMBR R8 R0 K4
|
||||
0x7C1C0200, // 000D CALL R7 1
|
||||
0x60200008, // 000E GETGBL R8 G8
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C200200, // 0010 CALL R8 1
|
||||
0x7C080C00, // 0011 CALL R2 6
|
||||
0x80040400, // 0012 RET 1 R2
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x8C080301, // 0001 GETMET R2 R1 K1
|
||||
0x58100002, // 0002 LDCONST R4 K2
|
||||
0x60140008, // 0003 GETGBL R5 G8
|
||||
0x60180006, // 0004 GETGBL R6 G6
|
||||
0x5C1C0000, // 0005 MOVE R7 R0
|
||||
0x7C180200, // 0006 CALL R6 1
|
||||
0x7C140200, // 0007 CALL R5 1
|
||||
0x60180008, // 0008 GETGBL R6 G8
|
||||
0x881C0103, // 0009 GETMBR R7 R0 K3
|
||||
0x7C180200, // 000A CALL R6 1
|
||||
0x601C0008, // 000B GETGBL R7 G8
|
||||
0x88200104, // 000C GETMBR R8 R0 K4
|
||||
0x7C1C0200, // 000D CALL R7 1
|
||||
0x60200008, // 000E GETGBL R8 G8
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C200200, // 0010 CALL R8 1
|
||||
0x7C080C00, // 0011 CALL R2 6
|
||||
0x80040400, // 0012 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -57,7 +57,7 @@ be_local_closure(tostring, /* name */
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(init, /* name */
|
||||
be_local_closure(Timer_init, /* name */
|
||||
be_nested_proto(
|
||||
4, /* nstack */
|
||||
4, /* argc */
|
||||
@ -68,17 +68,17 @@ be_local_closure(init, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("due", -399437003, 3),
|
||||
/* K1 */ be_nested_string("f", -485742695, 1),
|
||||
/* K2 */ be_nested_string("id", 926444256, 2),
|
||||
/* K0 */ be_nested_str(due),
|
||||
/* K1 */ be_nested_str(f),
|
||||
/* K2 */ be_nested_str(id),
|
||||
}),
|
||||
((bstring*) &be_const_str_init),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_init,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 4]) { /* code */
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x90020202, // 0001 SETMBR R0 K1 R2
|
||||
0x90020403, // 0002 SETMBR R0 K2 R3
|
||||
0x80000000, // 0003 RET 0
|
||||
0x90020001, // 0000 SETMBR R0 K0 R1
|
||||
0x90020202, // 0001 SETMBR R0 K1 R2
|
||||
0x90020403, // 0002 SETMBR R0 K2 R3
|
||||
0x80000000, // 0003 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -93,13 +93,13 @@ be_local_class(Timer,
|
||||
NULL,
|
||||
be_nested_map(5,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("tostring", -1995258651, 8, 4), be_const_closure(tostring_closure) },
|
||||
{ be_nested_key("id", 926444256, 2, 2), be_const_var(2) },
|
||||
{ be_nested_key("f", -485742695, 1, -1), be_const_var(1) },
|
||||
{ be_nested_key("due", -399437003, 3, -1), be_const_var(0) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) },
|
||||
{ be_const_key(tostring, 4), be_const_closure(Timer_tostring_closure) },
|
||||
{ be_const_key(id, 2), be_const_var(2) },
|
||||
{ be_const_key(f, -1), be_const_var(1) },
|
||||
{ be_const_key(due, -1), be_const_var(0) },
|
||||
{ be_const_key(init, -1), be_const_closure(Timer_init_closure) },
|
||||
})),
|
||||
(be_nested_const_str("Timer", -346839614, 5))
|
||||
be_str_literal("Timer")
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
@ -9,8 +9,8 @@
|
||||
|
||||
#ifdef USE_UNISHOX_COMPRESSION
|
||||
|
||||
extern int be_unishox_compress(bvm *vm);
|
||||
extern int be_unishox_decompress(bvm *vm);
|
||||
extern int be_ntv_unishox_decompress(bvm *vm);
|
||||
extern int be_ntv_unishox_compress(bvm *vm);
|
||||
|
||||
/********************************************************************
|
||||
** Solidified module: unishox
|
||||
@ -19,8 +19,8 @@ be_local_module(unishox,
|
||||
"unishox",
|
||||
be_nested_map(2,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("decompress", -1407935646, 10, -1), be_const_func(be_unishox_decompress) },
|
||||
{ be_nested_key("compress", -1476883059, 8, -1), be_const_func(be_unishox_compress) },
|
||||
{ be_const_key(decompress, -1), be_const_func(be_ntv_unishox_decompress) },
|
||||
{ be_const_key(compress, -1), be_const_func(be_ntv_unishox_compress) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(unishox);
|
||||
|
@ -39,12 +39,12 @@ be_local_closure(write_bytes, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_string("_begin_transmission", -1515506120, 19),
|
||||
/* K1 */ be_nested_string("_write", -2079504471, 6),
|
||||
/* K2 */ be_nested_string("_end_transmission", -1057486896, 17),
|
||||
/* K0 */ be_nested_str(_begin_transmission),
|
||||
/* K1 */ be_nested_str(_write),
|
||||
/* K2 */ be_nested_str(_end_transmission),
|
||||
}),
|
||||
(be_nested_const_str("write_bytes", 1227543792, 11)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_write_bytes,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
0x8C100100, // 0000 GETMET R4 R0 K0
|
||||
0x5C180200, // 0001 MOVE R6 R1
|
||||
@ -78,15 +78,15 @@ be_local_closure(read_bytes, /* name */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_string("_begin_transmission", -1515506120, 19),
|
||||
/* K1 */ be_nested_string("_write", -2079504471, 6),
|
||||
/* K2 */ be_nested_string("_end_transmission", -1057486896, 17),
|
||||
/* K3 */ be_nested_string("_request_from", -329818692, 13),
|
||||
/* K4 */ be_nested_string("_available", 1306196581, 10),
|
||||
/* K5 */ be_nested_string("_read", 346717030, 5),
|
||||
/* K0 */ be_nested_str(_begin_transmission),
|
||||
/* K1 */ be_nested_str(_write),
|
||||
/* K2 */ be_nested_str(_end_transmission),
|
||||
/* K3 */ be_nested_str(_request_from),
|
||||
/* K4 */ be_nested_str(_available),
|
||||
/* K5 */ be_nested_str(_read),
|
||||
}),
|
||||
(be_nested_const_str("read_bytes", -718234123, 10)),
|
||||
((bstring*) &be_const_str_input),
|
||||
&be_const_str_read_bytes,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[24]) { /* code */
|
||||
0x8C100100, // 0000 GETMET R4 R0 K0
|
||||
0x5C180200, // 0001 MOVE R6 R1
|
||||
|
@ -330,6 +330,25 @@ class Tasmota
|
||||
end
|
||||
|
||||
def load(f)
|
||||
# embedded functions
|
||||
# puth_path: adds the current archive to sys.path
|
||||
def push_path(p)
|
||||
import sys
|
||||
var path = sys.path()
|
||||
if path.find(p) == nil # append only if it's not already there
|
||||
path.push(p)
|
||||
end
|
||||
end
|
||||
# pop_path: removes the path
|
||||
def pop_path(p)
|
||||
import sys
|
||||
var path = sys.path()
|
||||
var idx = path.find(p)
|
||||
if idx != nil
|
||||
path.remove(idx)
|
||||
end
|
||||
end
|
||||
|
||||
import string
|
||||
import path
|
||||
|
||||
@ -382,6 +401,7 @@ class Tasmota
|
||||
# recall the working directory
|
||||
if f_archive
|
||||
self.wd = f_prefix + "#"
|
||||
push_path(self.wd)
|
||||
else
|
||||
self.wd = ""
|
||||
end
|
||||
@ -398,6 +418,12 @@ class Tasmota
|
||||
# call the compiled code
|
||||
c()
|
||||
# call successfuls
|
||||
|
||||
# remove path prefix
|
||||
if f_archive
|
||||
pop_path(f_prefix + "#")
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
- i2c_index: (optional) check is the device is not disabled
|
||||
-------------------------------------------------------------#
|
||||
|
||||
class I2C_Driver : Driver
|
||||
class I2C_Driver
|
||||
var wire #- wire object to reach the device, if nil then the module is not initialized -#
|
||||
var addr #- I2C address of the device -#
|
||||
var name #- model namme of the device, cannot be nil -#
|
||||
|
@ -24,12 +24,14 @@
|
||||
|
||||
class Leds : Leds_ntv
|
||||
var gamma # if true, apply gamma (true is default)
|
||||
var leds # number of leds
|
||||
# leds:int = number of leds of the strip
|
||||
# gpio:int (optional) = GPIO for NeoPixel. If not specified, takes the WS2812 gpio
|
||||
# type:int (optional) = Type of LED, defaults to WS2812 RGB
|
||||
# rmt:int (optional) = RMT hardware channel to use, leave default unless you have a good reason
|
||||
def init(leds, gpio, type, rmt) # rmt is optional
|
||||
self.gamma = true # gamma is enabled by default, it should be disabled explicitly if needed
|
||||
self.leds = int(leds)
|
||||
|
||||
if gpio == nil && gpio.pin(gpio.WS2812) >= 0
|
||||
gpio = gpio.pin(gpio.WS2812)
|
||||
@ -41,7 +43,7 @@ class Leds : Leds_ntv
|
||||
end
|
||||
|
||||
# initialize the structure
|
||||
self.ctor(leds, gpio, type, rmt)
|
||||
self.ctor(self.leds, gpio, type, rmt)
|
||||
|
||||
if self._p == nil raise "internal_error", "couldn't not initialize noepixelbus" end
|
||||
|
||||
@ -124,8 +126,176 @@ class Leds : Leds_ntv
|
||||
b
|
||||
end
|
||||
end
|
||||
|
||||
# `segment`
|
||||
# create a new `strip` object that maps a part of the current strip
|
||||
def create_segment(offset, leds)
|
||||
if int(offset) + int(leds) > self.leds || offset < 0 || leds < 0
|
||||
raise "value_error", "out of range"
|
||||
end
|
||||
|
||||
# inner class
|
||||
class Leds_segment
|
||||
var strip
|
||||
var offset, leds
|
||||
|
||||
def init(strip, offset, leds)
|
||||
self.strip = strip
|
||||
self.offset = int(offset)
|
||||
self.leds = int(leds)
|
||||
end
|
||||
|
||||
def clear()
|
||||
self.clear_to(0x000000)
|
||||
self.show()
|
||||
end
|
||||
|
||||
def begin()
|
||||
# do nothing, already being handled by physical strip
|
||||
end
|
||||
def show(force)
|
||||
# don't trigger on segment, you will need to trigger on full strip instead
|
||||
if bool(force) || (self.offset == 0 && self.leds == self.strip.leds)
|
||||
self.strip.show()
|
||||
end
|
||||
end
|
||||
def can_show()
|
||||
return self.strip.can_show()
|
||||
end
|
||||
def is_dirty()
|
||||
return self.strip.is_dirty()
|
||||
end
|
||||
def dirty()
|
||||
self.strip.dirty()
|
||||
end
|
||||
def pixels_buffer()
|
||||
return nil
|
||||
end
|
||||
def pixel_size()
|
||||
return self.strip.pixel_size()
|
||||
end
|
||||
def pixel_count()
|
||||
return self.leds
|
||||
end
|
||||
def clear_to(col, bri)
|
||||
var i = 0
|
||||
while i < self.leds
|
||||
self.strip.set_pixel_color(i + self.offset, col, bri)
|
||||
i += 1
|
||||
end
|
||||
end
|
||||
def set_pixel_color(idx, col, bri)
|
||||
self.strip.set_pixel_color(idx + self.offset, col, bri)
|
||||
end
|
||||
def get_pixel_color(idx)
|
||||
return self.strip.get_pixel_color(idx + self.offseta)
|
||||
end
|
||||
end
|
||||
|
||||
return Leds_segment(self, offset, leds)
|
||||
|
||||
end
|
||||
|
||||
def create_matrix(w, h, offset)
|
||||
offset = int(offset)
|
||||
w = int(w)
|
||||
h = int(h)
|
||||
if offset == nil offset = 0 end
|
||||
if w * h + offset > self.leds || h < 0 || w < 0 || offset < 0
|
||||
raise "value_error", "out of range"
|
||||
end
|
||||
|
||||
# inner class
|
||||
class Leds_matrix
|
||||
var strip
|
||||
var offset
|
||||
var h, w
|
||||
var alternate # are rows in alternate mode (even/odd are reversed)
|
||||
|
||||
def init(strip, w, h, offset)
|
||||
self.strip = strip
|
||||
self.offset = offset
|
||||
self.h = h
|
||||
self.w = w
|
||||
self.alternate = false
|
||||
end
|
||||
|
||||
def clear()
|
||||
self.clear_to(0x000000)
|
||||
self.show()
|
||||
end
|
||||
|
||||
def begin()
|
||||
# do nothing, already being handled by physical strip
|
||||
end
|
||||
def show(force)
|
||||
# don't trigger on segment, you will need to trigger on full strip instead
|
||||
if bool(force) || (self.offset == 0 && self.w * self.h == self.strip.leds)
|
||||
self.strip.show()
|
||||
end
|
||||
end
|
||||
def can_show()
|
||||
return self.strip.can_show()
|
||||
end
|
||||
def is_dirty()
|
||||
return self.strip.is_dirty()
|
||||
end
|
||||
def dirty()
|
||||
self.strip.dirty()
|
||||
end
|
||||
def pixels_buffer()
|
||||
return nil
|
||||
end
|
||||
def pixel_size()
|
||||
return self.strip.pixel_size()
|
||||
end
|
||||
def pixel_count()
|
||||
return self.w * self.h
|
||||
end
|
||||
def clear_to(col, bri)
|
||||
var i = 0
|
||||
while i < self.w * self.h
|
||||
self.strip.set_pixel_color(i + self.offset, col, bri)
|
||||
i += 1
|
||||
end
|
||||
end
|
||||
def set_pixel_color(idx, col, bri)
|
||||
self.strip.set_pixel_color(idx + self.offset, col, bri)
|
||||
end
|
||||
def get_pixel_color(idx)
|
||||
return self.strip.get_pixel_color(idx + self.offseta)
|
||||
end
|
||||
|
||||
# Leds_matrix specific
|
||||
def set_alternate(alt)
|
||||
self.alternate = alt
|
||||
end
|
||||
def get_alternate()
|
||||
return self.alternate
|
||||
end
|
||||
|
||||
def set_matrix_pixel_color(x, y, col, bri)
|
||||
if self.alternate && x % 2
|
||||
# reversed line
|
||||
self.strip.set_pixel_color(x * self.w + self.h - y - 1 + self.offset, col, bri)
|
||||
else
|
||||
self.strip.set_pixel_color(x * self.w + y + self.offset, col, bri)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return Leds_matrix(self, w, h, offset)
|
||||
|
||||
end
|
||||
|
||||
static def matrix(w, h, gpio, rmt)
|
||||
var strip = Leds(w * h, gpio, rmt)
|
||||
var matrix = strip.create_matrix(w, h, 0)
|
||||
return matrix
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
#-
|
||||
|
||||
var s = Leds(25, gpio.pin(gpio.WS2812, 1))
|
||||
@ -144,34 +314,6 @@ anim()
|
||||
|
||||
-#
|
||||
|
||||
class Leds_matrix : Leds
|
||||
var h, w
|
||||
var alternate # are rows in alternate mode (even/odd are reversed)
|
||||
|
||||
def init(w, h, gpio, rmt)
|
||||
self.w = w
|
||||
self.h = h
|
||||
self.alternate = false
|
||||
super(self).init(w * h, gpio, rmt)
|
||||
end
|
||||
|
||||
def set_alternate(alt)
|
||||
self.alternate = alt
|
||||
end
|
||||
def get_alternate()
|
||||
return self.alternate
|
||||
end
|
||||
|
||||
def set_matrix_pixel_color(x, y, col, bri)
|
||||
if self.alternate && x % 2
|
||||
# reversed line
|
||||
self.set_pixel_color(x * self.w + self.h - y - 1, col, bri)
|
||||
else
|
||||
self.set_pixel_color(x * self.w + y, col, bri)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#-
|
||||
|
||||
var s = Leds_matrix(5, 5, gpio.pin(gpio.WS2812, 1))
|
||||
|
@ -81,6 +81,8 @@ persist_module.init = def (m)
|
||||
print("BRY: failed to load _persist.json")
|
||||
end
|
||||
self._dirty = false
|
||||
else
|
||||
self.save()
|
||||
end
|
||||
|
||||
# print("Loading")
|
||||
|
@ -19,7 +19,7 @@ tapp_module.init = def (m)
|
||||
|
||||
for d: dir
|
||||
if string.find(d, ".tapp") > 0
|
||||
print(string.format("TAP: found Tasmota App '%s'", d))
|
||||
tasmota.log(string.format("TAP: found Tasmota App '%s'", d), 2)
|
||||
tasmota.load(d + "#autoexec.be")
|
||||
end
|
||||
end
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,27 +0,0 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_I2C_Driver_map) {
|
||||
{ be_const_key(read32, -1), be_const_closure(read32_closure) },
|
||||
{ be_const_key(write8, 6), be_const_closure(write8_closure) },
|
||||
{ be_const_key(name, -1), be_const_var(0) },
|
||||
{ be_const_key(addr, 10), be_const_var(1) },
|
||||
{ be_const_key(read12, -1), be_const_closure(read12_closure) },
|
||||
{ be_const_key(write_bit, 8), be_const_closure(write_bit_closure) },
|
||||
{ be_const_key(read13, -1), be_const_closure(read13_closure) },
|
||||
{ be_const_key(read24, -1), be_const_closure(read24_closure) },
|
||||
{ be_const_key(wire, -1), be_const_var(2) },
|
||||
{ be_const_key(init, -1), be_const_closure(init_closure) },
|
||||
{ be_const_key(read8, -1), be_const_closure(read8_closure) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
be_class_I2C_Driver_map,
|
||||
11
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
be_class_I2C_Driver,
|
||||
3,
|
||||
(bclass *)&be_class_Driver,
|
||||
I2C_Driver
|
||||
);
|
@ -2,10 +2,10 @@
|
||||
|
||||
static be_define_const_map_slots(be_class_aes_gcm_map) {
|
||||
{ be_const_key(encrypt, 4), be_const_func(m_aes_gcm_encryt) },
|
||||
{ be_const_key(dot_p2, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep2, -1), be_const_var(0) },
|
||||
{ be_const_key(decrypt, -1), be_const_func(m_aes_gcm_decryt) },
|
||||
{ be_const_key(init, -1), be_const_func(m_aes_gcm_init) },
|
||||
{ be_const_key(dot_p1, -1), be_const_var(1) },
|
||||
{ be_const_key(_X2Ep1, -1), be_const_var(1) },
|
||||
{ be_const_key(tag, -1), be_const_func(m_aes_gcm_tag) },
|
||||
};
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_audio_file_source_map) {
|
||||
{ be_const_key(dot_p, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, -1), be_const_var(0) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_audio_generator_map) {
|
||||
{ be_const_key(dot_p, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, -1), be_const_var(0) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_audio_output_map) {
|
||||
{ be_const_key(dot_p, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, -1), be_const_var(0) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
|
@ -2,29 +2,29 @@
|
||||
|
||||
static be_define_const_map_slots(be_class_bytes_map) {
|
||||
{ be_const_key(setitem, -1), be_const_func(m_setitem) },
|
||||
{ be_const_key(opt_connect, -1), be_const_func(m_connect) },
|
||||
{ be_const_key(_X2E_X2E, -1), be_const_func(m_connect) },
|
||||
{ be_const_key(geti, -1), be_const_func(m_geti) },
|
||||
{ be_const_key(deinit, -1), be_const_func(m_deinit) },
|
||||
{ be_const_key(add, 18), be_const_func(m_add) },
|
||||
{ be_const_key(get, -1), be_const_func(m_getu) },
|
||||
{ be_const_key(asstring, 9), be_const_func(m_asstring) },
|
||||
{ be_const_key(dot_p, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, -1), be_const_var(0) },
|
||||
{ be_const_key(copy, 25), be_const_func(m_copy) },
|
||||
{ be_const_key(size, -1), be_const_func(m_size) },
|
||||
{ be_const_key(getbits, -1), be_const_closure(getbits_closure) },
|
||||
{ be_const_key(opt_eq, -1), be_const_func(m_equal) },
|
||||
{ be_const_key(_X3D_X3D, -1), be_const_func(m_equal) },
|
||||
{ be_const_key(tob64, 3), be_const_func(m_tob64) },
|
||||
{ be_const_key(init, -1), be_const_func(m_init) },
|
||||
{ be_const_key(opt_add, -1), be_const_func(m_merge) },
|
||||
{ be_const_key(_X2B, -1), be_const_func(m_merge) },
|
||||
{ be_const_key(setbits, -1), be_const_closure(setbits_closure) },
|
||||
{ be_const_key(_buffer, -1), be_const_func(m_buffer) },
|
||||
{ be_const_key(tostring, -1), be_const_func(m_tostring) },
|
||||
{ be_const_key(dot_len, -1), be_const_var(1) },
|
||||
{ be_const_key(_X2Elen, -1), be_const_var(1) },
|
||||
{ be_const_key(fromb64, 13), be_const_func(m_fromb64) },
|
||||
{ be_const_key(dot_size, 6), be_const_var(2) },
|
||||
{ be_const_key(_X2Esize, 6), be_const_var(2) },
|
||||
{ be_const_key(resize, -1), be_const_func(m_resize) },
|
||||
{ be_const_key(seti, -1), be_const_func(m_set) },
|
||||
{ be_const_key(opt_neq, 5), be_const_func(m_nequal) },
|
||||
{ be_const_key(_X21_X3D, 5), be_const_func(m_nequal) },
|
||||
{ be_const_key(item, -1), be_const_func(m_item) },
|
||||
{ be_const_key(fromstring, -1), be_const_func(m_fromstring) },
|
||||
{ be_const_key(clear, 24), be_const_func(m_clear) },
|
||||
|
@ -1,9 +1,9 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_list_map) {
|
||||
{ be_const_key(opt_add, -1), be_const_func(m_merge) },
|
||||
{ be_const_key(_X2B, -1), be_const_func(m_merge) },
|
||||
{ be_const_key(init, -1), be_const_func(m_init) },
|
||||
{ be_const_key(opt_connect, 11), be_const_func(m_connect) },
|
||||
{ be_const_key(_X2E_X2E, 11), be_const_func(m_connect) },
|
||||
{ be_const_key(tostring, 2), be_const_func(m_tostring) },
|
||||
{ be_const_key(pop, 6), be_const_func(m_pop) },
|
||||
{ be_const_key(insert, -1), be_const_func(m_insert) },
|
||||
@ -13,16 +13,16 @@ static be_define_const_map_slots(be_class_list_map) {
|
||||
{ be_const_key(push, 1), be_const_func(m_push) },
|
||||
{ be_const_key(item, 5), be_const_func(m_item) },
|
||||
{ be_const_key(concat, -1), be_const_func(m_concat) },
|
||||
{ be_const_key(dot_p, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, -1), be_const_var(0) },
|
||||
{ be_const_key(iter, -1), be_const_func(m_iter) },
|
||||
{ be_const_key(copy, -1), be_const_func(m_copy) },
|
||||
{ be_const_key(reverse, 13), be_const_func(m_reverse) },
|
||||
{ be_const_key(keys, -1), be_const_func(m_keys) },
|
||||
{ be_const_key(resize, 16), be_const_func(m_resize) },
|
||||
{ be_const_key(setitem, -1), be_const_func(m_setitem) },
|
||||
{ be_const_key(opt_neq, 7), be_const_func(m_nequal) },
|
||||
{ be_const_key(_X21_X3D, 7), be_const_func(m_nequal) },
|
||||
{ be_const_key(clear, -1), be_const_func(m_clear) },
|
||||
{ be_const_key(opt_eq, -1), be_const_func(m_equal) },
|
||||
{ be_const_key(_X3D_X3D, -1), be_const_func(m_equal) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
|
@ -8,7 +8,7 @@ static be_define_const_map_slots(be_class_map_map) {
|
||||
{ be_const_key(has, -1), be_const_func(m_contains) },
|
||||
{ be_const_key(init, -1), be_const_func(m_init) },
|
||||
{ be_const_key(contains, 9), be_const_func(m_contains) },
|
||||
{ be_const_key(dot_p, 13), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, 13), be_const_var(0) },
|
||||
{ be_const_key(reduce, -1), be_const_func(m_reduce) },
|
||||
{ be_const_key(size, -1), be_const_func(m_size) },
|
||||
{ be_const_key(find, -1), be_const_func(m_find) },
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
static be_define_const_map_slots(be_class_md5_map) {
|
||||
{ be_const_key(update, -1), be_const_func(m_md5_update) },
|
||||
{ be_const_key(dot_p, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, -1), be_const_var(0) },
|
||||
{ be_const_key(finish, -1), be_const_func(m_md5_finish) },
|
||||
{ be_const_key(init, 1), be_const_func(m_md5_init) },
|
||||
};
|
||||
|
@ -1,90 +1,91 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_tasmota_map) {
|
||||
{ be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) },
|
||||
{ be_const_key(resolvecmnd, 42), be_const_func(l_resolveCmnd) },
|
||||
{ be_const_key(add_driver, -1), be_const_closure(add_driver_closure) },
|
||||
{ be_const_key(gc, -1), be_const_closure(gc_closure) },
|
||||
{ be_const_key(find_op, -1), be_const_closure(find_op_closure) },
|
||||
{ be_const_key(scale_uint, 15), be_const_func(l_scaleuint) },
|
||||
{ be_const_key(try_rule, -1), be_const_closure(try_rule_closure) },
|
||||
{ be_const_key(time_reached, -1), be_const_func(l_timereached) },
|
||||
{ be_const_key(web_send, -1), be_const_func(l_webSend) },
|
||||
{ be_const_key(eth, 21), be_const_func(l_eth) },
|
||||
{ be_const_key(get_switch, 34), be_const_func(l_getswitch) },
|
||||
{ be_const_key(set_power, -1), be_const_func(l_setpower) },
|
||||
{ be_const_key(_drivers, 50), be_const_var(0) },
|
||||
{ be_const_key(_rules, -1), be_const_var(1) },
|
||||
{ be_const_key(_ccmd, 6), be_const_var(2) },
|
||||
{ be_const_key(time_dump, -1), be_const_func(l_time_dump) },
|
||||
{ be_const_key(gen_cb, 17), be_const_closure(gen_cb_closure) },
|
||||
{ be_const_key(cmd_res, 20), be_const_var(3) },
|
||||
{ be_const_key(set_light, 63), be_const_closure(set_light_closure) },
|
||||
{ be_const_key(millis, -1), be_const_func(l_millis) },
|
||||
{ be_const_key(global, -1), be_const_var(4) },
|
||||
{ be_const_key(exec_tele, 67), be_const_closure(exec_tele_closure) },
|
||||
{ be_const_key(gc, -1), be_const_closure(Tasmota_gc_closure) },
|
||||
{ be_const_key(read_sensors, 7), be_const_func(l_read_sensors) },
|
||||
{ be_const_key(_get_cb, -1), be_const_func(l_get_cb) },
|
||||
{ be_const_key(response_append, 50), be_const_func(l_respAppend) },
|
||||
{ be_const_key(try_rule, 74), be_const_closure(Tasmota_try_rule_closure) },
|
||||
{ be_const_key(eth, -1), be_const_func(l_eth) },
|
||||
{ be_const_key(find_key_i, -1), be_const_closure(Tasmota_find_key_i_closure) },
|
||||
{ be_const_key(exec_tele, 73), be_const_closure(Tasmota_exec_tele_closure) },
|
||||
{ be_const_key(remove_driver, 28), be_const_closure(Tasmota_remove_driver_closure) },
|
||||
{ be_const_key(load, -1), be_const_closure(Tasmota_load_closure) },
|
||||
{ be_const_key(_settings_ptr, -1), be_const_comptr(&Settings) },
|
||||
{ be_const_key(cmd_res, -1), be_const_var(0) },
|
||||
{ be_const_key(time_str, 43), be_const_closure(Tasmota_time_str_closure) },
|
||||
{ be_const_key(set_power, -1), be_const_func(l_setpower) },
|
||||
{ be_const_key(yield, 20), be_const_func(l_yield) },
|
||||
{ be_const_key(set_light, -1), be_const_closure(Tasmota_set_light_closure) },
|
||||
{ be_const_key(find_op, 32), be_const_closure(Tasmota_find_op_closure) },
|
||||
{ be_const_key(get_power, -1), be_const_func(l_getpower) },
|
||||
{ be_const_key(_cb, 57), be_const_var(5) },
|
||||
{ be_const_key(save, -1), be_const_func(l_save) },
|
||||
{ be_const_key(run_deferred, -1), be_const_closure(run_deferred_closure) },
|
||||
{ be_const_key(i2c_enabled, 9), be_const_func(l_i2cenabled) },
|
||||
{ be_const_key(remove_driver, -1), be_const_closure(remove_driver_closure) },
|
||||
{ be_const_key(event, -1), be_const_closure(event_closure) },
|
||||
{ be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) },
|
||||
{ be_const_key(web_send_decimal, -1), be_const_func(l_webSendDecimal) },
|
||||
{ be_const_key(get_free_heap, 3), be_const_func(l_getFreeHeap) },
|
||||
{ be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(init_closure) },
|
||||
{ be_const_key(wd, -1), be_const_var(6) },
|
||||
{ be_const_key(_debug_present, -1), be_const_var(7) },
|
||||
{ be_const_key(time_str, 45), be_const_closure(time_str_closure) },
|
||||
{ be_const_key(remove_rule, 71), be_const_closure(remove_rule_closure) },
|
||||
{ be_const_key(memory, 62), be_const_func(l_memory) },
|
||||
{ be_const_key(wifi, -1), be_const_func(l_wifi) },
|
||||
{ be_const_key(get_option, 44), be_const_func(l_getoption) },
|
||||
{ be_const_key(rtc, -1), be_const_func(l_rtc) },
|
||||
{ be_const_key(load, 72), be_const_closure(load_closure) },
|
||||
{ be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) },
|
||||
{ be_const_key(cmd, -1), be_const_closure(cmd_closure) },
|
||||
{ be_const_key(publish, 43), be_const_func(l_publish) },
|
||||
{ be_const_key(resp_cmnd_error, 18), be_const_func(l_respCmndError) },
|
||||
{ be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) },
|
||||
{ be_const_key(_settings_def, -1), be_const_comptr(&be_tasmota_settings_struct) },
|
||||
{ be_const_key(strftime, 4), be_const_func(l_strftime) },
|
||||
{ be_const_key(add_rule, 41), be_const_closure(add_rule_closure) },
|
||||
{ be_const_key(wire2, -1), be_const_var(8) },
|
||||
{ be_const_key(settings, -1), be_const_var(9) },
|
||||
{ be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) },
|
||||
{ be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) },
|
||||
{ be_const_key(yield, 68), be_const_func(l_yield) },
|
||||
{ be_const_key(_get_cb, 75), be_const_func(l_get_cb) },
|
||||
{ be_const_key(wire1, 33), be_const_var(10) },
|
||||
{ be_const_key(add_rule, -1), be_const_closure(Tasmota_add_rule_closure) },
|
||||
{ be_const_key(cb_dispatch, -1), be_const_closure(Tasmota_cb_dispatch_closure) },
|
||||
{ be_const_key(global, -1), be_const_var(1) },
|
||||
{ be_const_key(i2c_enabled, -1), be_const_func(l_i2cenabled) },
|
||||
{ be_const_key(remove_cmd, 10), be_const_closure(Tasmota_remove_cmd_closure) },
|
||||
{ be_const_key(millis, 18), be_const_func(l_millis) },
|
||||
{ be_const_key(publish, 69), be_const_func(l_publish) },
|
||||
{ be_const_key(_drivers, -1), be_const_var(2) },
|
||||
{ be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) },
|
||||
{ be_const_key(resp_cmnd_failed, 16), be_const_func(l_respCmndFailed) },
|
||||
{ be_const_key(time_dump, -1), be_const_func(l_time_dump) },
|
||||
{ be_const_key(web_send, -1), be_const_func(l_webSend) },
|
||||
{ be_const_key(hs2rgb, -1), be_const_closure(Tasmota_hs2rgb_closure) },
|
||||
{ be_const_key(memory, -1), be_const_func(l_memory) },
|
||||
{ be_const_key(gen_cb, 0), be_const_closure(Tasmota_gen_cb_closure) },
|
||||
{ be_const_key(rtc, -1), be_const_func(l_rtc) },
|
||||
{ be_const_key(get_option, -1), be_const_func(l_getoption) },
|
||||
{ be_const_key(add_cmd, -1), be_const_closure(Tasmota_add_cmd_closure) },
|
||||
{ be_const_key(init, -1), be_const_closure(Tasmota_init_closure) },
|
||||
{ be_const_key(_timers, -1), be_const_var(3) },
|
||||
{ be_const_key(_global_addr, -1), be_const_comptr(&TasmotaGlobal) },
|
||||
{ be_const_key(hs2rgb, -1), be_const_closure(hs2rgb_closure) },
|
||||
{ be_const_key(resp_cmnd_str, 76), be_const_func(l_respCmndStr) },
|
||||
{ be_const_key(_global_def, -1), be_const_comptr(&be_tasmota_global_struct) },
|
||||
{ be_const_key(kv, 74), be_const_closure(kv_closure) },
|
||||
{ be_const_key(delay, -1), be_const_func(l_delay) },
|
||||
{ be_const_key(remove_cmd, 19), be_const_closure(remove_cmd_closure) },
|
||||
{ be_const_key(set_timer, -1), be_const_closure(set_timer_closure) },
|
||||
{ be_const_key(_cmd, 54), be_const_func(l_cmd) },
|
||||
{ be_const_key(publish_result, -1), be_const_func(l_publish_result) },
|
||||
{ be_const_key(log, -1), be_const_func(l_logInfo) },
|
||||
{ be_const_key(wd, -1), be_const_var(4) },
|
||||
{ be_const_key(exec_cmd, -1), be_const_closure(Tasmota_exec_cmd_closure) },
|
||||
{ be_const_key(wire_scan, -1), be_const_closure(Tasmota_wire_scan_closure) },
|
||||
{ be_const_key(_global_def, 61), be_const_comptr(&be_tasmota_global_struct) },
|
||||
{ be_const_key(resp_cmnd_failed, 11), be_const_func(l_respCmndFailed) },
|
||||
{ be_const_key(chars_in_string, -1), be_const_closure(Tasmota_chars_in_string_closure) },
|
||||
{ be_const_key(web_send_decimal, -1), be_const_func(l_webSendDecimal) },
|
||||
{ be_const_key(_debug_present, 4), be_const_var(5) },
|
||||
{ be_const_key(cmd, -1), be_const_closure(Tasmota_cmd_closure) },
|
||||
{ be_const_key(_cb, -1), be_const_var(6) },
|
||||
{ be_const_key(remove_rule, -1), be_const_closure(Tasmota_remove_rule_closure) },
|
||||
{ be_const_key(run_deferred, -1), be_const_closure(Tasmota_run_deferred_closure) },
|
||||
{ be_const_key(strftime, -1), be_const_func(l_strftime) },
|
||||
{ be_const_key(add_driver, 3), be_const_closure(Tasmota_add_driver_closure) },
|
||||
{ be_const_key(kv, 60), be_const_closure(Tasmota_kv_closure) },
|
||||
{ be_const_key(set_timer, 58), be_const_closure(Tasmota_set_timer_closure) },
|
||||
{ be_const_key(scale_uint, -1), be_const_func(l_scaleuint) },
|
||||
{ be_const_key(remove_timer, -1), be_const_closure(Tasmota_remove_timer_closure) },
|
||||
{ be_const_key(settings, 49), be_const_var(7) },
|
||||
{ be_const_key(arch, -1), be_const_func(l_arch) },
|
||||
{ be_const_key(remove_timer, 66), be_const_closure(remove_timer_closure) },
|
||||
{ be_const_key(_timers, -1), be_const_var(11) },
|
||||
{ be_const_key(read_sensors, -1), be_const_func(l_read_sensors) },
|
||||
{ be_const_key(exec_cmd, -1), be_const_closure(exec_cmd_closure) },
|
||||
{ be_const_key(response_append, -1), be_const_func(l_respAppend) },
|
||||
{ be_const_key(get_light, -1), be_const_closure(get_light_closure) },
|
||||
{ be_const_key(_ccmd, 64), be_const_var(8) },
|
||||
{ be_const_key(wire1, 46), be_const_var(9) },
|
||||
{ be_const_key(exec_rules, 66), be_const_closure(Tasmota_exec_rules_closure) },
|
||||
{ be_const_key(strptime, -1), be_const_func(l_strptime) },
|
||||
{ be_const_key(_cmd, -1), be_const_func(l_cmd) },
|
||||
{ be_const_key(resp_cmnd_error, -1), be_const_func(l_respCmndError) },
|
||||
{ be_const_key(time_reached, -1), be_const_func(l_timereached) },
|
||||
{ be_const_key(_rules, -1), be_const_var(10) },
|
||||
{ be_const_key(publish_result, -1), be_const_func(l_publish_result) },
|
||||
{ be_const_key(_settings_def, -1), be_const_comptr(&be_tasmota_settings_struct) },
|
||||
{ be_const_key(get_switch, -1), be_const_func(l_getswitch) },
|
||||
{ be_const_key(delay, 71), be_const_func(l_delay) },
|
||||
{ be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) },
|
||||
{ be_const_key(wifi, -1), be_const_func(l_wifi) },
|
||||
{ be_const_key(save, 15), be_const_func(l_save) },
|
||||
{ be_const_key(log, 37), be_const_func(l_logInfo) },
|
||||
{ be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) },
|
||||
{ be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) },
|
||||
{ be_const_key(get_light, 5), be_const_closure(Tasmota_get_light_closure) },
|
||||
{ be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) },
|
||||
{ be_const_key(wire2, -1), be_const_var(11) },
|
||||
{ be_const_key(event, 34), be_const_closure(Tasmota_event_closure) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
be_class_tasmota_map,
|
||||
79
|
||||
80
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
|
@ -8,7 +8,7 @@ static be_define_const_map_slots(be_class_tasmota_onewire_map) {
|
||||
{ be_const_key(deinit, -1), be_const_func(b_onewire_deinit) },
|
||||
{ be_const_key(reset_search, -1), be_const_func(b_onewire_reset_search) },
|
||||
{ be_const_key(skip, -1), be_const_func(b_onewire_skip) },
|
||||
{ be_const_key(dot_p, -1), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, -1), be_const_var(0) },
|
||||
{ be_const_key(write, -1), be_const_func(b_onewire_write) },
|
||||
{ be_const_key(read, -1), be_const_func(b_onewire_read) },
|
||||
{ be_const_key(select, 11), be_const_func(b_onewire_select) },
|
||||
|
@ -26,7 +26,7 @@ static be_define_const_map_slots(be_class_tasmota_serial_map) {
|
||||
{ be_const_key(SERIAL_8N1, 1), be_const_int(SERIAL_8N1) },
|
||||
{ be_const_key(SERIAL_7E1, -1), be_const_int(SERIAL_7E1) },
|
||||
{ be_const_key(SERIAL_8N2, -1), be_const_int(SERIAL_8N2) },
|
||||
{ be_const_key(dot_p, 8), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, 8), be_const_var(0) },
|
||||
{ be_const_key(SERIAL_8E2, -1), be_const_int(SERIAL_8E2) },
|
||||
{ be_const_key(SERIAL_7O2, -1), be_const_int(SERIAL_7O2) },
|
||||
{ be_const_key(SERIAL_7N2, -1), be_const_int(SERIAL_7N2) },
|
||||
|
26
lib/libesp32/Berry/generate/be_fixed_be_class_tcpclient.h
Normal file
26
lib/libesp32/Berry/generate/be_fixed_be_class_tcpclient.h
Normal file
@ -0,0 +1,26 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_tcpclient_map) {
|
||||
{ be_const_key(write, 8), be_const_func(wc_tcp_write) },
|
||||
{ be_const_key(close, -1), be_const_func(wc_tcp_close) },
|
||||
{ be_const_key(connected, 3), be_const_func(wc_tcp_connected) },
|
||||
{ be_const_key(deinit, -1), be_const_func(wc_tcp_deinit) },
|
||||
{ be_const_key(_X2Ew, 0), be_const_var(0) },
|
||||
{ be_const_key(init, -1), be_const_func(wc_tcp_init) },
|
||||
{ be_const_key(readbytes, -1), be_const_func(wc_tcp_readbytes) },
|
||||
{ be_const_key(connect, -1), be_const_func(wc_tcp_connect) },
|
||||
{ be_const_key(available, -1), be_const_func(wc_tcp_available) },
|
||||
{ be_const_key(read, -1), be_const_func(wc_tcp_read) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
be_class_tcpclient_map,
|
||||
10
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
be_class_tcpclient,
|
||||
1,
|
||||
NULL,
|
||||
tcpclient
|
||||
);
|
@ -3,8 +3,8 @@
|
||||
static be_define_const_map_slots(be_class_webclient_map) {
|
||||
{ be_const_key(close, -1), be_const_func(wc_close) },
|
||||
{ be_const_key(get_string, 5), be_const_func(wc_getstring) },
|
||||
{ be_const_key(dot_w, 11), be_const_var(0) },
|
||||
{ be_const_key(dot_p, 13), be_const_var(1) },
|
||||
{ be_const_key(_X2Ew, 11), be_const_var(0) },
|
||||
{ be_const_key(_X2Ep, 13), be_const_var(1) },
|
||||
{ be_const_key(add_header, 10), be_const_func(wc_addheader) },
|
||||
{ be_const_key(url_encode, -1), be_const_func(wc_urlencode) },
|
||||
{ be_const_key(POST, -1), be_const_func(wc_POST) },
|
||||
|
@ -1,21 +0,0 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(m_libenergy_map) {
|
||||
{ be_const_key(init, -1), be_const_closure(init_closure) },
|
||||
{ be_const_key(_ptr, 3), be_const_comptr(&Energy) },
|
||||
{ be_const_key(setmember, -1), be_const_closure(setmember_closure) },
|
||||
{ be_const_key(member, 2), be_const_closure(member_closure) },
|
||||
{ be_const_key(read, -1), be_const_closure(read_closure) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
m_libenergy_map,
|
||||
5
|
||||
);
|
||||
|
||||
static be_define_const_module(
|
||||
m_libenergy,
|
||||
"energy"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(energy);
|
@ -3,7 +3,7 @@
|
||||
static be_define_const_map_slots(m_libglobal_map) {
|
||||
{ be_const_key(member, -1), be_const_func(m_findglobal) },
|
||||
{ be_const_key(setmember, 0), be_const_func(m_setglobal) },
|
||||
{ be_const_key(opt_call, -1), be_const_func(m_globals) },
|
||||
{ be_const_key(_X28_X29, -1), be_const_func(m_globals) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
|
@ -1,34 +1,35 @@
|
||||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(m_builtin_map) {
|
||||
{ be_const_key(number, 16), be_const_int(7) },
|
||||
{ be_const_key(map, -1), be_const_int(19) },
|
||||
{ be_const_key(classname, 22), be_const_int(5) },
|
||||
{ be_const_key(bytes, 2), be_const_int(21) },
|
||||
{ be_const_key(int, 12), be_const_int(9) },
|
||||
{ be_const_key(module, -1), be_const_int(11) },
|
||||
{ be_const_key(print, 20), be_const_int(1) },
|
||||
{ be_const_key(issubclass, -1), be_const_int(14) },
|
||||
{ be_const_key(assert, -1), be_const_int(0) },
|
||||
{ be_const_key(list, -1), be_const_int(18) },
|
||||
{ be_const_key(__iterator__, -1), be_const_int(16) },
|
||||
{ be_const_key(real, -1), be_const_int(10) },
|
||||
{ be_const_key(super, 21), be_const_int(3) },
|
||||
{ be_const_key(isinstance, 8), be_const_int(15) },
|
||||
{ be_const_key(classof, 4), be_const_int(6) },
|
||||
{ be_const_key(input, -1), be_const_int(2) },
|
||||
{ be_const_key(call, 19), be_const_int(22) },
|
||||
{ be_const_key(compile, -1), be_const_int(13) },
|
||||
{ be_const_key(open, -1), be_const_int(17) },
|
||||
{ be_const_key(size, -1), be_const_int(12) },
|
||||
{ be_const_key(number, 23), be_const_int(7) },
|
||||
{ be_const_key(call, -1), be_const_int(22) },
|
||||
{ be_const_key(range, -1), be_const_int(20) },
|
||||
{ be_const_key(input, -1), be_const_int(2) },
|
||||
{ be_const_key(bytes, 11), be_const_int(21) },
|
||||
{ be_const_key(issubclass, -1), be_const_int(14) },
|
||||
{ be_const_key(compile, -1), be_const_int(13) },
|
||||
{ be_const_key(open, 22), be_const_int(17) },
|
||||
{ be_const_key(module, 17), be_const_int(11) },
|
||||
{ be_const_key(list, 7), be_const_int(18) },
|
||||
{ be_const_key(isinstance, -1), be_const_int(15) },
|
||||
{ be_const_key(classname, 20), be_const_int(5) },
|
||||
{ be_const_key(size, -1), be_const_int(12) },
|
||||
{ be_const_key(real, -1), be_const_int(10) },
|
||||
{ be_const_key(int, -1), be_const_int(9) },
|
||||
{ be_const_key(__iterator__, 5), be_const_int(16) },
|
||||
{ be_const_key(str, -1), be_const_int(8) },
|
||||
{ be_const_key(type, -1), be_const_int(4) },
|
||||
{ be_const_key(bool, -1), be_const_int(23) },
|
||||
{ be_const_key(classof, -1), be_const_int(6) },
|
||||
{ be_const_key(assert, -1), be_const_int(0) },
|
||||
{ be_const_key(super, -1), be_const_int(3) },
|
||||
{ be_const_key(type, 8), be_const_int(4) },
|
||||
{ be_const_key(map, -1), be_const_int(19) },
|
||||
{ be_const_key(print, -1), be_const_int(1) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
m_builtin_map,
|
||||
23
|
||||
24
|
||||
);
|
||||
|
||||
static const bvalue __vlist_array[] = {
|
||||
@ -55,10 +56,11 @@ static const bvalue __vlist_array[] = {
|
||||
be_const_class(be_class_range),
|
||||
be_const_class(be_class_bytes),
|
||||
be_const_func(l_call),
|
||||
be_const_func(l_bool),
|
||||
};
|
||||
|
||||
static be_define_const_vector(
|
||||
m_builtin_vector,
|
||||
__vlist_array,
|
||||
23
|
||||
24
|
||||
);
|
||||
|
@ -51,7 +51,7 @@ static void class_init(bvm *vm, bclass *c, const bnfuncinfo *lib)
|
||||
++slib;
|
||||
}
|
||||
}
|
||||
be_map_release(vm, c->members); /* clear space */
|
||||
be_map_compact(vm, c->members); /* clear space */
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1260,46 +1260,46 @@ be_local_closure(getbits, /* name */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_string("value_error", 773297791, 11),
|
||||
/* K2 */ be_nested_string("length in bits must be between 0 and 32", -1710458168, 39),
|
||||
/* K1 */ be_nested_str(value_error),
|
||||
/* K2 */ be_nested_str(length_X20in_X20bits_X20must_X20be_X20between_X200_X20and_X2032),
|
||||
/* K3 */ be_const_int(3),
|
||||
/* K4 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("getbits", -1200798317, 7)),
|
||||
(be_nested_const_str("input", -103256197, 5)),
|
||||
&be_const_str_getbits,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[32]) { /* code */
|
||||
0x180C0500, // 0000 LE R3 R2 K0
|
||||
0x740E0002, // 0001 JMPT R3 #0005
|
||||
0x540E001F, // 0002 LDINT R3 32
|
||||
0x240C0403, // 0003 GT R3 R2 R3
|
||||
0x780E0000, // 0004 JMPF R3 #0006
|
||||
0xB0060302, // 0005 RAISE 1 K1 K2
|
||||
0x580C0000, // 0006 LDCONST R3 K0
|
||||
0x3C100303, // 0007 SHR R4 R1 K3
|
||||
0x54160007, // 0008 LDINT R5 8
|
||||
0x10040205, // 0009 MOD R1 R1 R5
|
||||
0x58140000, // 000A LDCONST R5 K0
|
||||
0x24180500, // 000B GT R6 R2 K0
|
||||
0x781A0011, // 000C JMPF R6 #001F
|
||||
0x541A0007, // 000D LDINT R6 8
|
||||
0x04180C01, // 000E SUB R6 R6 R1
|
||||
0x241C0C02, // 000F GT R7 R6 R2
|
||||
0x781E0000, // 0010 JMPF R7 #0012
|
||||
0x5C180400, // 0011 MOVE R6 R2
|
||||
0x381E0806, // 0012 SHL R7 K4 R6
|
||||
0x041C0F04, // 0013 SUB R7 R7 K4
|
||||
0x381C0E01, // 0014 SHL R7 R7 R1
|
||||
0x94200004, // 0015 GETIDX R8 R0 R4
|
||||
0x2C201007, // 0016 AND R8 R8 R7
|
||||
0x3C201001, // 0017 SHR R8 R8 R1
|
||||
0x38201005, // 0018 SHL R8 R8 R5
|
||||
0x300C0608, // 0019 OR R3 R3 R8
|
||||
0x00140A06, // 001A ADD R5 R5 R6
|
||||
0x04080406, // 001B SUB R2 R2 R6
|
||||
0x58040000, // 001C LDCONST R1 K0
|
||||
0x00100904, // 001D ADD R4 R4 K4
|
||||
0x7001FFEB, // 001E JMP #000B
|
||||
0x80040600, // 001F RET 1 R3
|
||||
0x180C0500, // 0000 LE R3 R2 K0
|
||||
0x740E0002, // 0001 JMPT R3 #0005
|
||||
0x540E001F, // 0002 LDINT R3 32
|
||||
0x240C0403, // 0003 GT R3 R2 R3
|
||||
0x780E0000, // 0004 JMPF R3 #0006
|
||||
0xB0060302, // 0005 RAISE 1 K1 K2
|
||||
0x580C0000, // 0006 LDCONST R3 K0
|
||||
0x3C100303, // 0007 SHR R4 R1 K3
|
||||
0x54160007, // 0008 LDINT R5 8
|
||||
0x10040205, // 0009 MOD R1 R1 R5
|
||||
0x58140000, // 000A LDCONST R5 K0
|
||||
0x24180500, // 000B GT R6 R2 K0
|
||||
0x781A0011, // 000C JMPF R6 #001F
|
||||
0x541A0007, // 000D LDINT R6 8
|
||||
0x04180C01, // 000E SUB R6 R6 R1
|
||||
0x241C0C02, // 000F GT R7 R6 R2
|
||||
0x781E0000, // 0010 JMPF R7 #0012
|
||||
0x5C180400, // 0011 MOVE R6 R2
|
||||
0x381E0806, // 0012 SHL R7 K4 R6
|
||||
0x041C0F04, // 0013 SUB R7 R7 K4
|
||||
0x381C0E01, // 0014 SHL R7 R7 R1
|
||||
0x94200004, // 0015 GETIDX R8 R0 R4
|
||||
0x2C201007, // 0016 AND R8 R8 R7
|
||||
0x3C201001, // 0017 SHR R8 R8 R1
|
||||
0x38201005, // 0018 SHL R8 R8 R5
|
||||
0x300C0608, // 0019 OR R3 R3 R8
|
||||
0x00140A06, // 001A ADD R5 R5 R6
|
||||
0x04080406, // 001B SUB R2 R2 R6
|
||||
0x58040000, // 001C LDCONST R1 K0
|
||||
0x00100904, // 001D ADD R4 R4 K4
|
||||
0x7001FFEB, // 001E JMP #000B
|
||||
0x80040600, // 001F RET 1 R3
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -1320,51 +1320,51 @@ be_local_closure(setbits, /* name */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_string("value_error", 773297791, 11),
|
||||
/* K2 */ be_nested_string("length in bits must be between 0 and 32", -1710458168, 39),
|
||||
/* K1 */ be_nested_str(value_error),
|
||||
/* K2 */ be_nested_str(length_X20in_X20bits_X20must_X20be_X20between_X200_X20and_X2032),
|
||||
/* K3 */ be_const_int(3),
|
||||
/* K4 */ be_const_int(1),
|
||||
}),
|
||||
(be_nested_const_str("setbits", -1532559129, 7)),
|
||||
(be_nested_const_str("input", -103256197, 5)),
|
||||
&be_const_str_setbits,
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[37]) { /* code */
|
||||
0x14100500, // 0000 LT R4 R2 K0
|
||||
0x74120002, // 0001 JMPT R4 #0005
|
||||
0x5412001F, // 0002 LDINT R4 32
|
||||
0x24100404, // 0003 GT R4 R2 R4
|
||||
0x78120000, // 0004 JMPF R4 #0006
|
||||
0xB0060302, // 0005 RAISE 1 K1 K2
|
||||
0x60100009, // 0006 GETGBL R4 G9
|
||||
0x5C140600, // 0007 MOVE R5 R3
|
||||
0x7C100200, // 0008 CALL R4 1
|
||||
0x5C0C0800, // 0009 MOVE R3 R4
|
||||
0x3C100303, // 000A SHR R4 R1 K3
|
||||
0x54160007, // 000B LDINT R5 8
|
||||
0x10040205, // 000C MOD R1 R1 R5
|
||||
0x24140500, // 000D GT R5 R2 K0
|
||||
0x78160014, // 000E JMPF R5 #0024
|
||||
0x54160007, // 000F LDINT R5 8
|
||||
0x04140A01, // 0010 SUB R5 R5 R1
|
||||
0x24180A02, // 0011 GT R6 R5 R2
|
||||
0x781A0000, // 0012 JMPF R6 #0014
|
||||
0x5C140400, // 0013 MOVE R5 R2
|
||||
0x381A0805, // 0014 SHL R6 K4 R5
|
||||
0x04180D04, // 0015 SUB R6 R6 K4
|
||||
0x541E00FE, // 0016 LDINT R7 255
|
||||
0x38200C01, // 0017 SHL R8 R6 R1
|
||||
0x041C0E08, // 0018 SUB R7 R7 R8
|
||||
0x94200004, // 0019 GETIDX R8 R0 R4
|
||||
0x2C201007, // 001A AND R8 R8 R7
|
||||
0x2C240606, // 001B AND R9 R3 R6
|
||||
0x38241201, // 001C SHL R9 R9 R1
|
||||
0x30201009, // 001D OR R8 R8 R9
|
||||
0x98000808, // 001E SETIDX R0 R4 R8
|
||||
0x3C0C0605, // 001F SHR R3 R3 R5
|
||||
0x04080405, // 0020 SUB R2 R2 R5
|
||||
0x58040000, // 0021 LDCONST R1 K0
|
||||
0x00100904, // 0022 ADD R4 R4 K4
|
||||
0x7001FFE8, // 0023 JMP #000D
|
||||
0x80040000, // 0024 RET 1 R0
|
||||
0x14100500, // 0000 LT R4 R2 K0
|
||||
0x74120002, // 0001 JMPT R4 #0005
|
||||
0x5412001F, // 0002 LDINT R4 32
|
||||
0x24100404, // 0003 GT R4 R2 R4
|
||||
0x78120000, // 0004 JMPF R4 #0006
|
||||
0xB0060302, // 0005 RAISE 1 K1 K2
|
||||
0x60100009, // 0006 GETGBL R4 G9
|
||||
0x5C140600, // 0007 MOVE R5 R3
|
||||
0x7C100200, // 0008 CALL R4 1
|
||||
0x5C0C0800, // 0009 MOVE R3 R4
|
||||
0x3C100303, // 000A SHR R4 R1 K3
|
||||
0x54160007, // 000B LDINT R5 8
|
||||
0x10040205, // 000C MOD R1 R1 R5
|
||||
0x24140500, // 000D GT R5 R2 K0
|
||||
0x78160014, // 000E JMPF R5 #0024
|
||||
0x54160007, // 000F LDINT R5 8
|
||||
0x04140A01, // 0010 SUB R5 R5 R1
|
||||
0x24180A02, // 0011 GT R6 R5 R2
|
||||
0x781A0000, // 0012 JMPF R6 #0014
|
||||
0x5C140400, // 0013 MOVE R5 R2
|
||||
0x381A0805, // 0014 SHL R6 K4 R5
|
||||
0x04180D04, // 0015 SUB R6 R6 K4
|
||||
0x541E00FE, // 0016 LDINT R7 255
|
||||
0x38200C01, // 0017 SHL R8 R6 R1
|
||||
0x041C0E08, // 0018 SUB R7 R7 R8
|
||||
0x94200004, // 0019 GETIDX R8 R0 R4
|
||||
0x2C201007, // 001A AND R8 R8 R7
|
||||
0x2C240606, // 001B AND R9 R3 R6
|
||||
0x38241201, // 001C SHL R9 R9 R1
|
||||
0x30201009, // 001D OR R8 R8 R9
|
||||
0x98000808, // 001E SETIDX R0 R4 R8
|
||||
0x3C0C0605, // 001F SHR R3 R3 R5
|
||||
0x04080405, // 0020 SUB R2 R2 R5
|
||||
0x58040000, // 0021 LDCONST R1 K0
|
||||
0x00100904, // 0022 ADD R4 R4 K4
|
||||
0x7001FFE8, // 0023 JMP #000D
|
||||
0x80040000, // 0024 RET 1 R0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -40,7 +40,7 @@ bclass* be_newclass(bvm *vm, bstring *name, bclass *super)
|
||||
void be_class_compress(bvm *vm, bclass *c)
|
||||
{
|
||||
if (!gc_isconst(c) && c->members) {
|
||||
be_map_release(vm, c->members); /* clear space */
|
||||
be_map_compact(vm, c->members); /* clear space */
|
||||
}
|
||||
}
|
||||
|
||||
@ -220,7 +220,7 @@ static binstance* newobject(bvm *vm, bclass *c)
|
||||
/* Instanciate new instance from stack with argc parameters */
|
||||
/* Pushes the constructor on the stack to be executed if a construtor is found */
|
||||
/* Returns true if a constructor is found */
|
||||
bbool be_class_newobj(bvm *vm, bclass *c, int32_t pos, int argc, int mode)
|
||||
bbool be_class_newobj(bvm *vm, bclass *c, int pos, int argc, int mode)
|
||||
{
|
||||
bvalue init;
|
||||
binstance *obj = newobject(vm, c); /* create empty object hierarchy from class hierarchy */
|
||||
|
@ -58,7 +58,7 @@ void be_prim_method_bind(bvm *vm, bclass *c, bstring *name, bntvfunc f);
|
||||
void be_closure_method_bind(bvm *vm, bclass *c, bstring *name, bclosure *cl);
|
||||
int be_class_closure_count(bclass *c);
|
||||
void be_class_upvalue_init(bvm *vm, bclass *c);
|
||||
bbool be_class_newobj(bvm *vm, bclass *c, int32_t pos, int argc, int mode);
|
||||
bbool be_class_newobj(bvm *vm, bclass *c, int pos, int argc, int mode);
|
||||
int be_instance_member_simple(bvm *vm, binstance *obj, bstring *name, bvalue *dst);
|
||||
int be_instance_member(bvm *vm, binstance *obj, bstring *name, bvalue *dst);
|
||||
int be_class_member(bvm *vm, bclass *obj, bstring *name, bvalue *dst);
|
||||
|
@ -227,6 +227,12 @@ const bntvmodule be_native_module(_module) = { \
|
||||
.data = _items \
|
||||
}
|
||||
|
||||
#define be_nested_str(_name_) \
|
||||
{ \
|
||||
{ .s=((bstring*)&be_const_str_##_name_) }, \
|
||||
BE_STRING \
|
||||
}
|
||||
|
||||
#define be_nested_str_literal(_str) \
|
||||
{ \
|
||||
{ .s=(be_nested_const_str(_str, 0, sizeof(_str)-1 )) \
|
||||
|
@ -54,7 +54,7 @@ static int is_object(bvm *vm, const char *class, int idx)
|
||||
}
|
||||
be_remove(vm, -2);
|
||||
}
|
||||
const char *name = be_classname(vm, idx);
|
||||
const char *name = be_classname(vm, -1);
|
||||
bbool ret = !strcmp(name, class);
|
||||
be_pop(vm, 1);
|
||||
return ret;
|
||||
|
@ -134,9 +134,15 @@ static int item_range(bvm *vm)
|
||||
/* get index range */
|
||||
be_getmember(vm, 2, "__lower__");
|
||||
lower = be_toint(vm, -1);
|
||||
if (lower < 0) {
|
||||
lower = size + lower;
|
||||
}
|
||||
be_pop(vm, 1);
|
||||
be_getmember(vm, 2, "__upper__");
|
||||
upper = be_toint(vm, -1);
|
||||
if (upper < 0) {
|
||||
upper = size + upper;
|
||||
}
|
||||
be_pop(vm, 1);
|
||||
/* protection scope */
|
||||
upper = upper < size ? upper : size - 1;
|
||||
|
@ -343,7 +343,7 @@ bmapnode* be_map_val2node(bvalue *value)
|
||||
return (bmapnode *)((size_t)value - sizeof(bmapkey));
|
||||
}
|
||||
|
||||
void be_map_release(bvm *vm, bmap *map)
|
||||
void be_map_compact(bvm *vm, bmap *map)
|
||||
{
|
||||
(void)vm;
|
||||
if (!gc_isconst(map)) {
|
||||
|
@ -56,6 +56,6 @@ bvalue* be_map_insertstr(bvm *vm, bmap *map, bstring *key, bvalue *value);
|
||||
void be_map_removestr(bvm *vm, bmap *map, bstring *key);
|
||||
bmapnode* be_map_next(bmap *map, bmapiter *iter);
|
||||
bmapnode* be_map_val2node(bvalue *value);
|
||||
void be_map_release(bvm *vm, bmap *map);
|
||||
void be_map_compact(bvm *vm, bmap *map);
|
||||
|
||||
#endif
|
||||
|
@ -99,7 +99,7 @@ static bmodule* new_module(bvm *vm, const bntvmodule *nm)
|
||||
obj->table = NULL; /* gc protection */
|
||||
obj->table = be_map_new(vm);
|
||||
insert_attrs(vm, obj->table, nm);
|
||||
be_map_release(vm, obj->table); /* clear space */
|
||||
be_map_compact(vm, obj->table); /* clear space */
|
||||
be_stackpop(vm, 1);
|
||||
}
|
||||
return obj;
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "be_decoder.h"
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
extern const bclass be_class_list;
|
||||
extern const bclass be_class_map;
|
||||
@ -37,12 +38,68 @@ extern const bclass be_class_map;
|
||||
be_writestring(__lbuf); \
|
||||
} while (0)
|
||||
|
||||
/********************************************************************
|
||||
* Encode string to identifiers
|
||||
*
|
||||
* `_X` is used as an escape marker
|
||||
/********************************************************************/
|
||||
static unsigned toidentifier_length(const char *s)
|
||||
{
|
||||
unsigned len = 1;
|
||||
const char * p = s;
|
||||
while (*p) {
|
||||
if (p[0] == '_' && p[1] == 'X') {
|
||||
len += 3;
|
||||
p += 2;
|
||||
} else if (isalnum(p[0]) || p[0] == '_') {
|
||||
p++;
|
||||
len++;
|
||||
} else { // escape
|
||||
p++;
|
||||
len += 4;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
inline static char hexdigit(int v)
|
||||
{
|
||||
v = v & 0xF;
|
||||
if (v >= 10) return v - 10 + 'A';
|
||||
return v + '0';
|
||||
}
|
||||
|
||||
static void toidentifier(char *to, const char *p)
|
||||
{
|
||||
while (*p) {
|
||||
if (p[0] == '_' && p[1] == 'X') {
|
||||
to[0] = '_';
|
||||
to[1] = 'X';
|
||||
to[2] = '_';
|
||||
p += 2;
|
||||
to += 3;
|
||||
} else if (isalnum(p[0]) || p[0] == '_') {
|
||||
*to = *p;
|
||||
to++;
|
||||
p++;
|
||||
} else { // escape
|
||||
to[0] = '_';
|
||||
to[1] = 'X';
|
||||
to[2] = hexdigit((*p & 0xF0) >> 4);
|
||||
to[3] = hexdigit(*p & 0x0F);
|
||||
p++;
|
||||
to += 4;
|
||||
}
|
||||
}
|
||||
*to = 0; // final NULL
|
||||
}
|
||||
|
||||
static void m_solidify_bvalue(bvm *vm, bvalue * value, const char *classname, const char *key);
|
||||
|
||||
static void m_solidify_map(bvm *vm, bmap * map, const char *class_name)
|
||||
{
|
||||
// compact first
|
||||
be_map_release(vm, map);
|
||||
be_map_compact(vm, map);
|
||||
|
||||
logfmt(" be_nested_map(%i,\n", map->count);
|
||||
|
||||
@ -62,7 +119,12 @@ static void m_solidify_map(bvm *vm, bmap * map, const char *class_name)
|
||||
if (0xFFFFFF == key_next) {
|
||||
key_next = -1; /* more readable */
|
||||
}
|
||||
logfmt(" { be_nested_key(\"%s\", %i, %zu, %i), ", str(node->key.v.s), be_strhash(node->key.v.s), len >= 255 ? 255 : len, key_next);
|
||||
/* convert the string literal to identifier */
|
||||
const char * key = str(node->key.v.s);
|
||||
size_t id_len = toidentifier_length(key);
|
||||
char id_buf[id_len];
|
||||
toidentifier(id_buf, key);
|
||||
logfmt(" { be_const_key(%s, %i), ", id_buf, key_next);
|
||||
m_solidify_bvalue(vm, &node->value, class_name, str(node->key.v.s));
|
||||
|
||||
logfmt(" },\n");
|
||||
@ -118,16 +180,15 @@ static void m_solidify_bvalue(bvm *vm, bvalue * value, const char *classname, co
|
||||
break;
|
||||
case BE_STRING:
|
||||
{
|
||||
size_t len = strlen(str(var_tostr(value)));
|
||||
const char * str = str(var_tostr(value));
|
||||
size_t len = strlen(str);
|
||||
if (len >= 255) {
|
||||
be_raise(vm, "internal_error", "Strings greater than 255 chars not supported yet");
|
||||
}
|
||||
be_pushstring(vm, str(var_tostr(value)));
|
||||
be_toescape(vm, -1, 'u');
|
||||
logfmt("be_nested_str_literal(%s)", be_tostring(vm, -1));
|
||||
// logfmt("be_nested_string(%s", be_tostring(vm, -1));
|
||||
// be_pop(vm, 1);
|
||||
// logfmt(", %i, %zu)", be_strhash(var_tostr(value)), len >= 255 ? 255 : len);
|
||||
size_t id_len = toidentifier_length(str);
|
||||
char id_buf[id_len];
|
||||
toidentifier(id_buf, str);
|
||||
logfmt("be_nested_str(%s)", id_buf);
|
||||
}
|
||||
break;
|
||||
case BE_CLOSURE:
|
||||
@ -253,10 +314,16 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu
|
||||
logfmt("%*sNULL, /* no const */\n", indent, "");
|
||||
}
|
||||
|
||||
logfmt("%*s(be_nested_const_str(\"%s\", %i, %i)),\n", indent, "", str(pr->name), be_strhash(pr->name), str_len(pr->name));
|
||||
// logfmt("%*s(be_nested_const_str(\"%s\", %i, %i)),\n", indent, "", func_source, be_strhash(pr->source), str_len(pr->source));
|
||||
// hard-code source as "input" for solidified
|
||||
logfmt("%*s((bstring*) &be_const_str_input),\n", indent, "");
|
||||
/* convert the string literal to identifier */
|
||||
{
|
||||
const char * key = str(pr->name);
|
||||
size_t id_len = toidentifier_length(key);
|
||||
char id_buf[id_len];
|
||||
toidentifier(id_buf, key);
|
||||
logfmt("%*s&be_const_str_%s,\n", indent, "", id_buf);
|
||||
}
|
||||
// hard-code source as "solidified" for solidified
|
||||
logfmt("%*s&be_const_str_solidified,\n", indent, "");
|
||||
|
||||
logfmt("%*s( &(const binstruction[%2d]) { /* code */\n", indent, "", pr->codesize);
|
||||
for (int pc = 0; pc < pr->codesize; pc++) {
|
||||
@ -382,7 +449,7 @@ static void m_solidify_module(bvm *vm, bmodule *ml, int builtins)
|
||||
while ((node = be_map_next(ml->table, &iter)) != NULL) {
|
||||
if (var_isstr(&node->key) && var_isclosure(&node->value)) {
|
||||
bclosure *f = var_toobj(&node->value);
|
||||
m_solidify_closure(vm, f, NULL, builtins);
|
||||
m_solidify_closure(vm, f, module_name, builtins);
|
||||
}
|
||||
if (var_isstr(&node->key) && var_isclass(&node->value)) {
|
||||
bclass *cl = var_toobj(&node->value);
|
||||
|
@ -330,7 +330,6 @@ static bstring* string_range(bvm *vm, bstring *str, binstance *range)
|
||||
{
|
||||
bint lower, upper;
|
||||
bint size = str_len(str); /* size of source string */
|
||||
// bint size = be_data_size(vm, -1); /* get source list size */
|
||||
/* get index range */
|
||||
bvalue temp;
|
||||
be_instance_member(vm, range, be_newstr(vm, "__lower__"), &temp);
|
||||
@ -794,9 +793,6 @@ static int str_tr(bvm *vm)
|
||||
const char *p, *s = be_tostring(vm, 1);
|
||||
const char *t1 = be_tostring(vm, 2);
|
||||
const char *t2 = be_tostring(vm, 3);
|
||||
if (strlen(t2) < strlen(t1)) {
|
||||
be_raise(vm, "value_error", "invalid translation pattern");
|
||||
}
|
||||
size_t len = (size_t)be_strlen(vm, 1);
|
||||
char *buf, *q;
|
||||
buf = be_pushbuffer(vm, len);
|
||||
@ -804,11 +800,17 @@ static int str_tr(bvm *vm)
|
||||
for (p = s, q = buf; *p != '\0'; ++p, ++q) {
|
||||
const char *p1, *p2;
|
||||
*q = *p; /* default to no change */
|
||||
for (p1=t1, p2=t2; *p1 != '\0'; ++p1, ++p2) {
|
||||
for (p1=t1, p2=t2; *p1 != '\0'; ++p1) {
|
||||
if (*p == *p1) {
|
||||
*q = *p2;
|
||||
if (*p2) {
|
||||
*q = *p2;
|
||||
} else {
|
||||
q--; /* remove this char */
|
||||
len--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (*p2) { p2++; }
|
||||
}
|
||||
}
|
||||
be_pushnstring(vm, buf, len); /* make escape string from buffer */
|
||||
|
@ -87,7 +87,7 @@ bvalue* be_global_var(bvm *vm, int index)
|
||||
|
||||
void be_global_release_space(bvm *vm)
|
||||
{
|
||||
be_map_release(vm, global(vm).vtab);
|
||||
be_map_compact(vm, global(vm).vtab);
|
||||
be_vector_release(vm, &global(vm).vlist);
|
||||
}
|
||||
|
||||
@ -130,7 +130,7 @@ int be_builtin_new(bvm *vm, bstring *name)
|
||||
|
||||
void be_bulitin_release_space(bvm *vm)
|
||||
{
|
||||
be_map_release(vm, builtin(vm).vtab);
|
||||
be_map_compact(vm, builtin(vm).vtab);
|
||||
be_vector_release(vm, &builtin(vm).vlist);
|
||||
}
|
||||
#else
|
||||
|
@ -142,7 +142,7 @@
|
||||
_vm->cf->status = PRIM_FUNC; \
|
||||
}
|
||||
|
||||
static void prep_closure(bvm *vm, int32_t pos, int argc, int mode);
|
||||
static void prep_closure(bvm *vm, int pos, int argc, int mode);
|
||||
|
||||
static void attribute_error(bvm *vm, const char *t, bvalue *b, bvalue *c)
|
||||
{
|
||||
@ -853,9 +853,9 @@ newframe: /* a new call frame */
|
||||
reg = vm->reg;
|
||||
bvalue *a = RA();
|
||||
*a = a_temp;
|
||||
if (basetype(type) == BE_FUNCTION) {
|
||||
if (func_isstatic(a)) {
|
||||
/* static method, don't bother with the instance */
|
||||
if (var_basetype(a) == BE_FUNCTION) {
|
||||
if (func_isstatic(a) || (type == BE_INDEX)) { /* if instance variable then we consider it's non-method */
|
||||
/* static method, don't bother with the instance */
|
||||
a[1] = a_temp;
|
||||
var_settype(a, NOT_METHOD);
|
||||
} else {
|
||||
@ -984,7 +984,12 @@ newframe: /* a new call frame */
|
||||
bvalue *a = RA(), *b = RKB();
|
||||
if (var_isclass(a) && var_isclass(b)) {
|
||||
bclass *obj = var_toobj(a);
|
||||
be_class_setsuper(obj, var_toobj(b));
|
||||
if (!gc_isconst(obj)) {
|
||||
be_class_setsuper(obj, var_toobj(b));
|
||||
} else {
|
||||
vm_error(vm, "internal_error",
|
||||
"cannot change superclass of a read-only class");
|
||||
}
|
||||
} else {
|
||||
vm_error(vm, "type_error",
|
||||
"value '%s' does not support set super",
|
||||
@ -1181,7 +1186,7 @@ newframe: /* a new call frame */
|
||||
}
|
||||
}
|
||||
|
||||
static void prep_closure(bvm *vm, int32_t pos, int argc, int mode)
|
||||
static void prep_closure(bvm *vm, int pos, int argc, int mode)
|
||||
{
|
||||
bvalue *v, *end;
|
||||
bproto *proto = var2cl(vm->reg + pos)->proto;
|
||||
@ -1206,7 +1211,7 @@ static void prep_closure(bvm *vm, int32_t pos, int argc, int mode)
|
||||
}
|
||||
}
|
||||
|
||||
static void do_closure(bvm *vm, int32_t pos, int argc)
|
||||
static void do_closure(bvm *vm, int pos, int argc)
|
||||
{
|
||||
// bvalue *v, *end;
|
||||
// bproto *proto = var2cl(reg)->proto;
|
||||
@ -1220,7 +1225,7 @@ static void do_closure(bvm *vm, int32_t pos, int argc)
|
||||
vm_exec(vm);
|
||||
}
|
||||
|
||||
static void do_ntvclos(bvm *vm, int32_t pos, int argc)
|
||||
static void do_ntvclos(bvm *vm, int pos, int argc)
|
||||
{
|
||||
bntvclos *f = var_toobj(vm->reg + pos);
|
||||
push_native(vm, vm->reg + pos, argc, 0);
|
||||
@ -1228,7 +1233,7 @@ static void do_ntvclos(bvm *vm, int32_t pos, int argc)
|
||||
ret_native(vm);
|
||||
}
|
||||
|
||||
static void do_ntvfunc(bvm *vm, int32_t pos, int argc)
|
||||
static void do_ntvfunc(bvm *vm, int pos, int argc)
|
||||
{
|
||||
bntvfunc f = var_tontvfunc(vm->reg + pos);
|
||||
push_native(vm, vm->reg + pos, argc, 0);
|
||||
@ -1236,7 +1241,7 @@ static void do_ntvfunc(bvm *vm, int32_t pos, int argc)
|
||||
ret_native(vm);
|
||||
}
|
||||
|
||||
static void do_class(bvm *vm, int32_t pos, int argc)
|
||||
static void do_class(bvm *vm, int pos, int argc)
|
||||
{
|
||||
if (be_class_newobj(vm, var_toobj(vm->reg + pos), pos, ++argc, 0)) {
|
||||
be_incrtop(vm);
|
||||
@ -1249,7 +1254,7 @@ void be_dofunc(bvm *vm, bvalue *v, int argc)
|
||||
{
|
||||
be_assert(vm->reg <= v && v < vm->stacktop);
|
||||
be_assert(vm->stack <= vm->reg && vm->reg < vm->stacktop);
|
||||
int32_t pos = v - vm->reg;
|
||||
int pos = v - vm->reg;
|
||||
switch (var_type(v)) {
|
||||
case BE_CLASS: do_class(vm, pos, argc); break;
|
||||
case BE_CLOSURE: do_closure(vm, pos, argc); break;
|
||||
|
@ -342,11 +342,11 @@ typedef struct bntvmodule {
|
||||
(bvalue*) _ktab, /* ktab */ \
|
||||
(struct bproto**) _protos, /* bproto **ptab */ \
|
||||
(binstruction*) _code, /* code */ \
|
||||
_fname, /* name */ \
|
||||
((bstring*) _fname), /* name */ \
|
||||
sizeof(*_code)/sizeof(binstruction), /* codesize */ \
|
||||
BE_IIF(_has_const)(sizeof(*_ktab)/sizeof(bvalue),0), /* nconst */ \
|
||||
BE_IIF(_has_subproto)(sizeof(*_protos)/sizeof(bproto*),0), /* proto */ \
|
||||
_source, /* source */ \
|
||||
((bstring*) _source), /* source */ \
|
||||
PROTO_RUNTIME_BLOCK \
|
||||
PROTO_VAR_INFO_BLOCK \
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ A.h = def (x, y) return type(x) end
|
||||
assert(type(a.g) == 'function')
|
||||
assert(type(a.h) == 'function')
|
||||
|
||||
assert_attribute_error("a.g(1,2)")
|
||||
assert(a.g(1) == 'int')
|
||||
assert(a.h(1) == 'int')
|
||||
assert(A.h(1) == 'int')
|
||||
|
||||
@ -85,6 +85,9 @@ assert(a.g(1,2) == [1,2])
|
||||
assert(a.h(1,2) == [1,2])
|
||||
assert(A.g(1,2) == [1,2])
|
||||
assert(A.h(1,2) == [1,2])
|
||||
a.a = def (x,y) return [x,y] end
|
||||
assert(a.a(1,2) == [1,2])
|
||||
|
||||
|
||||
#- test static initializers -#
|
||||
class A
|
||||
|
@ -127,3 +127,14 @@ assert([1,2,3].concat('-') == "1-2-3")
|
||||
assert([1,"2",3].concat('-') == "1-2-3")
|
||||
|
||||
assert(["",2,3].concat('-') == "-2-3")
|
||||
|
||||
#- negative indices -#
|
||||
assert([1,2,3,4][0] == 1)
|
||||
assert([1,2,3,4][-1] == 4)
|
||||
assert([1,2,3,4][-2] == 3)
|
||||
|
||||
assert([1,2,3,4][1..10] == [2,3,4])
|
||||
assert([1,2,3,4][1..-1] == [2,3,4])
|
||||
assert([1,2,3,4][1..-2] == [2,3])
|
||||
assert([1,2,3,4][3..2] == [])
|
||||
assert([1,2,3,4][2..-3] == [])
|
152
lib/libesp32/Berry/tools/pycoc/block_builder.py
Normal file
152
lib/libesp32/Berry/tools/pycoc/block_builder.py
Normal file
@ -0,0 +1,152 @@
|
||||
import copy
|
||||
from hash_map import *
|
||||
|
||||
class block:
|
||||
def __init__(self):
|
||||
self.type = ""
|
||||
self.name = ""
|
||||
self.attr = {}
|
||||
self.data = {}
|
||||
self.data_ordered = []
|
||||
|
||||
def depend(obj, macro):
|
||||
if "depend" in obj.attr:
|
||||
return macro.query(obj.attr["depend"])
|
||||
else:
|
||||
return True
|
||||
|
||||
class block_builder:
|
||||
"""Output an object"""
|
||||
|
||||
def __init__(self, obj, macro):
|
||||
self.block = block()
|
||||
self.strtab = []
|
||||
|
||||
self.block.name = obj.name
|
||||
if depend(obj, macro):
|
||||
self.block.type = obj.type
|
||||
self.block.attr = obj.attr
|
||||
|
||||
if "name" in obj.attr:
|
||||
self.strtab.append(obj.attr["name"])
|
||||
|
||||
for key in obj.data_ordered:
|
||||
second = obj.data[key]
|
||||
if second.depend == None or macro.query(second.depend):
|
||||
self.block.data[key] = second.value
|
||||
self.strtab.append(key)
|
||||
self.block.data_ordered.append(key)
|
||||
|
||||
def block_tostring(self, block):
|
||||
ostr = ""
|
||||
if block.type == "map":
|
||||
ostr += self.map_tostring(block, block.name)
|
||||
elif block.type == "class":
|
||||
ostr += self.class_tostring(block)
|
||||
elif block.type == "vartab":
|
||||
ostr += self.vartab_tostring(block)
|
||||
elif block.type == "module":
|
||||
ostr += self.module_tostring(block)
|
||||
return ostr
|
||||
|
||||
def class_tostring(self, block):
|
||||
ostr = ""
|
||||
hmap = hash_map(block.data)
|
||||
map_name = block.name + "_map"
|
||||
if len(block.data) > 0:
|
||||
ostr += self.map_tostring(block, map_name, True) + "\n"
|
||||
|
||||
ostr += self.scope(block) + " be_define_const_class(\n "
|
||||
ostr += block.name + ",\n "
|
||||
ostr += str(hmap.var_count()) + ",\n "
|
||||
ostr += self.get_super(block) + ",\n "
|
||||
ostr += self.name(block) + "\n);\n"
|
||||
return ostr
|
||||
|
||||
def map_tostring(self, block, name, local):
|
||||
hmap = hash_map(block.data)
|
||||
entlist = hmap.entry_list()
|
||||
ostr = "static be_define_const_map_slots(" + name + ") {\n"
|
||||
for ent in entlist:
|
||||
ostr += " { be_const_key(" + ent.key + ", "
|
||||
ostr += str(ent.next) + "), " + ent.value + " },\n"
|
||||
ostr += "};\n\n"
|
||||
|
||||
if local:
|
||||
ostr += "static"
|
||||
else:
|
||||
ostr += self.scope(block)
|
||||
ostr += " be_define_const_map(\n "
|
||||
ostr += name + ",\n "
|
||||
ostr += str(len(entlist)) + "\n);\n"
|
||||
return ostr
|
||||
|
||||
def vartab_tostring(self, block):
|
||||
ostr = ""
|
||||
varvec = []
|
||||
idxblk = copy.deepcopy(block)
|
||||
index = 0
|
||||
idxblk.data = {}
|
||||
for key in block.data_ordered:
|
||||
varvec.append(block.data[key])
|
||||
idxblk.data[key] = "int(" + str(index) + ")"
|
||||
index += 1
|
||||
|
||||
ostr += self.map_tostring(idxblk, block.name + "_map", True) + "\n"
|
||||
ostr += "static const bvalue __vlist_array[] = {\n";
|
||||
for it in varvec:
|
||||
ostr += " be_const_" + it + ",\n"
|
||||
ostr += "};\n\n"
|
||||
|
||||
ostr += "static be_define_const_vector(\n "
|
||||
ostr += block.name + "_vector,\n __vlist_array,\n "
|
||||
ostr += str(len(varvec)) + "\n);\n"
|
||||
return ostr
|
||||
|
||||
def module_tostring(self, block):
|
||||
ostr = ""
|
||||
name = "m_lib" + block.name
|
||||
map_name = name + "_map"
|
||||
|
||||
ostr += self.map_tostring(block, map_name, True) + "\n"
|
||||
ostr += "static be_define_const_module(\n "
|
||||
ostr += name + ",\n "
|
||||
ostr += "\"" + block.name + "\"\n);\n"
|
||||
scp = self.scope(block)
|
||||
if scp != "static":
|
||||
ostr += "\n" + scp
|
||||
ostr += " be_define_const_native_module("
|
||||
ostr += block.name + ");\n"
|
||||
return ostr
|
||||
|
||||
def scope(self, block):
|
||||
if "local" in block.attr:
|
||||
return "static"
|
||||
else:
|
||||
return "BE_EXPORT_VARIABLE"
|
||||
|
||||
def get_super(self, block):
|
||||
if "super" in block.attr:
|
||||
return "(bclass *)&" + block.attr["super"]
|
||||
else:
|
||||
return "NULL"
|
||||
|
||||
def name(self, block):
|
||||
if "name" in block.attr:
|
||||
return block.attr["name"]
|
||||
else:
|
||||
return block.name
|
||||
|
||||
def writefile(self, filename, text):
|
||||
otext = "#include \"be_constobj.h\"\n\n" + text
|
||||
with open(filename, "w") as f:
|
||||
f.write(otext)
|
||||
|
||||
def dumpfile(self, path):
|
||||
s = self.block_tostring(self.block)
|
||||
if "file" in self.block.attr:
|
||||
name = self.block.attr["file"]
|
||||
else:
|
||||
name = self.block.name
|
||||
self.writefile(path + "/be_fixed_" + name + ".h", s)
|
||||
|
146
lib/libesp32/Berry/tools/pycoc/coc_parser.py
Normal file
146
lib/libesp32/Berry/tools/pycoc/coc_parser.py
Normal file
@ -0,0 +1,146 @@
|
||||
import re
|
||||
from coc_string import unescape_operator
|
||||
|
||||
class data_value:
|
||||
def __init__(self):
|
||||
self.value = None
|
||||
self.depend = None
|
||||
|
||||
class object_block:
|
||||
def __init__(self):
|
||||
self.type = None
|
||||
self.name = None
|
||||
self.attr = {}
|
||||
self.data = {}
|
||||
self.data_ordered = []
|
||||
|
||||
class coc_parser:
|
||||
"""Parser for Berry"""
|
||||
|
||||
def __init__(self, text):
|
||||
"""Parse text file"""
|
||||
self.objects = []
|
||||
self.strtab = set()
|
||||
self.text = text
|
||||
self.parsers = {
|
||||
"@const_object_info_begin": self.parse_object,
|
||||
"be_const_str_": self.parse_string,
|
||||
"be_const_key(": self.parse_string,
|
||||
"be_nested_str(": self.parse_string,
|
||||
}
|
||||
|
||||
while len(self.text) > 0:
|
||||
pattern = "|".join(self.parsers.keys())
|
||||
pattern = re.sub("\\(", "\\(", pattern)
|
||||
r = re.search(pattern, self.text)
|
||||
if not r: break
|
||||
|
||||
self.text = self.text[r.end(0):] # keep only after pattern
|
||||
func = self.parsers[r[0]] # retrieve function for matched
|
||||
func() # call function
|
||||
|
||||
# def scan_const_string(self):
|
||||
# r = re.match(r"\w*", self.text)
|
||||
# if r:
|
||||
# self.text = self.text[r.end(0)]
|
||||
# self.strtab.append(r[0])
|
||||
|
||||
def skip_space(self):
|
||||
r = re.match(r"\s+", self.text)
|
||||
if r:
|
||||
self.text = self.text[r.end(0):]
|
||||
|
||||
def parse_char_base(self, c, necessary):
|
||||
res = self.text[0] == c
|
||||
if not res and necessary: print(self.text); raise "error"
|
||||
if res: self.text = self.text[1:]
|
||||
return res
|
||||
|
||||
def parse_char(self, c, necessary = False):
|
||||
self.skip_space()
|
||||
return self.parse_char_base(c, necessary)
|
||||
|
||||
def skip_char(self, c):
|
||||
self.parse_char(c, True)
|
||||
|
||||
def parse_char_continue(self, c, necessary = False):
|
||||
ch = self.text[0]
|
||||
while ch == ' ' or ch == "\t": self.text = self.text[1:]
|
||||
return self.parse_char_base(c, necessary)
|
||||
|
||||
def parse_word(self):
|
||||
self.skip_space()
|
||||
r = re.match(r"\w+", self.text)
|
||||
self.text = self.text[r.end(0):]
|
||||
return r[0]
|
||||
|
||||
def parse_tocomma(self):
|
||||
self.skip_space()
|
||||
r = re.match(r"[^,\s]*", self.text)
|
||||
self.text = self.text[r.end(0):]
|
||||
return r[0]
|
||||
|
||||
def parse_tonewline(self):
|
||||
self.skip_space()
|
||||
r = re.match(r"[^\r\n]*", self.text)
|
||||
self.text = self.text[r.end(0):]
|
||||
return r[0]
|
||||
|
||||
def parse_object(self):
|
||||
while True:
|
||||
obj = self.parse_block()
|
||||
self.objects.append(obj)
|
||||
if self.parse_char("@"): break
|
||||
|
||||
end_text = "const_object_info_end"
|
||||
if not str.startswith(self.text, end_text): raise "error"
|
||||
self.text = self.text[len(end_text):]
|
||||
# print("END: @const_object_info_end test={self.text}")
|
||||
|
||||
def parse_string(self):
|
||||
if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
|
||||
ident = self.parse_word()
|
||||
literal = unescape_operator(ident)
|
||||
if not literal in self.strtab:
|
||||
self.strtab.add(literal)
|
||||
# print(f"str '{ident}' -> {literal}")
|
||||
|
||||
def parse_block(self):
|
||||
obj = object_block()
|
||||
obj.type = self.parse_word()
|
||||
obj.name = self.parse_word()
|
||||
# print(f"parse_block: type={obj.type} name={obj.name}")
|
||||
self.parse_attr(obj)
|
||||
self.parse_body(obj)
|
||||
return obj
|
||||
|
||||
def parse_attr(self, obj):
|
||||
self.skip_char("(")
|
||||
self.parse_attr_pair(obj)
|
||||
while self.parse_char(","):
|
||||
self.parse_attr_pair(obj)
|
||||
self.skip_char(")")
|
||||
|
||||
def parse_attr_pair(self, obj):
|
||||
key = self.parse_word()
|
||||
self.skip_char(":")
|
||||
value = self.parse_word()
|
||||
obj.attr[key] = value
|
||||
|
||||
def parse_body(self, obj):
|
||||
self.skip_char("{")
|
||||
if not self.parse_char("}"):
|
||||
while True:
|
||||
self.parse_body_item(obj)
|
||||
if self.parse_char("}"): break
|
||||
|
||||
def parse_body_item(self, obj):
|
||||
value = data_value()
|
||||
key = self.parse_tocomma()
|
||||
# print(f"Key={key}")
|
||||
self.parse_char_continue(",", True)
|
||||
value.value = self.parse_tocomma()
|
||||
if self.parse_char_continue(","):
|
||||
value.depend = self.parse_tonewline()
|
||||
obj.data[key] = value
|
||||
obj.data_ordered.append(key)
|
40
lib/libesp32/Berry/tools/pycoc/coc_string.py
Normal file
40
lib/libesp32/Berry/tools/pycoc/coc_string.py
Normal file
@ -0,0 +1,40 @@
|
||||
import re
|
||||
|
||||
def hashcode(s):
|
||||
"""Compute hash for a string, in uint32_t"""
|
||||
hash = 2166136261
|
||||
for c in s.encode('utf8'):
|
||||
hash = ((hash ^ c) * 16777619) & 0xFFFFFFFF
|
||||
return hash
|
||||
|
||||
def escape_operator_v1(s):
|
||||
tab = {
|
||||
# "void": "",
|
||||
"..": "opt_connect",
|
||||
"+": "opt_add", "-": "opt_sub",
|
||||
"*": "opt_mul", "/": "opt_div",
|
||||
"%": "opt_mod", "&": "opt_and",
|
||||
"^": "opt_xor", "|": "opt_or",
|
||||
"<": "opt_lt", ">": "opt_gt",
|
||||
"<=": "opt_le", ">=": "opt_ge",
|
||||
"==": "opt_eq", "!=": "opt_neq",
|
||||
"<<": "opt_shl", ">>": "opt_shr",
|
||||
"-*": "opt_neg", "~": "opt_flip",
|
||||
"()": "opt_call",
|
||||
}
|
||||
if s in tab: return tab[s]
|
||||
s2 = ""
|
||||
for c in s:
|
||||
if c == '.': s2 += 'dot_'
|
||||
else: s2 += c
|
||||
return s2
|
||||
|
||||
def escape_operator(s):
|
||||
s = re.sub('_X', '_X_', s) # replace any esape sequence '_X' with '_XX'
|
||||
s = re.sub('[^a-zA-Z0-9_]', lambda m: "_X{0:02X}".format(ord(m.group())), s)
|
||||
return s
|
||||
|
||||
def unescape_operator(s):
|
||||
s = re.sub('_X[0-9A-F][0-9A-F]', lambda m: chr(int(m.group()[2:], 16)), s)
|
||||
s = re.sub('_X_', '_X', s)
|
||||
return s
|
18
lib/libesp32/Berry/tools/pycoc/coc_string_test.py
Normal file
18
lib/libesp32/Berry/tools/pycoc/coc_string_test.py
Normal file
@ -0,0 +1,18 @@
|
||||
import unittest
|
||||
from coc_string import *
|
||||
|
||||
class Test_coc_string(unittest.TestCase):
|
||||
|
||||
def test_hash(self):
|
||||
self.assertEqual(hashcode("add"), 993596020)
|
||||
self.assertEqual(hashcode("real"), 3604983901)
|
||||
|
||||
def test_escape(self):
|
||||
self.assertEqual(escape_operator("foo"), "foo")
|
||||
self.assertEqual(escape_operator(".."), "_opt_connect")
|
||||
self.assertEqual(escape_operator("foo.bar"), "foo_dot_bar")
|
||||
self.assertEqual(escape_operator("foo._bar"), "foo_dot___bar")
|
||||
self.assertEqual(escape_operator("foo. bar"), "foo_dot__20bar")
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
162
lib/libesp32/Berry/tools/pycoc/hash_map.py
Normal file
162
lib/libesp32/Berry/tools/pycoc/hash_map.py
Normal file
@ -0,0 +1,162 @@
|
||||
import copy
|
||||
from coc_string import *
|
||||
|
||||
# resize a list, from https://stackoverflow.com/a/8850956
|
||||
def list_resize_entry(l, newsize, filling=None):
|
||||
if newsize > len(l):
|
||||
l.extend([entry() for x in range(len(l), newsize)])
|
||||
else:
|
||||
del l[newsize:]
|
||||
|
||||
class entry:
|
||||
def __init__(self):
|
||||
self.key = ""
|
||||
self.value = ""
|
||||
self.next = hash_map.NODE_EMPTY
|
||||
|
||||
def __repr__(self):
|
||||
return f"<entry object; key='{self.key}', value='{self.value}', next={self.next}>"
|
||||
|
||||
class hash_map:
|
||||
NODE_EMPTY = -2
|
||||
NODE_NULL = -1
|
||||
|
||||
def __init__(self, map):
|
||||
self.count = 0
|
||||
self.lastfree = 0
|
||||
self.bucket = []
|
||||
|
||||
self.resize(2)
|
||||
for key in sorted(map.keys()):
|
||||
self.insert(key, map[key])
|
||||
|
||||
def __repr__(self):
|
||||
return f"<hash_map object; count={self.count}, bucket={self.bucket}, lastfree={self.lastfree}>"
|
||||
|
||||
def is_empty(self, ent):
|
||||
return ent.next == hash_map.NODE_EMPTY
|
||||
|
||||
def resize(self, size):
|
||||
bucket = copy.deepcopy(self.bucket)
|
||||
list_resize_entry(self.bucket, size)
|
||||
# set all slot to empty
|
||||
for i in range(size):
|
||||
self.bucket[i].next = hash_map.NODE_EMPTY
|
||||
self.lastfree = size - 1
|
||||
for slot in bucket:
|
||||
if slot.next != hash_map.NODE_EMPTY:
|
||||
self.insert_p(slot.key, slot.value)
|
||||
|
||||
def findprev(self, prev, slot):
|
||||
#print(f"findprev: prev={prev} slot={slot}")
|
||||
while True:
|
||||
next = prev.next
|
||||
if next == hash_map.NODE_NULL or self.bucket[next] == slot: break
|
||||
prev = self.bucket[next]
|
||||
if next == hash_map.NODE_NULL: return None
|
||||
return prev
|
||||
|
||||
def nextfree(self):
|
||||
while self.lastfree >= 0:
|
||||
if self.bucket[self.lastfree].next == hash_map.NODE_EMPTY:
|
||||
return self.lastfree
|
||||
self.lastfree -= 1
|
||||
return -1
|
||||
|
||||
def find(self, key):
|
||||
hash = hashcode(key)
|
||||
null = entry()
|
||||
slot = self.bucket[hash % len(self.bucket)]
|
||||
if slot.next == hash_map.NODE_EMPTY:
|
||||
return null
|
||||
while slot.key != key:
|
||||
if slot.next == hash_map.NODE_NULL: return null
|
||||
slot = self.bucket[slot.next]
|
||||
return slot
|
||||
|
||||
def insert_p(self, key, value):
|
||||
slot = self.bucket[hashcode(key) % len(self.bucket)]
|
||||
#print(f"slot={slot}, index={hashcode(key) % len(self.bucket)}")
|
||||
if slot.next == hash_map.NODE_EMPTY:
|
||||
slot.next = hash_map.NODE_NULL
|
||||
else:
|
||||
newidx = self.nextfree()
|
||||
#print(f"newidx={newidx}")
|
||||
# get the main-slot index
|
||||
mainslot = self.bucket[hashcode(slot.key) % len(self.bucket)]
|
||||
newslot = self.bucket[newidx]
|
||||
#print(f"self={self}\nslot={hashcode(key) % len(self.bucket)} idx_main={hashcode(slot.key) % len(self.bucket)} newidx={newidx}")
|
||||
#print(f"insert_p: 1={mainslot} 2={newslot}")
|
||||
if mainslot == slot:
|
||||
newslot.next = mainslot.next
|
||||
mainslot.next = newidx
|
||||
slot = newslot
|
||||
else: # link to list
|
||||
#print(f"insert_p: 1={mainslot} 2={slot}")
|
||||
prev = self.findprev(mainslot, slot)
|
||||
prev.next = newidx # link the previous node
|
||||
# copy to new slot
|
||||
newslot.key = slot.key
|
||||
newslot.value = slot.value
|
||||
newslot.next = slot.next
|
||||
slot.next = hash_map.NODE_NULL
|
||||
slot.key = key
|
||||
slot.value = value
|
||||
|
||||
def insert(self, key, value):
|
||||
slot = self.find(key)
|
||||
if slot.next == hash_map.NODE_EMPTY:
|
||||
if self.count >= len(self.bucket):
|
||||
self.resize(len(self.bucket) * 2)
|
||||
self.insert_p(key, value)
|
||||
self.count += 1
|
||||
|
||||
# return a list (entiry, var_count)
|
||||
def entry_modify(self, ent, var_count):
|
||||
ent.key = escape_operator(ent.key)
|
||||
if ent.value == "var":
|
||||
ent.value = "be_const_var(" + str(var_count) + ")"
|
||||
var_count += 1
|
||||
else:
|
||||
ent.value = "be_const_" + ent.value
|
||||
return (ent, var_count)
|
||||
|
||||
def entry_list(self):
|
||||
l = []
|
||||
var_count = 0
|
||||
|
||||
self.resize(self.count)
|
||||
for it in self.bucket:
|
||||
(ent, var_count) = self.entry_modify(it, var_count)
|
||||
l.append(ent)
|
||||
return l
|
||||
|
||||
def var_count(self):
|
||||
count = 0
|
||||
|
||||
self.resize(self.count)
|
||||
for it in self.bucket:
|
||||
if it.value == "var": count += 1
|
||||
return count
|
||||
|
||||
if __name__ == '__main__':
|
||||
# from hash_map import *
|
||||
m = hash_map({})
|
||||
print(m)
|
||||
m.insert("foo","bar")
|
||||
print(m)
|
||||
m.insert("foo2","bar")
|
||||
print(m)
|
||||
m.insert(".","3")
|
||||
print(m)
|
||||
m.insert("foo","bar2")
|
||||
print(m)
|
||||
m.insert("+","bar2")
|
||||
print(m)
|
||||
m.insert("a","var")
|
||||
m.insert("b","var")
|
||||
m.insert("c","var")
|
||||
print()
|
||||
print(m)
|
||||
print(f"var_count={m.var_count()}")
|
||||
print(f"entry_list={m.entry_list()}")
|
50
lib/libesp32/Berry/tools/pycoc/macro_table.py
Normal file
50
lib/libesp32/Berry/tools/pycoc/macro_table.py
Normal file
@ -0,0 +1,50 @@
|
||||
import re
|
||||
|
||||
def int_safe(v):
|
||||
try: return int(v, 0)
|
||||
except: return 0
|
||||
|
||||
class macro_table:
|
||||
pat = re.compile("(?:\\n|$)\\s*#define\\s+(\\w+)[ \\t]+(\\w*)", re.MULTILINE)
|
||||
pat_query = re.compile("(!?)(\\w+)")
|
||||
|
||||
def __init__(self):
|
||||
self.map = {}
|
||||
|
||||
# def readfile(self, filename):
|
||||
# with open(filename) as f:
|
||||
# return f.read()
|
||||
|
||||
def parse_value(self, s):
|
||||
if len(s) == 0: return 1 # defined a macro name but no content, considered true
|
||||
if not s[0].isnumeric(): return 1
|
||||
return int_safe(s)
|
||||
|
||||
def scan_file(self, filename):
|
||||
str = ""
|
||||
with open(filename) as f:
|
||||
str = f.read()
|
||||
r = macro_table.pat.findall(str)
|
||||
for it in r:
|
||||
# print(f"> it0:{it[0]} it1:{it[1]}")
|
||||
self.map[it[0]] = self.parse_value(it[1])
|
||||
|
||||
def query(self, s):
|
||||
r = macro_table.pat_query.search(s)
|
||||
value = False
|
||||
if r:
|
||||
bang = r[1]
|
||||
name = r[2]
|
||||
# print(f">query: bang={bang} name={name} value={self.map.get(name)}")
|
||||
if name in self.map:
|
||||
value = int(self.map[name]) != 0
|
||||
if bang == "!":
|
||||
value = not value
|
||||
# print(f">query: {s}:{value}")
|
||||
return value
|
||||
|
||||
if __name__ == '__main__':
|
||||
# from hash_map import *
|
||||
pat = re.compile("(?:\\n|$)\\s*#define\\s+(\\w+)[ \\t]+(\\w+)", re.MULTILINE)
|
||||
s = "aaa\n#define A 1 // a \n #define B 2\n#define C \n#define D 0 \n #define E 11 \na"
|
||||
|
64
lib/libesp32/Berry/tools/pycoc/main.py
Normal file
64
lib/libesp32/Berry/tools/pycoc/main.py
Normal file
@ -0,0 +1,64 @@
|
||||
# python3 main.py -o out in
|
||||
# coc
|
||||
|
||||
import re
|
||||
import os
|
||||
from coc_parser import *
|
||||
from str_build import *
|
||||
from block_builder import *
|
||||
from macro_table import *
|
||||
|
||||
class builder:
|
||||
Input = 0
|
||||
Output = 1
|
||||
Config = 2
|
||||
|
||||
def __init__(self, input_folders, output_folder, macro_files):
|
||||
self.output = output_folder
|
||||
self.input = input_folders
|
||||
self.config = macro_files
|
||||
self.macro = None
|
||||
self.strmap = {}
|
||||
|
||||
self.macro = macro_table()
|
||||
for path in self.config:
|
||||
self.macro.scan_file(path)
|
||||
|
||||
for d in self.input:
|
||||
self.scandir(d)
|
||||
|
||||
sb = str_build(self.strmap)
|
||||
sb.build(self.output)
|
||||
|
||||
def parse_file(self, filename):
|
||||
if re.search(r"\.(c|cc|cpp)$", filename):
|
||||
# print(f"> parse {filename}")
|
||||
text = ""
|
||||
with open(filename) as f:
|
||||
text = f.read()
|
||||
# print(f"> len(text)={len(text)}")
|
||||
parser = coc_parser(text)
|
||||
for s in parser.strtab:
|
||||
self.strmap[s] = 0
|
||||
for obj in parser.objects:
|
||||
builder = block_builder(obj, self.macro)
|
||||
for s in builder.strtab:
|
||||
self.strmap[s] = 0
|
||||
builder.dumpfile(self.output)
|
||||
|
||||
def scandir(self, srcpath):
|
||||
for item in os.listdir(srcpath):
|
||||
path = os.path.join(srcpath, item)
|
||||
if os.path.isfile(path): self.parse_file(path)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("input_folder", nargs='+', help='folders containing the C/C++ files to be parsed')
|
||||
parser.add_argument("-o", help='output folder', required=True)
|
||||
parser.add_argument("-c", nargs='+', help='configuration folders for preprocessor')
|
||||
|
||||
args = vars(parser.parse_args())
|
||||
# print(args)
|
||||
b = builder(args["input_folder"], args["o"], args["c"])
|
123
lib/libesp32/Berry/tools/pycoc/str_build.py
Normal file
123
lib/libesp32/Berry/tools/pycoc/str_build.py
Normal file
@ -0,0 +1,123 @@
|
||||
import json
|
||||
from coc_string import *
|
||||
|
||||
class str_info:
|
||||
def __init__(self):
|
||||
self.hash = 0
|
||||
self.str = ""
|
||||
self.extra = 0
|
||||
|
||||
class str_build:
|
||||
def __init__(self, map):
|
||||
size = int(len(map) / 2) # voluntarily reduce hash size to half
|
||||
if size < 4: size = 4
|
||||
self.buckets = []
|
||||
for i in range(size):
|
||||
self.buckets.append([])
|
||||
|
||||
self.make_ceil("", 0) # add empty string as it is always useful
|
||||
self.count = len(map) + 1 # TODO it is not actually accurate since keywords are not counted
|
||||
for k in sorted(map.keys()):
|
||||
self.make_ceil(k, map[k])
|
||||
self.keywords()
|
||||
|
||||
def build(self, path):
|
||||
prefix = path + "/be_const_strtab"
|
||||
self.writefile(prefix + "_def.h", self.build_table_def())
|
||||
self.writefile(prefix + ".h", self.build_table_ext())
|
||||
|
||||
def get_count(self): # compute the total size by adding sizes of each bucket
|
||||
size = 0
|
||||
for bucket in self.buckets:
|
||||
size += len(bucket)
|
||||
return size
|
||||
|
||||
def keywords(self):
|
||||
opif = 50
|
||||
tab = {
|
||||
"if": opif, "elif": opif + 1 ,
|
||||
"else": opif + 2 , "while": opif + 3 ,
|
||||
"for": opif + 4 , "def": opif + 5 ,
|
||||
"end": opif + 6 , "class": opif + 7 ,
|
||||
"break": opif + 8 , "continue": opif + 9 ,
|
||||
"return": opif + 10 , "true": opif + 11 ,
|
||||
"false": opif + 12 , "nil": opif + 13 ,
|
||||
"var": opif + 14 , "do": opif + 15 ,
|
||||
"import": opif + 16 , "as": opif + 17 ,
|
||||
"try": opif + 18 , "except": opif + 19 ,
|
||||
"raise": opif + 20 , "static": opif + 21,
|
||||
}
|
||||
for key in sorted(tab.keys()):
|
||||
self.make_ceil(key, tab[key])
|
||||
|
||||
def make_ceil(self, name, extra):
|
||||
info = str_info()
|
||||
info.hash = hashcode(name)
|
||||
info.str = name
|
||||
info.extra = extra
|
||||
self.buckets[info.hash % len(self.buckets)].append(info)
|
||||
|
||||
def writefile(self, filename, text):
|
||||
buf = ""
|
||||
try:
|
||||
with open(filename) as f:
|
||||
buf = f.read()
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
if buf != text:
|
||||
with open(filename, "w") as f:
|
||||
f.write(text)
|
||||
|
||||
def build_table_def(self):
|
||||
strings = {}
|
||||
for bucket in self.buckets:
|
||||
# print(f"> Bucket= {[x.str for x in bucket]}")
|
||||
size = len(bucket)
|
||||
for i in range(size):
|
||||
info = bucket[i]
|
||||
node = escape_operator(info.str)
|
||||
istr = ""
|
||||
if i < size - 1:
|
||||
next = "&be_const_str_" + escape_operator(bucket[i + 1].str)
|
||||
else:
|
||||
next = "NULL"
|
||||
istr += "be_define_const_str("
|
||||
istr += node + ", " + json.dumps(info.str) + ", "
|
||||
istr += str(info.hash) + "u, " + str(info.extra) + ", "
|
||||
istr += str(len(info.str)) + ", " + next + ");\n"
|
||||
strings[info.str] = istr
|
||||
|
||||
ostr = ""
|
||||
for s in sorted(strings.keys()):
|
||||
ostr += strings[s]
|
||||
ostr += "\n"
|
||||
ostr += "static const bstring* const m_string_table[] = {\n"
|
||||
|
||||
|
||||
size = len(self.buckets)
|
||||
for i in range(size):
|
||||
bucket = self.buckets[i]
|
||||
if len(bucket) > 0:
|
||||
ostr += " (const bstring *)&be_const_str_" + escape_operator(bucket[0].str)
|
||||
else:
|
||||
ostr += " NULL"
|
||||
if i < size - 1: ostr += ","
|
||||
ostr += "\n"
|
||||
ostr += "};\n\n"
|
||||
ostr += "static const struct bconststrtab m_const_string_table = {\n"
|
||||
ostr += " .size = " + str(size) + ",\n"
|
||||
ostr += " .count = " + str(self.get_count()) + ",\n"
|
||||
ostr += " .table = m_string_table\n"
|
||||
ostr += "};\n"
|
||||
return ostr
|
||||
|
||||
def build_table_ext(self):
|
||||
ostr = ""
|
||||
# put all in a sorted sed
|
||||
all = set()
|
||||
for bucket in self.buckets:
|
||||
for info in bucket:
|
||||
all.add(escape_operator(info.str))
|
||||
for s in sorted(all):
|
||||
ostr += "extern const bcstring be_const_str_" + s + ";\n"
|
||||
return ostr
|
@ -227,7 +227,7 @@ public:
|
||||
}
|
||||
|
||||
bool seek(uint32_t pos, SeekMode mode) {
|
||||
AddLog(LOG_LEVEL_DEBUG, "ZIP: seek pos=%i mode=%i", pos, mode);
|
||||
// AddLog(LOG_LEVEL_DEBUG, "ZIP: seek pos=%i mode=%i", pos, mode);
|
||||
if (SeekSet == mode) {
|
||||
if (pos <= _len) {
|
||||
_seek = pos;
|
||||
@ -246,12 +246,12 @@ public:
|
||||
}
|
||||
|
||||
size_t position() const {
|
||||
AddLog(LOG_LEVEL_DEBUG, "ZIP: position return=%i", _seek);
|
||||
// AddLog(LOG_LEVEL_DEBUG, "ZIP: position return=%i", _seek);
|
||||
return _seek;
|
||||
}
|
||||
|
||||
size_t size() const {
|
||||
AddLog(LOG_LEVEL_DEBUG, "ZIP: size return=%i", _len);
|
||||
// AddLog(LOG_LEVEL_DEBUG, "ZIP: size return=%i", _len);
|
||||
return _len;
|
||||
}
|
||||
|
||||
@ -322,7 +322,7 @@ bool ZipArchive::parse(void) {
|
||||
return false;
|
||||
}
|
||||
if (header.signature2 != 0x0403) {
|
||||
AddLog(LOG_LEVEL_DEBUG, "ZIP: end of file section");
|
||||
// AddLog(LOG_LEVEL_DEBUG, "ZIP: end of file section");
|
||||
break;
|
||||
}
|
||||
// Check no extra field
|
||||
@ -371,7 +371,7 @@ bool ZipArchive::parse(void) {
|
||||
entry.last_mod = dos2unixtime((header.last_mod_date << 16) | header.last_mod_time);
|
||||
offset += header.size_uncompressed;
|
||||
|
||||
AddLog(LOG_LEVEL_DEBUG_MORE, "ZIP: found file '%s' (%i bytes - offset %i) - next entry %i", &fname[0], header.size_uncompressed, entry.file_start, offset);
|
||||
// AddLog(LOG_LEVEL_DEBUG_MORE, "ZIP: found file '%s' (%i bytes - offset %i) - next entry %i", &fname[0], header.size_uncompressed, entry.file_start, offset);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -402,7 +402,7 @@ FileImplPtr ZipReadFSImpl::open(const char* path, const char* mode, const bool c
|
||||
char *suffix = strtok_r(NULL, "", &tok);
|
||||
// if suffix starts with '/', skip the first char
|
||||
if (*suffix == '/') { suffix++; }
|
||||
AddLog(LOG_LEVEL_DEBUG, "ZIP: prefix=%s suffix=%s", prefix, suffix);
|
||||
// AddLog(LOG_LEVEL_DEBUG, "ZIP: prefix=%s suffix=%s", prefix, suffix);
|
||||
// parse ZIP archive
|
||||
File zipfile = (*_fs)->open(prefix, "r", false);
|
||||
if ((bool)zipfile) {
|
||||
@ -413,7 +413,7 @@ FileImplPtr ZipReadFSImpl::open(const char* path, const char* mode, const bool c
|
||||
for (auto & entry : zip_archive.entries) {
|
||||
if (entry.file_name.equals(suffix)) {
|
||||
// found
|
||||
AddLog(LOG_LEVEL_DEBUG, "ZIP: file '%s' in archive (start=%i - len=%i - last_mod=%i)", suffix, entry.file_start, entry.file_len, entry.last_mod);
|
||||
// AddLog(LOG_LEVEL_DEBUG, "ZIP: file '%s' in archive (start=%i - len=%i - last_mod=%i)", suffix, entry.file_start, entry.file_len, entry.last_mod);
|
||||
return ZipItemImplPtr(new ZipItemImpl((*_fs)->open(prefix, "r", false), entry.file_start, entry.file_len, entry.last_mod));
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,19 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [1.3.3] - 2021-11-24
|
||||
|
||||
### Fixed
|
||||
- Workaround added for FreeRTOS bug that affected timers, causing scan and advertising timer expirations to not correctly trigger callbacks.
|
||||
|
||||
## [1.3.2] - 2021-11-20
|
||||
|
||||
### Fixed
|
||||
- Added missing macros for scan filter.
|
||||
|
||||
### Added
|
||||
- `NimBLEClient::getLastError` : Gets the error code of the last function call that produces a return code from the stack.
|
||||
|
||||
## [1.3.1] - 2021-08-04
|
||||
|
||||
### Fixed
|
||||
|
@ -1,91 +1,91 @@
|
||||
/** NimBLE_Secure_Client Demo:
|
||||
*
|
||||
* This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client.
|
||||
* Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective.
|
||||
* To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash.
|
||||
*
|
||||
* Created: on Jan 08 2021
|
||||
* Author: mblasee
|
||||
*/
|
||||
|
||||
#include <NimBLEDevice.h>
|
||||
|
||||
class ClientCallbacks : public NimBLEClientCallbacks
|
||||
{
|
||||
uint32_t onPassKeyRequest()
|
||||
{
|
||||
Serial.println("Client Passkey Request");
|
||||
/** return the passkey to send to the server */
|
||||
/** Change this to be different from NimBLE_Secure_Server if you want to test what happens on key mismatch */
|
||||
return 123456;
|
||||
};
|
||||
};
|
||||
static ClientCallbacks clientCB;
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println("Starting NimBLE Client");
|
||||
|
||||
NimBLEDevice::init("");
|
||||
NimBLEDevice::setPower(ESP_PWR_LVL_P9);
|
||||
NimBLEDevice::setSecurityAuth(true, true, true);
|
||||
NimBLEDevice::setSecurityIOCap(BLE_HS_IO_KEYBOARD_ONLY);
|
||||
NimBLEScan *pScan = NimBLEDevice::getScan();
|
||||
NimBLEScanResults results = pScan->start(5);
|
||||
|
||||
NimBLEUUID serviceUuid("ABCD");
|
||||
|
||||
for (int i = 0; i < results.getCount(); i++)
|
||||
{
|
||||
NimBLEAdvertisedDevice device = results.getDevice(i);
|
||||
Serial.println(device.getName().c_str());
|
||||
|
||||
if (device.isAdvertisingService(serviceUuid))
|
||||
{
|
||||
NimBLEClient *pClient = NimBLEDevice::createClient();
|
||||
pClient->setClientCallbacks(&clientCB, false);
|
||||
|
||||
if (pClient->connect(&device))
|
||||
{
|
||||
pClient->secureConnection();
|
||||
NimBLERemoteService *pService = pClient->getService(serviceUuid);
|
||||
if (pService != nullptr)
|
||||
{
|
||||
NimBLERemoteCharacteristic *pNonSecureCharacteristic = pService->getCharacteristic("1234");
|
||||
|
||||
if (pNonSecureCharacteristic != nullptr)
|
||||
{
|
||||
// Testing to read a non secured characteristic, you should be able to read this even if you have mismatching passkeys.
|
||||
std::string value = pNonSecureCharacteristic->readValue();
|
||||
// print or do whatever you need with the value
|
||||
Serial.println(value.c_str());
|
||||
}
|
||||
|
||||
NimBLERemoteCharacteristic *pSecureCharacteristic = pService->getCharacteristic("1235");
|
||||
|
||||
if (pSecureCharacteristic != nullptr)
|
||||
{
|
||||
// Testing to read a secured characteristic, you should be able to read this only if you have matching passkeys, otherwise you should
|
||||
// get an error like this. E NimBLERemoteCharacteristic: "<< readValue rc=261"
|
||||
// This means you are trying to do something without the proper permissions.
|
||||
std::string value = pSecureCharacteristic->readValue();
|
||||
// print or do whatever you need with the value
|
||||
Serial.println(value.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// failed to connect
|
||||
Serial.println("failed to connect");
|
||||
}
|
||||
|
||||
NimBLEDevice::deleteClient(pClient);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
}
|
||||
/** NimBLE_Secure_Client Demo:
|
||||
*
|
||||
* This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client.
|
||||
* Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective.
|
||||
* To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash.
|
||||
*
|
||||
* Created: on Jan 08 2021
|
||||
* Author: mblasee
|
||||
*/
|
||||
|
||||
#include <NimBLEDevice.h>
|
||||
|
||||
class ClientCallbacks : public NimBLEClientCallbacks
|
||||
{
|
||||
uint32_t onPassKeyRequest()
|
||||
{
|
||||
Serial.println("Client Passkey Request");
|
||||
/** return the passkey to send to the server */
|
||||
/** Change this to be different from NimBLE_Secure_Server if you want to test what happens on key mismatch */
|
||||
return 123456;
|
||||
};
|
||||
};
|
||||
static ClientCallbacks clientCB;
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println("Starting NimBLE Client");
|
||||
|
||||
NimBLEDevice::init("");
|
||||
NimBLEDevice::setPower(ESP_PWR_LVL_P9);
|
||||
NimBLEDevice::setSecurityAuth(true, true, true);
|
||||
NimBLEDevice::setSecurityIOCap(BLE_HS_IO_KEYBOARD_ONLY);
|
||||
NimBLEScan *pScan = NimBLEDevice::getScan();
|
||||
NimBLEScanResults results = pScan->start(5);
|
||||
|
||||
NimBLEUUID serviceUuid("ABCD");
|
||||
|
||||
for (int i = 0; i < results.getCount(); i++)
|
||||
{
|
||||
NimBLEAdvertisedDevice device = results.getDevice(i);
|
||||
Serial.println(device.getName().c_str());
|
||||
|
||||
if (device.isAdvertisingService(serviceUuid))
|
||||
{
|
||||
NimBLEClient *pClient = NimBLEDevice::createClient();
|
||||
pClient->setClientCallbacks(&clientCB, false);
|
||||
|
||||
if (pClient->connect(&device))
|
||||
{
|
||||
pClient->secureConnection();
|
||||
NimBLERemoteService *pService = pClient->getService(serviceUuid);
|
||||
if (pService != nullptr)
|
||||
{
|
||||
NimBLERemoteCharacteristic *pNonSecureCharacteristic = pService->getCharacteristic("1234");
|
||||
|
||||
if (pNonSecureCharacteristic != nullptr)
|
||||
{
|
||||
// Testing to read a non secured characteristic, you should be able to read this even if you have mismatching passkeys.
|
||||
std::string value = pNonSecureCharacteristic->readValue();
|
||||
// print or do whatever you need with the value
|
||||
Serial.println(value.c_str());
|
||||
}
|
||||
|
||||
NimBLERemoteCharacteristic *pSecureCharacteristic = pService->getCharacteristic("1235");
|
||||
|
||||
if (pSecureCharacteristic != nullptr)
|
||||
{
|
||||
// Testing to read a secured characteristic, you should be able to read this only if you have matching passkeys, otherwise you should
|
||||
// get an error like this. E NimBLERemoteCharacteristic: "<< readValue rc=261"
|
||||
// This means you are trying to do something without the proper permissions.
|
||||
std::string value = pSecureCharacteristic->readValue();
|
||||
// print or do whatever you need with the value
|
||||
Serial.println(value.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// failed to connect
|
||||
Serial.println("failed to connect");
|
||||
}
|
||||
|
||||
NimBLEDevice::deleteClient(pClient);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
}
|
||||
|
@ -1,37 +1,37 @@
|
||||
/** NimBLE_Secure_Server Demo:
|
||||
*
|
||||
* This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client.
|
||||
* Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective.
|
||||
* To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash.
|
||||
*
|
||||
* Created: on Jan 08 2021
|
||||
* Author: mblasee
|
||||
*/
|
||||
|
||||
#include <NimBLEDevice.h>
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
Serial.println("Starting NimBLE Server");
|
||||
NimBLEDevice::init("NimBLE");
|
||||
NimBLEDevice::setPower(ESP_PWR_LVL_P9);
|
||||
|
||||
NimBLEDevice::setSecurityAuth(true, true, true);
|
||||
NimBLEDevice::setSecurityPasskey(123456);
|
||||
NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY);
|
||||
NimBLEServer *pServer = NimBLEDevice::createServer();
|
||||
NimBLEService *pService = pServer->createService("ABCD");
|
||||
NimBLECharacteristic *pNonSecureCharacteristic = pService->createCharacteristic("1234", NIMBLE_PROPERTY::READ );
|
||||
NimBLECharacteristic *pSecureCharacteristic = pService->createCharacteristic("1235", NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::READ_AUTHEN);
|
||||
|
||||
pService->start();
|
||||
pNonSecureCharacteristic->setValue("Hello Non Secure BLE");
|
||||
pSecureCharacteristic->setValue("Hello Secure BLE");
|
||||
|
||||
NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising();
|
||||
pAdvertising->addServiceUUID("ABCD");
|
||||
pAdvertising->start();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
}
|
||||
/** NimBLE_Secure_Server Demo:
|
||||
*
|
||||
* This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client.
|
||||
* Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective.
|
||||
* To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash.
|
||||
*
|
||||
* Created: on Jan 08 2021
|
||||
* Author: mblasee
|
||||
*/
|
||||
|
||||
#include <NimBLEDevice.h>
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
Serial.println("Starting NimBLE Server");
|
||||
NimBLEDevice::init("NimBLE");
|
||||
NimBLEDevice::setPower(ESP_PWR_LVL_P9);
|
||||
|
||||
NimBLEDevice::setSecurityAuth(true, true, true);
|
||||
NimBLEDevice::setSecurityPasskey(123456);
|
||||
NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY);
|
||||
NimBLEServer *pServer = NimBLEDevice::createServer();
|
||||
NimBLEService *pService = pServer->createService("ABCD");
|
||||
NimBLECharacteristic *pNonSecureCharacteristic = pService->createCharacteristic("1234", NIMBLE_PROPERTY::READ );
|
||||
NimBLECharacteristic *pSecureCharacteristic = pService->createCharacteristic("1235", NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::READ_AUTHEN);
|
||||
|
||||
pService->start();
|
||||
pNonSecureCharacteristic->setValue("Hello Non Secure BLE");
|
||||
pSecureCharacteristic->setValue("Hello Secure BLE");
|
||||
|
||||
NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising();
|
||||
pAdvertising->addServiceUUID("ABCD");
|
||||
pAdvertising->start();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "NimBLE-Arduino",
|
||||
"keywords": "esp32, bluetooth",
|
||||
"description": "Bluetooth low energy (BLE) library for arduino-esp32 based on NimBLE",
|
||||
"version": "1.3.1",
|
||||
"version": "1.3.3",
|
||||
"frameworks": "arduino",
|
||||
"platforms": "espressif32"
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
name=NimBLE-Arduino
|
||||
version=1.3.1
|
||||
version=1.3.3
|
||||
author=h2zero
|
||||
maintainer=h2zero <powellperalta@gmail.com>
|
||||
sentence=Bluetooth low energy (BLE) library for arduino-esp32 based on NimBLE.
|
||||
|
@ -16,11 +16,8 @@
|
||||
* See also:
|
||||
* https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml
|
||||
*/
|
||||
#include "sdkconfig.h"
|
||||
#if defined(CONFIG_BT_ENABLED)
|
||||
|
||||
#include "nimconfig.h"
|
||||
#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
||||
#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
||||
|
||||
#include "NimBLE2904.h"
|
||||
|
||||
@ -86,5 +83,4 @@ void NimBLE2904::setUnit(uint16_t unit) {
|
||||
setValue((uint8_t*) &m_data, sizeof(m_data));
|
||||
} // setUnit
|
||||
|
||||
#endif // #if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
||||
#endif
|
||||
#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */
|
||||
|
@ -14,11 +14,8 @@
|
||||
|
||||
#ifndef MAIN_NIMBLE2904_H_
|
||||
#define MAIN_NIMBLE2904_H_
|
||||
#include "sdkconfig.h"
|
||||
#if defined(CONFIG_BT_ENABLED)
|
||||
|
||||
#include "nimconfig.h"
|
||||
#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
||||
#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
||||
|
||||
#include "NimBLEDescriptor.h"
|
||||
|
||||
@ -82,6 +79,5 @@ private:
|
||||
BLE2904_Data m_data;
|
||||
}; // BLE2904
|
||||
|
||||
#endif // #if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
||||
#endif /* CONFIG_BT_ENABLED */
|
||||
#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */
|
||||
#endif /* MAIN_NIMBLE2904_H_ */
|
||||
|
@ -11,7 +11,7 @@
|
||||
* Created on: Jul 2, 2017
|
||||
* Author: kolban
|
||||
*/
|
||||
#include "sdkconfig.h"
|
||||
#include "nimconfig.h"
|
||||
#if defined(CONFIG_BT_ENABLED)
|
||||
|
||||
#include <algorithm>
|
||||
|
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