diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c
index 6f2925910..f936e03f9 100644
--- a/lib/libesp32/berry_matter/src/be_matter_module.c
+++ b/lib/libesp32/berry_matter/src/be_matter_module.c
@@ -149,7 +149,9 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "../generate/be_matter_certs.h"
#include "solidify/solidified_Matter_Plugin_Root.h"
+#include "solidify/solidified_Matter_Plugin_Device.h"
#include "solidify/solidified_Matter_Plugin_OnOff.h"
+#include "solidify/solidified_Matter_Plugin_Temp_Sensor.h"
/*********************************************************************************************\
* Get a bytes() object of the certificate DAC/PAI_Cert
@@ -315,7 +317,9 @@ module matter (scope: global, strings: weak) {
// Plugins
Plugin_Root, class(be_class_Matter_Plugin_Root) // Generic behavior common to all devices
+ Plugin_Device, class(be_class_Matter_Plugin_Device) // Generic device (abstract)
Plugin_OnOff, class(be_class_Matter_Plugin_OnOff) // Relay/Light behavior (OnOff)
+ Plugin_Temp_Sensor, class(be_class_Matter_Plugin_Temp_Sensor) // Temperature Sensor
}
@const_object_info_end */
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
index 9d5fed265..1db9f8641 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
@@ -84,11 +84,37 @@ class Matter_Commisioning_Context
return false
end
+ #################################################################################
+ # send_status_report
+ #
+ # send a StatusReport message (unencrypted)
+ #
+ # Usage:
+ # # StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
+ # var raw = send_status_report(0x00, 0x0000, 0x0000)
+ # self.responder.send_response(raw, msg.remote_ip, msg.remote_port, nil)
+ def send_status_report(msg, general_code, protocol_id, protocol_code, reliable)
+ # now package the response message
+ var resp = msg.build_response(0x40 #-StatusReport-#, reliable)
+
+ var status_raw = bytes()
+ status_raw.add(general_code, 2)
+ status_raw.add(protocol_id, 4)
+ status_raw.add(protocol_code, 4)
+
+ var raw = resp.encode_frame(status_raw)
+
+ self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter)
+ end
+
def parse_PBKDFParamRequest(msg)
import crypto
# sanity checks
if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0
- raise "protocol_error", "invalid PBKDFParamRequest message"
+ tasmota.log("MTR: invalid PBKDFParamRequest message", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
end
var pbkdfparamreq = matter.PBKDFParamRequest().parse(msg.raw, msg.app_payload_idx)
msg.session.set_mode_PASE()
@@ -96,7 +122,12 @@ class Matter_Commisioning_Context
self.PBKDFParamRequest = msg.raw[msg.app_payload_idx..]
# sanity check for PBKDFParamRequest
- if pbkdfparamreq.passcodeId != 0 raise "protocol_error", "non-zero passcode id" end
+ if pbkdfparamreq.passcodeId != 0
+ tasmota.log("MTR: non-zero passcode id", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
+ end
# record the initiator_session_id
self.future_initiator_session_id = pbkdfparamreq.initiator_session_id
@@ -119,7 +150,7 @@ class Matter_Commisioning_Context
self.PBKDFParamResponse = pbkdfparamresp_raw
var resp = msg.build_response(0x21 #-PBKDR Response-#, true)
- var raw = resp.encode(pbkdfparamresp_raw)
+ var raw = resp.encode_frame(pbkdfparamresp_raw)
self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter)
end
@@ -128,7 +159,10 @@ class Matter_Commisioning_Context
import crypto
# sanity checks
if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0
- raise "protocol_error", "invalid Pake1 message"
+ tasmota.log("MTR: invalid Pake1 message", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
end
var pake1 = matter.Pake1().parse(msg.raw, msg.app_payload_idx)
@@ -196,7 +230,7 @@ class Matter_Commisioning_Context
# now package the response message
var resp = msg.build_response(0x23 #-pake-2-#, true) # no reliable flag
- var raw = resp.encode(pake2_raw)
+ var raw = resp.encode_frame(pake2_raw)
self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter)
end
@@ -205,7 +239,10 @@ class Matter_Commisioning_Context
import crypto
# sanity checks
if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0
- raise "protocol_error", "invalid Pake3 message"
+ tasmota.log("MTR: invalid Pake3 message", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
end
var pake3 = matter.Pake3().parse(msg.raw, msg.app_payload_idx)
@@ -213,7 +250,12 @@ class Matter_Commisioning_Context
tasmota.log("MTR: received cA=" + self.cA.tohex(), 4)
# check the value against computed
- if self.cA != self.spake.cA raise "protocol_error", "invalid cA received" end
+ if self.cA != self.spake.cA
+ tasmota.log("MTR: invalid cA received", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
+ end
# send PakeFinished and compute session key
self.created = tasmota.rtc()['utc']
@@ -229,17 +271,9 @@ class Matter_Commisioning_Context
tasmota.log("MTR: AC =" + self.AttestationChallenge.tohex(), 4)
tasmota.log("MTR: ******************************", 4)
- # now package the response message
- var resp = msg.build_response(0x40 #-StatusReport-#, false) # no reliable flag
+ # StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
+ var raw = self.send_status_report(msg, 0x00, 0x0000, 0x0000, false)
- var status_raw = bytes()
- status_raw.add(0x00, 2) # GeneralCode = SUCCESS
- status_raw.add(0x0000, 4) # ProtocolID = 0 (PROTOCOL_ID_SECURE_CHANNEL)
- status_raw.add(0x0000, 4) # ProtocolCode = 0 (SESSION_ESTABLISHMENT_SUCCESS)
-
- var raw = resp.encode(status_raw)
-
- self.responder.send_response(raw, msg.remote_ip, msg.remote_port, nil)
self.responder.add_session(self.future_local_session_id, self.future_initiator_session_id, self.I2RKey, self.R2IKey, self.AttestationChallenge, self.created)
end
@@ -270,7 +304,10 @@ class Matter_Commisioning_Context
import crypto
# sanity checks
if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0
- raise "protocol_error", "invalid Pake1 message"
+ tasmota.log("MTR: invalid Sigma1 message", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
end
var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx)
@@ -288,7 +325,11 @@ class Matter_Commisioning_Context
var fabric = self.find_fabric_by_destination_id(sigma1.destinationId, sigma1.initiatorRandom)
session._fabric = fabric
end
- if session == nil || session._fabric == nil raise "valuer_error", "StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)" end
+ if session == nil || session._fabric == nil
+ tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0001, false)
+ return false
+ end
session._source_node_id = msg.source_node_id
session.set_mode_CASE()
@@ -361,7 +402,7 @@ class Matter_Commisioning_Context
# now package the response message
var resp = msg.build_response(0x33 #-sigma-2-resume-#, true)
- var raw = resp.encode(sigma2resume_raw)
+ var raw = resp.encode_frame(sigma2resume_raw)
self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter)
@@ -440,7 +481,7 @@ class Matter_Commisioning_Context
# now package the response message
var resp = msg.build_response(0x31 #-sigma-2-#, true) # no reliable flag
- var raw = resp.encode(sigma2_raw)
+ var raw = resp.encode_frame(sigma2_raw)
self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter)
return true
@@ -453,7 +494,9 @@ class Matter_Commisioning_Context
import crypto
# sanity checks
if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0
- raise "protocol_error", "invalid Pake1 message"
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
end
var session = msg.session
var sigma3 = matter.Sigma3().parse(msg.raw, msg.app_payload_idx)
@@ -486,7 +529,12 @@ class Matter_Commisioning_Context
tasmota.log("MTR: * tag_sent = " + tag.tohex(), 4)
tasmota.log("****************************************", 4)
- if TBETag3 != tag raise "value_error", "tag do not match" end
+ if TBETag3 != tag
+ tasmota.log("MTR: Tag don't match", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
+ end
var TBEData3TLV = matter.TLV.parse(TBEData3)
var initiatorNOC = TBEData3TLV.findsubval(1)
@@ -517,7 +565,12 @@ class Matter_Commisioning_Context
# `crypto.EC_P256().ecdsa_verify_sha256(public_key:bytes(65), message:bytes(), hash:bytes()) -> bool`
var sigma3_tbs_valid = crypto.EC_P256().ecdsa_verify_sha256(initiatorNOCPubKey, sigma3_tbs_raw, ec_signature)
- if !sigma3_tbs_valid raise "value_error", "sigma3_tbs does not have a valid signature" end
+ if !sigma3_tbs_valid
+ tasmota.log("MTR: sigma3_tbs does not have a valid signature", 2)
+ tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
+ return false
+ end
# All good, compute new keys
tasmota.log("MTR: Sigma3 verified, computing new keys", 3)
@@ -546,17 +599,8 @@ class Matter_Commisioning_Context
tasmota.log("MTR: AC =" + ac.tohex(), 4)
tasmota.log("MTR: ******************************", 4)
- # Send success status report
- var resp = msg.build_response(0x40 #-StatusReport-#, true) # reliable flag
-
- var status_raw = bytes()
- status_raw.add(0x00, 2) # GeneralCode = SUCCESS
- status_raw.add(0x0000, 4) # ProtocolID = 0 (PROTOCOL_ID_SECURE_CHANNEL)
- status_raw.add(0x0000, 4) # ProtocolCode = 0 (SESSION_ESTABLISHMENT_SUCCESS)
-
- var raw = resp.encode(status_raw)
-
- self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter)
+ # StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
+ var raw = self.send_status_report(msg, 0x00, 0x0000, 0x0000, true)
session.close()
session.set_keys(i2r, r2i, ac, created)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be
index f4ce7616d..05147d605 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be
@@ -84,7 +84,7 @@ class Matter_PBKDFParamResponse
s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL)
s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
end
- return s.encode()
+ return s.encode(b)
end
end
matter.PBKDFParamResponse = Matter_PBKDFParamResponse
@@ -118,7 +118,7 @@ class Matter_Pake2
#
s.add_TLV(1, matter.TLV.B1, self.pB)
s.add_TLV(2, matter.TLV.B1, self.cB)
- return s.encode()
+ return s.encode(b)
end
end
matter.Pake2 = Matter_Pake2
@@ -198,7 +198,7 @@ class Matter_Sigma2
s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL)
s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
end
- return s.encode()
+ return s.encode(b)
end
end
matter.Sigma2 = Matter_Sigma2
@@ -224,7 +224,7 @@ class Matter_Sigma2Resume
s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL)
s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
end
- return s.encode()
+ return s.encode(b)
end
end
matter.Sigma2Resume = Matter_Sigma2Resume
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
index 5d9c8bb8b..f3dd2c5a7 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
@@ -48,9 +48,9 @@ class Matter_Device
var hostname_eth # MAC-derived hostname for commissioning
var vendorid
var productid
- # MDNS active announces
- var mdns_pase_eth # do we have an active PASE mdns announce for eth
- var mdns_pase_wifi # do we have an active PASE mdns announce for wifi
+ # mDNS active announces
+ var mdns_pase_eth # do we have an active PASE mDNS announce for eth
+ var mdns_pase_wifi # do we have an active PASE mDNS announce for wifi
# saved in parameters
var root_discriminator
var root_passcode
@@ -80,17 +80,18 @@ class Matter_Device
self.ipv4only = false
self.load_param()
- self.commissioning_instance_wifi = crypto.random(8).tohex() # 16 characters random hostname
- self.commissioning_instance_eth = crypto.random(8).tohex() # 16 characters random hostname
-
self.sessions = matter.Session_Store()
self.sessions.load_fabrics()
self.message_handler = matter.MessageHandler(self)
self.ui = matter.UI(self)
# add the default plugin
- self.plugins.push(matter.Plugin_Root(self), 0)
- self.plugins.push(matter.Plugin_OnOff(self), 1, 0 #-tasmota relay 1-#)
+ self.plugins.push(matter.Plugin_Root(self, 0))
+ self.plugins.push(matter.Plugin_OnOff(self, 1, 0#-tasmota relay 1-#))
+ # self.plugins.push(matter.Plugin_Temp_Sensor(self, 2, "ESP32#Temperature"))
+
+ # for now read sensors every 5 seconds
+ tasmota.add_cron("*/5 * * * * *", def () self.trigger_read_sensors() end, "matter_sensors_5s")
self.start_mdns_announce_hostnames()
@@ -135,12 +136,12 @@ class Matter_Device
end
#####################################################################
- # Remove a fabric and clean all corresponding values and MDNS entries
+ # Remove a fabric and clean all corresponding values and mDNS entries
def remove_fabric(fabric)
self.message_handler.im.subs.remove_by_fabric(fabric)
self.sessions.remove_fabric(fabric)
self.sessions.save_fabrics()
- # TODO remove MDNS entries
+ # TODO remove mDNS entries
end
#############################################################
@@ -269,6 +270,27 @@ class Matter_Device
end
end
+ #############################################################
+ # trigger a read_sensors and dispatch to plugins
+ def trigger_read_sensors()
+ import json
+ var rs_json = tasmota.read_sensors()
+ var rs = json.load(rs_json)
+ if rs != nil
+
+ # call all plugins
+ var idx = 0
+ while idx < size(self.plugins)
+ self.plugins[idx].parse_sensors(rs)
+ idx += 1
+ end
+
+ else
+ tasmota.log("MTR: unable to parse read_sensors: "+rs_json, 3)
+ end
+
+ end
+
#############################################################
# dispatch every 250ms click to sub-objects that need it
def every_250ms()
@@ -437,34 +459,32 @@ class Matter_Device
var all = {} # map of {endpoint: {cluster: {attributes:[pi]}}
tasmota.log(string.format("MTR: endpoint=%s cluster=%s attribute=%s", endpoint, cluster, attribute), 4)
for pi: self.plugins
- var ep_list = pi.get_endpoints() # get supported endpoints for this plugin
- tasmota.log(string.format("MTR: pi=%s ep_list=%s", str(pi), str(ep_list)), 4)
- for ep: ep_list
- if endpoint != nil && ep != endpoint continue end # skip if specific endpoint and no match
- # from now on, 'ep' is a good candidate
- if !all.contains(ep) all[ep] = {} end # create empty structure if not already in the list
- endpoint_found = true
+ var ep = pi.get_endpoint() # get supported endpoints for this plugin
- # now explore the cluster list for 'ep'
- var cluster_list = pi.get_cluster_list(ep) # cluster_list is the actual list of candidate cluster for this pluging and endpoint
- tasmota.log(string.format("MTR: pi=%s ep=%s cl_list=%s", str(pi), str(ep), str(cluster_list)), 4)
- for cl: cluster_list
- if cluster != nil && cl != cluster continue end # skip if specific cluster and no match
- # from now on, 'cl' is a good candidate
- if !all[ep].contains(cl) all[ep][cl] = {} end
- cluster_found = true
+ if endpoint != nil && ep != endpoint continue end # skip if specific endpoint and no match
+ # from now on, 'ep' is a good candidate
+ if !all.contains(ep) all[ep] = {} end # create empty structure if not already in the list
+ endpoint_found = true
- # now filter on attributes
- var attr_list = pi.get_attribute_list(ep, cl)
- tasmota.log(string.format("MTR: pi=%s ep=%s cl=%s at_list=%s", str(pi), str(ep), str(cl), str(attr_list)), 4)
- for at: attr_list
- if attribute != nil && at != attribute continue end # skip if specific attribute and no match
- # from now on, 'at' is a good candidate
- if !all[ep][cl].contains(at) all[ep][cl][at] = [] end
- attribute_found = true
+ # now explore the cluster list for 'ep'
+ var cluster_list = pi.get_cluster_list(ep) # cluster_list is the actual list of candidate cluster for this pluging and endpoint
+ tasmota.log(string.format("MTR: pi=%s ep=%s cl_list=%s", str(pi), str(ep), str(cluster_list)), 4)
+ for cl: cluster_list
+ if cluster != nil && cl != cluster continue end # skip if specific cluster and no match
+ # from now on, 'cl' is a good candidate
+ if !all[ep].contains(cl) all[ep][cl] = {} end
+ cluster_found = true
- all[ep][cl][at].push(pi) # add plugin to the list
- end
+ # now filter on attributes
+ var attr_list = pi.get_attribute_list(ep, cl)
+ tasmota.log(string.format("MTR: pi=%s ep=%s cl=%s at_list=%s", str(pi), str(ep), str(cl), str(attr_list)), 4)
+ for at: attr_list
+ if attribute != nil && at != attribute continue end # skip if specific attribute and no match
+ # from now on, 'at' is a good candidate
+ if !all[ep][cl].contains(at) all[ep][cl][at] = [] end
+ attribute_found = true
+
+ all[ep][cl][at].push(pi) # add plugin to the list
end
end
end
@@ -507,12 +527,10 @@ class Matter_Device
def get_active_endpoints(exclude_zero)
var ret = []
for p:self.plugins
- var e = p.get_endpoints()
- for elt:e
- if exclude_zero && elt == 0 continue end
- if ret.find(elt) == nil
- ret.push(elt)
- end
+ var ep = p.get_endpoint()
+ if exclude_zero && ep == 0 continue end
+ if ret.find(ep) == nil
+ ret.push(ep)
end
end
return ret
@@ -594,9 +612,9 @@ class Matter_Device
end
#############################################################
- # MDNS Configuration
+ # mDNS Configuration
#############################################################
- # Start MDNS and announce hostnames for Wifi and ETH from MAC
+ # Start mDNS and announce hostnames for Wifi and ETH from MAC
#
# When the announce is active, `hostname_wifi` and `hostname_eth`
# are defined
@@ -669,6 +687,7 @@ class Matter_Device
def mdns_announce_PASE()
import mdns
import string
+ import crypto
var services = {
"VP":str(self.vendorid) + "+" + str(self.productid),
@@ -678,6 +697,9 @@ class Matter_Device
"SII":5000, "SAI":300
}
+ self.commissioning_instance_wifi = crypto.random(8).tohex() # 16 characters random hostname
+ self.commissioning_instance_eth = crypto.random(8).tohex() # 16 characters random hostname
+
try
if self.hostname_eth
# Add Matter `_matterc._udp` service
@@ -740,13 +762,13 @@ class Matter_Device
try
if self.mdns_pase_eth
tasmota.log(string.format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth), 3)
- tasmota.log(string.format("MTR: remove mdns on %s '%s'", "eth", self.commissioning_instance_eth), 2)
+ tasmota.log(string.format("MTR: remove mDNS on %s '%s'", "eth", self.commissioning_instance_eth), 2)
self.mdns_pase_eth = false
mdns.remove_service("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth)
end
if self.mdns_pase_wifi
tasmota.log(string.format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi), 3)
- tasmota.log(string.format("MTR: remove mdns on %s '%s'", "wifi", self.commissioning_instance_wifi), 2)
+ tasmota.log(string.format("MTR: remove mDNS on %s '%s'", "wifi", self.commissioning_instance_wifi), 2)
self.mdns_pase_wifi = false
mdns.remove_service("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi)
end
@@ -795,6 +817,49 @@ class Matter_Device
tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
end
end
+
+ #############################################################
+ # Remove all mDNS announces
+ def mdns_remove_op_discovery_all_fabrics()
+ for fabric: self.sessions.active_fabrics()
+ if fabric.get_device_id() && fabric.get_fabric_id()
+ self.mdns_remove_op_discovery(fabric)
+ end
+ end
+ end
+
+ #############################################################
+ # Start UDP mDNS announcements for commissioning
+ def mdns_remove_op_discovery(fabric)
+ import mdns
+ import string
+ try
+ var device_id = fabric.get_device_id().copy().reverse()
+ var k_fabric = fabric.get_fabric_compressed()
+ var op_node = k_fabric.tohex() + "-" + device_id.tohex()
+
+ # mdns
+ if (tasmota.eth().find("up"))
+ tasmota.log(string.format("MTR: remove mDNS on %s '%s'", "eth", op_node), 2)
+ mdns.remove_service("_matter", "_tcp", op_node, self.hostname_eth)
+ end
+ if (tasmota.wifi().find("up"))
+ tasmota.log(string.format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 2)
+ mdns.remove_service("_matter", "_tcp", op_node, self.hostname_wifi)
+ end
+ except .. as e, m
+ tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
+ end
+ end
+
+ #############################################################
+ # Try to clean MDNS entries before restart
+ #
+ def save_before_restart()
+ self.stop_basic_commissioning()
+ self.mdns_remove_op_discovery_all_fabrics()
+ end
+
end
matter.Device = Matter_Device
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be
index da7e49d86..5adeb88b8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be
@@ -64,7 +64,7 @@ matter.Path = Matter_Path
# Superclass for all IM responses
#################################################################################
class Matter_IM_Message
- static var MSG_TIMEOUT = 10000 # 10s
+ static var MSG_TIMEOUT = 5000 # 5s
var expiration # expiration time for the reporting
var resp # response Frame object
var ready # bool: ready to send (true) or wait (false)
@@ -112,7 +112,7 @@ class Matter_IM_Message
# default responder for data
def send(responder)
var resp = self.resp
- resp.encode(self.data.to_TLV().encode()) # payload in cleartext
+ resp.encode_frame(self.data.to_TLV().encode()) # payload in cleartext
resp.encrypt()
responder.send_response(resp.raw, resp.remote_ip, resp.remote_port, resp.message_counter)
return true
@@ -187,19 +187,19 @@ class Matter_IM_ReportData : Matter_IM_Message
# default responder for data
def send(responder)
import string
- var resp = self.resp
- var ret = self.data
- var was_chunked = ret.more_chunked_messages # is this following a chunked packet?
+ var resp = self.resp # response frame object
+ var data = self.data # TLV data of the response (if any)
+ var was_chunked = data.more_chunked_messages # is this following a chunked packet?
# compute the acceptable size
- var msg_sz = 0
- var elements = 0
- if size(ret.attribute_reports) > 0
- msg_sz = ret.attribute_reports[0].to_TLV().encode_len()
+ var msg_sz = 0 # message size up to now
+ var elements = 0 # number of elements added
+ if size(data.attribute_reports) > 0
+ msg_sz = data.attribute_reports[0].to_TLV().encode_len()
elements = 1
end
- while msg_sz < self.MAX_MESSAGE && elements < size(ret.attribute_reports)
- var next_sz = ret.attribute_reports[elements].to_TLV().encode_len()
+ while msg_sz < self.MAX_MESSAGE && elements < size(data.attribute_reports)
+ var next_sz = data.attribute_reports[elements].to_TLV().encode_len()
if msg_sz + next_sz < self.MAX_MESSAGE
msg_sz += next_sz
elements += 1
@@ -208,28 +208,36 @@ class Matter_IM_ReportData : Matter_IM_Message
end
end
- tasmota.log(string.format("MTR: elements=%i msg_sz=%i total=%i", elements, msg_sz, size(ret.attribute_reports)), 4)
- var next_elemnts = ret.attribute_reports[elements .. ]
- ret.attribute_reports = ret.attribute_reports[0 .. elements - 1]
- ret.more_chunked_messages = (size(next_elemnts) > 0)
+
+ tasmota.log(string.format("MTR: elements=%i msg_sz=%i total=%i", elements, msg_sz, size(data.attribute_reports)), 3)
+ var next_elemnts = data.attribute_reports[elements .. ]
+ data.attribute_reports = data.attribute_reports[0 .. elements - 1]
+ data.more_chunked_messages = (size(next_elemnts) > 0)
if was_chunked
tasmota.log(string.format("MTR: Read_Attr next_chunk exch=%i", self.get_exchangeid()), 3)
end
- if ret.more_chunked_messages
+ if data.more_chunked_messages
if !was_chunked
tasmota.log(string.format("MTR: Read_Attr first_chunk exch=%i", self.get_exchangeid()), 3)
end
- tasmota.log("MTR: sending TLV" + str(ret), 3)
+ # tasmota.log("MTR: sending TLV" + str(data), 4)
end
- resp.encode(self.data.to_TLV().encode()) # payload in cleartext
+ # print(">>>>> send elements before encode")
+ var raw_tlv = self.data.to_TLV()
+ # print(">>>>> send elements before encode 2")
+ var encoded_tlv = raw_tlv.encode(bytes(self.MAX_MESSAGE)) # takes time
+ # print(">>>>> send elements before encode 3")
+ resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer
+ # print(">>>>> send elements after encode")
resp.encrypt()
+ # print(">>>>> send elements after encrypt")
responder.send_response(resp.raw, resp.remote_ip, resp.remote_port, resp.message_counter)
if size(next_elemnts) > 0
- ret.attribute_reports = next_elemnts
- tasmota.log("MTR: to_be_sent_later TLV" + str(ret), 3)
+ data.attribute_reports = next_elemnts
+ # tasmota.log("MTR: to_be_sent_later TLV" + str(data), 3)
return false # keep alive
else
return true # finished, remove
@@ -269,6 +277,7 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData
if !self.report_data_phase
# if ack is received while all data is sent, means that it finished without error
self.ready = true
+ self.sub.re_arm() # signal that we can proceed to next sub report
return true # proceed to calling send() which removes the message
else
return false # do nothing
@@ -304,7 +313,7 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData
else
# send a simple ACK
var resp = self.resp.build_standalone_ack()
- resp.encode()
+ resp.encode_frame()
resp.encrypt()
responder.send_response(resp.raw, resp.remote_ip, resp.remote_port, resp.message_counter)
return true # we received a ack(), just finish
@@ -357,12 +366,19 @@ class Matter_IM_SubscribeResponse : Matter_IM_ReportData
sr.max_interval = self.sub.max_interval
self.resp.opcode = 0x04 #- Subscribe Response -#
- resp.encode(sr.to_TLV().encode()) # payload in cleartext
+ resp.encode_frame(sr.to_TLV().encode()) # payload in cleartext
resp.encrypt()
responder.send_response(resp.raw, resp.remote_ip, resp.remote_port, resp.message_counter)
+ self.sub.re_arm()
return true
end
end
+ # Status ok received
+ def status_ok_received(msg)
+ # once we receive ack, open flow for subscriptions
+ return super(self).status_ok_received(msg)
+ end
+
end
matter.IM_SubscribeResponse = Matter_IM_SubscribeResponse
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be
index 8b9022eb9..aa5e68731 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be
@@ -40,6 +40,7 @@ class Matter_IM_Subscription
# manage time
var not_before # rate-limiting
var expiration # expiration epoch, we need to respond before
+ var wait_status # if `true` wait for Status Response before sending anything new
# updates
var updates
@@ -59,6 +60,7 @@ class Matter_IM_Subscription
if max_interval > 3600 max_interval = 3600 end
max_interval = 60
self.max_interval = max_interval
+ self.wait_status = false
self.fabric_filtered = req.fabric_filtered
@@ -75,9 +77,9 @@ class Matter_IM_Subscription
# update next time interval
self.updates = []
- self.clear_and_arm()
+ self.clear_before_arm()
- tasmota.log("MTR: new subsctiption " + matter.inspect(self), 3)
+ # tasmota.log("MTR: new subsctiption " + matter.inspect(self), 3)
end
# remove self from subs list
@@ -87,8 +89,14 @@ class Matter_IM_Subscription
end
# clear log after it was sent, and re-arm next expiration
- def clear_and_arm()
+ def clear_before_arm()
self.updates.clear()
+ self.wait_status = true
+ end
+
+ # we received a complete ack for previous message, rearm
+ def re_arm()
+ self.wait_status = false
var now = tasmota.millis()
self.expiration = now + (self.max_interval - self.MAX_INTERVAL_MARGIN) * 1000
self.not_before = now + self.min_interval * 1000 - 1
@@ -206,9 +214,9 @@ class Matter_IM_Subscription_Shop
var idx = 0
while idx < size(self.subs)
var sub = self.subs[idx]
- if size(sub.updates) > 0 && tasmota.time_reached(sub.not_before)
+ if !sub.wait_status && size(sub.updates) > 0 && tasmota.time_reached(sub.not_before)
self.im.send_subscribe_update(sub)
- sub.clear_and_arm()
+ sub.clear_before_arm()
end
idx += 1
end
@@ -217,9 +225,9 @@ class Matter_IM_Subscription_Shop
idx = 0
while idx < size(self.subs)
var sub = self.subs[idx]
- if tasmota.time_reached(sub.expiration)
+ if !sub.wait_status && tasmota.time_reached(sub.expiration)
self.im.send_subscribe_update(sub)
- sub.clear_and_arm()
+ sub.clear_before_arm()
end
idx += 1
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
index c0d26621b..40095a3cc 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
@@ -171,7 +171,7 @@ class Matter_Frame
#
# Header is built from attributes
# `payload` is a bytes() buffer for the app payload
- def encode(payload)
+ def encode_frame(payload)
var raw = bytes()
# compute flags
if self.flags == nil
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
index b7fde4077..252002b52 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
@@ -136,7 +136,7 @@ class Matter_MessageHandler
elif frame.x_flag_r # nothing to respond, check if we need a standalone ack
var resp = frame.build_standalone_ack()
- resp.encode()
+ resp.encode_frame()
resp.encrypt()
self.send_response(resp.raw, resp.remote_ip, resp.remote_port, resp.message_counter)
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be
index ad01637bc..7168483a0 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be
@@ -26,7 +26,6 @@ class Matter_Plugin
static var EMPTY_LIST = []
static var EMPTY_MAP = {}
var device # reference to the `device` global object
- var endpoints # list of supported endpoints TODO refactor
var endpoint # current endpoint
var clusters # map from cluster to list of attributes
@@ -38,23 +37,26 @@ class Matter_Plugin
#############################################################
# Constructor
+ #
def init(device, endpoint)
self.device = device
self.endpoint = endpoint
- self.endpoints = self.EMPTY_LIST
self.clusters = self.EMPTY_LIST
end
#############################################################
# signal that an attribute has been changed
+ #
+ # If `endpoint` is `nil`, send to all endpoints
def attribute_updated(endpoint, cluster, attribute, fabric_specific)
+ if endpoint == nil endpoint = self.endpoint end
self.device.attribute_updated(endpoint, cluster, attribute, fabric_specific)
end
#############################################################
# Which endpoints does it handle (list of numbers)
- def get_endpoints()
- return self.endpoints
+ def get_endpoint()
+ return self.endpoint
end
def get_cluster_map()
return self.clusters
@@ -137,6 +139,14 @@ class Matter_Plugin
return nil
end
+ #############################################################
+ # parse sensor
+ #
+ # The device calls regularly `tasmota.read_sensors()` and converts
+ # it to json.
+ def parse_sensors(payload)
+ end
+
#############################################################
# every_second
def every_second()
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be
new file mode 100644
index 000000000..4cab5fbad
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be
@@ -0,0 +1,144 @@
+#
+# Matter_Plugin_Device.be - implements the behavior for a standard Device
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# dummy declaration for solidification
+class Matter_Plugin end
+
+#@ solidify:Matter_Plugin_Device,weak
+
+class Matter_Plugin_Device : Matter_Plugin
+ static var CLUSTERS = {
+ 0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
+ 0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16
+ 0x0004: [0,0xFFFC,0xFFFD], # Groups 1.3 p.21
+ }
+ static var TYPES = { 0x0000: 0 } # fake type
+
+ #############################################################
+ # Constructor
+ def init(device, endpoint, tasmota_relay_index)
+ super(self).init(device, endpoint)
+ self.clusters = self.CLUSTERS
+ end
+
+ #############################################################
+ # read an attribute
+ #
+ def read_attribute(session, ctx)
+ import string
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var attribute = ctx.attribute
+
+ if cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
+
+ if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ----------
+ var dtl = TLV.Matter_TLV_array()
+ for dt: self.TYPES.keys()
+ var d1 = dtl.add_struct()
+ d1.add_TLV(0, TLV.U2, dt) # DeviceType
+ d1.add_TLV(1, TLV.U2, self.TYPES[dt]) # Revision
+ end
+ return dtl
+ elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ----------
+ var sl = TLV.Matter_TLV_array()
+ for cl: self.get_cluster_list()
+ sl.add_TLV(nil, TLV.U4, cl)
+ end
+ return sl
+ elif attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
+ var cl = TLV.Matter_TLV_array()
+ cl.add_TLV(nil, TLV.U2, 0x0006)
+ return cl
+ elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
+ var pl = TLV.Matter_TLV_array()
+ return pl
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return TLV.create_TLV(TLV.U4, 0) #
+ elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
+ return TLV.create_TLV(TLV.U4, 1) # "Initial Release"
+ end
+
+ # ====================================================================================================
+ elif cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
+ if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
+ return TLV.create_TLV(TLV.U2, 0) # no identification in progress
+ elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
+ return TLV.create_TLV(TLV.U1, 0) # IdentifyType = 0x00 None
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return TLV.create_TLV(TLV.U4, 0) # no features
+ elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
+ return TLV.create_TLV(TLV.U4, 4) # "new data model format and notation"
+ end
+
+ # ====================================================================================================
+ elif cluster == 0x0004 # ========== Groups 1.3 p.21 ==========
+ if attribute == 0x0000 # ---------- ----------
+ return nil # TODO
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return TLV.create_TLV(TLV.U4, 0)#
+ elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
+ return TLV.create_TLV(TLV.U4, 4)# "new data model format and notation"
+ end
+
+ else
+ return super(self).read_attribute(session, ctx)
+ end
+ end
+
+ #############################################################
+ # Invoke a command
+ #
+ # returns a TLV object if successful, contains the response
+ # or an `int` to indicate a status
+ def invoke_request(session, val, ctx)
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var command = ctx.command
+
+ # ====================================================================================================
+ if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
+
+ if command == 0x0000 # ---------- Identify ----------
+ # ignore
+ return true
+ elif command == 0x0001 # ---------- IdentifyQuery ----------
+ # create IdentifyQueryResponse
+ # ID=1
+ # 0=Certificate (octstr)
+ var iqr = TLV.Matter_TLV_struct()
+ iqr.add_TLV(0, TLV.U2, 0) # Timeout
+ ctx.command = 0x00 # IdentifyQueryResponse
+ return iqr
+ elif command == 0x0040 # ---------- TriggerEffect ----------
+ # ignore
+ return true
+ end
+ # ====================================================================================================
+ elif cluster == 0x0004 # ========== Groups 1.3 p.21 ==========
+ # TODO
+ return true
+
+ else
+ return super(self).invoke_request(session, val, ctx)
+ end
+ end
+
+end
+matter.Plugin_Device = Matter_Plugin_Device
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be
index ae7ed0b73..f8c53f57b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be
@@ -25,7 +25,6 @@ class Matter_Plugin end
#@ solidify:Matter_Plugin_OnOff,weak
class Matter_Plugin_OnOff : Matter_Plugin
- static var ENDPOINTS = [ 1 ]
static var CLUSTERS = {
0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16
@@ -43,8 +42,6 @@ class Matter_Plugin_OnOff : Matter_Plugin
# Constructor
def init(device, endpoint, tasmota_relay_index)
super(self).init(device, endpoint)
- self.endpoints = self.ENDPOINTS
- self.endpoint = self.ENDPOINTS[0] # TODO refactor endpoint management
self.clusters = self.CLUSTERS
self.get_onoff() # read actual value
if tasmota_relay_index == nil tasmota_relay_index = 0 end
@@ -107,9 +104,9 @@ class Matter_Plugin_OnOff : Matter_Plugin
var pl = TLV.Matter_TLV_array()
return pl
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return TLV.create_TLV(TLV.U4, 0) #
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 1) # 0 = no Level Control for Lighting
+ return TLV.create_TLV(TLV.U4, 1) # "Initial Release"
end
# ====================================================================================================
@@ -119,9 +116,9 @@ class Matter_Plugin_OnOff : Matter_Plugin
elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
return TLV.create_TLV(TLV.U1, 0) # IdentifyType = 0x00 None
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return TLV.create_TLV(TLV.U4, 0) # no features
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
+ return TLV.create_TLV(TLV.U4, 4) # "new data model format and notation"
end
# ====================================================================================================
@@ -129,9 +126,9 @@ class Matter_Plugin_OnOff : Matter_Plugin
if attribute == 0x0000 # ---------- ----------
return nil # TODO
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
+ return TLV.create_TLV(TLV.U4, 0)#
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
- return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
+ return TLV.create_TLV(TLV.U4, 4)# "new data model format and notation"
end
# ====================================================================================================
@@ -243,7 +240,7 @@ class Matter_Plugin_OnOff : Matter_Plugin
#############################################################
# Signal that onoff attribute changed
def onoff_changed()
- self.attribute_updated(self.endpoint, 0x0006, 0x0000)
+ self.attribute_updated(nil, 0x0006, 0x0000) # send to all endpoints
end
#############################################################
@@ -253,4 +250,3 @@ class Matter_Plugin_OnOff : Matter_Plugin
end
end
matter.Plugin_OnOff = Matter_Plugin_OnOff
-
\ No newline at end of file
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be
index 9068e91cc..990b43a40 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be
@@ -25,11 +25,10 @@ class Matter_Plugin end
#@ solidify:Matter_Plugin_Root,weak
class Matter_Plugin_Root : Matter_Plugin
- static var ENDPOINTS = [ 0 ]
static var CLUSTERS = {
0x001D: [0,1,2,3], # Descriptor Cluster 9.5 p.453
0x001F: [0,2,3,4], # Access Control Cluster, p.461
- 0x0028: [0,1,2,3,4,5,6,7,8,9,0x0F,0x12,0x13],# Basic Information Cluster cluster 11.1 p.565
+ 0x0028: [0,1,2,3,4,5,6,7,8,9,0x0A,0x0F,0x12,0x13],# Basic Information Cluster cluster 11.1 p.565
# 0x002A: [0,1,2,3], # OTA Software Update Requestor Cluster Definition 11.19.7 p.762
0x002B: [0,1], # Localization Configuration Cluster 11.3 p.580
0x002C: [0,1,2], # Time Format Localization Cluster 11.4 p.581
@@ -49,7 +48,6 @@ class Matter_Plugin_Root : Matter_Plugin
# Constructor
def init(device, endpoint)
super(self).init(device, endpoint)
- self.endpoints = self.ENDPOINTS
self.clusters = self.CLUSTERS
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be
new file mode 100644
index 000000000..89a1c23bf
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be
@@ -0,0 +1,110 @@
+#
+# Matter_Plugin_Temp_Sensor.be - implements the behavior for a Temperature Sensor
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# Matter plug-in for core behavior
+
+# dummy declaration for solidification
+class Matter_Plugin_Device end
+
+#@ solidify:Matter_Plugin_Temp_Sensor,weak
+
+class Matter_Plugin_Temp_Sensor : Matter_Plugin_Device
+ static var CLUSTERS = {
+ 0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
+ 0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16
+ 0x0004: [0,0xFFFC,0xFFFD], # Groups 1.3 p.21
+ 0x0402: [0,1,2], # Temperature Measurement p.97 - no writable
+ }
+ static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2
+
+ var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
+ var tasmota_sensor_matcher # Actual matcher object
+ var shadow_temperature # fake status for now # TODO
+
+ #############################################################
+ # Constructor
+ def init(device, endpoint, sensor_filter)
+ super(self).init(device, endpoint)
+ self.clusters = self.CLUSTERS
+ self.tasmota_sensor_filter = sensor_filter
+ self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(sensor_filter)
+ end
+
+ #############################################################
+ # parse sensor
+ #
+ # The device calls regularly `tasmota.read_sensors()` and converts
+ # it to json.
+ def parse_sensors(payload)
+ if self.tasmota_sensor_matcher
+ var val = real(self.tasmota_sensor_matcher.match(payload))
+ if val != nil
+ # import string
+ # tasmota.log(string.format("MTR: update temperature for endpoint %i - %.1f C", self.endpoint,), 3)
+ if val != self.shadow_temperature
+ self.attribute_updated(nil, 0x0402, 0x0000)
+ end
+ self.shadow_temperature = val
+ end
+ end
+ end
+
+ #############################################################
+ # get_temperature
+ #
+ # Update shadow and signal any change
+ def get_temperature()
+ return self.shadow_temperature
+ end
+
+ #############################################################
+ # read an attribute
+ #
+ def read_attribute(session, ctx)
+ import string
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var attribute = ctx.attribute
+
+ # ====================================================================================================
+ if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
+ if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
+ if self.shadow_temperature != nil
+ return TLV.create_TLV(TLV.I2, int(self.shadow_temperature * 100))
+ else
+ return TLV.create_TLV(TLV.NULL, nil)
+ end
+ elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ----------
+ return TLV.create_TLV(TLV.I2, -5000) # -50 °C
+ elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
+ return TLV.create_TLV(TLV.I2, 15000) # 150 °C
+ end
+
+ else
+ return super(self).read_attribute(session, ctx)
+ end
+ end
+
+ #############################################################
+ # every_second
+ def every_second()
+ self.get_temperature() # force reading value and sending subscriptions
+ end
+end
+matter.Plugin_Temp_Sensor = Matter_Plugin_Temp_Sensor
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
index fcf367d79..1544260e2 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
@@ -755,8 +755,8 @@ class Matter_Session_Store
session = matter.Session(self, 0, 0)
session._source_node_id = source_node_id
self.sessions.push(session)
+ session.set_expire_in_seconds(expire)
end
- session.set_expire_in_seconds(expire)
session.update()
return session
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
index 5b97fef9d..c2b25390e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
@@ -610,8 +610,9 @@ class Matter_TLV
# encode tag and type
self._encode_tag(b)
# sort values
- var val_list = self.val.copy()
+ var val_list = self.val
if self.is_struct
+ val_list = val_list.copy()
self.sort(val_list)
end
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
index 2968786f3..1e4a1e4d9 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
@@ -6,174 +6,6 @@
extern const bclass be_class_Matter_Commisioning_Context;
-/********************************************************************
-** Solidified function: parse_PBKDFParamRequest
-********************************************************************/
-be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name */
- be_nested_proto(
- 14, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[46]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(opcode),
- /* K2 */ be_nested_str_weak(local_session_id),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(protocol_id),
- /* K5 */ be_nested_str_weak(protocol_error),
- /* K6 */ be_nested_str_weak(invalid_X20PBKDFParamRequest_X20message),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(PBKDFParamRequest),
- /* K9 */ be_nested_str_weak(parse),
- /* K10 */ be_nested_str_weak(raw),
- /* K11 */ be_nested_str_weak(app_payload_idx),
- /* K12 */ be_nested_str_weak(session),
- /* K13 */ be_nested_str_weak(set_mode_PASE),
- /* K14 */ be_const_int(2147483647),
- /* K15 */ be_nested_str_weak(passcodeId),
- /* K16 */ be_nested_str_weak(non_X2Dzero_X20passcode_X20id),
- /* K17 */ be_nested_str_weak(future_initiator_session_id),
- /* K18 */ be_nested_str_weak(initiator_session_id),
- /* K19 */ be_nested_str_weak(future_local_session_id),
- /* K20 */ be_nested_str_weak(device),
- /* K21 */ be_nested_str_weak(sessions),
- /* K22 */ be_nested_str_weak(gen_local_session_id),
- /* K23 */ be_nested_str_weak(tasmota),
- /* K24 */ be_nested_str_weak(log),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20Loc_session_X3D),
- /* K26 */ be_nested_str_weak(PBKDFParamResponse),
- /* K27 */ be_nested_str_weak(initiatorRandom),
- /* K28 */ be_nested_str_weak(responderRandom),
- /* K29 */ be_nested_str_weak(random),
- /* K30 */ be_nested_str_weak(responderSessionId),
- /* K31 */ be_nested_str_weak(pbkdf_parameters_salt),
- /* K32 */ be_nested_str_weak(commissioning_salt),
- /* K33 */ be_nested_str_weak(pbkdf_parameters_iterations),
- /* K34 */ be_nested_str_weak(commissioning_iterations),
- /* K35 */ be_nested_str_weak(MTR_X3A_X20pbkdfparamresp_X3A_X20),
- /* K36 */ be_nested_str_weak(inspect),
- /* K37 */ be_nested_str_weak(encode),
- /* K38 */ be_nested_str_weak(MTR_X3A_X20pbkdfparamresp_raw_X3A_X20),
- /* K39 */ be_nested_str_weak(tohex),
- /* K40 */ be_nested_str_weak(build_response),
- /* K41 */ be_nested_str_weak(responder),
- /* K42 */ be_nested_str_weak(send_response),
- /* K43 */ be_nested_str_weak(remote_ip),
- /* K44 */ be_nested_str_weak(remote_port),
- /* K45 */ be_nested_str_weak(message_counter),
- }),
- be_str_weak(parse_PBKDFParamRequest),
- &be_const_str_solidified,
- ( &(const binstruction[98]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x5412001F, // 0002 LDINT R4 32
- 0x200C0604, // 0003 NE R3 R3 R4
- 0x740E0005, // 0004 JMPT R3 #000B
- 0x880C0302, // 0005 GETMBR R3 R1 K2
- 0x200C0703, // 0006 NE R3 R3 K3
- 0x740E0002, // 0007 JMPT R3 #000B
- 0x880C0304, // 0008 GETMBR R3 R1 K4
- 0x200C0703, // 0009 NE R3 R3 K3
- 0x780E0000, // 000A JMPF R3 #000C
- 0xB0060B06, // 000B RAISE 1 K5 K6
- 0xB80E0E00, // 000C GETNGBL R3 K7
- 0x8C0C0708, // 000D GETMET R3 R3 K8
- 0x7C0C0200, // 000E CALL R3 1
- 0x8C0C0709, // 000F GETMET R3 R3 K9
- 0x8814030A, // 0010 GETMBR R5 R1 K10
- 0x8818030B, // 0011 GETMBR R6 R1 K11
- 0x7C0C0600, // 0012 CALL R3 3
- 0x8810030C, // 0013 GETMBR R4 R1 K12
- 0x8C10090D, // 0014 GETMET R4 R4 K13
- 0x7C100200, // 0015 CALL R4 1
- 0x8810030B, // 0016 GETMBR R4 R1 K11
- 0x4010090E, // 0017 CONNECT R4 R4 K14
- 0x8814030A, // 0018 GETMBR R5 R1 K10
- 0x94100A04, // 0019 GETIDX R4 R5 R4
- 0x90021004, // 001A SETMBR R0 K8 R4
- 0x8810070F, // 001B GETMBR R4 R3 K15
- 0x20100903, // 001C NE R4 R4 K3
- 0x78120000, // 001D JMPF R4 #001F
- 0xB0060B10, // 001E RAISE 1 K5 K16
- 0x88100712, // 001F GETMBR R4 R3 K18
- 0x90022204, // 0020 SETMBR R0 K17 R4
- 0x88100114, // 0021 GETMBR R4 R0 K20
- 0x88100915, // 0022 GETMBR R4 R4 K21
- 0x8C100916, // 0023 GETMET R4 R4 K22
- 0x7C100200, // 0024 CALL R4 1
- 0x90022604, // 0025 SETMBR R0 K19 R4
- 0xB8122E00, // 0026 GETNGBL R4 K23
- 0x8C100918, // 0027 GETMET R4 R4 K24
- 0x60180008, // 0028 GETGBL R6 G8
- 0x881C0113, // 0029 GETMBR R7 R0 K19
- 0x7C180200, // 002A CALL R6 1
- 0x001A3206, // 002B ADD R6 K25 R6
- 0x7C100400, // 002C CALL R4 2
- 0xB8120E00, // 002D GETNGBL R4 K7
- 0x8C10091A, // 002E GETMET R4 R4 K26
- 0x7C100200, // 002F CALL R4 1
- 0x8814071B, // 0030 GETMBR R5 R3 K27
- 0x90123605, // 0031 SETMBR R4 K27 R5
- 0x8C14051D, // 0032 GETMET R5 R2 K29
- 0x541E001F, // 0033 LDINT R7 32
- 0x7C140400, // 0034 CALL R5 2
- 0x90123805, // 0035 SETMBR R4 K28 R5
- 0x88140113, // 0036 GETMBR R5 R0 K19
- 0x90123C05, // 0037 SETMBR R4 K30 R5
- 0x88140114, // 0038 GETMBR R5 R0 K20
- 0x88140B20, // 0039 GETMBR R5 R5 K32
- 0x90123E05, // 003A SETMBR R4 K31 R5
- 0x88140114, // 003B GETMBR R5 R0 K20
- 0x88140B22, // 003C GETMBR R5 R5 K34
- 0x90124205, // 003D SETMBR R4 K33 R5
- 0xB8162E00, // 003E GETNGBL R5 K23
- 0x8C140B18, // 003F GETMET R5 R5 K24
- 0x601C0008, // 0040 GETGBL R7 G8
- 0xB8220E00, // 0041 GETNGBL R8 K7
- 0x8C201124, // 0042 GETMET R8 R8 K36
- 0x5C280800, // 0043 MOVE R10 R4
- 0x7C200400, // 0044 CALL R8 2
- 0x7C1C0200, // 0045 CALL R7 1
- 0x001E4607, // 0046 ADD R7 K35 R7
- 0x54220003, // 0047 LDINT R8 4
- 0x7C140600, // 0048 CALL R5 3
- 0x8C140925, // 0049 GETMET R5 R4 K37
- 0x7C140200, // 004A CALL R5 1
- 0xB81A2E00, // 004B GETNGBL R6 K23
- 0x8C180D18, // 004C GETMET R6 R6 K24
- 0x8C200B27, // 004D GETMET R8 R5 K39
- 0x7C200200, // 004E CALL R8 1
- 0x00224C08, // 004F ADD R8 K38 R8
- 0x54260003, // 0050 LDINT R9 4
- 0x7C180600, // 0051 CALL R6 3
- 0x90023405, // 0052 SETMBR R0 K26 R5
- 0x8C180328, // 0053 GETMET R6 R1 K40
- 0x54220020, // 0054 LDINT R8 33
- 0x50240200, // 0055 LDBOOL R9 1 0
- 0x7C180600, // 0056 CALL R6 3
- 0x8C1C0D25, // 0057 GETMET R7 R6 K37
- 0x5C240A00, // 0058 MOVE R9 R5
- 0x7C1C0400, // 0059 CALL R7 2
- 0x88200129, // 005A GETMBR R8 R0 K41
- 0x8C20112A, // 005B GETMET R8 R8 K42
- 0x5C280E00, // 005C MOVE R10 R7
- 0x882C032B, // 005D GETMBR R11 R1 K43
- 0x8830032C, // 005E GETMBR R12 R1 K44
- 0x88340D2D, // 005F GETMBR R13 R6 K45
- 0x7C200A00, // 0060 CALL R8 5
- 0x80000000, // 0061 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: init
********************************************************************/
@@ -212,638 +44,12 @@ be_local_closure(Matter_Commisioning_Context_init, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: parse_Pake1
-********************************************************************/
-be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
- be_nested_proto(
- 16, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[79]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(opcode),
- /* K2 */ be_nested_str_weak(local_session_id),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(protocol_id),
- /* K5 */ be_nested_str_weak(protocol_error),
- /* K6 */ be_nested_str_weak(invalid_X20Pake1_X20message),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(Pake1),
- /* K9 */ be_nested_str_weak(parse),
- /* K10 */ be_nested_str_weak(raw),
- /* K11 */ be_nested_str_weak(app_payload_idx),
- /* K12 */ be_nested_str_weak(pA),
- /* K13 */ be_nested_str_weak(tasmota),
- /* K14 */ be_nested_str_weak(log),
- /* K15 */ be_nested_str_weak(MTR_X3A_X20received_X20pA_X3D),
- /* K16 */ be_nested_str_weak(tohex),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20spake_X3A_X20),
- /* K18 */ be_nested_str_weak(inspect),
- /* K19 */ be_nested_str_weak(spake),
- /* K20 */ be_nested_str_weak(SPAKE2P_Matter),
- /* K21 */ be_nested_str_weak(device),
- /* K22 */ be_nested_str_weak(commissioning_w0),
- /* K23 */ be_nested_str_weak(commissioning_L),
- /* K24 */ be_nested_str_weak(compute_pB),
- /* K25 */ be_nested_str_weak(y),
- /* K26 */ be_nested_str_weak(pB),
- /* K27 */ be_nested_str_weak(MTR_X3A_X20y_X3D),
- /* K28 */ be_nested_str_weak(MTR_X3A_X20pb_X3D),
- /* K29 */ be_nested_str_weak(compute_ZV_verifier),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20Z_X3D),
- /* K31 */ be_nested_str_weak(Z),
- /* K32 */ be_nested_str_weak(MTR_X3A_X20V_X3D),
- /* K33 */ be_nested_str_weak(V),
- /* K34 */ be_nested_str_weak(SHA256),
- /* K35 */ be_nested_str_weak(update),
- /* K36 */ be_nested_str_weak(fromstring),
- /* K37 */ be_nested_str_weak(Matter_Context_Prefix),
- /* K38 */ be_nested_str_weak(PBKDFParamRequest),
- /* K39 */ be_nested_str_weak(PBKDFParamResponse),
- /* K40 */ be_nested_str_weak(out),
- /* K41 */ be_nested_str_weak(MTR_X3A_X20Context_X3D),
- /* K42 */ be_nested_str_weak(set_context),
- /* K43 */ be_nested_str_weak(compute_TT_hash),
- /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D),
- /* K45 */ be_nested_str_weak(MTR_X3A_X20Context_X20_X3D_X20),
- /* K46 */ be_nested_str_weak(Context),
- /* K47 */ be_nested_str_weak(MTR_X3A_X20M_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K48 */ be_nested_str_weak(M),
- /* K49 */ be_nested_str_weak(MTR_X3A_X20N_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K50 */ be_nested_str_weak(N),
- /* K51 */ be_nested_str_weak(MTR_X3A_X20pA_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K52 */ be_nested_str_weak(MTR_X3A_X20pB_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K53 */ be_nested_str_weak(MTR_X3A_X20Z_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K54 */ be_nested_str_weak(MTR_X3A_X20V_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K55 */ be_nested_str_weak(MTR_X3A_X20w0_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K56 */ be_nested_str_weak(w0),
- /* K57 */ be_nested_str_weak(MTR_X3A_X20Kmain_X20_X20_X20_X3D),
- /* K58 */ be_nested_str_weak(Kmain),
- /* K59 */ be_nested_str_weak(MTR_X3A_X20KcA_X20_X20_X20_X20_X20_X3D),
- /* K60 */ be_nested_str_weak(KcA),
- /* K61 */ be_nested_str_weak(MTR_X3A_X20KcB_X20_X20_X20_X20_X20_X3D),
- /* K62 */ be_nested_str_weak(KcB),
- /* K63 */ be_nested_str_weak(MTR_X3A_X20K_shared_X3D),
- /* K64 */ be_nested_str_weak(K_shared),
- /* K65 */ be_nested_str_weak(MTR_X3A_X20Ke_X20_X20_X20_X20_X20_X20_X3D),
- /* K66 */ be_nested_str_weak(Ke),
- /* K67 */ be_nested_str_weak(cB),
- /* K68 */ be_nested_str_weak(MTR_X3A_X20cB_X3D),
- /* K69 */ be_nested_str_weak(Pake2),
- /* K70 */ be_nested_str_weak(MTR_X3A_X20pake2_X3A_X20),
- /* K71 */ be_nested_str_weak(encode),
- /* K72 */ be_nested_str_weak(MTR_X3A_X20pake2_raw_X3A_X20),
- /* K73 */ be_nested_str_weak(build_response),
- /* K74 */ be_nested_str_weak(responder),
- /* K75 */ be_nested_str_weak(send_response),
- /* K76 */ be_nested_str_weak(remote_ip),
- /* K77 */ be_nested_str_weak(remote_port),
- /* K78 */ be_nested_str_weak(message_counter),
- }),
- be_str_weak(parse_Pake1),
- &be_const_str_solidified,
- ( &(const binstruction[307]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x54120021, // 0002 LDINT R4 34
- 0x200C0604, // 0003 NE R3 R3 R4
- 0x740E0005, // 0004 JMPT R3 #000B
- 0x880C0302, // 0005 GETMBR R3 R1 K2
- 0x200C0703, // 0006 NE R3 R3 K3
- 0x740E0002, // 0007 JMPT R3 #000B
- 0x880C0304, // 0008 GETMBR R3 R1 K4
- 0x200C0703, // 0009 NE R3 R3 K3
- 0x780E0000, // 000A JMPF R3 #000C
- 0xB0060B06, // 000B RAISE 1 K5 K6
- 0xB80E0E00, // 000C GETNGBL R3 K7
- 0x8C0C0708, // 000D GETMET R3 R3 K8
- 0x7C0C0200, // 000E CALL R3 1
- 0x8C0C0709, // 000F GETMET R3 R3 K9
- 0x8814030A, // 0010 GETMBR R5 R1 K10
- 0x8818030B, // 0011 GETMBR R6 R1 K11
- 0x7C0C0600, // 0012 CALL R3 3
- 0x8810070C, // 0013 GETMBR R4 R3 K12
- 0x90021804, // 0014 SETMBR R0 K12 R4
- 0xB8121A00, // 0015 GETNGBL R4 K13
- 0x8C10090E, // 0016 GETMET R4 R4 K14
- 0x8818010C, // 0017 GETMBR R6 R0 K12
- 0x8C180D10, // 0018 GETMET R6 R6 K16
- 0x7C180200, // 0019 CALL R6 1
- 0x001A1E06, // 001A ADD R6 K15 R6
- 0x541E0003, // 001B LDINT R7 4
- 0x7C100600, // 001C CALL R4 3
- 0xB8121A00, // 001D GETNGBL R4 K13
- 0x8C10090E, // 001E GETMET R4 R4 K14
- 0xB81A0E00, // 001F GETNGBL R6 K7
- 0x8C180D12, // 0020 GETMET R6 R6 K18
- 0x88200113, // 0021 GETMBR R8 R0 K19
- 0x7C180400, // 0022 CALL R6 2
- 0x001A2206, // 0023 ADD R6 K17 R6
- 0x541E0003, // 0024 LDINT R7 4
- 0x7C100600, // 0025 CALL R4 3
- 0x8C100514, // 0026 GETMET R4 R2 K20
- 0x88180115, // 0027 GETMBR R6 R0 K21
- 0x88180D16, // 0028 GETMBR R6 R6 K22
- 0x4C1C0000, // 0029 LDNIL R7
- 0x88200115, // 002A GETMBR R8 R0 K21
- 0x88201117, // 002B GETMBR R8 R8 K23
- 0x7C100800, // 002C CALL R4 4
- 0x90022604, // 002D SETMBR R0 K19 R4
- 0x88100113, // 002E GETMBR R4 R0 K19
- 0x8C100918, // 002F GETMET R4 R4 K24
- 0x88180119, // 0030 GETMBR R6 R0 K25
- 0x7C100400, // 0031 CALL R4 2
- 0x88100113, // 0032 GETMBR R4 R0 K19
- 0x8810091A, // 0033 GETMBR R4 R4 K26
- 0x90023404, // 0034 SETMBR R0 K26 R4
- 0xB8121A00, // 0035 GETNGBL R4 K13
- 0x8C10090E, // 0036 GETMET R4 R4 K14
- 0x88180119, // 0037 GETMBR R6 R0 K25
- 0x8C180D10, // 0038 GETMET R6 R6 K16
- 0x7C180200, // 0039 CALL R6 1
- 0x001A3606, // 003A ADD R6 K27 R6
- 0x541E0003, // 003B LDINT R7 4
- 0x7C100600, // 003C CALL R4 3
- 0xB8121A00, // 003D GETNGBL R4 K13
- 0x8C10090E, // 003E GETMET R4 R4 K14
- 0x8818011A, // 003F GETMBR R6 R0 K26
- 0x8C180D10, // 0040 GETMET R6 R6 K16
- 0x7C180200, // 0041 CALL R6 1
- 0x001A3806, // 0042 ADD R6 K28 R6
- 0x541E0003, // 0043 LDINT R7 4
- 0x7C100600, // 0044 CALL R4 3
- 0x88100113, // 0045 GETMBR R4 R0 K19
- 0x8C10091D, // 0046 GETMET R4 R4 K29
- 0x8818010C, // 0047 GETMBR R6 R0 K12
- 0x7C100400, // 0048 CALL R4 2
- 0xB8121A00, // 0049 GETNGBL R4 K13
- 0x8C10090E, // 004A GETMET R4 R4 K14
- 0x88180113, // 004B GETMBR R6 R0 K19
- 0x88180D1F, // 004C GETMBR R6 R6 K31
- 0x8C180D10, // 004D GETMET R6 R6 K16
- 0x7C180200, // 004E CALL R6 1
- 0x001A3C06, // 004F ADD R6 K30 R6
- 0x541E0003, // 0050 LDINT R7 4
- 0x7C100600, // 0051 CALL R4 3
- 0xB8121A00, // 0052 GETNGBL R4 K13
- 0x8C10090E, // 0053 GETMET R4 R4 K14
- 0x88180113, // 0054 GETMBR R6 R0 K19
- 0x88180D21, // 0055 GETMBR R6 R6 K33
- 0x8C180D10, // 0056 GETMET R6 R6 K16
- 0x7C180200, // 0057 CALL R6 1
- 0x001A4006, // 0058 ADD R6 K32 R6
- 0x541E0003, // 0059 LDINT R7 4
- 0x7C100600, // 005A CALL R4 3
- 0x8C100522, // 005B GETMET R4 R2 K34
- 0x7C100200, // 005C CALL R4 1
- 0x8C140923, // 005D GETMET R5 R4 K35
- 0x601C0015, // 005E GETGBL R7 G21
- 0x7C1C0000, // 005F CALL R7 0
- 0x8C1C0F24, // 0060 GETMET R7 R7 K36
- 0x88240125, // 0061 GETMBR R9 R0 K37
- 0x7C1C0400, // 0062 CALL R7 2
- 0x7C140400, // 0063 CALL R5 2
- 0x8C140923, // 0064 GETMET R5 R4 K35
- 0x881C0126, // 0065 GETMBR R7 R0 K38
- 0x7C140400, // 0066 CALL R5 2
- 0x8C140923, // 0067 GETMET R5 R4 K35
- 0x881C0127, // 0068 GETMBR R7 R0 K39
- 0x7C140400, // 0069 CALL R5 2
- 0x8C140928, // 006A GETMET R5 R4 K40
- 0x7C140200, // 006B CALL R5 1
- 0xB81A1A00, // 006C GETNGBL R6 K13
- 0x8C180D0E, // 006D GETMET R6 R6 K14
- 0x8C200B10, // 006E GETMET R8 R5 K16
- 0x7C200200, // 006F CALL R8 1
- 0x00225208, // 0070 ADD R8 K41 R8
- 0x54260003, // 0071 LDINT R9 4
- 0x7C180600, // 0072 CALL R6 3
- 0x88180113, // 0073 GETMBR R6 R0 K19
- 0x881C010C, // 0074 GETMBR R7 R0 K12
- 0x901A1807, // 0075 SETMBR R6 K12 R7
- 0x88180113, // 0076 GETMBR R6 R0 K19
- 0x8C180D2A, // 0077 GETMET R6 R6 K42
- 0x5C200A00, // 0078 MOVE R8 R5
- 0x7C180400, // 0079 CALL R6 2
- 0x88180113, // 007A GETMBR R6 R0 K19
- 0x8C180D2B, // 007B GETMET R6 R6 K43
- 0x50200200, // 007C LDBOOL R8 1 0
- 0x7C180400, // 007D CALL R6 2
- 0xB81A1A00, // 007E GETNGBL R6 K13
- 0x8C180D0E, // 007F GETMET R6 R6 K14
- 0x5820002C, // 0080 LDCONST R8 K44
- 0x54260003, // 0081 LDINT R9 4
- 0x7C180600, // 0082 CALL R6 3
- 0xB81A1A00, // 0083 GETNGBL R6 K13
- 0x8C180D0E, // 0084 GETMET R6 R6 K14
- 0x88200113, // 0085 GETMBR R8 R0 K19
- 0x8820112E, // 0086 GETMBR R8 R8 K46
- 0x8C201110, // 0087 GETMET R8 R8 K16
- 0x7C200200, // 0088 CALL R8 1
- 0x00225A08, // 0089 ADD R8 K45 R8
- 0x54260003, // 008A LDINT R9 4
- 0x7C180600, // 008B CALL R6 3
- 0xB81A1A00, // 008C GETNGBL R6 K13
- 0x8C180D0E, // 008D GETMET R6 R6 K14
- 0x88200113, // 008E GETMBR R8 R0 K19
- 0x88201130, // 008F GETMBR R8 R8 K48
- 0x8C201110, // 0090 GETMET R8 R8 K16
- 0x7C200200, // 0091 CALL R8 1
- 0x00225E08, // 0092 ADD R8 K47 R8
- 0x54260003, // 0093 LDINT R9 4
- 0x7C180600, // 0094 CALL R6 3
- 0xB81A1A00, // 0095 GETNGBL R6 K13
- 0x8C180D0E, // 0096 GETMET R6 R6 K14
- 0x88200113, // 0097 GETMBR R8 R0 K19
- 0x88201132, // 0098 GETMBR R8 R8 K50
- 0x8C201110, // 0099 GETMET R8 R8 K16
- 0x7C200200, // 009A CALL R8 1
- 0x00226208, // 009B ADD R8 K49 R8
- 0x54260003, // 009C LDINT R9 4
- 0x7C180600, // 009D CALL R6 3
- 0xB81A1A00, // 009E GETNGBL R6 K13
- 0x8C180D0E, // 009F GETMET R6 R6 K14
- 0x88200113, // 00A0 GETMBR R8 R0 K19
- 0x8820110C, // 00A1 GETMBR R8 R8 K12
- 0x8C201110, // 00A2 GETMET R8 R8 K16
- 0x7C200200, // 00A3 CALL R8 1
- 0x00226608, // 00A4 ADD R8 K51 R8
- 0x54260003, // 00A5 LDINT R9 4
- 0x7C180600, // 00A6 CALL R6 3
- 0xB81A1A00, // 00A7 GETNGBL R6 K13
- 0x8C180D0E, // 00A8 GETMET R6 R6 K14
- 0x88200113, // 00A9 GETMBR R8 R0 K19
- 0x8820111A, // 00AA GETMBR R8 R8 K26
- 0x8C201110, // 00AB GETMET R8 R8 K16
- 0x7C200200, // 00AC CALL R8 1
- 0x00226808, // 00AD ADD R8 K52 R8
- 0x54260003, // 00AE LDINT R9 4
- 0x7C180600, // 00AF CALL R6 3
- 0xB81A1A00, // 00B0 GETNGBL R6 K13
- 0x8C180D0E, // 00B1 GETMET R6 R6 K14
- 0x88200113, // 00B2 GETMBR R8 R0 K19
- 0x8820111F, // 00B3 GETMBR R8 R8 K31
- 0x8C201110, // 00B4 GETMET R8 R8 K16
- 0x7C200200, // 00B5 CALL R8 1
- 0x00226A08, // 00B6 ADD R8 K53 R8
- 0x54260003, // 00B7 LDINT R9 4
- 0x7C180600, // 00B8 CALL R6 3
- 0xB81A1A00, // 00B9 GETNGBL R6 K13
- 0x8C180D0E, // 00BA GETMET R6 R6 K14
- 0x88200113, // 00BB GETMBR R8 R0 K19
- 0x88201121, // 00BC GETMBR R8 R8 K33
- 0x8C201110, // 00BD GETMET R8 R8 K16
- 0x7C200200, // 00BE CALL R8 1
- 0x00226C08, // 00BF ADD R8 K54 R8
- 0x54260003, // 00C0 LDINT R9 4
- 0x7C180600, // 00C1 CALL R6 3
- 0xB81A1A00, // 00C2 GETNGBL R6 K13
- 0x8C180D0E, // 00C3 GETMET R6 R6 K14
- 0x88200113, // 00C4 GETMBR R8 R0 K19
- 0x88201138, // 00C5 GETMBR R8 R8 K56
- 0x8C201110, // 00C6 GETMET R8 R8 K16
- 0x7C200200, // 00C7 CALL R8 1
- 0x00226E08, // 00C8 ADD R8 K55 R8
- 0x54260003, // 00C9 LDINT R9 4
- 0x7C180600, // 00CA CALL R6 3
- 0xB81A1A00, // 00CB GETNGBL R6 K13
- 0x8C180D0E, // 00CC GETMET R6 R6 K14
- 0x5820002C, // 00CD LDCONST R8 K44
- 0x54260003, // 00CE LDINT R9 4
- 0x7C180600, // 00CF CALL R6 3
- 0xB81A1A00, // 00D0 GETNGBL R6 K13
- 0x8C180D0E, // 00D1 GETMET R6 R6 K14
- 0x88200113, // 00D2 GETMBR R8 R0 K19
- 0x8820113A, // 00D3 GETMBR R8 R8 K58
- 0x8C201110, // 00D4 GETMET R8 R8 K16
- 0x7C200200, // 00D5 CALL R8 1
- 0x00227208, // 00D6 ADD R8 K57 R8
- 0x54260003, // 00D7 LDINT R9 4
- 0x7C180600, // 00D8 CALL R6 3
- 0xB81A1A00, // 00D9 GETNGBL R6 K13
- 0x8C180D0E, // 00DA GETMET R6 R6 K14
- 0x88200113, // 00DB GETMBR R8 R0 K19
- 0x8820113C, // 00DC GETMBR R8 R8 K60
- 0x8C201110, // 00DD GETMET R8 R8 K16
- 0x7C200200, // 00DE CALL R8 1
- 0x00227608, // 00DF ADD R8 K59 R8
- 0x54260003, // 00E0 LDINT R9 4
- 0x7C180600, // 00E1 CALL R6 3
- 0xB81A1A00, // 00E2 GETNGBL R6 K13
- 0x8C180D0E, // 00E3 GETMET R6 R6 K14
- 0x88200113, // 00E4 GETMBR R8 R0 K19
- 0x8820113E, // 00E5 GETMBR R8 R8 K62
- 0x8C201110, // 00E6 GETMET R8 R8 K16
- 0x7C200200, // 00E7 CALL R8 1
- 0x00227A08, // 00E8 ADD R8 K61 R8
- 0x54260003, // 00E9 LDINT R9 4
- 0x7C180600, // 00EA CALL R6 3
- 0xB81A1A00, // 00EB GETNGBL R6 K13
- 0x8C180D0E, // 00EC GETMET R6 R6 K14
- 0x88200113, // 00ED GETMBR R8 R0 K19
- 0x88201140, // 00EE GETMBR R8 R8 K64
- 0x8C201110, // 00EF GETMET R8 R8 K16
- 0x7C200200, // 00F0 CALL R8 1
- 0x00227E08, // 00F1 ADD R8 K63 R8
- 0x54260003, // 00F2 LDINT R9 4
- 0x7C180600, // 00F3 CALL R6 3
- 0xB81A1A00, // 00F4 GETNGBL R6 K13
- 0x8C180D0E, // 00F5 GETMET R6 R6 K14
- 0x88200113, // 00F6 GETMBR R8 R0 K19
- 0x88201142, // 00F7 GETMBR R8 R8 K66
- 0x8C201110, // 00F8 GETMET R8 R8 K16
- 0x7C200200, // 00F9 CALL R8 1
- 0x00228208, // 00FA ADD R8 K65 R8
- 0x54260003, // 00FB LDINT R9 4
- 0x7C180600, // 00FC CALL R6 3
- 0x88180113, // 00FD GETMBR R6 R0 K19
- 0x88180D43, // 00FE GETMBR R6 R6 K67
- 0x90028606, // 00FF SETMBR R0 K67 R6
- 0x88180113, // 0100 GETMBR R6 R0 K19
- 0x88180D42, // 0101 GETMBR R6 R6 K66
- 0x90028406, // 0102 SETMBR R0 K66 R6
- 0xB81A1A00, // 0103 GETNGBL R6 K13
- 0x8C180D0E, // 0104 GETMET R6 R6 K14
- 0x88200143, // 0105 GETMBR R8 R0 K67
- 0x8C201110, // 0106 GETMET R8 R8 K16
- 0x7C200200, // 0107 CALL R8 1
- 0x00228808, // 0108 ADD R8 K68 R8
- 0x54260003, // 0109 LDINT R9 4
- 0x7C180600, // 010A CALL R6 3
- 0xB81A0E00, // 010B GETNGBL R6 K7
- 0x8C180D45, // 010C GETMET R6 R6 K69
- 0x7C180200, // 010D CALL R6 1
- 0x881C011A, // 010E GETMBR R7 R0 K26
- 0x901A3407, // 010F SETMBR R6 K26 R7
- 0x881C0143, // 0110 GETMBR R7 R0 K67
- 0x901A8607, // 0111 SETMBR R6 K67 R7
- 0xB81E1A00, // 0112 GETNGBL R7 K13
- 0x8C1C0F0E, // 0113 GETMET R7 R7 K14
- 0xB8260E00, // 0114 GETNGBL R9 K7
- 0x8C241312, // 0115 GETMET R9 R9 K18
- 0x5C2C0C00, // 0116 MOVE R11 R6
- 0x7C240400, // 0117 CALL R9 2
- 0x00268C09, // 0118 ADD R9 K70 R9
- 0x542A0003, // 0119 LDINT R10 4
- 0x7C1C0600, // 011A CALL R7 3
- 0x8C1C0D47, // 011B GETMET R7 R6 K71
- 0x7C1C0200, // 011C CALL R7 1
- 0xB8221A00, // 011D GETNGBL R8 K13
- 0x8C20110E, // 011E GETMET R8 R8 K14
- 0x8C280F10, // 011F GETMET R10 R7 K16
- 0x7C280200, // 0120 CALL R10 1
- 0x002A900A, // 0121 ADD R10 K72 R10
- 0x542E0003, // 0122 LDINT R11 4
- 0x7C200600, // 0123 CALL R8 3
- 0x8C200349, // 0124 GETMET R8 R1 K73
- 0x542A0022, // 0125 LDINT R10 35
- 0x502C0200, // 0126 LDBOOL R11 1 0
- 0x7C200600, // 0127 CALL R8 3
- 0x8C241147, // 0128 GETMET R9 R8 K71
- 0x5C2C0E00, // 0129 MOVE R11 R7
- 0x7C240400, // 012A CALL R9 2
- 0x8828014A, // 012B GETMBR R10 R0 K74
- 0x8C28154B, // 012C GETMET R10 R10 K75
- 0x5C301200, // 012D MOVE R12 R9
- 0x8834034C, // 012E GETMBR R13 R1 K76
- 0x8838034D, // 012F GETMBR R14 R1 K77
- 0x883C114E, // 0130 GETMBR R15 R8 K78
- 0x7C280A00, // 0131 CALL R10 5
- 0x80000000, // 0132 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_Pake3
-********************************************************************/
-be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
- be_nested_proto(
- 16, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[46]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(opcode),
- /* K2 */ be_nested_str_weak(local_session_id),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(protocol_id),
- /* K5 */ be_nested_str_weak(protocol_error),
- /* K6 */ be_nested_str_weak(invalid_X20Pake3_X20message),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(Pake3),
- /* K9 */ be_nested_str_weak(parse),
- /* K10 */ be_nested_str_weak(raw),
- /* K11 */ be_nested_str_weak(app_payload_idx),
- /* K12 */ be_nested_str_weak(cA),
- /* K13 */ be_nested_str_weak(tasmota),
- /* K14 */ be_nested_str_weak(log),
- /* K15 */ be_nested_str_weak(MTR_X3A_X20received_X20cA_X3D),
- /* K16 */ be_nested_str_weak(tohex),
- /* K17 */ be_nested_str_weak(spake),
- /* K18 */ be_nested_str_weak(invalid_X20cA_X20received),
- /* K19 */ be_nested_str_weak(created),
- /* K20 */ be_nested_str_weak(rtc),
- /* K21 */ be_nested_str_weak(utc),
- /* K22 */ be_nested_str_weak(HKDF_SHA256),
- /* K23 */ be_nested_str_weak(derive),
- /* K24 */ be_nested_str_weak(Ke),
- /* K25 */ be_nested_str_weak(fromstring),
- /* K26 */ be_nested_str_weak(SEKeys_Info),
- /* K27 */ be_nested_str_weak(I2RKey),
- /* K28 */ be_nested_str_weak(R2IKey),
- /* K29 */ be_nested_str_weak(AttestationChallenge),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
- /* K31 */ be_nested_str_weak(MTR_X3A_X20session_keys_X3D),
- /* K32 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D),
- /* K33 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D),
- /* K34 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D),
- /* K35 */ be_nested_str_weak(build_response),
- /* K36 */ be_nested_str_weak(add),
- /* K37 */ be_const_int(2),
- /* K38 */ be_nested_str_weak(encode),
- /* K39 */ be_nested_str_weak(responder),
- /* K40 */ be_nested_str_weak(send_response),
- /* K41 */ be_nested_str_weak(remote_ip),
- /* K42 */ be_nested_str_weak(remote_port),
- /* K43 */ be_nested_str_weak(add_session),
- /* K44 */ be_nested_str_weak(future_local_session_id),
- /* K45 */ be_nested_str_weak(future_initiator_session_id),
- }),
- be_str_weak(parse_Pake3),
- &be_const_str_solidified,
- ( &(const binstruction[146]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x54120023, // 0002 LDINT R4 36
- 0x200C0604, // 0003 NE R3 R3 R4
- 0x740E0005, // 0004 JMPT R3 #000B
- 0x880C0302, // 0005 GETMBR R3 R1 K2
- 0x200C0703, // 0006 NE R3 R3 K3
- 0x740E0002, // 0007 JMPT R3 #000B
- 0x880C0304, // 0008 GETMBR R3 R1 K4
- 0x200C0703, // 0009 NE R3 R3 K3
- 0x780E0000, // 000A JMPF R3 #000C
- 0xB0060B06, // 000B RAISE 1 K5 K6
- 0xB80E0E00, // 000C GETNGBL R3 K7
- 0x8C0C0708, // 000D GETMET R3 R3 K8
- 0x7C0C0200, // 000E CALL R3 1
- 0x8C0C0709, // 000F GETMET R3 R3 K9
- 0x8814030A, // 0010 GETMBR R5 R1 K10
- 0x8818030B, // 0011 GETMBR R6 R1 K11
- 0x7C0C0600, // 0012 CALL R3 3
- 0x8810070C, // 0013 GETMBR R4 R3 K12
- 0x90021804, // 0014 SETMBR R0 K12 R4
- 0xB8121A00, // 0015 GETNGBL R4 K13
- 0x8C10090E, // 0016 GETMET R4 R4 K14
- 0x8818010C, // 0017 GETMBR R6 R0 K12
- 0x8C180D10, // 0018 GETMET R6 R6 K16
- 0x7C180200, // 0019 CALL R6 1
- 0x001A1E06, // 001A ADD R6 K15 R6
- 0x541E0003, // 001B LDINT R7 4
- 0x7C100600, // 001C CALL R4 3
- 0x8810010C, // 001D GETMBR R4 R0 K12
- 0x88140111, // 001E GETMBR R5 R0 K17
- 0x88140B0C, // 001F GETMBR R5 R5 K12
- 0x20100805, // 0020 NE R4 R4 R5
- 0x78120000, // 0021 JMPF R4 #0023
- 0xB0060B12, // 0022 RAISE 1 K5 K18
- 0xB8121A00, // 0023 GETNGBL R4 K13
- 0x8C100914, // 0024 GETMET R4 R4 K20
- 0x7C100200, // 0025 CALL R4 1
- 0x94100915, // 0026 GETIDX R4 R4 K21
- 0x90022604, // 0027 SETMBR R0 K19 R4
- 0x8C100516, // 0028 GETMET R4 R2 K22
- 0x7C100200, // 0029 CALL R4 1
- 0x8C100917, // 002A GETMET R4 R4 K23
- 0x88180118, // 002B GETMBR R6 R0 K24
- 0x601C0015, // 002C GETGBL R7 G21
- 0x7C1C0000, // 002D CALL R7 0
- 0x60200015, // 002E GETGBL R8 G21
- 0x7C200000, // 002F CALL R8 0
- 0x8C201119, // 0030 GETMET R8 R8 K25
- 0x8828011A, // 0031 GETMBR R10 R0 K26
- 0x7C200400, // 0032 CALL R8 2
- 0x5426002F, // 0033 LDINT R9 48
- 0x7C100A00, // 0034 CALL R4 5
- 0x5416000E, // 0035 LDINT R5 15
- 0x40160605, // 0036 CONNECT R5 K3 R5
- 0x94140805, // 0037 GETIDX R5 R4 R5
- 0x90023605, // 0038 SETMBR R0 K27 R5
- 0x5416000F, // 0039 LDINT R5 16
- 0x541A001E, // 003A LDINT R6 31
- 0x40140A06, // 003B CONNECT R5 R5 R6
- 0x94140805, // 003C GETIDX R5 R4 R5
- 0x90023805, // 003D SETMBR R0 K28 R5
- 0x5416001F, // 003E LDINT R5 32
- 0x541A002E, // 003F LDINT R6 47
- 0x40140A06, // 0040 CONNECT R5 R5 R6
- 0x94140805, // 0041 GETIDX R5 R4 R5
- 0x90023A05, // 0042 SETMBR R0 K29 R5
- 0xB8161A00, // 0043 GETNGBL R5 K13
- 0x8C140B0E, // 0044 GETMET R5 R5 K14
- 0x581C001E, // 0045 LDCONST R7 K30
- 0x54220003, // 0046 LDINT R8 4
- 0x7C140600, // 0047 CALL R5 3
- 0xB8161A00, // 0048 GETNGBL R5 K13
- 0x8C140B0E, // 0049 GETMET R5 R5 K14
- 0x8C1C0910, // 004A GETMET R7 R4 K16
- 0x7C1C0200, // 004B CALL R7 1
- 0x001E3E07, // 004C ADD R7 K31 R7
- 0x54220003, // 004D LDINT R8 4
- 0x7C140600, // 004E CALL R5 3
- 0xB8161A00, // 004F GETNGBL R5 K13
- 0x8C140B0E, // 0050 GETMET R5 R5 K14
- 0x881C011B, // 0051 GETMBR R7 R0 K27
- 0x8C1C0F10, // 0052 GETMET R7 R7 K16
- 0x7C1C0200, // 0053 CALL R7 1
- 0x001E4007, // 0054 ADD R7 K32 R7
- 0x54220003, // 0055 LDINT R8 4
- 0x7C140600, // 0056 CALL R5 3
- 0xB8161A00, // 0057 GETNGBL R5 K13
- 0x8C140B0E, // 0058 GETMET R5 R5 K14
- 0x881C011C, // 0059 GETMBR R7 R0 K28
- 0x8C1C0F10, // 005A GETMET R7 R7 K16
- 0x7C1C0200, // 005B CALL R7 1
- 0x001E4207, // 005C ADD R7 K33 R7
- 0x54220003, // 005D LDINT R8 4
- 0x7C140600, // 005E CALL R5 3
- 0xB8161A00, // 005F GETNGBL R5 K13
- 0x8C140B0E, // 0060 GETMET R5 R5 K14
- 0x881C011D, // 0061 GETMBR R7 R0 K29
- 0x8C1C0F10, // 0062 GETMET R7 R7 K16
- 0x7C1C0200, // 0063 CALL R7 1
- 0x001E4407, // 0064 ADD R7 K34 R7
- 0x54220003, // 0065 LDINT R8 4
- 0x7C140600, // 0066 CALL R5 3
- 0xB8161A00, // 0067 GETNGBL R5 K13
- 0x8C140B0E, // 0068 GETMET R5 R5 K14
- 0x581C001E, // 0069 LDCONST R7 K30
- 0x54220003, // 006A LDINT R8 4
- 0x7C140600, // 006B CALL R5 3
- 0x8C140323, // 006C GETMET R5 R1 K35
- 0x541E003F, // 006D LDINT R7 64
- 0x50200000, // 006E LDBOOL R8 0 0
- 0x7C140600, // 006F CALL R5 3
- 0x60180015, // 0070 GETGBL R6 G21
- 0x7C180000, // 0071 CALL R6 0
- 0x8C1C0D24, // 0072 GETMET R7 R6 K36
- 0x58240003, // 0073 LDCONST R9 K3
- 0x58280025, // 0074 LDCONST R10 K37
- 0x7C1C0600, // 0075 CALL R7 3
- 0x8C1C0D24, // 0076 GETMET R7 R6 K36
- 0x58240003, // 0077 LDCONST R9 K3
- 0x542A0003, // 0078 LDINT R10 4
- 0x7C1C0600, // 0079 CALL R7 3
- 0x8C1C0D24, // 007A GETMET R7 R6 K36
- 0x58240003, // 007B LDCONST R9 K3
- 0x542A0003, // 007C LDINT R10 4
- 0x7C1C0600, // 007D CALL R7 3
- 0x8C1C0B26, // 007E GETMET R7 R5 K38
- 0x5C240C00, // 007F MOVE R9 R6
- 0x7C1C0400, // 0080 CALL R7 2
- 0x88200127, // 0081 GETMBR R8 R0 K39
- 0x8C201128, // 0082 GETMET R8 R8 K40
- 0x5C280E00, // 0083 MOVE R10 R7
- 0x882C0329, // 0084 GETMBR R11 R1 K41
- 0x8830032A, // 0085 GETMBR R12 R1 K42
- 0x4C340000, // 0086 LDNIL R13
- 0x7C200A00, // 0087 CALL R8 5
- 0x88200127, // 0088 GETMBR R8 R0 K39
- 0x8C20112B, // 0089 GETMET R8 R8 K43
- 0x8828012C, // 008A GETMBR R10 R0 K44
- 0x882C012D, // 008B GETMBR R11 R0 K45
- 0x8830011B, // 008C GETMBR R12 R0 K27
- 0x8834011C, // 008D GETMBR R13 R0 K28
- 0x8838011D, // 008E GETMBR R14 R0 K29
- 0x883C0113, // 008F GETMBR R15 R0 K19
- 0x7C200E00, // 0090 CALL R8 7
- 0x80000000, // 0091 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: parse_Sigma3
********************************************************************/
be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
be_nested_proto(
- 38, /* nstack */
+ 36, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -851,107 +57,99 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[96]) { /* constants */
+ ( &(const bvalue[88]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(opcode),
/* K2 */ be_nested_str_weak(local_session_id),
/* K3 */ be_const_int(0),
/* K4 */ be_nested_str_weak(protocol_id),
- /* K5 */ be_nested_str_weak(protocol_error),
- /* K6 */ be_nested_str_weak(invalid_X20Pake1_X20message),
- /* K7 */ be_nested_str_weak(session),
- /* K8 */ be_nested_str_weak(matter),
- /* K9 */ be_nested_str_weak(Sigma3),
- /* K10 */ be_nested_str_weak(parse),
- /* K11 */ be_nested_str_weak(raw),
- /* K12 */ be_nested_str_weak(app_payload_idx),
- /* K13 */ be_nested_str_weak(tasmota),
- /* K14 */ be_nested_str_weak(log),
- /* K15 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
- /* K16 */ be_nested_str_weak(SHA256),
- /* K17 */ be_nested_str_weak(update),
- /* K18 */ be_nested_str_weak(__Msg1),
- /* K19 */ be_nested_str_weak(__Msg2),
- /* K20 */ be_nested_str_weak(out),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20session_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20session_X2Eipk_epoch_key_X20),
- /* K23 */ be_nested_str_weak(get_ipk_epoch_key),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20session_X2Efabric_compressed_X20),
- /* K25 */ be_nested_str_weak(get_fabric_compressed),
- /* K26 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20ipk_group_key_X20_X3D_X20),
- /* K27 */ be_nested_str_weak(get_ipk_group_key),
- /* K28 */ be_nested_str_weak(tohex),
- /* K29 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TranscriptHash_X3D_X20),
- /* K30 */ be_nested_str_weak(fromstring),
- /* K31 */ be_nested_str_weak(S3K_Info),
- /* K32 */ be_nested_str_weak(HKDF_SHA256),
- /* K33 */ be_nested_str_weak(derive),
- /* K34 */ be_nested_str_weak(shared_secret),
- /* K35 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s3k_salt_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K36 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s3k_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K37 */ be_nested_str_weak(TBEData3Encrypted),
- /* K38 */ be_const_int(2147483647),
- /* K39 */ be_nested_str_weak(AES_CCM),
- /* K40 */ be_nested_str_weak(TBEData3_Nonce),
- /* K41 */ be_nested_str_weak(decrypt),
- /* K42 */ be_nested_str_weak(tag),
- /* K43 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBEData3_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBETag3_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20tag_sent_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K46 */ be_nested_str_weak(value_error),
- /* K47 */ be_nested_str_weak(tag_X20do_X20not_X20match),
- /* K48 */ be_nested_str_weak(TLV),
- /* K49 */ be_nested_str_weak(findsubval),
- /* K50 */ be_const_int(1),
- /* K51 */ be_const_int(2),
- /* K52 */ be_const_int(3),
- /* K53 */ be_nested_str_weak(MTR_X3A_X20initiatorNOCTLV_X20_X3D_X20),
- /* K54 */ be_nested_str_weak(findsub),
- /* K55 */ be_nested_str_weak(int),
- /* K56 */ be_nested_str_weak(int64),
- /* K57 */ be_nested_str_weak(peer_node_id),
- /* K58 */ be_nested_str_weak(tobytes),
- /* K59 */ be_nested_str_weak(MTR_X3A_X20initiatorFabricId_X3D),
- /* K60 */ be_nested_str_weak(Matter_TLV_struct),
- /* K61 */ be_nested_str_weak(add_TLV),
- /* K62 */ be_nested_str_weak(B1),
- /* K63 */ be_nested_str_weak(initiatorEph_pub),
- /* K64 */ be_nested_str_weak(ResponderEph_pub),
- /* K65 */ be_nested_str_weak(encode),
- /* K66 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20initiatorNOCPubKey_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K67 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20ec_signature_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K68 */ be_nested_str_weak(EC_P256),
- /* K69 */ be_nested_str_weak(ecdsa_verify_sha256),
- /* K70 */ be_nested_str_weak(sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature),
- /* K71 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys),
- /* K72 */ be_nested_str_weak(Msg3),
- /* K73 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
- /* K74 */ be_nested_str_weak(MTR_X3A_X20shared_secret_X20_X3D),
- /* K75 */ be_nested_str_weak(MTR_X3A_X20ipk_X20_X2B_X20hash_X20_X20_X20_X20_X3D),
- /* K76 */ be_nested_str_weak(SEKeys_Info),
- /* K77 */ be_nested_str_weak(rtc),
- /* K78 */ be_nested_str_weak(utc),
- /* K79 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D),
- /* K80 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D),
- /* K81 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D),
- /* K82 */ be_nested_str_weak(build_response),
- /* K83 */ be_nested_str_weak(add),
- /* K84 */ be_nested_str_weak(responder),
- /* K85 */ be_nested_str_weak(send_response),
- /* K86 */ be_nested_str_weak(remote_ip),
- /* K87 */ be_nested_str_weak(remote_port),
- /* K88 */ be_nested_str_weak(message_counter),
- /* K89 */ be_nested_str_weak(close),
- /* K90 */ be_nested_str_weak(set_keys),
- /* K91 */ be_nested_str_weak(_breadcrumb),
- /* K92 */ be_nested_str_weak(set_persist),
- /* K93 */ be_nested_str_weak(set_no_expiration),
- /* K94 */ be_nested_str_weak(persist_to_fabric),
- /* K95 */ be_nested_str_weak(save),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(send_status_report),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_nested_str_weak(session),
+ /* K12 */ be_nested_str_weak(matter),
+ /* K13 */ be_nested_str_weak(Sigma3),
+ /* K14 */ be_nested_str_weak(parse),
+ /* K15 */ be_nested_str_weak(raw),
+ /* K16 */ be_nested_str_weak(app_payload_idx),
+ /* K17 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
+ /* K18 */ be_nested_str_weak(SHA256),
+ /* K19 */ be_nested_str_weak(update),
+ /* K20 */ be_nested_str_weak(__Msg1),
+ /* K21 */ be_nested_str_weak(__Msg2),
+ /* K22 */ be_nested_str_weak(out),
+ /* K23 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20session_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20session_X2Eipk_epoch_key_X20),
+ /* K25 */ be_nested_str_weak(get_ipk_epoch_key),
+ /* K26 */ be_nested_str_weak(MTR_X3A_X20session_X2Efabric_compressed_X20),
+ /* K27 */ be_nested_str_weak(get_fabric_compressed),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20ipk_group_key_X20_X3D_X20),
+ /* K29 */ be_nested_str_weak(get_ipk_group_key),
+ /* K30 */ be_nested_str_weak(tohex),
+ /* K31 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TranscriptHash_X3D_X20),
+ /* K32 */ be_nested_str_weak(fromstring),
+ /* K33 */ be_nested_str_weak(S3K_Info),
+ /* K34 */ be_nested_str_weak(HKDF_SHA256),
+ /* K35 */ be_nested_str_weak(derive),
+ /* K36 */ be_nested_str_weak(shared_secret),
+ /* K37 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s3k_salt_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K38 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s3k_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K39 */ be_nested_str_weak(TBEData3Encrypted),
+ /* K40 */ be_const_int(2147483647),
+ /* K41 */ be_nested_str_weak(AES_CCM),
+ /* K42 */ be_nested_str_weak(TBEData3_Nonce),
+ /* K43 */ be_nested_str_weak(decrypt),
+ /* K44 */ be_nested_str_weak(tag),
+ /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBEData3_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K46 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBETag3_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20tag_sent_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K48 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match),
+ /* K49 */ be_nested_str_weak(TLV),
+ /* K50 */ be_nested_str_weak(findsubval),
+ /* K51 */ be_const_int(3),
+ /* K52 */ be_nested_str_weak(MTR_X3A_X20initiatorNOCTLV_X20_X3D_X20),
+ /* K53 */ be_nested_str_weak(findsub),
+ /* K54 */ be_nested_str_weak(int),
+ /* K55 */ be_nested_str_weak(int64),
+ /* K56 */ be_nested_str_weak(peer_node_id),
+ /* K57 */ be_nested_str_weak(tobytes),
+ /* K58 */ be_nested_str_weak(MTR_X3A_X20initiatorFabricId_X3D),
+ /* K59 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K60 */ be_nested_str_weak(add_TLV),
+ /* K61 */ be_nested_str_weak(B1),
+ /* K62 */ be_nested_str_weak(initiatorEph_pub),
+ /* K63 */ be_nested_str_weak(ResponderEph_pub),
+ /* K64 */ be_nested_str_weak(encode),
+ /* K65 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20initiatorNOCPubKey_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K66 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20ec_signature_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K67 */ be_nested_str_weak(EC_P256),
+ /* K68 */ be_nested_str_weak(ecdsa_verify_sha256),
+ /* K69 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature),
+ /* K70 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys),
+ /* K71 */ be_nested_str_weak(Msg3),
+ /* K72 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
+ /* K73 */ be_nested_str_weak(MTR_X3A_X20shared_secret_X20_X3D),
+ /* K74 */ be_nested_str_weak(MTR_X3A_X20ipk_X20_X2B_X20hash_X20_X20_X20_X20_X3D),
+ /* K75 */ be_nested_str_weak(SEKeys_Info),
+ /* K76 */ be_nested_str_weak(rtc),
+ /* K77 */ be_nested_str_weak(utc),
+ /* K78 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D),
+ /* K79 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D),
+ /* K80 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D),
+ /* K81 */ be_nested_str_weak(close),
+ /* K82 */ be_nested_str_weak(set_keys),
+ /* K83 */ be_nested_str_weak(_breadcrumb),
+ /* K84 */ be_nested_str_weak(set_persist),
+ /* K85 */ be_nested_str_weak(set_no_expiration),
+ /* K86 */ be_nested_str_weak(persist_to_fabric),
+ /* K87 */ be_nested_str_weak(save),
}),
be_str_weak(parse_Sigma3),
&be_const_str_solidified,
- ( &(const binstruction[450]) { /* code */
+ ( &(const binstruction[478]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x880C0301, // 0001 GETMBR R3 R1 K1
0x54120031, // 0002 LDINT R4 50
@@ -962,1170 +160,474 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
0x740E0002, // 0007 JMPT R3 #000B
0x880C0304, // 0008 GETMBR R3 R1 K4
0x200C0703, // 0009 NE R3 R3 K3
- 0x780E0000, // 000A JMPF R3 #000C
- 0xB0060B06, // 000B RAISE 1 K5 K6
- 0x880C0307, // 000C GETMBR R3 R1 K7
- 0xB8121000, // 000D GETNGBL R4 K8
- 0x8C100909, // 000E GETMET R4 R4 K9
- 0x7C100200, // 000F CALL R4 1
- 0x8C10090A, // 0010 GETMET R4 R4 K10
- 0x8818030B, // 0011 GETMBR R6 R1 K11
- 0x881C030C, // 0012 GETMBR R7 R1 K12
- 0x7C100600, // 0013 CALL R4 3
- 0xB8161A00, // 0014 GETNGBL R5 K13
- 0x8C140B0E, // 0015 GETMET R5 R5 K14
- 0x581C000F, // 0016 LDCONST R7 K15
- 0x54220003, // 0017 LDINT R8 4
- 0x7C140600, // 0018 CALL R5 3
- 0x8C140510, // 0019 GETMET R5 R2 K16
- 0x7C140200, // 001A CALL R5 1
- 0x8C140B11, // 001B GETMET R5 R5 K17
- 0x881C0712, // 001C GETMBR R7 R3 K18
- 0x7C140400, // 001D CALL R5 2
- 0x8C140B11, // 001E GETMET R5 R5 K17
- 0x881C0713, // 001F GETMBR R7 R3 K19
- 0x7C140400, // 0020 CALL R5 2
- 0x8C140B14, // 0021 GETMET R5 R5 K20
- 0x7C140200, // 0022 CALL R5 1
- 0xB81A1A00, // 0023 GETNGBL R6 K13
- 0x8C180D0E, // 0024 GETMET R6 R6 K14
- 0x60200008, // 0025 GETGBL R8 G8
- 0x5C240600, // 0026 MOVE R9 R3
- 0x7C200200, // 0027 CALL R8 1
- 0x00222A08, // 0028 ADD R8 K21 R8
- 0x54260003, // 0029 LDINT R9 4
- 0x7C180600, // 002A CALL R6 3
- 0xB81A1A00, // 002B GETNGBL R6 K13
- 0x8C180D0E, // 002C GETMET R6 R6 K14
- 0x60200008, // 002D GETGBL R8 G8
- 0x8C240717, // 002E GETMET R9 R3 K23
- 0x7C240200, // 002F CALL R9 1
- 0x7C200200, // 0030 CALL R8 1
- 0x00222C08, // 0031 ADD R8 K22 R8
- 0x54260003, // 0032 LDINT R9 4
- 0x7C180600, // 0033 CALL R6 3
- 0xB81A1A00, // 0034 GETNGBL R6 K13
- 0x8C180D0E, // 0035 GETMET R6 R6 K14
- 0x60200008, // 0036 GETGBL R8 G8
- 0x8C240719, // 0037 GETMET R9 R3 K25
- 0x7C240200, // 0038 CALL R9 1
- 0x7C200200, // 0039 CALL R8 1
- 0x00223008, // 003A ADD R8 K24 R8
- 0x54260003, // 003B LDINT R9 4
- 0x7C180600, // 003C CALL R6 3
- 0xB81A1A00, // 003D GETNGBL R6 K13
- 0x8C180D0E, // 003E GETMET R6 R6 K14
- 0x8C20071B, // 003F GETMET R8 R3 K27
- 0x7C200200, // 0040 CALL R8 1
- 0x8C20111C, // 0041 GETMET R8 R8 K28
- 0x7C200200, // 0042 CALL R8 1
- 0x00223408, // 0043 ADD R8 K26 R8
- 0x54260003, // 0044 LDINT R9 4
- 0x7C180600, // 0045 CALL R6 3
- 0xB81A1A00, // 0046 GETNGBL R6 K13
- 0x8C180D0E, // 0047 GETMET R6 R6 K14
- 0x8C200B1C, // 0048 GETMET R8 R5 K28
- 0x7C200200, // 0049 CALL R8 1
- 0x00223A08, // 004A ADD R8 K29 R8
- 0x54260003, // 004B LDINT R9 4
- 0x7C180600, // 004C CALL R6 3
- 0x60180015, // 004D GETGBL R6 G21
- 0x7C180000, // 004E CALL R6 0
- 0x8C180D1E, // 004F GETMET R6 R6 K30
- 0x8820011F, // 0050 GETMBR R8 R0 K31
- 0x7C180400, // 0051 CALL R6 2
- 0x8C1C0520, // 0052 GETMET R7 R2 K32
- 0x7C1C0200, // 0053 CALL R7 1
- 0x8C1C0F21, // 0054 GETMET R7 R7 K33
- 0x88240722, // 0055 GETMBR R9 R3 K34
- 0x8C28071B, // 0056 GETMET R10 R3 K27
- 0x7C280200, // 0057 CALL R10 1
- 0x00281405, // 0058 ADD R10 R10 R5
- 0x5C2C0C00, // 0059 MOVE R11 R6
- 0x5432000F, // 005A LDINT R12 16
- 0x7C1C0A00, // 005B CALL R7 5
- 0xB8221A00, // 005C GETNGBL R8 K13
- 0x8C20110E, // 005D GETMET R8 R8 K14
- 0x5828000F, // 005E LDCONST R10 K15
- 0x542E0003, // 005F LDINT R11 4
- 0x7C200600, // 0060 CALL R8 3
- 0xB8221A00, // 0061 GETNGBL R8 K13
- 0x8C20110E, // 0062 GETMET R8 R8 K14
- 0x8C28071B, // 0063 GETMET R10 R3 K27
+ 0x780E000D, // 000A JMPF R3 #0019
+ 0xB80E0A00, // 000B GETNGBL R3 K5
+ 0x8C0C0706, // 000C GETMET R3 R3 K6
+ 0x58140007, // 000D LDCONST R5 K7
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C0C0600, // 000F CALL R3 3
+ 0x8C0C0109, // 0010 GETMET R3 R0 K9
+ 0x5C140200, // 0011 MOVE R5 R1
+ 0x5818000A, // 0012 LDCONST R6 K10
+ 0x581C0003, // 0013 LDCONST R7 K3
+ 0x58200008, // 0014 LDCONST R8 K8
+ 0x50240000, // 0015 LDBOOL R9 0 0
+ 0x7C0C0C00, // 0016 CALL R3 6
+ 0x50100000, // 0017 LDBOOL R4 0 0
+ 0x80040800, // 0018 RET 1 R4
+ 0x880C030B, // 0019 GETMBR R3 R1 K11
+ 0xB8121800, // 001A GETNGBL R4 K12
+ 0x8C10090D, // 001B GETMET R4 R4 K13
+ 0x7C100200, // 001C CALL R4 1
+ 0x8C10090E, // 001D GETMET R4 R4 K14
+ 0x8818030F, // 001E GETMBR R6 R1 K15
+ 0x881C0310, // 001F GETMBR R7 R1 K16
+ 0x7C100600, // 0020 CALL R4 3
+ 0xB8160A00, // 0021 GETNGBL R5 K5
+ 0x8C140B06, // 0022 GETMET R5 R5 K6
+ 0x581C0011, // 0023 LDCONST R7 K17
+ 0x54220003, // 0024 LDINT R8 4
+ 0x7C140600, // 0025 CALL R5 3
+ 0x8C140512, // 0026 GETMET R5 R2 K18
+ 0x7C140200, // 0027 CALL R5 1
+ 0x8C140B13, // 0028 GETMET R5 R5 K19
+ 0x881C0714, // 0029 GETMBR R7 R3 K20
+ 0x7C140400, // 002A CALL R5 2
+ 0x8C140B13, // 002B GETMET R5 R5 K19
+ 0x881C0715, // 002C GETMBR R7 R3 K21
+ 0x7C140400, // 002D CALL R5 2
+ 0x8C140B16, // 002E GETMET R5 R5 K22
+ 0x7C140200, // 002F CALL R5 1
+ 0xB81A0A00, // 0030 GETNGBL R6 K5
+ 0x8C180D06, // 0031 GETMET R6 R6 K6
+ 0x60200008, // 0032 GETGBL R8 G8
+ 0x5C240600, // 0033 MOVE R9 R3
+ 0x7C200200, // 0034 CALL R8 1
+ 0x00222E08, // 0035 ADD R8 K23 R8
+ 0x54260003, // 0036 LDINT R9 4
+ 0x7C180600, // 0037 CALL R6 3
+ 0xB81A0A00, // 0038 GETNGBL R6 K5
+ 0x8C180D06, // 0039 GETMET R6 R6 K6
+ 0x60200008, // 003A GETGBL R8 G8
+ 0x8C240719, // 003B GETMET R9 R3 K25
+ 0x7C240200, // 003C CALL R9 1
+ 0x7C200200, // 003D CALL R8 1
+ 0x00223008, // 003E ADD R8 K24 R8
+ 0x54260003, // 003F LDINT R9 4
+ 0x7C180600, // 0040 CALL R6 3
+ 0xB81A0A00, // 0041 GETNGBL R6 K5
+ 0x8C180D06, // 0042 GETMET R6 R6 K6
+ 0x60200008, // 0043 GETGBL R8 G8
+ 0x8C24071B, // 0044 GETMET R9 R3 K27
+ 0x7C240200, // 0045 CALL R9 1
+ 0x7C200200, // 0046 CALL R8 1
+ 0x00223408, // 0047 ADD R8 K26 R8
+ 0x54260003, // 0048 LDINT R9 4
+ 0x7C180600, // 0049 CALL R6 3
+ 0xB81A0A00, // 004A GETNGBL R6 K5
+ 0x8C180D06, // 004B GETMET R6 R6 K6
+ 0x8C20071D, // 004C GETMET R8 R3 K29
+ 0x7C200200, // 004D CALL R8 1
+ 0x8C20111E, // 004E GETMET R8 R8 K30
+ 0x7C200200, // 004F CALL R8 1
+ 0x00223808, // 0050 ADD R8 K28 R8
+ 0x54260003, // 0051 LDINT R9 4
+ 0x7C180600, // 0052 CALL R6 3
+ 0xB81A0A00, // 0053 GETNGBL R6 K5
+ 0x8C180D06, // 0054 GETMET R6 R6 K6
+ 0x8C200B1E, // 0055 GETMET R8 R5 K30
+ 0x7C200200, // 0056 CALL R8 1
+ 0x00223E08, // 0057 ADD R8 K31 R8
+ 0x54260003, // 0058 LDINT R9 4
+ 0x7C180600, // 0059 CALL R6 3
+ 0x60180015, // 005A GETGBL R6 G21
+ 0x7C180000, // 005B CALL R6 0
+ 0x8C180D20, // 005C GETMET R6 R6 K32
+ 0x88200121, // 005D GETMBR R8 R0 K33
+ 0x7C180400, // 005E CALL R6 2
+ 0x8C1C0522, // 005F GETMET R7 R2 K34
+ 0x7C1C0200, // 0060 CALL R7 1
+ 0x8C1C0F23, // 0061 GETMET R7 R7 K35
+ 0x88240724, // 0062 GETMBR R9 R3 K36
+ 0x8C28071D, // 0063 GETMET R10 R3 K29
0x7C280200, // 0064 CALL R10 1
0x00281405, // 0065 ADD R10 R10 R5
- 0x8C28151C, // 0066 GETMET R10 R10 K28
- 0x7C280200, // 0067 CALL R10 1
- 0x002A460A, // 0068 ADD R10 K35 R10
- 0x542E0003, // 0069 LDINT R11 4
- 0x7C200600, // 006A CALL R8 3
- 0xB8221A00, // 006B GETNGBL R8 K13
- 0x8C20110E, // 006C GETMET R8 R8 K14
- 0x8C280F1C, // 006D GETMET R10 R7 K28
- 0x7C280200, // 006E CALL R10 1
- 0x002A480A, // 006F ADD R10 K36 R10
- 0x542E0003, // 0070 LDINT R11 4
- 0x7C200600, // 0071 CALL R8 3
- 0xB8221A00, // 0072 GETNGBL R8 K13
- 0x8C20110E, // 0073 GETMET R8 R8 K14
- 0x5828000F, // 0074 LDCONST R10 K15
- 0x542E0003, // 0075 LDINT R11 4
- 0x7C200600, // 0076 CALL R8 3
- 0x5421FFEE, // 0077 LDINT R8 -17
- 0x40220608, // 0078 CONNECT R8 K3 R8
- 0x88240925, // 0079 GETMBR R9 R4 K37
- 0x94201208, // 007A GETIDX R8 R9 R8
- 0x5429FFEF, // 007B LDINT R10 -16
- 0x40281526, // 007C CONNECT R10 R10 K38
- 0x882C0925, // 007D GETMBR R11 R4 K37
- 0x9424160A, // 007E GETIDX R9 R11 R10
- 0x8C300527, // 007F GETMET R12 R2 K39
- 0x5C380E00, // 0080 MOVE R14 R7
- 0x603C0015, // 0081 GETGBL R15 G21
- 0x7C3C0000, // 0082 CALL R15 0
- 0x8C3C1F1E, // 0083 GETMET R15 R15 K30
- 0x88440128, // 0084 GETMBR R17 R0 K40
- 0x7C3C0400, // 0085 CALL R15 2
- 0x60400015, // 0086 GETGBL R16 G21
- 0x7C400000, // 0087 CALL R16 0
- 0x6044000C, // 0088 GETGBL R17 G12
- 0x5C481000, // 0089 MOVE R18 R8
- 0x7C440200, // 008A CALL R17 1
- 0x544A000F, // 008B LDINT R18 16
- 0x7C300C00, // 008C CALL R12 6
- 0x5C281800, // 008D MOVE R10 R12
- 0x8C301529, // 008E GETMET R12 R10 K41
- 0x5C381000, // 008F MOVE R14 R8
- 0x7C300400, // 0090 CALL R12 2
- 0x5C2C1800, // 0091 MOVE R11 R12
- 0x8C30152A, // 0092 GETMET R12 R10 K42
- 0x7C300200, // 0093 CALL R12 1
- 0xB8361A00, // 0094 GETNGBL R13 K13
- 0x8C341B0E, // 0095 GETMET R13 R13 K14
- 0x8C3C171C, // 0096 GETMET R15 R11 K28
- 0x7C3C0200, // 0097 CALL R15 1
- 0x003E560F, // 0098 ADD R15 K43 R15
- 0x54420003, // 0099 LDINT R16 4
- 0x7C340600, // 009A CALL R13 3
- 0xB8361A00, // 009B GETNGBL R13 K13
- 0x8C341B0E, // 009C GETMET R13 R13 K14
- 0x8C3C191C, // 009D GETMET R15 R12 K28
- 0x7C3C0200, // 009E CALL R15 1
- 0x003E580F, // 009F ADD R15 K44 R15
- 0x54420003, // 00A0 LDINT R16 4
- 0x7C340600, // 00A1 CALL R13 3
- 0xB8361A00, // 00A2 GETNGBL R13 K13
- 0x8C341B0E, // 00A3 GETMET R13 R13 K14
- 0x8C3C131C, // 00A4 GETMET R15 R9 K28
- 0x7C3C0200, // 00A5 CALL R15 1
- 0x003E5A0F, // 00A6 ADD R15 K45 R15
- 0x54420003, // 00A7 LDINT R16 4
- 0x7C340600, // 00A8 CALL R13 3
- 0xB8361A00, // 00A9 GETNGBL R13 K13
- 0x8C341B0E, // 00AA GETMET R13 R13 K14
- 0x583C000F, // 00AB LDCONST R15 K15
- 0x54420003, // 00AC LDINT R16 4
- 0x7C340600, // 00AD CALL R13 3
- 0x20341809, // 00AE NE R13 R12 R9
- 0x78360000, // 00AF JMPF R13 #00B1
- 0xB0065D2F, // 00B0 RAISE 1 K46 K47
- 0xB8361000, // 00B1 GETNGBL R13 K8
- 0x88341B30, // 00B2 GETMBR R13 R13 K48
- 0x8C341B0A, // 00B3 GETMET R13 R13 K10
- 0x5C3C1600, // 00B4 MOVE R15 R11
- 0x7C340400, // 00B5 CALL R13 2
- 0x8C381B31, // 00B6 GETMET R14 R13 K49
- 0x58400032, // 00B7 LDCONST R16 K50
- 0x7C380400, // 00B8 CALL R14 2
- 0x8C3C1B31, // 00B9 GETMET R15 R13 K49
- 0x58440033, // 00BA LDCONST R17 K51
- 0x7C3C0400, // 00BB CALL R15 2
- 0x8C401B31, // 00BC GETMET R16 R13 K49
- 0x58480034, // 00BD LDCONST R18 K52
- 0x7C400400, // 00BE CALL R16 2
- 0xB8461000, // 00BF GETNGBL R17 K8
- 0x88442330, // 00C0 GETMBR R17 R17 K48
- 0x8C44230A, // 00C1 GETMET R17 R17 K10
- 0x5C4C1C00, // 00C2 MOVE R19 R14
- 0x7C440400, // 00C3 CALL R17 2
- 0xB84A1A00, // 00C4 GETNGBL R18 K13
- 0x8C48250E, // 00C5 GETMET R18 R18 K14
- 0x60500008, // 00C6 GETGBL R20 G8
- 0x5C542200, // 00C7 MOVE R21 R17
- 0x7C500200, // 00C8 CALL R20 1
- 0x00526A14, // 00C9 ADD R20 K53 R20
- 0x58540034, // 00CA LDCONST R21 K52
- 0x7C480600, // 00CB CALL R18 3
- 0x8C482331, // 00CC GETMET R18 R17 K49
- 0x54520008, // 00CD LDINT R20 9
- 0x7C480400, // 00CE CALL R18 2
- 0x8C4C2336, // 00CF GETMET R19 R17 K54
- 0x54560005, // 00D0 LDINT R21 6
- 0x7C4C0400, // 00D1 CALL R19 2
- 0x8C502731, // 00D2 GETMET R20 R19 K49
- 0x545A0010, // 00D3 LDINT R22 17
- 0x7C500400, // 00D4 CALL R20 2
- 0x60540004, // 00D5 GETGBL R21 G4
- 0x5C582800, // 00D6 MOVE R22 R20
- 0x7C540200, // 00D7 CALL R21 1
- 0x1C542B37, // 00D8 EQ R21 R21 K55
- 0x78560003, // 00D9 JMPF R21 #00DE
- 0xB8567000, // 00DA GETNGBL R21 K56
- 0x5C582800, // 00DB MOVE R22 R20
- 0x7C540200, // 00DC CALL R21 1
- 0x5C502A00, // 00DD MOVE R20 R21
- 0x8C54293A, // 00DE GETMET R21 R20 K58
- 0x7C540200, // 00DF CALL R21 1
- 0x900E7215, // 00E0 SETMBR R3 K57 R21
- 0xB8561A00, // 00E1 GETNGBL R21 K13
- 0x8C542B0E, // 00E2 GETMET R21 R21 K14
- 0x605C0008, // 00E3 GETGBL R23 G8
- 0x88600739, // 00E4 GETMBR R24 R3 K57
- 0x7C5C0200, // 00E5 CALL R23 1
- 0x005E7617, // 00E6 ADD R23 K59 R23
- 0x58600034, // 00E7 LDCONST R24 K52
- 0x7C540600, // 00E8 CALL R21 3
- 0xB8561000, // 00E9 GETNGBL R21 K8
- 0x88542B30, // 00EA GETMBR R21 R21 K48
- 0x8C542B3C, // 00EB GETMET R21 R21 K60
- 0x7C540200, // 00EC CALL R21 1
- 0x8C582B3D, // 00ED GETMET R22 R21 K61
- 0x58600032, // 00EE LDCONST R24 K50
- 0xB8661000, // 00EF GETNGBL R25 K8
- 0x88643330, // 00F0 GETMBR R25 R25 K48
- 0x8864333E, // 00F1 GETMBR R25 R25 K62
- 0x5C681C00, // 00F2 MOVE R26 R14
- 0x7C580800, // 00F3 CALL R22 4
- 0x8C582B3D, // 00F4 GETMET R22 R21 K61
- 0x58600033, // 00F5 LDCONST R24 K51
- 0xB8661000, // 00F6 GETNGBL R25 K8
- 0x88643330, // 00F7 GETMBR R25 R25 K48
- 0x8864333E, // 00F8 GETMBR R25 R25 K62
- 0x5C681E00, // 00F9 MOVE R26 R15
- 0x7C580800, // 00FA CALL R22 4
- 0x8C582B3D, // 00FB GETMET R22 R21 K61
- 0x58600034, // 00FC LDCONST R24 K52
- 0xB8661000, // 00FD GETNGBL R25 K8
- 0x88643330, // 00FE GETMBR R25 R25 K48
- 0x8864333E, // 00FF GETMBR R25 R25 K62
- 0x8868013F, // 0100 GETMBR R26 R0 K63
- 0x7C580800, // 0101 CALL R22 4
- 0x8C582B3D, // 0102 GETMET R22 R21 K61
- 0x54620003, // 0103 LDINT R24 4
- 0xB8661000, // 0104 GETNGBL R25 K8
- 0x88643330, // 0105 GETMBR R25 R25 K48
- 0x8864333E, // 0106 GETMBR R25 R25 K62
- 0x88680140, // 0107 GETMBR R26 R0 K64
- 0x7C580800, // 0108 CALL R22 4
- 0x8C582B41, // 0109 GETMET R22 R21 K65
- 0x7C580200, // 010A CALL R22 1
- 0xB85E1A00, // 010B GETNGBL R23 K13
- 0x8C5C2F0E, // 010C GETMET R23 R23 K14
- 0x8C64251C, // 010D GETMET R25 R18 K28
- 0x7C640200, // 010E CALL R25 1
- 0x00668419, // 010F ADD R25 K66 R25
- 0x546A0003, // 0110 LDINT R26 4
- 0x7C5C0600, // 0111 CALL R23 3
- 0xB85E1A00, // 0112 GETNGBL R23 K13
- 0x8C5C2F0E, // 0113 GETMET R23 R23 K14
- 0x8C64211C, // 0114 GETMET R25 R16 K28
- 0x7C640200, // 0115 CALL R25 1
- 0x00668619, // 0116 ADD R25 K67 R25
- 0x546A0003, // 0117 LDINT R26 4
- 0x7C5C0600, // 0118 CALL R23 3
- 0xB85E1A00, // 0119 GETNGBL R23 K13
- 0x8C5C2F0E, // 011A GETMET R23 R23 K14
- 0x5864000F, // 011B LDCONST R25 K15
- 0x546A0003, // 011C LDINT R26 4
- 0x7C5C0600, // 011D CALL R23 3
- 0x8C5C0544, // 011E GETMET R23 R2 K68
- 0x7C5C0200, // 011F CALL R23 1
- 0x8C5C2F45, // 0120 GETMET R23 R23 K69
- 0x5C642400, // 0121 MOVE R25 R18
- 0x5C682C00, // 0122 MOVE R26 R22
- 0x5C6C2000, // 0123 MOVE R27 R16
- 0x7C5C0800, // 0124 CALL R23 4
- 0x5C602E00, // 0125 MOVE R24 R23
- 0x74620000, // 0126 JMPT R24 #0128
- 0xB0065D46, // 0127 RAISE 1 K46 K70
- 0xB8621A00, // 0128 GETNGBL R24 K13
- 0x8C60310E, // 0129 GETMET R24 R24 K14
- 0x58680047, // 012A LDCONST R26 K71
- 0x586C0034, // 012B LDCONST R27 K52
- 0x7C600600, // 012C CALL R24 3
- 0x8C600510, // 012D GETMET R24 R2 K16
- 0x7C600200, // 012E CALL R24 1
- 0x8C603111, // 012F GETMET R24 R24 K17
- 0x88680712, // 0130 GETMBR R26 R3 K18
- 0x7C600400, // 0131 CALL R24 2
- 0x8C603111, // 0132 GETMET R24 R24 K17
- 0x88680713, // 0133 GETMBR R26 R3 K19
- 0x7C600400, // 0134 CALL R24 2
- 0x8C603111, // 0135 GETMET R24 R24 K17
- 0x88680948, // 0136 GETMBR R26 R4 K72
- 0x7C600400, // 0137 CALL R24 2
- 0x8C603114, // 0138 GETMET R24 R24 K20
- 0x7C600200, // 0139 CALL R24 1
- 0x5C143000, // 013A MOVE R5 R24
- 0x4C600000, // 013B LDNIL R24
- 0x900E2418, // 013C SETMBR R3 K18 R24
- 0x4C600000, // 013D LDNIL R24
- 0x900E2618, // 013E SETMBR R3 K19 R24
- 0xB8621A00, // 013F GETNGBL R24 K13
- 0x8C60310E, // 0140 GETMET R24 R24 K14
- 0x58680049, // 0141 LDCONST R26 K73
- 0x546E0003, // 0142 LDINT R27 4
- 0x7C600600, // 0143 CALL R24 3
- 0xB8621A00, // 0144 GETNGBL R24 K13
- 0x8C60310E, // 0145 GETMET R24 R24 K14
- 0x88680722, // 0146 GETMBR R26 R3 K34
- 0x8C68351C, // 0147 GETMET R26 R26 K28
- 0x7C680200, // 0148 CALL R26 1
- 0x006A941A, // 0149 ADD R26 K74 R26
- 0x546E0003, // 014A LDINT R27 4
- 0x7C600600, // 014B CALL R24 3
- 0xB8621A00, // 014C GETNGBL R24 K13
- 0x8C60310E, // 014D GETMET R24 R24 K14
- 0x8C68071B, // 014E GETMET R26 R3 K27
- 0x7C680200, // 014F CALL R26 1
- 0x00683405, // 0150 ADD R26 R26 R5
- 0x8C68351C, // 0151 GETMET R26 R26 K28
- 0x7C680200, // 0152 CALL R26 1
- 0x006A961A, // 0153 ADD R26 K75 R26
- 0x546E0003, // 0154 LDINT R27 4
- 0x7C600600, // 0155 CALL R24 3
- 0x8C600520, // 0156 GETMET R24 R2 K32
- 0x7C600200, // 0157 CALL R24 1
- 0x8C603121, // 0158 GETMET R24 R24 K33
- 0x88680722, // 0159 GETMBR R26 R3 K34
- 0x8C6C071B, // 015A GETMET R27 R3 K27
- 0x7C6C0200, // 015B CALL R27 1
- 0x006C3605, // 015C ADD R27 R27 R5
- 0x60700015, // 015D GETGBL R28 G21
- 0x7C700000, // 015E CALL R28 0
- 0x8C70391E, // 015F GETMET R28 R28 K30
- 0x8878014C, // 0160 GETMBR R30 R0 K76
- 0x7C700400, // 0161 CALL R28 2
- 0x5476002F, // 0162 LDINT R29 48
- 0x7C600A00, // 0163 CALL R24 5
- 0x5466000E, // 0164 LDINT R25 15
- 0x40660619, // 0165 CONNECT R25 K3 R25
- 0x94643019, // 0166 GETIDX R25 R24 R25
- 0x546A000F, // 0167 LDINT R26 16
- 0x546E001E, // 0168 LDINT R27 31
- 0x4068341B, // 0169 CONNECT R26 R26 R27
- 0x9468301A, // 016A GETIDX R26 R24 R26
- 0x546E001F, // 016B LDINT R27 32
- 0x5472002E, // 016C LDINT R28 47
- 0x406C361C, // 016D CONNECT R27 R27 R28
- 0x946C301B, // 016E GETIDX R27 R24 R27
- 0xB8721A00, // 016F GETNGBL R28 K13
- 0x8C70394D, // 0170 GETMET R28 R28 K77
- 0x7C700200, // 0171 CALL R28 1
- 0x9470394E, // 0172 GETIDX R28 R28 K78
- 0xB8761A00, // 0173 GETNGBL R29 K13
- 0x8C743B0E, // 0174 GETMET R29 R29 K14
- 0x587C0049, // 0175 LDCONST R31 K73
- 0x54820003, // 0176 LDINT R32 4
- 0x7C740600, // 0177 CALL R29 3
- 0xB8761A00, // 0178 GETNGBL R29 K13
- 0x8C743B0E, // 0179 GETMET R29 R29 K14
- 0x8C7C331C, // 017A GETMET R31 R25 K28
- 0x7C7C0200, // 017B CALL R31 1
- 0x007E9E1F, // 017C ADD R31 K79 R31
- 0x54820003, // 017D LDINT R32 4
- 0x7C740600, // 017E CALL R29 3
- 0xB8761A00, // 017F GETNGBL R29 K13
- 0x8C743B0E, // 0180 GETMET R29 R29 K14
- 0x8C7C351C, // 0181 GETMET R31 R26 K28
- 0x7C7C0200, // 0182 CALL R31 1
- 0x007EA01F, // 0183 ADD R31 K80 R31
- 0x54820003, // 0184 LDINT R32 4
- 0x7C740600, // 0185 CALL R29 3
- 0xB8761A00, // 0186 GETNGBL R29 K13
- 0x8C743B0E, // 0187 GETMET R29 R29 K14
- 0x8C7C371C, // 0188 GETMET R31 R27 K28
- 0x7C7C0200, // 0189 CALL R31 1
- 0x007EA21F, // 018A ADD R31 K81 R31
- 0x54820003, // 018B LDINT R32 4
- 0x7C740600, // 018C CALL R29 3
- 0xB8761A00, // 018D GETNGBL R29 K13
- 0x8C743B0E, // 018E GETMET R29 R29 K14
- 0x587C0049, // 018F LDCONST R31 K73
- 0x54820003, // 0190 LDINT R32 4
- 0x7C740600, // 0191 CALL R29 3
- 0x8C740352, // 0192 GETMET R29 R1 K82
- 0x547E003F, // 0193 LDINT R31 64
- 0x50800200, // 0194 LDBOOL R32 1 0
- 0x7C740600, // 0195 CALL R29 3
- 0x60780015, // 0196 GETGBL R30 G21
- 0x7C780000, // 0197 CALL R30 0
- 0x8C7C3D53, // 0198 GETMET R31 R30 K83
- 0x58840003, // 0199 LDCONST R33 K3
- 0x58880033, // 019A LDCONST R34 K51
- 0x7C7C0600, // 019B CALL R31 3
- 0x8C7C3D53, // 019C GETMET R31 R30 K83
- 0x58840003, // 019D LDCONST R33 K3
- 0x548A0003, // 019E LDINT R34 4
- 0x7C7C0600, // 019F CALL R31 3
- 0x8C7C3D53, // 01A0 GETMET R31 R30 K83
- 0x58840003, // 01A1 LDCONST R33 K3
- 0x548A0003, // 01A2 LDINT R34 4
- 0x7C7C0600, // 01A3 CALL R31 3
- 0x8C7C3B41, // 01A4 GETMET R31 R29 K65
- 0x5C843C00, // 01A5 MOVE R33 R30
- 0x7C7C0400, // 01A6 CALL R31 2
- 0x88800154, // 01A7 GETMBR R32 R0 K84
- 0x8C804155, // 01A8 GETMET R32 R32 K85
- 0x5C883E00, // 01A9 MOVE R34 R31
- 0x888C0356, // 01AA GETMBR R35 R1 K86
- 0x88900357, // 01AB GETMBR R36 R1 K87
- 0x88943B58, // 01AC GETMBR R37 R29 K88
- 0x7C800A00, // 01AD CALL R32 5
- 0x8C800759, // 01AE GETMET R32 R3 K89
- 0x7C800200, // 01AF CALL R32 1
- 0x8C80075A, // 01B0 GETMET R32 R3 K90
- 0x5C883200, // 01B1 MOVE R34 R25
- 0x5C8C3400, // 01B2 MOVE R35 R26
- 0x5C903600, // 01B3 MOVE R36 R27
- 0x5C943800, // 01B4 MOVE R37 R28
- 0x7C800A00, // 01B5 CALL R32 5
- 0x900EB703, // 01B6 SETMBR R3 K91 K3
- 0x8C80075C, // 01B7 GETMET R32 R3 K92
- 0x50880200, // 01B8 LDBOOL R34 1 0
- 0x7C800400, // 01B9 CALL R32 2
- 0x8C80075D, // 01BA GETMET R32 R3 K93
- 0x7C800200, // 01BB CALL R32 1
- 0x8C80075E, // 01BC GETMET R32 R3 K94
- 0x7C800200, // 01BD CALL R32 1
- 0x8C80075F, // 01BE GETMET R32 R3 K95
- 0x7C800200, // 01BF CALL R32 1
- 0x50800200, // 01C0 LDBOOL R32 1 0
- 0x80044000, // 01C1 RET 1 R32
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_second
-********************************************************************/
-be_local_closure(Matter_Commisioning_Context_every_second, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(every_second),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_Sigma1
-********************************************************************/
-be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
- be_nested_proto(
- 35, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[116]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(opcode),
- /* K2 */ be_nested_str_weak(local_session_id),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(protocol_id),
- /* K5 */ be_nested_str_weak(protocol_error),
- /* K6 */ be_nested_str_weak(invalid_X20Pake1_X20message),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(Sigma1),
- /* K9 */ be_nested_str_weak(parse),
- /* K10 */ be_nested_str_weak(raw),
- /* K11 */ be_nested_str_weak(app_payload_idx),
- /* K12 */ be_nested_str_weak(initiatorEph_pub),
- /* K13 */ be_nested_str_weak(initiatorEphPubKey),
- /* K14 */ be_nested_str_weak(resumptionID),
- /* K15 */ be_nested_str_weak(initiatorResumeMIC),
- /* K16 */ be_nested_str_weak(session),
- /* K17 */ be_nested_str_weak(device),
- /* K18 */ be_nested_str_weak(sessions),
- /* K19 */ be_nested_str_weak(find_session_by_resumption_id),
- /* K20 */ be_nested_str_weak(find_fabric_by_destination_id),
- /* K21 */ be_nested_str_weak(destinationId),
- /* K22 */ be_nested_str_weak(initiatorRandom),
- /* K23 */ be_nested_str_weak(_fabric),
- /* K24 */ be_nested_str_weak(valuer_error),
- /* K25 */ be_nested_str_weak(StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
- /* K26 */ be_nested_str_weak(_source_node_id),
- /* K27 */ be_nested_str_weak(source_node_id),
- /* K28 */ be_nested_str_weak(set_mode_CASE),
- /* K29 */ be_nested_str_weak(remove_session),
- /* K30 */ be_nested_str_weak(__future_initiator_session_id),
- /* K31 */ be_nested_str_weak(initiator_session_id),
- /* K32 */ be_nested_str_weak(__future_local_session_id),
- /* K33 */ be_nested_str_weak(gen_local_session_id),
- /* K34 */ be_nested_str_weak(future_local_session_id),
- /* K35 */ be_nested_str_weak(tasmota),
- /* K36 */ be_nested_str_weak(log),
- /* K37 */ be_nested_str_weak(MTR_X3A_X20Loc_session_X3D),
- /* K38 */ be_nested_str_weak(fromstring),
- /* K39 */ be_nested_str_weak(Sigma1_Resume),
- /* K40 */ be_nested_str_weak(HKDF_SHA256),
- /* K41 */ be_nested_str_weak(derive),
- /* K42 */ be_nested_str_weak(shared_secret),
- /* K43 */ be_nested_str_weak(NCASE_SigmaR1),
- /* K44 */ be_const_int(2147483647),
- /* K45 */ be_nested_str_weak(AES_CCM),
- /* K46 */ be_nested_str_weak(decrypt),
- /* K47 */ be_nested_str_weak(tag),
- /* K48 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
- /* K49 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s1rk_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K50 */ be_nested_str_weak(tohex),
- /* K51 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20tag_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K52 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20Resume1MICPayload_X20_X3D_X20),
- /* K53 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20decrypted_tag_X20_X20_X20_X20_X20_X3D_X20),
- /* K54 */ be_nested_str_weak(resumption_id),
- /* K55 */ be_nested_str_weak(random),
- /* K56 */ be_nested_str_weak(Sigma2_Resume),
- /* K57 */ be_nested_str_weak(NCASE_SigmaR2),
- /* K58 */ be_nested_str_weak(Sigma2Resume),
- /* K59 */ be_nested_str_weak(responderSessionID),
- /* K60 */ be_nested_str_weak(sigma2ResumeMIC),
- /* K61 */ be_nested_str_weak(SessionResumptionKeys),
- /* K62 */ be_nested_str_weak(rtc),
- /* K63 */ be_nested_str_weak(utc),
- /* K64 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
- /* K65 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D),
- /* K66 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D),
- /* K67 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D),
- /* K68 */ be_nested_str_weak(encode),
- /* K69 */ be_nested_str_weak(__Msg1),
- /* K70 */ be_nested_str_weak(MTR_X3A_X20sigma2resume_raw_X3A_X20),
- /* K71 */ be_nested_str_weak(build_response),
- /* K72 */ be_nested_str_weak(responder),
- /* K73 */ be_nested_str_weak(send_response),
- /* K74 */ be_nested_str_weak(remote_ip),
- /* K75 */ be_nested_str_weak(remote_port),
- /* K76 */ be_nested_str_weak(message_counter),
- /* K77 */ be_nested_str_weak(set_keys),
- /* K78 */ be_nested_str_weak(ResponderEph_priv),
- /* K79 */ be_nested_str_weak(ResponderEph_pub),
- /* K80 */ be_nested_str_weak(EC_P256),
- /* K81 */ be_nested_str_weak(public_key),
- /* K82 */ be_nested_str_weak(shared_key),
- /* K83 */ be_nested_str_weak(TLV),
- /* K84 */ be_nested_str_weak(Matter_TLV_struct),
- /* K85 */ be_nested_str_weak(add_TLV),
- /* K86 */ be_const_int(1),
- /* K87 */ be_nested_str_weak(B2),
- /* K88 */ be_nested_str_weak(get_noc),
- /* K89 */ be_const_int(2),
- /* K90 */ be_nested_str_weak(get_icac),
- /* K91 */ be_const_int(3),
- /* K92 */ be_nested_str_weak(ecdsa_sign_sha256),
- /* K93 */ be_nested_str_weak(get_pk),
- /* K94 */ be_nested_str_weak(Msg1),
- /* K95 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20MSG1_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K96 */ be_nested_str_weak(SHA256),
- /* K97 */ be_nested_str_weak(update),
- /* K98 */ be_nested_str_weak(out),
- /* K99 */ be_nested_str_weak(S2K_Info),
- /* K100 */ be_nested_str_weak(get_ipk_group_key),
- /* K101 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20SharedSecret_X20_X20_X3D_X20),
- /* K102 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_salt_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K103 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K104 */ be_nested_str_weak(TBEData2_Nonce),
- /* K105 */ be_nested_str_weak(encrypt),
- /* K106 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBEData2Enc_X20_X20_X20_X3D_X20),
- /* K107 */ be_nested_str_weak(Sigma2),
- /* K108 */ be_nested_str_weak(responderRandom),
- /* K109 */ be_nested_str_weak(responderSessionId),
- /* K110 */ be_nested_str_weak(responderEphPubKey),
- /* K111 */ be_nested_str_weak(encrypted2),
- /* K112 */ be_nested_str_weak(MTR_X3A_X20sigma2_X3A_X20),
- /* K113 */ be_nested_str_weak(inspect),
- /* K114 */ be_nested_str_weak(__Msg2),
- /* K115 */ be_nested_str_weak(MTR_X3A_X20sigma2_raw_X3A_X20),
- }),
- be_str_weak(parse_Sigma1),
- &be_const_str_solidified,
- ( &(const binstruction[560]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x5412002F, // 0002 LDINT R4 48
- 0x200C0604, // 0003 NE R3 R3 R4
- 0x740E0005, // 0004 JMPT R3 #000B
- 0x880C0302, // 0005 GETMBR R3 R1 K2
- 0x200C0703, // 0006 NE R3 R3 K3
- 0x740E0002, // 0007 JMPT R3 #000B
- 0x880C0304, // 0008 GETMBR R3 R1 K4
- 0x200C0703, // 0009 NE R3 R3 K3
- 0x780E0000, // 000A JMPF R3 #000C
- 0xB0060B06, // 000B RAISE 1 K5 K6
- 0xB80E0E00, // 000C GETNGBL R3 K7
- 0x8C0C0708, // 000D GETMET R3 R3 K8
- 0x7C0C0200, // 000E CALL R3 1
- 0x8C0C0709, // 000F GETMET R3 R3 K9
- 0x8814030A, // 0010 GETMBR R5 R1 K10
- 0x8818030B, // 0011 GETMBR R6 R1 K11
- 0x7C0C0600, // 0012 CALL R3 3
- 0x8810070D, // 0013 GETMBR R4 R3 K13
- 0x90021804, // 0014 SETMBR R0 K12 R4
- 0x8810070E, // 0015 GETMBR R4 R3 K14
- 0x4C140000, // 0016 LDNIL R5
- 0x20100805, // 0017 NE R4 R4 R5
- 0x78120003, // 0018 JMPF R4 #001D
- 0x8810070F, // 0019 GETMBR R4 R3 K15
- 0x4C140000, // 001A LDNIL R5
- 0x20100805, // 001B NE R4 R4 R5
- 0x74120000, // 001C JMPT R4 #001E
- 0x50100001, // 001D LDBOOL R4 0 1
- 0x50100200, // 001E LDBOOL R4 1 0
- 0x88140310, // 001F GETMBR R5 R1 K16
- 0x78120006, // 0020 JMPF R4 #0028
- 0x88180111, // 0021 GETMBR R6 R0 K17
- 0x88180D12, // 0022 GETMBR R6 R6 K18
- 0x8C180D13, // 0023 GETMET R6 R6 K19
- 0x8820070E, // 0024 GETMBR R8 R3 K14
- 0x7C180400, // 0025 CALL R6 2
- 0x5C140C00, // 0026 MOVE R5 R6
- 0x70020004, // 0027 JMP #002D
- 0x8C180114, // 0028 GETMET R6 R0 K20
- 0x88200715, // 0029 GETMBR R8 R3 K21
- 0x88240716, // 002A GETMBR R9 R3 K22
- 0x7C180600, // 002B CALL R6 3
- 0x90162E06, // 002C SETMBR R5 K23 R6
- 0x4C180000, // 002D LDNIL R6
- 0x1C180A06, // 002E EQ R6 R5 R6
- 0x741A0003, // 002F JMPT R6 #0034
- 0x88180B17, // 0030 GETMBR R6 R5 K23
- 0x4C1C0000, // 0031 LDNIL R7
- 0x1C180C07, // 0032 EQ R6 R6 R7
- 0x781A0000, // 0033 JMPF R6 #0035
- 0xB0063119, // 0034 RAISE 1 K24 K25
- 0x8818031B, // 0035 GETMBR R6 R1 K27
- 0x90163406, // 0036 SETMBR R5 K26 R6
- 0x8C180B1C, // 0037 GETMET R6 R5 K28
- 0x7C180200, // 0038 CALL R6 1
- 0x88180310, // 0039 GETMBR R6 R1 K16
- 0x20180C05, // 003A NE R6 R6 R5
- 0x781A0004, // 003B JMPF R6 #0041
- 0x88180111, // 003C GETMBR R6 R0 K17
- 0x88180D12, // 003D GETMBR R6 R6 K18
- 0x8C180D1D, // 003E GETMET R6 R6 K29
- 0x88200310, // 003F GETMBR R8 R1 K16
- 0x7C180400, // 0040 CALL R6 2
- 0x90062005, // 0041 SETMBR R1 K16 R5
- 0x8818071F, // 0042 GETMBR R6 R3 K31
- 0x90163C06, // 0043 SETMBR R5 K30 R6
- 0x88180111, // 0044 GETMBR R6 R0 K17
- 0x88180D12, // 0045 GETMBR R6 R6 K18
- 0x8C180D21, // 0046 GETMET R6 R6 K33
- 0x7C180200, // 0047 CALL R6 1
- 0x90164006, // 0048 SETMBR R5 K32 R6
- 0x88180B20, // 0049 GETMBR R6 R5 K32
- 0x90024406, // 004A SETMBR R0 K34 R6
- 0xB81A4600, // 004B GETNGBL R6 K35
- 0x8C180D24, // 004C GETMET R6 R6 K36
- 0x60200008, // 004D GETGBL R8 G8
- 0x88240122, // 004E GETMBR R9 R0 K34
- 0x7C200200, // 004F CALL R8 1
- 0x00224A08, // 0050 ADD R8 K37 R8
- 0x7C180400, // 0051 CALL R6 2
- 0x781200E1, // 0052 JMPF R4 #0135
- 0x88180716, // 0053 GETMBR R6 R3 K22
- 0x881C070E, // 0054 GETMBR R7 R3 K14
- 0x00180C07, // 0055 ADD R6 R6 R7
- 0x601C0015, // 0056 GETGBL R7 G21
- 0x7C1C0000, // 0057 CALL R7 0
- 0x8C1C0F26, // 0058 GETMET R7 R7 K38
- 0x58240027, // 0059 LDCONST R9 K39
- 0x7C1C0400, // 005A CALL R7 2
- 0x8C200528, // 005B GETMET R8 R2 K40
- 0x7C200200, // 005C CALL R8 1
- 0x8C201129, // 005D GETMET R8 R8 K41
- 0x88280B2A, // 005E GETMBR R10 R5 K42
- 0x5C2C0C00, // 005F MOVE R11 R6
- 0x5C300E00, // 0060 MOVE R12 R7
- 0x5436000F, // 0061 LDINT R13 16
- 0x7C200A00, // 0062 CALL R8 5
- 0x60240015, // 0063 GETGBL R9 G21
- 0x7C240000, // 0064 CALL R9 0
- 0x8C241326, // 0065 GETMET R9 R9 K38
- 0x582C002B, // 0066 LDCONST R11 K43
- 0x7C240400, // 0067 CALL R9 2
- 0x5429FFEE, // 0068 LDINT R10 -17
- 0x402A060A, // 0069 CONNECT R10 K3 R10
- 0x882C070F, // 006A GETMBR R11 R3 K15
- 0x9428160A, // 006B GETIDX R10 R11 R10
- 0x5431FFEF, // 006C LDINT R12 -16
- 0x4030192C, // 006D CONNECT R12 R12 K44
- 0x8834070F, // 006E GETMBR R13 R3 K15
- 0x942C1A0C, // 006F GETIDX R11 R13 R12
- 0x8C38052D, // 0070 GETMET R14 R2 K45
- 0x5C401000, // 0071 MOVE R16 R8
- 0x5C441200, // 0072 MOVE R17 R9
- 0x60480015, // 0073 GETGBL R18 G21
- 0x7C480000, // 0074 CALL R18 0
- 0x604C000C, // 0075 GETGBL R19 G12
- 0x5C501400, // 0076 MOVE R20 R10
- 0x7C4C0200, // 0077 CALL R19 1
- 0x5452000F, // 0078 LDINT R20 16
- 0x7C380C00, // 0079 CALL R14 6
- 0x5C301C00, // 007A MOVE R12 R14
- 0x8C38192E, // 007B GETMET R14 R12 K46
- 0x5C401400, // 007C MOVE R16 R10
- 0x7C380400, // 007D CALL R14 2
- 0x5C341C00, // 007E MOVE R13 R14
- 0x8C38192F, // 007F GETMET R14 R12 K47
- 0x7C380200, // 0080 CALL R14 1
- 0xB83E4600, // 0081 GETNGBL R15 K35
- 0x8C3C1F24, // 0082 GETMET R15 R15 K36
- 0x58440030, // 0083 LDCONST R17 K48
- 0x544A0003, // 0084 LDINT R18 4
- 0x7C3C0600, // 0085 CALL R15 3
- 0xB83E4600, // 0086 GETNGBL R15 K35
- 0x8C3C1F24, // 0087 GETMET R15 R15 K36
- 0x8C441132, // 0088 GETMET R17 R8 K50
- 0x7C440200, // 0089 CALL R17 1
- 0x00466211, // 008A ADD R17 K49 R17
- 0x544A0003, // 008B LDINT R18 4
- 0x7C3C0600, // 008C CALL R15 3
- 0xB83E4600, // 008D GETNGBL R15 K35
- 0x8C3C1F24, // 008E GETMET R15 R15 K36
- 0x8C441732, // 008F GETMET R17 R11 K50
- 0x7C440200, // 0090 CALL R17 1
- 0x00466611, // 0091 ADD R17 K51 R17
- 0x544A0003, // 0092 LDINT R18 4
- 0x7C3C0600, // 0093 CALL R15 3
- 0xB83E4600, // 0094 GETNGBL R15 K35
- 0x8C3C1F24, // 0095 GETMET R15 R15 K36
- 0x8C441B32, // 0096 GETMET R17 R13 K50
+ 0x5C2C0C00, // 0066 MOVE R11 R6
+ 0x5432000F, // 0067 LDINT R12 16
+ 0x7C1C0A00, // 0068 CALL R7 5
+ 0xB8220A00, // 0069 GETNGBL R8 K5
+ 0x8C201106, // 006A GETMET R8 R8 K6
+ 0x58280011, // 006B LDCONST R10 K17
+ 0x542E0003, // 006C LDINT R11 4
+ 0x7C200600, // 006D CALL R8 3
+ 0xB8220A00, // 006E GETNGBL R8 K5
+ 0x8C201106, // 006F GETMET R8 R8 K6
+ 0x8C28071D, // 0070 GETMET R10 R3 K29
+ 0x7C280200, // 0071 CALL R10 1
+ 0x00281405, // 0072 ADD R10 R10 R5
+ 0x8C28151E, // 0073 GETMET R10 R10 K30
+ 0x7C280200, // 0074 CALL R10 1
+ 0x002A4A0A, // 0075 ADD R10 K37 R10
+ 0x542E0003, // 0076 LDINT R11 4
+ 0x7C200600, // 0077 CALL R8 3
+ 0xB8220A00, // 0078 GETNGBL R8 K5
+ 0x8C201106, // 0079 GETMET R8 R8 K6
+ 0x8C280F1E, // 007A GETMET R10 R7 K30
+ 0x7C280200, // 007B CALL R10 1
+ 0x002A4C0A, // 007C ADD R10 K38 R10
+ 0x542E0003, // 007D LDINT R11 4
+ 0x7C200600, // 007E CALL R8 3
+ 0xB8220A00, // 007F GETNGBL R8 K5
+ 0x8C201106, // 0080 GETMET R8 R8 K6
+ 0x58280011, // 0081 LDCONST R10 K17
+ 0x542E0003, // 0082 LDINT R11 4
+ 0x7C200600, // 0083 CALL R8 3
+ 0x5421FFEE, // 0084 LDINT R8 -17
+ 0x40220608, // 0085 CONNECT R8 K3 R8
+ 0x88240927, // 0086 GETMBR R9 R4 K39
+ 0x94201208, // 0087 GETIDX R8 R9 R8
+ 0x5429FFEF, // 0088 LDINT R10 -16
+ 0x40281528, // 0089 CONNECT R10 R10 K40
+ 0x882C0927, // 008A GETMBR R11 R4 K39
+ 0x9424160A, // 008B GETIDX R9 R11 R10
+ 0x8C300529, // 008C GETMET R12 R2 K41
+ 0x5C380E00, // 008D MOVE R14 R7
+ 0x603C0015, // 008E GETGBL R15 G21
+ 0x7C3C0000, // 008F CALL R15 0
+ 0x8C3C1F20, // 0090 GETMET R15 R15 K32
+ 0x8844012A, // 0091 GETMBR R17 R0 K42
+ 0x7C3C0400, // 0092 CALL R15 2
+ 0x60400015, // 0093 GETGBL R16 G21
+ 0x7C400000, // 0094 CALL R16 0
+ 0x6044000C, // 0095 GETGBL R17 G12
+ 0x5C481000, // 0096 MOVE R18 R8
0x7C440200, // 0097 CALL R17 1
- 0x00466811, // 0098 ADD R17 K52 R17
- 0x544A0003, // 0099 LDINT R18 4
- 0x7C3C0600, // 009A CALL R15 3
- 0xB83E4600, // 009B GETNGBL R15 K35
- 0x8C3C1F24, // 009C GETMET R15 R15 K36
- 0x8C441D32, // 009D GETMET R17 R14 K50
- 0x7C440200, // 009E CALL R17 1
- 0x00466A11, // 009F ADD R17 K53 R17
- 0x544A0003, // 00A0 LDINT R18 4
- 0x7C3C0600, // 00A1 CALL R15 3
- 0xB83E4600, // 00A2 GETNGBL R15 K35
- 0x8C3C1F24, // 00A3 GETMET R15 R15 K36
- 0x58440030, // 00A4 LDCONST R17 K48
- 0x544A0003, // 00A5 LDINT R18 4
- 0x7C3C0600, // 00A6 CALL R15 3
- 0x1C3C160E, // 00A7 EQ R15 R11 R14
- 0x783E0089, // 00A8 JMPF R15 #0133
- 0x8C3C0537, // 00A9 GETMET R15 R2 K55
- 0x5446000F, // 00AA LDINT R17 16
- 0x7C3C0400, // 00AB CALL R15 2
- 0x90166C0F, // 00AC SETMBR R5 K54 R15
- 0x603C0015, // 00AD GETGBL R15 G21
- 0x7C3C0000, // 00AE CALL R15 0
- 0x8C3C1F26, // 00AF GETMET R15 R15 K38
- 0x58440038, // 00B0 LDCONST R17 K56
- 0x7C3C0400, // 00B1 CALL R15 2
- 0x88400B36, // 00B2 GETMBR R16 R5 K54
- 0x003C1E10, // 00B3 ADD R15 R15 R16
- 0x88400716, // 00B4 GETMBR R16 R3 K22
- 0x8844070E, // 00B5 GETMBR R17 R3 K14
- 0x00402011, // 00B6 ADD R16 R16 R17
- 0x8C440528, // 00B7 GETMET R17 R2 K40
- 0x7C440200, // 00B8 CALL R17 1
- 0x8C442329, // 00B9 GETMET R17 R17 K41
- 0x884C0B2A, // 00BA GETMBR R19 R5 K42
- 0x5C502000, // 00BB MOVE R20 R16
- 0x5C541E00, // 00BC MOVE R21 R15
- 0x545A000F, // 00BD LDINT R22 16
- 0x7C440A00, // 00BE CALL R17 5
- 0x8C48052D, // 00BF GETMET R18 R2 K45
- 0x5C502200, // 00C0 MOVE R20 R17
- 0x60540015, // 00C1 GETGBL R21 G21
- 0x7C540000, // 00C2 CALL R21 0
- 0x8C542B26, // 00C3 GETMET R21 R21 K38
- 0x585C0039, // 00C4 LDCONST R23 K57
- 0x7C540400, // 00C5 CALL R21 2
- 0x60580015, // 00C6 GETGBL R22 G21
- 0x7C580000, // 00C7 CALL R22 0
- 0x585C0003, // 00C8 LDCONST R23 K3
- 0x5462000F, // 00C9 LDINT R24 16
- 0x7C480C00, // 00CA CALL R18 6
- 0x8C4C252F, // 00CB GETMET R19 R18 K47
- 0x7C4C0200, // 00CC CALL R19 1
- 0xB8520E00, // 00CD GETNGBL R20 K7
- 0x8C50293A, // 00CE GETMET R20 R20 K58
- 0x7C500200, // 00CF CALL R20 1
- 0x88540B36, // 00D0 GETMBR R21 R5 K54
- 0x90521C15, // 00D1 SETMBR R20 K14 R21
- 0x88540B20, // 00D2 GETMBR R21 R5 K32
- 0x90527615, // 00D3 SETMBR R20 K59 R21
- 0x90527813, // 00D4 SETMBR R20 K60 R19
- 0x8C540528, // 00D5 GETMET R21 R2 K40
- 0x7C540200, // 00D6 CALL R21 1
- 0x8C542B29, // 00D7 GETMET R21 R21 K41
- 0x885C0B2A, // 00D8 GETMBR R23 R5 K42
- 0x88600716, // 00D9 GETMBR R24 R3 K22
- 0x8864070E, // 00DA GETMBR R25 R3 K14
- 0x00603019, // 00DB ADD R24 R24 R25
- 0x60640015, // 00DC GETGBL R25 G21
- 0x7C640000, // 00DD CALL R25 0
- 0x8C643326, // 00DE GETMET R25 R25 K38
- 0x586C003D, // 00DF LDCONST R27 K61
- 0x7C640400, // 00E0 CALL R25 2
- 0x546A002F, // 00E1 LDINT R26 48
- 0x7C540A00, // 00E2 CALL R21 5
- 0x545A000E, // 00E3 LDINT R22 15
- 0x405A0616, // 00E4 CONNECT R22 K3 R22
- 0x94582A16, // 00E5 GETIDX R22 R21 R22
- 0x545E000F, // 00E6 LDINT R23 16
- 0x5462001E, // 00E7 LDINT R24 31
- 0x405C2E18, // 00E8 CONNECT R23 R23 R24
- 0x945C2A17, // 00E9 GETIDX R23 R21 R23
- 0x5462001F, // 00EA LDINT R24 32
- 0x5466002E, // 00EB LDINT R25 47
- 0x40603019, // 00EC CONNECT R24 R24 R25
- 0x94602A18, // 00ED GETIDX R24 R21 R24
- 0xB8664600, // 00EE GETNGBL R25 K35
- 0x8C64333E, // 00EF GETMET R25 R25 K62
- 0x7C640200, // 00F0 CALL R25 1
- 0x9464333F, // 00F1 GETIDX R25 R25 K63
- 0xB86A4600, // 00F2 GETNGBL R26 K35
- 0x8C683524, // 00F3 GETMET R26 R26 K36
- 0x58700040, // 00F4 LDCONST R28 K64
- 0x54760003, // 00F5 LDINT R29 4
- 0x7C680600, // 00F6 CALL R26 3
- 0xB86A4600, // 00F7 GETNGBL R26 K35
- 0x8C683524, // 00F8 GETMET R26 R26 K36
- 0x8C702D32, // 00F9 GETMET R28 R22 K50
- 0x7C700200, // 00FA CALL R28 1
- 0x0072821C, // 00FB ADD R28 K65 R28
- 0x54760003, // 00FC LDINT R29 4
- 0x7C680600, // 00FD CALL R26 3
- 0xB86A4600, // 00FE GETNGBL R26 K35
- 0x8C683524, // 00FF GETMET R26 R26 K36
- 0x8C702F32, // 0100 GETMET R28 R23 K50
- 0x7C700200, // 0101 CALL R28 1
- 0x0072841C, // 0102 ADD R28 K66 R28
- 0x54760003, // 0103 LDINT R29 4
- 0x7C680600, // 0104 CALL R26 3
- 0xB86A4600, // 0105 GETNGBL R26 K35
- 0x8C683524, // 0106 GETMET R26 R26 K36
- 0x8C703132, // 0107 GETMET R28 R24 K50
- 0x7C700200, // 0108 CALL R28 1
- 0x0072861C, // 0109 ADD R28 K67 R28
- 0x54760003, // 010A LDINT R29 4
- 0x7C680600, // 010B CALL R26 3
- 0xB86A4600, // 010C GETNGBL R26 K35
- 0x8C683524, // 010D GETMET R26 R26 K36
- 0x58700040, // 010E LDCONST R28 K64
- 0x54760003, // 010F LDINT R29 4
- 0x7C680600, // 0110 CALL R26 3
- 0x8C682944, // 0111 GETMET R26 R20 K68
- 0x7C680200, // 0112 CALL R26 1
- 0x4C6C0000, // 0113 LDNIL R27
- 0x90168A1B, // 0114 SETMBR R5 K69 R27
- 0xB86E4600, // 0115 GETNGBL R27 K35
- 0x8C6C3724, // 0116 GETMET R27 R27 K36
- 0x8C743532, // 0117 GETMET R29 R26 K50
- 0x7C740200, // 0118 CALL R29 1
- 0x00768C1D, // 0119 ADD R29 K70 R29
- 0x547A0003, // 011A LDINT R30 4
- 0x7C6C0600, // 011B CALL R27 3
- 0x8C6C0347, // 011C GETMET R27 R1 K71
- 0x54760032, // 011D LDINT R29 51
- 0x50780200, // 011E LDBOOL R30 1 0
- 0x7C6C0600, // 011F CALL R27 3
- 0x8C703744, // 0120 GETMET R28 R27 K68
- 0x5C783400, // 0121 MOVE R30 R26
- 0x7C700400, // 0122 CALL R28 2
- 0x88740148, // 0123 GETMBR R29 R0 K72
- 0x8C743B49, // 0124 GETMET R29 R29 K73
- 0x5C7C3800, // 0125 MOVE R31 R28
- 0x8880034A, // 0126 GETMBR R32 R1 K74
- 0x8884034B, // 0127 GETMBR R33 R1 K75
- 0x8888374C, // 0128 GETMBR R34 R27 K76
- 0x7C740A00, // 0129 CALL R29 5
- 0x8C740B4D, // 012A GETMET R29 R5 K77
- 0x5C7C2C00, // 012B MOVE R31 R22
- 0x5C802E00, // 012C MOVE R32 R23
- 0x5C843000, // 012D MOVE R33 R24
- 0x5C883200, // 012E MOVE R34 R25
- 0x7C740A00, // 012F CALL R29 5
- 0x50740200, // 0130 LDBOOL R29 1 0
- 0x80043A00, // 0131 RET 1 R29
- 0x70020001, // 0132 JMP #0135
- 0x4C3C0000, // 0133 LDNIL R15
- 0x900E1C0F, // 0134 SETMBR R3 K14 R15
- 0x8818070E, // 0135 GETMBR R6 R3 K14
- 0x4C1C0000, // 0136 LDNIL R7
- 0x1C180C07, // 0137 EQ R6 R6 R7
- 0x741A0003, // 0138 JMPT R6 #013D
- 0x8818070F, // 0139 GETMBR R6 R3 K15
- 0x4C1C0000, // 013A LDNIL R7
- 0x1C180C07, // 013B EQ R6 R6 R7
- 0x781A00F0, // 013C JMPF R6 #022E
- 0x8C180537, // 013D GETMET R6 R2 K55
- 0x5422000F, // 013E LDINT R8 16
- 0x7C180400, // 013F CALL R6 2
- 0x90166C06, // 0140 SETMBR R5 K54 R6
- 0x8C180537, // 0141 GETMET R6 R2 K55
- 0x5422001F, // 0142 LDINT R8 32
- 0x7C180400, // 0143 CALL R6 2
- 0x90029C06, // 0144 SETMBR R0 K78 R6
- 0x8C180550, // 0145 GETMET R6 R2 K80
- 0x7C180200, // 0146 CALL R6 1
- 0x8C180D51, // 0147 GETMET R6 R6 K81
- 0x8820014E, // 0148 GETMBR R8 R0 K78
- 0x7C180400, // 0149 CALL R6 2
- 0x90029E06, // 014A SETMBR R0 K79 R6
- 0x8C180537, // 014B GETMET R6 R2 K55
- 0x5422001F, // 014C LDINT R8 32
- 0x7C180400, // 014D CALL R6 2
- 0x8C1C0550, // 014E GETMET R7 R2 K80
- 0x7C1C0200, // 014F CALL R7 1
- 0x8C1C0F52, // 0150 GETMET R7 R7 K82
- 0x8824014E, // 0151 GETMBR R9 R0 K78
- 0x8828070D, // 0152 GETMBR R10 R3 K13
- 0x7C1C0600, // 0153 CALL R7 3
- 0x90165407, // 0154 SETMBR R5 K42 R7
- 0xB81E0E00, // 0155 GETNGBL R7 K7
- 0x881C0F53, // 0156 GETMBR R7 R7 K83
- 0x8C1C0F54, // 0157 GETMET R7 R7 K84
- 0x7C1C0200, // 0158 CALL R7 1
- 0x8C200F55, // 0159 GETMET R8 R7 K85
- 0x58280056, // 015A LDCONST R10 K86
- 0xB82E0E00, // 015B GETNGBL R11 K7
- 0x882C1753, // 015C GETMBR R11 R11 K83
- 0x882C1757, // 015D GETMBR R11 R11 K87
- 0x8C300B58, // 015E GETMET R12 R5 K88
- 0x7C300200, // 015F CALL R12 1
- 0x7C200800, // 0160 CALL R8 4
- 0x8C200F55, // 0161 GETMET R8 R7 K85
- 0x58280059, // 0162 LDCONST R10 K89
- 0xB82E0E00, // 0163 GETNGBL R11 K7
- 0x882C1753, // 0164 GETMBR R11 R11 K83
- 0x882C1757, // 0165 GETMBR R11 R11 K87
- 0x8C300B5A, // 0166 GETMET R12 R5 K90
- 0x7C300200, // 0167 CALL R12 1
- 0x7C200800, // 0168 CALL R8 4
- 0x8C200F55, // 0169 GETMET R8 R7 K85
- 0x5828005B, // 016A LDCONST R10 K91
- 0xB82E0E00, // 016B GETNGBL R11 K7
- 0x882C1753, // 016C GETMBR R11 R11 K83
- 0x882C1757, // 016D GETMBR R11 R11 K87
- 0x8830014F, // 016E GETMBR R12 R0 K79
- 0x7C200800, // 016F CALL R8 4
- 0x8C200F55, // 0170 GETMET R8 R7 K85
- 0x542A0003, // 0171 LDINT R10 4
- 0xB82E0E00, // 0172 GETNGBL R11 K7
- 0x882C1753, // 0173 GETMBR R11 R11 K83
- 0x882C1757, // 0174 GETMBR R11 R11 K87
- 0x8830070D, // 0175 GETMBR R12 R3 K13
- 0x7C200800, // 0176 CALL R8 4
- 0x8C200550, // 0177 GETMET R8 R2 K80
- 0x7C200200, // 0178 CALL R8 1
- 0x8C20115C, // 0179 GETMET R8 R8 K92
- 0x8C280B5D, // 017A GETMET R10 R5 K93
- 0x7C280200, // 017B CALL R10 1
- 0x8C2C0F44, // 017C GETMET R11 R7 K68
- 0x7C2C0200, // 017D CALL R11 1
- 0x7C200600, // 017E CALL R8 3
- 0xB8260E00, // 017F GETNGBL R9 K7
- 0x88241353, // 0180 GETMBR R9 R9 K83
- 0x8C241354, // 0181 GETMET R9 R9 K84
- 0x7C240200, // 0182 CALL R9 1
- 0x8C281355, // 0183 GETMET R10 R9 K85
- 0x58300056, // 0184 LDCONST R12 K86
- 0xB8360E00, // 0185 GETNGBL R13 K7
- 0x88341B53, // 0186 GETMBR R13 R13 K83
- 0x88341B57, // 0187 GETMBR R13 R13 K87
- 0x8C380B58, // 0188 GETMET R14 R5 K88
- 0x7C380200, // 0189 CALL R14 1
- 0x7C280800, // 018A CALL R10 4
- 0x8C281355, // 018B GETMET R10 R9 K85
- 0x58300059, // 018C LDCONST R12 K89
- 0xB8360E00, // 018D GETNGBL R13 K7
- 0x88341B53, // 018E GETMBR R13 R13 K83
- 0x88341B57, // 018F GETMBR R13 R13 K87
- 0x8C380B5A, // 0190 GETMET R14 R5 K90
- 0x7C380200, // 0191 CALL R14 1
- 0x7C280800, // 0192 CALL R10 4
- 0x8C281355, // 0193 GETMET R10 R9 K85
- 0x5830005B, // 0194 LDCONST R12 K91
- 0xB8360E00, // 0195 GETNGBL R13 K7
- 0x88341B53, // 0196 GETMBR R13 R13 K83
- 0x88341B57, // 0197 GETMBR R13 R13 K87
- 0x5C381000, // 0198 MOVE R14 R8
- 0x7C280800, // 0199 CALL R10 4
- 0x8C281355, // 019A GETMET R10 R9 K85
- 0x54320003, // 019B LDINT R12 4
- 0xB8360E00, // 019C GETNGBL R13 K7
- 0x88341B53, // 019D GETMBR R13 R13 K83
- 0x88341B57, // 019E GETMBR R13 R13 K87
- 0x88380B36, // 019F GETMBR R14 R5 K54
- 0x7C280800, // 01A0 CALL R10 4
- 0xB82A4600, // 01A1 GETNGBL R10 K35
- 0x8C281524, // 01A2 GETMET R10 R10 K36
- 0x58300030, // 01A3 LDCONST R12 K48
- 0x54360003, // 01A4 LDINT R13 4
- 0x7C280600, // 01A5 CALL R10 3
- 0x8828075E, // 01A6 GETMBR R10 R3 K94
- 0x90168A0A, // 01A7 SETMBR R5 K69 R10
- 0xB82A4600, // 01A8 GETNGBL R10 K35
- 0x8C281524, // 01A9 GETMET R10 R10 K36
- 0x88300B45, // 01AA GETMBR R12 R5 K69
- 0x8C301932, // 01AB GETMET R12 R12 K50
- 0x7C300200, // 01AC CALL R12 1
- 0x0032BE0C, // 01AD ADD R12 K95 R12
- 0x54360003, // 01AE LDINT R13 4
- 0x7C280600, // 01AF CALL R10 3
- 0x8C280560, // 01B0 GETMET R10 R2 K96
- 0x7C280200, // 01B1 CALL R10 1
- 0x8C281561, // 01B2 GETMET R10 R10 K97
- 0x88300B45, // 01B3 GETMBR R12 R5 K69
- 0x7C280400, // 01B4 CALL R10 2
- 0x8C281562, // 01B5 GETMET R10 R10 K98
- 0x7C280200, // 01B6 CALL R10 1
- 0x602C0015, // 01B7 GETGBL R11 G21
- 0x7C2C0000, // 01B8 CALL R11 0
- 0x8C2C1726, // 01B9 GETMET R11 R11 K38
- 0x88340163, // 01BA GETMBR R13 R0 K99
- 0x7C2C0400, // 01BB CALL R11 2
- 0x8C300B64, // 01BC GETMET R12 R5 K100
- 0x7C300200, // 01BD CALL R12 1
- 0x00301806, // 01BE ADD R12 R12 R6
- 0x8834014F, // 01BF GETMBR R13 R0 K79
- 0x0030180D, // 01C0 ADD R12 R12 R13
- 0x0030180A, // 01C1 ADD R12 R12 R10
- 0x8C340528, // 01C2 GETMET R13 R2 K40
- 0x7C340200, // 01C3 CALL R13 1
- 0x8C341B29, // 01C4 GETMET R13 R13 K41
- 0x883C0B2A, // 01C5 GETMBR R15 R5 K42
- 0x5C401800, // 01C6 MOVE R16 R12
- 0x5C441600, // 01C7 MOVE R17 R11
- 0x544A000F, // 01C8 LDINT R18 16
- 0x7C340A00, // 01C9 CALL R13 5
- 0xB83A4600, // 01CA GETNGBL R14 K35
- 0x8C381D24, // 01CB GETMET R14 R14 K36
- 0x88400B2A, // 01CC GETMBR R16 R5 K42
- 0x8C402132, // 01CD GETMET R16 R16 K50
- 0x7C400200, // 01CE CALL R16 1
- 0x0042CA10, // 01CF ADD R16 K101 R16
- 0x54460003, // 01D0 LDINT R17 4
- 0x7C380600, // 01D1 CALL R14 3
- 0xB83A4600, // 01D2 GETNGBL R14 K35
- 0x8C381D24, // 01D3 GETMET R14 R14 K36
- 0x8C401932, // 01D4 GETMET R16 R12 K50
- 0x7C400200, // 01D5 CALL R16 1
- 0x0042CC10, // 01D6 ADD R16 K102 R16
- 0x54460003, // 01D7 LDINT R17 4
- 0x7C380600, // 01D8 CALL R14 3
- 0xB83A4600, // 01D9 GETNGBL R14 K35
- 0x8C381D24, // 01DA GETMET R14 R14 K36
- 0x8C401B32, // 01DB GETMET R16 R13 K50
- 0x7C400200, // 01DC CALL R16 1
- 0x0042CE10, // 01DD ADD R16 K103 R16
- 0x54460003, // 01DE LDINT R17 4
- 0x7C380600, // 01DF CALL R14 3
- 0x8C381344, // 01E0 GETMET R14 R9 K68
- 0x7C380200, // 01E1 CALL R14 1
- 0x8C3C052D, // 01E2 GETMET R15 R2 K45
- 0x5C441A00, // 01E3 MOVE R17 R13
- 0x60480015, // 01E4 GETGBL R18 G21
- 0x7C480000, // 01E5 CALL R18 0
- 0x8C482526, // 01E6 GETMET R18 R18 K38
- 0x88500168, // 01E7 GETMBR R20 R0 K104
- 0x7C480400, // 01E8 CALL R18 2
- 0x604C0015, // 01E9 GETGBL R19 G21
- 0x7C4C0000, // 01EA CALL R19 0
- 0x6050000C, // 01EB GETGBL R20 G12
- 0x5C541C00, // 01EC MOVE R21 R14
- 0x7C500200, // 01ED CALL R20 1
- 0x5456000F, // 01EE LDINT R21 16
- 0x7C3C0C00, // 01EF CALL R15 6
- 0x8C401F69, // 01F0 GETMET R16 R15 K105
- 0x5C481C00, // 01F1 MOVE R18 R14
- 0x7C400400, // 01F2 CALL R16 2
- 0x8C441F2F, // 01F3 GETMET R17 R15 K47
- 0x7C440200, // 01F4 CALL R17 1
- 0x00402011, // 01F5 ADD R16 R16 R17
- 0xB8464600, // 01F6 GETNGBL R17 K35
- 0x8C442324, // 01F7 GETMET R17 R17 K36
- 0x8C4C2132, // 01F8 GETMET R19 R16 K50
- 0x7C4C0200, // 01F9 CALL R19 1
- 0x004ED413, // 01FA ADD R19 K106 R19
- 0x54520003, // 01FB LDINT R20 4
- 0x7C440600, // 01FC CALL R17 3
- 0xB8464600, // 01FD GETNGBL R17 K35
- 0x8C442324, // 01FE GETMET R17 R17 K36
- 0x584C0030, // 01FF LDCONST R19 K48
- 0x54520003, // 0200 LDINT R20 4
- 0x7C440600, // 0201 CALL R17 3
- 0xB8460E00, // 0202 GETNGBL R17 K7
- 0x8C44236B, // 0203 GETMET R17 R17 K107
- 0x7C440200, // 0204 CALL R17 1
- 0x9046D806, // 0205 SETMBR R17 K108 R6
- 0x88480122, // 0206 GETMBR R18 R0 K34
- 0x9046DA12, // 0207 SETMBR R17 K109 R18
- 0x8848014F, // 0208 GETMBR R18 R0 K79
- 0x9046DC12, // 0209 SETMBR R17 K110 R18
- 0x9046DE10, // 020A SETMBR R17 K111 R16
- 0xB84A4600, // 020B GETNGBL R18 K35
- 0x8C482524, // 020C GETMET R18 R18 K36
- 0xB8520E00, // 020D GETNGBL R20 K7
- 0x8C502971, // 020E GETMET R20 R20 K113
- 0x5C582200, // 020F MOVE R22 R17
- 0x7C500400, // 0210 CALL R20 2
- 0x0052E014, // 0211 ADD R20 K112 R20
- 0x54560003, // 0212 LDINT R21 4
- 0x7C480600, // 0213 CALL R18 3
- 0x8C482344, // 0214 GETMET R18 R17 K68
- 0x7C480200, // 0215 CALL R18 1
- 0x9016E412, // 0216 SETMBR R5 K114 R18
- 0xB84E4600, // 0217 GETNGBL R19 K35
- 0x8C4C2724, // 0218 GETMET R19 R19 K36
- 0x8C542532, // 0219 GETMET R21 R18 K50
- 0x7C540200, // 021A CALL R21 1
- 0x0056E615, // 021B ADD R21 K115 R21
- 0x545A0003, // 021C LDINT R22 4
- 0x7C4C0600, // 021D CALL R19 3
- 0x8C4C0347, // 021E GETMET R19 R1 K71
- 0x54560030, // 021F LDINT R21 49
- 0x50580200, // 0220 LDBOOL R22 1 0
- 0x7C4C0600, // 0221 CALL R19 3
- 0x8C502744, // 0222 GETMET R20 R19 K68
- 0x5C582400, // 0223 MOVE R22 R18
- 0x7C500400, // 0224 CALL R20 2
- 0x88540148, // 0225 GETMBR R21 R0 K72
- 0x8C542B49, // 0226 GETMET R21 R21 K73
- 0x5C5C2800, // 0227 MOVE R23 R20
- 0x8860034A, // 0228 GETMBR R24 R1 K74
- 0x8864034B, // 0229 GETMBR R25 R1 K75
- 0x8868274C, // 022A GETMBR R26 R19 K76
- 0x7C540A00, // 022B CALL R21 5
- 0x50540200, // 022C LDBOOL R21 1 0
- 0x80042A00, // 022D RET 1 R21
- 0x50180200, // 022E LDBOOL R6 1 0
- 0x80040C00, // 022F RET 1 R6
+ 0x544A000F, // 0098 LDINT R18 16
+ 0x7C300C00, // 0099 CALL R12 6
+ 0x5C281800, // 009A MOVE R10 R12
+ 0x8C30152B, // 009B GETMET R12 R10 K43
+ 0x5C381000, // 009C MOVE R14 R8
+ 0x7C300400, // 009D CALL R12 2
+ 0x5C2C1800, // 009E MOVE R11 R12
+ 0x8C30152C, // 009F GETMET R12 R10 K44
+ 0x7C300200, // 00A0 CALL R12 1
+ 0xB8360A00, // 00A1 GETNGBL R13 K5
+ 0x8C341B06, // 00A2 GETMET R13 R13 K6
+ 0x8C3C171E, // 00A3 GETMET R15 R11 K30
+ 0x7C3C0200, // 00A4 CALL R15 1
+ 0x003E5A0F, // 00A5 ADD R15 K45 R15
+ 0x54420003, // 00A6 LDINT R16 4
+ 0x7C340600, // 00A7 CALL R13 3
+ 0xB8360A00, // 00A8 GETNGBL R13 K5
+ 0x8C341B06, // 00A9 GETMET R13 R13 K6
+ 0x8C3C191E, // 00AA GETMET R15 R12 K30
+ 0x7C3C0200, // 00AB CALL R15 1
+ 0x003E5C0F, // 00AC ADD R15 K46 R15
+ 0x54420003, // 00AD LDINT R16 4
+ 0x7C340600, // 00AE CALL R13 3
+ 0xB8360A00, // 00AF GETNGBL R13 K5
+ 0x8C341B06, // 00B0 GETMET R13 R13 K6
+ 0x8C3C131E, // 00B1 GETMET R15 R9 K30
+ 0x7C3C0200, // 00B2 CALL R15 1
+ 0x003E5E0F, // 00B3 ADD R15 K47 R15
+ 0x54420003, // 00B4 LDINT R16 4
+ 0x7C340600, // 00B5 CALL R13 3
+ 0xB8360A00, // 00B6 GETNGBL R13 K5
+ 0x8C341B06, // 00B7 GETMET R13 R13 K6
+ 0x583C0011, // 00B8 LDCONST R15 K17
+ 0x54420003, // 00B9 LDINT R16 4
+ 0x7C340600, // 00BA CALL R13 3
+ 0x20341809, // 00BB NE R13 R12 R9
+ 0x78360012, // 00BC JMPF R13 #00D0
+ 0xB8360A00, // 00BD GETNGBL R13 K5
+ 0x8C341B06, // 00BE GETMET R13 R13 K6
+ 0x583C0030, // 00BF LDCONST R15 K48
+ 0x58400008, // 00C0 LDCONST R16 K8
+ 0x7C340600, // 00C1 CALL R13 3
+ 0xB8360A00, // 00C2 GETNGBL R13 K5
+ 0x8C341B06, // 00C3 GETMET R13 R13 K6
+ 0x583C0007, // 00C4 LDCONST R15 K7
+ 0x58400008, // 00C5 LDCONST R16 K8
+ 0x7C340600, // 00C6 CALL R13 3
+ 0x8C340109, // 00C7 GETMET R13 R0 K9
+ 0x5C3C0200, // 00C8 MOVE R15 R1
+ 0x5840000A, // 00C9 LDCONST R16 K10
+ 0x58440003, // 00CA LDCONST R17 K3
+ 0x58480008, // 00CB LDCONST R18 K8
+ 0x504C0000, // 00CC LDBOOL R19 0 0
+ 0x7C340C00, // 00CD CALL R13 6
+ 0x50380000, // 00CE LDBOOL R14 0 0
+ 0x80041C00, // 00CF RET 1 R14
+ 0xB8361800, // 00D0 GETNGBL R13 K12
+ 0x88341B31, // 00D1 GETMBR R13 R13 K49
+ 0x8C341B0E, // 00D2 GETMET R13 R13 K14
+ 0x5C3C1600, // 00D3 MOVE R15 R11
+ 0x7C340400, // 00D4 CALL R13 2
+ 0x8C381B32, // 00D5 GETMET R14 R13 K50
+ 0x5840000A, // 00D6 LDCONST R16 K10
+ 0x7C380400, // 00D7 CALL R14 2
+ 0x8C3C1B32, // 00D8 GETMET R15 R13 K50
+ 0x58440008, // 00D9 LDCONST R17 K8
+ 0x7C3C0400, // 00DA CALL R15 2
+ 0x8C401B32, // 00DB GETMET R16 R13 K50
+ 0x58480033, // 00DC LDCONST R18 K51
+ 0x7C400400, // 00DD CALL R16 2
+ 0xB8461800, // 00DE GETNGBL R17 K12
+ 0x88442331, // 00DF GETMBR R17 R17 K49
+ 0x8C44230E, // 00E0 GETMET R17 R17 K14
+ 0x5C4C1C00, // 00E1 MOVE R19 R14
+ 0x7C440400, // 00E2 CALL R17 2
+ 0xB84A0A00, // 00E3 GETNGBL R18 K5
+ 0x8C482506, // 00E4 GETMET R18 R18 K6
+ 0x60500008, // 00E5 GETGBL R20 G8
+ 0x5C542200, // 00E6 MOVE R21 R17
+ 0x7C500200, // 00E7 CALL R20 1
+ 0x00526814, // 00E8 ADD R20 K52 R20
+ 0x58540033, // 00E9 LDCONST R21 K51
+ 0x7C480600, // 00EA CALL R18 3
+ 0x8C482332, // 00EB GETMET R18 R17 K50
+ 0x54520008, // 00EC LDINT R20 9
+ 0x7C480400, // 00ED CALL R18 2
+ 0x8C4C2335, // 00EE GETMET R19 R17 K53
+ 0x54560005, // 00EF LDINT R21 6
+ 0x7C4C0400, // 00F0 CALL R19 2
+ 0x8C502732, // 00F1 GETMET R20 R19 K50
+ 0x545A0010, // 00F2 LDINT R22 17
+ 0x7C500400, // 00F3 CALL R20 2
+ 0x60540004, // 00F4 GETGBL R21 G4
+ 0x5C582800, // 00F5 MOVE R22 R20
+ 0x7C540200, // 00F6 CALL R21 1
+ 0x1C542B36, // 00F7 EQ R21 R21 K54
+ 0x78560003, // 00F8 JMPF R21 #00FD
+ 0xB8566E00, // 00F9 GETNGBL R21 K55
+ 0x5C582800, // 00FA MOVE R22 R20
+ 0x7C540200, // 00FB CALL R21 1
+ 0x5C502A00, // 00FC MOVE R20 R21
+ 0x8C542939, // 00FD GETMET R21 R20 K57
+ 0x7C540200, // 00FE CALL R21 1
+ 0x900E7015, // 00FF SETMBR R3 K56 R21
+ 0xB8560A00, // 0100 GETNGBL R21 K5
+ 0x8C542B06, // 0101 GETMET R21 R21 K6
+ 0x605C0008, // 0102 GETGBL R23 G8
+ 0x88600738, // 0103 GETMBR R24 R3 K56
+ 0x7C5C0200, // 0104 CALL R23 1
+ 0x005E7417, // 0105 ADD R23 K58 R23
+ 0x58600033, // 0106 LDCONST R24 K51
+ 0x7C540600, // 0107 CALL R21 3
+ 0xB8561800, // 0108 GETNGBL R21 K12
+ 0x88542B31, // 0109 GETMBR R21 R21 K49
+ 0x8C542B3B, // 010A GETMET R21 R21 K59
+ 0x7C540200, // 010B CALL R21 1
+ 0x8C582B3C, // 010C GETMET R22 R21 K60
+ 0x5860000A, // 010D LDCONST R24 K10
+ 0xB8661800, // 010E GETNGBL R25 K12
+ 0x88643331, // 010F GETMBR R25 R25 K49
+ 0x8864333D, // 0110 GETMBR R25 R25 K61
+ 0x5C681C00, // 0111 MOVE R26 R14
+ 0x7C580800, // 0112 CALL R22 4
+ 0x8C582B3C, // 0113 GETMET R22 R21 K60
+ 0x58600008, // 0114 LDCONST R24 K8
+ 0xB8661800, // 0115 GETNGBL R25 K12
+ 0x88643331, // 0116 GETMBR R25 R25 K49
+ 0x8864333D, // 0117 GETMBR R25 R25 K61
+ 0x5C681E00, // 0118 MOVE R26 R15
+ 0x7C580800, // 0119 CALL R22 4
+ 0x8C582B3C, // 011A GETMET R22 R21 K60
+ 0x58600033, // 011B LDCONST R24 K51
+ 0xB8661800, // 011C GETNGBL R25 K12
+ 0x88643331, // 011D GETMBR R25 R25 K49
+ 0x8864333D, // 011E GETMBR R25 R25 K61
+ 0x8868013E, // 011F GETMBR R26 R0 K62
+ 0x7C580800, // 0120 CALL R22 4
+ 0x8C582B3C, // 0121 GETMET R22 R21 K60
+ 0x54620003, // 0122 LDINT R24 4
+ 0xB8661800, // 0123 GETNGBL R25 K12
+ 0x88643331, // 0124 GETMBR R25 R25 K49
+ 0x8864333D, // 0125 GETMBR R25 R25 K61
+ 0x8868013F, // 0126 GETMBR R26 R0 K63
+ 0x7C580800, // 0127 CALL R22 4
+ 0x8C582B40, // 0128 GETMET R22 R21 K64
+ 0x7C580200, // 0129 CALL R22 1
+ 0xB85E0A00, // 012A GETNGBL R23 K5
+ 0x8C5C2F06, // 012B GETMET R23 R23 K6
+ 0x8C64251E, // 012C GETMET R25 R18 K30
+ 0x7C640200, // 012D CALL R25 1
+ 0x00668219, // 012E ADD R25 K65 R25
+ 0x546A0003, // 012F LDINT R26 4
+ 0x7C5C0600, // 0130 CALL R23 3
+ 0xB85E0A00, // 0131 GETNGBL R23 K5
+ 0x8C5C2F06, // 0132 GETMET R23 R23 K6
+ 0x8C64211E, // 0133 GETMET R25 R16 K30
+ 0x7C640200, // 0134 CALL R25 1
+ 0x00668419, // 0135 ADD R25 K66 R25
+ 0x546A0003, // 0136 LDINT R26 4
+ 0x7C5C0600, // 0137 CALL R23 3
+ 0xB85E0A00, // 0138 GETNGBL R23 K5
+ 0x8C5C2F06, // 0139 GETMET R23 R23 K6
+ 0x58640011, // 013A LDCONST R25 K17
+ 0x546A0003, // 013B LDINT R26 4
+ 0x7C5C0600, // 013C CALL R23 3
+ 0x8C5C0543, // 013D GETMET R23 R2 K67
+ 0x7C5C0200, // 013E CALL R23 1
+ 0x8C5C2F44, // 013F GETMET R23 R23 K68
+ 0x5C642400, // 0140 MOVE R25 R18
+ 0x5C682C00, // 0141 MOVE R26 R22
+ 0x5C6C2000, // 0142 MOVE R27 R16
+ 0x7C5C0800, // 0143 CALL R23 4
+ 0x5C602E00, // 0144 MOVE R24 R23
+ 0x74620012, // 0145 JMPT R24 #0159
+ 0xB8620A00, // 0146 GETNGBL R24 K5
+ 0x8C603106, // 0147 GETMET R24 R24 K6
+ 0x58680045, // 0148 LDCONST R26 K69
+ 0x586C0008, // 0149 LDCONST R27 K8
+ 0x7C600600, // 014A CALL R24 3
+ 0xB8620A00, // 014B GETNGBL R24 K5
+ 0x8C603106, // 014C GETMET R24 R24 K6
+ 0x58680007, // 014D LDCONST R26 K7
+ 0x586C0008, // 014E LDCONST R27 K8
+ 0x7C600600, // 014F CALL R24 3
+ 0x8C600109, // 0150 GETMET R24 R0 K9
+ 0x5C680200, // 0151 MOVE R26 R1
+ 0x586C000A, // 0152 LDCONST R27 K10
+ 0x58700003, // 0153 LDCONST R28 K3
+ 0x58740008, // 0154 LDCONST R29 K8
+ 0x50780000, // 0155 LDBOOL R30 0 0
+ 0x7C600C00, // 0156 CALL R24 6
+ 0x50640000, // 0157 LDBOOL R25 0 0
+ 0x80043200, // 0158 RET 1 R25
+ 0xB8620A00, // 0159 GETNGBL R24 K5
+ 0x8C603106, // 015A GETMET R24 R24 K6
+ 0x58680046, // 015B LDCONST R26 K70
+ 0x586C0033, // 015C LDCONST R27 K51
+ 0x7C600600, // 015D CALL R24 3
+ 0x8C600512, // 015E GETMET R24 R2 K18
+ 0x7C600200, // 015F CALL R24 1
+ 0x8C603113, // 0160 GETMET R24 R24 K19
+ 0x88680714, // 0161 GETMBR R26 R3 K20
+ 0x7C600400, // 0162 CALL R24 2
+ 0x8C603113, // 0163 GETMET R24 R24 K19
+ 0x88680715, // 0164 GETMBR R26 R3 K21
+ 0x7C600400, // 0165 CALL R24 2
+ 0x8C603113, // 0166 GETMET R24 R24 K19
+ 0x88680947, // 0167 GETMBR R26 R4 K71
+ 0x7C600400, // 0168 CALL R24 2
+ 0x8C603116, // 0169 GETMET R24 R24 K22
+ 0x7C600200, // 016A CALL R24 1
+ 0x5C143000, // 016B MOVE R5 R24
+ 0x4C600000, // 016C LDNIL R24
+ 0x900E2818, // 016D SETMBR R3 K20 R24
+ 0x4C600000, // 016E LDNIL R24
+ 0x900E2A18, // 016F SETMBR R3 K21 R24
+ 0xB8620A00, // 0170 GETNGBL R24 K5
+ 0x8C603106, // 0171 GETMET R24 R24 K6
+ 0x58680048, // 0172 LDCONST R26 K72
+ 0x546E0003, // 0173 LDINT R27 4
+ 0x7C600600, // 0174 CALL R24 3
+ 0xB8620A00, // 0175 GETNGBL R24 K5
+ 0x8C603106, // 0176 GETMET R24 R24 K6
+ 0x88680724, // 0177 GETMBR R26 R3 K36
+ 0x8C68351E, // 0178 GETMET R26 R26 K30
+ 0x7C680200, // 0179 CALL R26 1
+ 0x006A921A, // 017A ADD R26 K73 R26
+ 0x546E0003, // 017B LDINT R27 4
+ 0x7C600600, // 017C CALL R24 3
+ 0xB8620A00, // 017D GETNGBL R24 K5
+ 0x8C603106, // 017E GETMET R24 R24 K6
+ 0x8C68071D, // 017F GETMET R26 R3 K29
+ 0x7C680200, // 0180 CALL R26 1
+ 0x00683405, // 0181 ADD R26 R26 R5
+ 0x8C68351E, // 0182 GETMET R26 R26 K30
+ 0x7C680200, // 0183 CALL R26 1
+ 0x006A941A, // 0184 ADD R26 K74 R26
+ 0x546E0003, // 0185 LDINT R27 4
+ 0x7C600600, // 0186 CALL R24 3
+ 0x8C600522, // 0187 GETMET R24 R2 K34
+ 0x7C600200, // 0188 CALL R24 1
+ 0x8C603123, // 0189 GETMET R24 R24 K35
+ 0x88680724, // 018A GETMBR R26 R3 K36
+ 0x8C6C071D, // 018B GETMET R27 R3 K29
+ 0x7C6C0200, // 018C CALL R27 1
+ 0x006C3605, // 018D ADD R27 R27 R5
+ 0x60700015, // 018E GETGBL R28 G21
+ 0x7C700000, // 018F CALL R28 0
+ 0x8C703920, // 0190 GETMET R28 R28 K32
+ 0x8878014B, // 0191 GETMBR R30 R0 K75
+ 0x7C700400, // 0192 CALL R28 2
+ 0x5476002F, // 0193 LDINT R29 48
+ 0x7C600A00, // 0194 CALL R24 5
+ 0x5466000E, // 0195 LDINT R25 15
+ 0x40660619, // 0196 CONNECT R25 K3 R25
+ 0x94643019, // 0197 GETIDX R25 R24 R25
+ 0x546A000F, // 0198 LDINT R26 16
+ 0x546E001E, // 0199 LDINT R27 31
+ 0x4068341B, // 019A CONNECT R26 R26 R27
+ 0x9468301A, // 019B GETIDX R26 R24 R26
+ 0x546E001F, // 019C LDINT R27 32
+ 0x5472002E, // 019D LDINT R28 47
+ 0x406C361C, // 019E CONNECT R27 R27 R28
+ 0x946C301B, // 019F GETIDX R27 R24 R27
+ 0xB8720A00, // 01A0 GETNGBL R28 K5
+ 0x8C70394C, // 01A1 GETMET R28 R28 K76
+ 0x7C700200, // 01A2 CALL R28 1
+ 0x9470394D, // 01A3 GETIDX R28 R28 K77
+ 0xB8760A00, // 01A4 GETNGBL R29 K5
+ 0x8C743B06, // 01A5 GETMET R29 R29 K6
+ 0x587C0048, // 01A6 LDCONST R31 K72
+ 0x54820003, // 01A7 LDINT R32 4
+ 0x7C740600, // 01A8 CALL R29 3
+ 0xB8760A00, // 01A9 GETNGBL R29 K5
+ 0x8C743B06, // 01AA GETMET R29 R29 K6
+ 0x8C7C331E, // 01AB GETMET R31 R25 K30
+ 0x7C7C0200, // 01AC CALL R31 1
+ 0x007E9C1F, // 01AD ADD R31 K78 R31
+ 0x54820003, // 01AE LDINT R32 4
+ 0x7C740600, // 01AF CALL R29 3
+ 0xB8760A00, // 01B0 GETNGBL R29 K5
+ 0x8C743B06, // 01B1 GETMET R29 R29 K6
+ 0x8C7C351E, // 01B2 GETMET R31 R26 K30
+ 0x7C7C0200, // 01B3 CALL R31 1
+ 0x007E9E1F, // 01B4 ADD R31 K79 R31
+ 0x54820003, // 01B5 LDINT R32 4
+ 0x7C740600, // 01B6 CALL R29 3
+ 0xB8760A00, // 01B7 GETNGBL R29 K5
+ 0x8C743B06, // 01B8 GETMET R29 R29 K6
+ 0x8C7C371E, // 01B9 GETMET R31 R27 K30
+ 0x7C7C0200, // 01BA CALL R31 1
+ 0x007EA01F, // 01BB ADD R31 K80 R31
+ 0x54820003, // 01BC LDINT R32 4
+ 0x7C740600, // 01BD CALL R29 3
+ 0xB8760A00, // 01BE GETNGBL R29 K5
+ 0x8C743B06, // 01BF GETMET R29 R29 K6
+ 0x587C0048, // 01C0 LDCONST R31 K72
+ 0x54820003, // 01C1 LDINT R32 4
+ 0x7C740600, // 01C2 CALL R29 3
+ 0x8C740109, // 01C3 GETMET R29 R0 K9
+ 0x5C7C0200, // 01C4 MOVE R31 R1
+ 0x58800003, // 01C5 LDCONST R32 K3
+ 0x58840003, // 01C6 LDCONST R33 K3
+ 0x58880003, // 01C7 LDCONST R34 K3
+ 0x508C0200, // 01C8 LDBOOL R35 1 0
+ 0x7C740C00, // 01C9 CALL R29 6
+ 0x8C780751, // 01CA GETMET R30 R3 K81
+ 0x7C780200, // 01CB CALL R30 1
+ 0x8C780752, // 01CC GETMET R30 R3 K82
+ 0x5C803200, // 01CD MOVE R32 R25
+ 0x5C843400, // 01CE MOVE R33 R26
+ 0x5C883600, // 01CF MOVE R34 R27
+ 0x5C8C3800, // 01D0 MOVE R35 R28
+ 0x7C780A00, // 01D1 CALL R30 5
+ 0x900EA703, // 01D2 SETMBR R3 K83 K3
+ 0x8C780754, // 01D3 GETMET R30 R3 K84
+ 0x50800200, // 01D4 LDBOOL R32 1 0
+ 0x7C780400, // 01D5 CALL R30 2
+ 0x8C780755, // 01D6 GETMET R30 R3 K85
+ 0x7C780200, // 01D7 CALL R30 1
+ 0x8C780756, // 01D8 GETMET R30 R3 K86
+ 0x7C780200, // 01D9 CALL R30 1
+ 0x8C780757, // 01DA GETMET R30 R3 K87
+ 0x7C780200, // 01DB CALL R30 1
+ 0x50780200, // 01DC LDBOOL R30 1 0
+ 0x80043C00, // 01DD RET 1 R30
})
)
);
@@ -2254,51 +756,6 @@ be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /*
/*******************************************************************/
-/********************************************************************
-** Solidified function: parse_StatusReport
-********************************************************************/
-be_local_closure(Matter_Commisioning_Context_parse_StatusReport, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X20_X3D_X20),
- /* K4 */ be_nested_str_weak(raw),
- /* K5 */ be_nested_str_weak(app_payload_idx),
- /* K6 */ be_const_int(2147483647),
- /* K7 */ be_nested_str_weak(tohex),
- }),
- be_str_weak(parse_StatusReport),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0xB80E0200, // 0001 GETNGBL R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x88140305, // 0003 GETMBR R5 R1 K5
- 0x40140B06, // 0004 CONNECT R5 R5 K6
- 0x88180304, // 0005 GETMBR R6 R1 K4
- 0x94140C05, // 0006 GETIDX R5 R6 R5
- 0x8C140B07, // 0007 GETMET R5 R5 K7
- 0x7C140200, // 0008 CALL R5 1
- 0x00160605, // 0009 ADD R5 K3 R5
- 0x7C0C0400, // 000A CALL R3 2
- 0x500C0200, // 000B LDBOOL R3 1 0
- 0x80040600, // 000C RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: process_incoming
********************************************************************/
@@ -2423,50 +880,1781 @@ be_local_closure(Matter_Commisioning_Context_process_incoming, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: parse_Pake3
+********************************************************************/
+be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[42]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(opcode),
+ /* K2 */ be_nested_str_weak(local_session_id),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(protocol_id),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
+ /* K10 */ be_nested_str_weak(send_status_report),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(matter),
+ /* K13 */ be_nested_str_weak(Pake3),
+ /* K14 */ be_nested_str_weak(parse),
+ /* K15 */ be_nested_str_weak(raw),
+ /* K16 */ be_nested_str_weak(app_payload_idx),
+ /* K17 */ be_nested_str_weak(cA),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20received_X20cA_X3D),
+ /* K19 */ be_nested_str_weak(tohex),
+ /* K20 */ be_nested_str_weak(spake),
+ /* K21 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received),
+ /* K22 */ be_nested_str_weak(created),
+ /* K23 */ be_nested_str_weak(rtc),
+ /* K24 */ be_nested_str_weak(utc),
+ /* K25 */ be_nested_str_weak(HKDF_SHA256),
+ /* K26 */ be_nested_str_weak(derive),
+ /* K27 */ be_nested_str_weak(Ke),
+ /* K28 */ be_nested_str_weak(fromstring),
+ /* K29 */ be_nested_str_weak(SEKeys_Info),
+ /* K30 */ be_nested_str_weak(I2RKey),
+ /* K31 */ be_nested_str_weak(R2IKey),
+ /* K32 */ be_nested_str_weak(AttestationChallenge),
+ /* K33 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
+ /* K34 */ be_nested_str_weak(MTR_X3A_X20session_keys_X3D),
+ /* K35 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D),
+ /* K36 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D),
+ /* K37 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D),
+ /* K38 */ be_nested_str_weak(responder),
+ /* K39 */ be_nested_str_weak(add_session),
+ /* K40 */ be_nested_str_weak(future_local_session_id),
+ /* K41 */ be_nested_str_weak(future_initiator_session_id),
+ }),
+ be_str_weak(parse_Pake3),
+ &be_const_str_solidified,
+ ( &(const binstruction[161]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x880C0301, // 0001 GETMBR R3 R1 K1
+ 0x54120023, // 0002 LDINT R4 36
+ 0x200C0604, // 0003 NE R3 R3 R4
+ 0x740E0005, // 0004 JMPT R3 #000B
+ 0x880C0302, // 0005 GETMBR R3 R1 K2
+ 0x200C0703, // 0006 NE R3 R3 K3
+ 0x740E0002, // 0007 JMPT R3 #000B
+ 0x880C0304, // 0008 GETMBR R3 R1 K4
+ 0x200C0703, // 0009 NE R3 R3 K3
+ 0x780E0012, // 000A JMPF R3 #001E
+ 0xB80E0A00, // 000B GETNGBL R3 K5
+ 0x8C0C0706, // 000C GETMET R3 R3 K6
+ 0x58140007, // 000D LDCONST R5 K7
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C0C0600, // 000F CALL R3 3
+ 0xB80E0A00, // 0010 GETNGBL R3 K5
+ 0x8C0C0706, // 0011 GETMET R3 R3 K6
+ 0x58140009, // 0012 LDCONST R5 K9
+ 0x58180008, // 0013 LDCONST R6 K8
+ 0x7C0C0600, // 0014 CALL R3 3
+ 0x8C0C010A, // 0015 GETMET R3 R0 K10
+ 0x5C140200, // 0016 MOVE R5 R1
+ 0x5818000B, // 0017 LDCONST R6 K11
+ 0x581C0003, // 0018 LDCONST R7 K3
+ 0x58200008, // 0019 LDCONST R8 K8
+ 0x50240000, // 001A LDBOOL R9 0 0
+ 0x7C0C0C00, // 001B CALL R3 6
+ 0x50100000, // 001C LDBOOL R4 0 0
+ 0x80040800, // 001D RET 1 R4
+ 0xB80E1800, // 001E GETNGBL R3 K12
+ 0x8C0C070D, // 001F GETMET R3 R3 K13
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x8C0C070E, // 0021 GETMET R3 R3 K14
+ 0x8814030F, // 0022 GETMBR R5 R1 K15
+ 0x88180310, // 0023 GETMBR R6 R1 K16
+ 0x7C0C0600, // 0024 CALL R3 3
+ 0x88100711, // 0025 GETMBR R4 R3 K17
+ 0x90022204, // 0026 SETMBR R0 K17 R4
+ 0xB8120A00, // 0027 GETNGBL R4 K5
+ 0x8C100906, // 0028 GETMET R4 R4 K6
+ 0x88180111, // 0029 GETMBR R6 R0 K17
+ 0x8C180D13, // 002A GETMET R6 R6 K19
+ 0x7C180200, // 002B CALL R6 1
+ 0x001A2406, // 002C ADD R6 K18 R6
+ 0x541E0003, // 002D LDINT R7 4
+ 0x7C100600, // 002E CALL R4 3
+ 0x88100111, // 002F GETMBR R4 R0 K17
+ 0x88140114, // 0030 GETMBR R5 R0 K20
+ 0x88140B11, // 0031 GETMBR R5 R5 K17
+ 0x20100805, // 0032 NE R4 R4 R5
+ 0x78120012, // 0033 JMPF R4 #0047
+ 0xB8120A00, // 0034 GETNGBL R4 K5
+ 0x8C100906, // 0035 GETMET R4 R4 K6
+ 0x58180015, // 0036 LDCONST R6 K21
+ 0x581C0008, // 0037 LDCONST R7 K8
+ 0x7C100600, // 0038 CALL R4 3
+ 0xB8120A00, // 0039 GETNGBL R4 K5
+ 0x8C100906, // 003A GETMET R4 R4 K6
+ 0x58180009, // 003B LDCONST R6 K9
+ 0x581C0008, // 003C LDCONST R7 K8
+ 0x7C100600, // 003D CALL R4 3
+ 0x8C10010A, // 003E GETMET R4 R0 K10
+ 0x5C180200, // 003F MOVE R6 R1
+ 0x581C000B, // 0040 LDCONST R7 K11
+ 0x58200003, // 0041 LDCONST R8 K3
+ 0x58240008, // 0042 LDCONST R9 K8
+ 0x50280000, // 0043 LDBOOL R10 0 0
+ 0x7C100C00, // 0044 CALL R4 6
+ 0x50140000, // 0045 LDBOOL R5 0 0
+ 0x80040A00, // 0046 RET 1 R5
+ 0xB8120A00, // 0047 GETNGBL R4 K5
+ 0x8C100917, // 0048 GETMET R4 R4 K23
+ 0x7C100200, // 0049 CALL R4 1
+ 0x94100918, // 004A GETIDX R4 R4 K24
+ 0x90022C04, // 004B SETMBR R0 K22 R4
+ 0x8C100519, // 004C GETMET R4 R2 K25
+ 0x7C100200, // 004D CALL R4 1
+ 0x8C10091A, // 004E GETMET R4 R4 K26
+ 0x8818011B, // 004F GETMBR R6 R0 K27
+ 0x601C0015, // 0050 GETGBL R7 G21
+ 0x7C1C0000, // 0051 CALL R7 0
+ 0x60200015, // 0052 GETGBL R8 G21
+ 0x7C200000, // 0053 CALL R8 0
+ 0x8C20111C, // 0054 GETMET R8 R8 K28
+ 0x8828011D, // 0055 GETMBR R10 R0 K29
+ 0x7C200400, // 0056 CALL R8 2
+ 0x5426002F, // 0057 LDINT R9 48
+ 0x7C100A00, // 0058 CALL R4 5
+ 0x5416000E, // 0059 LDINT R5 15
+ 0x40160605, // 005A CONNECT R5 K3 R5
+ 0x94140805, // 005B GETIDX R5 R4 R5
+ 0x90023C05, // 005C SETMBR R0 K30 R5
+ 0x5416000F, // 005D LDINT R5 16
+ 0x541A001E, // 005E LDINT R6 31
+ 0x40140A06, // 005F CONNECT R5 R5 R6
+ 0x94140805, // 0060 GETIDX R5 R4 R5
+ 0x90023E05, // 0061 SETMBR R0 K31 R5
+ 0x5416001F, // 0062 LDINT R5 32
+ 0x541A002E, // 0063 LDINT R6 47
+ 0x40140A06, // 0064 CONNECT R5 R5 R6
+ 0x94140805, // 0065 GETIDX R5 R4 R5
+ 0x90024005, // 0066 SETMBR R0 K32 R5
+ 0xB8160A00, // 0067 GETNGBL R5 K5
+ 0x8C140B06, // 0068 GETMET R5 R5 K6
+ 0x581C0021, // 0069 LDCONST R7 K33
+ 0x54220003, // 006A LDINT R8 4
+ 0x7C140600, // 006B CALL R5 3
+ 0xB8160A00, // 006C GETNGBL R5 K5
+ 0x8C140B06, // 006D GETMET R5 R5 K6
+ 0x8C1C0913, // 006E GETMET R7 R4 K19
+ 0x7C1C0200, // 006F CALL R7 1
+ 0x001E4407, // 0070 ADD R7 K34 R7
+ 0x54220003, // 0071 LDINT R8 4
+ 0x7C140600, // 0072 CALL R5 3
+ 0xB8160A00, // 0073 GETNGBL R5 K5
+ 0x8C140B06, // 0074 GETMET R5 R5 K6
+ 0x881C011E, // 0075 GETMBR R7 R0 K30
+ 0x8C1C0F13, // 0076 GETMET R7 R7 K19
+ 0x7C1C0200, // 0077 CALL R7 1
+ 0x001E4607, // 0078 ADD R7 K35 R7
+ 0x54220003, // 0079 LDINT R8 4
+ 0x7C140600, // 007A CALL R5 3
+ 0xB8160A00, // 007B GETNGBL R5 K5
+ 0x8C140B06, // 007C GETMET R5 R5 K6
+ 0x881C011F, // 007D GETMBR R7 R0 K31
+ 0x8C1C0F13, // 007E GETMET R7 R7 K19
+ 0x7C1C0200, // 007F CALL R7 1
+ 0x001E4807, // 0080 ADD R7 K36 R7
+ 0x54220003, // 0081 LDINT R8 4
+ 0x7C140600, // 0082 CALL R5 3
+ 0xB8160A00, // 0083 GETNGBL R5 K5
+ 0x8C140B06, // 0084 GETMET R5 R5 K6
+ 0x881C0120, // 0085 GETMBR R7 R0 K32
+ 0x8C1C0F13, // 0086 GETMET R7 R7 K19
+ 0x7C1C0200, // 0087 CALL R7 1
+ 0x001E4A07, // 0088 ADD R7 K37 R7
+ 0x54220003, // 0089 LDINT R8 4
+ 0x7C140600, // 008A CALL R5 3
+ 0xB8160A00, // 008B GETNGBL R5 K5
+ 0x8C140B06, // 008C GETMET R5 R5 K6
+ 0x581C0021, // 008D LDCONST R7 K33
+ 0x54220003, // 008E LDINT R8 4
+ 0x7C140600, // 008F CALL R5 3
+ 0x8C14010A, // 0090 GETMET R5 R0 K10
+ 0x5C1C0200, // 0091 MOVE R7 R1
+ 0x58200003, // 0092 LDCONST R8 K3
+ 0x58240003, // 0093 LDCONST R9 K3
+ 0x58280003, // 0094 LDCONST R10 K3
+ 0x502C0000, // 0095 LDBOOL R11 0 0
+ 0x7C140C00, // 0096 CALL R5 6
+ 0x88180126, // 0097 GETMBR R6 R0 K38
+ 0x8C180D27, // 0098 GETMET R6 R6 K39
+ 0x88200128, // 0099 GETMBR R8 R0 K40
+ 0x88240129, // 009A GETMBR R9 R0 K41
+ 0x8828011E, // 009B GETMBR R10 R0 K30
+ 0x882C011F, // 009C GETMBR R11 R0 K31
+ 0x88300120, // 009D GETMBR R12 R0 K32
+ 0x88340116, // 009E GETMBR R13 R0 K22
+ 0x7C180E00, // 009F CALL R6 7
+ 0x80000000, // 00A0 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_PBKDFParamRequest
+********************************************************************/
+be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[50]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(opcode),
+ /* K2 */ be_nested_str_weak(local_session_id),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(protocol_id),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
+ /* K10 */ be_nested_str_weak(send_status_report),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(matter),
+ /* K13 */ be_nested_str_weak(PBKDFParamRequest),
+ /* K14 */ be_nested_str_weak(parse),
+ /* K15 */ be_nested_str_weak(raw),
+ /* K16 */ be_nested_str_weak(app_payload_idx),
+ /* K17 */ be_nested_str_weak(session),
+ /* K18 */ be_nested_str_weak(set_mode_PASE),
+ /* K19 */ be_const_int(2147483647),
+ /* K20 */ be_nested_str_weak(passcodeId),
+ /* K21 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id),
+ /* K22 */ be_nested_str_weak(future_initiator_session_id),
+ /* K23 */ be_nested_str_weak(initiator_session_id),
+ /* K24 */ be_nested_str_weak(future_local_session_id),
+ /* K25 */ be_nested_str_weak(device),
+ /* K26 */ be_nested_str_weak(sessions),
+ /* K27 */ be_nested_str_weak(gen_local_session_id),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20Loc_session_X3D),
+ /* K29 */ be_nested_str_weak(PBKDFParamResponse),
+ /* K30 */ be_nested_str_weak(initiatorRandom),
+ /* K31 */ be_nested_str_weak(responderRandom),
+ /* K32 */ be_nested_str_weak(random),
+ /* K33 */ be_nested_str_weak(responderSessionId),
+ /* K34 */ be_nested_str_weak(pbkdf_parameters_salt),
+ /* K35 */ be_nested_str_weak(commissioning_salt),
+ /* K36 */ be_nested_str_weak(pbkdf_parameters_iterations),
+ /* K37 */ be_nested_str_weak(commissioning_iterations),
+ /* K38 */ be_nested_str_weak(MTR_X3A_X20pbkdfparamresp_X3A_X20),
+ /* K39 */ be_nested_str_weak(inspect),
+ /* K40 */ be_nested_str_weak(encode),
+ /* K41 */ be_nested_str_weak(MTR_X3A_X20pbkdfparamresp_raw_X3A_X20),
+ /* K42 */ be_nested_str_weak(tohex),
+ /* K43 */ be_nested_str_weak(build_response),
+ /* K44 */ be_nested_str_weak(encode_frame),
+ /* K45 */ be_nested_str_weak(responder),
+ /* K46 */ be_nested_str_weak(send_response),
+ /* K47 */ be_nested_str_weak(remote_ip),
+ /* K48 */ be_nested_str_weak(remote_port),
+ /* K49 */ be_nested_str_weak(message_counter),
+ }),
+ be_str_weak(parse_PBKDFParamRequest),
+ &be_const_str_solidified,
+ ( &(const binstruction[134]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x880C0301, // 0001 GETMBR R3 R1 K1
+ 0x5412001F, // 0002 LDINT R4 32
+ 0x200C0604, // 0003 NE R3 R3 R4
+ 0x740E0005, // 0004 JMPT R3 #000B
+ 0x880C0302, // 0005 GETMBR R3 R1 K2
+ 0x200C0703, // 0006 NE R3 R3 K3
+ 0x740E0002, // 0007 JMPT R3 #000B
+ 0x880C0304, // 0008 GETMBR R3 R1 K4
+ 0x200C0703, // 0009 NE R3 R3 K3
+ 0x780E0012, // 000A JMPF R3 #001E
+ 0xB80E0A00, // 000B GETNGBL R3 K5
+ 0x8C0C0706, // 000C GETMET R3 R3 K6
+ 0x58140007, // 000D LDCONST R5 K7
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C0C0600, // 000F CALL R3 3
+ 0xB80E0A00, // 0010 GETNGBL R3 K5
+ 0x8C0C0706, // 0011 GETMET R3 R3 K6
+ 0x58140009, // 0012 LDCONST R5 K9
+ 0x58180008, // 0013 LDCONST R6 K8
+ 0x7C0C0600, // 0014 CALL R3 3
+ 0x8C0C010A, // 0015 GETMET R3 R0 K10
+ 0x5C140200, // 0016 MOVE R5 R1
+ 0x5818000B, // 0017 LDCONST R6 K11
+ 0x581C0003, // 0018 LDCONST R7 K3
+ 0x58200008, // 0019 LDCONST R8 K8
+ 0x50240000, // 001A LDBOOL R9 0 0
+ 0x7C0C0C00, // 001B CALL R3 6
+ 0x50100000, // 001C LDBOOL R4 0 0
+ 0x80040800, // 001D RET 1 R4
+ 0xB80E1800, // 001E GETNGBL R3 K12
+ 0x8C0C070D, // 001F GETMET R3 R3 K13
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x8C0C070E, // 0021 GETMET R3 R3 K14
+ 0x8814030F, // 0022 GETMBR R5 R1 K15
+ 0x88180310, // 0023 GETMBR R6 R1 K16
+ 0x7C0C0600, // 0024 CALL R3 3
+ 0x88100311, // 0025 GETMBR R4 R1 K17
+ 0x8C100912, // 0026 GETMET R4 R4 K18
+ 0x7C100200, // 0027 CALL R4 1
+ 0x88100310, // 0028 GETMBR R4 R1 K16
+ 0x40100913, // 0029 CONNECT R4 R4 K19
+ 0x8814030F, // 002A GETMBR R5 R1 K15
+ 0x94100A04, // 002B GETIDX R4 R5 R4
+ 0x90021A04, // 002C SETMBR R0 K13 R4
+ 0x88100714, // 002D GETMBR R4 R3 K20
+ 0x20100903, // 002E NE R4 R4 K3
+ 0x78120012, // 002F JMPF R4 #0043
+ 0xB8120A00, // 0030 GETNGBL R4 K5
+ 0x8C100906, // 0031 GETMET R4 R4 K6
+ 0x58180015, // 0032 LDCONST R6 K21
+ 0x581C0008, // 0033 LDCONST R7 K8
+ 0x7C100600, // 0034 CALL R4 3
+ 0xB8120A00, // 0035 GETNGBL R4 K5
+ 0x8C100906, // 0036 GETMET R4 R4 K6
+ 0x58180009, // 0037 LDCONST R6 K9
+ 0x581C0008, // 0038 LDCONST R7 K8
+ 0x7C100600, // 0039 CALL R4 3
+ 0x8C10010A, // 003A GETMET R4 R0 K10
+ 0x5C180200, // 003B MOVE R6 R1
+ 0x581C000B, // 003C LDCONST R7 K11
+ 0x58200003, // 003D LDCONST R8 K3
+ 0x58240008, // 003E LDCONST R9 K8
+ 0x50280000, // 003F LDBOOL R10 0 0
+ 0x7C100C00, // 0040 CALL R4 6
+ 0x50140000, // 0041 LDBOOL R5 0 0
+ 0x80040A00, // 0042 RET 1 R5
+ 0x88100717, // 0043 GETMBR R4 R3 K23
+ 0x90022C04, // 0044 SETMBR R0 K22 R4
+ 0x88100119, // 0045 GETMBR R4 R0 K25
+ 0x8810091A, // 0046 GETMBR R4 R4 K26
+ 0x8C10091B, // 0047 GETMET R4 R4 K27
+ 0x7C100200, // 0048 CALL R4 1
+ 0x90023004, // 0049 SETMBR R0 K24 R4
+ 0xB8120A00, // 004A GETNGBL R4 K5
+ 0x8C100906, // 004B GETMET R4 R4 K6
+ 0x60180008, // 004C GETGBL R6 G8
+ 0x881C0118, // 004D GETMBR R7 R0 K24
+ 0x7C180200, // 004E CALL R6 1
+ 0x001A3806, // 004F ADD R6 K28 R6
+ 0x7C100400, // 0050 CALL R4 2
+ 0xB8121800, // 0051 GETNGBL R4 K12
+ 0x8C10091D, // 0052 GETMET R4 R4 K29
+ 0x7C100200, // 0053 CALL R4 1
+ 0x8814071E, // 0054 GETMBR R5 R3 K30
+ 0x90123C05, // 0055 SETMBR R4 K30 R5
+ 0x8C140520, // 0056 GETMET R5 R2 K32
+ 0x541E001F, // 0057 LDINT R7 32
+ 0x7C140400, // 0058 CALL R5 2
+ 0x90123E05, // 0059 SETMBR R4 K31 R5
+ 0x88140118, // 005A GETMBR R5 R0 K24
+ 0x90124205, // 005B SETMBR R4 K33 R5
+ 0x88140119, // 005C GETMBR R5 R0 K25
+ 0x88140B23, // 005D GETMBR R5 R5 K35
+ 0x90124405, // 005E SETMBR R4 K34 R5
+ 0x88140119, // 005F GETMBR R5 R0 K25
+ 0x88140B25, // 0060 GETMBR R5 R5 K37
+ 0x90124805, // 0061 SETMBR R4 K36 R5
+ 0xB8160A00, // 0062 GETNGBL R5 K5
+ 0x8C140B06, // 0063 GETMET R5 R5 K6
+ 0x601C0008, // 0064 GETGBL R7 G8
+ 0xB8221800, // 0065 GETNGBL R8 K12
+ 0x8C201127, // 0066 GETMET R8 R8 K39
+ 0x5C280800, // 0067 MOVE R10 R4
+ 0x7C200400, // 0068 CALL R8 2
+ 0x7C1C0200, // 0069 CALL R7 1
+ 0x001E4C07, // 006A ADD R7 K38 R7
+ 0x54220003, // 006B LDINT R8 4
+ 0x7C140600, // 006C CALL R5 3
+ 0x8C140928, // 006D GETMET R5 R4 K40
+ 0x7C140200, // 006E CALL R5 1
+ 0xB81A0A00, // 006F GETNGBL R6 K5
+ 0x8C180D06, // 0070 GETMET R6 R6 K6
+ 0x8C200B2A, // 0071 GETMET R8 R5 K42
+ 0x7C200200, // 0072 CALL R8 1
+ 0x00225208, // 0073 ADD R8 K41 R8
+ 0x54260003, // 0074 LDINT R9 4
+ 0x7C180600, // 0075 CALL R6 3
+ 0x90023A05, // 0076 SETMBR R0 K29 R5
+ 0x8C18032B, // 0077 GETMET R6 R1 K43
+ 0x54220020, // 0078 LDINT R8 33
+ 0x50240200, // 0079 LDBOOL R9 1 0
+ 0x7C180600, // 007A CALL R6 3
+ 0x8C1C0D2C, // 007B GETMET R7 R6 K44
+ 0x5C240A00, // 007C MOVE R9 R5
+ 0x7C1C0400, // 007D CALL R7 2
+ 0x8820012D, // 007E GETMBR R8 R0 K45
+ 0x8C20112E, // 007F GETMET R8 R8 K46
+ 0x5C280E00, // 0080 MOVE R10 R7
+ 0x882C032F, // 0081 GETMBR R11 R1 K47
+ 0x88300330, // 0082 GETMBR R12 R1 K48
+ 0x88340D31, // 0083 GETMBR R13 R6 K49
+ 0x7C200A00, // 0084 CALL R8 5
+ 0x80000000, // 0085 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(Matter_Commisioning_Context_every_second, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_Sigma1
+********************************************************************/
+be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
+ be_nested_proto(
+ 35, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[117]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(opcode),
+ /* K2 */ be_nested_str_weak(local_session_id),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(protocol_id),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Sigma1_X20message),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
+ /* K10 */ be_nested_str_weak(send_status_report),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(matter),
+ /* K13 */ be_nested_str_weak(Sigma1),
+ /* K14 */ be_nested_str_weak(parse),
+ /* K15 */ be_nested_str_weak(raw),
+ /* K16 */ be_nested_str_weak(app_payload_idx),
+ /* K17 */ be_nested_str_weak(initiatorEph_pub),
+ /* K18 */ be_nested_str_weak(initiatorEphPubKey),
+ /* K19 */ be_nested_str_weak(resumptionID),
+ /* K20 */ be_nested_str_weak(initiatorResumeMIC),
+ /* K21 */ be_nested_str_weak(session),
+ /* K22 */ be_nested_str_weak(device),
+ /* K23 */ be_nested_str_weak(sessions),
+ /* K24 */ be_nested_str_weak(find_session_by_resumption_id),
+ /* K25 */ be_nested_str_weak(find_fabric_by_destination_id),
+ /* K26 */ be_nested_str_weak(destinationId),
+ /* K27 */ be_nested_str_weak(initiatorRandom),
+ /* K28 */ be_nested_str_weak(_fabric),
+ /* K29 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
+ /* K30 */ be_nested_str_weak(_source_node_id),
+ /* K31 */ be_nested_str_weak(source_node_id),
+ /* K32 */ be_nested_str_weak(set_mode_CASE),
+ /* K33 */ be_nested_str_weak(remove_session),
+ /* K34 */ be_nested_str_weak(__future_initiator_session_id),
+ /* K35 */ be_nested_str_weak(initiator_session_id),
+ /* K36 */ be_nested_str_weak(__future_local_session_id),
+ /* K37 */ be_nested_str_weak(gen_local_session_id),
+ /* K38 */ be_nested_str_weak(future_local_session_id),
+ /* K39 */ be_nested_str_weak(MTR_X3A_X20Loc_session_X3D),
+ /* K40 */ be_nested_str_weak(fromstring),
+ /* K41 */ be_nested_str_weak(Sigma1_Resume),
+ /* K42 */ be_nested_str_weak(HKDF_SHA256),
+ /* K43 */ be_nested_str_weak(derive),
+ /* K44 */ be_nested_str_weak(shared_secret),
+ /* K45 */ be_nested_str_weak(NCASE_SigmaR1),
+ /* K46 */ be_const_int(2147483647),
+ /* K47 */ be_nested_str_weak(AES_CCM),
+ /* K48 */ be_nested_str_weak(decrypt),
+ /* K49 */ be_nested_str_weak(tag),
+ /* K50 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
+ /* K51 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s1rk_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K52 */ be_nested_str_weak(tohex),
+ /* K53 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20tag_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K54 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20Resume1MICPayload_X20_X3D_X20),
+ /* K55 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20decrypted_tag_X20_X20_X20_X20_X20_X3D_X20),
+ /* K56 */ be_nested_str_weak(resumption_id),
+ /* K57 */ be_nested_str_weak(random),
+ /* K58 */ be_nested_str_weak(Sigma2_Resume),
+ /* K59 */ be_nested_str_weak(NCASE_SigmaR2),
+ /* K60 */ be_nested_str_weak(Sigma2Resume),
+ /* K61 */ be_nested_str_weak(responderSessionID),
+ /* K62 */ be_nested_str_weak(sigma2ResumeMIC),
+ /* K63 */ be_nested_str_weak(SessionResumptionKeys),
+ /* K64 */ be_nested_str_weak(rtc),
+ /* K65 */ be_nested_str_weak(utc),
+ /* K66 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
+ /* K67 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D),
+ /* K68 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D),
+ /* K69 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D),
+ /* K70 */ be_nested_str_weak(encode),
+ /* K71 */ be_nested_str_weak(__Msg1),
+ /* K72 */ be_nested_str_weak(MTR_X3A_X20sigma2resume_raw_X3A_X20),
+ /* K73 */ be_nested_str_weak(build_response),
+ /* K74 */ be_nested_str_weak(encode_frame),
+ /* K75 */ be_nested_str_weak(responder),
+ /* K76 */ be_nested_str_weak(send_response),
+ /* K77 */ be_nested_str_weak(remote_ip),
+ /* K78 */ be_nested_str_weak(remote_port),
+ /* K79 */ be_nested_str_weak(message_counter),
+ /* K80 */ be_nested_str_weak(set_keys),
+ /* K81 */ be_nested_str_weak(ResponderEph_priv),
+ /* K82 */ be_nested_str_weak(ResponderEph_pub),
+ /* K83 */ be_nested_str_weak(EC_P256),
+ /* K84 */ be_nested_str_weak(public_key),
+ /* K85 */ be_nested_str_weak(shared_key),
+ /* K86 */ be_nested_str_weak(TLV),
+ /* K87 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K88 */ be_nested_str_weak(add_TLV),
+ /* K89 */ be_nested_str_weak(B2),
+ /* K90 */ be_nested_str_weak(get_noc),
+ /* K91 */ be_nested_str_weak(get_icac),
+ /* K92 */ be_const_int(3),
+ /* K93 */ be_nested_str_weak(ecdsa_sign_sha256),
+ /* K94 */ be_nested_str_weak(get_pk),
+ /* K95 */ be_nested_str_weak(Msg1),
+ /* K96 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20MSG1_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K97 */ be_nested_str_weak(SHA256),
+ /* K98 */ be_nested_str_weak(update),
+ /* K99 */ be_nested_str_weak(out),
+ /* K100 */ be_nested_str_weak(S2K_Info),
+ /* K101 */ be_nested_str_weak(get_ipk_group_key),
+ /* K102 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20SharedSecret_X20_X20_X3D_X20),
+ /* K103 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_salt_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K104 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K105 */ be_nested_str_weak(TBEData2_Nonce),
+ /* K106 */ be_nested_str_weak(encrypt),
+ /* K107 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBEData2Enc_X20_X20_X20_X3D_X20),
+ /* K108 */ be_nested_str_weak(Sigma2),
+ /* K109 */ be_nested_str_weak(responderRandom),
+ /* K110 */ be_nested_str_weak(responderSessionId),
+ /* K111 */ be_nested_str_weak(responderEphPubKey),
+ /* K112 */ be_nested_str_weak(encrypted2),
+ /* K113 */ be_nested_str_weak(MTR_X3A_X20sigma2_X3A_X20),
+ /* K114 */ be_nested_str_weak(inspect),
+ /* K115 */ be_nested_str_weak(__Msg2),
+ /* K116 */ be_nested_str_weak(MTR_X3A_X20sigma2_raw_X3A_X20),
+ }),
+ be_str_weak(parse_Sigma1),
+ &be_const_str_solidified,
+ ( &(const binstruction[591]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x880C0301, // 0001 GETMBR R3 R1 K1
+ 0x5412002F, // 0002 LDINT R4 48
+ 0x200C0604, // 0003 NE R3 R3 R4
+ 0x740E0005, // 0004 JMPT R3 #000B
+ 0x880C0302, // 0005 GETMBR R3 R1 K2
+ 0x200C0703, // 0006 NE R3 R3 K3
+ 0x740E0002, // 0007 JMPT R3 #000B
+ 0x880C0304, // 0008 GETMBR R3 R1 K4
+ 0x200C0703, // 0009 NE R3 R3 K3
+ 0x780E0012, // 000A JMPF R3 #001E
+ 0xB80E0A00, // 000B GETNGBL R3 K5
+ 0x8C0C0706, // 000C GETMET R3 R3 K6
+ 0x58140007, // 000D LDCONST R5 K7
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C0C0600, // 000F CALL R3 3
+ 0xB80E0A00, // 0010 GETNGBL R3 K5
+ 0x8C0C0706, // 0011 GETMET R3 R3 K6
+ 0x58140009, // 0012 LDCONST R5 K9
+ 0x58180008, // 0013 LDCONST R6 K8
+ 0x7C0C0600, // 0014 CALL R3 3
+ 0x8C0C010A, // 0015 GETMET R3 R0 K10
+ 0x5C140200, // 0016 MOVE R5 R1
+ 0x5818000B, // 0017 LDCONST R6 K11
+ 0x581C0003, // 0018 LDCONST R7 K3
+ 0x58200008, // 0019 LDCONST R8 K8
+ 0x50240000, // 001A LDBOOL R9 0 0
+ 0x7C0C0C00, // 001B CALL R3 6
+ 0x50100000, // 001C LDBOOL R4 0 0
+ 0x80040800, // 001D RET 1 R4
+ 0xB80E1800, // 001E GETNGBL R3 K12
+ 0x8C0C070D, // 001F GETMET R3 R3 K13
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x8C0C070E, // 0021 GETMET R3 R3 K14
+ 0x8814030F, // 0022 GETMBR R5 R1 K15
+ 0x88180310, // 0023 GETMBR R6 R1 K16
+ 0x7C0C0600, // 0024 CALL R3 3
+ 0x88100712, // 0025 GETMBR R4 R3 K18
+ 0x90022204, // 0026 SETMBR R0 K17 R4
+ 0x88100713, // 0027 GETMBR R4 R3 K19
+ 0x4C140000, // 0028 LDNIL R5
+ 0x20100805, // 0029 NE R4 R4 R5
+ 0x78120003, // 002A JMPF R4 #002F
+ 0x88100714, // 002B GETMBR R4 R3 K20
+ 0x4C140000, // 002C LDNIL R5
+ 0x20100805, // 002D NE R4 R4 R5
+ 0x74120000, // 002E JMPT R4 #0030
+ 0x50100001, // 002F LDBOOL R4 0 1
+ 0x50100200, // 0030 LDBOOL R4 1 0
+ 0x88140315, // 0031 GETMBR R5 R1 K21
+ 0x78120006, // 0032 JMPF R4 #003A
+ 0x88180116, // 0033 GETMBR R6 R0 K22
+ 0x88180D17, // 0034 GETMBR R6 R6 K23
+ 0x8C180D18, // 0035 GETMET R6 R6 K24
+ 0x88200713, // 0036 GETMBR R8 R3 K19
+ 0x7C180400, // 0037 CALL R6 2
+ 0x5C140C00, // 0038 MOVE R5 R6
+ 0x70020004, // 0039 JMP #003F
+ 0x8C180119, // 003A GETMET R6 R0 K25
+ 0x8820071A, // 003B GETMBR R8 R3 K26
+ 0x8824071B, // 003C GETMBR R9 R3 K27
+ 0x7C180600, // 003D CALL R6 3
+ 0x90163806, // 003E SETMBR R5 K28 R6
+ 0x4C180000, // 003F LDNIL R6
+ 0x1C180A06, // 0040 EQ R6 R5 R6
+ 0x741A0003, // 0041 JMPT R6 #0046
+ 0x88180B1C, // 0042 GETMBR R6 R5 K28
+ 0x4C1C0000, // 0043 LDNIL R7
+ 0x1C180C07, // 0044 EQ R6 R6 R7
+ 0x781A000D, // 0045 JMPF R6 #0054
+ 0xB81A0A00, // 0046 GETNGBL R6 K5
+ 0x8C180D06, // 0047 GETMET R6 R6 K6
+ 0x5820001D, // 0048 LDCONST R8 K29
+ 0x58240008, // 0049 LDCONST R9 K8
+ 0x7C180600, // 004A CALL R6 3
+ 0x8C18010A, // 004B GETMET R6 R0 K10
+ 0x5C200200, // 004C MOVE R8 R1
+ 0x5824000B, // 004D LDCONST R9 K11
+ 0x58280003, // 004E LDCONST R10 K3
+ 0x582C000B, // 004F LDCONST R11 K11
+ 0x50300000, // 0050 LDBOOL R12 0 0
+ 0x7C180C00, // 0051 CALL R6 6
+ 0x501C0000, // 0052 LDBOOL R7 0 0
+ 0x80040E00, // 0053 RET 1 R7
+ 0x8818031F, // 0054 GETMBR R6 R1 K31
+ 0x90163C06, // 0055 SETMBR R5 K30 R6
+ 0x8C180B20, // 0056 GETMET R6 R5 K32
+ 0x7C180200, // 0057 CALL R6 1
+ 0x88180315, // 0058 GETMBR R6 R1 K21
+ 0x20180C05, // 0059 NE R6 R6 R5
+ 0x781A0004, // 005A JMPF R6 #0060
+ 0x88180116, // 005B GETMBR R6 R0 K22
+ 0x88180D17, // 005C GETMBR R6 R6 K23
+ 0x8C180D21, // 005D GETMET R6 R6 K33
+ 0x88200315, // 005E GETMBR R8 R1 K21
+ 0x7C180400, // 005F CALL R6 2
+ 0x90062A05, // 0060 SETMBR R1 K21 R5
+ 0x88180723, // 0061 GETMBR R6 R3 K35
+ 0x90164406, // 0062 SETMBR R5 K34 R6
+ 0x88180116, // 0063 GETMBR R6 R0 K22
+ 0x88180D17, // 0064 GETMBR R6 R6 K23
+ 0x8C180D25, // 0065 GETMET R6 R6 K37
+ 0x7C180200, // 0066 CALL R6 1
+ 0x90164806, // 0067 SETMBR R5 K36 R6
+ 0x88180B24, // 0068 GETMBR R6 R5 K36
+ 0x90024C06, // 0069 SETMBR R0 K38 R6
+ 0xB81A0A00, // 006A GETNGBL R6 K5
+ 0x8C180D06, // 006B GETMET R6 R6 K6
+ 0x60200008, // 006C GETGBL R8 G8
+ 0x88240126, // 006D GETMBR R9 R0 K38
+ 0x7C200200, // 006E CALL R8 1
+ 0x00224E08, // 006F ADD R8 K39 R8
+ 0x7C180400, // 0070 CALL R6 2
+ 0x781200E1, // 0071 JMPF R4 #0154
+ 0x8818071B, // 0072 GETMBR R6 R3 K27
+ 0x881C0713, // 0073 GETMBR R7 R3 K19
+ 0x00180C07, // 0074 ADD R6 R6 R7
+ 0x601C0015, // 0075 GETGBL R7 G21
+ 0x7C1C0000, // 0076 CALL R7 0
+ 0x8C1C0F28, // 0077 GETMET R7 R7 K40
+ 0x58240029, // 0078 LDCONST R9 K41
+ 0x7C1C0400, // 0079 CALL R7 2
+ 0x8C20052A, // 007A GETMET R8 R2 K42
+ 0x7C200200, // 007B CALL R8 1
+ 0x8C20112B, // 007C GETMET R8 R8 K43
+ 0x88280B2C, // 007D GETMBR R10 R5 K44
+ 0x5C2C0C00, // 007E MOVE R11 R6
+ 0x5C300E00, // 007F MOVE R12 R7
+ 0x5436000F, // 0080 LDINT R13 16
+ 0x7C200A00, // 0081 CALL R8 5
+ 0x60240015, // 0082 GETGBL R9 G21
+ 0x7C240000, // 0083 CALL R9 0
+ 0x8C241328, // 0084 GETMET R9 R9 K40
+ 0x582C002D, // 0085 LDCONST R11 K45
+ 0x7C240400, // 0086 CALL R9 2
+ 0x5429FFEE, // 0087 LDINT R10 -17
+ 0x402A060A, // 0088 CONNECT R10 K3 R10
+ 0x882C0714, // 0089 GETMBR R11 R3 K20
+ 0x9428160A, // 008A GETIDX R10 R11 R10
+ 0x5431FFEF, // 008B LDINT R12 -16
+ 0x4030192E, // 008C CONNECT R12 R12 K46
+ 0x88340714, // 008D GETMBR R13 R3 K20
+ 0x942C1A0C, // 008E GETIDX R11 R13 R12
+ 0x8C38052F, // 008F GETMET R14 R2 K47
+ 0x5C401000, // 0090 MOVE R16 R8
+ 0x5C441200, // 0091 MOVE R17 R9
+ 0x60480015, // 0092 GETGBL R18 G21
+ 0x7C480000, // 0093 CALL R18 0
+ 0x604C000C, // 0094 GETGBL R19 G12
+ 0x5C501400, // 0095 MOVE R20 R10
+ 0x7C4C0200, // 0096 CALL R19 1
+ 0x5452000F, // 0097 LDINT R20 16
+ 0x7C380C00, // 0098 CALL R14 6
+ 0x5C301C00, // 0099 MOVE R12 R14
+ 0x8C381930, // 009A GETMET R14 R12 K48
+ 0x5C401400, // 009B MOVE R16 R10
+ 0x7C380400, // 009C CALL R14 2
+ 0x5C341C00, // 009D MOVE R13 R14
+ 0x8C381931, // 009E GETMET R14 R12 K49
+ 0x7C380200, // 009F CALL R14 1
+ 0xB83E0A00, // 00A0 GETNGBL R15 K5
+ 0x8C3C1F06, // 00A1 GETMET R15 R15 K6
+ 0x58440032, // 00A2 LDCONST R17 K50
+ 0x544A0003, // 00A3 LDINT R18 4
+ 0x7C3C0600, // 00A4 CALL R15 3
+ 0xB83E0A00, // 00A5 GETNGBL R15 K5
+ 0x8C3C1F06, // 00A6 GETMET R15 R15 K6
+ 0x8C441134, // 00A7 GETMET R17 R8 K52
+ 0x7C440200, // 00A8 CALL R17 1
+ 0x00466611, // 00A9 ADD R17 K51 R17
+ 0x544A0003, // 00AA LDINT R18 4
+ 0x7C3C0600, // 00AB CALL R15 3
+ 0xB83E0A00, // 00AC GETNGBL R15 K5
+ 0x8C3C1F06, // 00AD GETMET R15 R15 K6
+ 0x8C441734, // 00AE GETMET R17 R11 K52
+ 0x7C440200, // 00AF CALL R17 1
+ 0x00466A11, // 00B0 ADD R17 K53 R17
+ 0x544A0003, // 00B1 LDINT R18 4
+ 0x7C3C0600, // 00B2 CALL R15 3
+ 0xB83E0A00, // 00B3 GETNGBL R15 K5
+ 0x8C3C1F06, // 00B4 GETMET R15 R15 K6
+ 0x8C441B34, // 00B5 GETMET R17 R13 K52
+ 0x7C440200, // 00B6 CALL R17 1
+ 0x00466C11, // 00B7 ADD R17 K54 R17
+ 0x544A0003, // 00B8 LDINT R18 4
+ 0x7C3C0600, // 00B9 CALL R15 3
+ 0xB83E0A00, // 00BA GETNGBL R15 K5
+ 0x8C3C1F06, // 00BB GETMET R15 R15 K6
+ 0x8C441D34, // 00BC GETMET R17 R14 K52
+ 0x7C440200, // 00BD CALL R17 1
+ 0x00466E11, // 00BE ADD R17 K55 R17
+ 0x544A0003, // 00BF LDINT R18 4
+ 0x7C3C0600, // 00C0 CALL R15 3
+ 0xB83E0A00, // 00C1 GETNGBL R15 K5
+ 0x8C3C1F06, // 00C2 GETMET R15 R15 K6
+ 0x58440032, // 00C3 LDCONST R17 K50
+ 0x544A0003, // 00C4 LDINT R18 4
+ 0x7C3C0600, // 00C5 CALL R15 3
+ 0x1C3C160E, // 00C6 EQ R15 R11 R14
+ 0x783E0089, // 00C7 JMPF R15 #0152
+ 0x8C3C0539, // 00C8 GETMET R15 R2 K57
+ 0x5446000F, // 00C9 LDINT R17 16
+ 0x7C3C0400, // 00CA CALL R15 2
+ 0x9016700F, // 00CB SETMBR R5 K56 R15
+ 0x603C0015, // 00CC GETGBL R15 G21
+ 0x7C3C0000, // 00CD CALL R15 0
+ 0x8C3C1F28, // 00CE GETMET R15 R15 K40
+ 0x5844003A, // 00CF LDCONST R17 K58
+ 0x7C3C0400, // 00D0 CALL R15 2
+ 0x88400B38, // 00D1 GETMBR R16 R5 K56
+ 0x003C1E10, // 00D2 ADD R15 R15 R16
+ 0x8840071B, // 00D3 GETMBR R16 R3 K27
+ 0x88440713, // 00D4 GETMBR R17 R3 K19
+ 0x00402011, // 00D5 ADD R16 R16 R17
+ 0x8C44052A, // 00D6 GETMET R17 R2 K42
+ 0x7C440200, // 00D7 CALL R17 1
+ 0x8C44232B, // 00D8 GETMET R17 R17 K43
+ 0x884C0B2C, // 00D9 GETMBR R19 R5 K44
+ 0x5C502000, // 00DA MOVE R20 R16
+ 0x5C541E00, // 00DB MOVE R21 R15
+ 0x545A000F, // 00DC LDINT R22 16
+ 0x7C440A00, // 00DD CALL R17 5
+ 0x8C48052F, // 00DE GETMET R18 R2 K47
+ 0x5C502200, // 00DF MOVE R20 R17
+ 0x60540015, // 00E0 GETGBL R21 G21
+ 0x7C540000, // 00E1 CALL R21 0
+ 0x8C542B28, // 00E2 GETMET R21 R21 K40
+ 0x585C003B, // 00E3 LDCONST R23 K59
+ 0x7C540400, // 00E4 CALL R21 2
+ 0x60580015, // 00E5 GETGBL R22 G21
+ 0x7C580000, // 00E6 CALL R22 0
+ 0x585C0003, // 00E7 LDCONST R23 K3
+ 0x5462000F, // 00E8 LDINT R24 16
+ 0x7C480C00, // 00E9 CALL R18 6
+ 0x8C4C2531, // 00EA GETMET R19 R18 K49
+ 0x7C4C0200, // 00EB CALL R19 1
+ 0xB8521800, // 00EC GETNGBL R20 K12
+ 0x8C50293C, // 00ED GETMET R20 R20 K60
+ 0x7C500200, // 00EE CALL R20 1
+ 0x88540B38, // 00EF GETMBR R21 R5 K56
+ 0x90522615, // 00F0 SETMBR R20 K19 R21
+ 0x88540B24, // 00F1 GETMBR R21 R5 K36
+ 0x90527A15, // 00F2 SETMBR R20 K61 R21
+ 0x90527C13, // 00F3 SETMBR R20 K62 R19
+ 0x8C54052A, // 00F4 GETMET R21 R2 K42
+ 0x7C540200, // 00F5 CALL R21 1
+ 0x8C542B2B, // 00F6 GETMET R21 R21 K43
+ 0x885C0B2C, // 00F7 GETMBR R23 R5 K44
+ 0x8860071B, // 00F8 GETMBR R24 R3 K27
+ 0x88640713, // 00F9 GETMBR R25 R3 K19
+ 0x00603019, // 00FA ADD R24 R24 R25
+ 0x60640015, // 00FB GETGBL R25 G21
+ 0x7C640000, // 00FC CALL R25 0
+ 0x8C643328, // 00FD GETMET R25 R25 K40
+ 0x586C003F, // 00FE LDCONST R27 K63
+ 0x7C640400, // 00FF CALL R25 2
+ 0x546A002F, // 0100 LDINT R26 48
+ 0x7C540A00, // 0101 CALL R21 5
+ 0x545A000E, // 0102 LDINT R22 15
+ 0x405A0616, // 0103 CONNECT R22 K3 R22
+ 0x94582A16, // 0104 GETIDX R22 R21 R22
+ 0x545E000F, // 0105 LDINT R23 16
+ 0x5462001E, // 0106 LDINT R24 31
+ 0x405C2E18, // 0107 CONNECT R23 R23 R24
+ 0x945C2A17, // 0108 GETIDX R23 R21 R23
+ 0x5462001F, // 0109 LDINT R24 32
+ 0x5466002E, // 010A LDINT R25 47
+ 0x40603019, // 010B CONNECT R24 R24 R25
+ 0x94602A18, // 010C GETIDX R24 R21 R24
+ 0xB8660A00, // 010D GETNGBL R25 K5
+ 0x8C643340, // 010E GETMET R25 R25 K64
+ 0x7C640200, // 010F CALL R25 1
+ 0x94643341, // 0110 GETIDX R25 R25 K65
+ 0xB86A0A00, // 0111 GETNGBL R26 K5
+ 0x8C683506, // 0112 GETMET R26 R26 K6
+ 0x58700042, // 0113 LDCONST R28 K66
+ 0x54760003, // 0114 LDINT R29 4
+ 0x7C680600, // 0115 CALL R26 3
+ 0xB86A0A00, // 0116 GETNGBL R26 K5
+ 0x8C683506, // 0117 GETMET R26 R26 K6
+ 0x8C702D34, // 0118 GETMET R28 R22 K52
+ 0x7C700200, // 0119 CALL R28 1
+ 0x0072861C, // 011A ADD R28 K67 R28
+ 0x54760003, // 011B LDINT R29 4
+ 0x7C680600, // 011C CALL R26 3
+ 0xB86A0A00, // 011D GETNGBL R26 K5
+ 0x8C683506, // 011E GETMET R26 R26 K6
+ 0x8C702F34, // 011F GETMET R28 R23 K52
+ 0x7C700200, // 0120 CALL R28 1
+ 0x0072881C, // 0121 ADD R28 K68 R28
+ 0x54760003, // 0122 LDINT R29 4
+ 0x7C680600, // 0123 CALL R26 3
+ 0xB86A0A00, // 0124 GETNGBL R26 K5
+ 0x8C683506, // 0125 GETMET R26 R26 K6
+ 0x8C703134, // 0126 GETMET R28 R24 K52
+ 0x7C700200, // 0127 CALL R28 1
+ 0x00728A1C, // 0128 ADD R28 K69 R28
+ 0x54760003, // 0129 LDINT R29 4
+ 0x7C680600, // 012A CALL R26 3
+ 0xB86A0A00, // 012B GETNGBL R26 K5
+ 0x8C683506, // 012C GETMET R26 R26 K6
+ 0x58700042, // 012D LDCONST R28 K66
+ 0x54760003, // 012E LDINT R29 4
+ 0x7C680600, // 012F CALL R26 3
+ 0x8C682946, // 0130 GETMET R26 R20 K70
+ 0x7C680200, // 0131 CALL R26 1
+ 0x4C6C0000, // 0132 LDNIL R27
+ 0x90168E1B, // 0133 SETMBR R5 K71 R27
+ 0xB86E0A00, // 0134 GETNGBL R27 K5
+ 0x8C6C3706, // 0135 GETMET R27 R27 K6
+ 0x8C743534, // 0136 GETMET R29 R26 K52
+ 0x7C740200, // 0137 CALL R29 1
+ 0x0076901D, // 0138 ADD R29 K72 R29
+ 0x547A0003, // 0139 LDINT R30 4
+ 0x7C6C0600, // 013A CALL R27 3
+ 0x8C6C0349, // 013B GETMET R27 R1 K73
+ 0x54760032, // 013C LDINT R29 51
+ 0x50780200, // 013D LDBOOL R30 1 0
+ 0x7C6C0600, // 013E CALL R27 3
+ 0x8C70374A, // 013F GETMET R28 R27 K74
+ 0x5C783400, // 0140 MOVE R30 R26
+ 0x7C700400, // 0141 CALL R28 2
+ 0x8874014B, // 0142 GETMBR R29 R0 K75
+ 0x8C743B4C, // 0143 GETMET R29 R29 K76
+ 0x5C7C3800, // 0144 MOVE R31 R28
+ 0x8880034D, // 0145 GETMBR R32 R1 K77
+ 0x8884034E, // 0146 GETMBR R33 R1 K78
+ 0x8888374F, // 0147 GETMBR R34 R27 K79
+ 0x7C740A00, // 0148 CALL R29 5
+ 0x8C740B50, // 0149 GETMET R29 R5 K80
+ 0x5C7C2C00, // 014A MOVE R31 R22
+ 0x5C802E00, // 014B MOVE R32 R23
+ 0x5C843000, // 014C MOVE R33 R24
+ 0x5C883200, // 014D MOVE R34 R25
+ 0x7C740A00, // 014E CALL R29 5
+ 0x50740200, // 014F LDBOOL R29 1 0
+ 0x80043A00, // 0150 RET 1 R29
+ 0x70020001, // 0151 JMP #0154
+ 0x4C3C0000, // 0152 LDNIL R15
+ 0x900E260F, // 0153 SETMBR R3 K19 R15
+ 0x88180713, // 0154 GETMBR R6 R3 K19
+ 0x4C1C0000, // 0155 LDNIL R7
+ 0x1C180C07, // 0156 EQ R6 R6 R7
+ 0x741A0003, // 0157 JMPT R6 #015C
+ 0x88180714, // 0158 GETMBR R6 R3 K20
+ 0x4C1C0000, // 0159 LDNIL R7
+ 0x1C180C07, // 015A EQ R6 R6 R7
+ 0x781A00F0, // 015B JMPF R6 #024D
+ 0x8C180539, // 015C GETMET R6 R2 K57
+ 0x5422000F, // 015D LDINT R8 16
+ 0x7C180400, // 015E CALL R6 2
+ 0x90167006, // 015F SETMBR R5 K56 R6
+ 0x8C180539, // 0160 GETMET R6 R2 K57
+ 0x5422001F, // 0161 LDINT R8 32
+ 0x7C180400, // 0162 CALL R6 2
+ 0x9002A206, // 0163 SETMBR R0 K81 R6
+ 0x8C180553, // 0164 GETMET R6 R2 K83
+ 0x7C180200, // 0165 CALL R6 1
+ 0x8C180D54, // 0166 GETMET R6 R6 K84
+ 0x88200151, // 0167 GETMBR R8 R0 K81
+ 0x7C180400, // 0168 CALL R6 2
+ 0x9002A406, // 0169 SETMBR R0 K82 R6
+ 0x8C180539, // 016A GETMET R6 R2 K57
+ 0x5422001F, // 016B LDINT R8 32
+ 0x7C180400, // 016C CALL R6 2
+ 0x8C1C0553, // 016D GETMET R7 R2 K83
+ 0x7C1C0200, // 016E CALL R7 1
+ 0x8C1C0F55, // 016F GETMET R7 R7 K85
+ 0x88240151, // 0170 GETMBR R9 R0 K81
+ 0x88280712, // 0171 GETMBR R10 R3 K18
+ 0x7C1C0600, // 0172 CALL R7 3
+ 0x90165807, // 0173 SETMBR R5 K44 R7
+ 0xB81E1800, // 0174 GETNGBL R7 K12
+ 0x881C0F56, // 0175 GETMBR R7 R7 K86
+ 0x8C1C0F57, // 0176 GETMET R7 R7 K87
+ 0x7C1C0200, // 0177 CALL R7 1
+ 0x8C200F58, // 0178 GETMET R8 R7 K88
+ 0x5828000B, // 0179 LDCONST R10 K11
+ 0xB82E1800, // 017A GETNGBL R11 K12
+ 0x882C1756, // 017B GETMBR R11 R11 K86
+ 0x882C1759, // 017C GETMBR R11 R11 K89
+ 0x8C300B5A, // 017D GETMET R12 R5 K90
+ 0x7C300200, // 017E CALL R12 1
+ 0x7C200800, // 017F CALL R8 4
+ 0x8C200F58, // 0180 GETMET R8 R7 K88
+ 0x58280008, // 0181 LDCONST R10 K8
+ 0xB82E1800, // 0182 GETNGBL R11 K12
+ 0x882C1756, // 0183 GETMBR R11 R11 K86
+ 0x882C1759, // 0184 GETMBR R11 R11 K89
+ 0x8C300B5B, // 0185 GETMET R12 R5 K91
+ 0x7C300200, // 0186 CALL R12 1
+ 0x7C200800, // 0187 CALL R8 4
+ 0x8C200F58, // 0188 GETMET R8 R7 K88
+ 0x5828005C, // 0189 LDCONST R10 K92
+ 0xB82E1800, // 018A GETNGBL R11 K12
+ 0x882C1756, // 018B GETMBR R11 R11 K86
+ 0x882C1759, // 018C GETMBR R11 R11 K89
+ 0x88300152, // 018D GETMBR R12 R0 K82
+ 0x7C200800, // 018E CALL R8 4
+ 0x8C200F58, // 018F GETMET R8 R7 K88
+ 0x542A0003, // 0190 LDINT R10 4
+ 0xB82E1800, // 0191 GETNGBL R11 K12
+ 0x882C1756, // 0192 GETMBR R11 R11 K86
+ 0x882C1759, // 0193 GETMBR R11 R11 K89
+ 0x88300712, // 0194 GETMBR R12 R3 K18
+ 0x7C200800, // 0195 CALL R8 4
+ 0x8C200553, // 0196 GETMET R8 R2 K83
+ 0x7C200200, // 0197 CALL R8 1
+ 0x8C20115D, // 0198 GETMET R8 R8 K93
+ 0x8C280B5E, // 0199 GETMET R10 R5 K94
+ 0x7C280200, // 019A CALL R10 1
+ 0x8C2C0F46, // 019B GETMET R11 R7 K70
+ 0x7C2C0200, // 019C CALL R11 1
+ 0x7C200600, // 019D CALL R8 3
+ 0xB8261800, // 019E GETNGBL R9 K12
+ 0x88241356, // 019F GETMBR R9 R9 K86
+ 0x8C241357, // 01A0 GETMET R9 R9 K87
+ 0x7C240200, // 01A1 CALL R9 1
+ 0x8C281358, // 01A2 GETMET R10 R9 K88
+ 0x5830000B, // 01A3 LDCONST R12 K11
+ 0xB8361800, // 01A4 GETNGBL R13 K12
+ 0x88341B56, // 01A5 GETMBR R13 R13 K86
+ 0x88341B59, // 01A6 GETMBR R13 R13 K89
+ 0x8C380B5A, // 01A7 GETMET R14 R5 K90
+ 0x7C380200, // 01A8 CALL R14 1
+ 0x7C280800, // 01A9 CALL R10 4
+ 0x8C281358, // 01AA GETMET R10 R9 K88
+ 0x58300008, // 01AB LDCONST R12 K8
+ 0xB8361800, // 01AC GETNGBL R13 K12
+ 0x88341B56, // 01AD GETMBR R13 R13 K86
+ 0x88341B59, // 01AE GETMBR R13 R13 K89
+ 0x8C380B5B, // 01AF GETMET R14 R5 K91
+ 0x7C380200, // 01B0 CALL R14 1
+ 0x7C280800, // 01B1 CALL R10 4
+ 0x8C281358, // 01B2 GETMET R10 R9 K88
+ 0x5830005C, // 01B3 LDCONST R12 K92
+ 0xB8361800, // 01B4 GETNGBL R13 K12
+ 0x88341B56, // 01B5 GETMBR R13 R13 K86
+ 0x88341B59, // 01B6 GETMBR R13 R13 K89
+ 0x5C381000, // 01B7 MOVE R14 R8
+ 0x7C280800, // 01B8 CALL R10 4
+ 0x8C281358, // 01B9 GETMET R10 R9 K88
+ 0x54320003, // 01BA LDINT R12 4
+ 0xB8361800, // 01BB GETNGBL R13 K12
+ 0x88341B56, // 01BC GETMBR R13 R13 K86
+ 0x88341B59, // 01BD GETMBR R13 R13 K89
+ 0x88380B38, // 01BE GETMBR R14 R5 K56
+ 0x7C280800, // 01BF CALL R10 4
+ 0xB82A0A00, // 01C0 GETNGBL R10 K5
+ 0x8C281506, // 01C1 GETMET R10 R10 K6
+ 0x58300032, // 01C2 LDCONST R12 K50
+ 0x54360003, // 01C3 LDINT R13 4
+ 0x7C280600, // 01C4 CALL R10 3
+ 0x8828075F, // 01C5 GETMBR R10 R3 K95
+ 0x90168E0A, // 01C6 SETMBR R5 K71 R10
+ 0xB82A0A00, // 01C7 GETNGBL R10 K5
+ 0x8C281506, // 01C8 GETMET R10 R10 K6
+ 0x88300B47, // 01C9 GETMBR R12 R5 K71
+ 0x8C301934, // 01CA GETMET R12 R12 K52
+ 0x7C300200, // 01CB CALL R12 1
+ 0x0032C00C, // 01CC ADD R12 K96 R12
+ 0x54360003, // 01CD LDINT R13 4
+ 0x7C280600, // 01CE CALL R10 3
+ 0x8C280561, // 01CF GETMET R10 R2 K97
+ 0x7C280200, // 01D0 CALL R10 1
+ 0x8C281562, // 01D1 GETMET R10 R10 K98
+ 0x88300B47, // 01D2 GETMBR R12 R5 K71
+ 0x7C280400, // 01D3 CALL R10 2
+ 0x8C281563, // 01D4 GETMET R10 R10 K99
+ 0x7C280200, // 01D5 CALL R10 1
+ 0x602C0015, // 01D6 GETGBL R11 G21
+ 0x7C2C0000, // 01D7 CALL R11 0
+ 0x8C2C1728, // 01D8 GETMET R11 R11 K40
+ 0x88340164, // 01D9 GETMBR R13 R0 K100
+ 0x7C2C0400, // 01DA CALL R11 2
+ 0x8C300B65, // 01DB GETMET R12 R5 K101
+ 0x7C300200, // 01DC CALL R12 1
+ 0x00301806, // 01DD ADD R12 R12 R6
+ 0x88340152, // 01DE GETMBR R13 R0 K82
+ 0x0030180D, // 01DF ADD R12 R12 R13
+ 0x0030180A, // 01E0 ADD R12 R12 R10
+ 0x8C34052A, // 01E1 GETMET R13 R2 K42
+ 0x7C340200, // 01E2 CALL R13 1
+ 0x8C341B2B, // 01E3 GETMET R13 R13 K43
+ 0x883C0B2C, // 01E4 GETMBR R15 R5 K44
+ 0x5C401800, // 01E5 MOVE R16 R12
+ 0x5C441600, // 01E6 MOVE R17 R11
+ 0x544A000F, // 01E7 LDINT R18 16
+ 0x7C340A00, // 01E8 CALL R13 5
+ 0xB83A0A00, // 01E9 GETNGBL R14 K5
+ 0x8C381D06, // 01EA GETMET R14 R14 K6
+ 0x88400B2C, // 01EB GETMBR R16 R5 K44
+ 0x8C402134, // 01EC GETMET R16 R16 K52
+ 0x7C400200, // 01ED CALL R16 1
+ 0x0042CC10, // 01EE ADD R16 K102 R16
+ 0x54460003, // 01EF LDINT R17 4
+ 0x7C380600, // 01F0 CALL R14 3
+ 0xB83A0A00, // 01F1 GETNGBL R14 K5
+ 0x8C381D06, // 01F2 GETMET R14 R14 K6
+ 0x8C401934, // 01F3 GETMET R16 R12 K52
+ 0x7C400200, // 01F4 CALL R16 1
+ 0x0042CE10, // 01F5 ADD R16 K103 R16
+ 0x54460003, // 01F6 LDINT R17 4
+ 0x7C380600, // 01F7 CALL R14 3
+ 0xB83A0A00, // 01F8 GETNGBL R14 K5
+ 0x8C381D06, // 01F9 GETMET R14 R14 K6
+ 0x8C401B34, // 01FA GETMET R16 R13 K52
+ 0x7C400200, // 01FB CALL R16 1
+ 0x0042D010, // 01FC ADD R16 K104 R16
+ 0x54460003, // 01FD LDINT R17 4
+ 0x7C380600, // 01FE CALL R14 3
+ 0x8C381346, // 01FF GETMET R14 R9 K70
+ 0x7C380200, // 0200 CALL R14 1
+ 0x8C3C052F, // 0201 GETMET R15 R2 K47
+ 0x5C441A00, // 0202 MOVE R17 R13
+ 0x60480015, // 0203 GETGBL R18 G21
+ 0x7C480000, // 0204 CALL R18 0
+ 0x8C482528, // 0205 GETMET R18 R18 K40
+ 0x88500169, // 0206 GETMBR R20 R0 K105
+ 0x7C480400, // 0207 CALL R18 2
+ 0x604C0015, // 0208 GETGBL R19 G21
+ 0x7C4C0000, // 0209 CALL R19 0
+ 0x6050000C, // 020A GETGBL R20 G12
+ 0x5C541C00, // 020B MOVE R21 R14
+ 0x7C500200, // 020C CALL R20 1
+ 0x5456000F, // 020D LDINT R21 16
+ 0x7C3C0C00, // 020E CALL R15 6
+ 0x8C401F6A, // 020F GETMET R16 R15 K106
+ 0x5C481C00, // 0210 MOVE R18 R14
+ 0x7C400400, // 0211 CALL R16 2
+ 0x8C441F31, // 0212 GETMET R17 R15 K49
+ 0x7C440200, // 0213 CALL R17 1
+ 0x00402011, // 0214 ADD R16 R16 R17
+ 0xB8460A00, // 0215 GETNGBL R17 K5
+ 0x8C442306, // 0216 GETMET R17 R17 K6
+ 0x8C4C2134, // 0217 GETMET R19 R16 K52
+ 0x7C4C0200, // 0218 CALL R19 1
+ 0x004ED613, // 0219 ADD R19 K107 R19
+ 0x54520003, // 021A LDINT R20 4
+ 0x7C440600, // 021B CALL R17 3
+ 0xB8460A00, // 021C GETNGBL R17 K5
+ 0x8C442306, // 021D GETMET R17 R17 K6
+ 0x584C0032, // 021E LDCONST R19 K50
+ 0x54520003, // 021F LDINT R20 4
+ 0x7C440600, // 0220 CALL R17 3
+ 0xB8461800, // 0221 GETNGBL R17 K12
+ 0x8C44236C, // 0222 GETMET R17 R17 K108
+ 0x7C440200, // 0223 CALL R17 1
+ 0x9046DA06, // 0224 SETMBR R17 K109 R6
+ 0x88480126, // 0225 GETMBR R18 R0 K38
+ 0x9046DC12, // 0226 SETMBR R17 K110 R18
+ 0x88480152, // 0227 GETMBR R18 R0 K82
+ 0x9046DE12, // 0228 SETMBR R17 K111 R18
+ 0x9046E010, // 0229 SETMBR R17 K112 R16
+ 0xB84A0A00, // 022A GETNGBL R18 K5
+ 0x8C482506, // 022B GETMET R18 R18 K6
+ 0xB8521800, // 022C GETNGBL R20 K12
+ 0x8C502972, // 022D GETMET R20 R20 K114
+ 0x5C582200, // 022E MOVE R22 R17
+ 0x7C500400, // 022F CALL R20 2
+ 0x0052E214, // 0230 ADD R20 K113 R20
+ 0x54560003, // 0231 LDINT R21 4
+ 0x7C480600, // 0232 CALL R18 3
+ 0x8C482346, // 0233 GETMET R18 R17 K70
+ 0x7C480200, // 0234 CALL R18 1
+ 0x9016E612, // 0235 SETMBR R5 K115 R18
+ 0xB84E0A00, // 0236 GETNGBL R19 K5
+ 0x8C4C2706, // 0237 GETMET R19 R19 K6
+ 0x8C542534, // 0238 GETMET R21 R18 K52
+ 0x7C540200, // 0239 CALL R21 1
+ 0x0056E815, // 023A ADD R21 K116 R21
+ 0x545A0003, // 023B LDINT R22 4
+ 0x7C4C0600, // 023C CALL R19 3
+ 0x8C4C0349, // 023D GETMET R19 R1 K73
+ 0x54560030, // 023E LDINT R21 49
+ 0x50580200, // 023F LDBOOL R22 1 0
+ 0x7C4C0600, // 0240 CALL R19 3
+ 0x8C50274A, // 0241 GETMET R20 R19 K74
+ 0x5C582400, // 0242 MOVE R22 R18
+ 0x7C500400, // 0243 CALL R20 2
+ 0x8854014B, // 0244 GETMBR R21 R0 K75
+ 0x8C542B4C, // 0245 GETMET R21 R21 K76
+ 0x5C5C2800, // 0246 MOVE R23 R20
+ 0x8860034D, // 0247 GETMBR R24 R1 K77
+ 0x8864034E, // 0248 GETMBR R25 R1 K78
+ 0x8868274F, // 0249 GETMBR R26 R19 K79
+ 0x7C540A00, // 024A CALL R21 5
+ 0x50540200, // 024B LDBOOL R21 1 0
+ 0x80042A00, // 024C RET 1 R21
+ 0x50180200, // 024D LDBOOL R6 1 0
+ 0x80040C00, // 024E RET 1 R6
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_StatusReport
+********************************************************************/
+be_local_closure(Matter_Commisioning_Context_parse_StatusReport, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(session),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X20_X3D_X20),
+ /* K4 */ be_nested_str_weak(raw),
+ /* K5 */ be_nested_str_weak(app_payload_idx),
+ /* K6 */ be_const_int(2147483647),
+ /* K7 */ be_nested_str_weak(tohex),
+ }),
+ be_str_weak(parse_StatusReport),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x88080300, // 0000 GETMBR R2 R1 K0
+ 0xB80E0200, // 0001 GETNGBL R3 K1
+ 0x8C0C0702, // 0002 GETMET R3 R3 K2
+ 0x88140305, // 0003 GETMBR R5 R1 K5
+ 0x40140B06, // 0004 CONNECT R5 R5 K6
+ 0x88180304, // 0005 GETMBR R6 R1 K4
+ 0x94140C05, // 0006 GETIDX R5 R6 R5
+ 0x8C140B07, // 0007 GETMET R5 R5 K7
+ 0x7C140200, // 0008 CALL R5 1
+ 0x00160605, // 0009 ADD R5 K3 R5
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x500C0200, // 000B LDBOOL R3 1 0
+ 0x80040600, // 000C RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_Pake1
+********************************************************************/
+be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
+ be_nested_proto(
+ 16, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[83]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(opcode),
+ /* K2 */ be_nested_str_weak(local_session_id),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(protocol_id),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
+ /* K10 */ be_nested_str_weak(send_status_report),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(matter),
+ /* K13 */ be_nested_str_weak(Pake1),
+ /* K14 */ be_nested_str_weak(parse),
+ /* K15 */ be_nested_str_weak(raw),
+ /* K16 */ be_nested_str_weak(app_payload_idx),
+ /* K17 */ be_nested_str_weak(pA),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20received_X20pA_X3D),
+ /* K19 */ be_nested_str_weak(tohex),
+ /* K20 */ be_nested_str_weak(MTR_X3A_X20spake_X3A_X20),
+ /* K21 */ be_nested_str_weak(inspect),
+ /* K22 */ be_nested_str_weak(spake),
+ /* K23 */ be_nested_str_weak(SPAKE2P_Matter),
+ /* K24 */ be_nested_str_weak(device),
+ /* K25 */ be_nested_str_weak(commissioning_w0),
+ /* K26 */ be_nested_str_weak(commissioning_L),
+ /* K27 */ be_nested_str_weak(compute_pB),
+ /* K28 */ be_nested_str_weak(y),
+ /* K29 */ be_nested_str_weak(pB),
+ /* K30 */ be_nested_str_weak(MTR_X3A_X20y_X3D),
+ /* K31 */ be_nested_str_weak(MTR_X3A_X20pb_X3D),
+ /* K32 */ be_nested_str_weak(compute_ZV_verifier),
+ /* K33 */ be_nested_str_weak(MTR_X3A_X20Z_X3D),
+ /* K34 */ be_nested_str_weak(Z),
+ /* K35 */ be_nested_str_weak(MTR_X3A_X20V_X3D),
+ /* K36 */ be_nested_str_weak(V),
+ /* K37 */ be_nested_str_weak(SHA256),
+ /* K38 */ be_nested_str_weak(update),
+ /* K39 */ be_nested_str_weak(fromstring),
+ /* K40 */ be_nested_str_weak(Matter_Context_Prefix),
+ /* K41 */ be_nested_str_weak(PBKDFParamRequest),
+ /* K42 */ be_nested_str_weak(PBKDFParamResponse),
+ /* K43 */ be_nested_str_weak(out),
+ /* K44 */ be_nested_str_weak(MTR_X3A_X20Context_X3D),
+ /* K45 */ be_nested_str_weak(set_context),
+ /* K46 */ be_nested_str_weak(compute_TT_hash),
+ /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D_X2D),
+ /* K48 */ be_nested_str_weak(MTR_X3A_X20Context_X20_X3D_X20),
+ /* K49 */ be_nested_str_weak(Context),
+ /* K50 */ be_nested_str_weak(MTR_X3A_X20M_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K51 */ be_nested_str_weak(M),
+ /* K52 */ be_nested_str_weak(MTR_X3A_X20N_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K53 */ be_nested_str_weak(N),
+ /* K54 */ be_nested_str_weak(MTR_X3A_X20pA_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K55 */ be_nested_str_weak(MTR_X3A_X20pB_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K56 */ be_nested_str_weak(MTR_X3A_X20Z_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K57 */ be_nested_str_weak(MTR_X3A_X20V_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K58 */ be_nested_str_weak(MTR_X3A_X20w0_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K59 */ be_nested_str_weak(w0),
+ /* K60 */ be_nested_str_weak(MTR_X3A_X20Kmain_X20_X20_X20_X3D),
+ /* K61 */ be_nested_str_weak(Kmain),
+ /* K62 */ be_nested_str_weak(MTR_X3A_X20KcA_X20_X20_X20_X20_X20_X3D),
+ /* K63 */ be_nested_str_weak(KcA),
+ /* K64 */ be_nested_str_weak(MTR_X3A_X20KcB_X20_X20_X20_X20_X20_X3D),
+ /* K65 */ be_nested_str_weak(KcB),
+ /* K66 */ be_nested_str_weak(MTR_X3A_X20K_shared_X3D),
+ /* K67 */ be_nested_str_weak(K_shared),
+ /* K68 */ be_nested_str_weak(MTR_X3A_X20Ke_X20_X20_X20_X20_X20_X20_X3D),
+ /* K69 */ be_nested_str_weak(Ke),
+ /* K70 */ be_nested_str_weak(cB),
+ /* K71 */ be_nested_str_weak(MTR_X3A_X20cB_X3D),
+ /* K72 */ be_nested_str_weak(Pake2),
+ /* K73 */ be_nested_str_weak(MTR_X3A_X20pake2_X3A_X20),
+ /* K74 */ be_nested_str_weak(encode),
+ /* K75 */ be_nested_str_weak(MTR_X3A_X20pake2_raw_X3A_X20),
+ /* K76 */ be_nested_str_weak(build_response),
+ /* K77 */ be_nested_str_weak(encode_frame),
+ /* K78 */ be_nested_str_weak(responder),
+ /* K79 */ be_nested_str_weak(send_response),
+ /* K80 */ be_nested_str_weak(remote_ip),
+ /* K81 */ be_nested_str_weak(remote_port),
+ /* K82 */ be_nested_str_weak(message_counter),
+ }),
+ be_str_weak(parse_Pake1),
+ &be_const_str_solidified,
+ ( &(const binstruction[325]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x880C0301, // 0001 GETMBR R3 R1 K1
+ 0x54120021, // 0002 LDINT R4 34
+ 0x200C0604, // 0003 NE R3 R3 R4
+ 0x740E0005, // 0004 JMPT R3 #000B
+ 0x880C0302, // 0005 GETMBR R3 R1 K2
+ 0x200C0703, // 0006 NE R3 R3 K3
+ 0x740E0002, // 0007 JMPT R3 #000B
+ 0x880C0304, // 0008 GETMBR R3 R1 K4
+ 0x200C0703, // 0009 NE R3 R3 K3
+ 0x780E0012, // 000A JMPF R3 #001E
+ 0xB80E0A00, // 000B GETNGBL R3 K5
+ 0x8C0C0706, // 000C GETMET R3 R3 K6
+ 0x58140007, // 000D LDCONST R5 K7
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C0C0600, // 000F CALL R3 3
+ 0xB80E0A00, // 0010 GETNGBL R3 K5
+ 0x8C0C0706, // 0011 GETMET R3 R3 K6
+ 0x58140009, // 0012 LDCONST R5 K9
+ 0x58180008, // 0013 LDCONST R6 K8
+ 0x7C0C0600, // 0014 CALL R3 3
+ 0x8C0C010A, // 0015 GETMET R3 R0 K10
+ 0x5C140200, // 0016 MOVE R5 R1
+ 0x5818000B, // 0017 LDCONST R6 K11
+ 0x581C0003, // 0018 LDCONST R7 K3
+ 0x58200008, // 0019 LDCONST R8 K8
+ 0x50240000, // 001A LDBOOL R9 0 0
+ 0x7C0C0C00, // 001B CALL R3 6
+ 0x50100000, // 001C LDBOOL R4 0 0
+ 0x80040800, // 001D RET 1 R4
+ 0xB80E1800, // 001E GETNGBL R3 K12
+ 0x8C0C070D, // 001F GETMET R3 R3 K13
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x8C0C070E, // 0021 GETMET R3 R3 K14
+ 0x8814030F, // 0022 GETMBR R5 R1 K15
+ 0x88180310, // 0023 GETMBR R6 R1 K16
+ 0x7C0C0600, // 0024 CALL R3 3
+ 0x88100711, // 0025 GETMBR R4 R3 K17
+ 0x90022204, // 0026 SETMBR R0 K17 R4
+ 0xB8120A00, // 0027 GETNGBL R4 K5
+ 0x8C100906, // 0028 GETMET R4 R4 K6
+ 0x88180111, // 0029 GETMBR R6 R0 K17
+ 0x8C180D13, // 002A GETMET R6 R6 K19
+ 0x7C180200, // 002B CALL R6 1
+ 0x001A2406, // 002C ADD R6 K18 R6
+ 0x541E0003, // 002D LDINT R7 4
+ 0x7C100600, // 002E CALL R4 3
+ 0xB8120A00, // 002F GETNGBL R4 K5
+ 0x8C100906, // 0030 GETMET R4 R4 K6
+ 0xB81A1800, // 0031 GETNGBL R6 K12
+ 0x8C180D15, // 0032 GETMET R6 R6 K21
+ 0x88200116, // 0033 GETMBR R8 R0 K22
+ 0x7C180400, // 0034 CALL R6 2
+ 0x001A2806, // 0035 ADD R6 K20 R6
+ 0x541E0003, // 0036 LDINT R7 4
+ 0x7C100600, // 0037 CALL R4 3
+ 0x8C100517, // 0038 GETMET R4 R2 K23
+ 0x88180118, // 0039 GETMBR R6 R0 K24
+ 0x88180D19, // 003A GETMBR R6 R6 K25
+ 0x4C1C0000, // 003B LDNIL R7
+ 0x88200118, // 003C GETMBR R8 R0 K24
+ 0x8820111A, // 003D GETMBR R8 R8 K26
+ 0x7C100800, // 003E CALL R4 4
+ 0x90022C04, // 003F SETMBR R0 K22 R4
+ 0x88100116, // 0040 GETMBR R4 R0 K22
+ 0x8C10091B, // 0041 GETMET R4 R4 K27
+ 0x8818011C, // 0042 GETMBR R6 R0 K28
+ 0x7C100400, // 0043 CALL R4 2
+ 0x88100116, // 0044 GETMBR R4 R0 K22
+ 0x8810091D, // 0045 GETMBR R4 R4 K29
+ 0x90023A04, // 0046 SETMBR R0 K29 R4
+ 0xB8120A00, // 0047 GETNGBL R4 K5
+ 0x8C100906, // 0048 GETMET R4 R4 K6
+ 0x8818011C, // 0049 GETMBR R6 R0 K28
+ 0x8C180D13, // 004A GETMET R6 R6 K19
+ 0x7C180200, // 004B CALL R6 1
+ 0x001A3C06, // 004C ADD R6 K30 R6
+ 0x541E0003, // 004D LDINT R7 4
+ 0x7C100600, // 004E CALL R4 3
+ 0xB8120A00, // 004F GETNGBL R4 K5
+ 0x8C100906, // 0050 GETMET R4 R4 K6
+ 0x8818011D, // 0051 GETMBR R6 R0 K29
+ 0x8C180D13, // 0052 GETMET R6 R6 K19
+ 0x7C180200, // 0053 CALL R6 1
+ 0x001A3E06, // 0054 ADD R6 K31 R6
+ 0x541E0003, // 0055 LDINT R7 4
+ 0x7C100600, // 0056 CALL R4 3
+ 0x88100116, // 0057 GETMBR R4 R0 K22
+ 0x8C100920, // 0058 GETMET R4 R4 K32
+ 0x88180111, // 0059 GETMBR R6 R0 K17
+ 0x7C100400, // 005A CALL R4 2
+ 0xB8120A00, // 005B GETNGBL R4 K5
+ 0x8C100906, // 005C GETMET R4 R4 K6
+ 0x88180116, // 005D GETMBR R6 R0 K22
+ 0x88180D22, // 005E GETMBR R6 R6 K34
+ 0x8C180D13, // 005F GETMET R6 R6 K19
+ 0x7C180200, // 0060 CALL R6 1
+ 0x001A4206, // 0061 ADD R6 K33 R6
+ 0x541E0003, // 0062 LDINT R7 4
+ 0x7C100600, // 0063 CALL R4 3
+ 0xB8120A00, // 0064 GETNGBL R4 K5
+ 0x8C100906, // 0065 GETMET R4 R4 K6
+ 0x88180116, // 0066 GETMBR R6 R0 K22
+ 0x88180D24, // 0067 GETMBR R6 R6 K36
+ 0x8C180D13, // 0068 GETMET R6 R6 K19
+ 0x7C180200, // 0069 CALL R6 1
+ 0x001A4606, // 006A ADD R6 K35 R6
+ 0x541E0003, // 006B LDINT R7 4
+ 0x7C100600, // 006C CALL R4 3
+ 0x8C100525, // 006D GETMET R4 R2 K37
+ 0x7C100200, // 006E CALL R4 1
+ 0x8C140926, // 006F GETMET R5 R4 K38
+ 0x601C0015, // 0070 GETGBL R7 G21
+ 0x7C1C0000, // 0071 CALL R7 0
+ 0x8C1C0F27, // 0072 GETMET R7 R7 K39
+ 0x88240128, // 0073 GETMBR R9 R0 K40
+ 0x7C1C0400, // 0074 CALL R7 2
+ 0x7C140400, // 0075 CALL R5 2
+ 0x8C140926, // 0076 GETMET R5 R4 K38
+ 0x881C0129, // 0077 GETMBR R7 R0 K41
+ 0x7C140400, // 0078 CALL R5 2
+ 0x8C140926, // 0079 GETMET R5 R4 K38
+ 0x881C012A, // 007A GETMBR R7 R0 K42
+ 0x7C140400, // 007B CALL R5 2
+ 0x8C14092B, // 007C GETMET R5 R4 K43
+ 0x7C140200, // 007D CALL R5 1
+ 0xB81A0A00, // 007E GETNGBL R6 K5
+ 0x8C180D06, // 007F GETMET R6 R6 K6
+ 0x8C200B13, // 0080 GETMET R8 R5 K19
+ 0x7C200200, // 0081 CALL R8 1
+ 0x00225808, // 0082 ADD R8 K44 R8
+ 0x54260003, // 0083 LDINT R9 4
+ 0x7C180600, // 0084 CALL R6 3
+ 0x88180116, // 0085 GETMBR R6 R0 K22
+ 0x881C0111, // 0086 GETMBR R7 R0 K17
+ 0x901A2207, // 0087 SETMBR R6 K17 R7
+ 0x88180116, // 0088 GETMBR R6 R0 K22
+ 0x8C180D2D, // 0089 GETMET R6 R6 K45
+ 0x5C200A00, // 008A MOVE R8 R5
+ 0x7C180400, // 008B CALL R6 2
+ 0x88180116, // 008C GETMBR R6 R0 K22
+ 0x8C180D2E, // 008D GETMET R6 R6 K46
+ 0x50200200, // 008E LDBOOL R8 1 0
+ 0x7C180400, // 008F CALL R6 2
+ 0xB81A0A00, // 0090 GETNGBL R6 K5
+ 0x8C180D06, // 0091 GETMET R6 R6 K6
+ 0x5820002F, // 0092 LDCONST R8 K47
+ 0x54260003, // 0093 LDINT R9 4
+ 0x7C180600, // 0094 CALL R6 3
+ 0xB81A0A00, // 0095 GETNGBL R6 K5
+ 0x8C180D06, // 0096 GETMET R6 R6 K6
+ 0x88200116, // 0097 GETMBR R8 R0 K22
+ 0x88201131, // 0098 GETMBR R8 R8 K49
+ 0x8C201113, // 0099 GETMET R8 R8 K19
+ 0x7C200200, // 009A CALL R8 1
+ 0x00226008, // 009B ADD R8 K48 R8
+ 0x54260003, // 009C LDINT R9 4
+ 0x7C180600, // 009D CALL R6 3
+ 0xB81A0A00, // 009E GETNGBL R6 K5
+ 0x8C180D06, // 009F GETMET R6 R6 K6
+ 0x88200116, // 00A0 GETMBR R8 R0 K22
+ 0x88201133, // 00A1 GETMBR R8 R8 K51
+ 0x8C201113, // 00A2 GETMET R8 R8 K19
+ 0x7C200200, // 00A3 CALL R8 1
+ 0x00226408, // 00A4 ADD R8 K50 R8
+ 0x54260003, // 00A5 LDINT R9 4
+ 0x7C180600, // 00A6 CALL R6 3
+ 0xB81A0A00, // 00A7 GETNGBL R6 K5
+ 0x8C180D06, // 00A8 GETMET R6 R6 K6
+ 0x88200116, // 00A9 GETMBR R8 R0 K22
+ 0x88201135, // 00AA GETMBR R8 R8 K53
+ 0x8C201113, // 00AB GETMET R8 R8 K19
+ 0x7C200200, // 00AC CALL R8 1
+ 0x00226808, // 00AD ADD R8 K52 R8
+ 0x54260003, // 00AE LDINT R9 4
+ 0x7C180600, // 00AF CALL R6 3
+ 0xB81A0A00, // 00B0 GETNGBL R6 K5
+ 0x8C180D06, // 00B1 GETMET R6 R6 K6
+ 0x88200116, // 00B2 GETMBR R8 R0 K22
+ 0x88201111, // 00B3 GETMBR R8 R8 K17
+ 0x8C201113, // 00B4 GETMET R8 R8 K19
+ 0x7C200200, // 00B5 CALL R8 1
+ 0x00226C08, // 00B6 ADD R8 K54 R8
+ 0x54260003, // 00B7 LDINT R9 4
+ 0x7C180600, // 00B8 CALL R6 3
+ 0xB81A0A00, // 00B9 GETNGBL R6 K5
+ 0x8C180D06, // 00BA GETMET R6 R6 K6
+ 0x88200116, // 00BB GETMBR R8 R0 K22
+ 0x8820111D, // 00BC GETMBR R8 R8 K29
+ 0x8C201113, // 00BD GETMET R8 R8 K19
+ 0x7C200200, // 00BE CALL R8 1
+ 0x00226E08, // 00BF ADD R8 K55 R8
+ 0x54260003, // 00C0 LDINT R9 4
+ 0x7C180600, // 00C1 CALL R6 3
+ 0xB81A0A00, // 00C2 GETNGBL R6 K5
+ 0x8C180D06, // 00C3 GETMET R6 R6 K6
+ 0x88200116, // 00C4 GETMBR R8 R0 K22
+ 0x88201122, // 00C5 GETMBR R8 R8 K34
+ 0x8C201113, // 00C6 GETMET R8 R8 K19
+ 0x7C200200, // 00C7 CALL R8 1
+ 0x00227008, // 00C8 ADD R8 K56 R8
+ 0x54260003, // 00C9 LDINT R9 4
+ 0x7C180600, // 00CA CALL R6 3
+ 0xB81A0A00, // 00CB GETNGBL R6 K5
+ 0x8C180D06, // 00CC GETMET R6 R6 K6
+ 0x88200116, // 00CD GETMBR R8 R0 K22
+ 0x88201124, // 00CE GETMBR R8 R8 K36
+ 0x8C201113, // 00CF GETMET R8 R8 K19
+ 0x7C200200, // 00D0 CALL R8 1
+ 0x00227208, // 00D1 ADD R8 K57 R8
+ 0x54260003, // 00D2 LDINT R9 4
+ 0x7C180600, // 00D3 CALL R6 3
+ 0xB81A0A00, // 00D4 GETNGBL R6 K5
+ 0x8C180D06, // 00D5 GETMET R6 R6 K6
+ 0x88200116, // 00D6 GETMBR R8 R0 K22
+ 0x8820113B, // 00D7 GETMBR R8 R8 K59
+ 0x8C201113, // 00D8 GETMET R8 R8 K19
+ 0x7C200200, // 00D9 CALL R8 1
+ 0x00227408, // 00DA ADD R8 K58 R8
+ 0x54260003, // 00DB LDINT R9 4
+ 0x7C180600, // 00DC CALL R6 3
+ 0xB81A0A00, // 00DD GETNGBL R6 K5
+ 0x8C180D06, // 00DE GETMET R6 R6 K6
+ 0x5820002F, // 00DF LDCONST R8 K47
+ 0x54260003, // 00E0 LDINT R9 4
+ 0x7C180600, // 00E1 CALL R6 3
+ 0xB81A0A00, // 00E2 GETNGBL R6 K5
+ 0x8C180D06, // 00E3 GETMET R6 R6 K6
+ 0x88200116, // 00E4 GETMBR R8 R0 K22
+ 0x8820113D, // 00E5 GETMBR R8 R8 K61
+ 0x8C201113, // 00E6 GETMET R8 R8 K19
+ 0x7C200200, // 00E7 CALL R8 1
+ 0x00227808, // 00E8 ADD R8 K60 R8
+ 0x54260003, // 00E9 LDINT R9 4
+ 0x7C180600, // 00EA CALL R6 3
+ 0xB81A0A00, // 00EB GETNGBL R6 K5
+ 0x8C180D06, // 00EC GETMET R6 R6 K6
+ 0x88200116, // 00ED GETMBR R8 R0 K22
+ 0x8820113F, // 00EE GETMBR R8 R8 K63
+ 0x8C201113, // 00EF GETMET R8 R8 K19
+ 0x7C200200, // 00F0 CALL R8 1
+ 0x00227C08, // 00F1 ADD R8 K62 R8
+ 0x54260003, // 00F2 LDINT R9 4
+ 0x7C180600, // 00F3 CALL R6 3
+ 0xB81A0A00, // 00F4 GETNGBL R6 K5
+ 0x8C180D06, // 00F5 GETMET R6 R6 K6
+ 0x88200116, // 00F6 GETMBR R8 R0 K22
+ 0x88201141, // 00F7 GETMBR R8 R8 K65
+ 0x8C201113, // 00F8 GETMET R8 R8 K19
+ 0x7C200200, // 00F9 CALL R8 1
+ 0x00228008, // 00FA ADD R8 K64 R8
+ 0x54260003, // 00FB LDINT R9 4
+ 0x7C180600, // 00FC CALL R6 3
+ 0xB81A0A00, // 00FD GETNGBL R6 K5
+ 0x8C180D06, // 00FE GETMET R6 R6 K6
+ 0x88200116, // 00FF GETMBR R8 R0 K22
+ 0x88201143, // 0100 GETMBR R8 R8 K67
+ 0x8C201113, // 0101 GETMET R8 R8 K19
+ 0x7C200200, // 0102 CALL R8 1
+ 0x00228408, // 0103 ADD R8 K66 R8
+ 0x54260003, // 0104 LDINT R9 4
+ 0x7C180600, // 0105 CALL R6 3
+ 0xB81A0A00, // 0106 GETNGBL R6 K5
+ 0x8C180D06, // 0107 GETMET R6 R6 K6
+ 0x88200116, // 0108 GETMBR R8 R0 K22
+ 0x88201145, // 0109 GETMBR R8 R8 K69
+ 0x8C201113, // 010A GETMET R8 R8 K19
+ 0x7C200200, // 010B CALL R8 1
+ 0x00228808, // 010C ADD R8 K68 R8
+ 0x54260003, // 010D LDINT R9 4
+ 0x7C180600, // 010E CALL R6 3
+ 0x88180116, // 010F GETMBR R6 R0 K22
+ 0x88180D46, // 0110 GETMBR R6 R6 K70
+ 0x90028C06, // 0111 SETMBR R0 K70 R6
+ 0x88180116, // 0112 GETMBR R6 R0 K22
+ 0x88180D45, // 0113 GETMBR R6 R6 K69
+ 0x90028A06, // 0114 SETMBR R0 K69 R6
+ 0xB81A0A00, // 0115 GETNGBL R6 K5
+ 0x8C180D06, // 0116 GETMET R6 R6 K6
+ 0x88200146, // 0117 GETMBR R8 R0 K70
+ 0x8C201113, // 0118 GETMET R8 R8 K19
+ 0x7C200200, // 0119 CALL R8 1
+ 0x00228E08, // 011A ADD R8 K71 R8
+ 0x54260003, // 011B LDINT R9 4
+ 0x7C180600, // 011C CALL R6 3
+ 0xB81A1800, // 011D GETNGBL R6 K12
+ 0x8C180D48, // 011E GETMET R6 R6 K72
+ 0x7C180200, // 011F CALL R6 1
+ 0x881C011D, // 0120 GETMBR R7 R0 K29
+ 0x901A3A07, // 0121 SETMBR R6 K29 R7
+ 0x881C0146, // 0122 GETMBR R7 R0 K70
+ 0x901A8C07, // 0123 SETMBR R6 K70 R7
+ 0xB81E0A00, // 0124 GETNGBL R7 K5
+ 0x8C1C0F06, // 0125 GETMET R7 R7 K6
+ 0xB8261800, // 0126 GETNGBL R9 K12
+ 0x8C241315, // 0127 GETMET R9 R9 K21
+ 0x5C2C0C00, // 0128 MOVE R11 R6
+ 0x7C240400, // 0129 CALL R9 2
+ 0x00269209, // 012A ADD R9 K73 R9
+ 0x542A0003, // 012B LDINT R10 4
+ 0x7C1C0600, // 012C CALL R7 3
+ 0x8C1C0D4A, // 012D GETMET R7 R6 K74
+ 0x7C1C0200, // 012E CALL R7 1
+ 0xB8220A00, // 012F GETNGBL R8 K5
+ 0x8C201106, // 0130 GETMET R8 R8 K6
+ 0x8C280F13, // 0131 GETMET R10 R7 K19
+ 0x7C280200, // 0132 CALL R10 1
+ 0x002A960A, // 0133 ADD R10 K75 R10
+ 0x542E0003, // 0134 LDINT R11 4
+ 0x7C200600, // 0135 CALL R8 3
+ 0x8C20034C, // 0136 GETMET R8 R1 K76
+ 0x542A0022, // 0137 LDINT R10 35
+ 0x502C0200, // 0138 LDBOOL R11 1 0
+ 0x7C200600, // 0139 CALL R8 3
+ 0x8C24114D, // 013A GETMET R9 R8 K77
+ 0x5C2C0E00, // 013B MOVE R11 R7
+ 0x7C240400, // 013C CALL R9 2
+ 0x8828014E, // 013D GETMBR R10 R0 K78
+ 0x8C28154F, // 013E GETMET R10 R10 K79
+ 0x5C301200, // 013F MOVE R12 R9
+ 0x88340350, // 0140 GETMBR R13 R1 K80
+ 0x88380351, // 0141 GETMBR R14 R1 K81
+ 0x883C1152, // 0142 GETMBR R15 R8 K82
+ 0x7C280A00, // 0143 CALL R10 5
+ 0x80000000, // 0144 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_status_report
+********************************************************************/
+be_local_closure(Matter_Commisioning_Context_send_status_report, /* name */
+ be_nested_proto(
+ 15, /* nstack */
+ 6, /* 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(build_response),
+ /* K1 */ be_nested_str_weak(add),
+ /* K2 */ be_const_int(2),
+ /* K3 */ be_nested_str_weak(encode_frame),
+ /* K4 */ be_nested_str_weak(responder),
+ /* K5 */ be_nested_str_weak(send_response),
+ /* K6 */ be_nested_str_weak(remote_ip),
+ /* K7 */ be_nested_str_weak(remote_port),
+ /* K8 */ be_nested_str_weak(message_counter),
+ }),
+ be_str_weak(send_status_report),
+ &be_const_str_solidified,
+ ( &(const binstruction[29]) { /* code */
+ 0x8C180300, // 0000 GETMET R6 R1 K0
+ 0x5422003F, // 0001 LDINT R8 64
+ 0x5C240A00, // 0002 MOVE R9 R5
+ 0x7C180600, // 0003 CALL R6 3
+ 0x601C0015, // 0004 GETGBL R7 G21
+ 0x7C1C0000, // 0005 CALL R7 0
+ 0x8C200F01, // 0006 GETMET R8 R7 K1
+ 0x5C280400, // 0007 MOVE R10 R2
+ 0x582C0002, // 0008 LDCONST R11 K2
+ 0x7C200600, // 0009 CALL R8 3
+ 0x8C200F01, // 000A GETMET R8 R7 K1
+ 0x5C280600, // 000B MOVE R10 R3
+ 0x542E0003, // 000C LDINT R11 4
+ 0x7C200600, // 000D CALL R8 3
+ 0x8C200F01, // 000E GETMET R8 R7 K1
+ 0x5C280800, // 000F MOVE R10 R4
+ 0x542E0003, // 0010 LDINT R11 4
+ 0x7C200600, // 0011 CALL R8 3
+ 0x8C200D03, // 0012 GETMET R8 R6 K3
+ 0x5C280E00, // 0013 MOVE R10 R7
+ 0x7C200400, // 0014 CALL R8 2
+ 0x88240104, // 0015 GETMBR R9 R0 K4
+ 0x8C241305, // 0016 GETMET R9 R9 K5
+ 0x5C2C1000, // 0017 MOVE R11 R8
+ 0x88300306, // 0018 GETMBR R12 R1 K6
+ 0x88340307, // 0019 GETMBR R13 R1 K7
+ 0x88380D08, // 001A GETMBR R14 R6 K8
+ 0x7C240A00, // 001B CALL R9 5
+ 0x80000000, // 001C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Commisioning_Context
********************************************************************/
be_local_class(Matter_Commisioning_Context,
20,
NULL,
- be_nested_map(36,
+ be_nested_map(37,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(parse_PBKDFParamRequest, -1), be_const_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest_closure) },
- { be_const_key_weak(cA, 34), be_const_var(10) },
- { be_const_key_weak(device, -1), be_const_var(1) },
- { be_const_key_weak(parse_StatusReport, -1), be_const_closure(Matter_Commisioning_Context_parse_StatusReport_closure) },
- { be_const_key_weak(cB, -1), be_const_var(11) },
- { be_const_key_weak(spake, -1), be_const_var(2) },
- { be_const_key_weak(future_local_session_id, 2), be_const_var(4) },
- { be_const_key_weak(R2IKey, -1), be_const_var(18) },
- { be_const_key_weak(find_fabric_by_destination_id, 9), be_const_closure(Matter_Commisioning_Context_find_fabric_by_destination_id_closure) },
- { be_const_key_weak(parse_Sigma1, -1), be_const_closure(Matter_Commisioning_Context_parse_Sigma1_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Commisioning_Context_init_closure) },
+ { be_const_key_weak(S2K_Info, 5), be_nested_str_weak(Sigma2) },
+ { be_const_key_weak(cB, 1), be_const_var(11) },
+ { be_const_key_weak(parse_Sigma3, 23), be_const_closure(Matter_Commisioning_Context_parse_Sigma3_closure) },
+ { be_const_key_weak(future_local_session_id, -1), be_const_var(4) },
{ be_const_key_weak(SEKeys_Info, -1), be_nested_str_weak(SessionKeys) },
- { be_const_key_weak(I2RKey, -1), be_const_var(17) },
{ be_const_key_weak(ResponderEph_priv, -1), be_const_var(13) },
- { be_const_key_weak(parse_Pake1, 3), be_const_closure(Matter_Commisioning_Context_parse_Pake1_closure) },
- { be_const_key_weak(AttestationChallenge, -1), be_const_var(19) },
- { be_const_key_weak(init, 30), be_const_closure(Matter_Commisioning_Context_init_closure) },
- { be_const_key_weak(ResponderEph_pub, 27), be_const_var(14) },
- { be_const_key_weak(initiatorEph_pub, -1), be_const_var(15) },
- { be_const_key_weak(every_second, -1), be_const_closure(Matter_Commisioning_Context_every_second_closure) },
- { be_const_key_weak(created, -1), be_const_var(16) },
- { be_const_key_weak(parse_Sigma3, -1), be_const_closure(Matter_Commisioning_Context_parse_Sigma3_closure) },
- { be_const_key_weak(Matter_Context_Prefix, 18), be_nested_str_weak(CHIP_X20PAKE_X20V1_X20Commissioning) },
- { be_const_key_weak(pA, 32), be_const_var(8) },
- { be_const_key_weak(pB, -1), be_const_var(9) },
- { be_const_key_weak(TBEData2_Nonce, -1), be_nested_str_weak(NCASE_Sigma2N) },
+ { be_const_key_weak(Ke, 18), be_const_var(12) },
+ { be_const_key_weak(PBKDFParamResponse, 25), be_const_var(6) },
+ { be_const_key_weak(process_incoming, 36), be_const_closure(Matter_Commisioning_Context_process_incoming_closure) },
{ be_const_key_weak(future_initiator_session_id, -1), be_const_var(3) },
- { be_const_key_weak(PBKDFParamResponse, -1), be_const_var(6) },
+ { be_const_key_weak(y, -1), be_const_var(7) },
+ { be_const_key_weak(I2RKey, -1), be_const_var(17) },
+ { be_const_key_weak(responder, 34), be_const_var(0) },
+ { be_const_key_weak(pA, 33), be_const_var(8) },
+ { be_const_key_weak(TBEData2_Nonce, -1), be_nested_str_weak(NCASE_Sigma2N) },
+ { be_const_key_weak(find_fabric_by_destination_id, -1), be_const_closure(Matter_Commisioning_Context_find_fabric_by_destination_id_closure) },
+ { be_const_key_weak(device, -1), be_const_var(1) },
+ { be_const_key_weak(parse_Pake1, -1), be_const_closure(Matter_Commisioning_Context_parse_Pake1_closure) },
+ { be_const_key_weak(parse_Pake3, -1), be_const_closure(Matter_Commisioning_Context_parse_Pake3_closure) },
+ { be_const_key_weak(cA, 29), be_const_var(10) },
+ { be_const_key_weak(ResponderEph_pub, 9), be_const_var(14) },
+ { be_const_key_weak(parse_PBKDFParamRequest, 6), be_const_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest_closure) },
+ { be_const_key_weak(parse_StatusReport, -1), be_const_closure(Matter_Commisioning_Context_parse_StatusReport_closure) },
+ { be_const_key_weak(Matter_Context_Prefix, -1), be_nested_str_weak(CHIP_X20PAKE_X20V1_X20Commissioning) },
+ { be_const_key_weak(pB, 21), be_const_var(9) },
+ { be_const_key_weak(TBEData3_Nonce, -1), be_nested_str_weak(NCASE_Sigma3N) },
+ { be_const_key_weak(S3K_Info, 26), be_nested_str_weak(Sigma3) },
+ { be_const_key_weak(parse_Sigma1, -1), be_const_closure(Matter_Commisioning_Context_parse_Sigma1_closure) },
+ { be_const_key_weak(created, -1), be_const_var(16) },
{ be_const_key_weak(PBKDFParamRequest, -1), be_const_var(5) },
- { be_const_key_weak(y, 26), be_const_var(7) },
- { be_const_key_weak(Ke, 20), be_const_var(12) },
- { be_const_key_weak(parse_Pake3, 6), be_const_closure(Matter_Commisioning_Context_parse_Pake3_closure) },
- { be_const_key_weak(TBEData3_Nonce, 8), be_nested_str_weak(NCASE_Sigma3N) },
- { be_const_key_weak(S2K_Info, -1), be_nested_str_weak(Sigma2) },
- { be_const_key_weak(S3K_Info, -1), be_nested_str_weak(Sigma3) },
- { be_const_key_weak(responder, -1), be_const_var(0) },
- { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_Commisioning_Context_process_incoming_closure) },
+ { be_const_key_weak(every_second, 7), be_const_closure(Matter_Commisioning_Context_every_second_closure) },
+ { be_const_key_weak(send_status_report, -1), be_const_closure(Matter_Commisioning_Context_send_status_report_closure) },
+ { be_const_key_weak(AttestationChallenge, -1), be_const_var(19) },
+ { be_const_key_weak(R2IKey, 35), be_const_var(18) },
+ { be_const_key_weak(initiatorEph_pub, -1), be_const_var(15) },
+ { be_const_key_weak(spake, -1), be_const_var(2) },
})),
be_str_weak(Matter_Commisioning_Context)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h
index e86db07ca..7347ce330 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h
@@ -151,7 +151,7 @@ be_local_closure(Matter_PBKDFParamResponse_encode, /* name */
}),
be_str_weak(encode),
&be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
+ ( &(const binstruction[71]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
0x8C080502, // 0002 GETMET R2 R2 K2
@@ -220,8 +220,9 @@ be_local_closure(Matter_PBKDFParamResponse_encode, /* name */
0x88240111, // 0041 GETMBR R9 R0 K17
0x7C140800, // 0042 CALL R5 4
0x8C100512, // 0043 GETMET R4 R2 K18
- 0x7C100200, // 0044 CALL R4 1
- 0x80040800, // 0045 RET 1 R4
+ 0x5C180200, // 0044 MOVE R6 R1
+ 0x7C100400, // 0045 CALL R4 2
+ 0x80040800, // 0046 RET 1 R4
})
)
);
@@ -364,7 +365,7 @@ be_local_closure(Matter_Pake2_encode, /* name */
}),
be_str_weak(encode),
&be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
+ ( &(const binstruction[22]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
0x8C080502, // 0002 GETMET R2 R2 K2
@@ -384,8 +385,9 @@ be_local_closure(Matter_Pake2_encode, /* name */
0x881C0108, // 0010 GETMBR R7 R0 K8
0x7C0C0800, // 0011 CALL R3 4
0x8C0C0509, // 0012 GETMET R3 R2 K9
- 0x7C0C0200, // 0013 CALL R3 1
- 0x80040600, // 0014 RET 1 R3
+ 0x5C140200, // 0013 MOVE R5 R1
+ 0x7C0C0400, // 0014 CALL R3 2
+ 0x80040600, // 0015 RET 1 R3
})
)
);
@@ -665,7 +667,7 @@ be_local_closure(Matter_Sigma2_encode, /* name */
}),
be_str_weak(encode),
&be_const_str_solidified,
- ( &(const binstruction[60]) { /* code */
+ ( &(const binstruction[61]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
0x8C080502, // 0002 GETMET R2 R2 K2
@@ -724,8 +726,9 @@ be_local_closure(Matter_Sigma2_encode, /* name */
0x8820010E, // 0037 GETMBR R8 R0 K14
0x7C100800, // 0038 CALL R4 4
0x8C0C0511, // 0039 GETMET R3 R2 K17
- 0x7C0C0200, // 003A CALL R3 1
- 0x80040600, // 003B RET 1 R3
+ 0x5C140200, // 003A MOVE R5 R1
+ 0x7C0C0400, // 003B CALL R3 2
+ 0x80040600, // 003C RET 1 R3
})
)
);
@@ -793,7 +796,7 @@ be_local_closure(Matter_Sigma2Resume_encode, /* name */
}),
be_str_weak(encode),
&be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
+ ( &(const binstruction[54]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
0x8C080502, // 0002 GETMET R2 R2 K2
@@ -845,8 +848,9 @@ be_local_closure(Matter_Sigma2Resume_encode, /* name */
0x8820010C, // 0030 GETMBR R8 R0 K12
0x7C100800, // 0031 CALL R4 4
0x8C0C050F, // 0032 GETMET R3 R2 K15
- 0x7C0C0200, // 0033 CALL R3 1
- 0x80040600, // 0034 RET 1 R3
+ 0x5C140200, // 0033 MOVE R5 R1
+ 0x7C0C0400, // 0034 CALL R3 2
+ 0x80040600, // 0035 RET 1 R3
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
index 3d388913c..2c41e0231 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
@@ -7,11 +7,11 @@
extern const bclass be_class_Matter_Device;
/********************************************************************
-** Solidified function: compute_manual_pairing_code
+** Solidified function: save_param
********************************************************************/
-be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */
+be_local_closure(Matter_Device_save_param, /* name */
be_nested_proto(
- 11, /* nstack */
+ 10, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -19,50 +19,73 @@ be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(root_discriminator),
- /* K2 */ be_nested_str_weak(root_passcode),
- /* K3 */ be_nested_str_weak(format),
- /* K4 */ be_nested_str_weak(_X251i_X2505i_X2504i),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(Verhoeff),
- /* K7 */ be_nested_str_weak(checksum),
+ ( &(const bvalue[17]) { /* constants */
+ /* K0 */ be_nested_str_weak(json),
+ /* K1 */ be_nested_str_weak(dump),
+ /* K2 */ be_nested_str_weak(distinguish),
+ /* K3 */ be_nested_str_weak(root_discriminator),
+ /* K4 */ be_nested_str_weak(passcode),
+ /* K5 */ be_nested_str_weak(root_passcode),
+ /* K6 */ be_nested_str_weak(ipv4only),
+ /* K7 */ be_nested_str_weak(string),
+ /* K8 */ be_nested_str_weak(FILENAME),
+ /* K9 */ be_nested_str_weak(w),
+ /* K10 */ be_nested_str_weak(write),
+ /* K11 */ be_nested_str_weak(close),
+ /* K12 */ be_nested_str_weak(tasmota),
+ /* K13 */ be_nested_str_weak(log),
+ /* K14 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
+ /* K15 */ be_nested_str_weak(_X7C),
+ /* K16 */ be_const_int(2),
}),
- be_str_weak(compute_manual_pairing_code),
+ be_str_weak(save_param),
&be_const_str_solidified,
- ( &(const binstruction[31]) { /* code */
+ ( &(const binstruction[45]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x540E0FFE, // 0002 LDINT R3 4095
- 0x2C080403, // 0003 AND R2 R2 R3
- 0x540E0009, // 0004 LDINT R3 10
- 0x3C080403, // 0005 SHR R2 R2 R3
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x541202FF, // 0007 LDINT R4 768
- 0x2C0C0604, // 0008 AND R3 R3 R4
- 0x54120005, // 0009 LDINT R4 6
- 0x380C0604, // 000A SHL R3 R3 R4
- 0x88100102, // 000B GETMBR R4 R0 K2
- 0x54163FFE, // 000C LDINT R5 16383
- 0x2C100805, // 000D AND R4 R4 R5
- 0x300C0604, // 000E OR R3 R3 R4
- 0x88100102, // 000F GETMBR R4 R0 K2
- 0x5416000D, // 0010 LDINT R5 14
- 0x3C100805, // 0011 SHR R4 R4 R5
- 0x8C140303, // 0012 GETMET R5 R1 K3
- 0x581C0004, // 0013 LDCONST R7 K4
- 0x5C200400, // 0014 MOVE R8 R2
- 0x5C240600, // 0015 MOVE R9 R3
- 0x5C280800, // 0016 MOVE R10 R4
- 0x7C140A00, // 0017 CALL R5 5
- 0xB81A0A00, // 0018 GETNGBL R6 K5
- 0x88180D06, // 0019 GETMBR R6 R6 K6
- 0x8C180D07, // 001A GETMET R6 R6 K7
- 0x5C200A00, // 001B MOVE R8 R5
- 0x7C180400, // 001C CALL R6 2
- 0x00140A06, // 001D ADD R5 R5 R6
- 0x80040A00, // 001E RET 1 R5
+ 0x8C080301, // 0001 GETMET R2 R1 K1
+ 0x60100013, // 0002 GETGBL R4 G19
+ 0x7C100000, // 0003 CALL R4 0
+ 0x88140103, // 0004 GETMBR R5 R0 K3
+ 0x98120405, // 0005 SETIDX R4 K2 R5
+ 0x88140105, // 0006 GETMBR R5 R0 K5
+ 0x98120805, // 0007 SETIDX R4 K4 R5
+ 0x88140106, // 0008 GETMBR R5 R0 K6
+ 0x98120C05, // 0009 SETIDX R4 K6 R5
+ 0x7C080400, // 000A CALL R2 2
+ 0xA802000D, // 000B EXBLK 0 #001A
+ 0xA40E0E00, // 000C IMPORT R3 K7
+ 0x60100011, // 000D GETGBL R4 G17
+ 0x88140108, // 000E GETMBR R5 R0 K8
+ 0x58180009, // 000F LDCONST R6 K9
+ 0x7C100400, // 0010 CALL R4 2
+ 0x8C14090A, // 0011 GETMET R5 R4 K10
+ 0x5C1C0400, // 0012 MOVE R7 R2
+ 0x7C140400, // 0013 CALL R5 2
+ 0x8C14090B, // 0014 GETMET R5 R4 K11
+ 0x7C140200, // 0015 CALL R5 1
+ 0xA8040001, // 0016 EXBLK 1 1
+ 0x80040400, // 0017 RET 1 R2
+ 0xA8040001, // 0018 EXBLK 1 1
+ 0x70020011, // 0019 JMP #002C
+ 0xAC0C0002, // 001A CATCH R3 0 2
+ 0x7002000E, // 001B JMP #002B
+ 0xB8161800, // 001C GETNGBL R5 K12
+ 0x8C140B0D, // 001D GETMET R5 R5 K13
+ 0x601C0008, // 001E GETGBL R7 G8
+ 0x5C200600, // 001F MOVE R8 R3
+ 0x7C1C0200, // 0020 CALL R7 1
+ 0x001E1C07, // 0021 ADD R7 K14 R7
+ 0x001C0F0F, // 0022 ADD R7 R7 K15
+ 0x60200008, // 0023 GETGBL R8 G8
+ 0x5C240800, // 0024 MOVE R9 R4
+ 0x7C200200, // 0025 CALL R8 1
+ 0x001C0E08, // 0026 ADD R7 R7 R8
+ 0x58200010, // 0027 LDCONST R8 K16
+ 0x7C140600, // 0028 CALL R5 3
+ 0x80040400, // 0029 RET 1 R2
+ 0x70020000, // 002A JMP #002C
+ 0xB0080000, // 002B RAISE 2 R0 R0
+ 0x80000000, // 002C RET 0
})
)
);
@@ -70,616 +93,9 @@ be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */
/********************************************************************
-** Solidified function: stop_basic_commissioning
+** Solidified function: start_commissioning_complete_deferred
********************************************************************/
-be_local_closure(Matter_Device_stop_basic_commissioning, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(mdns_remove_PASE),
- /* K2 */ be_nested_str_weak(commissioning_iterations),
- /* K3 */ be_nested_str_weak(commissioning_discriminator),
- /* K4 */ be_nested_str_weak(commissioning_salt),
- /* K5 */ be_nested_str_weak(commissioning_w0),
- /* K6 */ be_nested_str_weak(commissioning_L),
- /* K7 */ be_nested_str_weak(commissioning_admin_fabric),
- }),
- be_str_weak(stop_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x4C040000, // 0000 LDNIL R1
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x8C040101, // 0002 GETMET R1 R0 K1
- 0x7C040200, // 0003 CALL R1 1
- 0x4C040000, // 0004 LDNIL R1
- 0x90020401, // 0005 SETMBR R0 K2 R1
- 0x4C040000, // 0006 LDNIL R1
- 0x90020601, // 0007 SETMBR R0 K3 R1
- 0x4C040000, // 0008 LDNIL R1
- 0x90020801, // 0009 SETMBR R0 K4 R1
- 0x4C040000, // 000A LDNIL R1
- 0x90020A01, // 000B SETMBR R0 K5 R1
- 0x4C040000, // 000C LDNIL R1
- 0x90020C01, // 000D SETMBR R0 K6 R1
- 0x4C040000, // 000E LDNIL R1
- 0x90020E01, // 000F SETMBR R0 K7 R1
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Device_init, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(start_udp),
- /* K1 */ be_nested_str_weak(UDP_PORT),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(remove_rule),
- /* K4 */ be_nested_str_weak(Wifi_X23Connected),
- /* K5 */ be_nested_str_weak(matter_device_udp),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x68080000, // 0002 GETUPV R2 U0
- 0x88080501, // 0003 GETMBR R2 R2 K1
- 0x7C000400, // 0004 CALL R0 2
- 0xB8020400, // 0005 GETNGBL R0 K2
- 0x8C000103, // 0006 GETMET R0 R0 K3
- 0x58080004, // 0007 LDCONST R2 K4
- 0x580C0005, // 0008 LDCONST R3 K5
- 0x7C000600, // 0009 CALL R0 3
- 0x80000000, // 000A RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(start_udp),
- /* K1 */ be_nested_str_weak(UDP_PORT),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(remove_rule),
- /* K4 */ be_nested_str_weak(Eth_X23Connected),
- /* K5 */ be_nested_str_weak(matter_device_udp),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x68080000, // 0002 GETUPV R2 U0
- 0x88080501, // 0003 GETMBR R2 R2 K1
- 0x7C000400, // 0004 CALL R0 2
- 0xB8020400, // 0005 GETNGBL R0 K2
- 0x8C000103, // 0006 GETMET R0 R0 K3
- 0x58080004, // 0007 LDCONST R2 K4
- 0x580C0005, // 0008 LDCONST R3 K5
- 0x7C000600, // 0009 CALL R0 3
- 0x80000000, // 000A RET 0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[44]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(get_option),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(MATTER_OPTION),
- /* K6 */ be_nested_str_weak(UI),
- /* K7 */ be_nested_str_weak(plugins),
- /* K8 */ be_nested_str_weak(vendorid),
- /* K9 */ be_nested_str_weak(VENDOR_ID),
- /* K10 */ be_nested_str_weak(productid),
- /* K11 */ be_nested_str_weak(PRODUCT_ID),
- /* K12 */ be_nested_str_weak(root_iterations),
- /* K13 */ be_nested_str_weak(PBKDF_ITERATIONS),
- /* K14 */ be_nested_str_weak(root_salt),
- /* K15 */ be_nested_str_weak(random),
- /* K16 */ be_nested_str_weak(ipv4only),
- /* K17 */ be_nested_str_weak(load_param),
- /* K18 */ be_nested_str_weak(commissioning_instance_wifi),
- /* K19 */ be_nested_str_weak(tohex),
- /* K20 */ be_nested_str_weak(commissioning_instance_eth),
- /* K21 */ be_nested_str_weak(sessions),
- /* K22 */ be_nested_str_weak(Session_Store),
- /* K23 */ be_nested_str_weak(load_fabrics),
- /* K24 */ be_nested_str_weak(message_handler),
- /* K25 */ be_nested_str_weak(MessageHandler),
- /* K26 */ be_nested_str_weak(ui),
- /* K27 */ be_nested_str_weak(push),
- /* K28 */ be_nested_str_weak(Plugin_Root),
- /* K29 */ be_const_int(0),
- /* K30 */ be_nested_str_weak(Plugin_OnOff),
- /* K31 */ be_const_int(1),
- /* K32 */ be_nested_str_weak(start_mdns_announce_hostnames),
- /* K33 */ be_nested_str_weak(wifi),
- /* K34 */ be_nested_str_weak(up),
- /* K35 */ be_nested_str_weak(start_udp),
- /* K36 */ be_nested_str_weak(UDP_PORT),
- /* K37 */ be_nested_str_weak(add_rule),
- /* K38 */ be_nested_str_weak(Wifi_X23Connected),
- /* K39 */ be_nested_str_weak(matter_device_udp),
- /* K40 */ be_nested_str_weak(eth),
- /* K41 */ be_nested_str_weak(Eth_X23Connected),
- /* K42 */ be_nested_str_weak(init_basic_commissioning),
- /* K43 */ be_nested_str_weak(add_driver),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[116]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x8C0C0703, // 0003 GETMET R3 R3 K3
- 0xB8160800, // 0004 GETNGBL R5 K4
- 0x88140B05, // 0005 GETMBR R5 R5 K5
- 0x7C0C0400, // 0006 CALL R3 2
- 0x740E0004, // 0007 JMPT R3 #000D
- 0xB80E0800, // 0008 GETNGBL R3 K4
- 0x8C0C0706, // 0009 GETMET R3 R3 K6
- 0x5C140000, // 000A MOVE R5 R0
- 0x7C0C0400, // 000B CALL R3 2
- 0x80000600, // 000C RET 0
- 0x600C0012, // 000D GETGBL R3 G18
- 0x7C0C0000, // 000E CALL R3 0
- 0x90020E03, // 000F SETMBR R0 K7 R3
- 0x880C0109, // 0010 GETMBR R3 R0 K9
- 0x90021003, // 0011 SETMBR R0 K8 R3
- 0x880C010B, // 0012 GETMBR R3 R0 K11
- 0x90021403, // 0013 SETMBR R0 K10 R3
- 0x880C010D, // 0014 GETMBR R3 R0 K13
- 0x90021803, // 0015 SETMBR R0 K12 R3
- 0x8C0C030F, // 0016 GETMET R3 R1 K15
- 0x5416000F, // 0017 LDINT R5 16
- 0x7C0C0400, // 0018 CALL R3 2
- 0x90021C03, // 0019 SETMBR R0 K14 R3
- 0x500C0000, // 001A LDBOOL R3 0 0
- 0x90022003, // 001B SETMBR R0 K16 R3
- 0x8C0C0111, // 001C GETMET R3 R0 K17
- 0x7C0C0200, // 001D CALL R3 1
- 0x8C0C030F, // 001E GETMET R3 R1 K15
- 0x54160007, // 001F LDINT R5 8
- 0x7C0C0400, // 0020 CALL R3 2
- 0x8C0C0713, // 0021 GETMET R3 R3 K19
- 0x7C0C0200, // 0022 CALL R3 1
- 0x90022403, // 0023 SETMBR R0 K18 R3
- 0x8C0C030F, // 0024 GETMET R3 R1 K15
- 0x54160007, // 0025 LDINT R5 8
- 0x7C0C0400, // 0026 CALL R3 2
- 0x8C0C0713, // 0027 GETMET R3 R3 K19
- 0x7C0C0200, // 0028 CALL R3 1
- 0x90022803, // 0029 SETMBR R0 K20 R3
- 0xB80E0800, // 002A GETNGBL R3 K4
- 0x8C0C0716, // 002B GETMET R3 R3 K22
- 0x7C0C0200, // 002C CALL R3 1
- 0x90022A03, // 002D SETMBR R0 K21 R3
- 0x880C0115, // 002E GETMBR R3 R0 K21
- 0x8C0C0717, // 002F GETMET R3 R3 K23
- 0x7C0C0200, // 0030 CALL R3 1
- 0xB80E0800, // 0031 GETNGBL R3 K4
- 0x8C0C0719, // 0032 GETMET R3 R3 K25
- 0x5C140000, // 0033 MOVE R5 R0
- 0x7C0C0400, // 0034 CALL R3 2
- 0x90023003, // 0035 SETMBR R0 K24 R3
- 0xB80E0800, // 0036 GETNGBL R3 K4
- 0x8C0C0706, // 0037 GETMET R3 R3 K6
- 0x5C140000, // 0038 MOVE R5 R0
- 0x7C0C0400, // 0039 CALL R3 2
- 0x90023403, // 003A SETMBR R0 K26 R3
- 0x880C0107, // 003B GETMBR R3 R0 K7
- 0x8C0C071B, // 003C GETMET R3 R3 K27
- 0xB8160800, // 003D GETNGBL R5 K4
- 0x8C140B1C, // 003E GETMET R5 R5 K28
- 0x5C1C0000, // 003F MOVE R7 R0
- 0x7C140400, // 0040 CALL R5 2
- 0x5818001D, // 0041 LDCONST R6 K29
- 0x7C0C0600, // 0042 CALL R3 3
- 0x880C0107, // 0043 GETMBR R3 R0 K7
- 0x8C0C071B, // 0044 GETMET R3 R3 K27
- 0xB8160800, // 0045 GETNGBL R5 K4
- 0x8C140B1E, // 0046 GETMET R5 R5 K30
- 0x5C1C0000, // 0047 MOVE R7 R0
- 0x7C140400, // 0048 CALL R5 2
- 0x5818001F, // 0049 LDCONST R6 K31
- 0x581C001D, // 004A LDCONST R7 K29
- 0x7C0C0800, // 004B CALL R3 4
- 0x8C0C0120, // 004C GETMET R3 R0 K32
- 0x7C0C0200, // 004D CALL R3 1
- 0xB80E0400, // 004E GETNGBL R3 K2
- 0x8C0C0721, // 004F GETMET R3 R3 K33
- 0x7C0C0200, // 0050 CALL R3 1
- 0x940C0722, // 0051 GETIDX R3 R3 K34
- 0x780E0003, // 0052 JMPF R3 #0057
- 0x8C0C0123, // 0053 GETMET R3 R0 K35
- 0x88140124, // 0054 GETMBR R5 R0 K36
- 0x7C0C0400, // 0055 CALL R3 2
- 0x70020005, // 0056 JMP #005D
- 0xB80E0400, // 0057 GETNGBL R3 K2
- 0x8C0C0725, // 0058 GETMET R3 R3 K37
- 0x58140026, // 0059 LDCONST R5 K38
- 0x84180000, // 005A CLOSURE R6 P0
- 0x581C0027, // 005B LDCONST R7 K39
- 0x7C0C0800, // 005C CALL R3 4
- 0xB80E0400, // 005D GETNGBL R3 K2
- 0x8C0C0728, // 005E GETMET R3 R3 K40
- 0x7C0C0200, // 005F CALL R3 1
- 0x940C0722, // 0060 GETIDX R3 R3 K34
- 0x780E0003, // 0061 JMPF R3 #0066
- 0x8C0C0123, // 0062 GETMET R3 R0 K35
- 0x88140124, // 0063 GETMBR R5 R0 K36
- 0x7C0C0400, // 0064 CALL R3 2
- 0x70020005, // 0065 JMP #006C
- 0xB80E0400, // 0066 GETNGBL R3 K2
- 0x8C0C0725, // 0067 GETMET R3 R3 K37
- 0x58140029, // 0068 LDCONST R5 K41
- 0x84180001, // 0069 CLOSURE R6 P1
- 0x581C0027, // 006A LDCONST R7 K39
- 0x7C0C0800, // 006B CALL R3 4
- 0x8C0C012A, // 006C GETMET R3 R0 K42
- 0x7C0C0200, // 006D CALL R3 1
- 0xB80E0400, // 006E GETNGBL R3 K2
- 0x8C0C072B, // 006F GETMET R3 R3 K43
- 0x5C140000, // 0070 MOVE R5 R0
- 0x7C0C0400, // 0071 CALL R3 2
- 0xA0000000, // 0072 CLOSE R0
- 0x80000000, // 0073 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_operational_discovery
-********************************************************************/
-be_local_closure(Matter_Device_start_operational_discovery, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(mdns),
- /* K2 */ be_nested_str_weak(string),
- /* K3 */ be_nested_str_weak(stop_basic_commissioning),
- /* K4 */ be_nested_str_weak(root_w0),
- /* K5 */ be_nested_str_weak(root_L),
- /* K6 */ be_nested_str_weak(set_expire_in_seconds),
- /* K7 */ be_nested_str_weak(mdns_announce_op_discovery),
- /* K8 */ be_nested_str_weak(get_fabric),
- }),
- be_str_weak(start_operational_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0xA4120400, // 0002 IMPORT R4 K2
- 0x8C140103, // 0003 GETMET R5 R0 K3
- 0x7C140200, // 0004 CALL R5 1
- 0x4C140000, // 0005 LDNIL R5
- 0x90020805, // 0006 SETMBR R0 K4 R5
- 0x4C140000, // 0007 LDNIL R5
- 0x90020A05, // 0008 SETMBR R0 K5 R5
- 0x8C140306, // 0009 GETMET R5 R1 K6
- 0x541E003B, // 000A LDINT R7 60
- 0x7C140400, // 000B CALL R5 2
- 0x8C140107, // 000C GETMET R5 R0 K7
- 0x8C1C0308, // 000D GETMET R7 R1 K8
- 0x7C1C0200, // 000E CALL R7 1
- 0x7C140400, // 000F CALL R5 2
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_udp
-********************************************************************/
-be_local_closure(Matter_Device_start_udp, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(msg_received),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x8C0C0700, // 0001 GETMET R3 R3 K0
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20starting_X20UDP_X20server_X20on_X20port_X3A_X20),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(UDPServer),
- /* K7 */ be_nested_str_weak(),
- /* K8 */ be_nested_str_weak(start),
- }),
- be_str_weak(start_udp),
- &be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x780A0000, // 0001 JMPF R2 #0003
- 0x80000400, // 0002 RET 0
- 0x4C080000, // 0003 LDNIL R2
- 0x1C080202, // 0004 EQ R2 R1 R2
- 0x780A0000, // 0005 JMPF R2 #0007
- 0x540615A3, // 0006 LDINT R1 5540
- 0xB80A0200, // 0007 GETNGBL R2 K1
- 0x8C080502, // 0008 GETMET R2 R2 K2
- 0x60100008, // 0009 GETGBL R4 G8
- 0x5C140200, // 000A MOVE R5 R1
- 0x7C100200, // 000B CALL R4 1
- 0x00120604, // 000C ADD R4 K3 R4
- 0x58140004, // 000D LDCONST R5 K4
- 0x7C080600, // 000E CALL R2 3
- 0xB80A0A00, // 000F GETNGBL R2 K5
- 0x8C080506, // 0010 GETMET R2 R2 K6
- 0x58100007, // 0011 LDCONST R4 K7
- 0x5C140200, // 0012 MOVE R5 R1
- 0x7C080600, // 0013 CALL R2 3
- 0x90020002, // 0014 SETMBR R0 K0 R2
- 0x88080100, // 0015 GETMBR R2 R0 K0
- 0x8C080508, // 0016 GETMET R2 R2 K8
- 0x84100000, // 0017 CLOSURE R4 P0
- 0x7C080400, // 0018 CALL R2 2
- 0xA0000000, // 0019 CLOSE R0
- 0x80000000, // 001A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_remove_PASE
-********************************************************************/
-be_local_closure(Matter_Device_mdns_remove_PASE, /* name */
- be_nested_proto(
- 12, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[22]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(mdns_pase_eth),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(log),
- /* K5 */ be_nested_str_weak(format),
- /* K6 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
- /* K7 */ be_nested_str_weak(_matterc),
- /* K8 */ be_nested_str_weak(_udp),
- /* K9 */ be_nested_str_weak(commissioning_instance_eth),
- /* K10 */ be_nested_str_weak(hostname_eth),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mdns_X20on_X20_X25s_X20_X27_X25s_X27),
- /* K13 */ be_nested_str_weak(eth),
- /* K14 */ be_const_int(2),
- /* K15 */ be_nested_str_weak(remove_service),
- /* K16 */ be_nested_str_weak(mdns_pase_wifi),
- /* K17 */ be_nested_str_weak(commissioning_instance_wifi),
- /* K18 */ be_nested_str_weak(hostname_wifi),
- /* K19 */ be_nested_str_weak(wifi),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K21 */ be_nested_str_weak(_X7C),
- }),
- be_str_weak(mdns_remove_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[83]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0xA802003D, // 0002 EXBLK 0 #0041
- 0x880C0102, // 0003 GETMBR R3 R0 K2
- 0x780E001B, // 0004 JMPF R3 #0021
- 0xB80E0600, // 0005 GETNGBL R3 K3
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
- 0x8C140505, // 0007 GETMET R5 R2 K5
- 0x581C0006, // 0008 LDCONST R7 K6
- 0x58200007, // 0009 LDCONST R8 K7
- 0x58240008, // 000A LDCONST R9 K8
- 0x88280109, // 000B GETMBR R10 R0 K9
- 0x882C010A, // 000C GETMBR R11 R0 K10
- 0x7C140C00, // 000D CALL R5 6
- 0x5818000B, // 000E LDCONST R6 K11
- 0x7C0C0600, // 000F CALL R3 3
- 0xB80E0600, // 0010 GETNGBL R3 K3
- 0x8C0C0704, // 0011 GETMET R3 R3 K4
- 0x8C140505, // 0012 GETMET R5 R2 K5
- 0x581C000C, // 0013 LDCONST R7 K12
- 0x5820000D, // 0014 LDCONST R8 K13
- 0x88240109, // 0015 GETMBR R9 R0 K9
- 0x7C140800, // 0016 CALL R5 4
- 0x5818000E, // 0017 LDCONST R6 K14
- 0x7C0C0600, // 0018 CALL R3 3
- 0x500C0000, // 0019 LDBOOL R3 0 0
- 0x90020403, // 001A SETMBR R0 K2 R3
- 0x8C0C030F, // 001B GETMET R3 R1 K15
- 0x58140007, // 001C LDCONST R5 K7
- 0x58180008, // 001D LDCONST R6 K8
- 0x881C0109, // 001E GETMBR R7 R0 K9
- 0x8820010A, // 001F GETMBR R8 R0 K10
- 0x7C0C0A00, // 0020 CALL R3 5
- 0x880C0110, // 0021 GETMBR R3 R0 K16
- 0x780E001B, // 0022 JMPF R3 #003F
- 0xB80E0600, // 0023 GETNGBL R3 K3
- 0x8C0C0704, // 0024 GETMET R3 R3 K4
- 0x8C140505, // 0025 GETMET R5 R2 K5
- 0x581C0006, // 0026 LDCONST R7 K6
- 0x58200007, // 0027 LDCONST R8 K7
- 0x58240008, // 0028 LDCONST R9 K8
- 0x88280111, // 0029 GETMBR R10 R0 K17
- 0x882C0112, // 002A GETMBR R11 R0 K18
- 0x7C140C00, // 002B CALL R5 6
- 0x5818000B, // 002C LDCONST R6 K11
- 0x7C0C0600, // 002D CALL R3 3
- 0xB80E0600, // 002E GETNGBL R3 K3
- 0x8C0C0704, // 002F GETMET R3 R3 K4
- 0x8C140505, // 0030 GETMET R5 R2 K5
- 0x581C000C, // 0031 LDCONST R7 K12
- 0x58200013, // 0032 LDCONST R8 K19
- 0x88240111, // 0033 GETMBR R9 R0 K17
- 0x7C140800, // 0034 CALL R5 4
- 0x5818000E, // 0035 LDCONST R6 K14
- 0x7C0C0600, // 0036 CALL R3 3
- 0x500C0000, // 0037 LDBOOL R3 0 0
- 0x90022003, // 0038 SETMBR R0 K16 R3
- 0x8C0C030F, // 0039 GETMET R3 R1 K15
- 0x58140007, // 003A LDCONST R5 K7
- 0x58180008, // 003B LDCONST R6 K8
- 0x881C0111, // 003C GETMBR R7 R0 K17
- 0x88200112, // 003D GETMBR R8 R0 K18
- 0x7C0C0A00, // 003E CALL R3 5
- 0xA8040001, // 003F EXBLK 1 1
- 0x70020010, // 0040 JMP #0052
- 0xAC0C0002, // 0041 CATCH R3 0 2
- 0x7002000D, // 0042 JMP #0051
- 0xB8160600, // 0043 GETNGBL R5 K3
- 0x8C140B04, // 0044 GETMET R5 R5 K4
- 0x601C0008, // 0045 GETGBL R7 G8
- 0x5C200600, // 0046 MOVE R8 R3
- 0x7C1C0200, // 0047 CALL R7 1
- 0x001E2807, // 0048 ADD R7 K20 R7
- 0x001C0F15, // 0049 ADD R7 R7 K21
- 0x60200008, // 004A GETGBL R8 G8
- 0x5C240800, // 004B MOVE R9 R4
- 0x7C200200, // 004C CALL R8 1
- 0x001C0E08, // 004D ADD R7 R7 R8
- 0x5820000E, // 004E LDCONST R8 K14
- 0x7C140600, // 004F CALL R5 3
- 0x70020000, // 0050 JMP #0052
- 0xB0080000, // 0051 RAISE 2 R0 R0
- 0x80000000, // 0052 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_root_commissioning_open
-********************************************************************/
-be_local_closure(Matter_Device_is_root_commissioning_open, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(commissioning_admin_fabric),
- }),
- be_str_weak(is_root_commissioning_open),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x78060003, // 0003 JMPF R1 #0008
- 0x88040101, // 0004 GETMBR R1 R0 K1
- 0x4C080000, // 0005 LDNIL R2
- 0x1C040202, // 0006 EQ R1 R1 R2
- 0x74060000, // 0007 JMPT R1 #0009
- 0x50040001, // 0008 LDBOOL R1 0 1
- 0x50040200, // 0009 LDBOOL R1 1 0
- 0x80040200, // 000A RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_operational_discovery_deferred
-********************************************************************/
-be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name */
+be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
@@ -701,7 +117,7 @@ be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name *
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(start_operational_discovery),
+ /* K0 */ be_nested_str_weak(start_commissioning_complete),
}),
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
@@ -720,7 +136,7 @@ be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name *
/* K1 */ be_nested_str_weak(set_timer),
/* K2 */ be_const_int(0),
}),
- be_str_weak(start_operational_discovery_deferred),
+ be_str_weak(start_commissioning_complete_deferred),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
@@ -737,159 +153,9 @@ be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name *
/********************************************************************
-** Solidified function: compute_pbkdf
+** Solidified function: init_basic_commissioning
********************************************************************/
-be_local_closure(Matter_Device_compute_pbkdf, /* name */
- be_nested_proto(
- 20, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[26]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(add),
- /* K3 */ be_nested_str_weak(PBKDF2_HMAC_SHA256),
- /* K4 */ be_nested_str_weak(derive),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(root_w0),
- /* K7 */ be_nested_str_weak(EC_P256),
- /* K8 */ be_nested_str_weak(mod),
- /* K9 */ be_nested_str_weak(root_L),
- /* K10 */ be_nested_str_weak(public_key),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(log),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20salt_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K15 */ be_nested_str_weak(root_salt),
- /* K16 */ be_nested_str_weak(tohex),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20passcode_hex_X20_X20_X3D_X20),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20w0_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20L_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
- /* K20 */ be_nested_str_weak(compute_manual_pairing_code),
- /* K21 */ be_nested_str_weak(format),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s_X2D_X25s_X2D_X25s),
- /* K23 */ be_const_int(3),
- /* K24 */ be_const_int(2147483647),
- /* K25 */ be_const_int(2),
- }),
- be_str_weak(compute_pbkdf),
- &be_const_str_solidified,
- ( &(const binstruction[100]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0xA4160200, // 0001 IMPORT R5 K1
- 0x60180015, // 0002 GETGBL R6 G21
- 0x7C180000, // 0003 CALL R6 0
- 0x8C180D02, // 0004 GETMET R6 R6 K2
- 0x5C200200, // 0005 MOVE R8 R1
- 0x54260003, // 0006 LDINT R9 4
- 0x7C180600, // 0007 CALL R6 3
- 0x8C1C0903, // 0008 GETMET R7 R4 K3
- 0x7C1C0200, // 0009 CALL R7 1
- 0x8C1C0F04, // 000A GETMET R7 R7 K4
- 0x5C240C00, // 000B MOVE R9 R6
- 0x5C280600, // 000C MOVE R10 R3
- 0x5C2C0400, // 000D MOVE R11 R2
- 0x5432004F, // 000E LDINT R12 80
- 0x7C1C0A00, // 000F CALL R7 5
- 0x54220026, // 0010 LDINT R8 39
- 0x40220A08, // 0011 CONNECT R8 K5 R8
- 0x94200E08, // 0012 GETIDX R8 R7 R8
- 0x54260027, // 0013 LDINT R9 40
- 0x542A004E, // 0014 LDINT R10 79
- 0x4024120A, // 0015 CONNECT R9 R9 R10
- 0x94240E09, // 0016 GETIDX R9 R7 R9
- 0x8C280907, // 0017 GETMET R10 R4 K7
- 0x7C280200, // 0018 CALL R10 1
- 0x8C281508, // 0019 GETMET R10 R10 K8
- 0x5C301000, // 001A MOVE R12 R8
- 0x7C280400, // 001B CALL R10 2
- 0x90020C0A, // 001C SETMBR R0 K6 R10
- 0x8C280907, // 001D GETMET R10 R4 K7
- 0x7C280200, // 001E CALL R10 1
- 0x8C281508, // 001F GETMET R10 R10 K8
- 0x5C301200, // 0020 MOVE R12 R9
- 0x7C280400, // 0021 CALL R10 2
- 0x8C2C0907, // 0022 GETMET R11 R4 K7
- 0x7C2C0200, // 0023 CALL R11 1
- 0x8C2C170A, // 0024 GETMET R11 R11 K10
- 0x5C341400, // 0025 MOVE R13 R10
- 0x7C2C0400, // 0026 CALL R11 2
- 0x9002120B, // 0027 SETMBR R0 K9 R11
- 0xB82E1600, // 0028 GETNGBL R11 K11
- 0x8C2C170C, // 0029 GETMET R11 R11 K12
- 0x5834000D, // 002A LDCONST R13 K13
- 0x543A0003, // 002B LDINT R14 4
- 0x7C2C0600, // 002C CALL R11 3
- 0xB82E1600, // 002D GETNGBL R11 K11
- 0x8C2C170C, // 002E GETMET R11 R11 K12
- 0x8834010F, // 002F GETMBR R13 R0 K15
- 0x8C341B10, // 0030 GETMET R13 R13 K16
- 0x7C340200, // 0031 CALL R13 1
- 0x00361C0D, // 0032 ADD R13 K14 R13
- 0x543A0003, // 0033 LDINT R14 4
- 0x7C2C0600, // 0034 CALL R11 3
- 0xB82E1600, // 0035 GETNGBL R11 K11
- 0x8C2C170C, // 0036 GETMET R11 R11 K12
- 0x8C340D10, // 0037 GETMET R13 R6 K16
- 0x7C340200, // 0038 CALL R13 1
- 0x0036220D, // 0039 ADD R13 K17 R13
- 0x543A0003, // 003A LDINT R14 4
- 0x7C2C0600, // 003B CALL R11 3
- 0xB82E1600, // 003C GETNGBL R11 K11
- 0x8C2C170C, // 003D GETMET R11 R11 K12
- 0x88340106, // 003E GETMBR R13 R0 K6
- 0x8C341B10, // 003F GETMET R13 R13 K16
- 0x7C340200, // 0040 CALL R13 1
- 0x0036240D, // 0041 ADD R13 K18 R13
- 0x543A0003, // 0042 LDINT R14 4
- 0x7C2C0600, // 0043 CALL R11 3
- 0xB82E1600, // 0044 GETNGBL R11 K11
- 0x8C2C170C, // 0045 GETMET R11 R11 K12
- 0x88340109, // 0046 GETMBR R13 R0 K9
- 0x8C341B10, // 0047 GETMET R13 R13 K16
- 0x7C340200, // 0048 CALL R13 1
- 0x0036260D, // 0049 ADD R13 K19 R13
- 0x543A0003, // 004A LDINT R14 4
- 0x7C2C0600, // 004B CALL R11 3
- 0xB82E1600, // 004C GETNGBL R11 K11
- 0x8C2C170C, // 004D GETMET R11 R11 K12
- 0x5834000D, // 004E LDCONST R13 K13
- 0x543A0003, // 004F LDINT R14 4
- 0x7C2C0600, // 0050 CALL R11 3
- 0x8C2C0114, // 0051 GETMET R11 R0 K20
- 0x7C2C0200, // 0052 CALL R11 1
- 0xB8321600, // 0053 GETNGBL R12 K11
- 0x8C30190C, // 0054 GETMET R12 R12 K12
- 0x8C380B15, // 0055 GETMET R14 R5 K21
- 0x58400016, // 0056 LDCONST R16 K22
- 0x40460B17, // 0057 CONNECT R17 K5 K23
- 0x94441611, // 0058 GETIDX R17 R11 R17
- 0x544A0003, // 0059 LDINT R18 4
- 0x544E0005, // 005A LDINT R19 6
- 0x40482413, // 005B CONNECT R18 R18 R19
- 0x94481612, // 005C GETIDX R18 R11 R18
- 0x544E0006, // 005D LDINT R19 7
- 0x404C2718, // 005E CONNECT R19 R19 K24
- 0x944C1613, // 005F GETIDX R19 R11 R19
- 0x7C380A00, // 0060 CALL R14 5
- 0x583C0019, // 0061 LDCONST R15 K25
- 0x7C300600, // 0062 CALL R12 3
- 0x80000000, // 0063 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: stop
-********************************************************************/
-be_local_closure(Matter_Device_stop, /* name */
+be_local_closure(Matter_Device_init_basic_commissioning, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
@@ -899,19 +165,23 @@ be_local_closure(Matter_Device_stop, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(stop),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_nested_str_weak(count_active_fabrics),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(start_root_basic_commissioning),
}),
- be_str_weak(stop),
+ be_str_weak(init_basic_commissioning),
&be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
+ ( &(const binstruction[ 8]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060002, // 0001 JMPF R1 #0005
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x8C040301, // 0003 GETMET R1 R1 K1
- 0x7C040200, // 0004 CALL R1 1
- 0x80000000, // 0005 RET 0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x1C040302, // 0003 EQ R1 R1 K2
+ 0x78060001, // 0004 JMPF R1 #0007
+ 0x8C040103, // 0005 GETMET R1 R0 K3
+ 0x7C040200, // 0006 CALL R1 1
+ 0x80000000, // 0007 RET 0
})
)
);
@@ -919,12 +189,70 @@ be_local_closure(Matter_Device_stop, /* name */
/********************************************************************
-** Solidified function: start_basic_commissioning
+** Solidified function: get_active_endpoints
********************************************************************/
-be_local_closure(Matter_Device_start_basic_commissioning, /* name */
+be_local_closure(Matter_Device_get_active_endpoints, /* name */
be_nested_proto(
- 13, /* nstack */
- 8, /* argc */
+ 9, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(plugins),
+ /* K1 */ be_nested_str_weak(get_endpoint),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(find),
+ /* K4 */ be_nested_str_weak(push),
+ /* K5 */ be_nested_str_weak(stop_iteration),
+ }),
+ be_str_weak(get_active_endpoints),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x60080012, // 0000 GETGBL R2 G18
+ 0x7C080000, // 0001 CALL R2 0
+ 0x600C0010, // 0002 GETGBL R3 G16
+ 0x88100100, // 0003 GETMBR R4 R0 K0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0xA8020011, // 0005 EXBLK 0 #0018
+ 0x5C100600, // 0006 MOVE R4 R3
+ 0x7C100000, // 0007 CALL R4 0
+ 0x8C140901, // 0008 GETMET R5 R4 K1
+ 0x7C140200, // 0009 CALL R5 1
+ 0x78060002, // 000A JMPF R1 #000E
+ 0x1C180B02, // 000B EQ R6 R5 K2
+ 0x781A0000, // 000C JMPF R6 #000E
+ 0x7001FFF7, // 000D JMP #0006
+ 0x8C180503, // 000E GETMET R6 R2 K3
+ 0x5C200A00, // 000F MOVE R8 R5
+ 0x7C180400, // 0010 CALL R6 2
+ 0x4C1C0000, // 0011 LDNIL R7
+ 0x1C180C07, // 0012 EQ R6 R6 R7
+ 0x781A0002, // 0013 JMPF R6 #0017
+ 0x8C180504, // 0014 GETMET R6 R2 K4
+ 0x5C200A00, // 0015 MOVE R8 R5
+ 0x7C180400, // 0016 CALL R6 2
+ 0x7001FFED, // 0017 JMP #0006
+ 0x580C0005, // 0018 LDCONST R3 K5
+ 0xAC0C0200, // 0019 CATCH R3 1 0
+ 0xB0080000, // 001A RAISE 2 R0 R0
+ 0x80040400, // 001B RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_mdns_announce_hostnames
+********************************************************************/
+be_local_closure(Matter_Device_start_mdns_announce_hostnames, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -941,24 +269,26 @@ be_local_closure(Matter_Device_start_basic_commissioning, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(remove_rule),
/* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
}),
be_str_weak(_anonymous_),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
+ ( &(const binstruction[10]) { /* code */
0x68000000, // 0000 GETUPV R0 U0
0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0000, // 0006 LDCONST R3 K0
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
+ 0x50080000, // 0002 LDBOOL R2 0 0
+ 0x7C000400, // 0003 CALL R0 2
+ 0xB8020200, // 0004 GETNGBL R0 K1
+ 0x8C000102, // 0005 GETMET R0 R0 K2
+ 0x58080003, // 0006 LDCONST R2 K3
+ 0x580C0004, // 0007 LDCONST R3 K4
+ 0x7C000600, // 0008 CALL R0 3
+ 0x80000000, // 0009 RET 0
})
),
be_nested_proto(
@@ -972,89 +302,76 @@ be_local_closure(Matter_Device_start_basic_commissioning, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(remove_rule),
/* K3 */ be_nested_str_weak(Eth_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
}),
be_str_weak(_anonymous_),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
+ ( &(const binstruction[10]) { /* code */
0x68000000, // 0000 GETUPV R0 U0
0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0000, // 0006 LDCONST R3 K0
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
+ 0x50080200, // 0002 LDBOOL R2 1 0
+ 0x7C000400, // 0003 CALL R0 2
+ 0xB8020200, // 0004 GETNGBL R0 K1
+ 0x8C000102, // 0005 GETMET R0 R0 K2
+ 0x58080003, // 0006 LDCONST R2 K3
+ 0x580C0004, // 0007 LDCONST R3 K4
+ 0x7C000600, // 0008 CALL R0 3
+ 0x80000000, // 0009 RET 0
})
),
}),
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(commissioning_iterations),
- /* K4 */ be_nested_str_weak(commissioning_discriminator),
- /* K5 */ be_nested_str_weak(commissioning_salt),
- /* K6 */ be_nested_str_weak(commissioning_w0),
- /* K7 */ be_nested_str_weak(commissioning_L),
- /* K8 */ be_nested_str_weak(commissioning_admin_fabric),
- /* K9 */ be_nested_str_weak(wifi),
- /* K10 */ be_nested_str_weak(up),
- /* K11 */ be_nested_str_weak(eth),
- /* K12 */ be_nested_str_weak(mdns_announce_PASE),
- /* K13 */ be_nested_str_weak(add_rule),
- /* K14 */ be_nested_str_weak(Wifi_X23Connected),
- /* K15 */ be_nested_str_weak(Eth_X23Connected),
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(wifi),
+ /* K2 */ be_nested_str_weak(up),
+ /* K3 */ be_nested_str_weak(_mdns_announce_hostname),
+ /* K4 */ be_nested_str_weak(add_rule),
+ /* K5 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K6 */ be_nested_str_weak(matter_mdns_host),
+ /* K7 */ be_nested_str_weak(eth),
+ /* K8 */ be_nested_str_weak(Eth_X23Connected),
}),
- be_str_weak(start_basic_commissioning),
+ be_str_weak(start_mdns_announce_hostnames),
&be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xB8220200, // 0000 GETNGBL R8 K1
- 0x8C201102, // 0001 GETMET R8 R8 K2
- 0x7C200200, // 0002 CALL R8 1
- 0x542603E7, // 0003 LDINT R9 1000
- 0x08240209, // 0004 MUL R9 R1 R9
- 0x00201009, // 0005 ADD R8 R8 R9
- 0x90020008, // 0006 SETMBR R0 K0 R8
- 0x90020602, // 0007 SETMBR R0 K3 R2
- 0x90020803, // 0008 SETMBR R0 K4 R3
- 0x90020A04, // 0009 SETMBR R0 K5 R4
- 0x90020C05, // 000A SETMBR R0 K6 R5
- 0x90020E06, // 000B SETMBR R0 K7 R6
- 0x90021007, // 000C SETMBR R0 K8 R7
- 0xB8220200, // 000D GETNGBL R8 K1
- 0x8C201109, // 000E GETMET R8 R8 K9
- 0x7C200200, // 000F CALL R8 1
- 0x9420110A, // 0010 GETIDX R8 R8 K10
- 0x74220004, // 0011 JMPT R8 #0017
- 0xB8220200, // 0012 GETNGBL R8 K1
- 0x8C20110B, // 0013 GETMET R8 R8 K11
- 0x7C200200, // 0014 CALL R8 1
- 0x9420110A, // 0015 GETIDX R8 R8 K10
- 0x78220002, // 0016 JMPF R8 #001A
- 0x8C20010C, // 0017 GETMET R8 R0 K12
- 0x7C200200, // 0018 CALL R8 1
- 0x7002000B, // 0019 JMP #0026
- 0xB8220200, // 001A GETNGBL R8 K1
- 0x8C20110D, // 001B GETMET R8 R8 K13
- 0x5828000E, // 001C LDCONST R10 K14
- 0x842C0000, // 001D CLOSURE R11 P0
- 0x5830000C, // 001E LDCONST R12 K12
- 0x7C200800, // 001F CALL R8 4
- 0xB8220200, // 0020 GETNGBL R8 K1
- 0x8C20110D, // 0021 GETMET R8 R8 K13
- 0x5828000F, // 0022 LDCONST R10 K15
- 0x842C0001, // 0023 CLOSURE R11 P1
- 0x5830000C, // 0024 LDCONST R12 K12
- 0x7C200800, // 0025 CALL R8 4
- 0xA0000000, // 0026 CLOSE R0
- 0x80000000, // 0027 RET 0
+ ( &(const binstruction[32]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x94040302, // 0003 GETIDX R1 R1 K2
+ 0x78060003, // 0004 JMPF R1 #0009
+ 0x8C040103, // 0005 GETMET R1 R0 K3
+ 0x500C0000, // 0006 LDBOOL R3 0 0
+ 0x7C040400, // 0007 CALL R1 2
+ 0x70020005, // 0008 JMP #000F
+ 0xB8060000, // 0009 GETNGBL R1 K0
+ 0x8C040304, // 000A GETMET R1 R1 K4
+ 0x580C0005, // 000B LDCONST R3 K5
+ 0x84100000, // 000C CLOSURE R4 P0
+ 0x58140006, // 000D LDCONST R5 K6
+ 0x7C040800, // 000E CALL R1 4
+ 0xB8060000, // 000F GETNGBL R1 K0
+ 0x8C040307, // 0010 GETMET R1 R1 K7
+ 0x7C040200, // 0011 CALL R1 1
+ 0x94040302, // 0012 GETIDX R1 R1 K2
+ 0x78060003, // 0013 JMPF R1 #0018
+ 0x8C040103, // 0014 GETMET R1 R0 K3
+ 0x500C0200, // 0015 LDBOOL R3 1 0
+ 0x7C040400, // 0016 CALL R1 2
+ 0x70020005, // 0017 JMP #001E
+ 0xB8060000, // 0018 GETNGBL R1 K0
+ 0x8C040304, // 0019 GETMET R1 R1 K4
+ 0x580C0008, // 001A LDCONST R3 K8
+ 0x84100001, // 001B CLOSURE R4 P1
+ 0x58140006, // 001C LDCONST R5 K6
+ 0x7C040800, // 001D CALL R1 4
+ 0xA0000000, // 001E CLOSE R0
+ 0x80000000, // 001F RET 0
})
)
);
@@ -1219,1809 +536,6 @@ be_local_closure(Matter_Device_sort_distinct, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: finish_commissioning
-********************************************************************/
-be_local_closure(Matter_Device_finish_commissioning, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(finish_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: packet_ack
-********************************************************************/
-be_local_closure(Matter_Device_packet_ack, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(packet_ack),
- }),
- be_str_weak(packet_ack),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: remove_fabric
-********************************************************************/
-be_local_closure(Matter_Device_remove_fabric, /* 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(message_handler),
- /* K1 */ be_nested_str_weak(im),
- /* K2 */ be_nested_str_weak(subs),
- /* K3 */ be_nested_str_weak(remove_by_fabric),
- /* K4 */ be_nested_str_weak(sessions),
- /* K5 */ be_nested_str_weak(remove_fabric),
- /* K6 */ be_nested_str_weak(save_fabrics),
- }),
- be_str_weak(remove_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x88080501, // 0001 GETMBR R2 R2 K1
- 0x88080502, // 0002 GETMBR R2 R2 K2
- 0x8C080503, // 0003 GETMET R2 R2 K3
- 0x5C100200, // 0004 MOVE R4 R1
- 0x7C080400, // 0005 CALL R2 2
- 0x88080104, // 0006 GETMBR R2 R0 K4
- 0x8C080505, // 0007 GETMET R2 R2 K5
- 0x5C100200, // 0008 MOVE R4 R1
- 0x7C080400, // 0009 CALL R2 2
- 0x88080104, // 000A GETMBR R2 R0 K4
- 0x8C080506, // 000B GETMET R2 R2 K6
- 0x7C080200, // 000C CALL R2 1
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: save_param
-********************************************************************/
-be_local_closure(Matter_Device_save_param, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(dump),
- /* K2 */ be_nested_str_weak(distinguish),
- /* K3 */ be_nested_str_weak(root_discriminator),
- /* K4 */ be_nested_str_weak(passcode),
- /* K5 */ be_nested_str_weak(root_passcode),
- /* K6 */ be_nested_str_weak(ipv4only),
- /* K7 */ be_nested_str_weak(string),
- /* K8 */ be_nested_str_weak(FILENAME),
- /* K9 */ be_nested_str_weak(w),
- /* K10 */ be_nested_str_weak(write),
- /* K11 */ be_nested_str_weak(close),
- /* K12 */ be_nested_str_weak(tasmota),
- /* K13 */ be_nested_str_weak(log),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
- /* K15 */ be_nested_str_weak(_X7C),
- /* K16 */ be_const_int(2),
- }),
- be_str_weak(save_param),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x60100013, // 0002 GETGBL R4 G19
- 0x7C100000, // 0003 CALL R4 0
- 0x88140103, // 0004 GETMBR R5 R0 K3
- 0x98120405, // 0005 SETIDX R4 K2 R5
- 0x88140105, // 0006 GETMBR R5 R0 K5
- 0x98120805, // 0007 SETIDX R4 K4 R5
- 0x88140106, // 0008 GETMBR R5 R0 K6
- 0x98120C05, // 0009 SETIDX R4 K6 R5
- 0x7C080400, // 000A CALL R2 2
- 0xA802000D, // 000B EXBLK 0 #001A
- 0xA40E0E00, // 000C IMPORT R3 K7
- 0x60100011, // 000D GETGBL R4 G17
- 0x88140108, // 000E GETMBR R5 R0 K8
- 0x58180009, // 000F LDCONST R6 K9
- 0x7C100400, // 0010 CALL R4 2
- 0x8C14090A, // 0011 GETMET R5 R4 K10
- 0x5C1C0400, // 0012 MOVE R7 R2
- 0x7C140400, // 0013 CALL R5 2
- 0x8C14090B, // 0014 GETMET R5 R4 K11
- 0x7C140200, // 0015 CALL R5 1
- 0xA8040001, // 0016 EXBLK 1 1
- 0x80040400, // 0017 RET 1 R2
- 0xA8040001, // 0018 EXBLK 1 1
- 0x70020011, // 0019 JMP #002C
- 0xAC0C0002, // 001A CATCH R3 0 2
- 0x7002000E, // 001B JMP #002B
- 0xB8161800, // 001C GETNGBL R5 K12
- 0x8C140B0D, // 001D GETMET R5 R5 K13
- 0x601C0008, // 001E GETGBL R7 G8
- 0x5C200600, // 001F MOVE R8 R3
- 0x7C1C0200, // 0020 CALL R7 1
- 0x001E1C07, // 0021 ADD R7 K14 R7
- 0x001C0F0F, // 0022 ADD R7 R7 K15
- 0x60200008, // 0023 GETGBL R8 G8
- 0x5C240800, // 0024 MOVE R9 R4
- 0x7C200200, // 0025 CALL R8 1
- 0x001C0E08, // 0026 ADD R7 R7 R8
- 0x58200010, // 0027 LDCONST R8 K16
- 0x7C140600, // 0028 CALL R5 3
- 0x80040400, // 0029 RET 1 R2
- 0x70020000, // 002A JMP #002C
- 0xB0080000, // 002B RAISE 2 R0 R0
- 0x80000000, // 002C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_root_basic_commissioning
-********************************************************************/
-be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
- be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(PASE_TIMEOUT),
- /* K1 */ be_nested_str_weak(compute_pbkdf),
- /* K2 */ be_nested_str_weak(root_passcode),
- /* K3 */ be_nested_str_weak(root_iterations),
- /* K4 */ be_nested_str_weak(root_salt),
- /* K5 */ be_nested_str_weak(start_basic_commissioning),
- /* K6 */ be_nested_str_weak(root_discriminator),
- /* K7 */ be_nested_str_weak(root_w0),
- /* K8 */ be_nested_str_weak(root_L),
- }),
- be_str_weak(start_root_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0000, // 0002 JMPF R2 #0004
- 0x88040100, // 0003 GETMBR R1 R0 K0
- 0x8C080101, // 0004 GETMET R2 R0 K1
- 0x88100102, // 0005 GETMBR R4 R0 K2
- 0x88140103, // 0006 GETMBR R5 R0 K3
- 0x88180104, // 0007 GETMBR R6 R0 K4
- 0x7C080800, // 0008 CALL R2 4
- 0x8C080105, // 0009 GETMET R2 R0 K5
- 0x5C100200, // 000A MOVE R4 R1
- 0x88140103, // 000B GETMBR R5 R0 K3
- 0x88180106, // 000C GETMBR R6 R0 K6
- 0x881C0104, // 000D GETMBR R7 R0 K4
- 0x88200107, // 000E GETMBR R8 R0 K7
- 0x88240108, // 000F GETMBR R9 R0 K8
- 0x4C280000, // 0010 LDNIL R10
- 0x7C081000, // 0011 CALL R2 8
- 0x80000000, // 0012 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: load_param
-********************************************************************/
-be_local_closure(Matter_Device_load_param, /* name */
- be_nested_proto(
- 12, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[24]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(crypto),
- /* K2 */ be_nested_str_weak(FILENAME),
- /* K3 */ be_nested_str_weak(read),
- /* K4 */ be_nested_str_weak(close),
- /* K5 */ be_nested_str_weak(json),
- /* K6 */ be_nested_str_weak(load),
- /* K7 */ be_nested_str_weak(root_discriminator),
- /* K8 */ be_nested_str_weak(find),
- /* K9 */ be_nested_str_weak(distinguish),
- /* K10 */ be_nested_str_weak(root_passcode),
- /* K11 */ be_nested_str_weak(passcode),
- /* K12 */ be_nested_str_weak(ipv4only),
- /* K13 */ be_nested_str_weak(io_error),
- /* K14 */ be_nested_str_weak(tasmota),
- /* K15 */ be_nested_str_weak(log),
- /* K16 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A),
- /* K17 */ be_nested_str_weak(_X7C),
- /* K18 */ be_const_int(2),
- /* K19 */ be_nested_str_weak(random),
- /* K20 */ be_nested_str_weak(get),
- /* K21 */ be_const_int(0),
- /* K22 */ be_nested_str_weak(PASSCODE_DEFAULT),
- /* K23 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(load_param),
- &be_const_str_solidified,
- ( &(const binstruction[79]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0xA802001D, // 0002 EXBLK 0 #0021
- 0x600C0011, // 0003 GETGBL R3 G17
- 0x88100102, // 0004 GETMBR R4 R0 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C100703, // 0006 GETMET R4 R3 K3
- 0x7C100200, // 0007 CALL R4 1
- 0x8C140704, // 0008 GETMET R5 R3 K4
- 0x7C140200, // 0009 CALL R5 1
- 0xA4160A00, // 000A IMPORT R5 K5
- 0x8C180B06, // 000B GETMET R6 R5 K6
- 0x5C200800, // 000C MOVE R8 R4
- 0x7C180400, // 000D CALL R6 2
- 0x8C1C0D08, // 000E GETMET R7 R6 K8
- 0x58240009, // 000F LDCONST R9 K9
- 0x88280107, // 0010 GETMBR R10 R0 K7
- 0x7C1C0600, // 0011 CALL R7 3
- 0x90020E07, // 0012 SETMBR R0 K7 R7
- 0x8C1C0D08, // 0013 GETMET R7 R6 K8
- 0x5824000B, // 0014 LDCONST R9 K11
- 0x8828010A, // 0015 GETMBR R10 R0 K10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x90021407, // 0017 SETMBR R0 K10 R7
- 0x601C0017, // 0018 GETGBL R7 G23
- 0x8C200D08, // 0019 GETMET R8 R6 K8
- 0x5828000C, // 001A LDCONST R10 K12
- 0x502C0000, // 001B LDBOOL R11 0 0
- 0x7C200600, // 001C CALL R8 3
- 0x7C1C0200, // 001D CALL R7 1
- 0x90021807, // 001E SETMBR R0 K12 R7
- 0xA8040001, // 001F EXBLK 1 1
- 0x70020012, // 0020 JMP #0034
- 0xAC0C0002, // 0021 CATCH R3 0 2
- 0x7002000F, // 0022 JMP #0033
- 0x2014070D, // 0023 NE R5 R3 K13
- 0x7816000C, // 0024 JMPF R5 #0032
- 0xB8161C00, // 0025 GETNGBL R5 K14
- 0x8C140B0F, // 0026 GETMET R5 R5 K15
- 0x601C0008, // 0027 GETGBL R7 G8
- 0x5C200600, // 0028 MOVE R8 R3
- 0x7C1C0200, // 0029 CALL R7 1
- 0x001E2007, // 002A ADD R7 K16 R7
- 0x001C0F11, // 002B ADD R7 R7 K17
- 0x60200008, // 002C GETGBL R8 G8
- 0x5C240800, // 002D MOVE R9 R4
- 0x7C200200, // 002E CALL R8 1
- 0x001C0E08, // 002F ADD R7 R7 R8
- 0x58200012, // 0030 LDCONST R8 K18
- 0x7C140600, // 0031 CALL R5 3
- 0x70020000, // 0032 JMP #0034
- 0xB0080000, // 0033 RAISE 2 R0 R0
- 0x500C0000, // 0034 LDBOOL R3 0 0
- 0x88100107, // 0035 GETMBR R4 R0 K7
- 0x4C140000, // 0036 LDNIL R5
- 0x1C100805, // 0037 EQ R4 R4 R5
- 0x7812000A, // 0038 JMPF R4 #0044
- 0x8C100513, // 0039 GETMET R4 R2 K19
- 0x58180012, // 003A LDCONST R6 K18
- 0x7C100400, // 003B CALL R4 2
- 0x8C100914, // 003C GETMET R4 R4 K20
- 0x58180015, // 003D LDCONST R6 K21
- 0x581C0012, // 003E LDCONST R7 K18
- 0x7C100600, // 003F CALL R4 3
- 0x54160FFE, // 0040 LDINT R5 4095
- 0x2C100805, // 0041 AND R4 R4 R5
- 0x90020E04, // 0042 SETMBR R0 K7 R4
- 0x500C0200, // 0043 LDBOOL R3 1 0
- 0x8810010A, // 0044 GETMBR R4 R0 K10
- 0x4C140000, // 0045 LDNIL R5
- 0x1C100805, // 0046 EQ R4 R4 R5
- 0x78120002, // 0047 JMPF R4 #004B
- 0x88100116, // 0048 GETMBR R4 R0 K22
- 0x90021404, // 0049 SETMBR R0 K10 R4
- 0x500C0200, // 004A LDBOOL R3 1 0
- 0x780E0001, // 004B JMPF R3 #004E
- 0x8C100117, // 004C GETMET R4 R0 K23
- 0x7C100200, // 004D CALL R4 1
- 0x80000000, // 004E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: attribute_updated
-********************************************************************/
-be_local_closure(Matter_Device_attribute_updated, /* name */
- be_nested_proto(
- 10, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Path),
- /* K2 */ be_nested_str_weak(endpoint),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_nested_str_weak(message_handler),
- /* K6 */ be_nested_str_weak(im),
- /* K7 */ be_nested_str_weak(subs),
- /* K8 */ be_nested_str_weak(attribute_updated_ctx),
- }),
- be_str_weak(attribute_updated),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x1C140805, // 0001 EQ R5 R4 R5
- 0x78160000, // 0002 JMPF R5 #0004
- 0x50100000, // 0003 LDBOOL R4 0 0
- 0xB8160000, // 0004 GETNGBL R5 K0
- 0x8C140B01, // 0005 GETMET R5 R5 K1
- 0x7C140200, // 0006 CALL R5 1
- 0x90160401, // 0007 SETMBR R5 K2 R1
- 0x90160602, // 0008 SETMBR R5 K3 R2
- 0x90160803, // 0009 SETMBR R5 K4 R3
- 0x88180105, // 000A GETMBR R6 R0 K5
- 0x88180D06, // 000B GETMBR R6 R6 K6
- 0x88180D07, // 000C GETMBR R6 R6 K7
- 0x8C180D08, // 000D GETMET R6 R6 K8
- 0x5C200A00, // 000E MOVE R8 R5
- 0x5C240800, // 000F MOVE R9 R4
- 0x7C180600, // 0010 CALL R6 3
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_announce_PASE
-********************************************************************/
-be_local_closure(Matter_Device_mdns_announce_PASE, /* name */
- be_nested_proto(
- 15, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[41]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(VP),
- /* K3 */ be_nested_str_weak(vendorid),
- /* K4 */ be_nested_str_weak(_X2B),
- /* K5 */ be_nested_str_weak(productid),
- /* K6 */ be_nested_str_weak(D),
- /* K7 */ be_nested_str_weak(commissioning_discriminator),
- /* K8 */ be_nested_str_weak(CM),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(T),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(SII),
- /* K13 */ be_nested_str_weak(SAI),
- /* K14 */ be_nested_str_weak(hostname_eth),
- /* K15 */ be_nested_str_weak(tasmota),
- /* K16 */ be_nested_str_weak(log),
- /* K17 */ be_nested_str_weak(format),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25i_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
- /* K19 */ be_nested_str_weak(_matterc),
- /* K20 */ be_nested_str_weak(_udp),
- /* K21 */ be_nested_str_weak(commissioning_instance_eth),
- /* K22 */ be_const_int(3),
- /* K23 */ be_nested_str_weak(add_service),
- /* K24 */ be_nested_str_weak(mdns_pase_eth),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K26 */ be_nested_str_weak(eth),
- /* K27 */ be_const_int(2),
- /* K28 */ be_nested_str_weak(_L),
- /* K29 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
- /* K30 */ be_nested_str_weak(add_subtype),
- /* K31 */ be_nested_str_weak(_S),
- /* K32 */ be_nested_str_weak(_V),
- /* K33 */ be_nested_str_weak(_CM1),
- /* K34 */ be_nested_str_weak(hostname_wifi),
- /* K35 */ be_nested_str_weak(commissioning_instance_wifi),
- /* K36 */ be_nested_str_weak(mdns_pase_wifi),
- /* K37 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K38 */ be_nested_str_weak(wifi),
- /* K39 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K40 */ be_nested_str_weak(_X7C),
- }),
- be_str_weak(mdns_announce_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[254]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x600C0013, // 0002 GETGBL R3 G19
- 0x7C0C0000, // 0003 CALL R3 0
- 0x60100008, // 0004 GETGBL R4 G8
- 0x88140103, // 0005 GETMBR R5 R0 K3
- 0x7C100200, // 0006 CALL R4 1
- 0x00100904, // 0007 ADD R4 R4 K4
- 0x60140008, // 0008 GETGBL R5 G8
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x7C140200, // 000A CALL R5 1
- 0x00100805, // 000B ADD R4 R4 R5
- 0x980E0404, // 000C SETIDX R3 K2 R4
- 0x88100107, // 000D GETMBR R4 R0 K7
- 0x980E0C04, // 000E SETIDX R3 K6 R4
- 0x980E1109, // 000F SETIDX R3 K8 K9
- 0x980E150B, // 0010 SETIDX R3 K10 K11
- 0x54121387, // 0011 LDINT R4 5000
- 0x980E1804, // 0012 SETIDX R3 K12 R4
- 0x5412012B, // 0013 LDINT R4 300
- 0x980E1A04, // 0014 SETIDX R3 K13 R4
- 0xA80200D5, // 0015 EXBLK 0 #00EC
- 0x8810010E, // 0016 GETMBR R4 R0 K14
- 0x78120067, // 0017 JMPF R4 #0080
- 0xB8121E00, // 0018 GETNGBL R4 K15
- 0x8C100910, // 0019 GETMET R4 R4 K16
- 0x8C180511, // 001A GETMET R6 R2 K17
- 0x58200012, // 001B LDCONST R8 K18
- 0x58240013, // 001C LDCONST R9 K19
- 0x58280014, // 001D LDCONST R10 K20
- 0x542E15A3, // 001E LDINT R11 5540
- 0x60300008, // 001F GETGBL R12 G8
- 0x5C340600, // 0020 MOVE R13 R3
- 0x7C300200, // 0021 CALL R12 1
- 0x88340115, // 0022 GETMBR R13 R0 K21
- 0x8838010E, // 0023 GETMBR R14 R0 K14
- 0x7C181000, // 0024 CALL R6 8
- 0x581C0016, // 0025 LDCONST R7 K22
- 0x7C100600, // 0026 CALL R4 3
- 0x8C100317, // 0027 GETMET R4 R1 K23
- 0x58180013, // 0028 LDCONST R6 K19
- 0x581C0014, // 0029 LDCONST R7 K20
- 0x542215A3, // 002A LDINT R8 5540
- 0x5C240600, // 002B MOVE R9 R3
- 0x88280115, // 002C GETMBR R10 R0 K21
- 0x882C010E, // 002D GETMBR R11 R0 K14
- 0x7C100E00, // 002E CALL R4 7
- 0x50100200, // 002F LDBOOL R4 1 0
- 0x90023004, // 0030 SETMBR R0 K24 R4
- 0xB8121E00, // 0031 GETNGBL R4 K15
- 0x8C100910, // 0032 GETMET R4 R4 K16
- 0x8C180511, // 0033 GETMET R6 R2 K17
- 0x58200019, // 0034 LDCONST R8 K25
- 0x5824001A, // 0035 LDCONST R9 K26
- 0x88280115, // 0036 GETMBR R10 R0 K21
- 0x882C010E, // 0037 GETMBR R11 R0 K14
- 0x7C180A00, // 0038 CALL R6 5
- 0x581C001B, // 0039 LDCONST R7 K27
- 0x7C100600, // 003A CALL R4 3
- 0x60100008, // 003B GETGBL R4 G8
- 0x88140107, // 003C GETMBR R5 R0 K7
- 0x541A0FFE, // 003D LDINT R6 4095
- 0x2C140A06, // 003E AND R5 R5 R6
- 0x7C100200, // 003F CALL R4 1
- 0x00123804, // 0040 ADD R4 K28 R4
- 0xB8161E00, // 0041 GETNGBL R5 K15
- 0x8C140B10, // 0042 GETMET R5 R5 K16
- 0x001E3A04, // 0043 ADD R7 K29 R4
- 0x5820001B, // 0044 LDCONST R8 K27
- 0x7C140600, // 0045 CALL R5 3
- 0x8C14031E, // 0046 GETMET R5 R1 K30
- 0x581C0013, // 0047 LDCONST R7 K19
- 0x58200014, // 0048 LDCONST R8 K20
- 0x88240115, // 0049 GETMBR R9 R0 K21
- 0x8828010E, // 004A GETMBR R10 R0 K14
- 0x5C2C0800, // 004B MOVE R11 R4
- 0x7C140C00, // 004C CALL R5 6
- 0x60140008, // 004D GETGBL R5 G8
- 0x88180107, // 004E GETMBR R6 R0 K7
- 0x541E0EFF, // 004F LDINT R7 3840
- 0x2C180C07, // 0050 AND R6 R6 R7
- 0x541E0007, // 0051 LDINT R7 8
- 0x3C180C07, // 0052 SHR R6 R6 R7
- 0x7C140200, // 0053 CALL R5 1
- 0x00163E05, // 0054 ADD R5 K31 R5
- 0x5C100A00, // 0055 MOVE R4 R5
- 0xB8161E00, // 0056 GETNGBL R5 K15
- 0x8C140B10, // 0057 GETMET R5 R5 K16
- 0x001E3A04, // 0058 ADD R7 K29 R4
- 0x5820001B, // 0059 LDCONST R8 K27
- 0x7C140600, // 005A CALL R5 3
- 0x8C14031E, // 005B GETMET R5 R1 K30
- 0x581C0013, // 005C LDCONST R7 K19
- 0x58200014, // 005D LDCONST R8 K20
- 0x88240115, // 005E GETMBR R9 R0 K21
- 0x8828010E, // 005F GETMBR R10 R0 K14
- 0x5C2C0800, // 0060 MOVE R11 R4
- 0x7C140C00, // 0061 CALL R5 6
- 0x60140008, // 0062 GETGBL R5 G8
- 0x88180103, // 0063 GETMBR R6 R0 K3
- 0x7C140200, // 0064 CALL R5 1
- 0x00164005, // 0065 ADD R5 K32 R5
- 0x5C100A00, // 0066 MOVE R4 R5
- 0xB8161E00, // 0067 GETNGBL R5 K15
- 0x8C140B10, // 0068 GETMET R5 R5 K16
- 0x001E3A04, // 0069 ADD R7 K29 R4
- 0x5820001B, // 006A LDCONST R8 K27
- 0x7C140600, // 006B CALL R5 3
- 0x8C14031E, // 006C GETMET R5 R1 K30
- 0x581C0013, // 006D LDCONST R7 K19
- 0x58200014, // 006E LDCONST R8 K20
- 0x88240115, // 006F GETMBR R9 R0 K21
- 0x8828010E, // 0070 GETMBR R10 R0 K14
- 0x5C2C0800, // 0071 MOVE R11 R4
- 0x7C140C00, // 0072 CALL R5 6
- 0x58100021, // 0073 LDCONST R4 K33
- 0xB8161E00, // 0074 GETNGBL R5 K15
- 0x8C140B10, // 0075 GETMET R5 R5 K16
- 0x001E3A04, // 0076 ADD R7 K29 R4
- 0x5820001B, // 0077 LDCONST R8 K27
- 0x7C140600, // 0078 CALL R5 3
- 0x8C14031E, // 0079 GETMET R5 R1 K30
- 0x581C0013, // 007A LDCONST R7 K19
- 0x58200014, // 007B LDCONST R8 K20
- 0x88240115, // 007C GETMBR R9 R0 K21
- 0x8828010E, // 007D GETMBR R10 R0 K14
- 0x5C2C0800, // 007E MOVE R11 R4
- 0x7C140C00, // 007F CALL R5 6
- 0x88100122, // 0080 GETMBR R4 R0 K34
- 0x78120067, // 0081 JMPF R4 #00EA
- 0xB8121E00, // 0082 GETNGBL R4 K15
- 0x8C100910, // 0083 GETMET R4 R4 K16
- 0x8C180511, // 0084 GETMET R6 R2 K17
- 0x58200012, // 0085 LDCONST R8 K18
- 0x58240013, // 0086 LDCONST R9 K19
- 0x58280014, // 0087 LDCONST R10 K20
- 0x542E15A3, // 0088 LDINT R11 5540
- 0x60300008, // 0089 GETGBL R12 G8
- 0x5C340600, // 008A MOVE R13 R3
- 0x7C300200, // 008B CALL R12 1
- 0x88340123, // 008C GETMBR R13 R0 K35
- 0x88380122, // 008D GETMBR R14 R0 K34
- 0x7C181000, // 008E CALL R6 8
- 0x581C0016, // 008F LDCONST R7 K22
- 0x7C100600, // 0090 CALL R4 3
- 0x8C100317, // 0091 GETMET R4 R1 K23
- 0x58180013, // 0092 LDCONST R6 K19
- 0x581C0014, // 0093 LDCONST R7 K20
- 0x542215A3, // 0094 LDINT R8 5540
- 0x5C240600, // 0095 MOVE R9 R3
- 0x88280123, // 0096 GETMBR R10 R0 K35
- 0x882C0122, // 0097 GETMBR R11 R0 K34
- 0x7C100E00, // 0098 CALL R4 7
- 0x50100200, // 0099 LDBOOL R4 1 0
- 0x90024804, // 009A SETMBR R0 K36 R4
- 0xB8121E00, // 009B GETNGBL R4 K15
- 0x8C100910, // 009C GETMET R4 R4 K16
- 0x8C180511, // 009D GETMET R6 R2 K17
- 0x58200025, // 009E LDCONST R8 K37
- 0x58240026, // 009F LDCONST R9 K38
- 0x88280123, // 00A0 GETMBR R10 R0 K35
- 0x882C0122, // 00A1 GETMBR R11 R0 K34
- 0x7C180A00, // 00A2 CALL R6 5
- 0x581C001B, // 00A3 LDCONST R7 K27
- 0x7C100600, // 00A4 CALL R4 3
- 0x60100008, // 00A5 GETGBL R4 G8
- 0x88140107, // 00A6 GETMBR R5 R0 K7
- 0x541A0FFE, // 00A7 LDINT R6 4095
- 0x2C140A06, // 00A8 AND R5 R5 R6
- 0x7C100200, // 00A9 CALL R4 1
- 0x00123804, // 00AA ADD R4 K28 R4
- 0xB8161E00, // 00AB GETNGBL R5 K15
- 0x8C140B10, // 00AC GETMET R5 R5 K16
- 0x001E3A04, // 00AD ADD R7 K29 R4
- 0x5820001B, // 00AE LDCONST R8 K27
- 0x7C140600, // 00AF CALL R5 3
- 0x8C14031E, // 00B0 GETMET R5 R1 K30
- 0x581C0013, // 00B1 LDCONST R7 K19
- 0x58200014, // 00B2 LDCONST R8 K20
- 0x88240123, // 00B3 GETMBR R9 R0 K35
- 0x88280122, // 00B4 GETMBR R10 R0 K34
- 0x5C2C0800, // 00B5 MOVE R11 R4
- 0x7C140C00, // 00B6 CALL R5 6
- 0x60140008, // 00B7 GETGBL R5 G8
- 0x88180107, // 00B8 GETMBR R6 R0 K7
- 0x541E0EFF, // 00B9 LDINT R7 3840
- 0x2C180C07, // 00BA AND R6 R6 R7
- 0x541E0007, // 00BB LDINT R7 8
- 0x3C180C07, // 00BC SHR R6 R6 R7
- 0x7C140200, // 00BD CALL R5 1
- 0x00163E05, // 00BE ADD R5 K31 R5
- 0x5C100A00, // 00BF MOVE R4 R5
- 0xB8161E00, // 00C0 GETNGBL R5 K15
- 0x8C140B10, // 00C1 GETMET R5 R5 K16
- 0x001E3A04, // 00C2 ADD R7 K29 R4
- 0x5820001B, // 00C3 LDCONST R8 K27
- 0x7C140600, // 00C4 CALL R5 3
- 0x8C14031E, // 00C5 GETMET R5 R1 K30
- 0x581C0013, // 00C6 LDCONST R7 K19
- 0x58200014, // 00C7 LDCONST R8 K20
- 0x88240123, // 00C8 GETMBR R9 R0 K35
- 0x88280122, // 00C9 GETMBR R10 R0 K34
- 0x5C2C0800, // 00CA MOVE R11 R4
- 0x7C140C00, // 00CB CALL R5 6
- 0x60140008, // 00CC GETGBL R5 G8
- 0x88180103, // 00CD GETMBR R6 R0 K3
- 0x7C140200, // 00CE CALL R5 1
- 0x00164005, // 00CF ADD R5 K32 R5
- 0x5C100A00, // 00D0 MOVE R4 R5
- 0xB8161E00, // 00D1 GETNGBL R5 K15
- 0x8C140B10, // 00D2 GETMET R5 R5 K16
- 0x001E3A04, // 00D3 ADD R7 K29 R4
- 0x5820001B, // 00D4 LDCONST R8 K27
- 0x7C140600, // 00D5 CALL R5 3
- 0x8C14031E, // 00D6 GETMET R5 R1 K30
- 0x581C0013, // 00D7 LDCONST R7 K19
- 0x58200014, // 00D8 LDCONST R8 K20
- 0x88240123, // 00D9 GETMBR R9 R0 K35
- 0x88280122, // 00DA GETMBR R10 R0 K34
- 0x5C2C0800, // 00DB MOVE R11 R4
- 0x7C140C00, // 00DC CALL R5 6
- 0x58100021, // 00DD LDCONST R4 K33
- 0xB8161E00, // 00DE GETNGBL R5 K15
- 0x8C140B10, // 00DF GETMET R5 R5 K16
- 0x001E3A04, // 00E0 ADD R7 K29 R4
- 0x5820001B, // 00E1 LDCONST R8 K27
- 0x7C140600, // 00E2 CALL R5 3
- 0x8C14031E, // 00E3 GETMET R5 R1 K30
- 0x581C0013, // 00E4 LDCONST R7 K19
- 0x58200014, // 00E5 LDCONST R8 K20
- 0x88240123, // 00E6 GETMBR R9 R0 K35
- 0x88280122, // 00E7 GETMBR R10 R0 K34
- 0x5C2C0800, // 00E8 MOVE R11 R4
- 0x7C140C00, // 00E9 CALL R5 6
- 0xA8040001, // 00EA EXBLK 1 1
- 0x70020010, // 00EB JMP #00FD
- 0xAC100002, // 00EC CATCH R4 0 2
- 0x7002000D, // 00ED JMP #00FC
- 0xB81A1E00, // 00EE GETNGBL R6 K15
- 0x8C180D10, // 00EF GETMET R6 R6 K16
- 0x60200008, // 00F0 GETGBL R8 G8
- 0x5C240800, // 00F1 MOVE R9 R4
- 0x7C200200, // 00F2 CALL R8 1
- 0x00224E08, // 00F3 ADD R8 K39 R8
- 0x00201128, // 00F4 ADD R8 R8 K40
- 0x60240008, // 00F5 GETGBL R9 G8
- 0x5C280A00, // 00F6 MOVE R10 R5
- 0x7C240200, // 00F7 CALL R9 1
- 0x00201009, // 00F8 ADD R8 R8 R9
- 0x5824001B, // 00F9 LDCONST R9 K27
- 0x7C180600, // 00FA CALL R6 3
- 0x70020000, // 00FB JMP #00FD
- 0xB0080000, // 00FC RAISE 2 R0 R0
- 0x80000000, // 00FD RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_commissioning_complete
-********************************************************************/
-be_local_closure(Matter_Device_start_commissioning_complete, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20Commissioning_X20complete_X20_X2A_X2A_X2A),
- /* K3 */ be_const_int(2),
- /* K4 */ be_nested_str_weak(stop_basic_commissioning),
- }),
- be_str_weak(start_commissioning_complete),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x58100002, // 0002 LDCONST R4 K2
- 0x58140003, // 0003 LDCONST R5 K3
- 0x7C080600, // 0004 CALL R2 3
- 0x8C080104, // 0005 GETMET R2 R0 K4
- 0x7C080200, // 0006 CALL R2 1
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: msg_send
-********************************************************************/
-be_local_closure(Matter_Device_msg_send, /* name */
- be_nested_proto(
- 11, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(send_response),
- }),
- be_str_weak(msg_send),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88140100, // 0000 GETMBR R5 R0 K0
- 0x8C140B01, // 0001 GETMET R5 R5 K1
- 0x5C1C0200, // 0002 MOVE R7 R1
- 0x5C200400, // 0003 MOVE R8 R2
- 0x5C240600, // 0004 MOVE R9 R3
- 0x5C280800, // 0005 MOVE R10 R4
- 0x7C140A00, // 0006 CALL R5 5
- 0x80040A00, // 0007 RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_announce_op_discovery
-********************************************************************/
-be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */
- be_nested_proto(
- 15, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[29]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(get_device_id),
- /* K3 */ be_nested_str_weak(copy),
- /* K4 */ be_nested_str_weak(reverse),
- /* K5 */ be_nested_str_weak(get_fabric_compressed),
- /* K6 */ be_nested_str_weak(tohex),
- /* K7 */ be_nested_str_weak(_X2D),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(eth),
- /* K13 */ be_nested_str_weak(find),
- /* K14 */ be_nested_str_weak(up),
- /* K15 */ be_nested_str_weak(format),
- /* K16 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K17 */ be_nested_str_weak(hostname_eth),
- /* K18 */ be_const_int(3),
- /* K19 */ be_nested_str_weak(add_service),
- /* K20 */ be_nested_str_weak(_matter),
- /* K21 */ be_nested_str_weak(_tcp),
- /* K22 */ be_nested_str_weak(_I),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
- /* K24 */ be_nested_str_weak(add_subtype),
- /* K25 */ be_nested_str_weak(wifi),
- /* K26 */ be_nested_str_weak(hostname_wifi),
- /* K27 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K28 */ be_nested_str_weak(_X7C),
- }),
- be_str_weak(mdns_announce_op_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[122]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0xA8020064, // 0002 EXBLK 0 #0068
- 0x8C100302, // 0003 GETMET R4 R1 K2
- 0x7C100200, // 0004 CALL R4 1
- 0x8C100903, // 0005 GETMET R4 R4 K3
- 0x7C100200, // 0006 CALL R4 1
- 0x8C100904, // 0007 GETMET R4 R4 K4
- 0x7C100200, // 0008 CALL R4 1
- 0x8C140305, // 0009 GETMET R5 R1 K5
- 0x7C140200, // 000A CALL R5 1
- 0x8C180B06, // 000B GETMET R6 R5 K6
- 0x7C180200, // 000C CALL R6 1
- 0x00180D07, // 000D ADD R6 R6 K7
- 0x8C1C0906, // 000E GETMET R7 R4 K6
- 0x7C1C0200, // 000F CALL R7 1
- 0x00180C07, // 0010 ADD R6 R6 R7
- 0xB81E1000, // 0011 GETNGBL R7 K8
- 0x8C1C0F09, // 0012 GETMET R7 R7 K9
- 0x00261406, // 0013 ADD R9 K10 R6
- 0x5828000B, // 0014 LDCONST R10 K11
- 0x7C1C0600, // 0015 CALL R7 3
- 0xB81E1000, // 0016 GETNGBL R7 K8
- 0x8C1C0F0C, // 0017 GETMET R7 R7 K12
- 0x7C1C0200, // 0018 CALL R7 1
- 0x8C1C0F0D, // 0019 GETMET R7 R7 K13
- 0x5824000E, // 001A LDCONST R9 K14
- 0x7C1C0400, // 001B CALL R7 2
- 0x781E0020, // 001C JMPF R7 #003E
- 0xB81E1000, // 001D GETNGBL R7 K8
- 0x8C1C0F09, // 001E GETMET R7 R7 K9
- 0x8C24070F, // 001F GETMET R9 R3 K15
- 0x582C0010, // 0020 LDCONST R11 K16
- 0x5830000C, // 0021 LDCONST R12 K12
- 0x5C340C00, // 0022 MOVE R13 R6
- 0x88380111, // 0023 GETMBR R14 R0 K17
- 0x7C240A00, // 0024 CALL R9 5
- 0x58280012, // 0025 LDCONST R10 K18
- 0x7C1C0600, // 0026 CALL R7 3
- 0x8C1C0513, // 0027 GETMET R7 R2 K19
- 0x58240014, // 0028 LDCONST R9 K20
- 0x58280015, // 0029 LDCONST R10 K21
- 0x542E15A3, // 002A LDINT R11 5540
- 0x4C300000, // 002B LDNIL R12
- 0x5C340C00, // 002C MOVE R13 R6
- 0x88380111, // 002D GETMBR R14 R0 K17
- 0x7C1C0E00, // 002E CALL R7 7
- 0x8C1C0B06, // 002F GETMET R7 R5 K6
- 0x7C1C0200, // 0030 CALL R7 1
- 0x001E2C07, // 0031 ADD R7 K22 R7
- 0xB8221000, // 0032 GETNGBL R8 K8
- 0x8C201109, // 0033 GETMET R8 R8 K9
- 0x002A2E07, // 0034 ADD R10 K23 R7
- 0x582C0012, // 0035 LDCONST R11 K18
- 0x7C200600, // 0036 CALL R8 3
- 0x8C200518, // 0037 GETMET R8 R2 K24
- 0x58280014, // 0038 LDCONST R10 K20
- 0x582C0015, // 0039 LDCONST R11 K21
- 0x5C300C00, // 003A MOVE R12 R6
- 0x88340111, // 003B GETMBR R13 R0 K17
- 0x5C380E00, // 003C MOVE R14 R7
- 0x7C200C00, // 003D CALL R8 6
- 0xB81E1000, // 003E GETNGBL R7 K8
- 0x8C1C0F19, // 003F GETMET R7 R7 K25
- 0x7C1C0200, // 0040 CALL R7 1
- 0x8C1C0F0D, // 0041 GETMET R7 R7 K13
- 0x5824000E, // 0042 LDCONST R9 K14
- 0x7C1C0400, // 0043 CALL R7 2
- 0x781E0020, // 0044 JMPF R7 #0066
- 0xB81E1000, // 0045 GETNGBL R7 K8
- 0x8C1C0F09, // 0046 GETMET R7 R7 K9
- 0x8C24070F, // 0047 GETMET R9 R3 K15
- 0x582C0010, // 0048 LDCONST R11 K16
- 0x58300019, // 0049 LDCONST R12 K25
- 0x5C340C00, // 004A MOVE R13 R6
- 0x8838011A, // 004B GETMBR R14 R0 K26
- 0x7C240A00, // 004C CALL R9 5
- 0x58280012, // 004D LDCONST R10 K18
- 0x7C1C0600, // 004E CALL R7 3
- 0x8C1C0513, // 004F GETMET R7 R2 K19
- 0x58240014, // 0050 LDCONST R9 K20
- 0x58280015, // 0051 LDCONST R10 K21
- 0x542E15A3, // 0052 LDINT R11 5540
- 0x4C300000, // 0053 LDNIL R12
- 0x5C340C00, // 0054 MOVE R13 R6
- 0x8838011A, // 0055 GETMBR R14 R0 K26
- 0x7C1C0E00, // 0056 CALL R7 7
- 0x8C1C0B06, // 0057 GETMET R7 R5 K6
- 0x7C1C0200, // 0058 CALL R7 1
- 0x001E2C07, // 0059 ADD R7 K22 R7
- 0xB8221000, // 005A GETNGBL R8 K8
- 0x8C201109, // 005B GETMET R8 R8 K9
- 0x002A2E07, // 005C ADD R10 K23 R7
- 0x582C0012, // 005D LDCONST R11 K18
- 0x7C200600, // 005E CALL R8 3
- 0x8C200518, // 005F GETMET R8 R2 K24
- 0x58280014, // 0060 LDCONST R10 K20
- 0x582C0015, // 0061 LDCONST R11 K21
- 0x5C300C00, // 0062 MOVE R12 R6
- 0x8834011A, // 0063 GETMBR R13 R0 K26
- 0x5C380E00, // 0064 MOVE R14 R7
- 0x7C200C00, // 0065 CALL R8 6
- 0xA8040001, // 0066 EXBLK 1 1
- 0x70020010, // 0067 JMP #0079
- 0xAC100002, // 0068 CATCH R4 0 2
- 0x7002000D, // 0069 JMP #0078
- 0xB81A1000, // 006A GETNGBL R6 K8
- 0x8C180D09, // 006B GETMET R6 R6 K9
- 0x60200008, // 006C GETGBL R8 G8
- 0x5C240800, // 006D MOVE R9 R4
- 0x7C200200, // 006E CALL R8 1
- 0x00223608, // 006F ADD R8 K27 R8
- 0x0020111C, // 0070 ADD R8 R8 K28
- 0x60240008, // 0071 GETGBL R9 G8
- 0x5C280A00, // 0072 MOVE R10 R5
- 0x7C240200, // 0073 CALL R9 1
- 0x00201009, // 0074 ADD R8 R8 R9
- 0x5824000B, // 0075 LDCONST R9 K11
- 0x7C180600, // 0076 CALL R6 3
- 0x70020000, // 0077 JMP #0079
- 0xB0080000, // 0078 RAISE 2 R0 R0
- 0x80000000, // 0079 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_second
-********************************************************************/
-be_local_closure(Matter_Device_every_second, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(every_second),
- /* K2 */ be_nested_str_weak(message_handler),
- /* K3 */ be_nested_str_weak(commissioning_open),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(time_reached),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(plugins),
- /* K8 */ be_const_int(1),
- }),
- be_str_weak(every_second),
- &be_const_str_solidified,
- ( &(const binstruction[30]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x88040102, // 0003 GETMBR R1 R0 K2
- 0x8C040301, // 0004 GETMET R1 R1 K1
- 0x7C040200, // 0005 CALL R1 1
- 0x88040103, // 0006 GETMBR R1 R0 K3
- 0x4C080000, // 0007 LDNIL R2
- 0x20040202, // 0008 NE R1 R1 R2
- 0x78060006, // 0009 JMPF R1 #0011
- 0xB8060800, // 000A GETNGBL R1 K4
- 0x8C040305, // 000B GETMET R1 R1 K5
- 0x880C0103, // 000C GETMBR R3 R0 K3
- 0x7C040400, // 000D CALL R1 2
- 0x78060001, // 000E JMPF R1 #0011
- 0x4C040000, // 000F LDNIL R1
- 0x90020601, // 0010 SETMBR R0 K3 R1
- 0x58040006, // 0011 LDCONST R1 K6
- 0x6008000C, // 0012 GETGBL R2 G12
- 0x880C0107, // 0013 GETMBR R3 R0 K7
- 0x7C080200, // 0014 CALL R2 1
- 0x14080202, // 0015 LT R2 R1 R2
- 0x780A0005, // 0016 JMPF R2 #001D
- 0x88080107, // 0017 GETMBR R2 R0 K7
- 0x94080401, // 0018 GETIDX R2 R2 R1
- 0x8C080501, // 0019 GETMET R2 R2 K1
- 0x7C080200, // 001A CALL R2 1
- 0x00040308, // 001B ADD R1 R1 K8
- 0x7001FFF4, // 001C JMP #0012
- 0x80000000, // 001D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init_basic_commissioning
-********************************************************************/
-be_local_closure(Matter_Device_init_basic_commissioning, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(count_active_fabrics),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(start_root_basic_commissioning),
- }),
- be_str_weak(init_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x1C040302, // 0003 EQ R1 R1 K2
- 0x78060001, // 0004 JMPF R1 #0007
- 0x8C040103, // 0005 GETMET R1 R0 K3
- 0x7C040200, // 0006 CALL R1 1
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-be_local_closure(Matter_Device_invoke_request, /* name */
- be_nested_proto(
- 11, /* 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_const_int(0),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_nested_str_weak(invoke_request),
- /* K3 */ be_nested_str_weak(status),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
- /* K6 */ be_const_int(1),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x58100000, // 0000 LDCONST R4 K0
- 0x6014000C, // 0001 GETGBL R5 G12
- 0x88180101, // 0002 GETMBR R6 R0 K1
- 0x7C140200, // 0003 CALL R5 1
- 0x14140805, // 0004 LT R5 R4 R5
- 0x78160011, // 0005 JMPF R5 #0018
- 0x88140101, // 0006 GETMBR R5 R0 K1
- 0x94140A04, // 0007 GETIDX R5 R5 R4
- 0x8C180B02, // 0008 GETMET R6 R5 K2
- 0x5C200200, // 0009 MOVE R8 R1
- 0x5C240400, // 000A MOVE R9 R2
- 0x5C280600, // 000B MOVE R10 R3
- 0x7C180800, // 000C CALL R6 4
- 0x4C1C0000, // 000D LDNIL R7
- 0x201C0C07, // 000E NE R7 R6 R7
- 0x741E0004, // 000F JMPT R7 #0015
- 0x881C0703, // 0010 GETMBR R7 R3 K3
- 0xB8220800, // 0011 GETNGBL R8 K4
- 0x88201105, // 0012 GETMBR R8 R8 K5
- 0x201C0E08, // 0013 NE R7 R7 R8
- 0x781E0000, // 0014 JMPF R7 #0016
- 0x80040C00, // 0015 RET 1 R6
- 0x00100906, // 0016 ADD R4 R4 K6
- 0x7001FFE8, // 0017 JMP #0001
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_mdns_announce_hostnames
-********************************************************************/
-be_local_closure(Matter_Device_start_mdns_announce_hostnames, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Wifi_X23Connected),
- /* K4 */ be_nested_str_weak(matter_mdns_host),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x7C000400, // 0003 CALL R0 2
- 0xB8020200, // 0004 GETNGBL R0 K1
- 0x8C000102, // 0005 GETMET R0 R0 K2
- 0x58080003, // 0006 LDCONST R2 K3
- 0x580C0004, // 0007 LDCONST R3 K4
- 0x7C000600, // 0008 CALL R0 3
- 0x80000000, // 0009 RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Eth_X23Connected),
- /* K4 */ be_nested_str_weak(matter_mdns_host),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x50080200, // 0002 LDBOOL R2 1 0
- 0x7C000400, // 0003 CALL R0 2
- 0xB8020200, // 0004 GETNGBL R0 K1
- 0x8C000102, // 0005 GETMET R0 R0 K2
- 0x58080003, // 0006 LDCONST R2 K3
- 0x580C0004, // 0007 LDCONST R3 K4
- 0x7C000600, // 0008 CALL R0 3
- 0x80000000, // 0009 RET 0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(wifi),
- /* K2 */ be_nested_str_weak(up),
- /* K3 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K4 */ be_nested_str_weak(add_rule),
- /* K5 */ be_nested_str_weak(Wifi_X23Connected),
- /* K6 */ be_nested_str_weak(matter_mdns_host),
- /* K7 */ be_nested_str_weak(eth),
- /* K8 */ be_nested_str_weak(Eth_X23Connected),
- }),
- be_str_weak(start_mdns_announce_hostnames),
- &be_const_str_solidified,
- ( &(const binstruction[32]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x94040302, // 0003 GETIDX R1 R1 K2
- 0x78060003, // 0004 JMPF R1 #0009
- 0x8C040103, // 0005 GETMET R1 R0 K3
- 0x500C0000, // 0006 LDBOOL R3 0 0
- 0x7C040400, // 0007 CALL R1 2
- 0x70020005, // 0008 JMP #000F
- 0xB8060000, // 0009 GETNGBL R1 K0
- 0x8C040304, // 000A GETMET R1 R1 K4
- 0x580C0005, // 000B LDCONST R3 K5
- 0x84100000, // 000C CLOSURE R4 P0
- 0x58140006, // 000D LDCONST R5 K6
- 0x7C040800, // 000E CALL R1 4
- 0xB8060000, // 000F GETNGBL R1 K0
- 0x8C040307, // 0010 GETMET R1 R1 K7
- 0x7C040200, // 0011 CALL R1 1
- 0x94040302, // 0012 GETIDX R1 R1 K2
- 0x78060003, // 0013 JMPF R1 #0018
- 0x8C040103, // 0014 GETMET R1 R0 K3
- 0x500C0200, // 0015 LDBOOL R3 1 0
- 0x7C040400, // 0016 CALL R1 2
- 0x70020005, // 0017 JMP #001E
- 0xB8060000, // 0018 GETNGBL R1 K0
- 0x8C040304, // 0019 GETMET R1 R1 K4
- 0x580C0008, // 001A LDCONST R3 K8
- 0x84100001, // 001B CLOSURE R4 P1
- 0x58140006, // 001C LDCONST R5 K6
- 0x7C040800, // 001D CALL R1 4
- 0xA0000000, // 001E CLOSE R0
- 0x80000000, // 001F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_250ms
-********************************************************************/
-be_local_closure(Matter_Device_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(message_handler),
- /* K1 */ be_nested_str_weak(every_250ms),
- }),
- be_str_weak(every_250ms),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: msg_received
-********************************************************************/
-be_local_closure(Matter_Device_msg_received, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(msg_received),
- }),
- be_str_weak(msg_received),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
- 0x5C180200, // 0002 MOVE R6 R1
- 0x5C1C0400, // 0003 MOVE R7 R2
- 0x5C200600, // 0004 MOVE R8 R3
- 0x7C100800, // 0005 CALL R4 4
- 0x80040800, // 0006 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_attribute_expansion
-********************************************************************/
-be_local_closure(Matter_Device_process_attribute_expansion, /* name */
- be_nested_proto(
- 32, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(keys),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(stop_iteration),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(keys_sorted),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x60040012, // 0000 GETGBL R1 G18
- 0x7C040000, // 0001 CALL R1 0
- 0x60080010, // 0002 GETGBL R2 G16
- 0x8C0C0100, // 0003 GETMET R3 R0 K0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x7C080200, // 0005 CALL R2 1
- 0xA8020005, // 0006 EXBLK 0 #000D
- 0x5C0C0400, // 0007 MOVE R3 R2
- 0x7C0C0000, // 0008 CALL R3 0
- 0x8C100301, // 0009 GETMET R4 R1 K1
- 0x5C180600, // 000A MOVE R6 R3
- 0x7C100400, // 000B CALL R4 2
- 0x7001FFF9, // 000C JMP #0007
- 0x58080002, // 000D LDCONST R2 K2
- 0xAC080200, // 000E CATCH R2 1 0
- 0xB0080000, // 000F RAISE 2 R0 R0
- 0x60080010, // 0010 GETGBL R2 G16
- 0x600C000C, // 0011 GETGBL R3 G12
- 0x5C100200, // 0012 MOVE R4 R1
- 0x7C0C0200, // 0013 CALL R3 1
- 0x040C0703, // 0014 SUB R3 R3 K3
- 0x400E0603, // 0015 CONNECT R3 K3 R3
- 0x7C080200, // 0016 CALL R2 1
- 0xA8020010, // 0017 EXBLK 0 #0029
- 0x5C0C0400, // 0018 MOVE R3 R2
- 0x7C0C0000, // 0019 CALL R3 0
- 0x94100203, // 001A GETIDX R4 R1 R3
- 0x5C140600, // 001B MOVE R5 R3
- 0x24180B04, // 001C GT R6 R5 K4
- 0x781A0008, // 001D JMPF R6 #0027
- 0x04180B03, // 001E SUB R6 R5 K3
- 0x94180206, // 001F GETIDX R6 R1 R6
- 0x24180C04, // 0020 GT R6 R6 R4
- 0x781A0004, // 0021 JMPF R6 #0027
- 0x04180B03, // 0022 SUB R6 R5 K3
- 0x94180206, // 0023 GETIDX R6 R1 R6
- 0x98040A06, // 0024 SETIDX R1 R5 R6
- 0x04140B03, // 0025 SUB R5 R5 K3
- 0x7001FFF4, // 0026 JMP #001C
- 0x98040A04, // 0027 SETIDX R1 R5 R4
- 0x7001FFEE, // 0028 JMP #0018
- 0x58080002, // 0029 LDCONST R2 K2
- 0xAC080200, // 002A CATCH R2 1 0
- 0xB0080000, // 002B RAISE 2 R0 R0
- 0x80040200, // 002C RET 1 R1
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(log),
- /* K6 */ be_nested_str_weak(format),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20process_attribute_expansion_X20_X25s),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20endpoint_X3D_X25s_X20cluster_X3D_X25s_X20attribute_X3D_X25s),
- /* K9 */ be_nested_str_weak(plugins),
- /* K10 */ be_nested_str_weak(get_endpoints),
- /* K11 */ be_nested_str_weak(MTR_X3A_X20pi_X3D_X25s_X20ep_list_X3D_X25s),
- /* K12 */ be_nested_str_weak(contains),
- /* K13 */ be_nested_str_weak(get_cluster_list),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20pi_X3D_X25s_X20ep_X3D_X25s_X20cl_list_X3D_X25s),
- /* K15 */ be_nested_str_weak(get_attribute_list),
- /* K16 */ be_nested_str_weak(MTR_X3A_X20pi_X3D_X25s_X20ep_X3D_X25s_X20cl_X3D_X25s_X20at_list_X3D_X25s),
- /* K17 */ be_nested_str_weak(push),
- /* K18 */ be_nested_str_weak(stop_iteration),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20expansion_X20_X5B_X2502X_X5D_X2504X_X2F_X2504X),
- /* K20 */ be_const_int(3),
- /* K21 */ be_nested_str_weak(status),
- /* K22 */ be_nested_str_weak(matter),
- /* K23 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
- /* K24 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
- /* K25 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K26 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE),
- }),
- be_str_weak(process_attribute_expansion),
- &be_const_str_solidified,
- ( &(const binstruction[294]) { /* code */
- 0x840C0000, // 0000 CLOSURE R3 P0
- 0xA4120000, // 0001 IMPORT R4 K0
- 0x88140301, // 0002 GETMBR R5 R1 K1
- 0x50180000, // 0003 LDBOOL R6 0 0
- 0x881C0302, // 0004 GETMBR R7 R1 K2
- 0x50200000, // 0005 LDBOOL R8 0 0
- 0x88240303, // 0006 GETMBR R9 R1 K3
- 0x50280000, // 0007 LDBOOL R10 0 0
- 0x882C0301, // 0008 GETMBR R11 R1 K1
- 0x4C300000, // 0009 LDNIL R12
- 0x202C160C, // 000A NE R11 R11 R12
- 0x782E0007, // 000B JMPF R11 #0014
- 0x882C0302, // 000C GETMBR R11 R1 K2
- 0x4C300000, // 000D LDNIL R12
- 0x202C160C, // 000E NE R11 R11 R12
- 0x782E0003, // 000F JMPF R11 #0014
- 0x882C0303, // 0010 GETMBR R11 R1 K3
- 0x4C300000, // 0011 LDNIL R12
- 0x202C160C, // 0012 NE R11 R11 R12
- 0x742E0000, // 0013 JMPT R11 #0015
- 0x502C0001, // 0014 LDBOOL R11 0 1
- 0x502C0200, // 0015 LDBOOL R11 1 0
- 0xB8320800, // 0016 GETNGBL R12 K4
- 0x8C301905, // 0017 GETMET R12 R12 K5
- 0x8C380906, // 0018 GETMET R14 R4 K6
- 0x58400007, // 0019 LDCONST R16 K7
- 0x60440008, // 001A GETGBL R17 G8
- 0x5C480200, // 001B MOVE R18 R1
- 0x7C440200, // 001C CALL R17 1
- 0x7C380600, // 001D CALL R14 3
- 0x543E0003, // 001E LDINT R15 4
- 0x7C300600, // 001F CALL R12 3
- 0x60300013, // 0020 GETGBL R12 G19
- 0x7C300000, // 0021 CALL R12 0
- 0xB8360800, // 0022 GETNGBL R13 K4
- 0x8C341B05, // 0023 GETMET R13 R13 K5
- 0x8C3C0906, // 0024 GETMET R15 R4 K6
- 0x58440008, // 0025 LDCONST R17 K8
- 0x5C480A00, // 0026 MOVE R18 R5
- 0x5C4C0E00, // 0027 MOVE R19 R7
- 0x5C501200, // 0028 MOVE R20 R9
- 0x7C3C0A00, // 0029 CALL R15 5
- 0x54420003, // 002A LDINT R16 4
- 0x7C340600, // 002B CALL R13 3
- 0x60340010, // 002C GETGBL R13 G16
- 0x88380109, // 002D GETMBR R14 R0 K9
- 0x7C340200, // 002E CALL R13 1
- 0xA802008F, // 002F EXBLK 0 #00C0
- 0x5C381A00, // 0030 MOVE R14 R13
- 0x7C380000, // 0031 CALL R14 0
- 0x8C3C1D0A, // 0032 GETMET R15 R14 K10
- 0x7C3C0200, // 0033 CALL R15 1
- 0xB8420800, // 0034 GETNGBL R16 K4
- 0x8C402105, // 0035 GETMET R16 R16 K5
- 0x8C480906, // 0036 GETMET R18 R4 K6
- 0x5850000B, // 0037 LDCONST R20 K11
- 0x60540008, // 0038 GETGBL R21 G8
- 0x5C581C00, // 0039 MOVE R22 R14
- 0x7C540200, // 003A CALL R21 1
- 0x60580008, // 003B GETGBL R22 G8
- 0x5C5C1E00, // 003C MOVE R23 R15
- 0x7C580200, // 003D CALL R22 1
- 0x7C480800, // 003E CALL R18 4
- 0x544E0003, // 003F LDINT R19 4
- 0x7C400600, // 0040 CALL R16 3
- 0x60400010, // 0041 GETGBL R16 G16
- 0x5C441E00, // 0042 MOVE R17 R15
- 0x7C400200, // 0043 CALL R16 1
- 0xA8020076, // 0044 EXBLK 0 #00BC
- 0x5C442000, // 0045 MOVE R17 R16
- 0x7C440000, // 0046 CALL R17 0
- 0x4C480000, // 0047 LDNIL R18
- 0x20480A12, // 0048 NE R18 R5 R18
- 0x784A0002, // 0049 JMPF R18 #004D
- 0x20482205, // 004A NE R18 R17 R5
- 0x784A0000, // 004B JMPF R18 #004D
- 0x7001FFF7, // 004C JMP #0045
- 0x8C48190C, // 004D GETMET R18 R12 K12
- 0x5C502200, // 004E MOVE R20 R17
- 0x7C480400, // 004F CALL R18 2
- 0x744A0002, // 0050 JMPT R18 #0054
- 0x60480013, // 0051 GETGBL R18 G19
- 0x7C480000, // 0052 CALL R18 0
- 0x98302212, // 0053 SETIDX R12 R17 R18
- 0x50180200, // 0054 LDBOOL R6 1 0
- 0x8C481D0D, // 0055 GETMET R18 R14 K13
- 0x5C502200, // 0056 MOVE R20 R17
- 0x7C480400, // 0057 CALL R18 2
- 0xB84E0800, // 0058 GETNGBL R19 K4
- 0x8C4C2705, // 0059 GETMET R19 R19 K5
- 0x8C540906, // 005A GETMET R21 R4 K6
- 0x585C000E, // 005B LDCONST R23 K14
- 0x60600008, // 005C GETGBL R24 G8
- 0x5C641C00, // 005D MOVE R25 R14
- 0x7C600200, // 005E CALL R24 1
- 0x60640008, // 005F GETGBL R25 G8
- 0x5C682200, // 0060 MOVE R26 R17
- 0x7C640200, // 0061 CALL R25 1
- 0x60680008, // 0062 GETGBL R26 G8
- 0x5C6C2400, // 0063 MOVE R27 R18
- 0x7C680200, // 0064 CALL R26 1
- 0x7C540A00, // 0065 CALL R21 5
- 0x545A0003, // 0066 LDINT R22 4
- 0x7C4C0600, // 0067 CALL R19 3
- 0x604C0010, // 0068 GETGBL R19 G16
- 0x5C502400, // 0069 MOVE R20 R18
- 0x7C4C0200, // 006A CALL R19 1
- 0xA802004B, // 006B EXBLK 0 #00B8
- 0x5C502600, // 006C MOVE R20 R19
- 0x7C500000, // 006D CALL R20 0
- 0x4C540000, // 006E LDNIL R21
- 0x20540E15, // 006F NE R21 R7 R21
- 0x78560002, // 0070 JMPF R21 #0074
- 0x20542807, // 0071 NE R21 R20 R7
- 0x78560000, // 0072 JMPF R21 #0074
- 0x7001FFF7, // 0073 JMP #006C
- 0x94541811, // 0074 GETIDX R21 R12 R17
- 0x8C542B0C, // 0075 GETMET R21 R21 K12
- 0x5C5C2800, // 0076 MOVE R23 R20
- 0x7C540400, // 0077 CALL R21 2
- 0x74560003, // 0078 JMPT R21 #007D
- 0x94541811, // 0079 GETIDX R21 R12 R17
- 0x60580013, // 007A GETGBL R22 G19
- 0x7C580000, // 007B CALL R22 0
- 0x98542816, // 007C SETIDX R21 R20 R22
- 0x50200200, // 007D LDBOOL R8 1 0
- 0x8C541D0F, // 007E GETMET R21 R14 K15
- 0x5C5C2200, // 007F MOVE R23 R17
- 0x5C602800, // 0080 MOVE R24 R20
- 0x7C540600, // 0081 CALL R21 3
- 0xB85A0800, // 0082 GETNGBL R22 K4
- 0x8C582D05, // 0083 GETMET R22 R22 K5
- 0x8C600906, // 0084 GETMET R24 R4 K6
- 0x58680010, // 0085 LDCONST R26 K16
- 0x606C0008, // 0086 GETGBL R27 G8
- 0x5C701C00, // 0087 MOVE R28 R14
- 0x7C6C0200, // 0088 CALL R27 1
- 0x60700008, // 0089 GETGBL R28 G8
- 0x5C742200, // 008A MOVE R29 R17
- 0x7C700200, // 008B CALL R28 1
- 0x60740008, // 008C GETGBL R29 G8
- 0x5C782800, // 008D MOVE R30 R20
- 0x7C740200, // 008E CALL R29 1
- 0x60780008, // 008F GETGBL R30 G8
- 0x5C7C2A00, // 0090 MOVE R31 R21
- 0x7C780200, // 0091 CALL R30 1
- 0x7C600C00, // 0092 CALL R24 6
- 0x54660003, // 0093 LDINT R25 4
- 0x7C580600, // 0094 CALL R22 3
- 0x60580010, // 0095 GETGBL R22 G16
- 0x5C5C2A00, // 0096 MOVE R23 R21
- 0x7C580200, // 0097 CALL R22 1
- 0xA802001A, // 0098 EXBLK 0 #00B4
- 0x5C5C2C00, // 0099 MOVE R23 R22
- 0x7C5C0000, // 009A CALL R23 0
- 0x4C600000, // 009B LDNIL R24
- 0x20601218, // 009C NE R24 R9 R24
- 0x78620002, // 009D JMPF R24 #00A1
- 0x20602E09, // 009E NE R24 R23 R9
- 0x78620000, // 009F JMPF R24 #00A1
- 0x7001FFF7, // 00A0 JMP #0099
- 0x94601811, // 00A1 GETIDX R24 R12 R17
- 0x94603014, // 00A2 GETIDX R24 R24 R20
- 0x8C60310C, // 00A3 GETMET R24 R24 K12
- 0x5C682E00, // 00A4 MOVE R26 R23
- 0x7C600400, // 00A5 CALL R24 2
- 0x74620004, // 00A6 JMPT R24 #00AC
- 0x94601811, // 00A7 GETIDX R24 R12 R17
- 0x94603014, // 00A8 GETIDX R24 R24 R20
- 0x60640012, // 00A9 GETGBL R25 G18
- 0x7C640000, // 00AA CALL R25 0
- 0x98602E19, // 00AB SETIDX R24 R23 R25
- 0x50280200, // 00AC LDBOOL R10 1 0
- 0x94601811, // 00AD GETIDX R24 R12 R17
- 0x94603014, // 00AE GETIDX R24 R24 R20
- 0x94603017, // 00AF GETIDX R24 R24 R23
- 0x8C603111, // 00B0 GETMET R24 R24 K17
- 0x5C681C00, // 00B1 MOVE R26 R14
- 0x7C600400, // 00B2 CALL R24 2
- 0x7001FFE4, // 00B3 JMP #0099
- 0x58580012, // 00B4 LDCONST R22 K18
- 0xAC580200, // 00B5 CATCH R22 1 0
- 0xB0080000, // 00B6 RAISE 2 R0 R0
- 0x7001FFB3, // 00B7 JMP #006C
- 0x584C0012, // 00B8 LDCONST R19 K18
- 0xAC4C0200, // 00B9 CATCH R19 1 0
- 0xB0080000, // 00BA RAISE 2 R0 R0
- 0x7001FF88, // 00BB JMP #0045
- 0x58400012, // 00BC LDCONST R16 K18
- 0xAC400200, // 00BD CATCH R16 1 0
- 0xB0080000, // 00BE RAISE 2 R0 R0
- 0x7001FF6F, // 00BF JMP #0030
- 0x58340012, // 00C0 LDCONST R13 K18
- 0xAC340200, // 00C1 CATCH R13 1 0
- 0xB0080000, // 00C2 RAISE 2 R0 R0
- 0x60340010, // 00C3 GETGBL R13 G16
- 0x5C380600, // 00C4 MOVE R14 R3
- 0x5C3C1800, // 00C5 MOVE R15 R12
- 0x7C380200, // 00C6 CALL R14 1
- 0x7C340200, // 00C7 CALL R13 1
- 0xA802003D, // 00C8 EXBLK 0 #0107
- 0x5C381A00, // 00C9 MOVE R14 R13
- 0x7C380000, // 00CA CALL R14 0
- 0x603C0010, // 00CB GETGBL R15 G16
- 0x5C400600, // 00CC MOVE R16 R3
- 0x9444180E, // 00CD GETIDX R17 R12 R14
- 0x7C400200, // 00CE CALL R16 1
- 0x7C3C0200, // 00CF CALL R15 1
- 0xA8020031, // 00D0 EXBLK 0 #0103
- 0x5C401E00, // 00D1 MOVE R16 R15
- 0x7C400000, // 00D2 CALL R16 0
- 0x60440010, // 00D3 GETGBL R17 G16
- 0x5C480600, // 00D4 MOVE R18 R3
- 0x944C180E, // 00D5 GETIDX R19 R12 R14
- 0x944C2610, // 00D6 GETIDX R19 R19 R16
- 0x7C480200, // 00D7 CALL R18 1
- 0x7C440200, // 00D8 CALL R17 1
- 0xA8020024, // 00D9 EXBLK 0 #00FF
- 0x5C482200, // 00DA MOVE R18 R17
- 0x7C480000, // 00DB CALL R18 0
- 0x604C0010, // 00DC GETGBL R19 G16
- 0x9450180E, // 00DD GETIDX R20 R12 R14
- 0x94502810, // 00DE GETIDX R20 R20 R16
- 0x94502812, // 00DF GETIDX R20 R20 R18
- 0x7C4C0200, // 00E0 CALL R19 1
- 0xA8020018, // 00E1 EXBLK 0 #00FB
- 0x5C502600, // 00E2 MOVE R20 R19
- 0x7C500000, // 00E3 CALL R20 0
- 0xB8560800, // 00E4 GETNGBL R21 K4
- 0x8C542B05, // 00E5 GETMET R21 R21 K5
- 0x8C5C0906, // 00E6 GETMET R23 R4 K6
- 0x58640013, // 00E7 LDCONST R25 K19
- 0x5C681C00, // 00E8 MOVE R26 R14
- 0x5C6C2000, // 00E9 MOVE R27 R16
- 0x5C702400, // 00EA MOVE R28 R18
- 0x7C5C0A00, // 00EB CALL R23 5
- 0x58600014, // 00EC LDCONST R24 K20
- 0x7C540600, // 00ED CALL R21 3
- 0x9006020E, // 00EE SETMBR R1 K1 R14
- 0x90060410, // 00EF SETMBR R1 K2 R16
- 0x90060612, // 00F0 SETMBR R1 K3 R18
- 0x5C540400, // 00F1 MOVE R21 R2
- 0x5C582800, // 00F2 MOVE R22 R20
- 0x5C5C0200, // 00F3 MOVE R23 R1
- 0x5C601600, // 00F4 MOVE R24 R11
- 0x7C540600, // 00F5 CALL R21 3
- 0x782E0002, // 00F6 JMPF R11 #00FA
- 0x78560001, // 00F7 JMPF R21 #00FA
- 0xA8040004, // 00F8 EXBLK 1 4
- 0x80002C00, // 00F9 RET 0
- 0x7001FFE6, // 00FA JMP #00E2
- 0x584C0012, // 00FB LDCONST R19 K18
- 0xAC4C0200, // 00FC CATCH R19 1 0
- 0xB0080000, // 00FD RAISE 2 R0 R0
- 0x7001FFDA, // 00FE JMP #00DA
- 0x58440012, // 00FF LDCONST R17 K18
- 0xAC440200, // 0100 CATCH R17 1 0
- 0xB0080000, // 0101 RAISE 2 R0 R0
- 0x7001FFCD, // 0102 JMP #00D1
- 0x583C0012, // 0103 LDCONST R15 K18
- 0xAC3C0200, // 0104 CATCH R15 1 0
- 0xB0080000, // 0105 RAISE 2 R0 R0
- 0x7001FFC1, // 0106 JMP #00C9
- 0x58340012, // 0107 LDCONST R13 K18
- 0xAC340200, // 0108 CATCH R13 1 0
- 0xB0080000, // 0109 RAISE 2 R0 R0
- 0x782E0019, // 010A JMPF R11 #0125
- 0x5C340C00, // 010B MOVE R13 R6
- 0x74360003, // 010C JMPT R13 #0111
- 0xB8362C00, // 010D GETNGBL R13 K22
- 0x88341B17, // 010E GETMBR R13 R13 K23
- 0x90062A0D, // 010F SETMBR R1 K21 R13
- 0x7002000E, // 0110 JMP #0120
- 0x5C341000, // 0111 MOVE R13 R8
- 0x74360003, // 0112 JMPT R13 #0117
- 0xB8362C00, // 0113 GETNGBL R13 K22
- 0x88341B18, // 0114 GETMBR R13 R13 K24
- 0x90062A0D, // 0115 SETMBR R1 K21 R13
- 0x70020008, // 0116 JMP #0120
- 0x5C341400, // 0117 MOVE R13 R10
- 0x74360003, // 0118 JMPT R13 #011D
- 0xB8362C00, // 0119 GETNGBL R13 K22
- 0x88341B19, // 011A GETMBR R13 R13 K25
- 0x90062A0D, // 011B SETMBR R1 K21 R13
- 0x70020002, // 011C JMP #0120
- 0xB8362C00, // 011D GETNGBL R13 K22
- 0x88341B1A, // 011E GETMBR R13 R13 K26
- 0x90062A0D, // 011F SETMBR R1 K21 R13
- 0x5C340400, // 0120 MOVE R13 R2
- 0x4C380000, // 0121 LDNIL R14
- 0x5C3C0200, // 0122 MOVE R15 R1
- 0x50400200, // 0123 LDBOOL R16 1 0
- 0x7C340600, // 0124 CALL R13 3
- 0x80000000, // 0125 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_commissioning_complete_deferred
-********************************************************************/
-be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 1]) {
- be_nested_proto(
- 3, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 0),
- be_local_const_upval(1, 1),
- }),
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(start_commissioning_complete),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x68080001, // 0002 GETUPV R2 U1
- 0x7C000400, // 0003 CALL R0 2
- 0x80040000, // 0004 RET 1 R0
- })
- ),
- }),
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(set_timer),
- /* K2 */ be_const_int(0),
- }),
- be_str_weak(start_commissioning_complete_deferred),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x58100002, // 0002 LDCONST R4 K2
- 0x84140000, // 0003 CLOSURE R5 P0
- 0x7C080600, // 0004 CALL R2 3
- 0xA0000000, // 0005 CLOSE R0
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: _mdns_announce_hostname
********************************************************************/
@@ -3247,11 +761,11 @@ be_local_closure(Matter_Device__mdns_announce_hostname, /* name */
/********************************************************************
-** Solidified function: is_commissioning_open
+** Solidified function: mdns_announce_PASE
********************************************************************/
-be_local_closure(Matter_Device_is_commissioning_open, /* name */
+be_local_closure(Matter_Device_mdns_announce_PASE, /* name */
be_nested_proto(
- 3, /* nstack */
+ 16, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -3259,16 +773,322 @@ be_local_closure(Matter_Device_is_commissioning_open, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
+ ( &(const bvalue[44]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(crypto),
+ /* K3 */ be_nested_str_weak(VP),
+ /* K4 */ be_nested_str_weak(vendorid),
+ /* K5 */ be_nested_str_weak(_X2B),
+ /* K6 */ be_nested_str_weak(productid),
+ /* K7 */ be_nested_str_weak(D),
+ /* K8 */ be_nested_str_weak(commissioning_discriminator),
+ /* K9 */ be_nested_str_weak(CM),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_nested_str_weak(T),
+ /* K12 */ be_const_int(0),
+ /* K13 */ be_nested_str_weak(SII),
+ /* K14 */ be_nested_str_weak(SAI),
+ /* K15 */ be_nested_str_weak(commissioning_instance_wifi),
+ /* K16 */ be_nested_str_weak(random),
+ /* K17 */ be_nested_str_weak(tohex),
+ /* K18 */ be_nested_str_weak(commissioning_instance_eth),
+ /* K19 */ be_nested_str_weak(hostname_eth),
+ /* K20 */ be_nested_str_weak(tasmota),
+ /* K21 */ be_nested_str_weak(log),
+ /* K22 */ be_nested_str_weak(format),
+ /* K23 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25i_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
+ /* K24 */ be_nested_str_weak(_matterc),
+ /* K25 */ be_nested_str_weak(_udp),
+ /* K26 */ be_const_int(3),
+ /* K27 */ be_nested_str_weak(add_service),
+ /* K28 */ be_nested_str_weak(mdns_pase_eth),
+ /* K29 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K30 */ be_nested_str_weak(eth),
+ /* K31 */ be_const_int(2),
+ /* K32 */ be_nested_str_weak(_L),
+ /* K33 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
+ /* K34 */ be_nested_str_weak(add_subtype),
+ /* K35 */ be_nested_str_weak(_S),
+ /* K36 */ be_nested_str_weak(_V),
+ /* K37 */ be_nested_str_weak(_CM1),
+ /* K38 */ be_nested_str_weak(hostname_wifi),
+ /* K39 */ be_nested_str_weak(mdns_pase_wifi),
+ /* K40 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K41 */ be_nested_str_weak(wifi),
+ /* K42 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K43 */ be_nested_str_weak(_X7C),
}),
- be_str_weak(is_commissioning_open),
+ be_str_weak(mdns_announce_PASE),
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x80040200, // 0003 RET 1 R1
+ ( &(const binstruction[267]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA40A0200, // 0001 IMPORT R2 K1
+ 0xA40E0400, // 0002 IMPORT R3 K2
+ 0x60100013, // 0003 GETGBL R4 G19
+ 0x7C100000, // 0004 CALL R4 0
+ 0x60140008, // 0005 GETGBL R5 G8
+ 0x88180104, // 0006 GETMBR R6 R0 K4
+ 0x7C140200, // 0007 CALL R5 1
+ 0x00140B05, // 0008 ADD R5 R5 K5
+ 0x60180008, // 0009 GETGBL R6 G8
+ 0x881C0106, // 000A GETMBR R7 R0 K6
+ 0x7C180200, // 000B CALL R6 1
+ 0x00140A06, // 000C ADD R5 R5 R6
+ 0x98120605, // 000D SETIDX R4 K3 R5
+ 0x88140108, // 000E GETMBR R5 R0 K8
+ 0x98120E05, // 000F SETIDX R4 K7 R5
+ 0x9812130A, // 0010 SETIDX R4 K9 K10
+ 0x9812170C, // 0011 SETIDX R4 K11 K12
+ 0x54161387, // 0012 LDINT R5 5000
+ 0x98121A05, // 0013 SETIDX R4 K13 R5
+ 0x5416012B, // 0014 LDINT R5 300
+ 0x98121C05, // 0015 SETIDX R4 K14 R5
+ 0x8C140710, // 0016 GETMET R5 R3 K16
+ 0x541E0007, // 0017 LDINT R7 8
+ 0x7C140400, // 0018 CALL R5 2
+ 0x8C140B11, // 0019 GETMET R5 R5 K17
+ 0x7C140200, // 001A CALL R5 1
+ 0x90021E05, // 001B SETMBR R0 K15 R5
+ 0x8C140710, // 001C GETMET R5 R3 K16
+ 0x541E0007, // 001D LDINT R7 8
+ 0x7C140400, // 001E CALL R5 2
+ 0x8C140B11, // 001F GETMET R5 R5 K17
+ 0x7C140200, // 0020 CALL R5 1
+ 0x90022405, // 0021 SETMBR R0 K18 R5
+ 0xA80200D5, // 0022 EXBLK 0 #00F9
+ 0x88140113, // 0023 GETMBR R5 R0 K19
+ 0x78160067, // 0024 JMPF R5 #008D
+ 0xB8162800, // 0025 GETNGBL R5 K20
+ 0x8C140B15, // 0026 GETMET R5 R5 K21
+ 0x8C1C0516, // 0027 GETMET R7 R2 K22
+ 0x58240017, // 0028 LDCONST R9 K23
+ 0x58280018, // 0029 LDCONST R10 K24
+ 0x582C0019, // 002A LDCONST R11 K25
+ 0x543215A3, // 002B LDINT R12 5540
+ 0x60340008, // 002C GETGBL R13 G8
+ 0x5C380800, // 002D MOVE R14 R4
+ 0x7C340200, // 002E CALL R13 1
+ 0x88380112, // 002F GETMBR R14 R0 K18
+ 0x883C0113, // 0030 GETMBR R15 R0 K19
+ 0x7C1C1000, // 0031 CALL R7 8
+ 0x5820001A, // 0032 LDCONST R8 K26
+ 0x7C140600, // 0033 CALL R5 3
+ 0x8C14031B, // 0034 GETMET R5 R1 K27
+ 0x581C0018, // 0035 LDCONST R7 K24
+ 0x58200019, // 0036 LDCONST R8 K25
+ 0x542615A3, // 0037 LDINT R9 5540
+ 0x5C280800, // 0038 MOVE R10 R4
+ 0x882C0112, // 0039 GETMBR R11 R0 K18
+ 0x88300113, // 003A GETMBR R12 R0 K19
+ 0x7C140E00, // 003B CALL R5 7
+ 0x50140200, // 003C LDBOOL R5 1 0
+ 0x90023805, // 003D SETMBR R0 K28 R5
+ 0xB8162800, // 003E GETNGBL R5 K20
+ 0x8C140B15, // 003F GETMET R5 R5 K21
+ 0x8C1C0516, // 0040 GETMET R7 R2 K22
+ 0x5824001D, // 0041 LDCONST R9 K29
+ 0x5828001E, // 0042 LDCONST R10 K30
+ 0x882C0112, // 0043 GETMBR R11 R0 K18
+ 0x88300113, // 0044 GETMBR R12 R0 K19
+ 0x7C1C0A00, // 0045 CALL R7 5
+ 0x5820001F, // 0046 LDCONST R8 K31
+ 0x7C140600, // 0047 CALL R5 3
+ 0x60140008, // 0048 GETGBL R5 G8
+ 0x88180108, // 0049 GETMBR R6 R0 K8
+ 0x541E0FFE, // 004A LDINT R7 4095
+ 0x2C180C07, // 004B AND R6 R6 R7
+ 0x7C140200, // 004C CALL R5 1
+ 0x00164005, // 004D ADD R5 K32 R5
+ 0xB81A2800, // 004E GETNGBL R6 K20
+ 0x8C180D15, // 004F GETMET R6 R6 K21
+ 0x00224205, // 0050 ADD R8 K33 R5
+ 0x5824001F, // 0051 LDCONST R9 K31
+ 0x7C180600, // 0052 CALL R6 3
+ 0x8C180322, // 0053 GETMET R6 R1 K34
+ 0x58200018, // 0054 LDCONST R8 K24
+ 0x58240019, // 0055 LDCONST R9 K25
+ 0x88280112, // 0056 GETMBR R10 R0 K18
+ 0x882C0113, // 0057 GETMBR R11 R0 K19
+ 0x5C300A00, // 0058 MOVE R12 R5
+ 0x7C180C00, // 0059 CALL R6 6
+ 0x60180008, // 005A GETGBL R6 G8
+ 0x881C0108, // 005B GETMBR R7 R0 K8
+ 0x54220EFF, // 005C LDINT R8 3840
+ 0x2C1C0E08, // 005D AND R7 R7 R8
+ 0x54220007, // 005E LDINT R8 8
+ 0x3C1C0E08, // 005F SHR R7 R7 R8
+ 0x7C180200, // 0060 CALL R6 1
+ 0x001A4606, // 0061 ADD R6 K35 R6
+ 0x5C140C00, // 0062 MOVE R5 R6
+ 0xB81A2800, // 0063 GETNGBL R6 K20
+ 0x8C180D15, // 0064 GETMET R6 R6 K21
+ 0x00224205, // 0065 ADD R8 K33 R5
+ 0x5824001F, // 0066 LDCONST R9 K31
+ 0x7C180600, // 0067 CALL R6 3
+ 0x8C180322, // 0068 GETMET R6 R1 K34
+ 0x58200018, // 0069 LDCONST R8 K24
+ 0x58240019, // 006A LDCONST R9 K25
+ 0x88280112, // 006B GETMBR R10 R0 K18
+ 0x882C0113, // 006C GETMBR R11 R0 K19
+ 0x5C300A00, // 006D MOVE R12 R5
+ 0x7C180C00, // 006E CALL R6 6
+ 0x60180008, // 006F GETGBL R6 G8
+ 0x881C0104, // 0070 GETMBR R7 R0 K4
+ 0x7C180200, // 0071 CALL R6 1
+ 0x001A4806, // 0072 ADD R6 K36 R6
+ 0x5C140C00, // 0073 MOVE R5 R6
+ 0xB81A2800, // 0074 GETNGBL R6 K20
+ 0x8C180D15, // 0075 GETMET R6 R6 K21
+ 0x00224205, // 0076 ADD R8 K33 R5
+ 0x5824001F, // 0077 LDCONST R9 K31
+ 0x7C180600, // 0078 CALL R6 3
+ 0x8C180322, // 0079 GETMET R6 R1 K34
+ 0x58200018, // 007A LDCONST R8 K24
+ 0x58240019, // 007B LDCONST R9 K25
+ 0x88280112, // 007C GETMBR R10 R0 K18
+ 0x882C0113, // 007D GETMBR R11 R0 K19
+ 0x5C300A00, // 007E MOVE R12 R5
+ 0x7C180C00, // 007F CALL R6 6
+ 0x58140025, // 0080 LDCONST R5 K37
+ 0xB81A2800, // 0081 GETNGBL R6 K20
+ 0x8C180D15, // 0082 GETMET R6 R6 K21
+ 0x00224205, // 0083 ADD R8 K33 R5
+ 0x5824001F, // 0084 LDCONST R9 K31
+ 0x7C180600, // 0085 CALL R6 3
+ 0x8C180322, // 0086 GETMET R6 R1 K34
+ 0x58200018, // 0087 LDCONST R8 K24
+ 0x58240019, // 0088 LDCONST R9 K25
+ 0x88280112, // 0089 GETMBR R10 R0 K18
+ 0x882C0113, // 008A GETMBR R11 R0 K19
+ 0x5C300A00, // 008B MOVE R12 R5
+ 0x7C180C00, // 008C CALL R6 6
+ 0x88140126, // 008D GETMBR R5 R0 K38
+ 0x78160067, // 008E JMPF R5 #00F7
+ 0xB8162800, // 008F GETNGBL R5 K20
+ 0x8C140B15, // 0090 GETMET R5 R5 K21
+ 0x8C1C0516, // 0091 GETMET R7 R2 K22
+ 0x58240017, // 0092 LDCONST R9 K23
+ 0x58280018, // 0093 LDCONST R10 K24
+ 0x582C0019, // 0094 LDCONST R11 K25
+ 0x543215A3, // 0095 LDINT R12 5540
+ 0x60340008, // 0096 GETGBL R13 G8
+ 0x5C380800, // 0097 MOVE R14 R4
+ 0x7C340200, // 0098 CALL R13 1
+ 0x8838010F, // 0099 GETMBR R14 R0 K15
+ 0x883C0126, // 009A GETMBR R15 R0 K38
+ 0x7C1C1000, // 009B CALL R7 8
+ 0x5820001A, // 009C LDCONST R8 K26
+ 0x7C140600, // 009D CALL R5 3
+ 0x8C14031B, // 009E GETMET R5 R1 K27
+ 0x581C0018, // 009F LDCONST R7 K24
+ 0x58200019, // 00A0 LDCONST R8 K25
+ 0x542615A3, // 00A1 LDINT R9 5540
+ 0x5C280800, // 00A2 MOVE R10 R4
+ 0x882C010F, // 00A3 GETMBR R11 R0 K15
+ 0x88300126, // 00A4 GETMBR R12 R0 K38
+ 0x7C140E00, // 00A5 CALL R5 7
+ 0x50140200, // 00A6 LDBOOL R5 1 0
+ 0x90024E05, // 00A7 SETMBR R0 K39 R5
+ 0xB8162800, // 00A8 GETNGBL R5 K20
+ 0x8C140B15, // 00A9 GETMET R5 R5 K21
+ 0x8C1C0516, // 00AA GETMET R7 R2 K22
+ 0x58240028, // 00AB LDCONST R9 K40
+ 0x58280029, // 00AC LDCONST R10 K41
+ 0x882C010F, // 00AD GETMBR R11 R0 K15
+ 0x88300126, // 00AE GETMBR R12 R0 K38
+ 0x7C1C0A00, // 00AF CALL R7 5
+ 0x5820001F, // 00B0 LDCONST R8 K31
+ 0x7C140600, // 00B1 CALL R5 3
+ 0x60140008, // 00B2 GETGBL R5 G8
+ 0x88180108, // 00B3 GETMBR R6 R0 K8
+ 0x541E0FFE, // 00B4 LDINT R7 4095
+ 0x2C180C07, // 00B5 AND R6 R6 R7
+ 0x7C140200, // 00B6 CALL R5 1
+ 0x00164005, // 00B7 ADD R5 K32 R5
+ 0xB81A2800, // 00B8 GETNGBL R6 K20
+ 0x8C180D15, // 00B9 GETMET R6 R6 K21
+ 0x00224205, // 00BA ADD R8 K33 R5
+ 0x5824001F, // 00BB LDCONST R9 K31
+ 0x7C180600, // 00BC CALL R6 3
+ 0x8C180322, // 00BD GETMET R6 R1 K34
+ 0x58200018, // 00BE LDCONST R8 K24
+ 0x58240019, // 00BF LDCONST R9 K25
+ 0x8828010F, // 00C0 GETMBR R10 R0 K15
+ 0x882C0126, // 00C1 GETMBR R11 R0 K38
+ 0x5C300A00, // 00C2 MOVE R12 R5
+ 0x7C180C00, // 00C3 CALL R6 6
+ 0x60180008, // 00C4 GETGBL R6 G8
+ 0x881C0108, // 00C5 GETMBR R7 R0 K8
+ 0x54220EFF, // 00C6 LDINT R8 3840
+ 0x2C1C0E08, // 00C7 AND R7 R7 R8
+ 0x54220007, // 00C8 LDINT R8 8
+ 0x3C1C0E08, // 00C9 SHR R7 R7 R8
+ 0x7C180200, // 00CA CALL R6 1
+ 0x001A4606, // 00CB ADD R6 K35 R6
+ 0x5C140C00, // 00CC MOVE R5 R6
+ 0xB81A2800, // 00CD GETNGBL R6 K20
+ 0x8C180D15, // 00CE GETMET R6 R6 K21
+ 0x00224205, // 00CF ADD R8 K33 R5
+ 0x5824001F, // 00D0 LDCONST R9 K31
+ 0x7C180600, // 00D1 CALL R6 3
+ 0x8C180322, // 00D2 GETMET R6 R1 K34
+ 0x58200018, // 00D3 LDCONST R8 K24
+ 0x58240019, // 00D4 LDCONST R9 K25
+ 0x8828010F, // 00D5 GETMBR R10 R0 K15
+ 0x882C0126, // 00D6 GETMBR R11 R0 K38
+ 0x5C300A00, // 00D7 MOVE R12 R5
+ 0x7C180C00, // 00D8 CALL R6 6
+ 0x60180008, // 00D9 GETGBL R6 G8
+ 0x881C0104, // 00DA GETMBR R7 R0 K4
+ 0x7C180200, // 00DB CALL R6 1
+ 0x001A4806, // 00DC ADD R6 K36 R6
+ 0x5C140C00, // 00DD MOVE R5 R6
+ 0xB81A2800, // 00DE GETNGBL R6 K20
+ 0x8C180D15, // 00DF GETMET R6 R6 K21
+ 0x00224205, // 00E0 ADD R8 K33 R5
+ 0x5824001F, // 00E1 LDCONST R9 K31
+ 0x7C180600, // 00E2 CALL R6 3
+ 0x8C180322, // 00E3 GETMET R6 R1 K34
+ 0x58200018, // 00E4 LDCONST R8 K24
+ 0x58240019, // 00E5 LDCONST R9 K25
+ 0x8828010F, // 00E6 GETMBR R10 R0 K15
+ 0x882C0126, // 00E7 GETMBR R11 R0 K38
+ 0x5C300A00, // 00E8 MOVE R12 R5
+ 0x7C180C00, // 00E9 CALL R6 6
+ 0x58140025, // 00EA LDCONST R5 K37
+ 0xB81A2800, // 00EB GETNGBL R6 K20
+ 0x8C180D15, // 00EC GETMET R6 R6 K21
+ 0x00224205, // 00ED ADD R8 K33 R5
+ 0x5824001F, // 00EE LDCONST R9 K31
+ 0x7C180600, // 00EF CALL R6 3
+ 0x8C180322, // 00F0 GETMET R6 R1 K34
+ 0x58200018, // 00F1 LDCONST R8 K24
+ 0x58240019, // 00F2 LDCONST R9 K25
+ 0x8828010F, // 00F3 GETMBR R10 R0 K15
+ 0x882C0126, // 00F4 GETMBR R11 R0 K38
+ 0x5C300A00, // 00F5 MOVE R12 R5
+ 0x7C180C00, // 00F6 CALL R6 6
+ 0xA8040001, // 00F7 EXBLK 1 1
+ 0x70020010, // 00F8 JMP #010A
+ 0xAC140002, // 00F9 CATCH R5 0 2
+ 0x7002000D, // 00FA JMP #0109
+ 0xB81E2800, // 00FB GETNGBL R7 K20
+ 0x8C1C0F15, // 00FC GETMET R7 R7 K21
+ 0x60240008, // 00FD GETGBL R9 G8
+ 0x5C280A00, // 00FE MOVE R10 R5
+ 0x7C240200, // 00FF CALL R9 1
+ 0x00265409, // 0100 ADD R9 K42 R9
+ 0x0024132B, // 0101 ADD R9 R9 K43
+ 0x60280008, // 0102 GETGBL R10 G8
+ 0x5C2C0C00, // 0103 MOVE R11 R6
+ 0x7C280200, // 0104 CALL R10 1
+ 0x0024120A, // 0105 ADD R9 R9 R10
+ 0x5828001F, // 0106 LDCONST R10 K31
+ 0x7C1C0600, // 0107 CALL R7 3
+ 0x70020000, // 0108 JMP #010A
+ 0xB0080000, // 0109 RAISE 2 R0 R0
+ 0x80000000, // 010A RET 0
})
)
);
@@ -3276,12 +1096,155 @@ be_local_closure(Matter_Device_is_commissioning_open, /* name */
/********************************************************************
-** Solidified function: get_active_endpoints
+** Solidified function: start_basic_commissioning
********************************************************************/
-be_local_closure(Matter_Device_get_active_endpoints, /* name */
+be_local_closure(Matter_Device_start_basic_commissioning, /* name */
be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
+ 13, /* nstack */
+ 8, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 2]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0000, // 0006 LDCONST R3 K0
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Eth_X23Connected),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0000, // 0006 LDCONST R3 K0
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[16]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(millis),
+ /* K3 */ be_nested_str_weak(commissioning_iterations),
+ /* K4 */ be_nested_str_weak(commissioning_discriminator),
+ /* K5 */ be_nested_str_weak(commissioning_salt),
+ /* K6 */ be_nested_str_weak(commissioning_w0),
+ /* K7 */ be_nested_str_weak(commissioning_L),
+ /* K8 */ be_nested_str_weak(commissioning_admin_fabric),
+ /* K9 */ be_nested_str_weak(wifi),
+ /* K10 */ be_nested_str_weak(up),
+ /* K11 */ be_nested_str_weak(eth),
+ /* K12 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K13 */ be_nested_str_weak(add_rule),
+ /* K14 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K15 */ be_nested_str_weak(Eth_X23Connected),
+ }),
+ be_str_weak(start_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0xB8220200, // 0000 GETNGBL R8 K1
+ 0x8C201102, // 0001 GETMET R8 R8 K2
+ 0x7C200200, // 0002 CALL R8 1
+ 0x542603E7, // 0003 LDINT R9 1000
+ 0x08240209, // 0004 MUL R9 R1 R9
+ 0x00201009, // 0005 ADD R8 R8 R9
+ 0x90020008, // 0006 SETMBR R0 K0 R8
+ 0x90020602, // 0007 SETMBR R0 K3 R2
+ 0x90020803, // 0008 SETMBR R0 K4 R3
+ 0x90020A04, // 0009 SETMBR R0 K5 R4
+ 0x90020C05, // 000A SETMBR R0 K6 R5
+ 0x90020E06, // 000B SETMBR R0 K7 R6
+ 0x90021007, // 000C SETMBR R0 K8 R7
+ 0xB8220200, // 000D GETNGBL R8 K1
+ 0x8C201109, // 000E GETMET R8 R8 K9
+ 0x7C200200, // 000F CALL R8 1
+ 0x9420110A, // 0010 GETIDX R8 R8 K10
+ 0x74220004, // 0011 JMPT R8 #0017
+ 0xB8220200, // 0012 GETNGBL R8 K1
+ 0x8C20110B, // 0013 GETMET R8 R8 K11
+ 0x7C200200, // 0014 CALL R8 1
+ 0x9420110A, // 0015 GETIDX R8 R8 K10
+ 0x78220002, // 0016 JMPF R8 #001A
+ 0x8C20010C, // 0017 GETMET R8 R0 K12
+ 0x7C200200, // 0018 CALL R8 1
+ 0x7002000B, // 0019 JMP #0026
+ 0xB8220200, // 001A GETNGBL R8 K1
+ 0x8C20110D, // 001B GETMET R8 R8 K13
+ 0x5828000E, // 001C LDCONST R10 K14
+ 0x842C0000, // 001D CLOSURE R11 P0
+ 0x5830000C, // 001E LDCONST R12 K12
+ 0x7C200800, // 001F CALL R8 4
+ 0xB8220200, // 0020 GETNGBL R8 K1
+ 0x8C20110D, // 0021 GETMET R8 R8 K13
+ 0x5828000F, // 0022 LDCONST R10 K15
+ 0x842C0001, // 0023 CLOSURE R11 P1
+ 0x5830000C, // 0024 LDCONST R12 K12
+ 0x7C200800, // 0025 CALL R8 4
+ 0xA0000000, // 0026 CLOSE R0
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_remove_op_discovery_all_fabrics
+********************************************************************/
+be_local_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
@@ -3289,54 +1252,89 @@ be_local_closure(Matter_Device_get_active_endpoints, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins),
- /* K1 */ be_nested_str_weak(get_endpoints),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(find),
- /* K4 */ be_nested_str_weak(push),
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_nested_str_weak(active_fabrics),
+ /* K2 */ be_nested_str_weak(get_device_id),
+ /* K3 */ be_nested_str_weak(get_fabric_id),
+ /* K4 */ be_nested_str_weak(mdns_remove_op_discovery),
/* K5 */ be_nested_str_weak(stop_iteration),
}),
- be_str_weak(get_active_endpoints),
+ be_str_weak(mdns_remove_op_discovery_all_fabrics),
&be_const_str_solidified,
- ( &(const binstruction[38]) { /* code */
- 0x60080012, // 0000 GETGBL R2 G18
- 0x7C080000, // 0001 CALL R2 0
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x88100100, // 0003 GETMBR R4 R0 K0
- 0x7C0C0200, // 0004 CALL R3 1
- 0xA802001B, // 0005 EXBLK 0 #0022
- 0x5C100600, // 0006 MOVE R4 R3
- 0x7C100000, // 0007 CALL R4 0
- 0x8C140901, // 0008 GETMET R5 R4 K1
- 0x7C140200, // 0009 CALL R5 1
- 0x60180010, // 000A GETGBL R6 G16
- 0x5C1C0A00, // 000B MOVE R7 R5
- 0x7C180200, // 000C CALL R6 1
- 0xA802000F, // 000D EXBLK 0 #001E
- 0x5C1C0C00, // 000E MOVE R7 R6
- 0x7C1C0000, // 000F CALL R7 0
- 0x78060002, // 0010 JMPF R1 #0014
- 0x1C200F02, // 0011 EQ R8 R7 K2
- 0x78220000, // 0012 JMPF R8 #0014
- 0x7001FFF9, // 0013 JMP #000E
- 0x8C200503, // 0014 GETMET R8 R2 K3
- 0x5C280E00, // 0015 MOVE R10 R7
- 0x7C200400, // 0016 CALL R8 2
- 0x4C240000, // 0017 LDNIL R9
- 0x1C201009, // 0018 EQ R8 R8 R9
- 0x78220002, // 0019 JMPF R8 #001D
- 0x8C200504, // 001A GETMET R8 R2 K4
- 0x5C280E00, // 001B MOVE R10 R7
- 0x7C200400, // 001C CALL R8 2
- 0x7001FFEF, // 001D JMP #000E
- 0x58180005, // 001E LDCONST R6 K5
- 0xAC180200, // 001F CATCH R6 1 0
- 0xB0080000, // 0020 RAISE 2 R0 R0
- 0x7001FFE3, // 0021 JMP #0006
- 0x580C0005, // 0022 LDCONST R3 K5
- 0xAC0C0200, // 0023 CATCH R3 1 0
- 0xB0080000, // 0024 RAISE 2 R0 R0
- 0x80040400, // 0025 RET 1 R2
+ ( &(const binstruction[22]) { /* code */
+ 0x60040010, // 0000 GETGBL R1 G16
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0x7C080200, // 0003 CALL R2 1
+ 0x7C040200, // 0004 CALL R1 1
+ 0xA802000B, // 0005 EXBLK 0 #0012
+ 0x5C080200, // 0006 MOVE R2 R1
+ 0x7C080000, // 0007 CALL R2 0
+ 0x8C0C0502, // 0008 GETMET R3 R2 K2
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x780E0005, // 000A JMPF R3 #0011
+ 0x8C0C0503, // 000B GETMET R3 R2 K3
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x780E0002, // 000D JMPF R3 #0011
+ 0x8C0C0104, // 000E GETMET R3 R0 K4
+ 0x5C140400, // 000F MOVE R5 R2
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x7001FFF3, // 0011 JMP #0006
+ 0x58040005, // 0012 LDCONST R1 K5
+ 0xAC040200, // 0013 CATCH R1 1 0
+ 0xB0080000, // 0014 RAISE 2 R0 R0
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attribute_updated
+********************************************************************/
+be_local_closure(Matter_Device_attribute_updated, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(Path),
+ /* K2 */ be_nested_str_weak(endpoint),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(attribute),
+ /* K5 */ be_nested_str_weak(message_handler),
+ /* K6 */ be_nested_str_weak(im),
+ /* K7 */ be_nested_str_weak(subs),
+ /* K8 */ be_nested_str_weak(attribute_updated_ctx),
+ }),
+ be_str_weak(attribute_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x1C140805, // 0001 EQ R5 R4 R5
+ 0x78160000, // 0002 JMPF R5 #0004
+ 0x50100000, // 0003 LDBOOL R4 0 0
+ 0xB8160000, // 0004 GETNGBL R5 K0
+ 0x8C140B01, // 0005 GETMET R5 R5 K1
+ 0x7C140200, // 0006 CALL R5 1
+ 0x90160401, // 0007 SETMBR R5 K2 R1
+ 0x90160602, // 0008 SETMBR R5 K3 R2
+ 0x90160803, // 0009 SETMBR R5 K4 R3
+ 0x88180105, // 000A GETMBR R6 R0 K5
+ 0x88180D06, // 000B GETMBR R6 R6 K6
+ 0x88180D07, // 000C GETMBR R6 R6 K7
+ 0x8C180D08, // 000D GETMET R6 R6 K8
+ 0x5C200A00, // 000E MOVE R8 R5
+ 0x5C240800, // 000F MOVE R9 R4
+ 0x7C180600, // 0010 CALL R6 3
+ 0x80000000, // 0011 RET 0
})
)
);
@@ -3395,84 +1393,2366 @@ be_local_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name
/*******************************************************************/
+/********************************************************************
+** Solidified function: start_operational_discovery
+********************************************************************/
+be_local_closure(Matter_Device_start_operational_discovery, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(mdns),
+ /* K2 */ be_nested_str_weak(string),
+ /* K3 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K4 */ be_nested_str_weak(root_w0),
+ /* K5 */ be_nested_str_weak(root_L),
+ /* K6 */ be_nested_str_weak(set_expire_in_seconds),
+ /* K7 */ be_nested_str_weak(mdns_announce_op_discovery),
+ /* K8 */ be_nested_str_weak(get_fabric),
+ }),
+ be_str_weak(start_operational_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40E0200, // 0001 IMPORT R3 K1
+ 0xA4120400, // 0002 IMPORT R4 K2
+ 0x8C140103, // 0003 GETMET R5 R0 K3
+ 0x7C140200, // 0004 CALL R5 1
+ 0x4C140000, // 0005 LDNIL R5
+ 0x90020805, // 0006 SETMBR R0 K4 R5
+ 0x4C140000, // 0007 LDNIL R5
+ 0x90020A05, // 0008 SETMBR R0 K5 R5
+ 0x8C140306, // 0009 GETMET R5 R1 K6
+ 0x541E003B, // 000A LDINT R7 60
+ 0x7C140400, // 000B CALL R5 2
+ 0x8C140107, // 000C GETMET R5 R0 K7
+ 0x8C1C0308, // 000D GETMET R7 R1 K8
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x7C140400, // 000F CALL R5 2
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_attribute_expansion
+********************************************************************/
+be_local_closure(Matter_Device_process_attribute_expansion, /* name */
+ be_nested_proto(
+ 30, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(keys),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(stop_iteration),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_const_int(0),
+ }),
+ be_str_weak(keys_sorted),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x60040012, // 0000 GETGBL R1 G18
+ 0x7C040000, // 0001 CALL R1 0
+ 0x60080010, // 0002 GETGBL R2 G16
+ 0x8C0C0100, // 0003 GETMET R3 R0 K0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x7C080200, // 0005 CALL R2 1
+ 0xA8020005, // 0006 EXBLK 0 #000D
+ 0x5C0C0400, // 0007 MOVE R3 R2
+ 0x7C0C0000, // 0008 CALL R3 0
+ 0x8C100301, // 0009 GETMET R4 R1 K1
+ 0x5C180600, // 000A MOVE R6 R3
+ 0x7C100400, // 000B CALL R4 2
+ 0x7001FFF9, // 000C JMP #0007
+ 0x58080002, // 000D LDCONST R2 K2
+ 0xAC080200, // 000E CATCH R2 1 0
+ 0xB0080000, // 000F RAISE 2 R0 R0
+ 0x60080010, // 0010 GETGBL R2 G16
+ 0x600C000C, // 0011 GETGBL R3 G12
+ 0x5C100200, // 0012 MOVE R4 R1
+ 0x7C0C0200, // 0013 CALL R3 1
+ 0x040C0703, // 0014 SUB R3 R3 K3
+ 0x400E0603, // 0015 CONNECT R3 K3 R3
+ 0x7C080200, // 0016 CALL R2 1
+ 0xA8020010, // 0017 EXBLK 0 #0029
+ 0x5C0C0400, // 0018 MOVE R3 R2
+ 0x7C0C0000, // 0019 CALL R3 0
+ 0x94100203, // 001A GETIDX R4 R1 R3
+ 0x5C140600, // 001B MOVE R5 R3
+ 0x24180B04, // 001C GT R6 R5 K4
+ 0x781A0008, // 001D JMPF R6 #0027
+ 0x04180B03, // 001E SUB R6 R5 K3
+ 0x94180206, // 001F GETIDX R6 R1 R6
+ 0x24180C04, // 0020 GT R6 R6 R4
+ 0x781A0004, // 0021 JMPF R6 #0027
+ 0x04180B03, // 0022 SUB R6 R5 K3
+ 0x94180206, // 0023 GETIDX R6 R1 R6
+ 0x98040A06, // 0024 SETIDX R1 R5 R6
+ 0x04140B03, // 0025 SUB R5 R5 K3
+ 0x7001FFF4, // 0026 JMP #001C
+ 0x98040A04, // 0027 SETIDX R1 R5 R4
+ 0x7001FFEE, // 0028 JMP #0018
+ 0x58080002, // 0029 LDCONST R2 K2
+ 0xAC080200, // 002A CATCH R2 1 0
+ 0xB0080000, // 002B RAISE 2 R0 R0
+ 0x80040200, // 002C RET 1 R1
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[26]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(endpoint),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(attribute),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(log),
+ /* K6 */ be_nested_str_weak(format),
+ /* K7 */ be_nested_str_weak(MTR_X3A_X20process_attribute_expansion_X20_X25s),
+ /* K8 */ be_nested_str_weak(MTR_X3A_X20endpoint_X3D_X25s_X20cluster_X3D_X25s_X20attribute_X3D_X25s),
+ /* K9 */ be_nested_str_weak(plugins),
+ /* K10 */ be_nested_str_weak(get_endpoint),
+ /* K11 */ be_nested_str_weak(contains),
+ /* K12 */ be_nested_str_weak(get_cluster_list),
+ /* K13 */ be_nested_str_weak(MTR_X3A_X20pi_X3D_X25s_X20ep_X3D_X25s_X20cl_list_X3D_X25s),
+ /* K14 */ be_nested_str_weak(get_attribute_list),
+ /* K15 */ be_nested_str_weak(MTR_X3A_X20pi_X3D_X25s_X20ep_X3D_X25s_X20cl_X3D_X25s_X20at_list_X3D_X25s),
+ /* K16 */ be_nested_str_weak(push),
+ /* K17 */ be_nested_str_weak(stop_iteration),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20expansion_X20_X5B_X2502X_X5D_X2504X_X2F_X2504X),
+ /* K19 */ be_const_int(3),
+ /* K20 */ be_nested_str_weak(status),
+ /* K21 */ be_nested_str_weak(matter),
+ /* K22 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
+ /* K23 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
+ /* K24 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K25 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE),
+ }),
+ be_str_weak(process_attribute_expansion),
+ &be_const_str_solidified,
+ ( &(const binstruction[271]) { /* code */
+ 0x840C0000, // 0000 CLOSURE R3 P0
+ 0xA4120000, // 0001 IMPORT R4 K0
+ 0x88140301, // 0002 GETMBR R5 R1 K1
+ 0x50180000, // 0003 LDBOOL R6 0 0
+ 0x881C0302, // 0004 GETMBR R7 R1 K2
+ 0x50200000, // 0005 LDBOOL R8 0 0
+ 0x88240303, // 0006 GETMBR R9 R1 K3
+ 0x50280000, // 0007 LDBOOL R10 0 0
+ 0x882C0301, // 0008 GETMBR R11 R1 K1
+ 0x4C300000, // 0009 LDNIL R12
+ 0x202C160C, // 000A NE R11 R11 R12
+ 0x782E0007, // 000B JMPF R11 #0014
+ 0x882C0302, // 000C GETMBR R11 R1 K2
+ 0x4C300000, // 000D LDNIL R12
+ 0x202C160C, // 000E NE R11 R11 R12
+ 0x782E0003, // 000F JMPF R11 #0014
+ 0x882C0303, // 0010 GETMBR R11 R1 K3
+ 0x4C300000, // 0011 LDNIL R12
+ 0x202C160C, // 0012 NE R11 R11 R12
+ 0x742E0000, // 0013 JMPT R11 #0015
+ 0x502C0001, // 0014 LDBOOL R11 0 1
+ 0x502C0200, // 0015 LDBOOL R11 1 0
+ 0xB8320800, // 0016 GETNGBL R12 K4
+ 0x8C301905, // 0017 GETMET R12 R12 K5
+ 0x8C380906, // 0018 GETMET R14 R4 K6
+ 0x58400007, // 0019 LDCONST R16 K7
+ 0x60440008, // 001A GETGBL R17 G8
+ 0x5C480200, // 001B MOVE R18 R1
+ 0x7C440200, // 001C CALL R17 1
+ 0x7C380600, // 001D CALL R14 3
+ 0x543E0003, // 001E LDINT R15 4
+ 0x7C300600, // 001F CALL R12 3
+ 0x60300013, // 0020 GETGBL R12 G19
+ 0x7C300000, // 0021 CALL R12 0
+ 0xB8360800, // 0022 GETNGBL R13 K4
+ 0x8C341B05, // 0023 GETMET R13 R13 K5
+ 0x8C3C0906, // 0024 GETMET R15 R4 K6
+ 0x58440008, // 0025 LDCONST R17 K8
+ 0x5C480A00, // 0026 MOVE R18 R5
+ 0x5C4C0E00, // 0027 MOVE R19 R7
+ 0x5C501200, // 0028 MOVE R20 R9
+ 0x7C3C0A00, // 0029 CALL R15 5
+ 0x54420003, // 002A LDINT R16 4
+ 0x7C340600, // 002B CALL R13 3
+ 0x60340010, // 002C GETGBL R13 G16
+ 0x88380109, // 002D GETMBR R14 R0 K9
+ 0x7C340200, // 002E CALL R13 1
+ 0xA8020078, // 002F EXBLK 0 #00A9
+ 0x5C381A00, // 0030 MOVE R14 R13
+ 0x7C380000, // 0031 CALL R14 0
+ 0x8C3C1D0A, // 0032 GETMET R15 R14 K10
+ 0x7C3C0200, // 0033 CALL R15 1
+ 0x4C400000, // 0034 LDNIL R16
+ 0x20400A10, // 0035 NE R16 R5 R16
+ 0x78420002, // 0036 JMPF R16 #003A
+ 0x20401E05, // 0037 NE R16 R15 R5
+ 0x78420000, // 0038 JMPF R16 #003A
+ 0x7001FFF5, // 0039 JMP #0030
+ 0x8C40190B, // 003A GETMET R16 R12 K11
+ 0x5C481E00, // 003B MOVE R18 R15
+ 0x7C400400, // 003C CALL R16 2
+ 0x74420002, // 003D JMPT R16 #0041
+ 0x60400013, // 003E GETGBL R16 G19
+ 0x7C400000, // 003F CALL R16 0
+ 0x98301E10, // 0040 SETIDX R12 R15 R16
+ 0x50180200, // 0041 LDBOOL R6 1 0
+ 0x8C401D0C, // 0042 GETMET R16 R14 K12
+ 0x5C481E00, // 0043 MOVE R18 R15
+ 0x7C400400, // 0044 CALL R16 2
+ 0xB8460800, // 0045 GETNGBL R17 K4
+ 0x8C442305, // 0046 GETMET R17 R17 K5
+ 0x8C4C0906, // 0047 GETMET R19 R4 K6
+ 0x5854000D, // 0048 LDCONST R21 K13
+ 0x60580008, // 0049 GETGBL R22 G8
+ 0x5C5C1C00, // 004A MOVE R23 R14
+ 0x7C580200, // 004B CALL R22 1
+ 0x605C0008, // 004C GETGBL R23 G8
+ 0x5C601E00, // 004D MOVE R24 R15
+ 0x7C5C0200, // 004E CALL R23 1
+ 0x60600008, // 004F GETGBL R24 G8
+ 0x5C642000, // 0050 MOVE R25 R16
+ 0x7C600200, // 0051 CALL R24 1
+ 0x7C4C0A00, // 0052 CALL R19 5
+ 0x54520003, // 0053 LDINT R20 4
+ 0x7C440600, // 0054 CALL R17 3
+ 0x60440010, // 0055 GETGBL R17 G16
+ 0x5C482000, // 0056 MOVE R18 R16
+ 0x7C440200, // 0057 CALL R17 1
+ 0xA802004B, // 0058 EXBLK 0 #00A5
+ 0x5C482200, // 0059 MOVE R18 R17
+ 0x7C480000, // 005A CALL R18 0
+ 0x4C4C0000, // 005B LDNIL R19
+ 0x204C0E13, // 005C NE R19 R7 R19
+ 0x784E0002, // 005D JMPF R19 #0061
+ 0x204C2407, // 005E NE R19 R18 R7
+ 0x784E0000, // 005F JMPF R19 #0061
+ 0x7001FFF7, // 0060 JMP #0059
+ 0x944C180F, // 0061 GETIDX R19 R12 R15
+ 0x8C4C270B, // 0062 GETMET R19 R19 K11
+ 0x5C542400, // 0063 MOVE R21 R18
+ 0x7C4C0400, // 0064 CALL R19 2
+ 0x744E0003, // 0065 JMPT R19 #006A
+ 0x944C180F, // 0066 GETIDX R19 R12 R15
+ 0x60500013, // 0067 GETGBL R20 G19
+ 0x7C500000, // 0068 CALL R20 0
+ 0x984C2414, // 0069 SETIDX R19 R18 R20
+ 0x50200200, // 006A LDBOOL R8 1 0
+ 0x8C4C1D0E, // 006B GETMET R19 R14 K14
+ 0x5C541E00, // 006C MOVE R21 R15
+ 0x5C582400, // 006D MOVE R22 R18
+ 0x7C4C0600, // 006E CALL R19 3
+ 0xB8520800, // 006F GETNGBL R20 K4
+ 0x8C502905, // 0070 GETMET R20 R20 K5
+ 0x8C580906, // 0071 GETMET R22 R4 K6
+ 0x5860000F, // 0072 LDCONST R24 K15
+ 0x60640008, // 0073 GETGBL R25 G8
+ 0x5C681C00, // 0074 MOVE R26 R14
+ 0x7C640200, // 0075 CALL R25 1
+ 0x60680008, // 0076 GETGBL R26 G8
+ 0x5C6C1E00, // 0077 MOVE R27 R15
+ 0x7C680200, // 0078 CALL R26 1
+ 0x606C0008, // 0079 GETGBL R27 G8
+ 0x5C702400, // 007A MOVE R28 R18
+ 0x7C6C0200, // 007B CALL R27 1
+ 0x60700008, // 007C GETGBL R28 G8
+ 0x5C742600, // 007D MOVE R29 R19
+ 0x7C700200, // 007E CALL R28 1
+ 0x7C580C00, // 007F CALL R22 6
+ 0x545E0003, // 0080 LDINT R23 4
+ 0x7C500600, // 0081 CALL R20 3
+ 0x60500010, // 0082 GETGBL R20 G16
+ 0x5C542600, // 0083 MOVE R21 R19
+ 0x7C500200, // 0084 CALL R20 1
+ 0xA802001A, // 0085 EXBLK 0 #00A1
+ 0x5C542800, // 0086 MOVE R21 R20
+ 0x7C540000, // 0087 CALL R21 0
+ 0x4C580000, // 0088 LDNIL R22
+ 0x20581216, // 0089 NE R22 R9 R22
+ 0x785A0002, // 008A JMPF R22 #008E
+ 0x20582A09, // 008B NE R22 R21 R9
+ 0x785A0000, // 008C JMPF R22 #008E
+ 0x7001FFF7, // 008D JMP #0086
+ 0x9458180F, // 008E GETIDX R22 R12 R15
+ 0x94582C12, // 008F GETIDX R22 R22 R18
+ 0x8C582D0B, // 0090 GETMET R22 R22 K11
+ 0x5C602A00, // 0091 MOVE R24 R21
+ 0x7C580400, // 0092 CALL R22 2
+ 0x745A0004, // 0093 JMPT R22 #0099
+ 0x9458180F, // 0094 GETIDX R22 R12 R15
+ 0x94582C12, // 0095 GETIDX R22 R22 R18
+ 0x605C0012, // 0096 GETGBL R23 G18
+ 0x7C5C0000, // 0097 CALL R23 0
+ 0x98582A17, // 0098 SETIDX R22 R21 R23
+ 0x50280200, // 0099 LDBOOL R10 1 0
+ 0x9458180F, // 009A GETIDX R22 R12 R15
+ 0x94582C12, // 009B GETIDX R22 R22 R18
+ 0x94582C15, // 009C GETIDX R22 R22 R21
+ 0x8C582D10, // 009D GETMET R22 R22 K16
+ 0x5C601C00, // 009E MOVE R24 R14
+ 0x7C580400, // 009F CALL R22 2
+ 0x7001FFE4, // 00A0 JMP #0086
+ 0x58500011, // 00A1 LDCONST R20 K17
+ 0xAC500200, // 00A2 CATCH R20 1 0
+ 0xB0080000, // 00A3 RAISE 2 R0 R0
+ 0x7001FFB3, // 00A4 JMP #0059
+ 0x58440011, // 00A5 LDCONST R17 K17
+ 0xAC440200, // 00A6 CATCH R17 1 0
+ 0xB0080000, // 00A7 RAISE 2 R0 R0
+ 0x7001FF86, // 00A8 JMP #0030
+ 0x58340011, // 00A9 LDCONST R13 K17
+ 0xAC340200, // 00AA CATCH R13 1 0
+ 0xB0080000, // 00AB RAISE 2 R0 R0
+ 0x60340010, // 00AC GETGBL R13 G16
+ 0x5C380600, // 00AD MOVE R14 R3
+ 0x5C3C1800, // 00AE MOVE R15 R12
+ 0x7C380200, // 00AF CALL R14 1
+ 0x7C340200, // 00B0 CALL R13 1
+ 0xA802003D, // 00B1 EXBLK 0 #00F0
+ 0x5C381A00, // 00B2 MOVE R14 R13
+ 0x7C380000, // 00B3 CALL R14 0
+ 0x603C0010, // 00B4 GETGBL R15 G16
+ 0x5C400600, // 00B5 MOVE R16 R3
+ 0x9444180E, // 00B6 GETIDX R17 R12 R14
+ 0x7C400200, // 00B7 CALL R16 1
+ 0x7C3C0200, // 00B8 CALL R15 1
+ 0xA8020031, // 00B9 EXBLK 0 #00EC
+ 0x5C401E00, // 00BA MOVE R16 R15
+ 0x7C400000, // 00BB CALL R16 0
+ 0x60440010, // 00BC GETGBL R17 G16
+ 0x5C480600, // 00BD MOVE R18 R3
+ 0x944C180E, // 00BE GETIDX R19 R12 R14
+ 0x944C2610, // 00BF GETIDX R19 R19 R16
+ 0x7C480200, // 00C0 CALL R18 1
+ 0x7C440200, // 00C1 CALL R17 1
+ 0xA8020024, // 00C2 EXBLK 0 #00E8
+ 0x5C482200, // 00C3 MOVE R18 R17
+ 0x7C480000, // 00C4 CALL R18 0
+ 0x604C0010, // 00C5 GETGBL R19 G16
+ 0x9450180E, // 00C6 GETIDX R20 R12 R14
+ 0x94502810, // 00C7 GETIDX R20 R20 R16
+ 0x94502812, // 00C8 GETIDX R20 R20 R18
+ 0x7C4C0200, // 00C9 CALL R19 1
+ 0xA8020018, // 00CA EXBLK 0 #00E4
+ 0x5C502600, // 00CB MOVE R20 R19
+ 0x7C500000, // 00CC CALL R20 0
+ 0xB8560800, // 00CD GETNGBL R21 K4
+ 0x8C542B05, // 00CE GETMET R21 R21 K5
+ 0x8C5C0906, // 00CF GETMET R23 R4 K6
+ 0x58640012, // 00D0 LDCONST R25 K18
+ 0x5C681C00, // 00D1 MOVE R26 R14
+ 0x5C6C2000, // 00D2 MOVE R27 R16
+ 0x5C702400, // 00D3 MOVE R28 R18
+ 0x7C5C0A00, // 00D4 CALL R23 5
+ 0x58600013, // 00D5 LDCONST R24 K19
+ 0x7C540600, // 00D6 CALL R21 3
+ 0x9006020E, // 00D7 SETMBR R1 K1 R14
+ 0x90060410, // 00D8 SETMBR R1 K2 R16
+ 0x90060612, // 00D9 SETMBR R1 K3 R18
+ 0x5C540400, // 00DA MOVE R21 R2
+ 0x5C582800, // 00DB MOVE R22 R20
+ 0x5C5C0200, // 00DC MOVE R23 R1
+ 0x5C601600, // 00DD MOVE R24 R11
+ 0x7C540600, // 00DE CALL R21 3
+ 0x782E0002, // 00DF JMPF R11 #00E3
+ 0x78560001, // 00E0 JMPF R21 #00E3
+ 0xA8040004, // 00E1 EXBLK 1 4
+ 0x80002C00, // 00E2 RET 0
+ 0x7001FFE6, // 00E3 JMP #00CB
+ 0x584C0011, // 00E4 LDCONST R19 K17
+ 0xAC4C0200, // 00E5 CATCH R19 1 0
+ 0xB0080000, // 00E6 RAISE 2 R0 R0
+ 0x7001FFDA, // 00E7 JMP #00C3
+ 0x58440011, // 00E8 LDCONST R17 K17
+ 0xAC440200, // 00E9 CATCH R17 1 0
+ 0xB0080000, // 00EA RAISE 2 R0 R0
+ 0x7001FFCD, // 00EB JMP #00BA
+ 0x583C0011, // 00EC LDCONST R15 K17
+ 0xAC3C0200, // 00ED CATCH R15 1 0
+ 0xB0080000, // 00EE RAISE 2 R0 R0
+ 0x7001FFC1, // 00EF JMP #00B2
+ 0x58340011, // 00F0 LDCONST R13 K17
+ 0xAC340200, // 00F1 CATCH R13 1 0
+ 0xB0080000, // 00F2 RAISE 2 R0 R0
+ 0x782E0019, // 00F3 JMPF R11 #010E
+ 0x5C340C00, // 00F4 MOVE R13 R6
+ 0x74360003, // 00F5 JMPT R13 #00FA
+ 0xB8362A00, // 00F6 GETNGBL R13 K21
+ 0x88341B16, // 00F7 GETMBR R13 R13 K22
+ 0x9006280D, // 00F8 SETMBR R1 K20 R13
+ 0x7002000E, // 00F9 JMP #0109
+ 0x5C341000, // 00FA MOVE R13 R8
+ 0x74360003, // 00FB JMPT R13 #0100
+ 0xB8362A00, // 00FC GETNGBL R13 K21
+ 0x88341B17, // 00FD GETMBR R13 R13 K23
+ 0x9006280D, // 00FE SETMBR R1 K20 R13
+ 0x70020008, // 00FF JMP #0109
+ 0x5C341400, // 0100 MOVE R13 R10
+ 0x74360003, // 0101 JMPT R13 #0106
+ 0xB8362A00, // 0102 GETNGBL R13 K21
+ 0x88341B18, // 0103 GETMBR R13 R13 K24
+ 0x9006280D, // 0104 SETMBR R1 K20 R13
+ 0x70020002, // 0105 JMP #0109
+ 0xB8362A00, // 0106 GETNGBL R13 K21
+ 0x88341B19, // 0107 GETMBR R13 R13 K25
+ 0x9006280D, // 0108 SETMBR R1 K20 R13
+ 0x5C340400, // 0109 MOVE R13 R2
+ 0x4C380000, // 010A LDNIL R14
+ 0x5C3C0200, // 010B MOVE R15 R1
+ 0x50400200, // 010C LDBOOL R16 1 0
+ 0x7C340600, // 010D CALL R13 3
+ 0x80000000, // 010E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: stop
+********************************************************************/
+be_local_closure(Matter_Device_stop, /* 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(udp_server),
+ /* K1 */ be_nested_str_weak(stop),
+ }),
+ be_str_weak(stop),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x8C040301, // 0003 GETMET R1 R1 K1
+ 0x7C040200, // 0004 CALL R1 1
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_announce_op_discovery
+********************************************************************/
+be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */
+ be_nested_proto(
+ 15, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[29]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(get_device_id),
+ /* K3 */ be_nested_str_weak(copy),
+ /* K4 */ be_nested_str_weak(reverse),
+ /* K5 */ be_nested_str_weak(get_fabric_compressed),
+ /* K6 */ be_nested_str_weak(tohex),
+ /* K7 */ be_nested_str_weak(_X2D),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(log),
+ /* K10 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(eth),
+ /* K13 */ be_nested_str_weak(find),
+ /* K14 */ be_nested_str_weak(up),
+ /* K15 */ be_nested_str_weak(format),
+ /* K16 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K17 */ be_nested_str_weak(hostname_eth),
+ /* K18 */ be_const_int(3),
+ /* K19 */ be_nested_str_weak(add_service),
+ /* K20 */ be_nested_str_weak(_matter),
+ /* K21 */ be_nested_str_weak(_tcp),
+ /* K22 */ be_nested_str_weak(_I),
+ /* K23 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
+ /* K24 */ be_nested_str_weak(add_subtype),
+ /* K25 */ be_nested_str_weak(wifi),
+ /* K26 */ be_nested_str_weak(hostname_wifi),
+ /* K27 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K28 */ be_nested_str_weak(_X7C),
+ }),
+ be_str_weak(mdns_announce_op_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[122]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40E0200, // 0001 IMPORT R3 K1
+ 0xA8020064, // 0002 EXBLK 0 #0068
+ 0x8C100302, // 0003 GETMET R4 R1 K2
+ 0x7C100200, // 0004 CALL R4 1
+ 0x8C100903, // 0005 GETMET R4 R4 K3
+ 0x7C100200, // 0006 CALL R4 1
+ 0x8C100904, // 0007 GETMET R4 R4 K4
+ 0x7C100200, // 0008 CALL R4 1
+ 0x8C140305, // 0009 GETMET R5 R1 K5
+ 0x7C140200, // 000A CALL R5 1
+ 0x8C180B06, // 000B GETMET R6 R5 K6
+ 0x7C180200, // 000C CALL R6 1
+ 0x00180D07, // 000D ADD R6 R6 K7
+ 0x8C1C0906, // 000E GETMET R7 R4 K6
+ 0x7C1C0200, // 000F CALL R7 1
+ 0x00180C07, // 0010 ADD R6 R6 R7
+ 0xB81E1000, // 0011 GETNGBL R7 K8
+ 0x8C1C0F09, // 0012 GETMET R7 R7 K9
+ 0x00261406, // 0013 ADD R9 K10 R6
+ 0x5828000B, // 0014 LDCONST R10 K11
+ 0x7C1C0600, // 0015 CALL R7 3
+ 0xB81E1000, // 0016 GETNGBL R7 K8
+ 0x8C1C0F0C, // 0017 GETMET R7 R7 K12
+ 0x7C1C0200, // 0018 CALL R7 1
+ 0x8C1C0F0D, // 0019 GETMET R7 R7 K13
+ 0x5824000E, // 001A LDCONST R9 K14
+ 0x7C1C0400, // 001B CALL R7 2
+ 0x781E0020, // 001C JMPF R7 #003E
+ 0xB81E1000, // 001D GETNGBL R7 K8
+ 0x8C1C0F09, // 001E GETMET R7 R7 K9
+ 0x8C24070F, // 001F GETMET R9 R3 K15
+ 0x582C0010, // 0020 LDCONST R11 K16
+ 0x5830000C, // 0021 LDCONST R12 K12
+ 0x5C340C00, // 0022 MOVE R13 R6
+ 0x88380111, // 0023 GETMBR R14 R0 K17
+ 0x7C240A00, // 0024 CALL R9 5
+ 0x58280012, // 0025 LDCONST R10 K18
+ 0x7C1C0600, // 0026 CALL R7 3
+ 0x8C1C0513, // 0027 GETMET R7 R2 K19
+ 0x58240014, // 0028 LDCONST R9 K20
+ 0x58280015, // 0029 LDCONST R10 K21
+ 0x542E15A3, // 002A LDINT R11 5540
+ 0x4C300000, // 002B LDNIL R12
+ 0x5C340C00, // 002C MOVE R13 R6
+ 0x88380111, // 002D GETMBR R14 R0 K17
+ 0x7C1C0E00, // 002E CALL R7 7
+ 0x8C1C0B06, // 002F GETMET R7 R5 K6
+ 0x7C1C0200, // 0030 CALL R7 1
+ 0x001E2C07, // 0031 ADD R7 K22 R7
+ 0xB8221000, // 0032 GETNGBL R8 K8
+ 0x8C201109, // 0033 GETMET R8 R8 K9
+ 0x002A2E07, // 0034 ADD R10 K23 R7
+ 0x582C0012, // 0035 LDCONST R11 K18
+ 0x7C200600, // 0036 CALL R8 3
+ 0x8C200518, // 0037 GETMET R8 R2 K24
+ 0x58280014, // 0038 LDCONST R10 K20
+ 0x582C0015, // 0039 LDCONST R11 K21
+ 0x5C300C00, // 003A MOVE R12 R6
+ 0x88340111, // 003B GETMBR R13 R0 K17
+ 0x5C380E00, // 003C MOVE R14 R7
+ 0x7C200C00, // 003D CALL R8 6
+ 0xB81E1000, // 003E GETNGBL R7 K8
+ 0x8C1C0F19, // 003F GETMET R7 R7 K25
+ 0x7C1C0200, // 0040 CALL R7 1
+ 0x8C1C0F0D, // 0041 GETMET R7 R7 K13
+ 0x5824000E, // 0042 LDCONST R9 K14
+ 0x7C1C0400, // 0043 CALL R7 2
+ 0x781E0020, // 0044 JMPF R7 #0066
+ 0xB81E1000, // 0045 GETNGBL R7 K8
+ 0x8C1C0F09, // 0046 GETMET R7 R7 K9
+ 0x8C24070F, // 0047 GETMET R9 R3 K15
+ 0x582C0010, // 0048 LDCONST R11 K16
+ 0x58300019, // 0049 LDCONST R12 K25
+ 0x5C340C00, // 004A MOVE R13 R6
+ 0x8838011A, // 004B GETMBR R14 R0 K26
+ 0x7C240A00, // 004C CALL R9 5
+ 0x58280012, // 004D LDCONST R10 K18
+ 0x7C1C0600, // 004E CALL R7 3
+ 0x8C1C0513, // 004F GETMET R7 R2 K19
+ 0x58240014, // 0050 LDCONST R9 K20
+ 0x58280015, // 0051 LDCONST R10 K21
+ 0x542E15A3, // 0052 LDINT R11 5540
+ 0x4C300000, // 0053 LDNIL R12
+ 0x5C340C00, // 0054 MOVE R13 R6
+ 0x8838011A, // 0055 GETMBR R14 R0 K26
+ 0x7C1C0E00, // 0056 CALL R7 7
+ 0x8C1C0B06, // 0057 GETMET R7 R5 K6
+ 0x7C1C0200, // 0058 CALL R7 1
+ 0x001E2C07, // 0059 ADD R7 K22 R7
+ 0xB8221000, // 005A GETNGBL R8 K8
+ 0x8C201109, // 005B GETMET R8 R8 K9
+ 0x002A2E07, // 005C ADD R10 K23 R7
+ 0x582C0012, // 005D LDCONST R11 K18
+ 0x7C200600, // 005E CALL R8 3
+ 0x8C200518, // 005F GETMET R8 R2 K24
+ 0x58280014, // 0060 LDCONST R10 K20
+ 0x582C0015, // 0061 LDCONST R11 K21
+ 0x5C300C00, // 0062 MOVE R12 R6
+ 0x8834011A, // 0063 GETMBR R13 R0 K26
+ 0x5C380E00, // 0064 MOVE R14 R7
+ 0x7C200C00, // 0065 CALL R8 6
+ 0xA8040001, // 0066 EXBLK 1 1
+ 0x70020010, // 0067 JMP #0079
+ 0xAC100002, // 0068 CATCH R4 0 2
+ 0x7002000D, // 0069 JMP #0078
+ 0xB81A1000, // 006A GETNGBL R6 K8
+ 0x8C180D09, // 006B GETMET R6 R6 K9
+ 0x60200008, // 006C GETGBL R8 G8
+ 0x5C240800, // 006D MOVE R9 R4
+ 0x7C200200, // 006E CALL R8 1
+ 0x00223608, // 006F ADD R8 K27 R8
+ 0x0020111C, // 0070 ADD R8 R8 K28
+ 0x60240008, // 0071 GETGBL R9 G8
+ 0x5C280A00, // 0072 MOVE R10 R5
+ 0x7C240200, // 0073 CALL R9 1
+ 0x00201009, // 0074 ADD R8 R8 R9
+ 0x5824000B, // 0075 LDCONST R9 K11
+ 0x7C180600, // 0076 CALL R6 3
+ 0x70020000, // 0077 JMP #0079
+ 0xB0080000, // 0078 RAISE 2 R0 R0
+ 0x80000000, // 0079 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: load_param
+********************************************************************/
+be_local_closure(Matter_Device_load_param, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[24]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(crypto),
+ /* K2 */ be_nested_str_weak(FILENAME),
+ /* K3 */ be_nested_str_weak(read),
+ /* K4 */ be_nested_str_weak(close),
+ /* K5 */ be_nested_str_weak(json),
+ /* K6 */ be_nested_str_weak(load),
+ /* K7 */ be_nested_str_weak(root_discriminator),
+ /* K8 */ be_nested_str_weak(find),
+ /* K9 */ be_nested_str_weak(distinguish),
+ /* K10 */ be_nested_str_weak(root_passcode),
+ /* K11 */ be_nested_str_weak(passcode),
+ /* K12 */ be_nested_str_weak(ipv4only),
+ /* K13 */ be_nested_str_weak(io_error),
+ /* K14 */ be_nested_str_weak(tasmota),
+ /* K15 */ be_nested_str_weak(log),
+ /* K16 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A),
+ /* K17 */ be_nested_str_weak(_X7C),
+ /* K18 */ be_const_int(2),
+ /* K19 */ be_nested_str_weak(random),
+ /* K20 */ be_nested_str_weak(get),
+ /* K21 */ be_const_int(0),
+ /* K22 */ be_nested_str_weak(PASSCODE_DEFAULT),
+ /* K23 */ be_nested_str_weak(save_param),
+ }),
+ be_str_weak(load_param),
+ &be_const_str_solidified,
+ ( &(const binstruction[79]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA40A0200, // 0001 IMPORT R2 K1
+ 0xA802001D, // 0002 EXBLK 0 #0021
+ 0x600C0011, // 0003 GETGBL R3 G17
+ 0x88100102, // 0004 GETMBR R4 R0 K2
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C100703, // 0006 GETMET R4 R3 K3
+ 0x7C100200, // 0007 CALL R4 1
+ 0x8C140704, // 0008 GETMET R5 R3 K4
+ 0x7C140200, // 0009 CALL R5 1
+ 0xA4160A00, // 000A IMPORT R5 K5
+ 0x8C180B06, // 000B GETMET R6 R5 K6
+ 0x5C200800, // 000C MOVE R8 R4
+ 0x7C180400, // 000D CALL R6 2
+ 0x8C1C0D08, // 000E GETMET R7 R6 K8
+ 0x58240009, // 000F LDCONST R9 K9
+ 0x88280107, // 0010 GETMBR R10 R0 K7
+ 0x7C1C0600, // 0011 CALL R7 3
+ 0x90020E07, // 0012 SETMBR R0 K7 R7
+ 0x8C1C0D08, // 0013 GETMET R7 R6 K8
+ 0x5824000B, // 0014 LDCONST R9 K11
+ 0x8828010A, // 0015 GETMBR R10 R0 K10
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x90021407, // 0017 SETMBR R0 K10 R7
+ 0x601C0017, // 0018 GETGBL R7 G23
+ 0x8C200D08, // 0019 GETMET R8 R6 K8
+ 0x5828000C, // 001A LDCONST R10 K12
+ 0x502C0000, // 001B LDBOOL R11 0 0
+ 0x7C200600, // 001C CALL R8 3
+ 0x7C1C0200, // 001D CALL R7 1
+ 0x90021807, // 001E SETMBR R0 K12 R7
+ 0xA8040001, // 001F EXBLK 1 1
+ 0x70020012, // 0020 JMP #0034
+ 0xAC0C0002, // 0021 CATCH R3 0 2
+ 0x7002000F, // 0022 JMP #0033
+ 0x2014070D, // 0023 NE R5 R3 K13
+ 0x7816000C, // 0024 JMPF R5 #0032
+ 0xB8161C00, // 0025 GETNGBL R5 K14
+ 0x8C140B0F, // 0026 GETMET R5 R5 K15
+ 0x601C0008, // 0027 GETGBL R7 G8
+ 0x5C200600, // 0028 MOVE R8 R3
+ 0x7C1C0200, // 0029 CALL R7 1
+ 0x001E2007, // 002A ADD R7 K16 R7
+ 0x001C0F11, // 002B ADD R7 R7 K17
+ 0x60200008, // 002C GETGBL R8 G8
+ 0x5C240800, // 002D MOVE R9 R4
+ 0x7C200200, // 002E CALL R8 1
+ 0x001C0E08, // 002F ADD R7 R7 R8
+ 0x58200012, // 0030 LDCONST R8 K18
+ 0x7C140600, // 0031 CALL R5 3
+ 0x70020000, // 0032 JMP #0034
+ 0xB0080000, // 0033 RAISE 2 R0 R0
+ 0x500C0000, // 0034 LDBOOL R3 0 0
+ 0x88100107, // 0035 GETMBR R4 R0 K7
+ 0x4C140000, // 0036 LDNIL R5
+ 0x1C100805, // 0037 EQ R4 R4 R5
+ 0x7812000A, // 0038 JMPF R4 #0044
+ 0x8C100513, // 0039 GETMET R4 R2 K19
+ 0x58180012, // 003A LDCONST R6 K18
+ 0x7C100400, // 003B CALL R4 2
+ 0x8C100914, // 003C GETMET R4 R4 K20
+ 0x58180015, // 003D LDCONST R6 K21
+ 0x581C0012, // 003E LDCONST R7 K18
+ 0x7C100600, // 003F CALL R4 3
+ 0x54160FFE, // 0040 LDINT R5 4095
+ 0x2C100805, // 0041 AND R4 R4 R5
+ 0x90020E04, // 0042 SETMBR R0 K7 R4
+ 0x500C0200, // 0043 LDBOOL R3 1 0
+ 0x8810010A, // 0044 GETMBR R4 R0 K10
+ 0x4C140000, // 0045 LDNIL R5
+ 0x1C100805, // 0046 EQ R4 R4 R5
+ 0x78120002, // 0047 JMPF R4 #004B
+ 0x88100116, // 0048 GETMBR R4 R0 K22
+ 0x90021404, // 0049 SETMBR R0 K10 R4
+ 0x500C0200, // 004A LDBOOL R3 1 0
+ 0x780E0001, // 004B JMPF R3 #004E
+ 0x8C100117, // 004C GETMET R4 R0 K23
+ 0x7C100200, // 004D CALL R4 1
+ 0x80000000, // 004E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: msg_send
+********************************************************************/
+be_local_closure(Matter_Device_msg_send, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(udp_server),
+ /* K1 */ be_nested_str_weak(send_response),
+ }),
+ be_str_weak(msg_send),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x88140100, // 0000 GETMBR R5 R0 K0
+ 0x8C140B01, // 0001 GETMET R5 R5 K1
+ 0x5C1C0200, // 0002 MOVE R7 R1
+ 0x5C200400, // 0003 MOVE R8 R2
+ 0x5C240600, // 0004 MOVE R9 R3
+ 0x5C280800, // 0005 MOVE R10 R4
+ 0x7C140A00, // 0006 CALL R5 5
+ 0x80040A00, // 0007 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_root_basic_commissioning
+********************************************************************/
+be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(PASE_TIMEOUT),
+ /* K1 */ be_nested_str_weak(compute_pbkdf),
+ /* K2 */ be_nested_str_weak(root_passcode),
+ /* K3 */ be_nested_str_weak(root_iterations),
+ /* K4 */ be_nested_str_weak(root_salt),
+ /* K5 */ be_nested_str_weak(start_basic_commissioning),
+ /* K6 */ be_nested_str_weak(root_discriminator),
+ /* K7 */ be_nested_str_weak(root_w0),
+ /* K8 */ be_nested_str_weak(root_L),
+ }),
+ be_str_weak(start_root_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[19]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x88040100, // 0003 GETMBR R1 R0 K0
+ 0x8C080101, // 0004 GETMET R2 R0 K1
+ 0x88100102, // 0005 GETMBR R4 R0 K2
+ 0x88140103, // 0006 GETMBR R5 R0 K3
+ 0x88180104, // 0007 GETMBR R6 R0 K4
+ 0x7C080800, // 0008 CALL R2 4
+ 0x8C080105, // 0009 GETMET R2 R0 K5
+ 0x5C100200, // 000A MOVE R4 R1
+ 0x88140103, // 000B GETMBR R5 R0 K3
+ 0x88180106, // 000C GETMBR R6 R0 K6
+ 0x881C0104, // 000D GETMBR R7 R0 K4
+ 0x88200107, // 000E GETMBR R8 R0 K7
+ 0x88240108, // 000F GETMBR R9 R0 K8
+ 0x4C280000, // 0010 LDNIL R10
+ 0x7C081000, // 0011 CALL R2 8
+ 0x80000000, // 0012 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Device_init, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 3]) {
+ be_nested_proto(
+ 2, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(trigger_read_sensors),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0x80000000, // 0003 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_udp),
+ /* K1 */ be_nested_str_weak(UDP_PORT),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(remove_rule),
+ /* K4 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K5 */ be_nested_str_weak(matter_device_udp),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x68080000, // 0002 GETUPV R2 U0
+ 0x88080501, // 0003 GETMBR R2 R2 K1
+ 0x7C000400, // 0004 CALL R0 2
+ 0xB8020400, // 0005 GETNGBL R0 K2
+ 0x8C000103, // 0006 GETMET R0 R0 K3
+ 0x58080004, // 0007 LDCONST R2 K4
+ 0x580C0005, // 0008 LDCONST R3 K5
+ 0x7C000600, // 0009 CALL R0 3
+ 0x80000000, // 000A RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_udp),
+ /* K1 */ be_nested_str_weak(UDP_PORT),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(remove_rule),
+ /* K4 */ be_nested_str_weak(Eth_X23Connected),
+ /* K5 */ be_nested_str_weak(matter_device_udp),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x68080000, // 0002 GETUPV R2 U0
+ 0x88080501, // 0003 GETMBR R2 R2 K1
+ 0x7C000400, // 0004 CALL R0 2
+ 0xB8020400, // 0005 GETNGBL R0 K2
+ 0x8C000103, // 0006 GETMET R0 R0 K3
+ 0x58080004, // 0007 LDCONST R2 K4
+ 0x580C0005, // 0008 LDCONST R3 K5
+ 0x7C000600, // 0009 CALL R0 3
+ 0x80000000, // 000A RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[44]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(get_option),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(MATTER_OPTION),
+ /* K6 */ be_nested_str_weak(UI),
+ /* K7 */ be_nested_str_weak(plugins),
+ /* K8 */ be_nested_str_weak(vendorid),
+ /* K9 */ be_nested_str_weak(VENDOR_ID),
+ /* K10 */ be_nested_str_weak(productid),
+ /* K11 */ be_nested_str_weak(PRODUCT_ID),
+ /* K12 */ be_nested_str_weak(root_iterations),
+ /* K13 */ be_nested_str_weak(PBKDF_ITERATIONS),
+ /* K14 */ be_nested_str_weak(root_salt),
+ /* K15 */ be_nested_str_weak(random),
+ /* K16 */ be_nested_str_weak(ipv4only),
+ /* K17 */ be_nested_str_weak(load_param),
+ /* K18 */ be_nested_str_weak(sessions),
+ /* K19 */ be_nested_str_weak(Session_Store),
+ /* K20 */ be_nested_str_weak(load_fabrics),
+ /* K21 */ be_nested_str_weak(message_handler),
+ /* K22 */ be_nested_str_weak(MessageHandler),
+ /* K23 */ be_nested_str_weak(ui),
+ /* K24 */ be_nested_str_weak(push),
+ /* K25 */ be_nested_str_weak(Plugin_Root),
+ /* K26 */ be_const_int(0),
+ /* K27 */ be_nested_str_weak(Plugin_OnOff),
+ /* K28 */ be_const_int(1),
+ /* K29 */ be_nested_str_weak(add_cron),
+ /* K30 */ be_nested_str_weak(_X2A_X2F5_X20_X2A_X20_X2A_X20_X2A_X20_X2A_X20_X2A),
+ /* K31 */ be_nested_str_weak(matter_sensors_5s),
+ /* K32 */ be_nested_str_weak(start_mdns_announce_hostnames),
+ /* K33 */ be_nested_str_weak(wifi),
+ /* K34 */ be_nested_str_weak(up),
+ /* K35 */ be_nested_str_weak(start_udp),
+ /* K36 */ be_nested_str_weak(UDP_PORT),
+ /* K37 */ be_nested_str_weak(add_rule),
+ /* K38 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K39 */ be_nested_str_weak(matter_device_udp),
+ /* K40 */ be_nested_str_weak(eth),
+ /* K41 */ be_nested_str_weak(Eth_X23Connected),
+ /* K42 */ be_nested_str_weak(init_basic_commissioning),
+ /* K43 */ be_nested_str_weak(add_driver),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[110]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA40A0200, // 0001 IMPORT R2 K1
+ 0xB80E0400, // 0002 GETNGBL R3 K2
+ 0x8C0C0703, // 0003 GETMET R3 R3 K3
+ 0xB8160800, // 0004 GETNGBL R5 K4
+ 0x88140B05, // 0005 GETMBR R5 R5 K5
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x740E0004, // 0007 JMPT R3 #000D
+ 0xB80E0800, // 0008 GETNGBL R3 K4
+ 0x8C0C0706, // 0009 GETMET R3 R3 K6
+ 0x5C140000, // 000A MOVE R5 R0
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x80000600, // 000C RET 0
+ 0x600C0012, // 000D GETGBL R3 G18
+ 0x7C0C0000, // 000E CALL R3 0
+ 0x90020E03, // 000F SETMBR R0 K7 R3
+ 0x880C0109, // 0010 GETMBR R3 R0 K9
+ 0x90021003, // 0011 SETMBR R0 K8 R3
+ 0x880C010B, // 0012 GETMBR R3 R0 K11
+ 0x90021403, // 0013 SETMBR R0 K10 R3
+ 0x880C010D, // 0014 GETMBR R3 R0 K13
+ 0x90021803, // 0015 SETMBR R0 K12 R3
+ 0x8C0C030F, // 0016 GETMET R3 R1 K15
+ 0x5416000F, // 0017 LDINT R5 16
+ 0x7C0C0400, // 0018 CALL R3 2
+ 0x90021C03, // 0019 SETMBR R0 K14 R3
+ 0x500C0000, // 001A LDBOOL R3 0 0
+ 0x90022003, // 001B SETMBR R0 K16 R3
+ 0x8C0C0111, // 001C GETMET R3 R0 K17
+ 0x7C0C0200, // 001D CALL R3 1
+ 0xB80E0800, // 001E GETNGBL R3 K4
+ 0x8C0C0713, // 001F GETMET R3 R3 K19
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x90022403, // 0021 SETMBR R0 K18 R3
+ 0x880C0112, // 0022 GETMBR R3 R0 K18
+ 0x8C0C0714, // 0023 GETMET R3 R3 K20
+ 0x7C0C0200, // 0024 CALL R3 1
+ 0xB80E0800, // 0025 GETNGBL R3 K4
+ 0x8C0C0716, // 0026 GETMET R3 R3 K22
+ 0x5C140000, // 0027 MOVE R5 R0
+ 0x7C0C0400, // 0028 CALL R3 2
+ 0x90022A03, // 0029 SETMBR R0 K21 R3
+ 0xB80E0800, // 002A GETNGBL R3 K4
+ 0x8C0C0706, // 002B GETMET R3 R3 K6
+ 0x5C140000, // 002C MOVE R5 R0
+ 0x7C0C0400, // 002D CALL R3 2
+ 0x90022E03, // 002E SETMBR R0 K23 R3
+ 0x880C0107, // 002F GETMBR R3 R0 K7
+ 0x8C0C0718, // 0030 GETMET R3 R3 K24
+ 0xB8160800, // 0031 GETNGBL R5 K4
+ 0x8C140B19, // 0032 GETMET R5 R5 K25
+ 0x5C1C0000, // 0033 MOVE R7 R0
+ 0x5820001A, // 0034 LDCONST R8 K26
+ 0x7C140600, // 0035 CALL R5 3
+ 0x7C0C0400, // 0036 CALL R3 2
+ 0x880C0107, // 0037 GETMBR R3 R0 K7
+ 0x8C0C0718, // 0038 GETMET R3 R3 K24
+ 0xB8160800, // 0039 GETNGBL R5 K4
+ 0x8C140B1B, // 003A GETMET R5 R5 K27
+ 0x5C1C0000, // 003B MOVE R7 R0
+ 0x5820001C, // 003C LDCONST R8 K28
+ 0x5824001A, // 003D LDCONST R9 K26
+ 0x7C140800, // 003E CALL R5 4
+ 0x7C0C0400, // 003F CALL R3 2
+ 0xB80E0400, // 0040 GETNGBL R3 K2
+ 0x8C0C071D, // 0041 GETMET R3 R3 K29
+ 0x5814001E, // 0042 LDCONST R5 K30
+ 0x84180000, // 0043 CLOSURE R6 P0
+ 0x581C001F, // 0044 LDCONST R7 K31
+ 0x7C0C0800, // 0045 CALL R3 4
+ 0x8C0C0120, // 0046 GETMET R3 R0 K32
+ 0x7C0C0200, // 0047 CALL R3 1
+ 0xB80E0400, // 0048 GETNGBL R3 K2
+ 0x8C0C0721, // 0049 GETMET R3 R3 K33
+ 0x7C0C0200, // 004A CALL R3 1
+ 0x940C0722, // 004B GETIDX R3 R3 K34
+ 0x780E0003, // 004C JMPF R3 #0051
+ 0x8C0C0123, // 004D GETMET R3 R0 K35
+ 0x88140124, // 004E GETMBR R5 R0 K36
+ 0x7C0C0400, // 004F CALL R3 2
+ 0x70020005, // 0050 JMP #0057
+ 0xB80E0400, // 0051 GETNGBL R3 K2
+ 0x8C0C0725, // 0052 GETMET R3 R3 K37
+ 0x58140026, // 0053 LDCONST R5 K38
+ 0x84180001, // 0054 CLOSURE R6 P1
+ 0x581C0027, // 0055 LDCONST R7 K39
+ 0x7C0C0800, // 0056 CALL R3 4
+ 0xB80E0400, // 0057 GETNGBL R3 K2
+ 0x8C0C0728, // 0058 GETMET R3 R3 K40
+ 0x7C0C0200, // 0059 CALL R3 1
+ 0x940C0722, // 005A GETIDX R3 R3 K34
+ 0x780E0003, // 005B JMPF R3 #0060
+ 0x8C0C0123, // 005C GETMET R3 R0 K35
+ 0x88140124, // 005D GETMBR R5 R0 K36
+ 0x7C0C0400, // 005E CALL R3 2
+ 0x70020005, // 005F JMP #0066
+ 0xB80E0400, // 0060 GETNGBL R3 K2
+ 0x8C0C0725, // 0061 GETMET R3 R3 K37
+ 0x58140029, // 0062 LDCONST R5 K41
+ 0x84180002, // 0063 CLOSURE R6 P2
+ 0x581C0027, // 0064 LDCONST R7 K39
+ 0x7C0C0800, // 0065 CALL R3 4
+ 0x8C0C012A, // 0066 GETMET R3 R0 K42
+ 0x7C0C0200, // 0067 CALL R3 1
+ 0xB80E0400, // 0068 GETNGBL R3 K2
+ 0x8C0C072B, // 0069 GETMET R3 R3 K43
+ 0x5C140000, // 006A MOVE R5 R0
+ 0x7C0C0400, // 006B CALL R3 2
+ 0xA0000000, // 006C CLOSE R0
+ 0x80000000, // 006D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_commissioning_open
+********************************************************************/
+be_local_closure(Matter_Device_is_commissioning_open, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
+ }),
+ be_str_weak(is_commissioning_open),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compute_pbkdf
+********************************************************************/
+be_local_closure(Matter_Device_compute_pbkdf, /* name */
+ be_nested_proto(
+ 20, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[26]) { /* constants */
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(add),
+ /* K3 */ be_nested_str_weak(PBKDF2_HMAC_SHA256),
+ /* K4 */ be_nested_str_weak(derive),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(root_w0),
+ /* K7 */ be_nested_str_weak(EC_P256),
+ /* K8 */ be_nested_str_weak(mod),
+ /* K9 */ be_nested_str_weak(root_L),
+ /* K10 */ be_nested_str_weak(public_key),
+ /* K11 */ be_nested_str_weak(tasmota),
+ /* K12 */ be_nested_str_weak(log),
+ /* K13 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A),
+ /* K14 */ be_nested_str_weak(MTR_X3A_X20salt_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K15 */ be_nested_str_weak(root_salt),
+ /* K16 */ be_nested_str_weak(tohex),
+ /* K17 */ be_nested_str_weak(MTR_X3A_X20passcode_hex_X20_X20_X3D_X20),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20w0_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K19 */ be_nested_str_weak(MTR_X3A_X20L_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20),
+ /* K20 */ be_nested_str_weak(compute_manual_pairing_code),
+ /* K21 */ be_nested_str_weak(format),
+ /* K22 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s_X2D_X25s_X2D_X25s),
+ /* K23 */ be_const_int(3),
+ /* K24 */ be_const_int(2147483647),
+ /* K25 */ be_const_int(2),
+ }),
+ be_str_weak(compute_pbkdf),
+ &be_const_str_solidified,
+ ( &(const binstruction[100]) { /* code */
+ 0xA4120000, // 0000 IMPORT R4 K0
+ 0xA4160200, // 0001 IMPORT R5 K1
+ 0x60180015, // 0002 GETGBL R6 G21
+ 0x7C180000, // 0003 CALL R6 0
+ 0x8C180D02, // 0004 GETMET R6 R6 K2
+ 0x5C200200, // 0005 MOVE R8 R1
+ 0x54260003, // 0006 LDINT R9 4
+ 0x7C180600, // 0007 CALL R6 3
+ 0x8C1C0903, // 0008 GETMET R7 R4 K3
+ 0x7C1C0200, // 0009 CALL R7 1
+ 0x8C1C0F04, // 000A GETMET R7 R7 K4
+ 0x5C240C00, // 000B MOVE R9 R6
+ 0x5C280600, // 000C MOVE R10 R3
+ 0x5C2C0400, // 000D MOVE R11 R2
+ 0x5432004F, // 000E LDINT R12 80
+ 0x7C1C0A00, // 000F CALL R7 5
+ 0x54220026, // 0010 LDINT R8 39
+ 0x40220A08, // 0011 CONNECT R8 K5 R8
+ 0x94200E08, // 0012 GETIDX R8 R7 R8
+ 0x54260027, // 0013 LDINT R9 40
+ 0x542A004E, // 0014 LDINT R10 79
+ 0x4024120A, // 0015 CONNECT R9 R9 R10
+ 0x94240E09, // 0016 GETIDX R9 R7 R9
+ 0x8C280907, // 0017 GETMET R10 R4 K7
+ 0x7C280200, // 0018 CALL R10 1
+ 0x8C281508, // 0019 GETMET R10 R10 K8
+ 0x5C301000, // 001A MOVE R12 R8
+ 0x7C280400, // 001B CALL R10 2
+ 0x90020C0A, // 001C SETMBR R0 K6 R10
+ 0x8C280907, // 001D GETMET R10 R4 K7
+ 0x7C280200, // 001E CALL R10 1
+ 0x8C281508, // 001F GETMET R10 R10 K8
+ 0x5C301200, // 0020 MOVE R12 R9
+ 0x7C280400, // 0021 CALL R10 2
+ 0x8C2C0907, // 0022 GETMET R11 R4 K7
+ 0x7C2C0200, // 0023 CALL R11 1
+ 0x8C2C170A, // 0024 GETMET R11 R11 K10
+ 0x5C341400, // 0025 MOVE R13 R10
+ 0x7C2C0400, // 0026 CALL R11 2
+ 0x9002120B, // 0027 SETMBR R0 K9 R11
+ 0xB82E1600, // 0028 GETNGBL R11 K11
+ 0x8C2C170C, // 0029 GETMET R11 R11 K12
+ 0x5834000D, // 002A LDCONST R13 K13
+ 0x543A0003, // 002B LDINT R14 4
+ 0x7C2C0600, // 002C CALL R11 3
+ 0xB82E1600, // 002D GETNGBL R11 K11
+ 0x8C2C170C, // 002E GETMET R11 R11 K12
+ 0x8834010F, // 002F GETMBR R13 R0 K15
+ 0x8C341B10, // 0030 GETMET R13 R13 K16
+ 0x7C340200, // 0031 CALL R13 1
+ 0x00361C0D, // 0032 ADD R13 K14 R13
+ 0x543A0003, // 0033 LDINT R14 4
+ 0x7C2C0600, // 0034 CALL R11 3
+ 0xB82E1600, // 0035 GETNGBL R11 K11
+ 0x8C2C170C, // 0036 GETMET R11 R11 K12
+ 0x8C340D10, // 0037 GETMET R13 R6 K16
+ 0x7C340200, // 0038 CALL R13 1
+ 0x0036220D, // 0039 ADD R13 K17 R13
+ 0x543A0003, // 003A LDINT R14 4
+ 0x7C2C0600, // 003B CALL R11 3
+ 0xB82E1600, // 003C GETNGBL R11 K11
+ 0x8C2C170C, // 003D GETMET R11 R11 K12
+ 0x88340106, // 003E GETMBR R13 R0 K6
+ 0x8C341B10, // 003F GETMET R13 R13 K16
+ 0x7C340200, // 0040 CALL R13 1
+ 0x0036240D, // 0041 ADD R13 K18 R13
+ 0x543A0003, // 0042 LDINT R14 4
+ 0x7C2C0600, // 0043 CALL R11 3
+ 0xB82E1600, // 0044 GETNGBL R11 K11
+ 0x8C2C170C, // 0045 GETMET R11 R11 K12
+ 0x88340109, // 0046 GETMBR R13 R0 K9
+ 0x8C341B10, // 0047 GETMET R13 R13 K16
+ 0x7C340200, // 0048 CALL R13 1
+ 0x0036260D, // 0049 ADD R13 K19 R13
+ 0x543A0003, // 004A LDINT R14 4
+ 0x7C2C0600, // 004B CALL R11 3
+ 0xB82E1600, // 004C GETNGBL R11 K11
+ 0x8C2C170C, // 004D GETMET R11 R11 K12
+ 0x5834000D, // 004E LDCONST R13 K13
+ 0x543A0003, // 004F LDINT R14 4
+ 0x7C2C0600, // 0050 CALL R11 3
+ 0x8C2C0114, // 0051 GETMET R11 R0 K20
+ 0x7C2C0200, // 0052 CALL R11 1
+ 0xB8321600, // 0053 GETNGBL R12 K11
+ 0x8C30190C, // 0054 GETMET R12 R12 K12
+ 0x8C380B15, // 0055 GETMET R14 R5 K21
+ 0x58400016, // 0056 LDCONST R16 K22
+ 0x40460B17, // 0057 CONNECT R17 K5 K23
+ 0x94441611, // 0058 GETIDX R17 R11 R17
+ 0x544A0003, // 0059 LDINT R18 4
+ 0x544E0005, // 005A LDINT R19 6
+ 0x40482413, // 005B CONNECT R18 R18 R19
+ 0x94481612, // 005C GETIDX R18 R11 R18
+ 0x544E0006, // 005D LDINT R19 7
+ 0x404C2718, // 005E CONNECT R19 R19 K24
+ 0x944C1613, // 005F GETIDX R19 R11 R19
+ 0x7C380A00, // 0060 CALL R14 5
+ 0x583C0019, // 0061 LDCONST R15 K25
+ 0x7C300600, // 0062 CALL R12 3
+ 0x80000000, // 0063 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(Matter_Device_invoke_request, /* name */
+ be_nested_proto(
+ 11, /* 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_const_int(0),
+ /* K1 */ be_nested_str_weak(plugins),
+ /* K2 */ be_nested_str_weak(invoke_request),
+ /* K3 */ be_nested_str_weak(status),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
+ /* K6 */ be_const_int(1),
+ }),
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0x58100000, // 0000 LDCONST R4 K0
+ 0x6014000C, // 0001 GETGBL R5 G12
+ 0x88180101, // 0002 GETMBR R6 R0 K1
+ 0x7C140200, // 0003 CALL R5 1
+ 0x14140805, // 0004 LT R5 R4 R5
+ 0x78160011, // 0005 JMPF R5 #0018
+ 0x88140101, // 0006 GETMBR R5 R0 K1
+ 0x94140A04, // 0007 GETIDX R5 R5 R4
+ 0x8C180B02, // 0008 GETMET R6 R5 K2
+ 0x5C200200, // 0009 MOVE R8 R1
+ 0x5C240400, // 000A MOVE R9 R2
+ 0x5C280600, // 000B MOVE R10 R3
+ 0x7C180800, // 000C CALL R6 4
+ 0x4C1C0000, // 000D LDNIL R7
+ 0x201C0C07, // 000E NE R7 R6 R7
+ 0x741E0004, // 000F JMPT R7 #0015
+ 0x881C0703, // 0010 GETMBR R7 R3 K3
+ 0xB8220800, // 0011 GETNGBL R8 K4
+ 0x88201105, // 0012 GETMBR R8 R8 K5
+ 0x201C0E08, // 0013 NE R7 R7 R8
+ 0x781E0000, // 0014 JMPF R7 #0016
+ 0x80040C00, // 0015 RET 1 R6
+ 0x00100906, // 0016 ADD R4 R4 K6
+ 0x7001FFE8, // 0017 JMP #0001
+ 0x80000000, // 0018 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_250ms
+********************************************************************/
+be_local_closure(Matter_Device_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(message_handler),
+ /* K1 */ be_nested_str_weak(every_250ms),
+ }),
+ be_str_weak(every_250ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_commissioning_complete
+********************************************************************/
+be_local_closure(Matter_Device_start_commissioning_complete, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20Commissioning_X20complete_X20_X2A_X2A_X2A),
+ /* K3 */ be_const_int(2),
+ /* K4 */ be_nested_str_weak(stop_basic_commissioning),
+ }),
+ be_str_weak(start_commissioning_complete),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x58100002, // 0002 LDCONST R4 K2
+ 0x58140003, // 0003 LDCONST R5 K3
+ 0x7C080600, // 0004 CALL R2 3
+ 0x8C080104, // 0005 GETMET R2 R0 K4
+ 0x7C080200, // 0006 CALL R2 1
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compute_manual_pairing_code
+********************************************************************/
+be_local_closure(Matter_Device_compute_manual_pairing_code, /* 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(string),
+ /* K1 */ be_nested_str_weak(root_discriminator),
+ /* K2 */ be_nested_str_weak(root_passcode),
+ /* K3 */ be_nested_str_weak(format),
+ /* K4 */ be_nested_str_weak(_X251i_X2505i_X2504i),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(Verhoeff),
+ /* K7 */ be_nested_str_weak(checksum),
+ }),
+ be_str_weak(compute_manual_pairing_code),
+ &be_const_str_solidified,
+ ( &(const binstruction[31]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x540E0FFE, // 0002 LDINT R3 4095
+ 0x2C080403, // 0003 AND R2 R2 R3
+ 0x540E0009, // 0004 LDINT R3 10
+ 0x3C080403, // 0005 SHR R2 R2 R3
+ 0x880C0101, // 0006 GETMBR R3 R0 K1
+ 0x541202FF, // 0007 LDINT R4 768
+ 0x2C0C0604, // 0008 AND R3 R3 R4
+ 0x54120005, // 0009 LDINT R4 6
+ 0x380C0604, // 000A SHL R3 R3 R4
+ 0x88100102, // 000B GETMBR R4 R0 K2
+ 0x54163FFE, // 000C LDINT R5 16383
+ 0x2C100805, // 000D AND R4 R4 R5
+ 0x300C0604, // 000E OR R3 R3 R4
+ 0x88100102, // 000F GETMBR R4 R0 K2
+ 0x5416000D, // 0010 LDINT R5 14
+ 0x3C100805, // 0011 SHR R4 R4 R5
+ 0x8C140303, // 0012 GETMET R5 R1 K3
+ 0x581C0004, // 0013 LDCONST R7 K4
+ 0x5C200400, // 0014 MOVE R8 R2
+ 0x5C240600, // 0015 MOVE R9 R3
+ 0x5C280800, // 0016 MOVE R10 R4
+ 0x7C140A00, // 0017 CALL R5 5
+ 0xB81A0A00, // 0018 GETNGBL R6 K5
+ 0x88180D06, // 0019 GETMBR R6 R6 K6
+ 0x8C180D07, // 001A GETMET R6 R6 K7
+ 0x5C200A00, // 001B MOVE R8 R5
+ 0x7C180400, // 001C CALL R6 2
+ 0x00140A06, // 001D ADD R5 R5 R6
+ 0x80040A00, // 001E RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: remove_fabric
+********************************************************************/
+be_local_closure(Matter_Device_remove_fabric, /* 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(message_handler),
+ /* K1 */ be_nested_str_weak(im),
+ /* K2 */ be_nested_str_weak(subs),
+ /* K3 */ be_nested_str_weak(remove_by_fabric),
+ /* K4 */ be_nested_str_weak(sessions),
+ /* K5 */ be_nested_str_weak(remove_fabric),
+ /* K6 */ be_nested_str_weak(save_fabrics),
+ }),
+ be_str_weak(remove_fabric),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080501, // 0001 GETMBR R2 R2 K1
+ 0x88080502, // 0002 GETMBR R2 R2 K2
+ 0x8C080503, // 0003 GETMET R2 R2 K3
+ 0x5C100200, // 0004 MOVE R4 R1
+ 0x7C080400, // 0005 CALL R2 2
+ 0x88080104, // 0006 GETMBR R2 R0 K4
+ 0x8C080505, // 0007 GETMET R2 R2 K5
+ 0x5C100200, // 0008 MOVE R4 R1
+ 0x7C080400, // 0009 CALL R2 2
+ 0x88080104, // 000A GETMBR R2 R0 K4
+ 0x8C080506, // 000B GETMET R2 R2 K6
+ 0x7C080200, // 000C CALL R2 1
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: trigger_read_sensors
+********************************************************************/
+be_local_closure(Matter_Device_trigger_read_sensors, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(json),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(read_sensors),
+ /* K3 */ be_nested_str_weak(load),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(plugins),
+ /* K6 */ be_nested_str_weak(parse_sensors),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str_weak(log),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20),
+ /* K10 */ be_const_int(3),
+ }),
+ be_str_weak(trigger_read_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[30]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xB80A0200, // 0001 GETNGBL R2 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x7C080200, // 0003 CALL R2 1
+ 0x8C0C0303, // 0004 GETMET R3 R1 K3
+ 0x5C140400, // 0005 MOVE R5 R2
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x4C100000, // 0007 LDNIL R4
+ 0x20100604, // 0008 NE R4 R3 R4
+ 0x7812000D, // 0009 JMPF R4 #0018
+ 0x58100004, // 000A LDCONST R4 K4
+ 0x6014000C, // 000B GETGBL R5 G12
+ 0x88180105, // 000C GETMBR R6 R0 K5
+ 0x7C140200, // 000D CALL R5 1
+ 0x14140805, // 000E LT R5 R4 R5
+ 0x78160006, // 000F JMPF R5 #0017
+ 0x88140105, // 0010 GETMBR R5 R0 K5
+ 0x94140A04, // 0011 GETIDX R5 R5 R4
+ 0x8C140B06, // 0012 GETMET R5 R5 K6
+ 0x5C1C0600, // 0013 MOVE R7 R3
+ 0x7C140400, // 0014 CALL R5 2
+ 0x00100907, // 0015 ADD R4 R4 K7
+ 0x7001FFF3, // 0016 JMP #000B
+ 0x70020004, // 0017 JMP #001D
+ 0xB8120200, // 0018 GETNGBL R4 K1
+ 0x8C100908, // 0019 GETMET R4 R4 K8
+ 0x001A1202, // 001A ADD R6 K9 R2
+ 0x581C000A, // 001B LDCONST R7 K10
+ 0x7C100600, // 001C CALL R4 3
+ 0x80000000, // 001D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: save_before_restart
+********************************************************************/
+be_local_closure(Matter_Device_save_before_restart, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics),
+ }),
+ be_str_weak(save_before_restart),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x7C040200, // 0003 CALL R1 1
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_remove_op_discovery
+********************************************************************/
+be_local_closure(Matter_Device_mdns_remove_op_discovery, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[24]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(get_device_id),
+ /* K3 */ be_nested_str_weak(copy),
+ /* K4 */ be_nested_str_weak(reverse),
+ /* K5 */ be_nested_str_weak(get_fabric_compressed),
+ /* K6 */ be_nested_str_weak(tohex),
+ /* K7 */ be_nested_str_weak(_X2D),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(eth),
+ /* K10 */ be_nested_str_weak(find),
+ /* K11 */ be_nested_str_weak(up),
+ /* K12 */ be_nested_str_weak(log),
+ /* K13 */ be_nested_str_weak(format),
+ /* K14 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27),
+ /* K15 */ be_const_int(2),
+ /* K16 */ be_nested_str_weak(remove_service),
+ /* K17 */ be_nested_str_weak(_matter),
+ /* K18 */ be_nested_str_weak(_tcp),
+ /* K19 */ be_nested_str_weak(hostname_eth),
+ /* K20 */ be_nested_str_weak(wifi),
+ /* K21 */ be_nested_str_weak(hostname_wifi),
+ /* K22 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K23 */ be_nested_str_weak(_X7C),
+ }),
+ be_str_weak(mdns_remove_op_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[81]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40E0200, // 0001 IMPORT R3 K1
+ 0xA802003B, // 0002 EXBLK 0 #003F
+ 0x8C100302, // 0003 GETMET R4 R1 K2
+ 0x7C100200, // 0004 CALL R4 1
+ 0x8C100903, // 0005 GETMET R4 R4 K3
+ 0x7C100200, // 0006 CALL R4 1
+ 0x8C100904, // 0007 GETMET R4 R4 K4
+ 0x7C100200, // 0008 CALL R4 1
+ 0x8C140305, // 0009 GETMET R5 R1 K5
+ 0x7C140200, // 000A CALL R5 1
+ 0x8C180B06, // 000B GETMET R6 R5 K6
+ 0x7C180200, // 000C CALL R6 1
+ 0x00180D07, // 000D ADD R6 R6 K7
+ 0x8C1C0906, // 000E GETMET R7 R4 K6
+ 0x7C1C0200, // 000F CALL R7 1
+ 0x00180C07, // 0010 ADD R6 R6 R7
+ 0xB81E1000, // 0011 GETNGBL R7 K8
+ 0x8C1C0F09, // 0012 GETMET R7 R7 K9
+ 0x7C1C0200, // 0013 CALL R7 1
+ 0x8C1C0F0A, // 0014 GETMET R7 R7 K10
+ 0x5824000B, // 0015 LDCONST R9 K11
+ 0x7C1C0400, // 0016 CALL R7 2
+ 0x781E000E, // 0017 JMPF R7 #0027
+ 0xB81E1000, // 0018 GETNGBL R7 K8
+ 0x8C1C0F0C, // 0019 GETMET R7 R7 K12
+ 0x8C24070D, // 001A GETMET R9 R3 K13
+ 0x582C000E, // 001B LDCONST R11 K14
+ 0x58300009, // 001C LDCONST R12 K9
+ 0x5C340C00, // 001D MOVE R13 R6
+ 0x7C240800, // 001E CALL R9 4
+ 0x5828000F, // 001F LDCONST R10 K15
+ 0x7C1C0600, // 0020 CALL R7 3
+ 0x8C1C0510, // 0021 GETMET R7 R2 K16
+ 0x58240011, // 0022 LDCONST R9 K17
+ 0x58280012, // 0023 LDCONST R10 K18
+ 0x5C2C0C00, // 0024 MOVE R11 R6
+ 0x88300113, // 0025 GETMBR R12 R0 K19
+ 0x7C1C0A00, // 0026 CALL R7 5
+ 0xB81E1000, // 0027 GETNGBL R7 K8
+ 0x8C1C0F14, // 0028 GETMET R7 R7 K20
+ 0x7C1C0200, // 0029 CALL R7 1
+ 0x8C1C0F0A, // 002A GETMET R7 R7 K10
+ 0x5824000B, // 002B LDCONST R9 K11
+ 0x7C1C0400, // 002C CALL R7 2
+ 0x781E000E, // 002D JMPF R7 #003D
+ 0xB81E1000, // 002E GETNGBL R7 K8
+ 0x8C1C0F0C, // 002F GETMET R7 R7 K12
+ 0x8C24070D, // 0030 GETMET R9 R3 K13
+ 0x582C000E, // 0031 LDCONST R11 K14
+ 0x58300014, // 0032 LDCONST R12 K20
+ 0x5C340C00, // 0033 MOVE R13 R6
+ 0x7C240800, // 0034 CALL R9 4
+ 0x5828000F, // 0035 LDCONST R10 K15
+ 0x7C1C0600, // 0036 CALL R7 3
+ 0x8C1C0510, // 0037 GETMET R7 R2 K16
+ 0x58240011, // 0038 LDCONST R9 K17
+ 0x58280012, // 0039 LDCONST R10 K18
+ 0x5C2C0C00, // 003A MOVE R11 R6
+ 0x88300115, // 003B GETMBR R12 R0 K21
+ 0x7C1C0A00, // 003C CALL R7 5
+ 0xA8040001, // 003D EXBLK 1 1
+ 0x70020010, // 003E JMP #0050
+ 0xAC100002, // 003F CATCH R4 0 2
+ 0x7002000D, // 0040 JMP #004F
+ 0xB81A1000, // 0041 GETNGBL R6 K8
+ 0x8C180D0C, // 0042 GETMET R6 R6 K12
+ 0x60200008, // 0043 GETGBL R8 G8
+ 0x5C240800, // 0044 MOVE R9 R4
+ 0x7C200200, // 0045 CALL R8 1
+ 0x00222C08, // 0046 ADD R8 K22 R8
+ 0x00201117, // 0047 ADD R8 R8 K23
+ 0x60240008, // 0048 GETGBL R9 G8
+ 0x5C280A00, // 0049 MOVE R10 R5
+ 0x7C240200, // 004A CALL R9 1
+ 0x00201009, // 004B ADD R8 R8 R9
+ 0x5824000F, // 004C LDCONST R9 K15
+ 0x7C180600, // 004D CALL R6 3
+ 0x70020000, // 004E JMP #0050
+ 0xB0080000, // 004F RAISE 2 R0 R0
+ 0x80000000, // 0050 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: stop_basic_commissioning
+********************************************************************/
+be_local_closure(Matter_Device_stop_basic_commissioning, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
+ /* K1 */ be_nested_str_weak(mdns_remove_PASE),
+ /* K2 */ be_nested_str_weak(commissioning_iterations),
+ /* K3 */ be_nested_str_weak(commissioning_discriminator),
+ /* K4 */ be_nested_str_weak(commissioning_salt),
+ /* K5 */ be_nested_str_weak(commissioning_w0),
+ /* K6 */ be_nested_str_weak(commissioning_L),
+ /* K7 */ be_nested_str_weak(commissioning_admin_fabric),
+ }),
+ be_str_weak(stop_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x7C040200, // 0003 CALL R1 1
+ 0x4C040000, // 0004 LDNIL R1
+ 0x90020401, // 0005 SETMBR R0 K2 R1
+ 0x4C040000, // 0006 LDNIL R1
+ 0x90020601, // 0007 SETMBR R0 K3 R1
+ 0x4C040000, // 0008 LDNIL R1
+ 0x90020801, // 0009 SETMBR R0 K4 R1
+ 0x4C040000, // 000A LDNIL R1
+ 0x90020A01, // 000B SETMBR R0 K5 R1
+ 0x4C040000, // 000C LDNIL R1
+ 0x90020C01, // 000D SETMBR R0 K6 R1
+ 0x4C040000, // 000E LDNIL R1
+ 0x90020E01, // 000F SETMBR R0 K7 R1
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: msg_received
+********************************************************************/
+be_local_closure(Matter_Device_msg_received, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(message_handler),
+ /* K1 */ be_nested_str_weak(msg_received),
+ }),
+ be_str_weak(msg_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88100100, // 0000 GETMBR R4 R0 K0
+ 0x8C100901, // 0001 GETMET R4 R4 K1
+ 0x5C180200, // 0002 MOVE R6 R1
+ 0x5C1C0400, // 0003 MOVE R7 R2
+ 0x5C200600, // 0004 MOVE R8 R3
+ 0x7C100800, // 0005 CALL R4 4
+ 0x80040800, // 0006 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_udp
+********************************************************************/
+be_local_closure(Matter_Device_start_udp, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(msg_received),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x8C0C0700, // 0001 GETMET R3 R3 K0
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x7C0C0800, // 0005 CALL R3 4
+ 0x80040600, // 0006 RET 1 R3
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(udp_server),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(MTR_X3A_X20starting_X20UDP_X20server_X20on_X20port_X3A_X20),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(UDPServer),
+ /* K7 */ be_nested_str_weak(),
+ /* K8 */ be_nested_str_weak(start),
+ }),
+ be_str_weak(start_udp),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x780A0000, // 0001 JMPF R2 #0003
+ 0x80000400, // 0002 RET 0
+ 0x4C080000, // 0003 LDNIL R2
+ 0x1C080202, // 0004 EQ R2 R1 R2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x540615A3, // 0006 LDINT R1 5540
+ 0xB80A0200, // 0007 GETNGBL R2 K1
+ 0x8C080502, // 0008 GETMET R2 R2 K2
+ 0x60100008, // 0009 GETGBL R4 G8
+ 0x5C140200, // 000A MOVE R5 R1
+ 0x7C100200, // 000B CALL R4 1
+ 0x00120604, // 000C ADD R4 K3 R4
+ 0x58140004, // 000D LDCONST R5 K4
+ 0x7C080600, // 000E CALL R2 3
+ 0xB80A0A00, // 000F GETNGBL R2 K5
+ 0x8C080506, // 0010 GETMET R2 R2 K6
+ 0x58100007, // 0011 LDCONST R4 K7
+ 0x5C140200, // 0012 MOVE R5 R1
+ 0x7C080600, // 0013 CALL R2 3
+ 0x90020002, // 0014 SETMBR R0 K0 R2
+ 0x88080100, // 0015 GETMBR R2 R0 K0
+ 0x8C080508, // 0016 GETMET R2 R2 K8
+ 0x84100000, // 0017 CLOSURE R4 P0
+ 0x7C080400, // 0018 CALL R2 2
+ 0xA0000000, // 0019 CLOSE R0
+ 0x80000000, // 001A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_remove_PASE
+********************************************************************/
+be_local_closure(Matter_Device_mdns_remove_PASE, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[22]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns),
+ /* K1 */ be_nested_str_weak(string),
+ /* K2 */ be_nested_str_weak(mdns_pase_eth),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(log),
+ /* K5 */ be_nested_str_weak(format),
+ /* K6 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
+ /* K7 */ be_nested_str_weak(_matterc),
+ /* K8 */ be_nested_str_weak(_udp),
+ /* K9 */ be_nested_str_weak(commissioning_instance_eth),
+ /* K10 */ be_nested_str_weak(hostname_eth),
+ /* K11 */ be_const_int(3),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27),
+ /* K13 */ be_nested_str_weak(eth),
+ /* K14 */ be_const_int(2),
+ /* K15 */ be_nested_str_weak(remove_service),
+ /* K16 */ be_nested_str_weak(mdns_pase_wifi),
+ /* K17 */ be_nested_str_weak(commissioning_instance_wifi),
+ /* K18 */ be_nested_str_weak(hostname_wifi),
+ /* K19 */ be_nested_str_weak(wifi),
+ /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K21 */ be_nested_str_weak(_X7C),
+ }),
+ be_str_weak(mdns_remove_PASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[83]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA40A0200, // 0001 IMPORT R2 K1
+ 0xA802003D, // 0002 EXBLK 0 #0041
+ 0x880C0102, // 0003 GETMBR R3 R0 K2
+ 0x780E001B, // 0004 JMPF R3 #0021
+ 0xB80E0600, // 0005 GETNGBL R3 K3
+ 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x8C140505, // 0007 GETMET R5 R2 K5
+ 0x581C0006, // 0008 LDCONST R7 K6
+ 0x58200007, // 0009 LDCONST R8 K7
+ 0x58240008, // 000A LDCONST R9 K8
+ 0x88280109, // 000B GETMBR R10 R0 K9
+ 0x882C010A, // 000C GETMBR R11 R0 K10
+ 0x7C140C00, // 000D CALL R5 6
+ 0x5818000B, // 000E LDCONST R6 K11
+ 0x7C0C0600, // 000F CALL R3 3
+ 0xB80E0600, // 0010 GETNGBL R3 K3
+ 0x8C0C0704, // 0011 GETMET R3 R3 K4
+ 0x8C140505, // 0012 GETMET R5 R2 K5
+ 0x581C000C, // 0013 LDCONST R7 K12
+ 0x5820000D, // 0014 LDCONST R8 K13
+ 0x88240109, // 0015 GETMBR R9 R0 K9
+ 0x7C140800, // 0016 CALL R5 4
+ 0x5818000E, // 0017 LDCONST R6 K14
+ 0x7C0C0600, // 0018 CALL R3 3
+ 0x500C0000, // 0019 LDBOOL R3 0 0
+ 0x90020403, // 001A SETMBR R0 K2 R3
+ 0x8C0C030F, // 001B GETMET R3 R1 K15
+ 0x58140007, // 001C LDCONST R5 K7
+ 0x58180008, // 001D LDCONST R6 K8
+ 0x881C0109, // 001E GETMBR R7 R0 K9
+ 0x8820010A, // 001F GETMBR R8 R0 K10
+ 0x7C0C0A00, // 0020 CALL R3 5
+ 0x880C0110, // 0021 GETMBR R3 R0 K16
+ 0x780E001B, // 0022 JMPF R3 #003F
+ 0xB80E0600, // 0023 GETNGBL R3 K3
+ 0x8C0C0704, // 0024 GETMET R3 R3 K4
+ 0x8C140505, // 0025 GETMET R5 R2 K5
+ 0x581C0006, // 0026 LDCONST R7 K6
+ 0x58200007, // 0027 LDCONST R8 K7
+ 0x58240008, // 0028 LDCONST R9 K8
+ 0x88280111, // 0029 GETMBR R10 R0 K17
+ 0x882C0112, // 002A GETMBR R11 R0 K18
+ 0x7C140C00, // 002B CALL R5 6
+ 0x5818000B, // 002C LDCONST R6 K11
+ 0x7C0C0600, // 002D CALL R3 3
+ 0xB80E0600, // 002E GETNGBL R3 K3
+ 0x8C0C0704, // 002F GETMET R3 R3 K4
+ 0x8C140505, // 0030 GETMET R5 R2 K5
+ 0x581C000C, // 0031 LDCONST R7 K12
+ 0x58200013, // 0032 LDCONST R8 K19
+ 0x88240111, // 0033 GETMBR R9 R0 K17
+ 0x7C140800, // 0034 CALL R5 4
+ 0x5818000E, // 0035 LDCONST R6 K14
+ 0x7C0C0600, // 0036 CALL R3 3
+ 0x500C0000, // 0037 LDBOOL R3 0 0
+ 0x90022003, // 0038 SETMBR R0 K16 R3
+ 0x8C0C030F, // 0039 GETMET R3 R1 K15
+ 0x58140007, // 003A LDCONST R5 K7
+ 0x58180008, // 003B LDCONST R6 K8
+ 0x881C0111, // 003C GETMBR R7 R0 K17
+ 0x88200112, // 003D GETMBR R8 R0 K18
+ 0x7C0C0A00, // 003E CALL R3 5
+ 0xA8040001, // 003F EXBLK 1 1
+ 0x70020010, // 0040 JMP #0052
+ 0xAC0C0002, // 0041 CATCH R3 0 2
+ 0x7002000D, // 0042 JMP #0051
+ 0xB8160600, // 0043 GETNGBL R5 K3
+ 0x8C140B04, // 0044 GETMET R5 R5 K4
+ 0x601C0008, // 0045 GETGBL R7 G8
+ 0x5C200600, // 0046 MOVE R8 R3
+ 0x7C1C0200, // 0047 CALL R7 1
+ 0x001E2807, // 0048 ADD R7 K20 R7
+ 0x001C0F15, // 0049 ADD R7 R7 K21
+ 0x60200008, // 004A GETGBL R8 G8
+ 0x5C240800, // 004B MOVE R9 R4
+ 0x7C200200, // 004C CALL R8 1
+ 0x001C0E08, // 004D ADD R7 R7 R8
+ 0x5820000E, // 004E LDCONST R8 K14
+ 0x7C140600, // 004F CALL R5 3
+ 0x70020000, // 0050 JMP #0052
+ 0xB0080000, // 0051 RAISE 2 R0 R0
+ 0x80000000, // 0052 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_root_commissioning_open
+********************************************************************/
+be_local_closure(Matter_Device_is_root_commissioning_open, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(commissioning_open),
+ /* K1 */ be_nested_str_weak(commissioning_admin_fabric),
+ }),
+ be_str_weak(is_root_commissioning_open),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060003, // 0003 JMPF R1 #0008
+ 0x88040101, // 0004 GETMBR R1 R0 K1
+ 0x4C080000, // 0005 LDNIL R2
+ 0x1C040202, // 0006 EQ R1 R1 R2
+ 0x74060000, // 0007 JMPT R1 #0009
+ 0x50040001, // 0008 LDBOOL R1 0 1
+ 0x50040200, // 0009 LDBOOL R1 1 0
+ 0x80040200, // 000A RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: finish_commissioning
+********************************************************************/
+be_local_closure(Matter_Device_finish_commissioning, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(finish_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_operational_discovery_deferred
+********************************************************************/
+be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 3, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 2]) { /* upvals */
+ be_local_const_upval(1, 0),
+ be_local_const_upval(1, 1),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_operational_discovery),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x68080001, // 0002 GETUPV R2 U1
+ 0x7C000400, // 0003 CALL R0 2
+ 0x80040000, // 0004 RET 1 R0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(set_timer),
+ /* K2 */ be_const_int(0),
+ }),
+ be_str_weak(start_operational_discovery_deferred),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x58100002, // 0002 LDCONST R4 K2
+ 0x84140000, // 0003 CLOSURE R5 P0
+ 0x7C080600, // 0004 CALL R2 3
+ 0xA0000000, // 0005 CLOSE R0
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: packet_ack
+********************************************************************/
+be_local_closure(Matter_Device_packet_ack, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(udp_server),
+ /* K1 */ be_nested_str_weak(packet_ack),
+ }),
+ be_str_weak(packet_ack),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(Matter_Device_every_second, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(sessions),
+ /* K1 */ be_nested_str_weak(every_second),
+ /* K2 */ be_nested_str_weak(message_handler),
+ /* K3 */ be_nested_str_weak(commissioning_open),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(time_reached),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(plugins),
+ /* K8 */ be_const_int(1),
+ }),
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[30]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x7C040200, // 0002 CALL R1 1
+ 0x88040102, // 0003 GETMBR R1 R0 K2
+ 0x8C040301, // 0004 GETMET R1 R1 K1
+ 0x7C040200, // 0005 CALL R1 1
+ 0x88040103, // 0006 GETMBR R1 R0 K3
+ 0x4C080000, // 0007 LDNIL R2
+ 0x20040202, // 0008 NE R1 R1 R2
+ 0x78060006, // 0009 JMPF R1 #0011
+ 0xB8060800, // 000A GETNGBL R1 K4
+ 0x8C040305, // 000B GETMET R1 R1 K5
+ 0x880C0103, // 000C GETMBR R3 R0 K3
+ 0x7C040400, // 000D CALL R1 2
+ 0x78060001, // 000E JMPF R1 #0011
+ 0x4C040000, // 000F LDNIL R1
+ 0x90020601, // 0010 SETMBR R0 K3 R1
+ 0x58040006, // 0011 LDCONST R1 K6
+ 0x6008000C, // 0012 GETGBL R2 G12
+ 0x880C0107, // 0013 GETMBR R3 R0 K7
+ 0x7C080200, // 0014 CALL R2 1
+ 0x14080202, // 0015 LT R2 R1 R2
+ 0x780A0005, // 0016 JMPF R2 #001D
+ 0x88080107, // 0017 GETMBR R2 R0 K7
+ 0x94080401, // 0018 GETIDX R2 R2 R1
+ 0x8C080501, // 0019 GETMET R2 R2 K1
+ 0x7C080200, // 001A CALL R2 1
+ 0x00040308, // 001B ADD R1 R1 K8
+ 0x7001FFF4, // 001C JMP #0012
+ 0x80000000, // 001D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Device
********************************************************************/
be_local_class(Matter_Device,
27,
NULL,
- be_nested_map(70,
+ be_nested_map(74,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) },
- { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) },
- { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) },
- { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) },
- { be_const_key_weak(stop_basic_commissioning, 1), be_const_closure(Matter_Device_stop_basic_commissioning_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_Device_init_closure) },
- { be_const_key_weak(compute_pbkdf, -1), be_const_closure(Matter_Device_compute_pbkdf_closure) },
- { be_const_key_weak(start_udp, 47), be_const_closure(Matter_Device_start_udp_closure) },
- { be_const_key_weak(stop, -1), be_const_closure(Matter_Device_stop_closure) },
- { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(Matter_Device_compute_qrcode_content_closure) },
- { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(Matter_Device_mdns_remove_PASE_closure) },
- { be_const_key_weak(is_root_commissioning_open, 58), be_const_closure(Matter_Device_is_root_commissioning_open_closure) },
- { be_const_key_weak(root_salt, 35), be_const_var(24) },
- { be_const_key_weak(commissioning_discriminator, 52), be_const_var(7) },
- { be_const_key_weak(save_param, -1), be_const_closure(Matter_Device_save_param_closure) },
- { be_const_key_weak(root_w0, -1), be_const_var(25) },
- { be_const_key_weak(root_iterations, 6), be_const_var(23) },
- { be_const_key_weak(start_operational_discovery, 51), be_const_closure(Matter_Device_start_operational_discovery_closure) },
- { be_const_key_weak(start_basic_commissioning, 30), be_const_closure(Matter_Device_start_basic_commissioning_closure) },
+ { be_const_key_weak(save_param, 36), be_const_closure(Matter_Device_save_param_closure) },
+ { be_const_key_weak(commissioning_L, 63), be_const_var(10) },
+ { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) },
+ { be_const_key_weak(every_second, 13), be_const_closure(Matter_Device_every_second_closure) },
+ { be_const_key_weak(udp_server, -1), be_const_var(1) },
{ be_const_key_weak(commissioning_open, -1), be_const_var(5) },
- { be_const_key_weak(ipv4only, -1), be_const_var(22) },
- { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(Matter_Device_start_root_basic_commissioning_closure) },
- { be_const_key_weak(commissioning_instance_eth, 63), be_const_var(13) },
- { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(11) },
- { be_const_key_weak(finish_commissioning, -1), be_const_closure(Matter_Device_finish_commissioning_closure) },
- { be_const_key_weak(mdns_pase_wifi, 26), be_const_var(19) },
- { be_const_key_weak(attribute_updated, 21), be_const_closure(Matter_Device_attribute_updated_closure) },
- { be_const_key_weak(remove_fabric, -1), be_const_closure(Matter_Device_remove_fabric_closure) },
- { be_const_key_weak(sessions, 36), be_const_var(3) },
- { be_const_key_weak(load_param, 2), be_const_closure(Matter_Device_load_param_closure) },
- { be_const_key_weak(_mdns_announce_hostname, 41), be_const_closure(Matter_Device__mdns_announce_hostname_closure) },
- { be_const_key_weak(plugins, -1), be_const_var(0) },
- { be_const_key_weak(FILENAME, 54), be_nested_str_weak(_matter_device_X2Ejson) },
- { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(12) },
- { be_const_key_weak(hostname_eth, -1), be_const_var(15) },
- { be_const_key_weak(commissioning_w0, -1), be_const_var(9) },
- { be_const_key_weak(UDP_PORT, 14), be_const_int(5540) },
- { be_const_key_weak(start_operational_discovery_deferred, 57), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) },
- { be_const_key_weak(root_L, -1), be_const_var(26) },
+ { be_const_key_weak(packet_ack, -1), be_const_closure(Matter_Device_packet_ack_closure) },
{ be_const_key_weak(PASSCODE_DEFAULT, -1), be_const_int(20202021) },
- { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(Matter_Device_process_attribute_expansion_closure) },
- { be_const_key_weak(msg_received, -1), be_const_closure(Matter_Device_msg_received_closure) },
- { be_const_key_weak(vendorid, -1), be_const_var(16) },
- { be_const_key_weak(msg_send, 44), be_const_closure(Matter_Device_msg_send_closure) },
- { be_const_key_weak(commissioning_salt, -1), be_const_var(8) },
- { be_const_key_weak(start_commissioning_complete, 13), be_const_closure(Matter_Device_start_commissioning_complete_closure) },
- { be_const_key_weak(init_basic_commissioning, -1), be_const_closure(Matter_Device_init_basic_commissioning_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Device_invoke_request_closure) },
- { be_const_key_weak(start_mdns_announce_hostnames, 29), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) },
- { be_const_key_weak(commissioning_L, 48), be_const_var(10) },
- { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Device_every_250ms_closure) },
- { be_const_key_weak(ui, 8), be_const_var(4) },
- { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) },
- { be_const_key_weak(packet_ack, 40), be_const_closure(Matter_Device_packet_ack_closure) },
- { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) },
- { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) },
- { be_const_key_weak(PASE_TIMEOUT, 33), be_const_int(600) },
- { be_const_key_weak(mdns_announce_PASE, 9), be_const_closure(Matter_Device_mdns_announce_PASE_closure) },
- { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) },
- { be_const_key_weak(message_handler, -1), be_const_var(2) },
- { be_const_key_weak(udp_server, 23), be_const_var(1) },
+ { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(11) },
+ { be_const_key_weak(get_active_endpoints, 26), be_const_closure(Matter_Device_get_active_endpoints_closure) },
+ { be_const_key_weak(init_basic_commissioning, 73), be_const_closure(Matter_Device_init_basic_commissioning_closure) },
+ { be_const_key_weak(finish_commissioning, 41), be_const_closure(Matter_Device_finish_commissioning_closure) },
+ { be_const_key_weak(ipv4only, -1), be_const_var(22) },
+ { be_const_key_weak(mdns_pase_wifi, 30), be_const_var(19) },
+ { be_const_key_weak(load_param, -1), be_const_closure(Matter_Device_load_param_closure) },
{ be_const_key_weak(productid, -1), be_const_var(17) },
- { be_const_key_weak(root_discriminator, -1), be_const_var(20) },
- { be_const_key_weak(sort_distinct, -1), be_const_static_closure(Matter_Device_sort_distinct_closure) },
- { be_const_key_weak(is_commissioning_open, -1), be_const_closure(Matter_Device_is_commissioning_open_closure) },
- { be_const_key_weak(mdns_pase_eth, -1), be_const_var(18) },
- { be_const_key_weak(hostname_wifi, -1), be_const_var(14) },
- { be_const_key_weak(commissioning_iterations, 3), be_const_var(6) },
- { be_const_key_weak(root_passcode, -1), be_const_var(21) },
+ { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(Matter_Device__mdns_announce_hostname_closure) },
+ { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(Matter_Device_mdns_announce_PASE_closure) },
+ { be_const_key_weak(start_basic_commissioning, 12), be_const_closure(Matter_Device_start_basic_commissioning_closure) },
+ { be_const_key_weak(message_handler, -1), be_const_var(2) },
+ { be_const_key_weak(sessions, 61), be_const_var(3) },
+ { be_const_key_weak(plugins, -1), be_const_var(0) },
+ { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) },
+ { be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Device_attribute_updated_closure) },
+ { be_const_key_weak(sort_distinct, 34), be_const_static_closure(Matter_Device_sort_distinct_closure) },
{ be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) },
+ { be_const_key_weak(msg_send, -1), be_const_closure(Matter_Device_msg_send_closure) },
+ { be_const_key_weak(start_operational_discovery, -1), be_const_closure(Matter_Device_start_operational_discovery_closure) },
+ { be_const_key_weak(hostname_wifi, 11), be_const_var(14) },
+ { be_const_key_weak(PBKDF_ITERATIONS, 68), be_const_int(1000) },
+ { be_const_key_weak(commissioning_iterations, -1), be_const_var(6) },
+ { be_const_key_weak(stop, 3), be_const_closure(Matter_Device_stop_closure) },
+ { be_const_key_weak(hostname_eth, 66), be_const_var(15) },
+ { be_const_key_weak(start_commissioning_complete_deferred, 14), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) },
+ { be_const_key_weak(commissioning_instance_eth, 72), be_const_var(13) },
+ { be_const_key_weak(commissioning_w0, -1), be_const_var(9) },
+ { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(Matter_Device_mdns_remove_PASE_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Device_init_closure) },
+ { be_const_key_weak(is_commissioning_open, -1), be_const_closure(Matter_Device_is_commissioning_open_closure) },
+ { be_const_key_weak(start_udp, -1), be_const_closure(Matter_Device_start_udp_closure) },
+ { be_const_key_weak(remove_fabric, -1), be_const_closure(Matter_Device_remove_fabric_closure) },
+ { be_const_key_weak(stop_basic_commissioning, 56), be_const_closure(Matter_Device_stop_basic_commissioning_closure) },
+ { be_const_key_weak(root_salt, -1), be_const_var(24) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Device_invoke_request_closure) },
+ { be_const_key_weak(commissioning_instance_wifi, 60), be_const_var(12) },
+ { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) },
+ { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) },
+ { be_const_key_weak(start_commissioning_complete, -1), be_const_closure(Matter_Device_start_commissioning_complete_closure) },
+ { be_const_key_weak(compute_manual_pairing_code, 35), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) },
+ { be_const_key_weak(start_mdns_announce_hostnames, 40), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) },
+ { be_const_key_weak(compute_pbkdf, 57), be_const_closure(Matter_Device_compute_pbkdf_closure) },
+ { be_const_key_weak(commissioning_salt, -1), be_const_var(8) },
+ { be_const_key_weak(mdns_pase_eth, -1), be_const_var(18) },
+ { be_const_key_weak(ui, 52), be_const_var(4) },
+ { be_const_key_weak(save_before_restart, -1), be_const_closure(Matter_Device_save_before_restart_closure) },
+ { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_closure) },
+ { be_const_key_weak(PRODUCT_ID, 8), be_const_int(32768) },
+ { be_const_key_weak(trigger_read_sensors, -1), be_const_closure(Matter_Device_trigger_read_sensors_closure) },
+ { be_const_key_weak(msg_received, -1), be_const_closure(Matter_Device_msg_received_closure) },
+ { be_const_key_weak(root_w0, 39), be_const_var(25) },
+ { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Device_every_250ms_closure) },
+ { be_const_key_weak(root_discriminator, -1), be_const_var(20) },
+ { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) },
+ { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(Matter_Device_start_root_basic_commissioning_closure) },
+ { be_const_key_weak(root_passcode, -1), be_const_var(21) },
+ { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(Matter_Device_is_root_commissioning_open_closure) },
+ { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) },
+ { be_const_key_weak(commissioning_discriminator, -1), be_const_var(7) },
+ { be_const_key_weak(process_attribute_expansion, 7), be_const_closure(Matter_Device_process_attribute_expansion_closure) },
+ { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) },
+ { be_const_key_weak(root_L, 2), be_const_var(26) },
+ { be_const_key_weak(compute_qrcode_content, 6), be_const_closure(Matter_Device_compute_qrcode_content_closure) },
+ { be_const_key_weak(vendorid, -1), be_const_var(16) },
+ { be_const_key_weak(root_iterations, -1), be_const_var(23) },
})),
be_str_weak(Matter_Device)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
index 18cb0891c..10b8049bd 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
@@ -237,17 +237,18 @@ be_local_closure(Matter_IM_Message_send, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
+ ( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(resp),
- /* K1 */ be_nested_str_weak(encode),
+ /* K1 */ be_nested_str_weak(encode_frame),
/* K2 */ be_nested_str_weak(data),
/* K3 */ be_nested_str_weak(to_TLV),
- /* K4 */ be_nested_str_weak(encrypt),
- /* K5 */ be_nested_str_weak(send_response),
- /* K6 */ be_nested_str_weak(raw),
- /* K7 */ be_nested_str_weak(remote_ip),
- /* K8 */ be_nested_str_weak(remote_port),
- /* K9 */ be_nested_str_weak(message_counter),
+ /* K4 */ be_nested_str_weak(encode),
+ /* K5 */ be_nested_str_weak(encrypt),
+ /* K6 */ be_nested_str_weak(send_response),
+ /* K7 */ be_nested_str_weak(raw),
+ /* K8 */ be_nested_str_weak(remote_ip),
+ /* K9 */ be_nested_str_weak(remote_port),
+ /* K10 */ be_nested_str_weak(message_counter),
}),
be_str_weak(send),
&be_const_str_solidified,
@@ -257,16 +258,16 @@ be_local_closure(Matter_IM_Message_send, /* name */
0x88140102, // 0002 GETMBR R5 R0 K2
0x8C140B03, // 0003 GETMET R5 R5 K3
0x7C140200, // 0004 CALL R5 1
- 0x8C140B01, // 0005 GETMET R5 R5 K1
+ 0x8C140B04, // 0005 GETMET R5 R5 K4
0x7C140200, // 0006 CALL R5 1
0x7C0C0400, // 0007 CALL R3 2
- 0x8C0C0504, // 0008 GETMET R3 R2 K4
+ 0x8C0C0505, // 0008 GETMET R3 R2 K5
0x7C0C0200, // 0009 CALL R3 1
- 0x8C0C0305, // 000A GETMET R3 R1 K5
- 0x88140506, // 000B GETMBR R5 R2 K6
- 0x88180507, // 000C GETMBR R6 R2 K7
- 0x881C0508, // 000D GETMBR R7 R2 K8
- 0x88200509, // 000E GETMBR R8 R2 K9
+ 0x8C0C0306, // 000A GETMET R3 R1 K6
+ 0x88140507, // 000B GETMBR R5 R2 K7
+ 0x88180508, // 000C GETMBR R6 R2 K8
+ 0x881C0509, // 000D GETMBR R7 R2 K9
+ 0x8820050A, // 000E GETMBR R8 R2 K10
0x7C0C0A00, // 000F CALL R3 5
0x500C0200, // 0010 LDBOOL R3 1 0
0x80040600, // 0011 RET 1 R3
@@ -427,7 +428,7 @@ be_local_class(Matter_IM_Message,
{ be_const_key_weak(send, -1), be_const_closure(Matter_IM_Message_send_closure) },
{ be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_Message_ack_received_closure) },
{ be_const_key_weak(status_ok_received, 11), be_const_closure(Matter_IM_Message_status_ok_received_closure) },
- { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(10000) },
+ { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(5000) },
{ be_const_key_weak(ready, -1), be_const_var(2) },
})),
be_str_weak(Matter_IM_Message)
@@ -688,7 +689,7 @@ be_local_closure(Matter_IM_ReportData_send, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[28]) { /* constants */
+ ( &(const bvalue[27]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(resp),
/* K2 */ be_nested_str_weak(data),
@@ -703,24 +704,23 @@ be_local_closure(Matter_IM_ReportData_send, /* name */
/* K11 */ be_nested_str_weak(log),
/* K12 */ be_nested_str_weak(format),
/* K13 */ be_nested_str_weak(MTR_X3A_X20elements_X3D_X25i_X20msg_sz_X3D_X25i_X20total_X3D_X25i),
- /* K14 */ be_const_int(2147483647),
- /* K15 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X20next_chunk_X20exch_X3D_X25i),
- /* K16 */ be_nested_str_weak(get_exchangeid),
- /* K17 */ be_const_int(3),
+ /* K14 */ be_const_int(3),
+ /* K15 */ be_const_int(2147483647),
+ /* K16 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X20next_chunk_X20exch_X3D_X25i),
+ /* K17 */ be_nested_str_weak(get_exchangeid),
/* K18 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X20first_chunk_X20exch_X3D_X25i),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20sending_X20TLV),
- /* K20 */ be_nested_str_weak(encode),
+ /* K19 */ be_nested_str_weak(encode),
+ /* K20 */ be_nested_str_weak(encode_frame),
/* K21 */ be_nested_str_weak(encrypt),
/* K22 */ be_nested_str_weak(send_response),
/* K23 */ be_nested_str_weak(raw),
/* K24 */ be_nested_str_weak(remote_ip),
/* K25 */ be_nested_str_weak(remote_port),
/* K26 */ be_nested_str_weak(message_counter),
- /* K27 */ be_nested_str_weak(MTR_X3A_X20to_be_sent_later_X20TLV),
}),
be_str_weak(send),
&be_const_str_solidified,
- ( &(const binstruction[133]) { /* code */
+ ( &(const binstruction[121]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x880C0101, // 0001 GETMBR R3 R0 K1
0x88100102, // 0002 GETMBR R4 R0 K2
@@ -773,9 +773,9 @@ be_local_closure(Matter_IM_ReportData_send, /* name */
0x88400905, // 0031 GETMBR R16 R4 K5
0x7C3C0200, // 0032 CALL R15 1
0x7C280A00, // 0033 CALL R10 5
- 0x542E0003, // 0034 LDINT R11 4
+ 0x582C000E, // 0034 LDCONST R11 K14
0x7C200600, // 0035 CALL R8 3
- 0x40200F0E, // 0036 CONNECT R8 R7 K14
+ 0x40200F0F, // 0036 CONNECT R8 R7 K15
0x88240905, // 0037 GETMBR R9 R4 K5
0x94201208, // 0038 GETIDX R8 R9 R8
0x04280F08, // 0039 SUB R10 R7 K8
@@ -792,68 +792,56 @@ be_local_closure(Matter_IM_ReportData_send, /* name */
0xB82A1400, // 0044 GETNGBL R10 K10
0x8C28150B, // 0045 GETMET R10 R10 K11
0x8C30050C, // 0046 GETMET R12 R2 K12
- 0x5838000F, // 0047 LDCONST R14 K15
- 0x8C3C0110, // 0048 GETMET R15 R0 K16
+ 0x58380010, // 0047 LDCONST R14 K16
+ 0x8C3C0111, // 0048 GETMET R15 R0 K17
0x7C3C0200, // 0049 CALL R15 1
0x7C300600, // 004A CALL R12 3
- 0x58340011, // 004B LDCONST R13 K17
+ 0x5834000E, // 004B LDCONST R13 K14
0x7C280600, // 004C CALL R10 3
0x88240903, // 004D GETMBR R9 R4 K3
- 0x78260012, // 004E JMPF R9 #0062
+ 0x7826000A, // 004E JMPF R9 #005A
0x5C240A00, // 004F MOVE R9 R5
0x74260008, // 0050 JMPT R9 #005A
0xB8261400, // 0051 GETNGBL R9 K10
0x8C24130B, // 0052 GETMET R9 R9 K11
0x8C2C050C, // 0053 GETMET R11 R2 K12
0x58340012, // 0054 LDCONST R13 K18
- 0x8C380110, // 0055 GETMET R14 R0 K16
+ 0x8C380111, // 0055 GETMET R14 R0 K17
0x7C380200, // 0056 CALL R14 1
0x7C2C0600, // 0057 CALL R11 3
- 0x58300011, // 0058 LDCONST R12 K17
+ 0x5830000E, // 0058 LDCONST R12 K14
0x7C240600, // 0059 CALL R9 3
- 0xB8261400, // 005A GETNGBL R9 K10
- 0x8C24130B, // 005B GETMET R9 R9 K11
- 0x602C0008, // 005C GETGBL R11 G8
- 0x5C300800, // 005D MOVE R12 R4
- 0x7C2C0200, // 005E CALL R11 1
- 0x002E260B, // 005F ADD R11 K19 R11
- 0x58300011, // 0060 LDCONST R12 K17
- 0x7C240600, // 0061 CALL R9 3
- 0x8C240714, // 0062 GETMET R9 R3 K20
- 0x882C0102, // 0063 GETMBR R11 R0 K2
- 0x8C2C1706, // 0064 GETMET R11 R11 K6
- 0x7C2C0200, // 0065 CALL R11 1
- 0x8C2C1714, // 0066 GETMET R11 R11 K20
- 0x7C2C0200, // 0067 CALL R11 1
- 0x7C240400, // 0068 CALL R9 2
- 0x8C240715, // 0069 GETMET R9 R3 K21
- 0x7C240200, // 006A CALL R9 1
- 0x8C240316, // 006B GETMET R9 R1 K22
- 0x882C0717, // 006C GETMBR R11 R3 K23
- 0x88300718, // 006D GETMBR R12 R3 K24
- 0x88340719, // 006E GETMBR R13 R3 K25
- 0x8838071A, // 006F GETMBR R14 R3 K26
- 0x7C240A00, // 0070 CALL R9 5
- 0x6024000C, // 0071 GETGBL R9 G12
- 0x5C281000, // 0072 MOVE R10 R8
- 0x7C240200, // 0073 CALL R9 1
- 0x24241304, // 0074 GT R9 R9 K4
- 0x7826000B, // 0075 JMPF R9 #0082
- 0x90120A08, // 0076 SETMBR R4 K5 R8
- 0xB8261400, // 0077 GETNGBL R9 K10
- 0x8C24130B, // 0078 GETMET R9 R9 K11
- 0x602C0008, // 0079 GETGBL R11 G8
- 0x5C300800, // 007A MOVE R12 R4
- 0x7C2C0200, // 007B CALL R11 1
- 0x002E360B, // 007C ADD R11 K27 R11
- 0x58300011, // 007D LDCONST R12 K17
- 0x7C240600, // 007E CALL R9 3
- 0x50240000, // 007F LDBOOL R9 0 0
- 0x80041200, // 0080 RET 1 R9
- 0x70020001, // 0081 JMP #0084
- 0x50240200, // 0082 LDBOOL R9 1 0
- 0x80041200, // 0083 RET 1 R9
- 0x80000000, // 0084 RET 0
+ 0x88240102, // 005A GETMBR R9 R0 K2
+ 0x8C241306, // 005B GETMET R9 R9 K6
+ 0x7C240200, // 005C CALL R9 1
+ 0x8C281313, // 005D GETMET R10 R9 K19
+ 0x60300015, // 005E GETGBL R12 G21
+ 0x88340109, // 005F GETMBR R13 R0 K9
+ 0x7C300200, // 0060 CALL R12 1
+ 0x7C280400, // 0061 CALL R10 2
+ 0x8C2C0714, // 0062 GETMET R11 R3 K20
+ 0x5C341400, // 0063 MOVE R13 R10
+ 0x7C2C0400, // 0064 CALL R11 2
+ 0x8C2C0715, // 0065 GETMET R11 R3 K21
+ 0x7C2C0200, // 0066 CALL R11 1
+ 0x8C2C0316, // 0067 GETMET R11 R1 K22
+ 0x88340717, // 0068 GETMBR R13 R3 K23
+ 0x88380718, // 0069 GETMBR R14 R3 K24
+ 0x883C0719, // 006A GETMBR R15 R3 K25
+ 0x8840071A, // 006B GETMBR R16 R3 K26
+ 0x7C2C0A00, // 006C CALL R11 5
+ 0x602C000C, // 006D GETGBL R11 G12
+ 0x5C301000, // 006E MOVE R12 R8
+ 0x7C2C0200, // 006F CALL R11 1
+ 0x242C1704, // 0070 GT R11 R11 K4
+ 0x782E0003, // 0071 JMPF R11 #0076
+ 0x90120A08, // 0072 SETMBR R4 K5 R8
+ 0x502C0000, // 0073 LDBOOL R11 0 0
+ 0x80041600, // 0074 RET 1 R11
+ 0x70020001, // 0075 JMP #0078
+ 0x502C0200, // 0076 LDBOOL R11 1 0
+ 0x80041600, // 0077 RET 1 R11
+ 0x80000000, // 0078 RET 0
})
)
);
@@ -898,14 +886,16 @@ be_local_closure(Matter_IM_ReportDataSubscribed_ack_received, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
+ ( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(ack_received),
/* K1 */ be_nested_str_weak(report_data_phase),
/* K2 */ be_nested_str_weak(ready),
+ /* K3 */ be_nested_str_weak(sub),
+ /* K4 */ be_nested_str_weak(re_arm),
}),
be_str_weak(ack_received),
&be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
+ ( &(const binstruction[19]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
@@ -913,15 +903,18 @@ be_local_closure(Matter_IM_ReportDataSubscribed_ack_received, /* name */
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x88080101, // 0006 GETMBR R2 R0 K1
- 0x740A0004, // 0007 JMPT R2 #000D
+ 0x740A0007, // 0007 JMPT R2 #0010
0x50080200, // 0008 LDBOOL R2 1 0
0x90020402, // 0009 SETMBR R0 K2 R2
- 0x50080200, // 000A LDBOOL R2 1 0
- 0x80040400, // 000B RET 1 R2
- 0x70020001, // 000C JMP #000F
- 0x50080000, // 000D LDBOOL R2 0 0
+ 0x88080103, // 000A GETMBR R2 R0 K3
+ 0x8C080504, // 000B GETMET R2 R2 K4
+ 0x7C080200, // 000C CALL R2 1
+ 0x50080200, // 000D LDBOOL R2 1 0
0x80040400, // 000E RET 1 R2
- 0x80000000, // 000F RET 0
+ 0x70020001, // 000F JMP #0012
+ 0x50080000, // 0010 LDBOOL R2 0 0
+ 0x80040400, // 0011 RET 1 R2
+ 0x80000000, // 0012 RET 0
})
)
);
@@ -1112,7 +1105,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send, /* name */
/* K4 */ be_nested_str_weak(send),
/* K5 */ be_nested_str_weak(resp),
/* K6 */ be_nested_str_weak(build_standalone_ack),
- /* K7 */ be_nested_str_weak(encode),
+ /* K7 */ be_nested_str_weak(encode_frame),
/* K8 */ be_nested_str_weak(encrypt),
/* K9 */ be_nested_str_weak(send_response),
/* K10 */ be_nested_str_weak(raw),
@@ -1252,6 +1245,38 @@ be_local_closure(Matter_IM_SubscribeResponse_init, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: status_ok_received
+********************************************************************/
+be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(status_ok_received),
+ }),
+ be_str_weak(status_ok_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x60080003, // 0000 GETGBL R2 G3
+ 0x5C0C0000, // 0001 MOVE R3 R0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x5C100200, // 0004 MOVE R4 R1
+ 0x7C080400, // 0005 CALL R2 2
+ 0x80040400, // 0006 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: send
********************************************************************/
@@ -1265,7 +1290,7 @@ be_local_closure(Matter_IM_SubscribeResponse_send, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
+ ( &(const bvalue[19]) { /* constants */
/* K0 */ be_nested_str_weak(report_data_phase),
/* K1 */ be_nested_str_weak(send),
/* K2 */ be_nested_str_weak(resp),
@@ -1275,18 +1300,20 @@ be_local_closure(Matter_IM_SubscribeResponse_send, /* name */
/* K6 */ be_nested_str_weak(sub),
/* K7 */ be_nested_str_weak(max_interval),
/* K8 */ be_nested_str_weak(opcode),
- /* K9 */ be_nested_str_weak(encode),
+ /* K9 */ be_nested_str_weak(encode_frame),
/* K10 */ be_nested_str_weak(to_TLV),
- /* K11 */ be_nested_str_weak(encrypt),
- /* K12 */ be_nested_str_weak(send_response),
- /* K13 */ be_nested_str_weak(raw),
- /* K14 */ be_nested_str_weak(remote_ip),
- /* K15 */ be_nested_str_weak(remote_port),
- /* K16 */ be_nested_str_weak(message_counter),
+ /* K11 */ be_nested_str_weak(encode),
+ /* K12 */ be_nested_str_weak(encrypt),
+ /* K13 */ be_nested_str_weak(send_response),
+ /* K14 */ be_nested_str_weak(raw),
+ /* K15 */ be_nested_str_weak(remote_ip),
+ /* K16 */ be_nested_str_weak(remote_port),
+ /* K17 */ be_nested_str_weak(message_counter),
+ /* K18 */ be_nested_str_weak(re_arm),
}),
be_str_weak(send),
&be_const_str_solidified,
- ( &(const binstruction[47]) { /* code */
+ ( &(const binstruction[50]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x780A000E, // 0001 JMPF R2 #0011
0x60080003, // 0002 GETGBL R2 G3
@@ -1303,7 +1330,7 @@ be_local_closure(Matter_IM_SubscribeResponse_send, /* name */
0x90020003, // 000D SETMBR R0 K0 R3
0x500C0000, // 000E LDBOOL R3 0 0
0x80040600, // 000F RET 1 R3
- 0x7002001C, // 0010 JMP #002E
+ 0x7002001F, // 0010 JMP #0031
0x88080102, // 0011 GETMBR R2 R0 K2
0xB80E0600, // 0012 GETNGBL R3 K3
0x8C0C0704, // 0013 GETMET R3 R3 K4
@@ -1320,20 +1347,23 @@ be_local_closure(Matter_IM_SubscribeResponse_send, /* name */
0x8C100509, // 001E GETMET R4 R2 K9
0x8C18070A, // 001F GETMET R6 R3 K10
0x7C180200, // 0020 CALL R6 1
- 0x8C180D09, // 0021 GETMET R6 R6 K9
+ 0x8C180D0B, // 0021 GETMET R6 R6 K11
0x7C180200, // 0022 CALL R6 1
0x7C100400, // 0023 CALL R4 2
- 0x8C10050B, // 0024 GETMET R4 R2 K11
+ 0x8C10050C, // 0024 GETMET R4 R2 K12
0x7C100200, // 0025 CALL R4 1
- 0x8C10030C, // 0026 GETMET R4 R1 K12
- 0x8818050D, // 0027 GETMBR R6 R2 K13
- 0x881C050E, // 0028 GETMBR R7 R2 K14
- 0x8820050F, // 0029 GETMBR R8 R2 K15
- 0x88240510, // 002A GETMBR R9 R2 K16
+ 0x8C10030D, // 0026 GETMET R4 R1 K13
+ 0x8818050E, // 0027 GETMBR R6 R2 K14
+ 0x881C050F, // 0028 GETMBR R7 R2 K15
+ 0x88200510, // 0029 GETMBR R8 R2 K16
+ 0x88240511, // 002A GETMBR R9 R2 K17
0x7C100A00, // 002B CALL R4 5
- 0x50100200, // 002C LDBOOL R4 1 0
- 0x80040800, // 002D RET 1 R4
- 0x80000000, // 002E RET 0
+ 0x88100106, // 002C GETMBR R4 R0 K6
+ 0x8C100912, // 002D GETMET R4 R4 K18
+ 0x7C100200, // 002E CALL R4 1
+ 0x50100200, // 002F LDBOOL R4 1 0
+ 0x80040800, // 0030 RET 1 R4
+ 0x80000000, // 0031 RET 0
})
)
);
@@ -1347,12 +1377,13 @@ extern const bclass be_class_Matter_IM_ReportData;
be_local_class(Matter_IM_SubscribeResponse,
2,
&be_class_Matter_IM_ReportData,
- be_nested_map(4,
+ be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(init, 3), be_const_closure(Matter_IM_SubscribeResponse_init_closure) },
+ { be_const_key_weak(sub, 4), be_const_var(0) },
+ { be_const_key_weak(status_ok_received, -1), be_const_closure(Matter_IM_SubscribeResponse_status_ok_received_closure) },
{ be_const_key_weak(report_data_phase, -1), be_const_var(1) },
- { be_const_key_weak(sub, -1), be_const_var(0) },
{ be_const_key_weak(send, -1), be_const_closure(Matter_IM_SubscribeResponse_send_closure) },
- { be_const_key_weak(init, 2), be_const_closure(Matter_IM_SubscribeResponse_init_closure) },
})),
be_str_weak(Matter_IM_SubscribeResponse)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h
index 52cd50138..773fd1393 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h
@@ -7,11 +7,11 @@
extern const bclass be_class_Matter_IM_Subscription;
/********************************************************************
-** Solidified function: remove_self
+** Solidified function: re_arm
********************************************************************/
-be_local_closure(Matter_IM_Subscription_remove_self, /* name */
+be_local_closure(Matter_IM_Subscription_re_arm, /* name */
be_nested_proto(
- 5, /* nstack */
+ 4, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -19,144 +19,39 @@ be_local_closure(Matter_IM_Subscription_remove_self, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20Remove_Sub_X20sub_id_X3D),
- /* K3 */ be_nested_str_weak(subscription_id),
- /* K4 */ be_nested_str_weak(subs),
- /* K5 */ be_nested_str_weak(remove_sub),
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_nested_str_weak(wait_status),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(millis),
+ /* K3 */ be_nested_str_weak(expiration),
+ /* K4 */ be_nested_str_weak(max_interval),
+ /* K5 */ be_nested_str_weak(MAX_INTERVAL_MARGIN),
+ /* K6 */ be_nested_str_weak(not_before),
+ /* K7 */ be_nested_str_weak(min_interval),
+ /* K8 */ be_const_int(1),
}),
- be_str_weak(remove_self),
+ be_str_weak(re_arm),
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x600C0008, // 0002 GETGBL R3 G8
- 0x88100103, // 0003 GETMBR R4 R0 K3
- 0x7C0C0200, // 0004 CALL R3 1
- 0x000E0403, // 0005 ADD R3 K2 R3
- 0x7C040400, // 0006 CALL R1 2
- 0x88040104, // 0007 GETMBR R1 R0 K4
- 0x8C040305, // 0008 GETMET R1 R1 K5
- 0x5C0C0000, // 0009 MOVE R3 R0
- 0x7C040400, // 000A CALL R1 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_IM_Subscription_init, /* name */
- be_nested_proto(
- 13, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str_weak(subs),
- /* K1 */ be_nested_str_weak(subscription_id),
- /* K2 */ be_nested_str_weak(session),
- /* K3 */ be_nested_str_weak(min_interval_floor),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(min_interval),
- /* K6 */ be_nested_str_weak(max_interval_ceiling),
- /* K7 */ be_nested_str_weak(max_interval),
- /* K8 */ be_nested_str_weak(fabric_filtered),
- /* K9 */ be_nested_str_weak(path_list),
- /* K10 */ be_nested_str_weak(attributes_requests),
- /* K11 */ be_nested_str_weak(matter),
- /* K12 */ be_nested_str_weak(Path),
- /* K13 */ be_nested_str_weak(endpoint),
- /* K14 */ be_nested_str_weak(cluster),
- /* K15 */ be_nested_str_weak(attribute),
- /* K16 */ be_nested_str_weak(push),
- /* K17 */ be_nested_str_weak(stop_iteration),
- /* K18 */ be_nested_str_weak(updates),
- /* K19 */ be_nested_str_weak(clear_and_arm),
- /* K20 */ be_nested_str_weak(tasmota),
- /* K21 */ be_nested_str_weak(log),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20new_X20subsctiption_X20),
- /* K23 */ be_nested_str_weak(inspect),
- /* K24 */ be_const_int(3),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[66]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x88140903, // 0003 GETMBR R5 R4 K3
- 0x14180B04, // 0004 LT R6 R5 K4
- 0x781A0000, // 0005 JMPF R6 #0007
- 0x58140004, // 0006 LDCONST R5 K4
- 0x541A003B, // 0007 LDINT R6 60
- 0x24180A06, // 0008 GT R6 R5 R6
- 0x781A0000, // 0009 JMPF R6 #000B
- 0x5416003B, // 000A LDINT R5 60
- 0x90020A05, // 000B SETMBR R0 K5 R5
- 0x88180906, // 000C GETMBR R6 R4 K6
- 0x541E003B, // 000D LDINT R7 60
- 0x141C0C07, // 000E LT R7 R6 R7
- 0x781E0000, // 000F JMPF R7 #0011
- 0x541A003B, // 0010 LDINT R6 60
- 0x541E0E0F, // 0011 LDINT R7 3600
- 0x241C0C07, // 0012 GT R7 R6 R7
- 0x781E0000, // 0013 JMPF R7 #0015
- 0x541A0E0F, // 0014 LDINT R6 3600
- 0x541A003B, // 0015 LDINT R6 60
- 0x90020E06, // 0016 SETMBR R0 K7 R6
- 0x881C0908, // 0017 GETMBR R7 R4 K8
- 0x90021007, // 0018 SETMBR R0 K8 R7
- 0x601C0012, // 0019 GETGBL R7 G18
- 0x7C1C0000, // 001A CALL R7 0
- 0x90021207, // 001B SETMBR R0 K9 R7
- 0x601C0010, // 001C GETGBL R7 G16
- 0x8820090A, // 001D GETMBR R8 R4 K10
- 0x7C1C0200, // 001E CALL R7 1
- 0xA802000F, // 001F EXBLK 0 #0030
- 0x5C200E00, // 0020 MOVE R8 R7
- 0x7C200000, // 0021 CALL R8 0
- 0xB8261600, // 0022 GETNGBL R9 K11
- 0x8C24130C, // 0023 GETMET R9 R9 K12
- 0x7C240200, // 0024 CALL R9 1
- 0x8828110D, // 0025 GETMBR R10 R8 K13
- 0x90261A0A, // 0026 SETMBR R9 K13 R10
- 0x8828110E, // 0027 GETMBR R10 R8 K14
- 0x90261C0A, // 0028 SETMBR R9 K14 R10
- 0x8828110F, // 0029 GETMBR R10 R8 K15
- 0x90261E0A, // 002A SETMBR R9 K15 R10
- 0x88280109, // 002B GETMBR R10 R0 K9
- 0x8C281510, // 002C GETMET R10 R10 K16
- 0x5C301200, // 002D MOVE R12 R9
- 0x7C280400, // 002E CALL R10 2
- 0x7001FFEF, // 002F JMP #0020
- 0x581C0011, // 0030 LDCONST R7 K17
- 0xAC1C0200, // 0031 CATCH R7 1 0
- 0xB0080000, // 0032 RAISE 2 R0 R0
- 0x601C0012, // 0033 GETGBL R7 G18
- 0x7C1C0000, // 0034 CALL R7 0
- 0x90022407, // 0035 SETMBR R0 K18 R7
- 0x8C1C0113, // 0036 GETMET R7 R0 K19
- 0x7C1C0200, // 0037 CALL R7 1
- 0xB81E2800, // 0038 GETNGBL R7 K20
- 0x8C1C0F15, // 0039 GETMET R7 R7 K21
- 0xB8261600, // 003A GETNGBL R9 K11
- 0x8C241317, // 003B GETMET R9 R9 K23
- 0x5C2C0000, // 003C MOVE R11 R0
- 0x7C240400, // 003D CALL R9 2
- 0x00262C09, // 003E ADD R9 K22 R9
- 0x58280018, // 003F LDCONST R10 K24
- 0x7C1C0600, // 0040 CALL R7 3
- 0x80000000, // 0041 RET 0
+ ( &(const binstruction[19]) { /* code */
+ 0x50040000, // 0000 LDBOOL R1 0 0
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0xB8060200, // 0002 GETNGBL R1 K1
+ 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x7C040200, // 0004 CALL R1 1
+ 0x88080104, // 0005 GETMBR R2 R0 K4
+ 0x880C0105, // 0006 GETMBR R3 R0 K5
+ 0x04080403, // 0007 SUB R2 R2 R3
+ 0x540E03E7, // 0008 LDINT R3 1000
+ 0x08080403, // 0009 MUL R2 R2 R3
+ 0x00080202, // 000A ADD R2 R1 R2
+ 0x90020602, // 000B SETMBR R0 K3 R2
+ 0x88080107, // 000C GETMBR R2 R0 K7
+ 0x540E03E7, // 000D LDINT R3 1000
+ 0x08080403, // 000E MUL R2 R2 R3
+ 0x00080202, // 000F ADD R2 R1 R2
+ 0x04080508, // 0010 SUB R2 R2 K8
+ 0x90020C02, // 0011 SETMBR R0 K6 R2
+ 0x80000000, // 0012 RET 0
})
)
);
@@ -223,11 +118,11 @@ be_local_closure(Matter_IM_Subscription__add_attribute_unique_path, /* name */
/********************************************************************
-** Solidified function: clear_and_arm
+** Solidified function: remove_self
********************************************************************/
-be_local_closure(Matter_IM_Subscription_clear_and_arm, /* name */
+be_local_closure(Matter_IM_Subscription_remove_self, /* name */
be_nested_proto(
- 4, /* nstack */
+ 5, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -235,41 +130,166 @@ be_local_closure(Matter_IM_Subscription_clear_and_arm, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20Remove_Sub_X20sub_id_X3D),
+ /* K3 */ be_nested_str_weak(subscription_id),
+ /* K4 */ be_nested_str_weak(subs),
+ /* K5 */ be_nested_str_weak(remove_sub),
+ }),
+ be_str_weak(remove_self),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x600C0008, // 0002 GETGBL R3 G8
+ 0x88100103, // 0003 GETMBR R4 R0 K3
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x000E0403, // 0005 ADD R3 K2 R3
+ 0x7C040400, // 0006 CALL R1 2
+ 0x88040104, // 0007 GETMBR R1 R0 K4
+ 0x8C040305, // 0008 GETMET R1 R1 K5
+ 0x5C0C0000, // 0009 MOVE R3 R0
+ 0x7C040400, // 000A CALL R1 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: clear_before_arm
+********************************************************************/
+be_local_closure(Matter_IM_Subscription_clear_before_arm, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(updates),
/* K1 */ be_nested_str_weak(clear),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(millis),
- /* K4 */ be_nested_str_weak(expiration),
- /* K5 */ be_nested_str_weak(max_interval),
- /* K6 */ be_nested_str_weak(MAX_INTERVAL_MARGIN),
- /* K7 */ be_nested_str_weak(not_before),
- /* K8 */ be_nested_str_weak(min_interval),
- /* K9 */ be_const_int(1),
+ /* K2 */ be_nested_str_weak(wait_status),
}),
- be_str_weak(clear_and_arm),
+ be_str_weak(clear_before_arm),
&be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
+ ( &(const binstruction[ 6]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x8C040301, // 0001 GETMET R1 R1 K1
0x7C040200, // 0002 CALL R1 1
- 0xB8060400, // 0003 GETNGBL R1 K2
- 0x8C040303, // 0004 GETMET R1 R1 K3
- 0x7C040200, // 0005 CALL R1 1
- 0x88080105, // 0006 GETMBR R2 R0 K5
- 0x880C0106, // 0007 GETMBR R3 R0 K6
- 0x04080403, // 0008 SUB R2 R2 R3
- 0x540E03E7, // 0009 LDINT R3 1000
- 0x08080403, // 000A MUL R2 R2 R3
- 0x00080202, // 000B ADD R2 R1 R2
- 0x90020802, // 000C SETMBR R0 K4 R2
- 0x88080108, // 000D GETMBR R2 R0 K8
- 0x540E03E7, // 000E LDINT R3 1000
- 0x08080403, // 000F MUL R2 R2 R3
- 0x00080202, // 0010 ADD R2 R1 R2
- 0x04080509, // 0011 SUB R2 R2 K9
- 0x90020E02, // 0012 SETMBR R0 K7 R2
- 0x80000000, // 0013 RET 0
+ 0x50040200, // 0003 LDBOOL R1 1 0
+ 0x90020401, // 0004 SETMBR R0 K2 R1
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_IM_Subscription_init, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[21]) { /* constants */
+ /* K0 */ be_nested_str_weak(subs),
+ /* K1 */ be_nested_str_weak(subscription_id),
+ /* K2 */ be_nested_str_weak(session),
+ /* K3 */ be_nested_str_weak(min_interval_floor),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(min_interval),
+ /* K6 */ be_nested_str_weak(max_interval_ceiling),
+ /* K7 */ be_nested_str_weak(max_interval),
+ /* K8 */ be_nested_str_weak(wait_status),
+ /* K9 */ be_nested_str_weak(fabric_filtered),
+ /* K10 */ be_nested_str_weak(path_list),
+ /* K11 */ be_nested_str_weak(attributes_requests),
+ /* K12 */ be_nested_str_weak(matter),
+ /* K13 */ be_nested_str_weak(Path),
+ /* K14 */ be_nested_str_weak(endpoint),
+ /* K15 */ be_nested_str_weak(cluster),
+ /* K16 */ be_nested_str_weak(attribute),
+ /* K17 */ be_nested_str_weak(push),
+ /* K18 */ be_nested_str_weak(stop_iteration),
+ /* K19 */ be_nested_str_weak(updates),
+ /* K20 */ be_nested_str_weak(clear_before_arm),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[59]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x90020403, // 0002 SETMBR R0 K2 R3
+ 0x88140903, // 0003 GETMBR R5 R4 K3
+ 0x14180B04, // 0004 LT R6 R5 K4
+ 0x781A0000, // 0005 JMPF R6 #0007
+ 0x58140004, // 0006 LDCONST R5 K4
+ 0x541A003B, // 0007 LDINT R6 60
+ 0x24180A06, // 0008 GT R6 R5 R6
+ 0x781A0000, // 0009 JMPF R6 #000B
+ 0x5416003B, // 000A LDINT R5 60
+ 0x90020A05, // 000B SETMBR R0 K5 R5
+ 0x88180906, // 000C GETMBR R6 R4 K6
+ 0x541E003B, // 000D LDINT R7 60
+ 0x141C0C07, // 000E LT R7 R6 R7
+ 0x781E0000, // 000F JMPF R7 #0011
+ 0x541A003B, // 0010 LDINT R6 60
+ 0x541E0E0F, // 0011 LDINT R7 3600
+ 0x241C0C07, // 0012 GT R7 R6 R7
+ 0x781E0000, // 0013 JMPF R7 #0015
+ 0x541A0E0F, // 0014 LDINT R6 3600
+ 0x541A003B, // 0015 LDINT R6 60
+ 0x90020E06, // 0016 SETMBR R0 K7 R6
+ 0x501C0000, // 0017 LDBOOL R7 0 0
+ 0x90021007, // 0018 SETMBR R0 K8 R7
+ 0x881C0909, // 0019 GETMBR R7 R4 K9
+ 0x90021207, // 001A SETMBR R0 K9 R7
+ 0x601C0012, // 001B GETGBL R7 G18
+ 0x7C1C0000, // 001C CALL R7 0
+ 0x90021407, // 001D SETMBR R0 K10 R7
+ 0x601C0010, // 001E GETGBL R7 G16
+ 0x8820090B, // 001F GETMBR R8 R4 K11
+ 0x7C1C0200, // 0020 CALL R7 1
+ 0xA802000F, // 0021 EXBLK 0 #0032
+ 0x5C200E00, // 0022 MOVE R8 R7
+ 0x7C200000, // 0023 CALL R8 0
+ 0xB8261800, // 0024 GETNGBL R9 K12
+ 0x8C24130D, // 0025 GETMET R9 R9 K13
+ 0x7C240200, // 0026 CALL R9 1
+ 0x8828110E, // 0027 GETMBR R10 R8 K14
+ 0x90261C0A, // 0028 SETMBR R9 K14 R10
+ 0x8828110F, // 0029 GETMBR R10 R8 K15
+ 0x90261E0A, // 002A SETMBR R9 K15 R10
+ 0x88281110, // 002B GETMBR R10 R8 K16
+ 0x9026200A, // 002C SETMBR R9 K16 R10
+ 0x8828010A, // 002D GETMBR R10 R0 K10
+ 0x8C281511, // 002E GETMET R10 R10 K17
+ 0x5C301200, // 002F MOVE R12 R9
+ 0x7C280400, // 0030 CALL R10 2
+ 0x7001FFEF, // 0031 JMP #0022
+ 0x581C0012, // 0032 LDCONST R7 K18
+ 0xAC1C0200, // 0033 CATCH R7 1 0
+ 0xB0080000, // 0034 RAISE 2 R0 R0
+ 0x601C0012, // 0035 GETGBL R7 G18
+ 0x7C1C0000, // 0036 CALL R7 0
+ 0x90022607, // 0037 SETMBR R0 K19 R7
+ 0x8C1C0114, // 0038 GETMET R7 R0 K20
+ 0x7C1C0200, // 0039 CALL R7 1
+ 0x80000000, // 003A RET 0
})
)
);
@@ -349,26 +369,28 @@ be_local_closure(Matter_IM_Subscription_attribute_updated_ctx, /* name */
** Solidified class: Matter_IM_Subscription
********************************************************************/
be_local_class(Matter_IM_Subscription,
- 10,
+ 11,
NULL,
- be_nested_map(16,
+ be_nested_map(18,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(remove_self, -1), be_const_closure(Matter_IM_Subscription_remove_self_closure) },
- { be_const_key_weak(min_interval, -1), be_const_var(4) },
- { be_const_key_weak(subs, -1), be_const_var(0) },
- { be_const_key_weak(init, 15), be_const_closure(Matter_IM_Subscription_init_closure) },
- { be_const_key_weak(subscription_id, -1), be_const_var(1) },
- { be_const_key_weak(updates, -1), be_const_var(9) },
- { be_const_key_weak(MAX_INTERVAL_MARGIN, -1), be_const_int(5) },
- { be_const_key_weak(session, 11), be_const_var(2) },
- { be_const_key_weak(expiration, 14), be_const_var(8) },
- { be_const_key_weak(fabric_filtered, -1), be_const_var(6) },
- { be_const_key_weak(_add_attribute_unique_path, 9), be_const_closure(Matter_IM_Subscription__add_attribute_unique_path_closure) },
+ { be_const_key_weak(subscription_id, 4), be_const_var(1) },
+ { be_const_key_weak(wait_status, -1), be_const_var(9) },
+ { be_const_key_weak(attribute_updated_ctx, 5), be_const_closure(Matter_IM_Subscription_attribute_updated_ctx_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_IM_Subscription_init_closure) },
+ { be_const_key_weak(fabric_filtered, 17), be_const_var(6) },
+ { be_const_key_weak(clear_before_arm, -1), be_const_closure(Matter_IM_Subscription_clear_before_arm_closure) },
+ { be_const_key_weak(_add_attribute_unique_path, -1), be_const_closure(Matter_IM_Subscription__add_attribute_unique_path_closure) },
+ { be_const_key_weak(session, -1), be_const_var(2) },
+ { be_const_key_weak(expiration, 16), be_const_var(8) },
+ { be_const_key_weak(re_arm, 10), be_const_closure(Matter_IM_Subscription_re_arm_closure) },
{ be_const_key_weak(max_interval, -1), be_const_var(5) },
- { be_const_key_weak(attribute_updated_ctx, -1), be_const_closure(Matter_IM_Subscription_attribute_updated_ctx_closure) },
- { be_const_key_weak(clear_and_arm, 12), be_const_closure(Matter_IM_Subscription_clear_and_arm_closure) },
- { be_const_key_weak(not_before, -1), be_const_var(7) },
- { be_const_key_weak(path_list, -1), be_const_var(3) },
+ { be_const_key_weak(min_interval, -1), be_const_var(4) },
+ { be_const_key_weak(MAX_INTERVAL_MARGIN, 8), be_const_int(5) },
+ { be_const_key_weak(updates, 2), be_const_var(10) },
+ { be_const_key_weak(not_before, 0), be_const_var(7) },
+ { be_const_key_weak(path_list, 3), be_const_var(3) },
+ { be_const_key_weak(remove_self, -1), be_const_closure(Matter_IM_Subscription_remove_self_closure) },
+ { be_const_key_weak(subs, -1), be_const_var(0) },
})),
be_str_weak(Matter_IM_Subscription)
);
@@ -395,70 +417,75 @@ be_local_closure(Matter_IM_Subscription_Shop_every_250ms, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
+ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_const_int(0),
/* K1 */ be_nested_str_weak(subs),
- /* K2 */ be_nested_str_weak(updates),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(time_reached),
- /* K5 */ be_nested_str_weak(not_before),
- /* K6 */ be_nested_str_weak(im),
- /* K7 */ be_nested_str_weak(send_subscribe_update),
- /* K8 */ be_nested_str_weak(clear_and_arm),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(expiration),
+ /* K2 */ be_nested_str_weak(wait_status),
+ /* K3 */ be_nested_str_weak(updates),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(time_reached),
+ /* K6 */ be_nested_str_weak(not_before),
+ /* K7 */ be_nested_str_weak(im),
+ /* K8 */ be_nested_str_weak(send_subscribe_update),
+ /* K9 */ be_nested_str_weak(clear_before_arm),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_nested_str_weak(expiration),
}),
be_str_weak(every_250ms),
&be_const_str_solidified,
- ( &(const binstruction[48]) { /* code */
+ ( &(const binstruction[52]) { /* code */
0x58040000, // 0000 LDCONST R1 K0
0x6008000C, // 0001 GETGBL R2 G12
0x880C0101, // 0002 GETMBR R3 R0 K1
0x7C080200, // 0003 CALL R2 1
0x14080202, // 0004 LT R2 R1 R2
- 0x780A0013, // 0005 JMPF R2 #001A
+ 0x780A0015, // 0005 JMPF R2 #001C
0x88080101, // 0006 GETMBR R2 R0 K1
0x94080401, // 0007 GETIDX R2 R2 R1
- 0x600C000C, // 0008 GETGBL R3 G12
- 0x88100502, // 0009 GETMBR R4 R2 K2
- 0x7C0C0200, // 000A CALL R3 1
- 0x240C0700, // 000B GT R3 R3 K0
- 0x780E000A, // 000C JMPF R3 #0018
- 0xB80E0600, // 000D GETNGBL R3 K3
- 0x8C0C0704, // 000E GETMET R3 R3 K4
- 0x88140505, // 000F GETMBR R5 R2 K5
- 0x7C0C0400, // 0010 CALL R3 2
- 0x780E0005, // 0011 JMPF R3 #0018
- 0x880C0106, // 0012 GETMBR R3 R0 K6
- 0x8C0C0707, // 0013 GETMET R3 R3 K7
- 0x5C140400, // 0014 MOVE R5 R2
- 0x7C0C0400, // 0015 CALL R3 2
- 0x8C0C0508, // 0016 GETMET R3 R2 K8
- 0x7C0C0200, // 0017 CALL R3 1
- 0x00040309, // 0018 ADD R1 R1 K9
- 0x7001FFE6, // 0019 JMP #0001
- 0x58040000, // 001A LDCONST R1 K0
- 0x6008000C, // 001B GETGBL R2 G12
- 0x880C0101, // 001C GETMBR R3 R0 K1
- 0x7C080200, // 001D CALL R2 1
- 0x14080202, // 001E LT R2 R1 R2
- 0x780A000E, // 001F JMPF R2 #002F
- 0x88080101, // 0020 GETMBR R2 R0 K1
- 0x94080401, // 0021 GETIDX R2 R2 R1
- 0xB80E0600, // 0022 GETNGBL R3 K3
- 0x8C0C0704, // 0023 GETMET R3 R3 K4
- 0x8814050A, // 0024 GETMBR R5 R2 K10
- 0x7C0C0400, // 0025 CALL R3 2
- 0x780E0005, // 0026 JMPF R3 #002D
- 0x880C0106, // 0027 GETMBR R3 R0 K6
- 0x8C0C0707, // 0028 GETMET R3 R3 K7
- 0x5C140400, // 0029 MOVE R5 R2
- 0x7C0C0400, // 002A CALL R3 2
- 0x8C0C0508, // 002B GETMET R3 R2 K8
- 0x7C0C0200, // 002C CALL R3 1
- 0x00040309, // 002D ADD R1 R1 K9
- 0x7001FFEB, // 002E JMP #001B
- 0x80000000, // 002F RET 0
+ 0x880C0502, // 0008 GETMBR R3 R2 K2
+ 0x740E000F, // 0009 JMPT R3 #001A
+ 0x600C000C, // 000A GETGBL R3 G12
+ 0x88100503, // 000B GETMBR R4 R2 K3
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x240C0700, // 000D GT R3 R3 K0
+ 0x780E000A, // 000E JMPF R3 #001A
+ 0xB80E0800, // 000F GETNGBL R3 K4
+ 0x8C0C0705, // 0010 GETMET R3 R3 K5
+ 0x88140506, // 0011 GETMBR R5 R2 K6
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0x780E0005, // 0013 JMPF R3 #001A
+ 0x880C0107, // 0014 GETMBR R3 R0 K7
+ 0x8C0C0708, // 0015 GETMET R3 R3 K8
+ 0x5C140400, // 0016 MOVE R5 R2
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x8C0C0509, // 0018 GETMET R3 R2 K9
+ 0x7C0C0200, // 0019 CALL R3 1
+ 0x0004030A, // 001A ADD R1 R1 K10
+ 0x7001FFE4, // 001B JMP #0001
+ 0x58040000, // 001C LDCONST R1 K0
+ 0x6008000C, // 001D GETGBL R2 G12
+ 0x880C0101, // 001E GETMBR R3 R0 K1
+ 0x7C080200, // 001F CALL R2 1
+ 0x14080202, // 0020 LT R2 R1 R2
+ 0x780A0010, // 0021 JMPF R2 #0033
+ 0x88080101, // 0022 GETMBR R2 R0 K1
+ 0x94080401, // 0023 GETIDX R2 R2 R1
+ 0x880C0502, // 0024 GETMBR R3 R2 K2
+ 0x740E000A, // 0025 JMPT R3 #0031
+ 0xB80E0800, // 0026 GETNGBL R3 K4
+ 0x8C0C0705, // 0027 GETMET R3 R3 K5
+ 0x8814050B, // 0028 GETMBR R5 R2 K11
+ 0x7C0C0400, // 0029 CALL R3 2
+ 0x780E0005, // 002A JMPF R3 #0031
+ 0x880C0107, // 002B GETMBR R3 R0 K7
+ 0x8C0C0708, // 002C GETMET R3 R3 K8
+ 0x5C140400, // 002D MOVE R5 R2
+ 0x7C0C0400, // 002E CALL R3 2
+ 0x8C0C0509, // 002F GETMET R3 R2 K9
+ 0x7C0C0200, // 0030 CALL R3 1
+ 0x0004030A, // 0031 ADD R1 R1 K10
+ 0x7001FFE9, // 0032 JMP #001D
+ 0x80000000, // 0033 RET 0
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
index 50a6f6be3..b4bf585fa 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
@@ -7,32 +7,199 @@
extern const bclass be_class_Matter_Frame;
/********************************************************************
-** Solidified function: init
+** Solidified function: encode_frame
********************************************************************/
-be_local_closure(Matter_Frame_init, /* name */
+be_local_closure(Matter_Frame_encode_frame, /* name */
be_nested_proto(
- 5, /* nstack */
- 5, /* argc */
+ 7, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(raw),
- /* K2 */ be_nested_str_weak(remote_ip),
- /* K3 */ be_nested_str_weak(remote_port),
+ ( &(const bvalue[30]) { /* constants */
+ /* K0 */ be_nested_str_weak(flags),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(flag_s),
+ /* K3 */ be_nested_str_weak(flag_dsiz),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_nested_str_weak(add),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(local_session_id),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str_weak(sec_flags),
+ /* K10 */ be_nested_str_weak(sec_p),
+ /* K11 */ be_nested_str_weak(sec_c),
+ /* K12 */ be_nested_str_weak(sec_sesstype),
+ /* K13 */ be_nested_str_weak(message_counter),
+ /* K14 */ be_nested_str_weak(source_node_id),
+ /* K15 */ be_nested_str_weak(dest_node_id_8),
+ /* K16 */ be_nested_str_weak(dest_node_id_2),
+ /* K17 */ be_nested_str_weak(payload_idx),
+ /* K18 */ be_nested_str_weak(x_flags),
+ /* K19 */ be_nested_str_weak(x_flag_v),
+ /* K20 */ be_nested_str_weak(x_flag_r),
+ /* K21 */ be_nested_str_weak(x_flag_a),
+ /* K22 */ be_nested_str_weak(x_flag_i),
+ /* K23 */ be_nested_str_weak(opcode),
+ /* K24 */ be_nested_str_weak(exchange_id),
+ /* K25 */ be_nested_str_weak(protocol_id),
+ /* K26 */ be_nested_str_weak(ack_message_counter),
+ /* K27 */ be_nested_str_weak(app_payload_idx),
+ /* K28 */ be_nested_str_weak(debug),
+ /* K29 */ be_nested_str_weak(raw),
}),
- be_str_weak(init),
+ be_str_weak(encode_frame),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x90020604, // 0003 SETMBR R0 K3 R4
- 0x80000000, // 0004 RET 0
+ ( &(const binstruction[146]) { /* code */
+ 0x60080015, // 0000 GETGBL R2 G21
+ 0x7C080000, // 0001 CALL R2 0
+ 0x880C0100, // 0002 GETMBR R3 R0 K0
+ 0x4C100000, // 0003 LDNIL R4
+ 0x1C0C0604, // 0004 EQ R3 R3 R4
+ 0x780E000D, // 0005 JMPF R3 #0014
+ 0x90020101, // 0006 SETMBR R0 K0 K1
+ 0x880C0102, // 0007 GETMBR R3 R0 K2
+ 0x780E0003, // 0008 JMPF R3 #000D
+ 0x880C0100, // 0009 GETMBR R3 R0 K0
+ 0x54120003, // 000A LDINT R4 4
+ 0x300C0604, // 000B OR R3 R3 R4
+ 0x90020003, // 000C SETMBR R0 K0 R3
+ 0x880C0103, // 000D GETMBR R3 R0 K3
+ 0x780E0004, // 000E JMPF R3 #0014
+ 0x880C0100, // 000F GETMBR R3 R0 K0
+ 0x88100103, // 0010 GETMBR R4 R0 K3
+ 0x2C100904, // 0011 AND R4 R4 K4
+ 0x300C0604, // 0012 OR R3 R3 R4
+ 0x90020003, // 0013 SETMBR R0 K0 R3
+ 0x8C0C0505, // 0014 GETMET R3 R2 K5
+ 0x88140100, // 0015 GETMBR R5 R0 K0
+ 0x58180006, // 0016 LDCONST R6 K6
+ 0x7C0C0600, // 0017 CALL R3 3
+ 0x8C0C0505, // 0018 GETMET R3 R2 K5
+ 0x88140107, // 0019 GETMBR R5 R0 K7
+ 0x78160001, // 001A JMPF R5 #001D
+ 0x88140107, // 001B GETMBR R5 R0 K7
+ 0x70020000, // 001C JMP #001E
+ 0x58140001, // 001D LDCONST R5 K1
+ 0x58180008, // 001E LDCONST R6 K8
+ 0x7C0C0600, // 001F CALL R3 3
+ 0x880C0109, // 0020 GETMBR R3 R0 K9
+ 0x4C100000, // 0021 LDNIL R4
+ 0x1C0C0604, // 0022 EQ R3 R3 R4
+ 0x780E0013, // 0023 JMPF R3 #0038
+ 0x90021301, // 0024 SETMBR R0 K9 K1
+ 0x880C010A, // 0025 GETMBR R3 R0 K10
+ 0x780E0003, // 0026 JMPF R3 #002B
+ 0x880C0109, // 0027 GETMBR R3 R0 K9
+ 0x5412007F, // 0028 LDINT R4 128
+ 0x300C0604, // 0029 OR R3 R3 R4
+ 0x90021203, // 002A SETMBR R0 K9 R3
+ 0x880C010B, // 002B GETMBR R3 R0 K11
+ 0x780E0003, // 002C JMPF R3 #0031
+ 0x880C0109, // 002D GETMBR R3 R0 K9
+ 0x5412003F, // 002E LDINT R4 64
+ 0x300C0604, // 002F OR R3 R3 R4
+ 0x90021203, // 0030 SETMBR R0 K9 R3
+ 0x880C010C, // 0031 GETMBR R3 R0 K12
+ 0x780E0004, // 0032 JMPF R3 #0038
+ 0x880C0109, // 0033 GETMBR R3 R0 K9
+ 0x8810010C, // 0034 GETMBR R4 R0 K12
+ 0x2C100904, // 0035 AND R4 R4 K4
+ 0x300C0604, // 0036 OR R3 R3 R4
+ 0x90021203, // 0037 SETMBR R0 K9 R3
+ 0x8C0C0505, // 0038 GETMET R3 R2 K5
+ 0x88140109, // 0039 GETMBR R5 R0 K9
+ 0x58180006, // 003A LDCONST R6 K6
+ 0x7C0C0600, // 003B CALL R3 3
+ 0x8C0C0505, // 003C GETMET R3 R2 K5
+ 0x8814010D, // 003D GETMBR R5 R0 K13
+ 0x541A0003, // 003E LDINT R6 4
+ 0x7C0C0600, // 003F CALL R3 3
+ 0x880C0102, // 0040 GETMBR R3 R0 K2
+ 0x780E0001, // 0041 JMPF R3 #0044
+ 0x880C010E, // 0042 GETMBR R3 R0 K14
+ 0x400C0403, // 0043 CONNECT R3 R2 R3
+ 0x880C0103, // 0044 GETMBR R3 R0 K3
+ 0x1C0C0706, // 0045 EQ R3 R3 K6
+ 0x780E0001, // 0046 JMPF R3 #0049
+ 0x880C010F, // 0047 GETMBR R3 R0 K15
+ 0x400C0403, // 0048 CONNECT R3 R2 R3
+ 0x880C0103, // 0049 GETMBR R3 R0 K3
+ 0x1C0C0708, // 004A EQ R3 R3 K8
+ 0x780E0003, // 004B JMPF R3 #0050
+ 0x8C0C0505, // 004C GETMET R3 R2 K5
+ 0x88140110, // 004D GETMBR R5 R0 K16
+ 0x58180008, // 004E LDCONST R6 K8
+ 0x7C0C0600, // 004F CALL R3 3
+ 0x600C000C, // 0050 GETGBL R3 G12
+ 0x5C100400, // 0051 MOVE R4 R2
+ 0x7C0C0200, // 0052 CALL R3 1
+ 0x90022203, // 0053 SETMBR R0 K17 R3
+ 0x880C0112, // 0054 GETMBR R3 R0 K18
+ 0x4C100000, // 0055 LDNIL R4
+ 0x1C0C0604, // 0056 EQ R3 R3 R4
+ 0x780E0016, // 0057 JMPF R3 #006F
+ 0x90022501, // 0058 SETMBR R0 K18 K1
+ 0x880C0113, // 0059 GETMBR R3 R0 K19
+ 0x780E0003, // 005A JMPF R3 #005F
+ 0x880C0112, // 005B GETMBR R3 R0 K18
+ 0x5412000F, // 005C LDINT R4 16
+ 0x300C0604, // 005D OR R3 R3 R4
+ 0x90022403, // 005E SETMBR R0 K18 R3
+ 0x880C0114, // 005F GETMBR R3 R0 K20
+ 0x780E0003, // 0060 JMPF R3 #0065
+ 0x880C0112, // 0061 GETMBR R3 R0 K18
+ 0x54120003, // 0062 LDINT R4 4
+ 0x300C0604, // 0063 OR R3 R3 R4
+ 0x90022403, // 0064 SETMBR R0 K18 R3
+ 0x880C0115, // 0065 GETMBR R3 R0 K21
+ 0x780E0002, // 0066 JMPF R3 #006A
+ 0x880C0112, // 0067 GETMBR R3 R0 K18
+ 0x300C0708, // 0068 OR R3 R3 K8
+ 0x90022403, // 0069 SETMBR R0 K18 R3
+ 0x880C0116, // 006A GETMBR R3 R0 K22
+ 0x780E0002, // 006B JMPF R3 #006F
+ 0x880C0112, // 006C GETMBR R3 R0 K18
+ 0x300C0706, // 006D OR R3 R3 K6
+ 0x90022403, // 006E SETMBR R0 K18 R3
+ 0x8C0C0505, // 006F GETMET R3 R2 K5
+ 0x88140112, // 0070 GETMBR R5 R0 K18
+ 0x58180006, // 0071 LDCONST R6 K6
+ 0x7C0C0600, // 0072 CALL R3 3
+ 0x8C0C0505, // 0073 GETMET R3 R2 K5
+ 0x88140117, // 0074 GETMBR R5 R0 K23
+ 0x58180006, // 0075 LDCONST R6 K6
+ 0x7C0C0600, // 0076 CALL R3 3
+ 0x8C0C0505, // 0077 GETMET R3 R2 K5
+ 0x88140118, // 0078 GETMBR R5 R0 K24
+ 0x541AFFFE, // 0079 LDINT R6 65535
+ 0x2C140A06, // 007A AND R5 R5 R6
+ 0x58180008, // 007B LDCONST R6 K8
+ 0x7C0C0600, // 007C CALL R3 3
+ 0x8C0C0505, // 007D GETMET R3 R2 K5
+ 0x88140119, // 007E GETMBR R5 R0 K25
+ 0x58180008, // 007F LDCONST R6 K8
+ 0x7C0C0600, // 0080 CALL R3 3
+ 0x880C0115, // 0081 GETMBR R3 R0 K21
+ 0x780E0003, // 0082 JMPF R3 #0087
+ 0x8C0C0505, // 0083 GETMET R3 R2 K5
+ 0x8814011A, // 0084 GETMBR R5 R0 K26
+ 0x541A0003, // 0085 LDINT R6 4
+ 0x7C0C0600, // 0086 CALL R3 3
+ 0x600C000C, // 0087 GETGBL R3 G12
+ 0x5C100400, // 0088 MOVE R4 R2
+ 0x7C0C0200, // 0089 CALL R3 1
+ 0x90023603, // 008A SETMBR R0 K27 R3
+ 0x78060000, // 008B JMPF R1 #008D
+ 0x400C0401, // 008C CONNECT R3 R2 R1
+ 0x8C0C011C, // 008D GETMET R3 R0 K28
+ 0x5C140400, // 008E MOVE R5 R2
+ 0x7C0C0400, // 008F CALL R3 2
+ 0x90023A02, // 0090 SETMBR R0 K29 R2
+ 0x80040400, // 0091 RET 1 R2
})
)
);
@@ -784,199 +951,32 @@ be_local_closure(Matter_Frame_decode_header, /* name */
/********************************************************************
-** Solidified function: encode
+** Solidified function: init
********************************************************************/
-be_local_closure(Matter_Frame_encode, /* name */
+be_local_closure(Matter_Frame_init, /* name */
be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
+ 5, /* nstack */
+ 5, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(flags),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(flag_s),
- /* K3 */ be_nested_str_weak(flag_dsiz),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(add),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(local_session_id),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(sec_flags),
- /* K10 */ be_nested_str_weak(sec_p),
- /* K11 */ be_nested_str_weak(sec_c),
- /* K12 */ be_nested_str_weak(sec_sesstype),
- /* K13 */ be_nested_str_weak(message_counter),
- /* K14 */ be_nested_str_weak(source_node_id),
- /* K15 */ be_nested_str_weak(dest_node_id_8),
- /* K16 */ be_nested_str_weak(dest_node_id_2),
- /* K17 */ be_nested_str_weak(payload_idx),
- /* K18 */ be_nested_str_weak(x_flags),
- /* K19 */ be_nested_str_weak(x_flag_v),
- /* K20 */ be_nested_str_weak(x_flag_r),
- /* K21 */ be_nested_str_weak(x_flag_a),
- /* K22 */ be_nested_str_weak(x_flag_i),
- /* K23 */ be_nested_str_weak(opcode),
- /* K24 */ be_nested_str_weak(exchange_id),
- /* K25 */ be_nested_str_weak(protocol_id),
- /* K26 */ be_nested_str_weak(ack_message_counter),
- /* K27 */ be_nested_str_weak(app_payload_idx),
- /* K28 */ be_nested_str_weak(debug),
- /* K29 */ be_nested_str_weak(raw),
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(message_handler),
+ /* K1 */ be_nested_str_weak(raw),
+ /* K2 */ be_nested_str_weak(remote_ip),
+ /* K3 */ be_nested_str_weak(remote_port),
}),
- be_str_weak(encode),
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[146]) { /* code */
- 0x60080015, // 0000 GETGBL R2 G21
- 0x7C080000, // 0001 CALL R2 0
- 0x880C0100, // 0002 GETMBR R3 R0 K0
- 0x4C100000, // 0003 LDNIL R4
- 0x1C0C0604, // 0004 EQ R3 R3 R4
- 0x780E000D, // 0005 JMPF R3 #0014
- 0x90020101, // 0006 SETMBR R0 K0 K1
- 0x880C0102, // 0007 GETMBR R3 R0 K2
- 0x780E0003, // 0008 JMPF R3 #000D
- 0x880C0100, // 0009 GETMBR R3 R0 K0
- 0x54120003, // 000A LDINT R4 4
- 0x300C0604, // 000B OR R3 R3 R4
- 0x90020003, // 000C SETMBR R0 K0 R3
- 0x880C0103, // 000D GETMBR R3 R0 K3
- 0x780E0004, // 000E JMPF R3 #0014
- 0x880C0100, // 000F GETMBR R3 R0 K0
- 0x88100103, // 0010 GETMBR R4 R0 K3
- 0x2C100904, // 0011 AND R4 R4 K4
- 0x300C0604, // 0012 OR R3 R3 R4
- 0x90020003, // 0013 SETMBR R0 K0 R3
- 0x8C0C0505, // 0014 GETMET R3 R2 K5
- 0x88140100, // 0015 GETMBR R5 R0 K0
- 0x58180006, // 0016 LDCONST R6 K6
- 0x7C0C0600, // 0017 CALL R3 3
- 0x8C0C0505, // 0018 GETMET R3 R2 K5
- 0x88140107, // 0019 GETMBR R5 R0 K7
- 0x78160001, // 001A JMPF R5 #001D
- 0x88140107, // 001B GETMBR R5 R0 K7
- 0x70020000, // 001C JMP #001E
- 0x58140001, // 001D LDCONST R5 K1
- 0x58180008, // 001E LDCONST R6 K8
- 0x7C0C0600, // 001F CALL R3 3
- 0x880C0109, // 0020 GETMBR R3 R0 K9
- 0x4C100000, // 0021 LDNIL R4
- 0x1C0C0604, // 0022 EQ R3 R3 R4
- 0x780E0013, // 0023 JMPF R3 #0038
- 0x90021301, // 0024 SETMBR R0 K9 K1
- 0x880C010A, // 0025 GETMBR R3 R0 K10
- 0x780E0003, // 0026 JMPF R3 #002B
- 0x880C0109, // 0027 GETMBR R3 R0 K9
- 0x5412007F, // 0028 LDINT R4 128
- 0x300C0604, // 0029 OR R3 R3 R4
- 0x90021203, // 002A SETMBR R0 K9 R3
- 0x880C010B, // 002B GETMBR R3 R0 K11
- 0x780E0003, // 002C JMPF R3 #0031
- 0x880C0109, // 002D GETMBR R3 R0 K9
- 0x5412003F, // 002E LDINT R4 64
- 0x300C0604, // 002F OR R3 R3 R4
- 0x90021203, // 0030 SETMBR R0 K9 R3
- 0x880C010C, // 0031 GETMBR R3 R0 K12
- 0x780E0004, // 0032 JMPF R3 #0038
- 0x880C0109, // 0033 GETMBR R3 R0 K9
- 0x8810010C, // 0034 GETMBR R4 R0 K12
- 0x2C100904, // 0035 AND R4 R4 K4
- 0x300C0604, // 0036 OR R3 R3 R4
- 0x90021203, // 0037 SETMBR R0 K9 R3
- 0x8C0C0505, // 0038 GETMET R3 R2 K5
- 0x88140109, // 0039 GETMBR R5 R0 K9
- 0x58180006, // 003A LDCONST R6 K6
- 0x7C0C0600, // 003B CALL R3 3
- 0x8C0C0505, // 003C GETMET R3 R2 K5
- 0x8814010D, // 003D GETMBR R5 R0 K13
- 0x541A0003, // 003E LDINT R6 4
- 0x7C0C0600, // 003F CALL R3 3
- 0x880C0102, // 0040 GETMBR R3 R0 K2
- 0x780E0001, // 0041 JMPF R3 #0044
- 0x880C010E, // 0042 GETMBR R3 R0 K14
- 0x400C0403, // 0043 CONNECT R3 R2 R3
- 0x880C0103, // 0044 GETMBR R3 R0 K3
- 0x1C0C0706, // 0045 EQ R3 R3 K6
- 0x780E0001, // 0046 JMPF R3 #0049
- 0x880C010F, // 0047 GETMBR R3 R0 K15
- 0x400C0403, // 0048 CONNECT R3 R2 R3
- 0x880C0103, // 0049 GETMBR R3 R0 K3
- 0x1C0C0708, // 004A EQ R3 R3 K8
- 0x780E0003, // 004B JMPF R3 #0050
- 0x8C0C0505, // 004C GETMET R3 R2 K5
- 0x88140110, // 004D GETMBR R5 R0 K16
- 0x58180008, // 004E LDCONST R6 K8
- 0x7C0C0600, // 004F CALL R3 3
- 0x600C000C, // 0050 GETGBL R3 G12
- 0x5C100400, // 0051 MOVE R4 R2
- 0x7C0C0200, // 0052 CALL R3 1
- 0x90022203, // 0053 SETMBR R0 K17 R3
- 0x880C0112, // 0054 GETMBR R3 R0 K18
- 0x4C100000, // 0055 LDNIL R4
- 0x1C0C0604, // 0056 EQ R3 R3 R4
- 0x780E0016, // 0057 JMPF R3 #006F
- 0x90022501, // 0058 SETMBR R0 K18 K1
- 0x880C0113, // 0059 GETMBR R3 R0 K19
- 0x780E0003, // 005A JMPF R3 #005F
- 0x880C0112, // 005B GETMBR R3 R0 K18
- 0x5412000F, // 005C LDINT R4 16
- 0x300C0604, // 005D OR R3 R3 R4
- 0x90022403, // 005E SETMBR R0 K18 R3
- 0x880C0114, // 005F GETMBR R3 R0 K20
- 0x780E0003, // 0060 JMPF R3 #0065
- 0x880C0112, // 0061 GETMBR R3 R0 K18
- 0x54120003, // 0062 LDINT R4 4
- 0x300C0604, // 0063 OR R3 R3 R4
- 0x90022403, // 0064 SETMBR R0 K18 R3
- 0x880C0115, // 0065 GETMBR R3 R0 K21
- 0x780E0002, // 0066 JMPF R3 #006A
- 0x880C0112, // 0067 GETMBR R3 R0 K18
- 0x300C0708, // 0068 OR R3 R3 K8
- 0x90022403, // 0069 SETMBR R0 K18 R3
- 0x880C0116, // 006A GETMBR R3 R0 K22
- 0x780E0002, // 006B JMPF R3 #006F
- 0x880C0112, // 006C GETMBR R3 R0 K18
- 0x300C0706, // 006D OR R3 R3 K6
- 0x90022403, // 006E SETMBR R0 K18 R3
- 0x8C0C0505, // 006F GETMET R3 R2 K5
- 0x88140112, // 0070 GETMBR R5 R0 K18
- 0x58180006, // 0071 LDCONST R6 K6
- 0x7C0C0600, // 0072 CALL R3 3
- 0x8C0C0505, // 0073 GETMET R3 R2 K5
- 0x88140117, // 0074 GETMBR R5 R0 K23
- 0x58180006, // 0075 LDCONST R6 K6
- 0x7C0C0600, // 0076 CALL R3 3
- 0x8C0C0505, // 0077 GETMET R3 R2 K5
- 0x88140118, // 0078 GETMBR R5 R0 K24
- 0x541AFFFE, // 0079 LDINT R6 65535
- 0x2C140A06, // 007A AND R5 R5 R6
- 0x58180008, // 007B LDCONST R6 K8
- 0x7C0C0600, // 007C CALL R3 3
- 0x8C0C0505, // 007D GETMET R3 R2 K5
- 0x88140119, // 007E GETMBR R5 R0 K25
- 0x58180008, // 007F LDCONST R6 K8
- 0x7C0C0600, // 0080 CALL R3 3
- 0x880C0115, // 0081 GETMBR R3 R0 K21
- 0x780E0003, // 0082 JMPF R3 #0087
- 0x8C0C0505, // 0083 GETMET R3 R2 K5
- 0x8814011A, // 0084 GETMBR R5 R0 K26
- 0x541A0003, // 0085 LDINT R6 4
- 0x7C0C0600, // 0086 CALL R3 3
- 0x600C000C, // 0087 GETGBL R3 G12
- 0x5C100400, // 0088 MOVE R4 R2
- 0x7C0C0200, // 0089 CALL R3 1
- 0x90023603, // 008A SETMBR R0 K27 R3
- 0x78060000, // 008B JMPF R1 #008D
- 0x400C0401, // 008C CONNECT R3 R2 R1
- 0x8C0C011C, // 008D GETMET R3 R0 K28
- 0x5C140400, // 008E MOVE R5 R2
- 0x7C0C0400, // 008F CALL R3 2
- 0x90023A02, // 0090 SETMBR R0 K29 R2
- 0x80040400, // 0091 RET 1 R2
+ ( &(const binstruction[ 5]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x90020403, // 0002 SETMBR R0 K2 R3
+ 0x90020604, // 0003 SETMBR R0 K3 R4
+ 0x80000000, // 0004 RET 0
})
)
);
@@ -1354,46 +1354,46 @@ be_local_class(Matter_Frame,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(x_flag_i, -1), be_const_var(22) },
{ be_const_key_weak(dest_node_id_8, 7), be_const_var(16) },
- { be_const_key_weak(remote_ip, -1), be_const_var(30) },
+ { be_const_key_weak(x_flags, -1), be_const_var(17) },
{ be_const_key_weak(x_flag_a, -1), be_const_var(21) },
{ be_const_key_weak(exchange_id, -1), be_const_var(24) },
{ be_const_key_weak(opcode, -1), be_const_var(23) },
- { be_const_key_weak(sec_sesstype, -1), be_const_var(12) },
+ { be_const_key_weak(encode_frame, -1), be_const_closure(Matter_Frame_encode_frame_closure) },
{ be_const_key_weak(app_payload_idx, -1), be_const_var(29) },
{ be_const_key_weak(payload_idx, -1), be_const_var(3) },
- { be_const_key_weak(ack_message_counter, 6), be_const_var(27) },
+ { be_const_key_weak(ack_message_counter, 24), be_const_var(27) },
+ { be_const_key_weak(build_standalone_ack, -1), be_const_closure(Matter_Frame_build_standalone_ack_closure) },
+ { be_const_key_weak(x_flag_v, 6), be_const_var(18) },
{ be_const_key_weak(sec_c, -1), be_const_var(10) },
- { be_const_key_weak(x_flag_v, -1), be_const_var(18) },
- { be_const_key_weak(x_flag_sx, 10), be_const_var(19) },
- { be_const_key_weak(encode, 28), be_const_closure(Matter_Frame_encode_closure) },
+ { be_const_key_weak(vendor_id, 32), be_const_var(26) },
{ be_const_key_weak(local_session_id, -1), be_const_var(7) },
{ be_const_key_weak(flag_s, -1), be_const_var(5) },
{ be_const_key_weak(debug, -1), be_const_closure(Matter_Frame_debug_closure) },
- { be_const_key_weak(build_standalone_ack, 34), be_const_closure(Matter_Frame_build_standalone_ack_closure) },
- { be_const_key_weak(encrypt, 12), be_const_closure(Matter_Frame_encrypt_closure) },
+ { be_const_key_weak(message_handler, 10), be_const_var(0) },
+ { be_const_key_weak(encrypt, 34), be_const_closure(Matter_Frame_encrypt_closure) },
{ be_const_key_weak(session, -1), be_const_var(1) },
{ be_const_key_weak(sec_flags, -1), be_const_var(8) },
{ be_const_key_weak(build_response, -1), be_const_closure(Matter_Frame_build_response_closure) },
{ be_const_key_weak(initiate_response, -1), be_const_static_closure(Matter_Frame_initiate_response_closure) },
- { be_const_key_weak(vendor_id, 32), be_const_var(26) },
- { be_const_key_weak(decode_header, -1), be_const_closure(Matter_Frame_decode_header_closure) },
- { be_const_key_weak(remote_port, 24), be_const_var(31) },
+ { be_const_key_weak(remote_port, -1), be_const_var(31) },
+ { be_const_key_weak(sec_sesstype, -1), be_const_var(12) },
+ { be_const_key_weak(decode_header, 23), be_const_closure(Matter_Frame_decode_header_closure) },
{ be_const_key_weak(flags, -1), be_const_var(4) },
- { be_const_key_weak(protocol_id, 23), be_const_var(25) },
+ { be_const_key_weak(protocol_id, 13), be_const_var(25) },
{ be_const_key_weak(raw, -1), be_const_var(2) },
- { be_const_key_weak(source_node_id, 13), be_const_var(14) },
+ { be_const_key_weak(source_node_id, 28), be_const_var(14) },
{ be_const_key_weak(flag_dsiz, -1), be_const_var(6) },
{ be_const_key_weak(x_flag_r, -1), be_const_var(20) },
{ be_const_key_weak(message_counter, -1), be_const_var(13) },
{ be_const_key_weak(init, 14), be_const_closure(Matter_Frame_init_closure) },
- { be_const_key_weak(message_handler, -1), be_const_var(0) },
+ { be_const_key_weak(x_flag_sx, 12), be_const_var(19) },
{ be_const_key_weak(dest_node_id_2, -1), be_const_var(15) },
{ be_const_key_weak(decode_payload, -1), be_const_closure(Matter_Frame_decode_payload_closure) },
{ be_const_key_weak(sec_p, 8), be_const_var(9) },
{ be_const_key_weak(decrypt, -1), be_const_closure(Matter_Frame_decrypt_closure) },
{ be_const_key_weak(sec_extensions, -1), be_const_var(28) },
{ be_const_key_weak(sec_mx, 3), be_const_var(11) },
- { be_const_key_weak(x_flags, 2), be_const_var(17) },
+ { be_const_key_weak(remote_ip, 2), be_const_var(30) },
})),
be_str_weak(Matter_Frame)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
index b5fc66f85..335d1cf76 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
@@ -82,7 +82,7 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */
/* K59 */ be_nested_str_weak(send_enqueued),
/* K60 */ be_nested_str_weak(x_flag_r),
/* K61 */ be_nested_str_weak(build_standalone_ack),
- /* K62 */ be_nested_str_weak(encode),
+ /* K62 */ be_nested_str_weak(encode_frame),
/* K63 */ be_nested_str_weak(encrypt),
/* K64 */ be_nested_str_weak(send_response),
/* K65 */ be_nested_str_weak(remote_ip),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h
index 6ac42080d..036c5ef4e 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h
@@ -31,6 +31,31 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: write_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_write_attribute, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(write_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x80040800, // 0001 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
@@ -155,6 +180,66 @@ be_local_closure(Matter_Plugin_read_event, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: get_endpoint
+********************************************************************/
+be_local_closure(Matter_Plugin_get_endpoint, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(endpoint),
+ }),
+ be_str_weak(get_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_init, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(endpoint),
+ /* K2 */ be_nested_str_weak(clusters),
+ /* K3 */ be_nested_str_weak(EMPTY_LIST),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x880C0103, // 0002 GETMBR R3 R0 K3
+ 0x90020403, // 0003 SETMBR R0 K2 R3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: has
********************************************************************/
@@ -198,67 +283,6 @@ be_local_closure(Matter_Plugin_has, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Plugin_init, /* name */
- be_nested_proto(
- 4, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_nested_str_weak(endpoints),
- /* K3 */ be_nested_str_weak(EMPTY_LIST),
- /* K4 */ be_nested_str_weak(clusters),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x880C0103, // 0002 GETMBR R3 R0 K3
- 0x90020403, // 0003 SETMBR R0 K2 R3
- 0x880C0103, // 0004 GETMBR R3 R0 K3
- 0x90020803, // 0005 SETMBR R0 K4 R3
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: write_attribute
-********************************************************************/
-be_local_closure(Matter_Plugin_write_attribute, /* name */
- be_nested_proto(
- 5, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(write_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x80040800, // 0001 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: timed_request
********************************************************************/
@@ -285,26 +309,32 @@ be_local_closure(Matter_Plugin_timed_request, /* name */
/********************************************************************
-** Solidified function: get_endpoints
+** Solidified function: get_attribute_list
********************************************************************/
-be_local_closure(Matter_Plugin_get_endpoints, /* name */
+be_local_closure(Matter_Plugin_get_attribute_list, /* name */
be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
+ 7, /* nstack */
+ 3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoints),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(clusters),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(EMPTY_LIST),
}),
- be_str_weak(get_endpoints),
+ be_str_weak(get_attribute_list),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
+ ( &(const binstruction[ 6]) { /* code */
+ 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x5C140400, // 0002 MOVE R5 R2
+ 0x88180102, // 0003 GETMBR R6 R0 K2
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x80040600, // 0005 RET 1 R3
})
)
);
@@ -397,21 +427,26 @@ be_local_closure(Matter_Plugin_attribute_updated, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(attribute_updated),
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(endpoint),
+ /* K1 */ be_nested_str_weak(device),
+ /* K2 */ be_nested_str_weak(attribute_updated),
}),
be_str_weak(attribute_updated),
&be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88140100, // 0000 GETMBR R5 R0 K0
- 0x8C140B01, // 0001 GETMET R5 R5 K1
- 0x5C1C0200, // 0002 MOVE R7 R1
- 0x5C200400, // 0003 MOVE R8 R2
- 0x5C240600, // 0004 MOVE R9 R3
- 0x5C280800, // 0005 MOVE R10 R4
- 0x7C140A00, // 0006 CALL R5 5
- 0x80000000, // 0007 RET 0
+ ( &(const binstruction[12]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x1C140205, // 0001 EQ R5 R1 R5
+ 0x78160000, // 0002 JMPF R5 #0004
+ 0x88040100, // 0003 GETMBR R1 R0 K0
+ 0x88140101, // 0004 GETMBR R5 R0 K1
+ 0x8C140B02, // 0005 GETMET R5 R5 K2
+ 0x5C1C0200, // 0006 MOVE R7 R1
+ 0x5C200400, // 0007 MOVE R8 R2
+ 0x5C240600, // 0008 MOVE R9 R3
+ 0x5C280800, // 0009 MOVE R10 R4
+ 0x7C140A00, // 000A CALL R5 5
+ 0x80000000, // 000B RET 0
})
)
);
@@ -419,32 +454,23 @@ be_local_closure(Matter_Plugin_attribute_updated, /* name */
/********************************************************************
-** Solidified function: get_attribute_list
+** Solidified function: parse_sensors
********************************************************************/
-be_local_closure(Matter_Plugin_get_attribute_list, /* name */
+be_local_closure(Matter_Plugin_parse_sensors, /* name */
be_nested_proto(
- 7, /* nstack */
- 3, /* argc */
+ 2, /* nstack */
+ 2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(clusters),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(EMPTY_LIST),
- }),
- be_str_weak(get_attribute_list),
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(parse_sensors),
&be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140400, // 0002 MOVE R5 R2
- 0x88180102, // 0003 GETMBR R6 R0 K2
- 0x7C0C0600, // 0004 CALL R3 3
- 0x80040600, // 0005 RET 1 R3
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -455,24 +481,24 @@ be_local_closure(Matter_Plugin_get_attribute_list, /* name */
** Solidified class: Matter_Plugin
********************************************************************/
be_local_class(Matter_Plugin,
- 4,
+ 3,
NULL,
be_nested_map(21,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) },
- { be_const_key_weak(get_attribute_list, 13), be_const_closure(Matter_Plugin_get_attribute_list_closure) },
- { be_const_key_weak(write_attribute, -1), be_const_closure(Matter_Plugin_write_attribute_closure) },
+ { be_const_key_weak(parse_sensors, 13), be_const_closure(Matter_Plugin_parse_sensors_closure) },
+ { be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) },
{ be_const_key_weak(every_second, -1), be_const_closure(Matter_Plugin_every_second_closure) },
- { be_const_key_weak(subscribe_attribute, 9), be_const_closure(Matter_Plugin_subscribe_attribute_closure) },
+ { be_const_key_weak(write_attribute, 9), be_const_closure(Matter_Plugin_write_attribute_closure) },
{ be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) },
{ be_const_key_weak(device, -1), be_const_var(0) },
- { be_const_key_weak(endpoint, 20), be_const_var(2) },
+ { be_const_key_weak(endpoint, -1), be_const_var(1) },
{ be_const_key_weak(EMPTY_LIST, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(0,
( (struct bvalue*) &(const bvalue[]) {
})) ) } )) },
- { be_const_key_weak(attribute_updated, 2), be_const_closure(Matter_Plugin_attribute_updated_closure) },
- { be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) },
+ { be_const_key_weak(attribute_updated, 20), be_const_closure(Matter_Plugin_attribute_updated_closure) },
+ { be_const_key_weak(get_endpoint, 2), be_const_closure(Matter_Plugin_get_endpoint_closure) },
{ be_const_key_weak(EMPTY_MAP, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(0,
( (struct bmapnode*) &(const bmapnode[]) {
@@ -482,10 +508,10 @@ be_local_class(Matter_Plugin,
{ be_const_key_weak(invoke_request, 18), be_const_closure(Matter_Plugin_invoke_request_closure) },
{ be_const_key_weak(read_event, 1), be_const_closure(Matter_Plugin_read_event_closure) },
{ be_const_key_weak(get_cluster_list, -1), be_const_closure(Matter_Plugin_get_cluster_list_closure) },
- { be_const_key_weak(get_endpoints, -1), be_const_closure(Matter_Plugin_get_endpoints_closure) },
+ { be_const_key_weak(get_attribute_list, -1), be_const_closure(Matter_Plugin_get_attribute_list_closure) },
{ be_const_key_weak(timed_request, -1), be_const_closure(Matter_Plugin_timed_request_closure) },
- { be_const_key_weak(clusters, -1), be_const_var(3) },
- { be_const_key_weak(endpoints, -1), be_const_var(1) },
+ { be_const_key_weak(clusters, -1), be_const_var(2) },
+ { be_const_key_weak(subscribe_attribute, -1), be_const_closure(Matter_Plugin_subscribe_attribute_closure) },
})),
be_str_weak(Matter_Plugin)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h
new file mode 100644
index 000000000..ac2b71929
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h
@@ -0,0 +1,395 @@
+/* Solidification of Matter_Plugin_Device.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Device;
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(Matter_Plugin_Device_invoke_request, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[11]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(command),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K8 */ be_nested_str_weak(add_TLV),
+ /* K9 */ be_nested_str_weak(U2),
+ /* K10 */ be_nested_str_weak(invoke_request),
+ }),
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140702, // 0002 GETMBR R5 R3 K2
+ 0x88180703, // 0003 GETMBR R6 R3 K3
+ 0x1C1C0B04, // 0004 EQ R7 R5 K4
+ 0x781E0016, // 0005 JMPF R7 #001D
+ 0x1C1C0D05, // 0006 EQ R7 R6 K5
+ 0x781E0002, // 0007 JMPF R7 #000B
+ 0x501C0200, // 0008 LDBOOL R7 1 0
+ 0x80040E00, // 0009 RET 1 R7
+ 0x70020010, // 000A JMP #001C
+ 0x1C1C0D06, // 000B EQ R7 R6 K6
+ 0x781E0009, // 000C JMPF R7 #0017
+ 0x8C1C0907, // 000D GETMET R7 R4 K7
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x8C200F08, // 000F GETMET R8 R7 K8
+ 0x58280005, // 0010 LDCONST R10 K5
+ 0x882C0909, // 0011 GETMBR R11 R4 K9
+ 0x58300005, // 0012 LDCONST R12 K5
+ 0x7C200800, // 0013 CALL R8 4
+ 0x900E0705, // 0014 SETMBR R3 K3 K5
+ 0x80040E00, // 0015 RET 1 R7
+ 0x70020004, // 0016 JMP #001C
+ 0x541E003F, // 0017 LDINT R7 64
+ 0x1C1C0C07, // 0018 EQ R7 R6 R7
+ 0x781E0001, // 0019 JMPF R7 #001C
+ 0x501C0200, // 001A LDBOOL R7 1 0
+ 0x80040E00, // 001B RET 1 R7
+ 0x7002000E, // 001C JMP #002C
+ 0x541E0003, // 001D LDINT R7 4
+ 0x1C1C0A07, // 001E EQ R7 R5 R7
+ 0x781E0002, // 001F JMPF R7 #0023
+ 0x501C0200, // 0020 LDBOOL R7 1 0
+ 0x80040E00, // 0021 RET 1 R7
+ 0x70020008, // 0022 JMP #002C
+ 0x601C0003, // 0023 GETGBL R7 G3
+ 0x5C200000, // 0024 MOVE R8 R0
+ 0x7C1C0200, // 0025 CALL R7 1
+ 0x8C1C0F0A, // 0026 GETMET R7 R7 K10
+ 0x5C240200, // 0027 MOVE R9 R1
+ 0x5C280400, // 0028 MOVE R10 R2
+ 0x5C2C0600, // 0029 MOVE R11 R3
+ 0x7C1C0800, // 002A CALL R7 4
+ 0x80040E00, // 002B RET 1 R7
+ 0x80000000, // 002C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
+ be_nested_proto(
+ 16, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[21]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(TLV),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(attribute),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(Matter_TLV_array),
+ /* K7 */ be_nested_str_weak(TYPES),
+ /* K8 */ be_nested_str_weak(keys),
+ /* K9 */ be_nested_str_weak(add_struct),
+ /* K10 */ be_nested_str_weak(add_TLV),
+ /* K11 */ be_nested_str_weak(U2),
+ /* K12 */ be_const_int(1),
+ /* K13 */ be_nested_str_weak(stop_iteration),
+ /* K14 */ be_nested_str_weak(get_cluster_list),
+ /* K15 */ be_nested_str_weak(U4),
+ /* K16 */ be_const_int(2),
+ /* K17 */ be_const_int(3),
+ /* K18 */ be_nested_str_weak(create_TLV),
+ /* K19 */ be_nested_str_weak(U1),
+ /* K20 */ be_nested_str_weak(read_attribute),
+ }),
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[167]) { /* code */
+ 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xB8120200, // 0001 GETNGBL R4 K1
+ 0x88100902, // 0002 GETMBR R4 R4 K2
+ 0x88140503, // 0003 GETMBR R5 R2 K3
+ 0x88180504, // 0004 GETMBR R6 R2 K4
+ 0x541E001C, // 0005 LDINT R7 29
+ 0x1C1C0A07, // 0006 EQ R7 R5 R7
+ 0x781E0057, // 0007 JMPF R7 #0060
+ 0x1C1C0D05, // 0008 EQ R7 R6 K5
+ 0x781E001C, // 0009 JMPF R7 #0027
+ 0x8C1C0906, // 000A GETMET R7 R4 K6
+ 0x7C1C0200, // 000B CALL R7 1
+ 0x60200010, // 000C GETGBL R8 G16
+ 0x88240107, // 000D GETMBR R9 R0 K7
+ 0x8C241308, // 000E GETMET R9 R9 K8
+ 0x7C240200, // 000F CALL R9 1
+ 0x7C200200, // 0010 CALL R8 1
+ 0xA802000F, // 0011 EXBLK 0 #0022
+ 0x5C241000, // 0012 MOVE R9 R8
+ 0x7C240000, // 0013 CALL R9 0
+ 0x8C280F09, // 0014 GETMET R10 R7 K9
+ 0x7C280200, // 0015 CALL R10 1
+ 0x8C2C150A, // 0016 GETMET R11 R10 K10
+ 0x58340005, // 0017 LDCONST R13 K5
+ 0x8838090B, // 0018 GETMBR R14 R4 K11
+ 0x5C3C1200, // 0019 MOVE R15 R9
+ 0x7C2C0800, // 001A CALL R11 4
+ 0x8C2C150A, // 001B GETMET R11 R10 K10
+ 0x5834000C, // 001C LDCONST R13 K12
+ 0x8838090B, // 001D GETMBR R14 R4 K11
+ 0x883C0107, // 001E GETMBR R15 R0 K7
+ 0x943C1E09, // 001F GETIDX R15 R15 R9
+ 0x7C2C0800, // 0020 CALL R11 4
+ 0x7001FFEF, // 0021 JMP #0012
+ 0x5820000D, // 0022 LDCONST R8 K13
+ 0xAC200200, // 0023 CATCH R8 1 0
+ 0xB0080000, // 0024 RAISE 2 R0 R0
+ 0x80040E00, // 0025 RET 1 R7
+ 0x70020037, // 0026 JMP #005F
+ 0x1C1C0D0C, // 0027 EQ R7 R6 K12
+ 0x781E0013, // 0028 JMPF R7 #003D
+ 0x8C1C0906, // 0029 GETMET R7 R4 K6
+ 0x7C1C0200, // 002A CALL R7 1
+ 0x60200010, // 002B GETGBL R8 G16
+ 0x8C24010E, // 002C GETMET R9 R0 K14
+ 0x7C240200, // 002D CALL R9 1
+ 0x7C200200, // 002E CALL R8 1
+ 0xA8020007, // 002F EXBLK 0 #0038
+ 0x5C241000, // 0030 MOVE R9 R8
+ 0x7C240000, // 0031 CALL R9 0
+ 0x8C280F0A, // 0032 GETMET R10 R7 K10
+ 0x4C300000, // 0033 LDNIL R12
+ 0x8834090F, // 0034 GETMBR R13 R4 K15
+ 0x5C381200, // 0035 MOVE R14 R9
+ 0x7C280800, // 0036 CALL R10 4
+ 0x7001FFF7, // 0037 JMP #0030
+ 0x5820000D, // 0038 LDCONST R8 K13
+ 0xAC200200, // 0039 CATCH R8 1 0
+ 0xB0080000, // 003A RAISE 2 R0 R0
+ 0x80040E00, // 003B RET 1 R7
+ 0x70020021, // 003C JMP #005F
+ 0x1C1C0D10, // 003D EQ R7 R6 K16
+ 0x781E0008, // 003E JMPF R7 #0048
+ 0x8C1C0906, // 003F GETMET R7 R4 K6
+ 0x7C1C0200, // 0040 CALL R7 1
+ 0x8C200F0A, // 0041 GETMET R8 R7 K10
+ 0x4C280000, // 0042 LDNIL R10
+ 0x882C090B, // 0043 GETMBR R11 R4 K11
+ 0x54320005, // 0044 LDINT R12 6
+ 0x7C200800, // 0045 CALL R8 4
+ 0x80040E00, // 0046 RET 1 R7
+ 0x70020016, // 0047 JMP #005F
+ 0x1C1C0D11, // 0048 EQ R7 R6 K17
+ 0x781E0003, // 0049 JMPF R7 #004E
+ 0x8C1C0906, // 004A GETMET R7 R4 K6
+ 0x7C1C0200, // 004B CALL R7 1
+ 0x80040E00, // 004C RET 1 R7
+ 0x70020010, // 004D JMP #005F
+ 0x541EFFFB, // 004E LDINT R7 65532
+ 0x1C1C0C07, // 004F EQ R7 R6 R7
+ 0x781E0005, // 0050 JMPF R7 #0057
+ 0x8C1C0912, // 0051 GETMET R7 R4 K18
+ 0x8824090F, // 0052 GETMBR R9 R4 K15
+ 0x58280005, // 0053 LDCONST R10 K5
+ 0x7C1C0600, // 0054 CALL R7 3
+ 0x80040E00, // 0055 RET 1 R7
+ 0x70020007, // 0056 JMP #005F
+ 0x541EFFFC, // 0057 LDINT R7 65533
+ 0x1C1C0C07, // 0058 EQ R7 R6 R7
+ 0x781E0004, // 0059 JMPF R7 #005F
+ 0x8C1C0912, // 005A GETMET R7 R4 K18
+ 0x8824090F, // 005B GETMBR R9 R4 K15
+ 0x5828000C, // 005C LDCONST R10 K12
+ 0x7C1C0600, // 005D CALL R7 3
+ 0x80040E00, // 005E RET 1 R7
+ 0x70020045, // 005F JMP #00A6
+ 0x1C1C0B11, // 0060 EQ R7 R5 K17
+ 0x781E0021, // 0061 JMPF R7 #0084
+ 0x1C1C0D05, // 0062 EQ R7 R6 K5
+ 0x781E0005, // 0063 JMPF R7 #006A
+ 0x8C1C0912, // 0064 GETMET R7 R4 K18
+ 0x8824090B, // 0065 GETMBR R9 R4 K11
+ 0x58280005, // 0066 LDCONST R10 K5
+ 0x7C1C0600, // 0067 CALL R7 3
+ 0x80040E00, // 0068 RET 1 R7
+ 0x70020018, // 0069 JMP #0083
+ 0x1C1C0D0C, // 006A EQ R7 R6 K12
+ 0x781E0005, // 006B JMPF R7 #0072
+ 0x8C1C0912, // 006C GETMET R7 R4 K18
+ 0x88240913, // 006D GETMBR R9 R4 K19
+ 0x58280005, // 006E LDCONST R10 K5
+ 0x7C1C0600, // 006F CALL R7 3
+ 0x80040E00, // 0070 RET 1 R7
+ 0x70020010, // 0071 JMP #0083
+ 0x541EFFFB, // 0072 LDINT R7 65532
+ 0x1C1C0C07, // 0073 EQ R7 R6 R7
+ 0x781E0005, // 0074 JMPF R7 #007B
+ 0x8C1C0912, // 0075 GETMET R7 R4 K18
+ 0x8824090F, // 0076 GETMBR R9 R4 K15
+ 0x58280005, // 0077 LDCONST R10 K5
+ 0x7C1C0600, // 0078 CALL R7 3
+ 0x80040E00, // 0079 RET 1 R7
+ 0x70020007, // 007A JMP #0083
+ 0x541EFFFC, // 007B LDINT R7 65533
+ 0x1C1C0C07, // 007C EQ R7 R6 R7
+ 0x781E0004, // 007D JMPF R7 #0083
+ 0x8C1C0912, // 007E GETMET R7 R4 K18
+ 0x8824090F, // 007F GETMBR R9 R4 K15
+ 0x542A0003, // 0080 LDINT R10 4
+ 0x7C1C0600, // 0081 CALL R7 3
+ 0x80040E00, // 0082 RET 1 R7
+ 0x70020021, // 0083 JMP #00A6
+ 0x541E0003, // 0084 LDINT R7 4
+ 0x1C1C0A07, // 0085 EQ R7 R5 R7
+ 0x781E0016, // 0086 JMPF R7 #009E
+ 0x1C1C0D05, // 0087 EQ R7 R6 K5
+ 0x781E0002, // 0088 JMPF R7 #008C
+ 0x4C1C0000, // 0089 LDNIL R7
+ 0x80040E00, // 008A RET 1 R7
+ 0x70020010, // 008B JMP #009D
+ 0x541EFFFB, // 008C LDINT R7 65532
+ 0x1C1C0C07, // 008D EQ R7 R6 R7
+ 0x781E0005, // 008E JMPF R7 #0095
+ 0x8C1C0912, // 008F GETMET R7 R4 K18
+ 0x8824090F, // 0090 GETMBR R9 R4 K15
+ 0x58280005, // 0091 LDCONST R10 K5
+ 0x7C1C0600, // 0092 CALL R7 3
+ 0x80040E00, // 0093 RET 1 R7
+ 0x70020007, // 0094 JMP #009D
+ 0x541EFFFC, // 0095 LDINT R7 65533
+ 0x1C1C0C07, // 0096 EQ R7 R6 R7
+ 0x781E0004, // 0097 JMPF R7 #009D
+ 0x8C1C0912, // 0098 GETMET R7 R4 K18
+ 0x8824090F, // 0099 GETMBR R9 R4 K15
+ 0x542A0003, // 009A LDINT R10 4
+ 0x7C1C0600, // 009B CALL R7 3
+ 0x80040E00, // 009C RET 1 R7
+ 0x70020007, // 009D JMP #00A6
+ 0x601C0003, // 009E GETGBL R7 G3
+ 0x5C200000, // 009F MOVE R8 R0
+ 0x7C1C0200, // 00A0 CALL R7 1
+ 0x8C1C0F14, // 00A1 GETMET R7 R7 K20
+ 0x5C240200, // 00A2 MOVE R9 R1
+ 0x5C280400, // 00A3 MOVE R10 R2
+ 0x7C1C0600, // 00A4 CALL R7 3
+ 0x80040E00, // 00A5 RET 1 R7
+ 0x80000000, // 00A6 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_Device_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(clusters),
+ /* K2 */ be_nested_str_weak(CLUSTERS),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100900, // 0003 GETMET R4 R4 K0
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x7C100600, // 0006 CALL R4 3
+ 0x88100102, // 0007 GETMBR R4 R0 K2
+ 0x90020204, // 0008 SETMBR R0 K1 R4
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Device
+********************************************************************/
+extern const bclass be_class_Matter_Plugin;
+be_local_class(Matter_Plugin_Device,
+ 0,
+ &be_class_Matter_Plugin,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(0, -1), be_const_int(0) },
+ })) ) } )) },
+ { 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(init, -1), be_const_closure(Matter_Plugin_Device_init_closure) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(3,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(4,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(3,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(6,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(2),
+ be_const_int(3),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Device)
+);
+/*******************************************************************/
+
+void be_load_Matter_Plugin_Device_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Plugin_Device);
+ be_setglobal(vm, "Matter_Plugin_Device");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h
index e56d42c56..9d3b3bb05 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h
@@ -7,44 +7,11 @@
extern const bclass be_class_Matter_Plugin_OnOff;
/********************************************************************
-** Solidified function: onoff_changed
+** Solidified function: invoke_request
********************************************************************/
-be_local_closure(Matter_Plugin_OnOff_onoff_changed, /* name */
+be_local_closure(Matter_Plugin_OnOff_invoke_request, /* name */
be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_const_int(0),
- }),
- be_str_weak(onoff_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x54120005, // 0002 LDINT R4 6
- 0x58140002, // 0003 LDCONST R5 K2
- 0x7C040800, // 0004 CALL R1 4
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Plugin_OnOff_init, /* name */
- be_nested_proto(
- 8, /* nstack */
+ 13, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
@@ -52,80 +19,143 @@ be_local_closure(Matter_Plugin_OnOff_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(endpoints),
- /* K2 */ be_nested_str_weak(ENDPOINTS),
- /* K3 */ be_nested_str_weak(endpoint),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(clusters),
- /* K6 */ be_nested_str_weak(CLUSTERS),
- /* K7 */ be_nested_str_weak(get_onoff),
- /* K8 */ be_nested_str_weak(tasmota_relay_index),
+ ( &(const bvalue[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(command),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K8 */ be_nested_str_weak(add_TLV),
+ /* K9 */ be_nested_str_weak(U2),
+ /* K10 */ be_nested_str_weak(set_onoff),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(get_onoff),
}),
- be_str_weak(init),
+ be_str_weak(invoke_request),
&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
- 0x7C100600, // 0006 CALL R4 3
- 0x88100102, // 0007 GETMBR R4 R0 K2
- 0x90020204, // 0008 SETMBR R0 K1 R4
- 0x88100102, // 0009 GETMBR R4 R0 K2
- 0x94100904, // 000A GETIDX R4 R4 K4
- 0x90020604, // 000B SETMBR R0 K3 R4
- 0x88100106, // 000C GETMBR R4 R0 K6
- 0x90020A04, // 000D SETMBR R0 K5 R4
- 0x8C100107, // 000E GETMET R4 R0 K7
- 0x7C100200, // 000F CALL R4 1
- 0x4C100000, // 0010 LDNIL R4
- 0x1C100604, // 0011 EQ R4 R3 R4
- 0x78120000, // 0012 JMPF R4 #0014
- 0x580C0004, // 0013 LDCONST R3 K4
- 0x90021003, // 0014 SETMBR R0 K8 R3
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_onoff
-********************************************************************/
-be_local_closure(Matter_Plugin_OnOff_set_onoff, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(set_power),
- /* K2 */ be_nested_str_weak(tasmota_relay_index),
- /* K3 */ be_nested_str_weak(get_onoff),
- }),
- be_str_weak(set_onoff),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
- 0x60140017, // 0003 GETGBL R5 G23
- 0x5C180200, // 0004 MOVE R6 R1
- 0x7C140200, // 0005 CALL R5 1
- 0x7C080600, // 0006 CALL R2 3
- 0x8C080103, // 0007 GETMET R2 R0 K3
- 0x7C080200, // 0008 CALL R2 1
- 0x80000000, // 0009 RET 0
+ ( &(const binstruction[119]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140702, // 0002 GETMBR R5 R3 K2
+ 0x88180703, // 0003 GETMBR R6 R3 K3
+ 0x1C1C0B04, // 0004 EQ R7 R5 K4
+ 0x781E0016, // 0005 JMPF R7 #001D
+ 0x1C1C0D05, // 0006 EQ R7 R6 K5
+ 0x781E0002, // 0007 JMPF R7 #000B
+ 0x501C0200, // 0008 LDBOOL R7 1 0
+ 0x80040E00, // 0009 RET 1 R7
+ 0x70020010, // 000A JMP #001C
+ 0x1C1C0D06, // 000B EQ R7 R6 K6
+ 0x781E0009, // 000C JMPF R7 #0017
+ 0x8C1C0907, // 000D GETMET R7 R4 K7
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x8C200F08, // 000F GETMET R8 R7 K8
+ 0x58280005, // 0010 LDCONST R10 K5
+ 0x882C0909, // 0011 GETMBR R11 R4 K9
+ 0x58300005, // 0012 LDCONST R12 K5
+ 0x7C200800, // 0013 CALL R8 4
+ 0x900E0705, // 0014 SETMBR R3 K3 K5
+ 0x80040E00, // 0015 RET 1 R7
+ 0x70020004, // 0016 JMP #001C
+ 0x541E003F, // 0017 LDINT R7 64
+ 0x1C1C0C07, // 0018 EQ R7 R6 R7
+ 0x781E0001, // 0019 JMPF R7 #001C
+ 0x501C0200, // 001A LDBOOL R7 1 0
+ 0x80040E00, // 001B RET 1 R7
+ 0x70020058, // 001C JMP #0076
+ 0x541E0003, // 001D LDINT R7 4
+ 0x1C1C0A07, // 001E EQ R7 R5 R7
+ 0x781E0002, // 001F JMPF R7 #0023
+ 0x501C0200, // 0020 LDBOOL R7 1 0
+ 0x80040E00, // 0021 RET 1 R7
+ 0x70020052, // 0022 JMP #0076
+ 0x541E0004, // 0023 LDINT R7 5
+ 0x1C1C0A07, // 0024 EQ R7 R5 R7
+ 0x781E0002, // 0025 JMPF R7 #0029
+ 0x501C0200, // 0026 LDBOOL R7 1 0
+ 0x80040E00, // 0027 RET 1 R7
+ 0x7002004C, // 0028 JMP #0076
+ 0x541E0005, // 0029 LDINT R7 6
+ 0x1C1C0A07, // 002A EQ R7 R5 R7
+ 0x781E001B, // 002B JMPF R7 #0048
+ 0x1C1C0D05, // 002C EQ R7 R6 K5
+ 0x781E0005, // 002D JMPF R7 #0034
+ 0x8C1C010A, // 002E GETMET R7 R0 K10
+ 0x50240000, // 002F LDBOOL R9 0 0
+ 0x7C1C0400, // 0030 CALL R7 2
+ 0x501C0200, // 0031 LDBOOL R7 1 0
+ 0x80040E00, // 0032 RET 1 R7
+ 0x70020012, // 0033 JMP #0047
+ 0x1C1C0D06, // 0034 EQ R7 R6 K6
+ 0x781E0005, // 0035 JMPF R7 #003C
+ 0x8C1C010A, // 0036 GETMET R7 R0 K10
+ 0x50240200, // 0037 LDBOOL R9 1 0
+ 0x7C1C0400, // 0038 CALL R7 2
+ 0x501C0200, // 0039 LDBOOL R7 1 0
+ 0x80040E00, // 003A RET 1 R7
+ 0x7002000A, // 003B JMP #0047
+ 0x1C1C0D0B, // 003C EQ R7 R6 K11
+ 0x781E0008, // 003D JMPF R7 #0047
+ 0x8C1C010A, // 003E GETMET R7 R0 K10
+ 0x8C24010C, // 003F GETMET R9 R0 K12
+ 0x7C240200, // 0040 CALL R9 1
+ 0x78260000, // 0041 JMPF R9 #0043
+ 0x50240001, // 0042 LDBOOL R9 0 1
+ 0x50240200, // 0043 LDBOOL R9 1 0
+ 0x7C1C0400, // 0044 CALL R7 2
+ 0x501C0200, // 0045 LDBOOL R7 1 0
+ 0x80040E00, // 0046 RET 1 R7
+ 0x7002002D, // 0047 JMP #0076
+ 0x541E0007, // 0048 LDINT R7 8
+ 0x1C1C0A07, // 0049 EQ R7 R5 R7
+ 0x781E002A, // 004A JMPF R7 #0076
+ 0x1C1C0D05, // 004B EQ R7 R6 K5
+ 0x781E0002, // 004C JMPF R7 #0050
+ 0x501C0200, // 004D LDBOOL R7 1 0
+ 0x80040E00, // 004E RET 1 R7
+ 0x70020025, // 004F JMP #0076
+ 0x1C1C0D06, // 0050 EQ R7 R6 K6
+ 0x781E0002, // 0051 JMPF R7 #0055
+ 0x501C0200, // 0052 LDBOOL R7 1 0
+ 0x80040E00, // 0053 RET 1 R7
+ 0x70020020, // 0054 JMP #0076
+ 0x1C1C0D0B, // 0055 EQ R7 R6 K11
+ 0x781E0002, // 0056 JMPF R7 #005A
+ 0x501C0200, // 0057 LDBOOL R7 1 0
+ 0x80040E00, // 0058 RET 1 R7
+ 0x7002001B, // 0059 JMP #0076
+ 0x1C1C0D04, // 005A EQ R7 R6 K4
+ 0x781E0002, // 005B JMPF R7 #005F
+ 0x501C0200, // 005C LDBOOL R7 1 0
+ 0x80040E00, // 005D RET 1 R7
+ 0x70020016, // 005E JMP #0076
+ 0x541E0003, // 005F LDINT R7 4
+ 0x1C1C0C07, // 0060 EQ R7 R6 R7
+ 0x781E0002, // 0061 JMPF R7 #0065
+ 0x501C0200, // 0062 LDBOOL R7 1 0
+ 0x80040E00, // 0063 RET 1 R7
+ 0x70020010, // 0064 JMP #0076
+ 0x541E0004, // 0065 LDINT R7 5
+ 0x1C1C0C07, // 0066 EQ R7 R6 R7
+ 0x781E0002, // 0067 JMPF R7 #006B
+ 0x501C0200, // 0068 LDBOOL R7 1 0
+ 0x80040E00, // 0069 RET 1 R7
+ 0x7002000A, // 006A JMP #0076
+ 0x541E0005, // 006B LDINT R7 6
+ 0x1C1C0C07, // 006C EQ R7 R6 R7
+ 0x781E0002, // 006D JMPF R7 #0071
+ 0x501C0200, // 006E LDBOOL R7 1 0
+ 0x80040E00, // 006F RET 1 R7
+ 0x70020004, // 0070 JMP #0076
+ 0x541E0006, // 0071 LDINT R7 7
+ 0x1C1C0C07, // 0072 EQ R7 R6 R7
+ 0x781E0001, // 0073 JMPF R7 #0076
+ 0x501C0200, // 0074 LDBOOL R7 1 0
+ 0x80040E00, // 0075 RET 1 R7
+ 0x80000000, // 0076 RET 0
})
)
);
@@ -189,6 +219,76 @@ be_local_closure(Matter_Plugin_OnOff_get_onoff, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: onoff_changed
+********************************************************************/
+be_local_closure(Matter_Plugin_OnOff_onoff_changed, /* 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[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ }),
+ be_str_weak(onoff_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x54120005, // 0002 LDINT R4 6
+ 0x58140001, // 0003 LDCONST R5 K1
+ 0x7C040800, // 0004 CALL R1 4
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_onoff
+********************************************************************/
+be_local_closure(Matter_Plugin_OnOff_set_onoff, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(set_power),
+ /* K2 */ be_nested_str_weak(tasmota_relay_index),
+ /* K3 */ be_nested_str_weak(get_onoff),
+ }),
+ be_str_weak(set_onoff),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xB80A0000, // 0000 GETNGBL R2 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x60140017, // 0003 GETGBL R5 G23
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x7C140200, // 0005 CALL R5 1
+ 0x7C080600, // 0006 CALL R2 3
+ 0x8C080103, // 0007 GETMET R2 R0 K3
+ 0x7C080200, // 0008 CALL R2 1
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
@@ -491,6 +591,53 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_OnOff_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(clusters),
+ /* K2 */ be_nested_str_weak(CLUSTERS),
+ /* K3 */ be_nested_str_weak(get_onoff),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(tasmota_relay_index),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* 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
+ 0x7C100600, // 0006 CALL R4 3
+ 0x88100102, // 0007 GETMBR R4 R0 K2
+ 0x90020204, // 0008 SETMBR R0 K1 R4
+ 0x8C100103, // 0009 GETMET R4 R0 K3
+ 0x7C100200, // 000A CALL R4 1
+ 0x4C100000, // 000B LDNIL R4
+ 0x1C100604, // 000C EQ R4 R3 R4
+ 0x78120000, // 000D JMPF R4 #000F
+ 0x580C0004, // 000E LDCONST R3 K4
+ 0x90020A03, // 000F SETMBR R0 K5 R3
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: every_second
********************************************************************/
@@ -519,162 +666,6 @@ be_local_closure(Matter_Plugin_OnOff_every_second, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-be_local_closure(Matter_Plugin_OnOff_invoke_request, /* name */
- be_nested_proto(
- 13, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_const_int(3),
- /* K5 */ be_const_int(0),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(Matter_TLV_struct),
- /* K8 */ be_nested_str_weak(add_TLV),
- /* K9 */ be_nested_str_weak(U2),
- /* K10 */ be_nested_str_weak(set_onoff),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(get_onoff),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[119]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x1C1C0B04, // 0004 EQ R7 R5 K4
- 0x781E0016, // 0005 JMPF R7 #001D
- 0x1C1C0D05, // 0006 EQ R7 R6 K5
- 0x781E0002, // 0007 JMPF R7 #000B
- 0x501C0200, // 0008 LDBOOL R7 1 0
- 0x80040E00, // 0009 RET 1 R7
- 0x70020010, // 000A JMP #001C
- 0x1C1C0D06, // 000B EQ R7 R6 K6
- 0x781E0009, // 000C JMPF R7 #0017
- 0x8C1C0907, // 000D GETMET R7 R4 K7
- 0x7C1C0200, // 000E CALL R7 1
- 0x8C200F08, // 000F GETMET R8 R7 K8
- 0x58280005, // 0010 LDCONST R10 K5
- 0x882C0909, // 0011 GETMBR R11 R4 K9
- 0x58300005, // 0012 LDCONST R12 K5
- 0x7C200800, // 0013 CALL R8 4
- 0x900E0705, // 0014 SETMBR R3 K3 K5
- 0x80040E00, // 0015 RET 1 R7
- 0x70020004, // 0016 JMP #001C
- 0x541E003F, // 0017 LDINT R7 64
- 0x1C1C0C07, // 0018 EQ R7 R6 R7
- 0x781E0001, // 0019 JMPF R7 #001C
- 0x501C0200, // 001A LDBOOL R7 1 0
- 0x80040E00, // 001B RET 1 R7
- 0x70020058, // 001C JMP #0076
- 0x541E0003, // 001D LDINT R7 4
- 0x1C1C0A07, // 001E EQ R7 R5 R7
- 0x781E0002, // 001F JMPF R7 #0023
- 0x501C0200, // 0020 LDBOOL R7 1 0
- 0x80040E00, // 0021 RET 1 R7
- 0x70020052, // 0022 JMP #0076
- 0x541E0004, // 0023 LDINT R7 5
- 0x1C1C0A07, // 0024 EQ R7 R5 R7
- 0x781E0002, // 0025 JMPF R7 #0029
- 0x501C0200, // 0026 LDBOOL R7 1 0
- 0x80040E00, // 0027 RET 1 R7
- 0x7002004C, // 0028 JMP #0076
- 0x541E0005, // 0029 LDINT R7 6
- 0x1C1C0A07, // 002A EQ R7 R5 R7
- 0x781E001B, // 002B JMPF R7 #0048
- 0x1C1C0D05, // 002C EQ R7 R6 K5
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C010A, // 002E GETMET R7 R0 K10
- 0x50240000, // 002F LDBOOL R9 0 0
- 0x7C1C0400, // 0030 CALL R7 2
- 0x501C0200, // 0031 LDBOOL R7 1 0
- 0x80040E00, // 0032 RET 1 R7
- 0x70020012, // 0033 JMP #0047
- 0x1C1C0D06, // 0034 EQ R7 R6 K6
- 0x781E0005, // 0035 JMPF R7 #003C
- 0x8C1C010A, // 0036 GETMET R7 R0 K10
- 0x50240200, // 0037 LDBOOL R9 1 0
- 0x7C1C0400, // 0038 CALL R7 2
- 0x501C0200, // 0039 LDBOOL R7 1 0
- 0x80040E00, // 003A RET 1 R7
- 0x7002000A, // 003B JMP #0047
- 0x1C1C0D0B, // 003C EQ R7 R6 K11
- 0x781E0008, // 003D JMPF R7 #0047
- 0x8C1C010A, // 003E GETMET R7 R0 K10
- 0x8C24010C, // 003F GETMET R9 R0 K12
- 0x7C240200, // 0040 CALL R9 1
- 0x78260000, // 0041 JMPF R9 #0043
- 0x50240001, // 0042 LDBOOL R9 0 1
- 0x50240200, // 0043 LDBOOL R9 1 0
- 0x7C1C0400, // 0044 CALL R7 2
- 0x501C0200, // 0045 LDBOOL R7 1 0
- 0x80040E00, // 0046 RET 1 R7
- 0x7002002D, // 0047 JMP #0076
- 0x541E0007, // 0048 LDINT R7 8
- 0x1C1C0A07, // 0049 EQ R7 R5 R7
- 0x781E002A, // 004A JMPF R7 #0076
- 0x1C1C0D05, // 004B EQ R7 R6 K5
- 0x781E0002, // 004C JMPF R7 #0050
- 0x501C0200, // 004D LDBOOL R7 1 0
- 0x80040E00, // 004E RET 1 R7
- 0x70020025, // 004F JMP #0076
- 0x1C1C0D06, // 0050 EQ R7 R6 K6
- 0x781E0002, // 0051 JMPF R7 #0055
- 0x501C0200, // 0052 LDBOOL R7 1 0
- 0x80040E00, // 0053 RET 1 R7
- 0x70020020, // 0054 JMP #0076
- 0x1C1C0D0B, // 0055 EQ R7 R6 K11
- 0x781E0002, // 0056 JMPF R7 #005A
- 0x501C0200, // 0057 LDBOOL R7 1 0
- 0x80040E00, // 0058 RET 1 R7
- 0x7002001B, // 0059 JMP #0076
- 0x1C1C0D04, // 005A EQ R7 R6 K4
- 0x781E0002, // 005B JMPF R7 #005F
- 0x501C0200, // 005C LDBOOL R7 1 0
- 0x80040E00, // 005D RET 1 R7
- 0x70020016, // 005E JMP #0076
- 0x541E0003, // 005F LDINT R7 4
- 0x1C1C0C07, // 0060 EQ R7 R6 R7
- 0x781E0002, // 0061 JMPF R7 #0065
- 0x501C0200, // 0062 LDBOOL R7 1 0
- 0x80040E00, // 0063 RET 1 R7
- 0x70020010, // 0064 JMP #0076
- 0x541E0004, // 0065 LDINT R7 5
- 0x1C1C0C07, // 0066 EQ R7 R6 R7
- 0x781E0002, // 0067 JMPF R7 #006B
- 0x501C0200, // 0068 LDBOOL R7 1 0
- 0x80040E00, // 0069 RET 1 R7
- 0x7002000A, // 006A JMP #0076
- 0x541E0005, // 006B LDINT R7 6
- 0x1C1C0C07, // 006C EQ R7 R6 R7
- 0x781E0002, // 006D JMPF R7 #0071
- 0x501C0200, // 006E LDBOOL R7 1 0
- 0x80040E00, // 006F RET 1 R7
- 0x70020004, // 0070 JMP #0076
- 0x541E0006, // 0071 LDINT R7 7
- 0x1C1C0C07, // 0072 EQ R7 R6 R7
- 0x781E0001, // 0073 JMPF R7 #0076
- 0x501C0200, // 0074 LDBOOL R7 1 0
- 0x80040E00, // 0075 RET 1 R7
- 0x80000000, // 0076 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_Plugin_OnOff
********************************************************************/
@@ -682,23 +673,18 @@ extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_OnOff,
2,
&be_class_Matter_Plugin,
- be_nested_map(12,
+ be_nested_map(11,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(every_second, -1), be_const_closure(Matter_Plugin_OnOff_every_second_closure) },
+ { be_const_key_weak(get_onoff, 8), be_const_closure(Matter_Plugin_OnOff_get_onoff_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_OnOff_init_closure) },
+ { be_const_key_weak(shadow_onoff, 5), be_const_var(1) },
+ { be_const_key_weak(TYPES, 7), 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(266, -1), be_const_int(2) },
})) ) } )) },
- { be_const_key_weak(ENDPOINTS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(1),
- })) ) } )) },
- { be_const_key_weak(onoff_changed, 0), be_const_closure(Matter_Plugin_OnOff_onoff_changed_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_OnOff_init_closure) },
- { be_const_key_weak(shadow_onoff, -1), be_const_var(1) },
- { be_const_key_weak(tasmota_relay_index, -1), be_const_var(0) },
- { be_const_key_weak(set_onoff, 8), be_const_closure(Matter_Plugin_OnOff_set_onoff_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_OnOff_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
@@ -747,10 +733,10 @@ be_local_class(Matter_Plugin_OnOff,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_OnOff_read_attribute_closure) },
- { be_const_key_weak(every_second, -1), be_const_closure(Matter_Plugin_OnOff_every_second_closure) },
- { be_const_key_weak(get_onoff, 7), be_const_closure(Matter_Plugin_OnOff_get_onoff_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_OnOff_invoke_request_closure) },
+ { be_const_key_weak(set_onoff, -1), be_const_closure(Matter_Plugin_OnOff_set_onoff_closure) },
+ { be_const_key_weak(onoff_changed, -1), be_const_closure(Matter_Plugin_OnOff_onoff_changed_closure) },
+ { be_const_key_weak(tasmota_relay_index, 2), be_const_var(0) },
+ { be_const_key_weak(invoke_request, 0), be_const_closure(Matter_Plugin_OnOff_invoke_request_closure) },
})),
be_str_weak(Matter_Plugin_OnOff)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h
index 2a886bf7c..06c3db2ad 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h
@@ -1192,16 +1192,14 @@ be_local_closure(Matter_Plugin_Root_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
+ ( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(endpoints),
- /* K2 */ be_nested_str_weak(ENDPOINTS),
- /* K3 */ be_nested_str_weak(clusters),
- /* K4 */ be_nested_str_weak(CLUSTERS),
+ /* K1 */ be_nested_str_weak(clusters),
+ /* K2 */ be_nested_str_weak(CLUSTERS),
}),
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
+ ( &(const binstruction[10]) { /* code */
0x600C0003, // 0000 GETGBL R3 G3
0x5C100000, // 0001 MOVE R4 R0
0x7C0C0200, // 0002 CALL R3 1
@@ -1211,9 +1209,7 @@ be_local_closure(Matter_Plugin_Root_init, /* name */
0x7C0C0600, // 0006 CALL R3 3
0x880C0102, // 0007 GETMBR R3 R0 K2
0x90020203, // 0008 SETMBR R0 K1 R3
- 0x880C0104, // 0009 GETMBR R3 R0 K4
- 0x90020603, // 000A SETMBR R0 K3 R3
- 0x80000000, // 000B RET 0
+ 0x80000000, // 0009 RET 0
})
)
);
@@ -2029,11 +2025,17 @@ extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Root,
0,
&be_class_Matter_Plugin,
- be_nested_map(7,
+ be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(read_attribute, 1), be_const_closure(Matter_Plugin_Root_read_attribute_closure) },
- { be_const_key_weak(invoke_request, 2), be_const_closure(Matter_Plugin_Root_invoke_request_closure) },
- { be_const_key_weak(CLUSTERS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Root_read_attribute_closure) },
+ { be_const_key_weak(write_attribute, -1), be_const_closure(Matter_Plugin_Root_write_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(22, -1), be_const_int(1) },
+ })) ) } )) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Root_init_closure) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(14,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@@ -2119,7 +2121,7 @@ be_local_class(Matter_Plugin_Root,
be_const_int(5),
})) ) } )) },
{ be_const_key_int(40, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(13,
+ be_const_list( * be_nested_list(14,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
@@ -2131,6 +2133,7 @@ be_local_class(Matter_Plugin_Root,
be_const_int(7),
be_const_int(8),
be_const_int(9),
+ be_const_int(10),
be_const_int(15),
be_const_int(18),
be_const_int(19),
@@ -2143,18 +2146,7 @@ be_local_class(Matter_Plugin_Root,
be_const_int(65532),
})) ) } )) },
})) ) } )) },
- { 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(22, -1), be_const_int(1) },
- })) ) } )) },
- { be_const_key_weak(write_attribute, -1), be_const_closure(Matter_Plugin_Root_write_attribute_closure) },
- { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Root_init_closure) },
- { be_const_key_weak(ENDPOINTS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- })) ) } )) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Root_invoke_request_closure) },
})),
be_str_weak(Matter_Plugin_Root)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h
new file mode 100644
index 000000000..d80da61cb
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h
@@ -0,0 +1,324 @@
+/* Solidification of Matter_Plugin_Temp_Sensor.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Temp_Sensor;
+
+/********************************************************************
+** Solidified function: get_temperature
+********************************************************************/
+be_local_closure(Matter_Plugin_Temp_Sensor_get_temperature, /* 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(shadow_temperature),
+ }),
+ be_str_weak(get_temperature),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(Matter_Plugin_Temp_Sensor_every_second, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(get_temperature),
+ }),
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_sensors
+********************************************************************/
+be_local_closure(Matter_Plugin_Temp_Sensor_parse_sensors, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota_sensor_matcher),
+ /* K1 */ be_nested_str_weak(match),
+ /* K2 */ be_nested_str_weak(shadow_temperature),
+ /* K3 */ be_nested_str_weak(attribute_updated),
+ /* K4 */ be_const_int(0),
+ }),
+ be_str_weak(parse_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x780A0011, // 0001 JMPF R2 #0014
+ 0x6008000A, // 0002 GETGBL R2 G10
+ 0x880C0100, // 0003 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0004 GETMET R3 R3 K1
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x7C080200, // 0007 CALL R2 1
+ 0x4C0C0000, // 0008 LDNIL R3
+ 0x200C0403, // 0009 NE R3 R2 R3
+ 0x780E0008, // 000A JMPF R3 #0014
+ 0x880C0102, // 000B GETMBR R3 R0 K2
+ 0x200C0403, // 000C NE R3 R2 R3
+ 0x780E0004, // 000D JMPF R3 #0013
+ 0x8C0C0103, // 000E GETMET R3 R0 K3
+ 0x4C140000, // 000F LDNIL R5
+ 0x541A0401, // 0010 LDINT R6 1026
+ 0x581C0004, // 0011 LDCONST R7 K4
+ 0x7C0C0800, // 0012 CALL R3 4
+ 0x90020402, // 0013 SETMBR R0 K2 R2
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_Temp_Sensor_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 8]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(clusters),
+ /* K2 */ be_nested_str_weak(CLUSTERS),
+ /* K3 */ be_nested_str_weak(tasmota_sensor_filter),
+ /* K4 */ be_nested_str_weak(tasmota_sensor_matcher),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(Rule_Matcher),
+ /* K7 */ be_nested_str_weak(parse),
+ }),
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* 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
+ 0x7C100600, // 0006 CALL R4 3
+ 0x88100102, // 0007 GETMBR R4 R0 K2
+ 0x90020204, // 0008 SETMBR R0 K1 R4
+ 0x90020603, // 0009 SETMBR R0 K3 R3
+ 0xB8120A00, // 000A GETNGBL R4 K5
+ 0x88100906, // 000B GETMBR R4 R4 K6
+ 0x8C100907, // 000C GETMET R4 R4 K7
+ 0x5C180600, // 000D MOVE R6 R3
+ 0x7C100400, // 000E CALL R4 2
+ 0x90020804, // 000F SETMBR R0 K4 R4
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_Temp_Sensor_read_attribute, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(TLV),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(attribute),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(shadow_temperature),
+ /* K7 */ be_nested_str_weak(create_TLV),
+ /* K8 */ be_nested_str_weak(I2),
+ /* K9 */ be_nested_str_weak(NULL),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(read_attribute),
+ }),
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[55]) { /* code */
+ 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xB8120200, // 0001 GETNGBL R4 K1
+ 0x88100902, // 0002 GETMBR R4 R4 K2
+ 0x88140503, // 0003 GETMBR R5 R2 K3
+ 0x88180504, // 0004 GETMBR R6 R2 K4
+ 0x541E0401, // 0005 LDINT R7 1026
+ 0x1C1C0A07, // 0006 EQ R7 R5 R7
+ 0x781E0025, // 0007 JMPF R7 #002E
+ 0x1C1C0D05, // 0008 EQ R7 R6 K5
+ 0x781E0013, // 0009 JMPF R7 #001E
+ 0x881C0106, // 000A GETMBR R7 R0 K6
+ 0x4C200000, // 000B LDNIL R8
+ 0x201C0E08, // 000C NE R7 R7 R8
+ 0x781E0009, // 000D JMPF R7 #0018
+ 0x8C1C0907, // 000E GETMET R7 R4 K7
+ 0x88240908, // 000F GETMBR R9 R4 K8
+ 0x60280009, // 0010 GETGBL R10 G9
+ 0x882C0106, // 0011 GETMBR R11 R0 K6
+ 0x54320063, // 0012 LDINT R12 100
+ 0x082C160C, // 0013 MUL R11 R11 R12
+ 0x7C280200, // 0014 CALL R10 1
+ 0x7C1C0600, // 0015 CALL R7 3
+ 0x80040E00, // 0016 RET 1 R7
+ 0x70020004, // 0017 JMP #001D
+ 0x8C1C0907, // 0018 GETMET R7 R4 K7
+ 0x88240909, // 0019 GETMBR R9 R4 K9
+ 0x4C280000, // 001A LDNIL R10
+ 0x7C1C0600, // 001B CALL R7 3
+ 0x80040E00, // 001C RET 1 R7
+ 0x7002000E, // 001D JMP #002D
+ 0x1C1C0D0A, // 001E EQ R7 R6 K10
+ 0x781E0005, // 001F JMPF R7 #0026
+ 0x8C1C0907, // 0020 GETMET R7 R4 K7
+ 0x88240908, // 0021 GETMBR R9 R4 K8
+ 0x5429EC77, // 0022 LDINT R10 -5000
+ 0x7C1C0600, // 0023 CALL R7 3
+ 0x80040E00, // 0024 RET 1 R7
+ 0x70020006, // 0025 JMP #002D
+ 0x1C1C0D0B, // 0026 EQ R7 R6 K11
+ 0x781E0004, // 0027 JMPF R7 #002D
+ 0x8C1C0907, // 0028 GETMET R7 R4 K7
+ 0x88240908, // 0029 GETMBR R9 R4 K8
+ 0x542A3A97, // 002A LDINT R10 15000
+ 0x7C1C0600, // 002B CALL R7 3
+ 0x80040E00, // 002C RET 1 R7
+ 0x70020007, // 002D JMP #0036
+ 0x601C0003, // 002E GETGBL R7 G3
+ 0x5C200000, // 002F MOVE R8 R0
+ 0x7C1C0200, // 0030 CALL R7 1
+ 0x8C1C0F0C, // 0031 GETMET R7 R7 K12
+ 0x5C240200, // 0032 MOVE R9 R1
+ 0x5C280400, // 0033 MOVE R10 R2
+ 0x7C1C0600, // 0034 CALL R7 3
+ 0x80040E00, // 0035 RET 1 R7
+ 0x80000000, // 0036 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Temp_Sensor
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Device;
+be_local_class(Matter_Plugin_Temp_Sensor,
+ 3,
+ &be_class_Matter_Plugin_Device,
+ be_nested_map(10,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(TYPES, 7), 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(770, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Temp_Sensor_read_attribute_closure) },
+ { be_const_key_weak(get_temperature, 1), be_const_closure(Matter_Plugin_Temp_Sensor_get_temperature_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Temp_Sensor_init_closure) },
+ { be_const_key_weak(CLUSTERS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(3,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(6,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(2),
+ be_const_int(3),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ { be_const_key_int(1026, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(3,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(2),
+ })) ) } )) },
+ { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(4,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(1),
+ be_const_int(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ })) ) } )) },
+ { be_const_key_weak(every_second, 3), be_const_closure(Matter_Plugin_Temp_Sensor_every_second_closure) },
+ { be_const_key_weak(tasmota_sensor_filter, 8), be_const_var(0) },
+ { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
+ { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_Temp_Sensor_parse_sensors_closure) },
+ { be_const_key_weak(shadow_temperature, -1), be_const_var(2) },
+ })),
+ be_str_weak(Matter_Plugin_Temp_Sensor)
+);
+/*******************************************************************/
+
+void be_load_Matter_Plugin_Temp_Sensor_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Plugin_Temp_Sensor);
+ be_setglobal(vm, "Matter_Plugin_Temp_Sensor");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
index 9cc91c045..f86a037f7 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
@@ -3495,7 +3495,7 @@ be_local_closure(Matter_Session_Store_find_session_source_id_unsecure, /* name
0x7C0C0400, // 0002 CALL R3 2
0x4C100000, // 0003 LDNIL R4
0x1C100604, // 0004 EQ R4 R3 R4
- 0x7812000B, // 0005 JMPF R4 #0012
+ 0x7812000E, // 0005 JMPF R4 #0015
0xB8120200, // 0006 GETNGBL R4 K1
0x8C100902, // 0007 GETMET R4 R4 K2
0x5C180000, // 0008 MOVE R6 R0
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
index 0c7bd722d..ed3f5e451 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
@@ -2118,8 +2118,8 @@ be_local_closure(Matter_TLV_list_encode, /* name */
( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(_encode_tag),
/* K1 */ be_nested_str_weak(val),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(is_struct),
+ /* K2 */ be_nested_str_weak(is_struct),
+ /* K3 */ be_nested_str_weak(copy),
/* K4 */ be_nested_str_weak(sort),
/* K5 */ be_nested_str_weak(encode),
/* K6 */ be_nested_str_weak(stop_iteration),
@@ -2130,7 +2130,7 @@ be_local_closure(Matter_TLV_list_encode, /* name */
}),
be_str_weak(encode),
&be_const_str_solidified,
- ( &(const binstruction[36]) { /* code */
+ ( &(const binstruction[37]) { /* code */
0x4C080000, // 0000 LDNIL R2
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0002, // 0002 JMPF R2 #0006
@@ -2141,32 +2141,33 @@ be_local_closure(Matter_TLV_list_encode, /* name */
0x5C100200, // 0007 MOVE R4 R1
0x7C080400, // 0008 CALL R2 2
0x88080101, // 0009 GETMBR R2 R0 K1
- 0x8C080502, // 000A GETMET R2 R2 K2
- 0x7C080200, // 000B CALL R2 1
- 0x880C0103, // 000C GETMBR R3 R0 K3
- 0x780E0002, // 000D JMPF R3 #0011
- 0x8C0C0104, // 000E GETMET R3 R0 K4
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x600C0010, // 0011 GETGBL R3 G16
- 0x5C100400, // 0012 MOVE R4 R2
- 0x7C0C0200, // 0013 CALL R3 1
- 0xA8020005, // 0014 EXBLK 0 #001B
- 0x5C100600, // 0015 MOVE R4 R3
- 0x7C100000, // 0016 CALL R4 0
- 0x8C140905, // 0017 GETMET R5 R4 K5
- 0x5C1C0200, // 0018 MOVE R7 R1
- 0x7C140400, // 0019 CALL R5 2
- 0x7001FFF9, // 001A JMP #0015
- 0x580C0006, // 001B LDCONST R3 K6
- 0xAC0C0200, // 001C CATCH R3 1 0
- 0xB0080000, // 001D RAISE 2 R0 R0
- 0x8C0C0307, // 001E GETMET R3 R1 K7
- 0x88140108, // 001F GETMBR R5 R0 K8
- 0x88140B09, // 0020 GETMBR R5 R5 K9
- 0x5818000A, // 0021 LDCONST R6 K10
- 0x7C0C0600, // 0022 CALL R3 3
- 0x80040200, // 0023 RET 1 R1
+ 0x880C0102, // 000A GETMBR R3 R0 K2
+ 0x780E0005, // 000B JMPF R3 #0012
+ 0x8C0C0503, // 000C GETMET R3 R2 K3
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x5C080600, // 000E MOVE R2 R3
+ 0x8C0C0104, // 000F GETMET R3 R0 K4
+ 0x5C140400, // 0010 MOVE R5 R2
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0x600C0010, // 0012 GETGBL R3 G16
+ 0x5C100400, // 0013 MOVE R4 R2
+ 0x7C0C0200, // 0014 CALL R3 1
+ 0xA8020005, // 0015 EXBLK 0 #001C
+ 0x5C100600, // 0016 MOVE R4 R3
+ 0x7C100000, // 0017 CALL R4 0
+ 0x8C140905, // 0018 GETMET R5 R4 K5
+ 0x5C1C0200, // 0019 MOVE R7 R1
+ 0x7C140400, // 001A CALL R5 2
+ 0x7001FFF9, // 001B JMP #0016
+ 0x580C0006, // 001C LDCONST R3 K6
+ 0xAC0C0200, // 001D CATCH R3 1 0
+ 0xB0080000, // 001E RAISE 2 R0 R0
+ 0x8C0C0307, // 001F GETMET R3 R1 K7
+ 0x88140108, // 0020 GETMBR R5 R0 K8
+ 0x88140B09, // 0021 GETMBR R5 R5 K9
+ 0x5818000A, // 0022 LDCONST R6 K10
+ 0x7C0C0600, // 0023 CALL R3 3
+ 0x80040200, // 0024 RET 1 R1
})
)
);