Matter add friendly-name (NodeLabel) to each endpoint (#18897)

This commit is contained in:
s-hadinger 2023-06-18 18:45:47 +02:00 committed by GitHub
parent b2fd311186
commit 4a3b6457ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 3181 additions and 2189 deletions

View File

@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file.
- Matter redesigned UI
- Matter add support for Contact Sensor
- Berry `string.format()` now automatically converts type according to format
- Matter add friendly-name (NodeLabel) to each endpoint
### Breaking Changed

View File

@ -698,7 +698,7 @@ class Matter_Device
var param_log = ''
for k:_class.k2l(plugin_conf)
if k == 'type' continue end
param_log += string.format(" %s = %s", k, plugin_conf[k])
param_log += string.format(" %s:%s", k, plugin_conf[k])
end
return param_log
end
@ -718,7 +718,7 @@ class Matter_Device
# start with mandatory endpoint 0 for root node
self.plugins.push(matter.Plugin_Root(self, 0, {}))
tasmota.log(string.format("MTR: endpoint = %5i type = %s%s", 0, 'root', ''), 2)
tasmota.log(string.format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2)
# always include an aggregator for dynamic endpoints
self.plugins.push(matter.Plugin_Aggregator(self, 0xFF00, {}))
@ -738,12 +738,12 @@ class Matter_Device
var pi = pi_class(self, ep, plugin_conf)
self.plugins.push(pi)
tasmota.log(string.format("MTR: endpoint = %5i type = %s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
tasmota.log(string.format("MTR: endpoint = %5i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
except .. as e, m
tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
end
end
tasmota.log(string.format("MTR: endpoint = %5i type = %s%s", 0xFF00, 'aggregator', ''), 2)
tasmota.log(string.format("MTR: endpoint = %5i type:%s%s", 0xFF00, 'aggregator', ''), 2)
tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter')
end
@ -1260,7 +1260,7 @@ class Matter_Device
pi_conf[k] = plugin_conf[k]
end
# add to main
tasmota.log(string.format("MTR: adding endpoint = %i type = %s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
tasmota.log(string.format("MTR: adding endpoint = %i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
self.plugins_config[ep_str] = pi_conf
self.plugins_persist = true
self.next_ep += 1 # increment next allocated endpoint before saving

View File

@ -24,6 +24,7 @@ import matter
# dummy declaration for solidification
class Matter_Plugin_Device end
#@ solidify:Matter_Plugin_Bridge_HTTP.GetOptionReader,weak
#@ solidify:Matter_Plugin_Bridge_HTTP,weak
class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
@ -209,9 +210,20 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
# web_values
#
# Show values of the remote device as HTML
static var PREFIX = "| <i>%s</i> "
def web_values()
import webserver
webserver.content_send("| &lt;-- (" + self.NAME + ") --&gt;")
import string
self.web_values_prefix()
webserver.content_send("&lt;-- (" + self.NAME + ") --&gt;")
end
# Show prefix before web value
def web_values_prefix()
import webserver
import string
var name = self.get_name()
webserver.content_send(string.format(self.PREFIX, name ? webserver.html_escape(name) : ""))
end
# Show on/off value as html
@ -219,5 +231,52 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
var onoff_html = (onoff != nil ? (onoff ? "<b>On</b>" : "Off") : "")
return onoff_html
end
#############################################################
# GetOption reader to decode `SetOption<x>` values from `Status 3`
static class GetOptionReader
var flag, flag2, flag3, flag4, flag5, flag6
def init(j)
if j == nil raise "value_error", "invalid json" end
var so = j['SetOption']
self.flag = bytes().fromhex(so[0]).reverse()
self.flag2 = bytes().fromhex(so[1])
self.flag3 = bytes().fromhex(so[2]).reverse()
self.flag4 = bytes().fromhex(so[3]).reverse()
self.flag5 = bytes().fromhex(so[4]).reverse()
self.flag6 = bytes().fromhex(so[5]).reverse()
end
def getoption(x)
if x < 32 # SetOption0 .. 31 = Settings->flag
return self.flag.getbits(x, 1)
elif x < 50 # SetOption32 .. 49 = Settings->param
return self.flag2.get(x - 32, 1)
elif x < 82 # SetOption50 .. 81 = Settings->flag3
return self.flag3.getbits(x - 50, 1)
elif x < 114 # SetOption82 .. 113 = Settings->flag4
return self.flag4.getbits(x - 82, 1)
elif x < 146 # SetOption114 .. 145 = Settings->flag5
return self.flag5.getbits(x - 114, 1)
elif x < 178 # SetOption146 .. 177 = Settings->flag6
return self.flag6.getbits(x - 146, 1)
end
end
end
#- Examples
import json
var p = '{"SerialLog":2,"WebLog":3,"MqttLog":0,"SysLog":0,"LogHost":"","LogPort":514,"SSId":["Livebox-781A",""],"TelePeriod":300,"Resolution":"558180C0","SetOption":["00008009","2805C80001800600003C5A0A192800000000","00000080","00006000","00006000","00000020"]}'
var j = json.load(p)
var gor = matter.Plugin_Bridge_HTTP.GetOptionReader(j)
assert(gor.getoption(151) == 1)
assert(gor.getoption(150) == 0)
assert(gor.getoption(32) == 40)
assert(gor.getoption(37) == 128)
-#
end
matter.Plugin_Bridge_HTTP = Matter_Plugin_Bridge_HTTP

View File

@ -145,7 +145,19 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
def web_values()
import webserver
import string
webserver.content_send(string.format("| Light %s", self.web_value_onoff(self.shadow_onoff)))
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("%s", self.web_value_onoff(self.shadow_onoff)))
end
# Show prefix before web value
def web_values_prefix()
import webserver
import string
var name = self.get_name()
if !name
name = "Power" + str(self.tasmota_relay_index)
end
webserver.content_send(string.format(self.PREFIX, name ? webserver.html_escape(name) : ""))
end
end

View File

@ -173,7 +173,8 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
def web_values()
import webserver
import string
webserver.content_send(string.format("| Light %s %s", self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer()))
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("%s %s", self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer()))
end
# Show on/off value as html

View File

@ -175,7 +175,8 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
def web_values()
import webserver
import string
webserver.content_send(string.format("| Light %s %s %s",
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("%s %s %s",
self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(),
self.web_value_ct()))
end

View File

@ -201,7 +201,8 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
def web_values()
import webserver
import string
webserver.content_send(string.format("| Light %s %s %s",
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("%s %s %s",
self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(),
self.web_value_RGB()))
end

View File

@ -39,7 +39,8 @@ class Matter_Plugin_Bridge_OnOff : Matter_Plugin_Bridge_Light0
def web_values()
import webserver
import string
webserver.content_send(string.format("| Relay %i %s", self.tasmota_relay_index, self.web_value_onoff(self.shadow_onoff)))
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("Relay %i %s", self.tasmota_relay_index, self.web_value_onoff(self.shadow_onoff)))
end
end

View File

@ -98,5 +98,14 @@ class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP
return ""
end
# Show prefix before web value
def web_values_prefix()
import webserver
import string
var name = self.get_name()
if (!name) name = self.filter_name_html() end
webserver.content_send(string.format(self.PREFIX, name ? webserver.html_escape(name) : ""))
end
end
matter.Plugin_Bridge_Sensor = Matter_Plugin_Bridge_Sensor

View File

@ -103,8 +103,19 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
def web_values()
import webserver
import string
webserver.content_send(string.format("| Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_contact)))
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_contact)))
end
# Show prefix before web value
def web_values_prefix()
import webserver
import string
var name = self.get_name()
if !name
name = "Switch" + str(self.tasmota_switch_index)
end
webserver.content_send(string.format(self.PREFIX, name ? webserver.html_escape(name) : ""))
end
end
matter.Plugin_Bridge_Sensor_Contact = Matter_Plugin_Bridge_Sensor_Contact

View File

@ -92,8 +92,8 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
def web_values()
import webserver
import string
webserver.content_send(string.format("| %s &#x1F4A7; %2.0f%%",
self.filter_name_html(),
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("&#x1F4A7; %2.0f%%",
self.shadow_value != nil ? real(self.shadow_value) / 100 : nil))
end

View File

@ -99,8 +99,8 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
def web_values()
import webserver
import string
webserver.content_send(string.format("| %s &#128261; %ilux",
self.filter_name_html(),
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("&#128261; %ilux",
int(self.shadow_value)))
end

View File

@ -107,8 +107,19 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
def web_values()
import webserver
import string
webserver.content_send(string.format("| Occupancy%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_occupancy)))
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("Occupancy%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_occupancy)))
end
# Show prefix before web value
def web_values_prefix()
import webserver
import string
var name = self.get_name()
if !name
name = "Switch" + str(self.tasmota_switch_index)
end
webserver.content_send(string.format(self.PREFIX, name ? webserver.html_escape(name) : ""))
end
end
matter.Plugin_Bridge_Sensor_Occupancy = Matter_Plugin_Bridge_Sensor_Occupancy

View File

@ -92,8 +92,8 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
def web_values()
import webserver
import string
webserver.content_send(string.format("| %s &#x26C5; %i hPa",
self.filter_name_html(),
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("&#x26C5; %i hPa",
int(self.shadow_value)))
end

View File

@ -92,8 +92,8 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
def web_values()
import webserver
import string
webserver.content_send(string.format("| %s &#x2600;&#xFE0F; %.1f °C",
self.filter_name_html(),
self.web_values_prefix() # display '| ' and name if present
webserver.content_send(string.format("&#x2600;&#xFE0F; %.1f °C",
self.shadow_value != nil ? real(self.shadow_value) / 100 : nil))
end

View File

@ -27,7 +27,7 @@ class Matter_Plugin end
class Matter_Plugin_Device : Matter_Plugin
static var CLUSTERS = {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
0x0039: [0x11], # Bridged Device Basic Information 9.13 p.485
0x0039: [5], # Bridged Device Basic Information 9.13 p.485
0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16
0x0004: [0,0xFFFC,0xFFFD], # Groups 1.3 p.21
0x0005: [0,1,2,3,4,5,0xFFFC,0xFFFD], # Scenes 1.4 p.30 - no writable
@ -35,11 +35,22 @@ class Matter_Plugin_Device : Matter_Plugin
static var TYPES = { 0x0013: 1 } # fake type
static var NON_BRIDGE_VENDOR = [ 0x1217, 0x1381 ] # Fabric VendorID not supporting Bridge mode
var node_label # name of the endpoint, used only in bridge mode, "" if none
def set_name(n)
if n != self.node_label
self.attribute_updated(0x0039, 0x0005)
end
self.node_label = n
end
def get_name() return self.node_label end
#############################################################
# Constructor
# def init(device, endpoint, arguments)
# super(self).init(device, endpoint, arguments)
# end
def init(device, endpoint, config)
self.node_label = config.find("name", "")
super(self).init(device, endpoint, config)
end
#############################################################
# read an attribute
@ -103,7 +114,16 @@ class Matter_Plugin_Device : Matter_Plugin
else
return super(self).read_attribute(session, ctx)
end
# ====================================================================================================
elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ==========
if attribute == 0x0005 # ---------- NodeLabel / string ----------
return TLV.create_TLV(TLV.UTF1, self.get_name())
else
return super(self).read_attribute(session, ctx)
end
else
return super(self).read_attribute(session, ctx)
end

View File

@ -301,8 +301,14 @@ class Matter_UI
webserver.content_send("<form action='/matterc' method='post'>"
"<p><b>Local sensors and devices</b></p>"
"<table style='width:100%'>"
"<tr><td width='25'>#</td><td width='115'>Type</td><td>Parameter</td><td width='15'></td></tr>")
"<table style='width:100%'>")
webserver.content_send("<tr>"
"<td width='25' style='font-size:smaller;'>#</td>"
"<td width='78' style='font-size:smaller;'>Name</td>"
"<td width='115' style='font-size:smaller;'>Type</td>"
"<td style='font-size:smaller;'>Parameter</td>"
"<td width='15' style='font-size:smaller;'></td>"
"</tr>")
# display one line per plug-in
self.device.plugins_config.remove("0") # remove any leftover from ancient configuration
@ -327,9 +333,10 @@ class Matter_UI
found = true
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><b>%i</b></td>", ep))
webserver.content_send(string.format("<td style='font-size:smaller;'><input type='text' name='nam%i' size='1' value='%s'></td>",
ep, webserver.html_escape(conf.find('name', ''))))
webserver.content_send(string.format("<td style='font-size:smaller;'><b>%s</b></td>", self.plugin_name(conf.find('type', ''))))
webserver.content_send(string.format("<td style='font-size:smaller;'><input type='text' name='arg%i' size='8' value='%s' placeholder='%s'></td>",
webserver.content_send(string.format("<td style='font-size:smaller;'><input type='text' name='arg%i' size='1' value='%s' placeholder='%s'></td>",
ep, webserver.html_escape(arg), cl ? webserver.html_escape(cl.ARG_HINT) : ''))
webserver.content_send(string.format("<td style='text-align:center;'><button name='del%i' "
"style='background:none;border:none;line-height:1;'"
@ -361,7 +368,13 @@ class Matter_UI
webserver.content_send(string.format("&#x1F517; <a target='_blank' href=\"http://%s/\">%s</a>", webserver.html_escape(remote), webserver.html_escape(remote)))
webserver.content_send("<table style='width:100%'>")
webserver.content_send("<tr><td width='25'></td><td width='115'></td><td></td><td width='15'></td></tr>")
webserver.content_send("<tr>"
"<td width='25'></td>"
"<td width='78'></td>"
"<td width='115'>"
"</td><td>"
"</td><td width='15'></td>"
"</tr>")
found = false
i = 0
@ -384,6 +397,8 @@ class Matter_UI
found = true
webserver.content_send(string.format("<tr><td width='22' style='font-size:smaller;'><b>%i</b></td>", ep))
webserver.content_send(string.format("<td width='78' style='font-size:smaller;'><input type='text' name='nam%i' size='1' value='%s' placeholder='(optional)'></td>",
ep, webserver.html_escape(conf.find('name', ''))))
webserver.content_send(string.format("<td width='115' style='font-size:smaller;'><b>%s</b></select></td>", self.plugin_name(conf.find('type', ''))))
webserver.content_send(string.format("<td style='font-size:smaller;'><input type='text' name='arg%i' size='8' value='%s'></td>",
@ -415,13 +430,19 @@ class Matter_UI
webserver.content_send("<p></p><fieldset><legend><b>&nbsp;Add to Configuration&nbsp;</b></legend><p></p>")
webserver.content_send("<p><b>Add local sensor or device</b></p>"
"<form action='/matterc' method='post'>"
"<table style='width:100%'>"
"<tr><td width='145'>Type</td><td>Parameter</td></tr>")
"<table style='width:100%'>")
webserver.content_send("<tr>"
"<td width='100' style='font-size:smaller;'>Name</td>"
"<td width='115' style='font-size:smaller;'>Type</td>"
"<td style='font-size:smaller;'>Parameter</td>"
"</tr>")
webserver.content_send("<tr><td style='font-size:smaller;'><select id='pi' name='pi' onchange='otm(\"arg\",this.value)'>")
webserver.content_send("<tr>"
"<td style='font-size:smaller;'><input type='text' name='nam' size='1' value='' placeholder='(optional)'></td>"
"<td style='font-size:smaller;'><select id='pi' name='pi' onchange='otm(\"arg\",this.value)'>")
self.plugin_option('', self._CLASSES_TYPES)
webserver.content_send("</select></td>")
webserver.content_send("<td style='font-size:smaller;'><input type='text' id='arg' name='arg' size='8' value=''></td>"
webserver.content_send("<td style='font-size:smaller;'><input type='text' id='arg' name='arg' size='1' value=''></td>"
"</tr></table>")
webserver.content_send("<div style='display: block;'></div>")
@ -627,7 +648,11 @@ class Matter_UI
# Add new endpoint section
webserver.content_send("<form action='/matterc' method='post'>"
"<table style='width:100%'>"
"<tr><td width='145'>Type</td><td>Parameter</td></tr>")
"<tr>"
"<td width='100' style='font-size:smaller;'>Name</td>"
"<td width='115' style='font-size:smaller;'>Type</td>"
"<td style='font-size:smaller;'>Parameter</td>"
"</tr>")
webserver.content_send(string.format("<input name='url' type='hidden' value='%s'>", webserver.html_escape(url)))
@ -643,21 +668,23 @@ class Matter_UI
arg = cl.ui_conf_to_string(cl, config)
end
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><select name='pi%i' onchange='otm(\"arg%i\",this.value)'>", i, i))
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><input type='text' name='nam%i' size='1' value='' placeholder='(optional)'></td>", i))
webserver.content_send(string.format("<td style='font-size:smaller;'><select name='pi%i' onchange='otm(\"arg%i\",this.value)'>", i, i))
self.plugin_option(typ, self._CLASSES_TYPES2)
webserver.content_send("</select></td>"
"<td style='font-size:smaller;'>")
webserver.content_send(string.format("<input type='text' id='arg%i' name='arg%i' size='8' value='%s' placeholder='%s'>",
webserver.content_send(string.format("<input type='text' id='arg%i' name='arg%i' size='1' value='%s' placeholder='%s'>",
i, i, webserver.html_escape(arg), cl ? webserver.html_escape(cl.ARG_HINT) : ''))
webserver.content_send("</td></tr>")
i += 1
end
# empty line for new endpoint
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><select name='pi%i' onchange='otm(\"arg%i\",this.value)'>", i, i))
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><input type='text' name='nam%i' size='1' value='' placeholder='(optional)'></td>", i))
webserver.content_send(string.format("<td style='font-size:smaller;'><select name='pi%i' onchange='otm(\"arg%i\",this.value)'>", i, i))
self.plugin_option('', self._CLASSES_TYPES2)
webserver.content_send("</select></td>"
"<td style='font-size:smaller;'>")
webserver.content_send(string.format("<input type='text' id='arg%i' name='arg%i' size='8' value='%s'>",
webserver.content_send(string.format("<input type='text' id='arg%i' name='arg%i' size='1' value='%s'>",
i, i, ''))
webserver.content_send("</td></tr>")
@ -714,9 +741,9 @@ class Matter_UI
try
# debug information about parameters
# for i:0..webserver.arg_size()-1
# tasmota.log(string.format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
# end
for i:0..webserver.arg_size()-1
tasmota.log(string.format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
end
#---------------------------------------------------------------------#
# Change Passcode and/or Passcode
@ -800,7 +827,7 @@ class Matter_UI
# iterate by endpoint number
for i:0..webserver.arg_size()-1
var arg_name = webserver.arg_name(i)
if string.find(arg_name, "arg") == 0
if string.find(arg_name, "arg") == 0 # 'arg<i>' with i being the endpoint
var arg_ep = int(arg_name[3..]) # target endpoint as int
var arg = webserver.arg(i) # text value
@ -829,6 +856,31 @@ class Matter_UI
else
tasmota.log(string.format("MTR: ep=%i not found", arg_ep), 3)
end
elif string.find(arg_name, "nam") == 0 # 'nam<i>' with i being the endpoint
var nam_ep = int(arg_name[3..]) # target endpoint as int
var nam = webserver.arg(i) # text value
var conf_ep = self.device.plugins_config.find(str(nam_ep)) # find the corresponding configuration map
if conf_ep != nil # found
var prev_name = conf_ep.find("name", "")
var changed = (prev_name != nam)
if changed
needs_saving = true
var pl = self.device.find_plugin_by_endpoint(nam_ep)
if pl
# apply or remove
pl.set_name(nam)
if nam
conf_ep['name'] = nam
else
conf_ep.remove('name')
end
tasmota.log(string.format("MTR: apply name '%s' (%i) to %s", conf_ep, nam_ep, pl), 3)
pl.parse_configuration(conf_ep)
end
end
end
end
end
@ -850,12 +902,14 @@ class Matter_UI
elif webserver.has_arg("addep")
var typ = webserver.arg('pi')
var arg = webserver.arg('arg')
var nam = webserver.arg('nam')
tasmota.log(string.format("MTR: add endpoint typ='%s' arg='%s'", typ, arg), 3)
# check if type exists
var typ_class = self.device.plugins_classes.find(typ)
if typ_class != nil
var config = {}
if nam config['name'] = nam end
typ_class.ui_string_to_conf(typ_class, config, arg)
self.device.bridge_add_endpoint(typ, config)
end
@ -863,7 +917,7 @@ class Matter_UI
webserver.redirect("/matterc?")
#---------------------------------------------------------------------#
# Add new endpoint for local sensor or device
# Add new endpoint for remote sensor or device
#---------------------------------------------------------------------#
elif webserver.has_arg("addrem")
var url = webserver.arg('url')
@ -875,12 +929,16 @@ class Matter_UI
while webserver.has_arg('pi'+idx_str)
var typ = webserver.arg('pi'+idx_str)
var arg = webserver.arg('arg'+idx_str)
var nam = webserver.arg('nam'+idx_str)
if typ != ''
# check if type exists
var typ_class = self.device.plugins_classes.find(typ)
if typ_class != nil
var config = {'url': url, 'type': typ}
if nam
config['name'] = nam
end
typ_class.ui_string_to_conf(typ_class, config, arg)
# check if configuration is already present
var duplicate = false

View File

@ -1796,7 +1796,7 @@ be_local_closure(Matter_Device__instantiate_plugins_from_config, /* name */
/* K9 */ be_nested_str_weak(Plugin_Root),
/* K10 */ be_const_int(0),
/* K11 */ be_nested_str_weak(format),
/* K12 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X20_X3D_X20_X25s_X25s),
/* K12 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s),
/* K13 */ be_nested_str_weak(root),
/* K14 */ be_nested_str_weak(),
/* K15 */ be_nested_str_weak(Plugin_Aggregator),
@ -2444,7 +2444,7 @@ be_local_closure(Matter_Device_conf_to_log, /* name */
/* K3 */ be_nested_str_weak(k2l),
/* K4 */ be_nested_str_weak(type),
/* K5 */ be_nested_str_weak(format),
/* K6 */ be_nested_str_weak(_X20_X25s_X20_X3D_X20_X25s),
/* K6 */ be_nested_str_weak(_X20_X25s_X3A_X25s),
/* K7 */ be_nested_str_weak(stop_iteration),
}),
be_str_weak(conf_to_log),
@ -3838,7 +3838,7 @@ be_local_closure(Matter_Device_bridge_add_endpoint, /* name */
/* K12 */ be_nested_str_weak(keys),
/* K13 */ be_nested_str_weak(stop_iteration),
/* K14 */ be_nested_str_weak(format),
/* K15 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X20_X3D_X20_X25s_X25s),
/* K15 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s),
/* K16 */ be_nested_str_weak(conf_to_log),
/* K17 */ be_const_int(2),
/* K18 */ be_nested_str_weak(plugins_config),

View File

@ -4,15 +4,15 @@
\********************************************************************/
#include "be_constobj.h"
extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
extern const bclass be_class_GetOptionReader;
/********************************************************************
** Solidified function: read_attribute
** Solidified function: getoption
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
be_local_closure(GetOptionReader_getoption, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
6, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@ -20,54 +20,290 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(create_TLV),
/* K5 */ be_nested_str_weak(BOOL),
/* K6 */ be_nested_str_weak(http_remote),
/* K7 */ be_nested_str_weak(reachable),
/* K8 */ be_nested_str_weak(read_attribute),
/* K0 */ be_nested_str_weak(flag),
/* K1 */ be_nested_str_weak(getbits),
/* K2 */ be_const_int(1),
/* K3 */ be_nested_str_weak(flag2),
/* K4 */ be_nested_str_weak(get),
/* K5 */ be_nested_str_weak(flag3),
/* K6 */ be_nested_str_weak(flag4),
/* K7 */ be_nested_str_weak(flag5),
/* K8 */ be_nested_str_weak(flag6),
}),
be_str_weak(read_attribute),
be_str_weak(getoption),
&be_const_str_solidified,
( &(const binstruction[35]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x880C0701, // 0001 GETMBR R3 R3 K1
0x88100502, // 0002 GETMBR R4 R2 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x541A0038, // 0004 LDINT R6 57
0x1C180806, // 0005 EQ R6 R4 R6
0x781A0012, // 0006 JMPF R6 #001A
0x541A0010, // 0007 LDINT R6 17
0x1C180A06, // 0008 EQ R6 R5 R6
0x781A0006, // 0009 JMPF R6 #0011
0x8C180704, // 000A GETMET R6 R3 K4
0x88200705, // 000B GETMBR R8 R3 K5
0x88240106, // 000C GETMBR R9 R0 K6
0x88241307, // 000D GETMBR R9 R9 K7
0x7C180600, // 000E CALL R6 3
0x80040C00, // 000F RET 1 R6
0x70020007, // 0010 JMP #0019
0x60180003, // 0011 GETGBL R6 G3
0x5C1C0000, // 0012 MOVE R7 R0
( &(const binstruction[65]) { /* code */
0x540A001F, // 0000 LDINT R2 32
0x14080202, // 0001 LT R2 R1 R2
0x780A0006, // 0002 JMPF R2 #000A
0x88080100, // 0003 GETMBR R2 R0 K0
0x8C080501, // 0004 GETMET R2 R2 K1
0x5C100200, // 0005 MOVE R4 R1
0x58140002, // 0006 LDCONST R5 K2
0x7C080600, // 0007 CALL R2 3
0x80040400, // 0008 RET 1 R2
0x70020035, // 0009 JMP #0040
0x540A0031, // 000A LDINT R2 50
0x14080202, // 000B LT R2 R1 R2
0x780A0007, // 000C JMPF R2 #0015
0x88080103, // 000D GETMBR R2 R0 K3
0x8C080504, // 000E GETMET R2 R2 K4
0x5412001F, // 000F LDINT R4 32
0x04100204, // 0010 SUB R4 R1 R4
0x58140002, // 0011 LDCONST R5 K2
0x7C080600, // 0012 CALL R2 3
0x80040400, // 0013 RET 1 R2
0x7002002A, // 0014 JMP #0040
0x540A0051, // 0015 LDINT R2 82
0x14080202, // 0016 LT R2 R1 R2
0x780A0007, // 0017 JMPF R2 #0020
0x88080105, // 0018 GETMBR R2 R0 K5
0x8C080501, // 0019 GETMET R2 R2 K1
0x54120031, // 001A LDINT R4 50
0x04100204, // 001B SUB R4 R1 R4
0x58140002, // 001C LDCONST R5 K2
0x7C080600, // 001D CALL R2 3
0x80040400, // 001E RET 1 R2
0x7002001F, // 001F JMP #0040
0x540A0071, // 0020 LDINT R2 114
0x14080202, // 0021 LT R2 R1 R2
0x780A0007, // 0022 JMPF R2 #002B
0x88080106, // 0023 GETMBR R2 R0 K6
0x8C080501, // 0024 GETMET R2 R2 K1
0x54120051, // 0025 LDINT R4 82
0x04100204, // 0026 SUB R4 R1 R4
0x58140002, // 0027 LDCONST R5 K2
0x7C080600, // 0028 CALL R2 3
0x80040400, // 0029 RET 1 R2
0x70020014, // 002A JMP #0040
0x540A0091, // 002B LDINT R2 146
0x14080202, // 002C LT R2 R1 R2
0x780A0007, // 002D JMPF R2 #0036
0x88080107, // 002E GETMBR R2 R0 K7
0x8C080501, // 002F GETMET R2 R2 K1
0x54120071, // 0030 LDINT R4 114
0x04100204, // 0031 SUB R4 R1 R4
0x58140002, // 0032 LDCONST R5 K2
0x7C080600, // 0033 CALL R2 3
0x80040400, // 0034 RET 1 R2
0x70020009, // 0035 JMP #0040
0x540A00B1, // 0036 LDINT R2 178
0x14080202, // 0037 LT R2 R1 R2
0x780A0006, // 0038 JMPF R2 #0040
0x88080108, // 0039 GETMBR R2 R0 K8
0x8C080501, // 003A GETMET R2 R2 K1
0x54120091, // 003B LDINT R4 146
0x04100204, // 003C SUB R4 R1 R4
0x58140002, // 003D LDCONST R5 K2
0x7C080600, // 003E CALL R2 3
0x80040400, // 003F RET 1 R2
0x80000000, // 0040 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(GetOptionReader_init, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[15]) { /* constants */
/* K0 */ be_nested_str_weak(value_error),
/* K1 */ be_nested_str_weak(invalid_X20json),
/* K2 */ be_nested_str_weak(SetOption),
/* K3 */ be_nested_str_weak(flag),
/* K4 */ be_nested_str_weak(fromhex),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(reverse),
/* K7 */ be_nested_str_weak(flag2),
/* K8 */ be_const_int(1),
/* K9 */ be_nested_str_weak(flag3),
/* K10 */ be_const_int(2),
/* K11 */ be_nested_str_weak(flag4),
/* K12 */ be_const_int(3),
/* K13 */ be_nested_str_weak(flag5),
/* K14 */ be_nested_str_weak(flag6),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[54]) { /* code */
0x4C080000, // 0000 LDNIL R2
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0000, // 0002 JMPF R2 #0004
0xB0060101, // 0003 RAISE 1 K0 K1
0x94080302, // 0004 GETIDX R2 R1 K2
0x600C0015, // 0005 GETGBL R3 G21
0x7C0C0000, // 0006 CALL R3 0
0x8C0C0704, // 0007 GETMET R3 R3 K4
0x94140505, // 0008 GETIDX R5 R2 K5
0x7C0C0400, // 0009 CALL R3 2
0x8C0C0706, // 000A GETMET R3 R3 K6
0x7C0C0200, // 000B CALL R3 1
0x90020603, // 000C SETMBR R0 K3 R3
0x600C0015, // 000D GETGBL R3 G21
0x7C0C0000, // 000E CALL R3 0
0x8C0C0704, // 000F GETMET R3 R3 K4
0x94140508, // 0010 GETIDX R5 R2 K8
0x7C0C0400, // 0011 CALL R3 2
0x90020E03, // 0012 SETMBR R0 K7 R3
0x600C0015, // 0013 GETGBL R3 G21
0x7C0C0000, // 0014 CALL R3 0
0x8C0C0704, // 0015 GETMET R3 R3 K4
0x9414050A, // 0016 GETIDX R5 R2 K10
0x7C0C0400, // 0017 CALL R3 2
0x8C0C0706, // 0018 GETMET R3 R3 K6
0x7C0C0200, // 0019 CALL R3 1
0x90021203, // 001A SETMBR R0 K9 R3
0x600C0015, // 001B GETGBL R3 G21
0x7C0C0000, // 001C CALL R3 0
0x8C0C0704, // 001D GETMET R3 R3 K4
0x9414050C, // 001E GETIDX R5 R2 K12
0x7C0C0400, // 001F CALL R3 2
0x8C0C0706, // 0020 GETMET R3 R3 K6
0x7C0C0200, // 0021 CALL R3 1
0x90021603, // 0022 SETMBR R0 K11 R3
0x600C0015, // 0023 GETGBL R3 G21
0x7C0C0000, // 0024 CALL R3 0
0x8C0C0704, // 0025 GETMET R3 R3 K4
0x54160003, // 0026 LDINT R5 4
0x94140405, // 0027 GETIDX R5 R2 R5
0x7C0C0400, // 0028 CALL R3 2
0x8C0C0706, // 0029 GETMET R3 R3 K6
0x7C0C0200, // 002A CALL R3 1
0x90021A03, // 002B SETMBR R0 K13 R3
0x600C0015, // 002C GETGBL R3 G21
0x7C0C0000, // 002D CALL R3 0
0x8C0C0704, // 002E GETMET R3 R3 K4
0x54160004, // 002F LDINT R5 5
0x94140405, // 0030 GETIDX R5 R2 R5
0x7C0C0400, // 0031 CALL R3 2
0x8C0C0706, // 0032 GETMET R3 R3 K6
0x7C0C0200, // 0033 CALL R3 1
0x90021C03, // 0034 SETMBR R0 K14 R3
0x80000000, // 0035 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: GetOptionReader
********************************************************************/
be_local_class(GetOptionReader,
6,
NULL,
be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(flag2, -1), be_const_var(1) },
{ be_const_key_weak(flag4, -1), be_const_var(3) },
{ be_const_key_weak(getoption, -1), be_const_closure(GetOptionReader_getoption_closure) },
{ be_const_key_weak(init, 5), be_const_closure(GetOptionReader_init_closure) },
{ be_const_key_weak(flag3, -1), be_const_var(2) },
{ be_const_key_weak(flag6, -1), be_const_var(5) },
{ be_const_key_weak(flag5, -1), be_const_var(4) },
{ be_const_key_weak(flag, 0), be_const_var(0) },
})),
be_str_weak(GetOptionReader)
);
/*******************************************************************/
void be_load_GetOptionReader_class(bvm *vm) {
be_pushntvclass(vm, &be_class_GetOptionReader);
be_setglobal(vm, "GetOptionReader");
be_pop(vm, 1);
}
extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_init, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(init),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(ARG_HTTP),
/* K4 */ be_nested_str_weak(http_remote),
/* K5 */ be_nested_str_weak(device),
/* K6 */ be_nested_str_weak(register_http_remote),
/* K7 */ be_nested_str_weak(PROBE_TIMEOUT),
/* K8 */ be_nested_str_weak(register_cmd_cb),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0x60140003, // 0001 GETGBL R5 G3
0x5C180000, // 0002 MOVE R6 R0
0x7C140200, // 0003 CALL R5 1
0x8C140B01, // 0004 GETMET R5 R5 K1
0x5C1C0200, // 0005 MOVE R7 R1
0x5C200400, // 0006 MOVE R8 R2
0x5C240600, // 0007 MOVE R9 R3
0x7C140800, // 0008 CALL R5 4
0x8C140702, // 0009 GETMET R5 R3 K2
0x881C0103, // 000A GETMBR R7 R0 K3
0x7C140400, // 000B CALL R5 2
0x88180105, // 000C GETMBR R6 R0 K5
0x8C180D06, // 000D GETMET R6 R6 K6
0x5C200A00, // 000E MOVE R8 R5
0x88240107, // 000F GETMBR R9 R0 K7
0x7C180600, // 0010 CALL R6 3
0x90020806, // 0011 SETMBR R0 K4 R6
0x8C180108, // 0012 GETMET R6 R0 K8
0x7C180200, // 0013 CALL R6 1
0x8C180D08, // 0014 GETMET R6 R6 K8
0x5C200200, // 0015 MOVE R8 R1
0x5C240400, // 0016 MOVE R9 R2
0x7C180600, // 0017 CALL R6 3
0x80040C00, // 0018 RET 1 R6
0x70020007, // 0019 JMP #0022
0x60180003, // 001A GETGBL R6 G3
0x5C1C0000, // 001B MOVE R7 R0
0x7C180200, // 001C CALL R6 1
0x8C180D08, // 001D GETMET R6 R6 K8
0x5C200200, // 001E MOVE R8 R1
0x5C240400, // 001F MOVE R9 R2
0x7C180600, // 0020 CALL R6 3
0x80040C00, // 0021 RET 1 R6
0x80000000, // 0022 RET 0
0x80000000, // 0014 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: every_250ms
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_every_250ms, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(http_remote),
/* K1 */ be_nested_str_weak(scheduler),
}),
be_str_weak(every_250ms),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x8C040301, // 0001 GETMET R1 R1 K1
0x7C040200, // 0002 CALL R1 1
0x80000000, // 0003 RET 0
})
)
);
@ -111,124 +347,6 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_web_value_onoff, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: update_shadow
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_update_shadow, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(tick),
/* K1 */ be_nested_str_weak(device),
/* K2 */ be_nested_str_weak(call_remote_sync),
/* K3 */ be_nested_str_weak(UPDATE_CMD),
/* K4 */ be_nested_str_weak(parse_http_response),
/* K5 */ be_const_int(1),
}),
be_str_weak(update_shadow),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x88040101, // 0000 GETMBR R1 R0 K1
0x88040300, // 0001 GETMBR R1 R1 K0
0x90020001, // 0002 SETMBR R0 K0 R1
0x8C040102, // 0003 GETMET R1 R0 K2
0x880C0103, // 0004 GETMBR R3 R0 K3
0x7C040400, // 0005 CALL R1 2
0x78060004, // 0006 JMPF R1 #000C
0x8C080104, // 0007 GETMET R2 R0 K4
0x58100005, // 0008 LDCONST R4 K5
0x5C140200, // 0009 MOVE R5 R1
0x88180103, // 000A GETMBR R6 R0 K3
0x7C080800, // 000B CALL R2 4
0x80000000, // 000C RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_http_response
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_parse_http_response, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_const_int(0),
/* K1 */ be_nested_str_weak(http_remote),
/* K2 */ be_nested_str_weak(device_is_alive),
/* K3 */ be_nested_str_weak(device),
/* K4 */ be_nested_str_weak(tick),
/* K5 */ be_nested_str_weak(json),
/* K6 */ be_nested_str_weak(load),
/* K7 */ be_nested_str_weak(contains),
/* K8 */ be_nested_str_weak(StatusSNS),
/* K9 */ be_nested_str_weak(StatusSTS),
/* K10 */ be_nested_str_weak(StatusSHT),
/* K11 */ be_nested_str_weak(parse_update),
}),
be_str_weak(parse_http_response),
&be_const_str_solidified,
( &(const binstruction[39]) { /* code */
0x24100300, // 0000 GT R4 R1 K0
0x78120023, // 0001 JMPF R4 #0026
0x88100101, // 0002 GETMBR R4 R0 K1
0x8C100902, // 0003 GETMET R4 R4 K2
0x50180200, // 0004 LDBOOL R6 1 0
0x7C100400, // 0005 CALL R4 2
0x88100103, // 0006 GETMBR R4 R0 K3
0x88100904, // 0007 GETMBR R4 R4 K4
0xA4160A00, // 0008 IMPORT R5 K5
0x8C180B06, // 0009 GETMET R6 R5 K6
0x5C200400, // 000A MOVE R8 R2
0x7C180400, // 000B CALL R6 2
0x4C1C0000, // 000C LDNIL R7
0x781A0017, // 000D JMPF R6 #0026
0x8C200D07, // 000E GETMET R8 R6 K7
0x58280008, // 000F LDCONST R10 K8
0x7C200400, // 0010 CALL R8 2
0x78220002, // 0011 JMPF R8 #0015
0x94180D08, // 0012 GETIDX R6 R6 K8
0x541E0007, // 0013 LDINT R7 8
0x7002000C, // 0014 JMP #0022
0x8C200D07, // 0015 GETMET R8 R6 K7
0x58280009, // 0016 LDCONST R10 K9
0x7C200400, // 0017 CALL R8 2
0x78220002, // 0018 JMPF R8 #001C
0x94180D09, // 0019 GETIDX R6 R6 K9
0x541E000A, // 001A LDINT R7 11
0x70020005, // 001B JMP #0022
0x8C200D07, // 001C GETMET R8 R6 K7
0x5828000A, // 001D LDCONST R10 K10
0x7C200400, // 001E CALL R8 2
0x78220001, // 001F JMPF R8 #0022
0x94180D09, // 0020 GETIDX R6 R6 K9
0x541E000C, // 0021 LDINT R7 13
0x8C20010B, // 0022 GETMET R8 R0 K11
0x5C280C00, // 0023 MOVE R10 R6
0x5C2C0E00, // 0024 MOVE R11 R7
0x7C200600, // 0025 CALL R8 3
0x80000000, // 0026 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: call_remote_sync
********************************************************************/
@ -312,11 +430,11 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_call_remote_sync, /* name */
/********************************************************************
** Solidified function: every_250ms
** Solidified function: update_shadow
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_every_250ms, /* name */
be_local_closure(Matter_Plugin_Bridge_HTTP_update_shadow, /* name */
be_nested_proto(
3, /* nstack */
7, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@ -324,17 +442,30 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_every_250ms, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(http_remote),
/* K1 */ be_nested_str_weak(scheduler),
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(tick),
/* K1 */ be_nested_str_weak(device),
/* K2 */ be_nested_str_weak(call_remote_sync),
/* K3 */ be_nested_str_weak(UPDATE_CMD),
/* K4 */ be_nested_str_weak(parse_http_response),
/* K5 */ be_const_int(1),
}),
be_str_weak(every_250ms),
be_str_weak(update_shadow),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x8C040301, // 0001 GETMET R1 R1 K1
0x7C040200, // 0002 CALL R1 1
0x80000000, // 0003 RET 0
( &(const binstruction[13]) { /* code */
0x88040101, // 0000 GETMBR R1 R0 K1
0x88040300, // 0001 GETMBR R1 R1 K0
0x90020001, // 0002 SETMBR R0 K0 R1
0x8C040102, // 0003 GETMET R1 R0 K2
0x880C0103, // 0004 GETMBR R3 R0 K3
0x7C040400, // 0005 CALL R1 2
0x78060004, // 0006 JMPF R1 #000C
0x8C080104, // 0007 GETMET R2 R0 K4
0x58100005, // 0008 LDCONST R4 K5
0x5C140200, // 0009 MOVE R5 R1
0x88180103, // 000A GETMBR R6 R0 K3
0x7C080800, // 000B CALL R2 4
0x80000000, // 000C RET 0
})
)
);
@ -366,42 +497,6 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_is_local_device, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: web_values
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_web_values, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(content_send),
/* K2 */ be_nested_str_weak(_X7C_X20_X26lt_X3B_X2D_X2D_X20_X28),
/* K3 */ be_nested_str_weak(NAME),
/* K4 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1
0x88100103, // 0002 GETMBR R4 R0 K3
0x00120404, // 0003 ADD R4 K2 R4
0x00100904, // 0004 ADD R4 R4 K4
0x7C080400, // 0005 CALL R2 2
0x80000000, // 0006 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
@ -427,12 +522,60 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_parse_update, /* name */
/********************************************************************
** Solidified function: init
** Solidified function: web_values_prefix
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_init, /* name */
be_local_closure(Matter_Plugin_Bridge_HTTP_web_values_prefix, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(get_name),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(PREFIX),
/* K6 */ be_nested_str_weak(html_escape),
/* K7 */ be_nested_str_weak(),
}),
be_str_weak(web_values_prefix),
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C100303, // 0004 GETMET R4 R1 K3
0x8C180504, // 0005 GETMET R6 R2 K4
0x88200105, // 0006 GETMBR R8 R0 K5
0x780E0003, // 0007 JMPF R3 #000C
0x8C240306, // 0008 GETMET R9 R1 K6
0x5C2C0600, // 0009 MOVE R11 R3
0x7C240400, // 000A CALL R9 2
0x70020000, // 000B JMP #000D
0x58240007, // 000C LDCONST R9 K7
0x7C180600, // 000D CALL R6 3
0x7C100400, // 000E CALL R4 2
0x80000000, // 000F RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@ -440,40 +583,170 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_init, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(init),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(ARG_HTTP),
/* K4 */ be_nested_str_weak(http_remote),
/* K5 */ be_nested_str_weak(device),
/* K6 */ be_nested_str_weak(register_http_remote),
/* K7 */ be_nested_str_weak(PROBE_TIMEOUT),
/* K8 */ be_nested_str_weak(register_cmd_cb),
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_nested_str_weak(create_TLV),
/* K5 */ be_nested_str_weak(BOOL),
/* K6 */ be_nested_str_weak(http_remote),
/* K7 */ be_nested_str_weak(reachable),
/* K8 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(init),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0x60140003, // 0001 GETGBL R5 G3
0x5C180000, // 0002 MOVE R6 R0
0x7C140200, // 0003 CALL R5 1
0x8C140B01, // 0004 GETMET R5 R5 K1
0x5C1C0200, // 0005 MOVE R7 R1
0x5C200400, // 0006 MOVE R8 R2
0x5C240600, // 0007 MOVE R9 R3
0x7C140800, // 0008 CALL R5 4
0x8C140702, // 0009 GETMET R5 R3 K2
0x881C0103, // 000A GETMBR R7 R0 K3
0x7C140400, // 000B CALL R5 2
0x88180105, // 000C GETMBR R6 R0 K5
0x8C180D06, // 000D GETMET R6 R6 K6
0x5C200A00, // 000E MOVE R8 R5
0x88240107, // 000F GETMBR R9 R0 K7
0x7C180600, // 0010 CALL R6 3
0x90020806, // 0011 SETMBR R0 K4 R6
0x8C180108, // 0012 GETMET R6 R0 K8
( &(const binstruction[35]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x880C0701, // 0001 GETMBR R3 R3 K1
0x88100502, // 0002 GETMBR R4 R2 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x541A0038, // 0004 LDINT R6 57
0x1C180806, // 0005 EQ R6 R4 R6
0x781A0012, // 0006 JMPF R6 #001A
0x541A0010, // 0007 LDINT R6 17
0x1C180A06, // 0008 EQ R6 R5 R6
0x781A0006, // 0009 JMPF R6 #0011
0x8C180704, // 000A GETMET R6 R3 K4
0x88200705, // 000B GETMBR R8 R3 K5
0x88240106, // 000C GETMBR R9 R0 K6
0x88241307, // 000D GETMBR R9 R9 K7
0x7C180600, // 000E CALL R6 3
0x80040C00, // 000F RET 1 R6
0x70020007, // 0010 JMP #0019
0x60180003, // 0011 GETGBL R6 G3
0x5C1C0000, // 0012 MOVE R7 R0
0x7C180200, // 0013 CALL R6 1
0x80000000, // 0014 RET 0
0x8C180D08, // 0014 GETMET R6 R6 K8
0x5C200200, // 0015 MOVE R8 R1
0x5C240400, // 0016 MOVE R9 R2
0x7C180600, // 0017 CALL R6 3
0x80040C00, // 0018 RET 1 R6
0x70020007, // 0019 JMP #0022
0x60180003, // 001A GETGBL R6 G3
0x5C1C0000, // 001B MOVE R7 R0
0x7C180200, // 001C CALL R6 1
0x8C180D08, // 001D GETMET R6 R6 K8
0x5C200200, // 001E MOVE R8 R1
0x5C240400, // 001F MOVE R9 R2
0x7C180600, // 0020 CALL R6 3
0x80040C00, // 0021 RET 1 R6
0x80000000, // 0022 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: web_values
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_web_values, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(_X26lt_X3B_X2D_X2D_X20_X28),
/* K5 */ be_nested_str_weak(NAME),
/* K6 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x88140105, // 0005 GETMBR R5 R0 K5
0x00160805, // 0006 ADD R5 K4 R5
0x00140B06, // 0007 ADD R5 R5 K6
0x7C0C0400, // 0008 CALL R3 2
0x80000000, // 0009 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_http_response
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_HTTP_parse_http_response, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_const_int(0),
/* K1 */ be_nested_str_weak(http_remote),
/* K2 */ be_nested_str_weak(device_is_alive),
/* K3 */ be_nested_str_weak(device),
/* K4 */ be_nested_str_weak(tick),
/* K5 */ be_nested_str_weak(json),
/* K6 */ be_nested_str_weak(load),
/* K7 */ be_nested_str_weak(contains),
/* K8 */ be_nested_str_weak(StatusSNS),
/* K9 */ be_nested_str_weak(StatusSTS),
/* K10 */ be_nested_str_weak(StatusSHT),
/* K11 */ be_nested_str_weak(parse_update),
}),
be_str_weak(parse_http_response),
&be_const_str_solidified,
( &(const binstruction[39]) { /* code */
0x24100300, // 0000 GT R4 R1 K0
0x78120023, // 0001 JMPF R4 #0026
0x88100101, // 0002 GETMBR R4 R0 K1
0x8C100902, // 0003 GETMET R4 R4 K2
0x50180200, // 0004 LDBOOL R6 1 0
0x7C100400, // 0005 CALL R4 2
0x88100103, // 0006 GETMBR R4 R0 K3
0x88100904, // 0007 GETMBR R4 R4 K4
0xA4160A00, // 0008 IMPORT R5 K5
0x8C180B06, // 0009 GETMET R6 R5 K6
0x5C200400, // 000A MOVE R8 R2
0x7C180400, // 000B CALL R6 2
0x4C1C0000, // 000C LDNIL R7
0x781A0017, // 000D JMPF R6 #0026
0x8C200D07, // 000E GETMET R8 R6 K7
0x58280008, // 000F LDCONST R10 K8
0x7C200400, // 0010 CALL R8 2
0x78220002, // 0011 JMPF R8 #0015
0x94180D08, // 0012 GETIDX R6 R6 K8
0x541E0007, // 0013 LDINT R7 8
0x7002000C, // 0014 JMP #0022
0x8C200D07, // 0015 GETMET R8 R6 K7
0x58280009, // 0016 LDCONST R10 K9
0x7C200400, // 0017 CALL R8 2
0x78220002, // 0018 JMPF R8 #001C
0x94180D09, // 0019 GETIDX R6 R6 K9
0x541E000A, // 001A LDINT R7 11
0x70020005, // 001B JMP #0022
0x8C200D07, // 001C GETMET R8 R6 K7
0x5828000A, // 001D LDCONST R10 K10
0x7C200400, // 001E CALL R8 2
0x78220001, // 001F JMPF R8 #0022
0x94180D09, // 0020 GETIDX R6 R6 K9
0x541E000C, // 0021 LDINT R7 13
0x8C20010B, // 0022 GETMET R8 R0 K11
0x5C280C00, // 0023 MOVE R10 R6
0x5C2C0E00, // 0024 MOVE R11 R7
0x7C200600, // 0025 CALL R8 3
0x80000000, // 0026 RET 0
})
)
);
@ -550,32 +823,35 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Bridge_HTTP,
1,
&be_class_Matter_Plugin_Device,
be_nested_map(21,
be_nested_map(24,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_read_attribute_closure) },
{ be_const_key_weak(web_value_onoff, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_web_value_onoff_closure) },
{ be_const_key_weak(ARG_HTTP, 23), be_nested_str_weak(url) },
{ be_const_key_weak(register_cmd_cb, 11), be_const_closure(Matter_Plugin_Bridge_HTTP_register_cmd_cb_closure) },
{ be_const_key_weak(SYNC_TIMEOUT, -1), be_const_int(500) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_init_closure) },
{ be_const_key_weak(http_remote, -1), be_const_var(0) },
{ be_const_key_weak(GetOptionReader, 1), be_const_class(be_class_GetOptionReader) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak() },
{ be_const_key_weak(CLUSTERS, 21), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(0,
( (struct bmapnode*) &(const bmapnode[]) {
})) ) } )) },
{ be_const_key_weak(is_local_device, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_is_local_device_closure) },
{ be_const_key_weak(every_250ms, 12), be_const_closure(Matter_Plugin_Bridge_HTTP_every_250ms_closure) },
{ be_const_key_weak(PREFIX, -1), be_nested_str_weak(_X7C_X20_X3Ci_X3E_X25s_X3C_X2Fi_X3E_X20) },
{ be_const_key_weak(web_value_onoff, 7), be_const_closure(Matter_Plugin_Bridge_HTTP_web_value_onoff_closure) },
{ be_const_key_weak(parse_http_response, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_parse_http_response_closure) },
{ be_const_key_weak(init, 18), be_const_closure(Matter_Plugin_Bridge_HTTP_init_closure) },
{ be_const_key_weak(update_shadow, 3), be_const_closure(Matter_Plugin_Bridge_HTTP_update_shadow_closure) },
{ be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_every_250ms_closure) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) },
{ be_const_key_weak(TYPE, 4), be_nested_str_weak() },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_web_values_closure) },
{ be_const_key_weak(ARG_HTTP, 6), be_nested_str_weak(url) },
{ be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak() },
{ be_const_key_weak(NAME, 14), be_nested_str_weak() },
{ be_const_key_weak(call_remote_sync, 17), be_const_closure(Matter_Plugin_Bridge_HTTP_call_remote_sync_closure) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_parse_update_closure) },
{ be_const_key_weak(TYPE, 20), be_nested_str_weak() },
{ be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2011) },
{ be_const_key_weak(http_remote, -1), be_const_var(0) },
{ be_const_key_weak(register_cmd_cb, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_register_cmd_cb_closure) },
{ be_const_key_weak(ARG, 14), be_nested_str_weak() },
{ be_const_key_weak(is_local_device, 19), be_const_closure(Matter_Plugin_Bridge_HTTP_is_local_device_closure) },
{ be_const_key_weak(web_values_prefix, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_web_values_prefix_closure) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_read_attribute_closure) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_parse_update_closure) },
{ be_const_key_weak(update_shadow, 22), be_const_closure(Matter_Plugin_Bridge_HTTP_update_shadow_closure) },
{ be_const_key_weak(call_remote_sync, -1), be_const_closure(Matter_Plugin_Bridge_HTTP_call_remote_sync_closure) },
{ be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) },
})),
be_str_weak(Matter_Plugin_Bridge_HTTP)
);

View File

@ -7,168 +7,26 @@
extern const bclass be_class_Matter_Plugin_Bridge_Light0;
/********************************************************************
** Solidified function: init
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_init, /* name */
be_local_closure(Matter_Plugin_Bridge_Light0__X3Clambda_X3E, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(shadow_onoff),
/* K2 */ be_nested_str_weak(tasmota_relay_index),
/* K3 */ be_nested_str_weak(find),
/* K4 */ be_nested_str_weak(ARG),
/* K5 */ be_const_int(1),
/* K6 */ be_const_int(0),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x50100000, // 0008 LDBOOL R4 0 0
0x90020204, // 0009 SETMBR R0 K1 R4
0x60100009, // 000A GETGBL R4 G9
0x8C140703, // 000B GETMET R5 R3 K3
0x881C0104, // 000C GETMBR R7 R0 K4
0x58200005, // 000D LDCONST R8 K5
0x7C140600, // 000E CALL R5 3
0x7C100200, // 000F CALL R4 1
0x90020404, // 0010 SETMBR R0 K2 R4
0x88100102, // 0011 GETMBR R4 R0 K2
0x18100906, // 0012 LE R4 R4 K6
0x78120000, // 0013 JMPF R4 #0015
0x90020505, // 0014 SETMBR R0 K2 K5
0x80000000, // 0015 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_parse_update, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_relay_index),
/* K1 */ be_const_int(1),
/* K2 */ be_nested_str_weak(contains),
/* K3 */ be_nested_str_weak(POWER),
/* K4 */ be_nested_str_weak(find),
/* K5 */ be_nested_str_weak(ON),
/* K6 */ be_nested_str_weak(shadow_onoff),
/* K7 */ be_nested_str_weak(attribute_updated),
/* K8 */ be_const_int(0),
}),
be_str_weak(parse_update),
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
0x540E000A, // 0000 LDINT R3 11
0x1C0C0403, // 0001 EQ R3 R2 R3
0x780E0024, // 0002 JMPF R3 #0028
0x500C0000, // 0003 LDBOOL R3 0 0
0x88100100, // 0004 GETMBR R4 R0 K0
0x1C100901, // 0005 EQ R4 R4 K1
0x78120009, // 0006 JMPF R4 #0011
0x8C100302, // 0007 GETMET R4 R1 K2
0x58180003, // 0008 LDCONST R6 K3
0x7C100400, // 0009 CALL R4 2
0x78120005, // 000A JMPF R4 #0011
0x8C100304, // 000B GETMET R4 R1 K4
0x58180003, // 000C LDCONST R6 K3
0x7C100400, // 000D CALL R4 2
0x1C100905, // 000E EQ R4 R4 K5
0x5C0C0800, // 000F MOVE R3 R4
0x70020007, // 0010 JMP #0019
0x8C100304, // 0011 GETMET R4 R1 K4
0x60180008, // 0012 GETGBL R6 G8
0x881C0100, // 0013 GETMBR R7 R0 K0
0x7C180200, // 0014 CALL R6 1
0x001A0606, // 0015 ADD R6 K3 R6
0x7C100400, // 0016 CALL R4 2
0x1C100905, // 0017 EQ R4 R4 K5
0x5C0C0800, // 0018 MOVE R3 R4
0x88100106, // 0019 GETMBR R4 R0 K6
0x4C140000, // 001A LDNIL R5
0x20100805, // 001B NE R4 R4 R5
0x78120009, // 001C JMPF R4 #0027
0x88100106, // 001D GETMBR R4 R0 K6
0x60140017, // 001E GETGBL R5 G23
0x5C180600, // 001F MOVE R6 R3
0x7C140200, // 0020 CALL R5 1
0x20100805, // 0021 NE R4 R4 R5
0x78120003, // 0022 JMPF R4 #0027
0x8C100107, // 0023 GETMET R4 R0 K7
0x541A0005, // 0024 LDINT R6 6
0x581C0008, // 0025 LDCONST R7 K8
0x7C100600, // 0026 CALL R4 3
0x90020C03, // 0027 SETMBR R0 K6 R3
0x80000000, // 0028 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: web_values
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_web_values, /* name */
be_nested_proto(
11, /* nstack */
3, /* nstack */
1, /* argc */
2, /* varg */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20Light_X20_X25s),
/* K5 */ be_nested_str_weak(web_value_onoff),
/* K6 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(web_values),
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x88280106, // 0006 GETMBR R10 R0 K6
0x7C200400, // 0007 CALL R8 2
0x7C140600, // 0008 CALL R5 3
0x7C0C0400, // 0009 CALL R3 2
0x80000000, // 000A RET 0
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
@ -224,38 +82,11 @@ be_local_closure(Matter_Plugin_Bridge_Light0_set_onoff, /* name */
/********************************************************************
** Solidified function: <lambda>
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0__X3Clambda_X3E, /* name */
be_local_closure(Matter_Plugin_Bridge_Light0_init, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_invoke_request, /* name */
be_nested_proto(
10, /* nstack */
9, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
@ -263,57 +94,40 @@ be_local_closure(Matter_Plugin_Bridge_Light0_invoke_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(command),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(set_onoff),
/* K7 */ be_const_int(1),
/* K8 */ be_const_int(2),
/* K9 */ be_nested_str_weak(shadow_onoff),
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(shadow_onoff),
/* K2 */ be_nested_str_weak(tasmota_relay_index),
/* K3 */ be_nested_str_weak(find),
/* K4 */ be_nested_str_weak(ARG),
/* K5 */ be_const_int(1),
/* K6 */ be_const_int(0),
}),
be_str_weak(invoke_request),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[36]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
0x781E001B, // 0006 JMPF R7 #0023
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
0x781E0005, // 000A JMPF R7 #0011
0x8C1C0106, // 000B GETMET R7 R0 K6
0x50240000, // 000C LDBOOL R9 0 0
0x7C1C0400, // 000D CALL R7 2
0x501C0200, // 000E LDBOOL R7 1 0
0x80040E00, // 000F RET 1 R7
0x70020011, // 0010 JMP #0023
0x1C1C0D07, // 0011 EQ R7 R6 K7
0x781E0005, // 0012 JMPF R7 #0019
0x8C1C0106, // 0013 GETMET R7 R0 K6
0x50240200, // 0014 LDBOOL R9 1 0
0x7C1C0400, // 0015 CALL R7 2
0x501C0200, // 0016 LDBOOL R7 1 0
0x80040E00, // 0017 RET 1 R7
0x70020009, // 0018 JMP #0023
0x1C1C0D08, // 0019 EQ R7 R6 K8
0x781E0007, // 001A JMPF R7 #0023
0x8C1C0106, // 001B GETMET R7 R0 K6
0x88240109, // 001C GETMBR R9 R0 K9
0x78260000, // 001D JMPF R9 #001F
0x50240001, // 001E LDBOOL R9 0 1
0x50240200, // 001F LDBOOL R9 1 0
0x7C1C0400, // 0020 CALL R7 2
0x501C0200, // 0021 LDBOOL R7 1 0
0x80040E00, // 0022 RET 1 R7
0x80000000, // 0023 RET 0
( &(const binstruction[22]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x50100000, // 0008 LDBOOL R4 0 0
0x90020204, // 0009 SETMBR R0 K1 R4
0x60100009, // 000A GETGBL R4 G9
0x8C140703, // 000B GETMET R5 R3 K3
0x881C0104, // 000C GETMBR R7 R0 K4
0x58200005, // 000D LDCONST R8 K5
0x7C140600, // 000E CALL R5 3
0x7C100200, // 000F CALL R4 1
0x90020404, // 0010 SETMBR R0 K2 R4
0x88100102, // 0011 GETMBR R4 R0 K2
0x18100906, // 0012 LE R4 R4 K6
0x78120000, // 0013 JMPF R4 #0015
0x90020505, // 0014 SETMBR R0 K2 K5
0x80000000, // 0015 RET 0
})
)
);
@ -401,6 +215,252 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_parse_update, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_relay_index),
/* K1 */ be_const_int(1),
/* K2 */ be_nested_str_weak(contains),
/* K3 */ be_nested_str_weak(POWER),
/* K4 */ be_nested_str_weak(find),
/* K5 */ be_nested_str_weak(ON),
/* K6 */ be_nested_str_weak(shadow_onoff),
/* K7 */ be_nested_str_weak(attribute_updated),
/* K8 */ be_const_int(0),
}),
be_str_weak(parse_update),
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
0x540E000A, // 0000 LDINT R3 11
0x1C0C0403, // 0001 EQ R3 R2 R3
0x780E0024, // 0002 JMPF R3 #0028
0x500C0000, // 0003 LDBOOL R3 0 0
0x88100100, // 0004 GETMBR R4 R0 K0
0x1C100901, // 0005 EQ R4 R4 K1
0x78120009, // 0006 JMPF R4 #0011
0x8C100302, // 0007 GETMET R4 R1 K2
0x58180003, // 0008 LDCONST R6 K3
0x7C100400, // 0009 CALL R4 2
0x78120005, // 000A JMPF R4 #0011
0x8C100304, // 000B GETMET R4 R1 K4
0x58180003, // 000C LDCONST R6 K3
0x7C100400, // 000D CALL R4 2
0x1C100905, // 000E EQ R4 R4 K5
0x5C0C0800, // 000F MOVE R3 R4
0x70020007, // 0010 JMP #0019
0x8C100304, // 0011 GETMET R4 R1 K4
0x60180008, // 0012 GETGBL R6 G8
0x881C0100, // 0013 GETMBR R7 R0 K0
0x7C180200, // 0014 CALL R6 1
0x001A0606, // 0015 ADD R6 K3 R6
0x7C100400, // 0016 CALL R4 2
0x1C100905, // 0017 EQ R4 R4 K5
0x5C0C0800, // 0018 MOVE R3 R4
0x88100106, // 0019 GETMBR R4 R0 K6
0x4C140000, // 001A LDNIL R5
0x20100805, // 001B NE R4 R4 R5
0x78120009, // 001C JMPF R4 #0027
0x88100106, // 001D GETMBR R4 R0 K6
0x60140017, // 001E GETGBL R5 G23
0x5C180600, // 001F MOVE R6 R3
0x7C140200, // 0020 CALL R5 1
0x20100805, // 0021 NE R4 R4 R5
0x78120003, // 0022 JMPF R4 #0027
0x8C100107, // 0023 GETMET R4 R0 K7
0x541A0005, // 0024 LDINT R6 6
0x581C0008, // 0025 LDCONST R7 K8
0x7C100600, // 0026 CALL R4 3
0x90020C03, // 0027 SETMBR R0 K6 R3
0x80000000, // 0028 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_invoke_request, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(command),
/* K4 */ be_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(set_onoff),
/* K7 */ be_const_int(1),
/* K8 */ be_const_int(2),
/* K9 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[36]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
0x781E001B, // 0006 JMPF R7 #0023
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
0x781E0005, // 000A JMPF R7 #0011
0x8C1C0106, // 000B GETMET R7 R0 K6
0x50240000, // 000C LDBOOL R9 0 0
0x7C1C0400, // 000D CALL R7 2
0x501C0200, // 000E LDBOOL R7 1 0
0x80040E00, // 000F RET 1 R7
0x70020011, // 0010 JMP #0023
0x1C1C0D07, // 0011 EQ R7 R6 K7
0x781E0005, // 0012 JMPF R7 #0019
0x8C1C0106, // 0013 GETMET R7 R0 K6
0x50240200, // 0014 LDBOOL R9 1 0
0x7C1C0400, // 0015 CALL R7 2
0x501C0200, // 0016 LDBOOL R7 1 0
0x80040E00, // 0017 RET 1 R7
0x70020009, // 0018 JMP #0023
0x1C1C0D08, // 0019 EQ R7 R6 K8
0x781E0007, // 001A JMPF R7 #0023
0x8C1C0106, // 001B GETMET R7 R0 K6
0x88240109, // 001C GETMBR R9 R0 K9
0x78260000, // 001D JMPF R9 #001F
0x50240001, // 001E LDBOOL R9 0 1
0x50240200, // 001F LDBOOL R9 1 0
0x7C1C0400, // 0020 CALL R7 2
0x501C0200, // 0021 LDBOOL R7 1 0
0x80040E00, // 0022 RET 1 R7
0x80000000, // 0023 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: web_values
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_web_values, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X25s),
/* K6 */ be_nested_str_weak(web_value_onoff),
/* K7 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x8C200106, // 0007 GETMET R8 R0 K6
0x88280107, // 0008 GETMBR R10 R0 K7
0x7C200400, // 0009 CALL R8 2
0x7C140600, // 000A CALL R5 3
0x7C0C0400, // 000B CALL R3 2
0x80000000, // 000C RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: web_values_prefix
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Light0_web_values_prefix, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(get_name),
/* K3 */ be_nested_str_weak(Power),
/* K4 */ be_nested_str_weak(tasmota_relay_index),
/* K5 */ be_nested_str_weak(content_send),
/* K6 */ be_nested_str_weak(format),
/* K7 */ be_nested_str_weak(PREFIX),
/* K8 */ be_nested_str_weak(html_escape),
/* K9 */ be_nested_str_weak(),
}),
be_str_weak(web_values_prefix),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x5C100600, // 0004 MOVE R4 R3
0x74120004, // 0005 JMPT R4 #000B
0x60100008, // 0006 GETGBL R4 G8
0x88140104, // 0007 GETMBR R5 R0 K4
0x7C100200, // 0008 CALL R4 1
0x00120604, // 0009 ADD R4 K3 R4
0x5C0C0800, // 000A MOVE R3 R4
0x8C100305, // 000B GETMET R4 R1 K5
0x8C180506, // 000C GETMET R6 R2 K6
0x88200107, // 000D GETMBR R8 R0 K7
0x780E0003, // 000E JMPF R3 #0013
0x8C240308, // 000F GETMET R9 R1 K8
0x5C2C0600, // 0010 MOVE R11 R3
0x7C240400, // 0011 CALL R9 2
0x70020000, // 0012 JMP #0014
0x58240009, // 0013 LDCONST R9 K9
0x7C180600, // 0014 CALL R6 3
0x7C100400, // 0015 CALL R4 2
0x80000000, // 0016 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin_Bridge_Light0
********************************************************************/
@ -408,27 +468,18 @@ extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
be_local_class(Matter_Plugin_Bridge_Light0,
2,
&be_class_Matter_Plugin_Bridge_HTTP,
be_nested_map(15,
be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(init, 11), be_const_closure(Matter_Plugin_Bridge_Light0_init_closure) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Light0_parse_update_closure) },
{ be_const_key_weak(web_values, 10), be_const_closure(Matter_Plugin_Bridge_Light0_web_values_closure) },
{ be_const_key_weak(ARG_TYPE, 5), be_const_static_closure(Matter_Plugin_Bridge_Light0__X3Clambda_X3E_closure) },
{ be_const_key_weak(tasmota_relay_index, 4), be_const_var(0) },
{ be_const_key_weak(set_onoff, -1), be_const_closure(Matter_Plugin_Bridge_Light0_set_onoff_closure) },
{ be_const_key_weak(ARG_TYPE, 8), be_const_static_closure(Matter_Plugin_Bridge_Light0__X3Clambda_X3E_closure) },
{ be_const_key_weak(tasmota_relay_index, 7), be_const_var(0) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Light0_init_closure) },
{ be_const_key_weak(web_values_prefix, 12), be_const_closure(Matter_Plugin_Bridge_Light0_web_values_prefix_closure) },
{ be_const_key_weak(web_values, 14), be_const_closure(Matter_Plugin_Bridge_Light0_web_values_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Light_X200_X20On) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(256, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(TYPE, 14), be_nested_str_weak(http_light0) },
{ be_const_key_weak(NAME, 6), be_nested_str_weak(Light_X200_X20On) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Bridge_Light0_invoke_request_closure) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Power_X3Cx_X3E_X20number) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_Light0_read_attribute_closure) },
{ be_const_key_weak(shadow_onoff, -1), be_const_var(1) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Light0_parse_update_closure) },
{ be_const_key_weak(CLUSTERS, 15), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@ -438,6 +489,16 @@ be_local_class(Matter_Plugin_Bridge_Light0,
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(read_attribute, 9), be_const_closure(Matter_Plugin_Bridge_Light0_read_attribute_closure) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Bridge_Light0_invoke_request_closure) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Power_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light0) },
{ be_const_key_weak(shadow_onoff, -1), be_const_var(1) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(256, -1), be_const_int(2) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Bridge_Light0)

View File

@ -286,32 +286,35 @@ be_local_closure(Matter_Plugin_Bridge_Light1_web_values, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20Light_X20_X25s_X20_X25s),
/* K5 */ be_nested_str_weak(web_value_onoff),
/* K6 */ be_nested_str_weak(shadow_onoff),
/* K7 */ be_nested_str_weak(web_value_dimmer),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X25s_X20_X25s),
/* K6 */ be_nested_str_weak(web_value_onoff),
/* K7 */ be_nested_str_weak(shadow_onoff),
/* K8 */ be_nested_str_weak(web_value_dimmer),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
( &(const binstruction[15]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x88280106, // 0006 GETMBR R10 R0 K6
0x7C200400, // 0007 CALL R8 2
0x8C240107, // 0008 GETMET R9 R0 K7
0x7C240200, // 0009 CALL R9 1
0x7C140800, // 000A CALL R5 4
0x7C0C0400, // 000B CALL R3 2
0x80000000, // 000C RET 0
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x8C200106, // 0007 GETMET R8 R0 K6
0x88280107, // 0008 GETMBR R10 R0 K7
0x7C200400, // 0009 CALL R8 2
0x8C240108, // 000A GETMET R9 R0 K8
0x7C240200, // 000B CALL R9 1
0x7C140800, // 000C CALL R5 4
0x7C0C0400, // 000D CALL R3 2
0x80000000, // 000E RET 0
})
)
);

View File

@ -122,35 +122,38 @@ be_local_closure(Matter_Plugin_Bridge_Light2_web_values, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20Light_X20_X25s_X20_X25s_X20_X25s),
/* K5 */ be_nested_str_weak(web_value_onoff),
/* K6 */ be_nested_str_weak(shadow_onoff),
/* K7 */ be_nested_str_weak(web_value_dimmer),
/* K8 */ be_nested_str_weak(web_value_ct),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s),
/* K6 */ be_nested_str_weak(web_value_onoff),
/* K7 */ be_nested_str_weak(shadow_onoff),
/* K8 */ be_nested_str_weak(web_value_dimmer),
/* K9 */ be_nested_str_weak(web_value_ct),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
( &(const binstruction[17]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x88280106, // 0006 GETMBR R10 R0 K6
0x7C200400, // 0007 CALL R8 2
0x8C240107, // 0008 GETMET R9 R0 K7
0x7C240200, // 0009 CALL R9 1
0x8C280108, // 000A GETMET R10 R0 K8
0x7C280200, // 000B CALL R10 1
0x7C140A00, // 000C CALL R5 5
0x7C0C0400, // 000D CALL R3 2
0x80000000, // 000E RET 0
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x8C200106, // 0007 GETMET R8 R0 K6
0x88280107, // 0008 GETMBR R10 R0 K7
0x7C200400, // 0009 CALL R8 2
0x8C240108, // 000A GETMET R9 R0 K8
0x7C240200, // 000B CALL R9 1
0x8C280109, // 000C GETMET R10 R0 K9
0x7C280200, // 000D CALL R10 1
0x7C140A00, // 000E CALL R5 5
0x7C0C0400, // 000F CALL R3 2
0x80000000, // 0010 RET 0
})
)
);

View File

@ -176,35 +176,38 @@ be_local_closure(Matter_Plugin_Bridge_Light3_web_values, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20Light_X20_X25s_X20_X25s_X20_X25s),
/* K5 */ be_nested_str_weak(web_value_onoff),
/* K6 */ be_nested_str_weak(shadow_onoff),
/* K7 */ be_nested_str_weak(web_value_dimmer),
/* K8 */ be_nested_str_weak(web_value_RGB),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s),
/* K6 */ be_nested_str_weak(web_value_onoff),
/* K7 */ be_nested_str_weak(shadow_onoff),
/* K8 */ be_nested_str_weak(web_value_dimmer),
/* K9 */ be_nested_str_weak(web_value_RGB),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
( &(const binstruction[17]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x88280106, // 0006 GETMBR R10 R0 K6
0x7C200400, // 0007 CALL R8 2
0x8C240107, // 0008 GETMET R9 R0 K7
0x7C240200, // 0009 CALL R9 1
0x8C280108, // 000A GETMET R10 R0 K8
0x7C280200, // 000B CALL R10 1
0x7C140A00, // 000C CALL R5 5
0x7C0C0400, // 000D CALL R3 2
0x80000000, // 000E RET 0
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x8C200106, // 0007 GETMET R8 R0 K6
0x88280107, // 0008 GETMBR R10 R0 K7
0x7C200400, // 0009 CALL R8 2
0x8C240108, // 000A GETMET R9 R0 K8
0x7C240200, // 000B CALL R9 1
0x8C280109, // 000C GETMET R10 R0 K9
0x7C280200, // 000D CALL R10 1
0x7C140A00, // 000E CALL R5 5
0x7C0C0400, // 000F CALL R3 2
0x80000000, // 0010 RET 0
})
)
);

View File

@ -19,31 +19,34 @@ be_local_closure(Matter_Plugin_Bridge_OnOff_web_values, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20Relay_X20_X25i_X20_X25s),
/* K5 */ be_nested_str_weak(tasmota_relay_index),
/* K6 */ be_nested_str_weak(web_value_onoff),
/* K7 */ be_nested_str_weak(shadow_onoff),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(Relay_X20_X25i_X20_X25s),
/* K6 */ be_nested_str_weak(tasmota_relay_index),
/* K7 */ be_nested_str_weak(web_value_onoff),
/* K8 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
( &(const binstruction[14]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x88200105, // 0005 GETMBR R8 R0 K5
0x8C240106, // 0006 GETMET R9 R0 K6
0x882C0107, // 0007 GETMBR R11 R0 K7
0x7C240400, // 0008 CALL R9 2
0x7C140800, // 0009 CALL R5 4
0x7C0C0400, // 000A CALL R3 2
0x80000000, // 000B RET 0
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x88200106, // 0007 GETMBR R8 R0 K6
0x8C240107, // 0008 GETMET R9 R0 K7
0x882C0108, // 0009 GETMBR R11 R0 K8
0x7C240400, // 000A CALL R9 2
0x7C140800, // 000B CALL R5 4
0x7C0C0400, // 000C CALL R3 2
0x80000000, // 000D RET 0
})
)
);

View File

@ -6,6 +6,152 @@
extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
/********************************************************************
** Solidified function: web_values_prefix
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_web_values_prefix, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(get_name),
/* K3 */ be_nested_str_weak(filter_name_html),
/* K4 */ be_nested_str_weak(content_send),
/* K5 */ be_nested_str_weak(format),
/* K6 */ be_nested_str_weak(PREFIX),
/* K7 */ be_nested_str_weak(html_escape),
/* K8 */ be_nested_str_weak(),
}),
be_str_weak(web_values_prefix),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x5C100600, // 0004 MOVE R4 R3
0x74120002, // 0005 JMPT R4 #0009
0x8C100103, // 0006 GETMET R4 R0 K3
0x7C100200, // 0007 CALL R4 1
0x5C0C0800, // 0008 MOVE R3 R4
0x8C100304, // 0009 GETMET R4 R1 K4
0x8C180505, // 000A GETMET R6 R2 K5
0x88200106, // 000B GETMBR R8 R0 K6
0x780E0003, // 000C JMPF R3 #0011
0x8C240307, // 000D GETMET R9 R1 K7
0x5C2C0600, // 000E MOVE R11 R3
0x7C240400, // 000F CALL R9 2
0x70020000, // 0010 JMP #0012
0x58240008, // 0011 LDCONST R9 K8
0x7C180600, // 0012 CALL R6 3
0x7C100400, // 0013 CALL R4 2
0x80000000, // 0014 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(Rule_Matcher),
/* K6 */ be_nested_str_weak(parse),
}),
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x780A0005, // 0005 JMPF R2 #000C
0xB80A0800, // 0006 GETNGBL R2 K4
0x88080505, // 0007 GETMBR R2 R2 K5
0x8C080506, // 0008 GETMET R2 R2 K6
0x88100100, // 0009 GETMBR R4 R0 K0
0x7C080400, // 000A CALL R2 2
0x90020602, // 000B SETMBR R0 K3 R2
0x80000000, // 000C RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: value_changed
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_value_changed, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80000000, // 0000 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: pre_value
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_pre_value, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80040200, // 0000 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
@ -104,98 +250,6 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_filter_name_html, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: value_changed
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_value_changed, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80000000, // 0000 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: pre_value
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_pre_value, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80040200, // 0000 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(Rule_Matcher),
/* K6 */ be_nested_str_weak(parse),
}),
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x780A0005, // 0005 JMPF R2 #000C
0xB80A0800, // 0006 GETNGBL R2 K4
0x88080505, // 0007 GETMBR R2 R2 K5
0x8C080506, // 0008 GETMET R2 R2 K6
0x88100100, // 0009 GETMBR R4 R0 K0
0x7C080400, // 000A CALL R2 2
0x90020602, // 000B SETMBR R0 K3 R2
0x80000000, // 000C RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin_Bridge_Sensor
********************************************************************/
@ -203,22 +257,23 @@ extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
be_local_class(Matter_Plugin_Bridge_Sensor,
3,
&be_class_Matter_Plugin_Bridge_HTTP,
be_nested_map(14,
be_nested_map(15,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(filter) },
{ be_const_key_weak(parse_update, 10), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_update_closure) },
{ be_const_key_weak(filter_name_html, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_filter_name_html_closure) },
{ be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) },
{ be_const_key_weak(value_changed, 0), be_const_closure(Matter_Plugin_Bridge_Sensor_value_changed_closure) },
{ be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_configuration_closure) },
{ be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_pre_value_closure) },
{ be_const_key_weak(ARG_HINT, 7), be_nested_str_weak(Enter_X20Filter_X20pattern) },
{ be_const_key_weak(tasmota_sensor_filter, 10), be_const_var(0) },
{ be_const_key_weak(web_values_prefix, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_web_values_prefix_closure) },
{ be_const_key_weak(shadow_value, -1), be_const_var(2) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_configuration_closure) },
{ be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(shadow_value, 9), be_const_var(2) },
{ be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(filter) },
{ be_const_key_weak(UPDATE_CMD, 8), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(parse_update, 12), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_update_closure) },
{ be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_pre_value_closure) },
{ be_const_key_weak(value_changed, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_value_changed_closure) },
{ be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) },
{ be_const_key_weak(filter_name_html, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_filter_name_html_closure) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor)
);

View File

@ -6,6 +6,140 @@
extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_init, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(tasmota_switch_index),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(ARG),
/* K4 */ be_const_int(1),
/* K5 */ be_const_int(0),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x60100009, // 0008 GETGBL R4 G9
0x8C140702, // 0009 GETMET R5 R3 K2
0x881C0103, // 000A GETMBR R7 R0 K3
0x58200004, // 000B LDCONST R8 K4
0x7C140600, // 000C CALL R5 3
0x7C100200, // 000D CALL R4 1
0x90020204, // 000E SETMBR R0 K1 R4
0x88100101, // 000F GETMBR R4 R0 K1
0x18100905, // 0010 LE R4 R4 K5
0x78120000, // 0011 JMPF R4 #0013
0x90020304, // 0012 SETMBR R0 K1 K4
0x80000000, // 0013 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: web_values_prefix
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_web_values_prefix, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(get_name),
/* K3 */ be_nested_str_weak(Switch),
/* K4 */ be_nested_str_weak(tasmota_switch_index),
/* K5 */ be_nested_str_weak(content_send),
/* K6 */ be_nested_str_weak(format),
/* K7 */ be_nested_str_weak(PREFIX),
/* K8 */ be_nested_str_weak(html_escape),
/* K9 */ be_nested_str_weak(),
}),
be_str_weak(web_values_prefix),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x5C100600, // 0004 MOVE R4 R3
0x74120004, // 0005 JMPT R4 #000B
0x60100008, // 0006 GETGBL R4 G8
0x88140104, // 0007 GETMBR R5 R0 K4
0x7C100200, // 0008 CALL R4 1
0x00120604, // 0009 ADD R4 K3 R4
0x5C0C0800, // 000A MOVE R3 R4
0x8C100305, // 000B GETMET R4 R1 K5
0x8C180506, // 000C GETMET R6 R2 K6
0x88200107, // 000D GETMBR R8 R0 K7
0x780E0003, // 000E JMPF R3 #0013
0x8C240308, // 000F GETMET R9 R1 K8
0x5C2C0600, // 0010 MOVE R11 R3
0x7C240400, // 0011 CALL R9 2
0x70020000, // 0012 JMP #0014
0x58240009, // 0013 LDCONST R9 K9
0x7C180600, // 0014 CALL R6 3
0x7C100400, // 0015 CALL R4 2
0x80000000, // 0016 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
@ -65,77 +199,6 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_parse_update, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: web_values
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_web_values, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20Contact_X25i_X20_X25s),
/* K5 */ be_nested_str_weak(tasmota_switch_index),
/* K6 */ be_nested_str_weak(web_value_onoff),
/* K7 */ be_nested_str_weak(shadow_contact),
}),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x88200105, // 0005 GETMBR R8 R0 K5
0x8C240106, // 0006 GETMET R9 R0 K6
0x882C0107, // 0007 GETMBR R11 R0 K7
0x7C240400, // 0008 CALL R9 2
0x7C140800, // 0009 CALL R5 4
0x7C0C0400, // 000A CALL R3 2
0x80000000, // 000B RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
@ -227,49 +290,46 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
/********************************************************************
** Solidified function: init
** Solidified function: web_values
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_init, /* name */
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_web_values, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(tasmota_switch_index),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(ARG),
/* K4 */ be_const_int(1),
/* K5 */ be_const_int(0),
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(Contact_X25i_X20_X25s),
/* K6 */ be_nested_str_weak(tasmota_switch_index),
/* K7 */ be_nested_str_weak(web_value_onoff),
/* K8 */ be_nested_str_weak(shadow_contact),
}),
be_str_weak(init),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x60100009, // 0008 GETGBL R4 G9
0x8C140702, // 0009 GETMET R5 R3 K2
0x881C0103, // 000A GETMBR R7 R0 K3
0x58200004, // 000B LDCONST R8 K4
0x7C140600, // 000C CALL R5 3
0x7C100200, // 000D CALL R4 1
0x90020204, // 000E SETMBR R0 K1 R4
0x88100101, // 000F GETMBR R4 R0 K1
0x18100905, // 0010 LE R4 R4 K5
0x78120000, // 0011 JMPF R4 #0013
0x90020304, // 0012 SETMBR R0 K1 K4
0x80000000, // 0013 RET 0
( &(const binstruction[14]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x88200106, // 0007 GETMBR R8 R0 K6
0x8C240107, // 0008 GETMET R9 R0 K7
0x882C0108, // 0009 GETMBR R11 R0 K8
0x7C240400, // 000A CALL R9 2
0x7C140800, // 000B CALL R5 4
0x7C0C0400, // 000C CALL R3 2
0x80000000, // 000D RET 0
})
)
);
@ -283,27 +343,19 @@ extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
2,
&be_class_Matter_Plugin_Bridge_HTTP,
be_nested_map(15,
be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG_HINT, 3), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_parse_update_closure) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_web_values_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_init_closure) },
{ be_const_key_weak(ARG_TYPE, 10), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(21, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Contact) },
{ be_const_key_weak(UPDATE_CMD, 11), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(TYPE, 14), be_nested_str_weak(http_contact) },
{ be_const_key_weak(ARG, 8), be_nested_str_weak(switch) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute_closure) },
{ be_const_key_weak(ARG_TYPE, 5), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E_closure) },
{ be_const_key_weak(ARG_HINT, 4), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(shadow_contact, -1), be_const_var(1) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_init_closure) },
{ be_const_key_weak(web_values_prefix, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_web_values_prefix_closure) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_web_values_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Contact) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
{ be_const_key_weak(UPDATE_TIME, 14), be_const_int(5000) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(69, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@ -314,6 +366,15 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(21, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(tasmota_switch_index, 9), be_const_var(0) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_contact) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Contact_parse_update_closure) },
{ be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor_Contact)
);

View File

@ -185,7 +185,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_value_changed, /* name *
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_web_values, /* name */
be_nested_proto(
11, /* nstack */
10, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@ -196,10 +196,10 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_web_values, /* name */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20_X25s_X20_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25),
/* K5 */ be_nested_str_weak(filter_name_html),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25),
/* K6 */ be_nested_str_weak(shadow_value),
}),
be_str_weak(web_values),
@ -207,23 +207,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_web_values, /* name */
( &(const binstruction[21]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x7C200200, // 0006 CALL R8 1
0x88240106, // 0007 GETMBR R9 R0 K6
0x4C280000, // 0008 LDNIL R10
0x2024120A, // 0009 NE R9 R9 R10
0x78260005, // 000A JMPF R9 #0011
0x6024000A, // 000B GETGBL R9 G10
0x88280106, // 000C GETMBR R10 R0 K6
0x7C240200, // 000D CALL R9 1
0x542A0063, // 000E LDINT R10 100
0x0C24120A, // 000F DIV R9 R9 R10
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x88200106, // 0007 GETMBR R8 R0 K6
0x4C240000, // 0008 LDNIL R9
0x20201009, // 0009 NE R8 R8 R9
0x78220005, // 000A JMPF R8 #0011
0x6020000A, // 000B GETGBL R8 G10
0x88240106, // 000C GETMBR R9 R0 K6
0x7C200200, // 000D CALL R8 1
0x54260063, // 000E LDINT R9 100
0x0C201009, // 000F DIV R8 R8 R9
0x70020000, // 0010 JMP #0012
0x4C240000, // 0011 LDNIL R9
0x7C140800, // 0012 CALL R5 4
0x4C200000, // 0011 LDNIL R8
0x7C140600, // 0012 CALL R5 3
0x7C0C0400, // 0013 CALL R3 2
0x80000000, // 0014 RET 0
})

View File

@ -197,7 +197,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_value_changed, /* nam
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_web_values, /* name */
be_nested_proto(
11, /* nstack */
10, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@ -208,10 +208,10 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_web_values, /* name *
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20_X25s_X20_X26_X23128261_X3B_X20_X25ilux),
/* K5 */ be_nested_str_weak(filter_name_html),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25ilux),
/* K6 */ be_nested_str_weak(shadow_value),
}),
be_str_weak(web_values),
@ -219,15 +219,15 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_web_values, /* name *
( &(const binstruction[13]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x7C200200, // 0006 CALL R8 1
0x60240009, // 0007 GETGBL R9 G9
0x88280106, // 0008 GETMBR R10 R0 K6
0x7C240200, // 0009 CALL R9 1
0x7C140800, // 000A CALL R5 4
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x60200009, // 0007 GETGBL R8 G9
0x88240106, // 0008 GETMBR R9 R0 K6
0x7C200200, // 0009 CALL R8 1
0x7C140600, // 000A CALL R5 3
0x7C0C0400, // 000B CALL R3 2
0x80000000, // 000C RET 0
})

View File

@ -6,6 +6,83 @@
extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(tasmota_switch_index),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(ARG),
/* K4 */ be_const_int(1),
/* K5 */ be_const_int(0),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x60100009, // 0008 GETGBL R4 G9
0x8C140702, // 0009 GETMET R5 R3 K2
0x881C0103, // 000A GETMBR R7 R0 K3
0x58200004, // 000B LDCONST R8 K4
0x7C140600, // 000C CALL R5 3
0x7C100200, // 000D CALL R4 1
0x90020204, // 000E SETMBR R0 K1 R4
0x88100101, // 000F GETMBR R4 R0 K1
0x18100905, // 0010 LE R4 R4 K5
0x78120000, // 0011 JMPF R4 #0013
0x90020304, // 0012 SETMBR R0 K1 K4
0x80000000, // 0013 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
@ -66,9 +143,9 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update, /* name *
/********************************************************************
** Solidified function: web_values
** Solidified function: web_values_prefix
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values, /* name */
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
@ -78,58 +155,44 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20Occupancy_X25i_X20_X25s),
/* K5 */ be_nested_str_weak(tasmota_switch_index),
/* K6 */ be_nested_str_weak(web_value_onoff),
/* K7 */ be_nested_str_weak(shadow_occupancy),
/* K2 */ be_nested_str_weak(get_name),
/* K3 */ be_nested_str_weak(Switch),
/* K4 */ be_nested_str_weak(tasmota_switch_index),
/* K5 */ be_nested_str_weak(content_send),
/* K6 */ be_nested_str_weak(format),
/* K7 */ be_nested_str_weak(PREFIX),
/* K8 */ be_nested_str_weak(html_escape),
/* K9 */ be_nested_str_weak(),
}),
be_str_weak(web_values),
be_str_weak(web_values_prefix),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
( &(const binstruction[23]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x88200105, // 0005 GETMBR R8 R0 K5
0x8C240106, // 0006 GETMET R9 R0 K6
0x882C0107, // 0007 GETMBR R11 R0 K7
0x7C240400, // 0008 CALL R9 2
0x7C140800, // 0009 CALL R5 4
0x7C0C0400, // 000A CALL R3 2
0x80000000, // 000B RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x5C100600, // 0004 MOVE R4 R3
0x74120004, // 0005 JMPT R4 #000B
0x60100008, // 0006 GETGBL R4 G8
0x88140104, // 0007 GETMBR R5 R0 K4
0x7C100200, // 0008 CALL R4 1
0x00120604, // 0009 ADD R4 K3 R4
0x5C0C0800, // 000A MOVE R3 R4
0x8C100305, // 000B GETMET R4 R1 K5
0x8C180506, // 000C GETMET R6 R2 K6
0x88200107, // 000D GETMBR R8 R0 K7
0x780E0003, // 000E JMPF R3 #0013
0x8C240308, // 000F GETMET R9 R1 K8
0x5C2C0600, // 0010 MOVE R11 R3
0x7C240400, // 0011 CALL R9 2
0x70020000, // 0012 JMP #0014
0x58240009, // 0013 LDCONST R9 K9
0x7C180600, // 0014 CALL R6 3
0x7C100400, // 0015 CALL R4 2
0x80000000, // 0016 RET 0
})
)
);
@ -245,49 +308,46 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
/********************************************************************
** Solidified function: init
** Solidified function: web_values
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init, /* name */
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(tasmota_switch_index),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(ARG),
/* K4 */ be_const_int(1),
/* K5 */ be_const_int(0),
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(Occupancy_X25i_X20_X25s),
/* K6 */ be_nested_str_weak(tasmota_switch_index),
/* K7 */ be_nested_str_weak(web_value_onoff),
/* K8 */ be_nested_str_weak(shadow_occupancy),
}),
be_str_weak(init),
be_str_weak(web_values),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x60100009, // 0008 GETGBL R4 G9
0x8C140702, // 0009 GETMET R5 R3 K2
0x881C0103, // 000A GETMBR R7 R0 K3
0x58200004, // 000B LDCONST R8 K4
0x7C140600, // 000C CALL R5 3
0x7C100200, // 000D CALL R4 1
0x90020204, // 000E SETMBR R0 K1 R4
0x88100101, // 000F GETMBR R4 R0 K1
0x18100905, // 0010 LE R4 R4 K5
0x78120000, // 0011 JMPF R4 #0013
0x90020304, // 0012 SETMBR R0 K1 K4
0x80000000, // 0013 RET 0
( &(const binstruction[14]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x88200106, // 0007 GETMBR R8 R0 K6
0x8C240107, // 0008 GETMET R9 R0 K7
0x882C0108, // 0009 GETMBR R11 R0 K8
0x7C240400, // 000A CALL R9 2
0x7C140800, // 000B CALL R5 4
0x7C0C0400, // 000C CALL R3 2
0x80000000, // 000D RET 0
})
)
);
@ -301,24 +361,18 @@ extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
2,
&be_class_Matter_Plugin_Bridge_HTTP,
be_nested_map(15,
be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG_HINT, 3), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) },
{ be_const_key_weak(ARG_TYPE, 11), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(263, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
{ be_const_key_weak(ARG, 13), be_nested_str_weak(switch) },
{ be_const_key_weak(UPDATE_CMD, 8), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) },
{ be_const_key_weak(ARG_HINT, 14), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
{ be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_closure) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Occupancy) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
{ be_const_key_weak(parse_update, 5), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) },
{ be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(1030, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@ -331,9 +385,16 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Occupancy) },
{ be_const_key_weak(tasmota_switch_index, 9), be_const_var(0) },
{ be_const_key_weak(read_attribute, 12), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(263, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_occupancy) },
{ be_const_key_weak(web_values_prefix, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix_closure) },
{ be_const_key_weak(UPDATE_CMD, 2), be_nested_str_weak(Status_X208) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor_Occupancy)
);

View File

@ -184,7 +184,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_value_changed, /* name *
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_web_values, /* name */
be_nested_proto(
11, /* nstack */
10, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@ -195,10 +195,10 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_web_values, /* name */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20_X25s_X20_X26_X23x26C5_X3B_X20_X25i_X20hPa),
/* K5 */ be_nested_str_weak(filter_name_html),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20hPa),
/* K6 */ be_nested_str_weak(shadow_value),
}),
be_str_weak(web_values),
@ -206,15 +206,15 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_web_values, /* name */
( &(const binstruction[13]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x7C200200, // 0006 CALL R8 1
0x60240009, // 0007 GETGBL R9 G9
0x88280106, // 0008 GETMBR R10 R0 K6
0x7C240200, // 0009 CALL R9 1
0x7C140800, // 000A CALL R5 4
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x60200009, // 0007 GETGBL R8 G9
0x88240106, // 0008 GETMBR R9 R0 K6
0x7C200200, // 0009 CALL R8 1
0x7C140600, // 000A CALL R5 3
0x7C0C0400, // 000B CALL R3 2
0x80000000, // 000C RET 0
})

View File

@ -182,7 +182,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_value_changed, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_web_values, /* name */
be_nested_proto(
11, /* nstack */
10, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@ -193,10 +193,10 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_web_values, /* name */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(content_send),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(_X7C_X20_X25s_X20_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C),
/* K5 */ be_nested_str_weak(filter_name_html),
/* K2 */ be_nested_str_weak(web_values_prefix),
/* K3 */ be_nested_str_weak(content_send),
/* K4 */ be_nested_str_weak(format),
/* K5 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C),
/* K6 */ be_nested_str_weak(shadow_value),
}),
be_str_weak(web_values),
@ -204,23 +204,23 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_web_values, /* name */
( &(const binstruction[21]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x8C140503, // 0003 GETMET R5 R2 K3
0x581C0004, // 0004 LDCONST R7 K4
0x8C200105, // 0005 GETMET R8 R0 K5
0x7C200200, // 0006 CALL R8 1
0x88240106, // 0007 GETMBR R9 R0 K6
0x4C280000, // 0008 LDNIL R10
0x2024120A, // 0009 NE R9 R9 R10
0x78260005, // 000A JMPF R9 #0011
0x6024000A, // 000B GETGBL R9 G10
0x88280106, // 000C GETMBR R10 R0 K6
0x7C240200, // 000D CALL R9 1
0x542A0063, // 000E LDINT R10 100
0x0C24120A, // 000F DIV R9 R9 R10
0x8C0C0102, // 0002 GETMET R3 R0 K2
0x7C0C0200, // 0003 CALL R3 1
0x8C0C0303, // 0004 GETMET R3 R1 K3
0x8C140504, // 0005 GETMET R5 R2 K4
0x581C0005, // 0006 LDCONST R7 K5
0x88200106, // 0007 GETMBR R8 R0 K6
0x4C240000, // 0008 LDNIL R9
0x20201009, // 0009 NE R8 R8 R9
0x78220005, // 000A JMPF R8 #0011
0x6020000A, // 000B GETGBL R8 G10
0x88240106, // 000C GETMBR R9 R0 K6
0x7C200200, // 000D CALL R8 1
0x54260063, // 000E LDINT R9 100
0x0C201009, // 000F DIV R8 R8 R9
0x70020000, // 0010 JMP #0012
0x4C240000, // 0011 LDNIL R9
0x7C140800, // 0012 CALL R5 4
0x4C200000, // 0011 LDNIL R8
0x7C140600, // 0012 CALL R5 3
0x7C0C0400, // 0013 CALL R3 2
0x80000000, // 0014 RET 0
})

View File

@ -6,6 +6,111 @@
extern const bclass be_class_Matter_Plugin_Device;
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_Device_init, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(node_label),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(name),
/* K3 */ be_nested_str_weak(),
/* K4 */ be_nested_str_weak(init),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
0x8C100701, // 0000 GETMET R4 R3 K1
0x58180002, // 0001 LDCONST R6 K2
0x581C0003, // 0002 LDCONST R7 K3
0x7C100600, // 0003 CALL R4 3
0x90020004, // 0004 SETMBR R0 K0 R4
0x60100003, // 0005 GETGBL R4 G3
0x5C140000, // 0006 MOVE R5 R0
0x7C100200, // 0007 CALL R4 1
0x8C100904, // 0008 GETMET R4 R4 K4
0x5C180200, // 0009 MOVE R6 R1
0x5C1C0400, // 000A MOVE R7 R2
0x5C200600, // 000B MOVE R8 R3
0x7C100800, // 000C CALL R4 4
0x80000000, // 000D RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: set_name
********************************************************************/
be_local_closure(Matter_Plugin_Device_set_name, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(node_label),
/* K1 */ be_nested_str_weak(attribute_updated),
}),
be_str_weak(set_name),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x20080202, // 0001 NE R2 R1 R2
0x780A0003, // 0002 JMPF R2 #0007
0x8C080101, // 0003 GETMET R2 R0 K1
0x54120038, // 0004 LDINT R4 57
0x54160004, // 0005 LDINT R5 5
0x7C080600, // 0006 CALL R2 3
0x90020001, // 0007 SETMBR R0 K0 R1
0x80000000, // 0008 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: get_name
********************************************************************/
be_local_closure(Matter_Plugin_Device_get_name, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(node_label),
}),
be_str_weak(get_name),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x80040200, // 0001 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
@ -105,7 +210,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[22]) { /* constants */
( &(const bvalue[24]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
@ -128,10 +233,12 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
/* K19 */ be_nested_str_weak(find),
/* K20 */ be_nested_str_weak(get_admin_vendor),
/* K21 */ be_nested_str_weak(read_attribute),
/* K22 */ be_nested_str_weak(UTF1),
/* K23 */ be_nested_str_weak(get_name),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[159]) { /* code */
( &(const binstruction[181]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x88100902, // 0002 GETMBR R4 R4 K2
@ -172,7 +279,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x542A0003, // 0025 LDINT R10 4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
0x70020074, // 0028 JMP #009E
0x7002008A, // 0028 JMP #00B4
0x541E0003, // 0029 LDINT R7 4
0x1C1C0A07, // 002A EQ R7 R5 R7
0x781E0016, // 002B JMPF R7 #0043
@ -198,7 +305,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x542A0003, // 003F LDINT R10 4
0x7C1C0600, // 0040 CALL R7 3
0x80040E00, // 0041 RET 1 R7
0x7002005A, // 0042 JMP #009E
0x70020070, // 0042 JMP #00B4
0x541E0004, // 0043 LDINT R7 5
0x1C1C0A07, // 0044 EQ R7 R5 R7
0x781E0011, // 0045 JMPF R7 #0058
@ -219,7 +326,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x542A0003, // 0054 LDINT R10 4
0x7C1C0600, // 0055 CALL R7 3
0x80040E00, // 0056 RET 1 R7
0x70020045, // 0057 JMP #009E
0x7002005B, // 0057 JMP #00B4
0x541E001C, // 0058 LDINT R7 29
0x1C1C0A07, // 0059 EQ R7 R5 R7
0x781E003A, // 005A JMPF R7 #0096
@ -281,16 +388,38 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x5C280400, // 0092 MOVE R10 R2
0x7C1C0600, // 0093 CALL R7 3
0x80040E00, // 0094 RET 1 R7
0x70020007, // 0095 JMP #009E
0x601C0003, // 0096 GETGBL R7 G3
0x5C200000, // 0097 MOVE R8 R0
0x7C1C0200, // 0098 CALL R7 1
0x8C1C0F15, // 0099 GETMET R7 R7 K21
0x5C240200, // 009A MOVE R9 R1
0x5C280400, // 009B MOVE R10 R2
0x7C1C0600, // 009C CALL R7 3
0x80040E00, // 009D RET 1 R7
0x80000000, // 009E RET 0
0x7002001D, // 0095 JMP #00B4
0x541E0038, // 0096 LDINT R7 57
0x1C1C0A07, // 0097 EQ R7 R5 R7
0x781E0012, // 0098 JMPF R7 #00AC
0x541E0004, // 0099 LDINT R7 5
0x1C1C0C07, // 009A EQ R7 R6 R7
0x781E0006, // 009B JMPF R7 #00A3
0x8C1C0907, // 009C GETMET R7 R4 K7
0x88240916, // 009D GETMBR R9 R4 K22
0x8C280117, // 009E GETMET R10 R0 K23
0x7C280200, // 009F CALL R10 1
0x7C1C0600, // 00A0 CALL R7 3
0x80040E00, // 00A1 RET 1 R7
0x70020007, // 00A2 JMP #00AB
0x601C0003, // 00A3 GETGBL R7 G3
0x5C200000, // 00A4 MOVE R8 R0
0x7C1C0200, // 00A5 CALL R7 1
0x8C1C0F15, // 00A6 GETMET R7 R7 K21
0x5C240200, // 00A7 MOVE R9 R1
0x5C280400, // 00A8 MOVE R10 R2
0x7C1C0600, // 00A9 CALL R7 3
0x80040E00, // 00AA RET 1 R7
0x70020007, // 00AB JMP #00B4
0x601C0003, // 00AC GETGBL R7 G3
0x5C200000, // 00AD MOVE R8 R0
0x7C1C0200, // 00AE CALL R7 1
0x8C1C0F15, // 00AF GETMET R7 R7 K21
0x5C240200, // 00B0 MOVE R9 R1
0x5C280400, // 00B1 MOVE R10 R2
0x7C1C0600, // 00B2 CALL R7 3
0x80040E00, // 00B3 RET 1 R7
0x80000000, // 00B4 RET 0
})
)
);
@ -302,23 +431,27 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
********************************************************************/
extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Device,
0,
1,
&be_class_Matter_Plugin,
be_nested_map(5,
be_nested_map(9,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Device_read_attribute_closure) },
{ be_const_key_weak(invoke_request, 1), be_const_closure(Matter_Plugin_Device_invoke_request_closure) },
{ be_const_key_weak(NON_BRIDGE_VENDOR, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(2,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(4631),
be_const_int(4993),
})) ) } )) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Device_invoke_request_closure) },
{ be_const_key_weak(TYPES, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Device_read_attribute_closure) },
{ be_const_key_weak(set_name, 8), be_const_closure(Matter_Plugin_Device_set_name_closure) },
{ be_const_key_weak(get_name, 1), be_const_closure(Matter_Plugin_Device_get_name_closure) },
{ be_const_key_weak(init, 3), be_const_closure(Matter_Plugin_Device_init_closure) },
{ be_const_key_weak(node_label, -1), be_const_var(0) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(4,
( (struct bmapnode*) &(const bmapnode[]) {
@ -332,7 +465,7 @@ be_local_class(Matter_Plugin_Device,
{ be_const_key_int(57, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(5),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(8,

File diff suppressed because it is too large Load Diff