Matter UI and logs polishing (#18866)

This commit is contained in:
s-hadinger 2023-06-12 19:45:18 +02:00 committed by GitHub
parent 0e3b32e848
commit 69b2b93d61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 12055 additions and 12419 deletions

View File

@ -39,13 +39,21 @@ static const uint8_t MATTER_LOGO[] =
// Matter stylesheet
static const uint8_t MATTER_STYLESHEET[] =
"<style>"
".bxm{height:14px;width:14px;display:inline-block;border:1px solid currentColor;background-color:var(--cl,#fff)}"
".ztdm td:not(:first-child){width:20px;font-size:70%}"
".ztdm td:last-child{width:45px}"
".ztdm .bt{margin-right:10px;}"
".htrm{line-height:20px}"
"</style>";
"<style>"
".bxm{height:14px;width:14px;display:inline-block;border:1px solid currentColor;background-color:var(--cl,#fff)}"
".ztdm td:not(:first-child){width:20px;font-size:70%}"
".ztdm td:last-child{width:45px}"
".ztdm .bt{margin-right:10px;}"
".htrm{line-height:20px}"
"</style>";
static const uint8_t MATTER_ADD_ENDPOINT_HINTS_JS[] =
"<script type='text/javascript'>"
"function otm(arg_name,val){"
"var s=eb(arg_name);"
"s.placeholder=(val in hm)?hl[hm[val]]:\"\";"
"};"
"</script>";
extern uint32_t matter_convert_seconds_to_dhm(uint32_t seconds, char *unit, uint32_t *color, bbool days);
@ -256,6 +264,7 @@ static int matter_CD_FFF1_8000(bvm *vm) { return matter_return_static_bytes(vm,
module matter (scope: global, strings: weak) {
_LOGO, comptr(MATTER_LOGO)
_STYLESHEET, comptr(MATTER_STYLESHEET)
_ADD_ENDPOINT_JS, comptr(MATTER_ADD_ENDPOINT_HINTS_JS)
MATTER_OPTION, int(151) // SetOption151 enables Matter
seconds_to_dhm, ctype_func(matter_seconds_to_dhm)

View File

@ -46,7 +46,7 @@ class Matter_Commisioning_Context
def add_session(local_session_id, initiator_session_id, i2r, r2i, ac)
import string
# create session object
tasmota.log(string.format("MTR: add_session local_session_id=%i initiator_session_id=%i", local_session_id, initiator_session_id), 3)
tasmota.log(string.format("MTR: add_session local_session_id=%i initiator_session_id=%i", local_session_id, initiator_session_id), 4)
var session = self.device.sessions.create_session(local_session_id, initiator_session_id)
session.set_keys(i2r, r2i, ac)
@ -59,7 +59,7 @@ class Matter_Commisioning_Context
return false
end
tasmota.log("MTR: received message " + matter.inspect(msg), 4)
# tasmota.log("MTR: received message " + matter.inspect(msg), 4)
if msg.opcode == 0x10
# don't need to do anything, the message is acked already before this call
elif msg.opcode == 0x20
@ -113,7 +113,7 @@ class Matter_Commisioning_Context
# sanity checks
if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: invalid PBKDFParamRequest message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@ -125,7 +125,7 @@ class Matter_Commisioning_Context
# sanity check for PBKDFParamRequest
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)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@ -133,7 +133,7 @@ class Matter_Commisioning_Context
# record the initiator_session_id
session.__future_initiator_session_id = pbkdfparamreq.initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
tasmota.log(string.format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 2)
tasmota.log(string.format("MTR: New_Session(%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
# prepare response
var pbkdfparamresp = matter.PBKDFParamResponse()
@ -159,11 +159,13 @@ class Matter_Commisioning_Context
def parse_Pake1(msg)
import crypto
import string
var session = msg.session
# sanity checks
if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: invalid Pake1 message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
tasmota.log("MTR: invalid Pake1 message", 3)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@ -236,6 +238,9 @@ class Matter_Commisioning_Context
var resp = msg.build_response(0x23 #-pake-2-#, true) # no reliable flag
var raw = resp.encode_frame(pake2_raw)
# log the fact that a new commissioning is starting
tasmota.log(string.format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port))
self.responder.send_response_frame(resp)
return true
end
@ -245,8 +250,8 @@ class Matter_Commisioning_Context
var session = msg.session
# sanity checks
if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: invalid Pake3 message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
tasmota.log("MTR: invalid Pake3 message", 3)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@ -257,8 +262,8 @@ class Matter_Commisioning_Context
# check the value against computed
if cA != session.__spake_cA
tasmota.log("MTR: invalid cA received", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
tasmota.log("MTR: invalid cA received", 3)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@ -288,18 +293,18 @@ class Matter_Commisioning_Context
import crypto
# Validate Sigma1 Destination ID, p.162
# traverse all existing fabrics
tasmota.log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 3)
tasmota.log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 4)
for fabric : self.device.sessions.fabrics
if fabric.noc == nil || fabric.fabric_id == nil || fabric.device_id == nil continue end
# compute candidateDestinationId, Section 4.13.2.4.1, “Destination Identifier”
var destinationMessage = initiatorRandom + fabric.get_ca_pub() + fabric.fabric_id + fabric.device_id
var key = fabric.get_ipk_group_key()
tasmota.log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 3)
tasmota.log("MTR: SIGMA1: key_ipk=" + key.tohex(), 4)
tasmota.log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 4)
# tasmota.log("MTR: SIGMA1: key_ipk=" + key.tohex(), 4)
var h = crypto.HMAC_SHA256(key)
h.update(destinationMessage)
var candidateDestinationId = h.out()
tasmota.log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 3)
tasmota.log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 4)
if candidateDestinationId == destinationId
return fabric
end
@ -318,19 +323,19 @@ class Matter_Commisioning_Context
var session = msg.session
# sanity checks
if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0
# tasmota.log("MTR: invalid Sigma1 message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
# tasmota.log("MTR: invalid Sigma1 message", 3)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx)
tasmota.log(string.format("MTR: sigma1=%s", matter.inspect(sigma1)), 4)
# tasmota.log(string.format("MTR: sigma1=%s", matter.inspect(sigma1)), 4)
session.__initiator_pub = sigma1.initiatorEphPubKey
# find session
var is_resumption = (sigma1.resumptionID != nil && sigma1.initiatorResumeMIC != nil)
tasmota.log(string.format("MTR: is_resumption=%i", is_resumption ? 1 : 0), 4)
# tasmota.log(string.format("MTR: is_resumption=%i", is_resumption ? 1 : 0), 4)
# TODO disable resumption until fixed
is_resumption = false
@ -338,7 +343,7 @@ class Matter_Commisioning_Context
var session_resumption
if is_resumption
session_resumption = self.device.sessions.find_session_by_resumption_id(sigma1.resumptionID)
tasmota.log(string.format("MTR: session_resumption found session=%s session_resumption=%s", matter.inspect(session), matter.inspect(session_resumption)), 4)
# tasmota.log(string.format("MTR: session_resumption found session=%s session_resumption=%s", matter.inspect(session), matter.inspect(session_resumption)), 4)
if session_resumption == nil || session_resumption._fabric == nil
is_resumption = false
end
@ -370,7 +375,7 @@ class Matter_Commisioning_Context
session.set_mode_CASE()
session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
tasmota.log(string.format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 2)
tasmota.log(string.format("MTR: New_Session(%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
# Generate and Send Sigma2_Resume
session.shared_secret = session_resumption.shared_secret
@ -449,7 +454,7 @@ class Matter_Commisioning_Context
session._fabric = fabric
if session == nil || session._fabric == nil
tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 2)
tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0001, false)
return false
end
@ -458,26 +463,26 @@ class Matter_Commisioning_Context
session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
tasmota.log(string.format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 2)
tasmota.log(string.format("MTR: New_Session(%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
tasmota.log("MTR: fabric="+matter.inspect(session._fabric), 4)
tasmota.log("MTR: no_private_key="+session.get_pk().tohex(), 4)
tasmota.log("MTR: noc ="+session.get_noc().tohex(), 4)
if fabric.get_icac()
tasmota.log("MTR: icac ="+fabric.get_icac().tohex(), 4)
end
tasmota.log("MTR: root_ca_cert ="+fabric.get_ca().tohex(), 4)
# tasmota.log("MTR: fabric="+matter.inspect(session._fabric), 4)
# tasmota.log("MTR: no_private_key="+session.get_pk().tohex(), 4)
# tasmota.log("MTR: noc ="+session.get_noc().tohex(), 4)
# if fabric.get_icac()
# tasmota.log("MTR: icac ="+fabric.get_icac().tohex(), 4)
# end
# tasmota.log("MTR: root_ca_cert ="+fabric.get_ca().tohex(), 4)
# Compute Sigma2, p.162
session.resumption_id = crypto.random(16) # generate a new resumption id
session.__responder_priv = crypto.random(32)
session.__responder_pub = crypto.EC_P256().public_key(session.__responder_priv)
tasmota.log("MTR: ResponderEph_priv ="+session.__responder_priv.tohex(), 4)
tasmota.log("MTR: ResponderEph_pub ="+session.__responder_pub.tohex(), 4)
# tasmota.log("MTR: ResponderEph_priv ="+session.__responder_priv.tohex(), 4)
# tasmota.log("MTR: ResponderEph_pub ="+session.__responder_pub.tohex(), 4)
var responderRandom = crypto.random(32)
session.shared_secret = crypto.EC_P256().shared_key(session.__responder_priv, sigma1.initiatorEphPubKey)
tasmota.log("MTR: * shared_secret = " + session.shared_secret.tohex(), 4)
# tasmota.log("MTR: * shared_secret = " + session.shared_secret.tohex(), 4)
var sigma2_tbsdata = matter.TLV.Matter_TLV_struct()
sigma2_tbsdata.add_TLV(1, matter.TLV.B2, fabric.get_noc())
@ -486,10 +491,10 @@ class Matter_Commisioning_Context
sigma2_tbsdata.add_TLV(4, matter.TLV.B2, sigma1.initiatorEphPubKey)
var TBSData2Signature = crypto.EC_P256().ecdsa_sign_sha256(fabric.get_pk(), sigma2_tbsdata.tlv2raw())
tasmota.log("****************************************", 4)
tasmota.log("MTR: * fabric.get_pk = " + str(fabric.get_pk()), 4)
tasmota.log("MTR: * sigma2_tbsdata = " + str(sigma2_tbsdata), 4)
tasmota.log("MTR: * TBSData2Signature = " + TBSData2Signature.tohex(), 4)
# tasmota.log("****************************************", 4)
# tasmota.log("MTR: * fabric.get_pk = " + str(fabric.get_pk()), 4)
# tasmota.log("MTR: * sigma2_tbsdata = " + str(sigma2_tbsdata), 4)
# tasmota.log("MTR: * TBSData2Signature = " + TBSData2Signature.tohex(), 4)
var sigma2_tbedata = matter.TLV.Matter_TLV_struct()
sigma2_tbedata.add_TLV(1, matter.TLV.B2, fabric.get_noc())
@ -498,37 +503,37 @@ class Matter_Commisioning_Context
sigma2_tbedata.add_TLV(4, matter.TLV.B2, session.resumption_id)
# compute TranscriptHash = Crypto_Hash(message = Msg1)
tasmota.log("****************************************", 4)
# tasmota.log("****************************************", 4)
session.__Msg1 = sigma1.Msg1
tasmota.log("MTR: * resumptionid = " + session.resumption_id.tohex(), 4)
tasmota.log("MTR: * MSG1 = " + session.__Msg1.tohex(), 4)
# tasmota.log("MTR: * resumptionid = " + session.resumption_id.tohex(), 4)
# tasmota.log("MTR: * MSG1 = " + session.__Msg1.tohex(), 4)
var TranscriptHash = crypto.SHA256().update(session.__Msg1).out()
tasmota.log("MTR: TranscriptHash =" + TranscriptHash.tohex(), 4)
# tasmota.log("MTR: TranscriptHash =" + TranscriptHash.tohex(), 4)
# Compute S2K, p.175
var s2k_info = bytes().fromstring(self.S2K_Info)
var s2k_salt = fabric.get_ipk_group_key() + responderRandom + session.__responder_pub + TranscriptHash
var s2k = crypto.HKDF_SHA256().derive(session.shared_secret, s2k_salt, s2k_info, 16)
tasmota.log("MTR: * SharedSecret = " + session.shared_secret.tohex(), 4)
tasmota.log("MTR: * s2k_salt = " + s2k_salt.tohex(), 4)
tasmota.log("MTR: * s2k = " + s2k.tohex(), 4)
# tasmota.log("MTR: * SharedSecret = " + session.shared_secret.tohex(), 4)
# tasmota.log("MTR: * s2k_salt = " + s2k_salt.tohex(), 4)
# tasmota.log("MTR: * s2k = " + s2k.tohex(), 4)
var sigma2_tbedata_raw = sigma2_tbedata.tlv2raw()
tasmota.log("MTR: * TBEData2Raw = " + sigma2_tbedata_raw.tohex(), 4)
# tasmota.log("MTR: * TBEData2Raw = " + sigma2_tbedata_raw.tohex(), 4)
# // `AES_CCM.init(secret_key:bytes(16 or 32), iv:bytes(7..13), aad:bytes(), data_len:int, tag_len:int) -> instance`
var aes = crypto.AES_CCM(s2k, bytes().fromstring(self.TBEData2_Nonce), bytes(), size(sigma2_tbedata_raw), 16)
var TBEData2Encrypted = aes.encrypt(sigma2_tbedata_raw) + aes.tag()
tasmota.log("MTR: * TBEData2Enc = " + TBEData2Encrypted.tohex(), 4)
tasmota.log("****************************************", 4)
# tasmota.log("MTR: * TBEData2Enc = " + TBEData2Encrypted.tohex(), 4)
# tasmota.log("****************************************", 4)
var sigma2 = matter.Sigma2()
sigma2.responderRandom = responderRandom
sigma2.responderSessionId = session.__future_local_session_id
sigma2.responderEphPubKey = session.__responder_pub
sigma2.encrypted2 = TBEData2Encrypted
tasmota.log("MTR: sigma2: " + matter.inspect(sigma2), 4)
# tasmota.log("MTR: sigma2: " + matter.inspect(sigma2), 4)
var sigma2_raw = sigma2.tlv2raw()
session.__Msg2 = sigma2_raw
# tasmota.log("MTR: sigma2_raw: " + sigma2_raw.tohex(), 4)
@ -537,6 +542,9 @@ class Matter_Commisioning_Context
var resp = msg.build_response(0x31 #-sigma-2-#, true) # no reliable flag
var raw = resp.encode_frame(sigma2_raw)
# log the fact that a new connection is starting
tasmota.log(string.format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port))
self.responder.send_response_frame(resp)
return true
end
@ -548,7 +556,7 @@ class Matter_Commisioning_Context
import crypto
# sanity checks
if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@ -584,8 +592,8 @@ class Matter_Commisioning_Context
# tasmota.log("****************************************", 4)
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)
tasmota.log("MTR: Tag don't match", 3)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@ -601,12 +609,12 @@ class Matter_Commisioning_Context
# Success = Crypto_VerifyChain(certificates = [TBEData3.initiatorNOC, TBEData3.initiatorICAC, TrustedRCAC]), when TBEData3.initiatorICAC is present
# TODO
var initiatorNOCTLV = matter.TLV.parse(initiatorNOC)
tasmota.log("MTR: initiatorNOCTLV = " + str(initiatorNOCTLV), 3)
# tasmota.log("MTR: initiatorNOCTLV = " + str(initiatorNOCTLV), 4)
var initiatorNOCPubKey = initiatorNOCTLV.findsubval(9)
var initiatorNOCListDN = initiatorNOCTLV.findsub(6)
var initiatorFabricId = initiatorNOCListDN.findsubval(17)
if type(initiatorFabricId) == 'int' session.peer_node_id = int64.fromu32(initiatorFabricId).tobytes() else session.peer_node_id = initiatorFabricId.tobytes() end
tasmota.log("MTR: initiatorFabricId="+str(session.peer_node_id), 3)
# tasmota.log("MTR: initiatorFabricId="+str(session.peer_node_id), 4)
var sigma3_tbs = matter.TLV.Matter_TLV_struct()
sigma3_tbs.add_TLV(1, matter.TLV.B1, initiatorNOC)
@ -684,7 +692,7 @@ class Matter_Commisioning_Context
# placeholder, nothing to run for now
def parse_StatusReport(msg)
var session = msg.session
tasmota.log("MTR: >Status "+msg.raw[msg.app_payload_idx..].tohex(), 2)
tasmota.log("MTR: >Status "+msg.raw[msg.app_payload_idx..].tohex(), 3)
return false # we don't explicitly ack the message
end

View File

@ -39,7 +39,7 @@ class Matter_Control_Message
def process_incoming_control_message(msg)
tasmota.log("MTR: received control message " + matter.inspect(msg), 2)
tasmota.log("MTR: received control message " + matter.inspect(msg), 3)
if msg.opcode == 0x00
return self.parse_MsgCounterSyncReq(msg)
elif msg.opcode == 0x01

View File

@ -159,7 +159,7 @@ class Matter_Device
# show Manual pairing code in logs
var pairing_code = self.compute_manual_pairing_code()
tasmota.log(string.format("MTR: Manual pairing code: %s-%s-%s", pairing_code[0..3], pairing_code[4..6], pairing_code[7..]), 2)
tasmota.log(string.format("MTR: Manual pairing code: %s", pairing_code), 2)
# output MQTT
var qr_code = self.compute_qrcode_content()
@ -178,6 +178,7 @@ class Matter_Device
for fabric_index : sub_fabrics
var fabric = self.sessions.find_fabric_by_index(fabric_index)
if fabric != nil
tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
self.message_handler.im.subs_shop.remove_by_fabric(fabric)
self.mdns_remove_op_discovery(fabric)
self.sessions.remove_fabric(fabric)
@ -379,7 +380,7 @@ class Matter_Device
def _start_udp(port)
if self.udp_server return end # already started
if port == nil port = 5540 end
tasmota.log("MTR: starting UDP server on port: " + str(port), 2)
tasmota.log("MTR: Starting UDP server on port: " + str(port), 2)
self.udp_server = matter.UDPServer("", port)
self.udp_server.start(/ raw, addr, port -> self.msg_received(raw, addr, port))
end
@ -426,7 +427,11 @@ class Matter_Device
#
# Stop basic commissioning.
def start_commissioning_complete(session)
tasmota.log("MTR: *** Commissioning complete ***", 2)
import string
var fabric = session.get_fabric()
var fabric_id = fabric.get_fabric_id().copy().reverse().tohex()
var vendor_name = fabric.get_admin_vendor_name()
tasmota.log(string.format("MTR: --- Commissioning complete for Fabric '%s' (Vendor %s) ---", fabric_id, vendor_name), 2)
self.stop_basic_commissioning() # by default close commissioning when it's complete
end
@ -567,7 +572,7 @@ class Matter_Device
for cl: keys_sorted(all[ep])
for at: keys_sorted(all[ep][cl])
for pi: all[ep][cl][at]
tasmota.log(string.format("MTR: expansion [%02X]%04X/%04X", ep, cl, at), 3)
# tasmota.log(string.format("MTR: expansion [%02X]%04X/%04X", ep, cl, at), 3)
ctx.endpoint = ep
ctx.cluster = cl
ctx.attribute = at
@ -637,7 +642,7 @@ class Matter_Device
var f = open(self.FILENAME, "w")
f.write(j)
f.close()
tasmota.log(string.format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 2)
tasmota.log(string.format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 3)
return j
except .. as e, m
tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)
@ -686,6 +691,18 @@ class Matter_Device
if dirty self.save_param() end
end
#############################################################
# Convert a configuration to a log string
static def conf_to_log(plugin_conf)
import string
var param_log = ''
for k:_class.k2l(plugin_conf)
if k == 'type' continue end
param_log += string.format(" %s = %s", k, plugin_conf[k])
end
return param_log
end
#############################################################
# Load plugins configuration from json
#
@ -696,21 +713,21 @@ class Matter_Device
import string
var endpoints = self.k2l_num(config)
tasmota.log("MTR: endpoints to be configured "+str(endpoints), 3)
# tasmota.log("MTR: endpoints to be configured "+str(endpoints), 4)
tasmota.log("MTR: Configuring endpoints", 2)
# start with mandatory endpoint 0 for root node
self.plugins.push(matter.Plugin_Root(self, 0, {}))
tasmota.log(string.format("MTR: endpoint:%i type:%s%s", 0, 'root', ''), 2)
tasmota.log(string.format("MTR: endpoint = %5i type = %s%s", 0, 'root', ''), 2)
# always include an aggregator for dynamic endpoints
self.plugins.push(matter.Plugin_Aggregator(self, 0xFF00, {}))
tasmota.log(string.format("MTR: endpoint:%i type:%s%s", 0xFF00, 'aggregator', ''), 2)
for ep: endpoints
if ep == 0 continue end # skip endpoint 0
try
var plugin_conf = config[str(ep)]
tasmota.log(string.format("MTR: endpoint %i config %s", ep, plugin_conf), 3)
# tasmota.log(string.format("MTR: endpoint %i config %s", ep, plugin_conf), 3)
var pi_class_name = plugin_conf.find('type')
if pi_class_name == nil tasmota.log("MTR: no class name, skipping", 3) continue end
@ -721,16 +738,12 @@ class Matter_Device
var pi = pi_class(self, ep, plugin_conf)
self.plugins.push(pi)
var param_log = ''
for k:self.k2l(plugin_conf)
if k == 'type' continue end
param_log += string.format(" %s:%s", k, plugin_conf[k])
end
tasmota.log(string.format("MTR: endpoint:%i type:%s%s", ep, pi_class_name, param_log), 2)
tasmota.log(string.format("MTR: endpoint = %5i type = %s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
except .. as e, m
tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
end
end
tasmota.log(string.format("MTR: endpoint = %5i type = %s%s", 0xFF00, 'aggregator', ''), 2)
tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter')
end
@ -800,7 +813,7 @@ class Matter_Device
var eth = tasmota.eth()
self.hostname_eth = string.replace(eth.find("mac"), ':', '')
if !self.ipv4only
tasmota.log(string.format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 3)
# tasmota.log(string.format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 4)
mdns.add_hostname(self.hostname_eth, eth.find('ip6local',''), eth.find('ip',''), eth.find('ip6',''))
else
tasmota.log(string.format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, eth.find('ip','')), 3)
@ -810,14 +823,14 @@ class Matter_Device
var wifi = tasmota.wifi()
self.hostname_wifi = string.replace(wifi.find("mac"), ':', '')
if !self.ipv4only
tasmota.log(string.format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 3)
# tasmota.log(string.format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 4)
mdns.add_hostname(self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip',''), wifi.find('ip6',''))
else
tasmota.log(string.format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, wifi.find('ip','')), 3)
mdns.add_hostname(self.hostname_wifi, wifi.find('ip',''))
end
end
tasmota.log(string.format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 2)
tasmota.log(string.format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 3)
except .. as e, m
tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
end
@ -846,7 +859,7 @@ class Matter_Device
try
if self.hostname_eth
# Add Matter `_matterc._udp` service
tasmota.log(string.format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 3)
# tasmota.log(string.format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 4)
mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_eth, self.hostname_eth)
self.mdns_pase_eth = true
@ -854,38 +867,38 @@ class Matter_Device
# `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil`
var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF)
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8)
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
subtype = "_V" + str(self.vendorid)
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
subtype = "_CM1"
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
end
if self.hostname_wifi
tasmota.log(string.format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 3)
# tasmota.log(string.format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 4)
mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_wifi, self.hostname_wifi)
self.mdns_pase_wifi = true
tasmota.log(string.format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 2)
tasmota.log(string.format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 3)
# `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil`
var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF)
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8)
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
subtype = "_V" + str(self.vendorid)
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
subtype = "_CM1"
tasmota.log("MTR: adding subtype: "+subtype, 2)
tasmota.log("MTR: adding subtype: "+subtype, 3)
mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
end
except .. as e, m
@ -903,13 +916,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), 3)
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), 3)
self.mdns_pase_wifi = false
mdns.remove_service("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi)
end
@ -937,7 +950,7 @@ class Matter_Device
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()
tasmota.log("MTR: Operational Discovery node = " + op_node, 2)
tasmota.log("MTR: Operational Discovery node = " + op_node, 3)
# mdns
if (tasmota.eth().find("up"))
@ -981,11 +994,11 @@ class Matter_Device
# mdns
if (tasmota.eth().find("up"))
tasmota.log(string.format("MTR: remove mDNS on %s '%s'", "eth", op_node), 2)
tasmota.log(string.format("MTR: remove mDNS on %s '%s'", "eth", op_node), 3)
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)
tasmota.log(string.format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 3)
mdns.remove_service("_matter", "_tcp", op_node, self.hostname_wifi)
end
except .. as e, m
@ -1228,8 +1241,9 @@ class Matter_Device
# `plugin_conf`: map of configuration as native Berry map
# returns endpoint number newly allocated, or `nil` if failed
def bridge_add_endpoint(pi_class_name, plugin_conf)
import string
var pi_class = self.plugins_classes.find(pi_class_name)
if pi_class == nil tasmota.log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 2) return end
if pi_class == nil tasmota.log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 3) return end
# get the next allocated endpoint number
var ep = self.next_ep
@ -1246,6 +1260,7 @@ class Matter_Device
pi_conf[k] = plugin_conf[k]
end
# add to main
tasmota.log(string.format("MTR: adding endpoint = %i type = %s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
self.plugins_config[ep_str] = pi_conf
self.plugins_persist = true
self.next_ep += 1 # increment next allocated endpoint before saving
@ -1272,6 +1287,7 @@ class Matter_Device
tasmota.log("MTR: Cannot remove an enpoint not configured: " + ep_str, 3)
return
end
tasmota.log(string.format("MTR: deleting endpoint = %i", ep), 2)
self.plugins_config.remove(ep_str)
self.plugins_persist = true
@ -1373,29 +1389,31 @@ class Matter_Device
import introspect
import string
var remotes_map = {} # key: remote object, value: count of references
# init all remotes with count 0
for http_remote: self.http_remotes
remotes_map[http_remote] = 0
end
# scan all endpoints
for pi: self.plugins
var http_remote = introspect.get(pi, "http_remote")
if http_remote != nil
remotes_map[http_remote] = remotes_map.find(http_remote, 0) + 1
if self.http_remotes
var remotes_map = {} # key: remote object, value: count of references
for http_remote: self.http_remotes
remotes_map[http_remote] = 0
end
end
tasmota.log("MTR: remotes references: " + str(remotes_map))
# scan all endpoints
for pi: self.plugins
var http_remote = introspect.get(pi, "http_remote")
if http_remote != nil
remotes_map[http_remote] = remotes_map.find(http_remote, 0) + 1
end
end
for remote:remotes_map.keys()
if remotes_map[remote] == 0
# remove
tasmota.log("MTR: remove unused remote: " + remote.addr, 3)
remote.close()
self.http_remotes.remove(remote)
# tasmota.log("MTR: remotes references: " + str(remotes_map), 3)
for remote:remotes_map.keys()
if remotes_map[remote] == 0
# remove
tasmota.log("MTR: remove unused remote: " + remote.addr, 3)
remote.close()
self.http_remotes.remove(remote)
end
end
end

View File

@ -217,14 +217,14 @@ class Matter_Fabric : Matter_Expirable
# Called before removal
def log_new_fabric()
import string
tasmota.log(string.format("MTR: +Fabric fab='%s' vendorid=%s", self.get_fabric_id().copy().reverse().tohex(), self.get_admin_vendor_name()), 2)
tasmota.log(string.format("MTR: +Fabric fab='%s' vendorid=%s", self.get_fabric_id().copy().reverse().tohex(), self.get_admin_vendor_name()), 3)
end
#############################################################
# Called before removal
def before_remove()
import string
tasmota.log(string.format("MTR: -Fabric fab='%s' (removed)", self.get_fabric_id().copy().reverse().tohex()), 2)
tasmota.log(string.format("MTR: -Fabric fab='%s' (removed)", self.get_fabric_id().copy().reverse().tohex()), 3)
end
#############################################################

View File

@ -142,11 +142,11 @@ class Matter_HTTP_remote : Matter_HTTP_async
self.current_cmd = nil
var cmd_url = "/cm?cmnd=" + string.tr(cmd, ' ', '+')
tasmota.log(string.format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 2)
tasmota.log(string.format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 3)
var ret = super(self).begin_sync(cmd_url, timeout)
var payload_short = (ret) ? ret : 'nil'
if size(payload_short) > 30 payload_short = payload_short[0..29] + '...' end
tasmota.log(string.format("MTR: HTTP sync-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 2)
tasmota.log(string.format("MTR: HTTP sync-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3)
return ret
end
@ -155,7 +155,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
import string
var payload_short = (self.payload != nil) ? self.payload : 'nil'
if size(payload_short) > 30 payload_short = payload_short[0..29] + '...' end
tasmota.log(string.format("MTR: HTTP async-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 2)
tasmota.log(string.format("MTR: HTTP async-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3)
self.dispatch_cb(self.http_status, self.payload)
end
def event_http_failed()
@ -166,7 +166,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
def event_http_timeout()
import string
if self.current_cmd == nil return end # do nothing if sync request
tasmota.log(string.format("MTR: HTTP timeout http_status=%i phase=%i tcp_status=%i size_payload=%i", self.http_status, self.phase, self.status, size(self.payload)), 2)
tasmota.log(string.format("MTR: HTTP timeout http_status=%i phase=%i tcp_status=%i size_payload=%i", self.http_status, self.phase, self.status, size(self.payload)), 3)
self.dispatch_cb(self.http_status, nil)
end

View File

@ -86,7 +86,7 @@ class Matter_IM
import string
# check if there is an exchange_id interested in receiving this
var message = self.find_sendqueue_by_exchangeid(msg.exchange_id)
tasmota.log(string.format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 3)
# tasmota.log(string.format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 4)
if message
return message.ack_received(msg) # dispatch to IM_Message
end
@ -116,7 +116,7 @@ class Matter_IM
end
if message.finish
tasmota.log("MTR: remove IM message exch="+str(message.resp.exchange_id), 3)
tasmota.log("MTR: remove IM message exch="+str(message.resp.exchange_id), 4)
self.send_queue.remove(idx)
else
idx += 1
@ -190,7 +190,7 @@ class Matter_IM
end
else
# error
tasmota.log(string.format("MTR: >Status ERROR = 0x%02X", status), 2)
tasmota.log(string.format("MTR: >Status ERROR = 0x%02X", status), 3)
if message
message.status_error_received(msg)
self.remove_sendqueue_by_exchangeid(msg.exchange_id)
@ -242,7 +242,7 @@ class Matter_IM
# tasmota.log(string.format("MTR: guessed len=%i actual=%i '%s'", a1_len, size(a1_raw), a1_raw.tohex()), 2)
if !no_log
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, res_str), 2)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, res_str), 3)
end
elif ctx.status != nil
if direct # we report an error only if a concrete direct read, not with wildcards
@ -260,10 +260,10 @@ class Matter_IM
var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size
a1_raw = a1_tlv.tlv2raw(a1_bytes)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 2)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3)
end
else
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 2)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3)
# ignore if content is nil and status is undefined
found = false
end
@ -307,9 +307,9 @@ class Matter_IM
# we need expansion, log first
if ctx.cluster != nil && ctx.attribute != nil
var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 2)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 3)
else
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 2)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 3)
end
end
@ -367,7 +367,7 @@ class Matter_IM
attr_req.push(str(ctx))
end
tasmota.log(string.format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i",
msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id), 2)
msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id), 3)
var ret = self._inner_process_read_request(msg.session, query, true #-no_log-#)
# ret is of type `Matter_ReportDataMessage`
@ -405,7 +405,7 @@ class Matter_IM
var ctx_str = str(ctx) # keep string before invoking, it is modified by response
var res = self.device.invoke_request(msg.session, q.command_fields, ctx)
var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : ""
tasmota.log(string.format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 2)
tasmota.log(string.format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), ctx.endpoint != 0 ? 2 : 3 #- don't log for endpoint 0 -# )
ctx.log = nil
var a1 = matter.InvokeResponseIB()
if res == true || ctx.status == matter.SUCCESS # special case, just respond ok
@ -417,7 +417,7 @@ class Matter_IM
a1.status.status = matter.StatusIB()
a1.status.status.status = matter.SUCCESS
ret.invoke_responses.push(a1)
tasmota.log(string.format("MTR: <Replied (%6i) OK exch=%i", msg.session.local_session_id, msg.exchange_id), 2)
tasmota.log(string.format("MTR: <Replied (%6i) OK exch=%i", msg.session.local_session_id, msg.exchange_id), 3)
elif res != nil
a1.command = matter.CommandDataIB()
a1.command.command_path = matter.CommandPathIB()
@ -428,7 +428,7 @@ class Matter_IM
ret.invoke_responses.push(a1)
cmd_name = matter.get_command_name(ctx.cluster, ctx.command)
tasmota.log(string.format("MTR: <Replied (%6i) %s %s", msg.session.local_session_id, str(ctx), cmd_name ? cmd_name : ""), 2)
tasmota.log(string.format("MTR: <Replied (%6i) %s %s", msg.session.local_session_id, str(ctx), cmd_name ? cmd_name : ""), 3)
elif ctx.status != nil
a1.status = matter.CommandStatusIB()
a1.status.command_path = matter.CommandPathIB()
@ -438,9 +438,9 @@ class Matter_IM
a1.status.status = matter.StatusIB()
a1.status.status.status = ctx.status
ret.invoke_responses.push(a1)
tasmota.log(string.format("MTR: <Replied (%6i) Status=0x%02X exch=%i", msg.session.local_session_id, ctx.status, msg.exchange_id), 2)
tasmota.log(string.format("MTR: <Replied (%6i) Status=0x%02X exch=%i", msg.session.local_session_id, ctx.status, msg.exchange_id), 3)
else
tasmota.log(string.format("MTR: _Ignore (%6i) exch=%i", msg.session.local_session_id, msg.exchange_id), 2)
tasmota.log(string.format("MTR: _Ignore (%6i) exch=%i", msg.session.local_session_id, msg.exchange_id), 3)
# ignore if content is nil and status is undefined
end
end
@ -464,7 +464,7 @@ class Matter_IM
def subscribe_response(msg, val)
import string
var query = matter.SubscribeResponseMessage().from_TLV(val)
tasmota.log("MTR: received SubscribeResponsetMessage=" + str(query), 2)
# tasmota.log("MTR: received SubscribeResponsetMessage=" + str(query), 4)
return false
end
@ -474,7 +474,7 @@ class Matter_IM
def report_data(msg, val)
import string
var query = matter.ReportDataMessage().from_TLV(val)
tasmota.log("MTR: received ReportDataMessage=" + str(query), 2)
# tasmota.log("MTR: received ReportDataMessage=" + str(query), 4)
return false
end
@ -521,11 +521,11 @@ class Matter_IM
a1.status.status = ctx.status
ret.write_responses.push(a1)
tasmota.log(string.format("MTR: Write_Attr %s%s - STATUS: 0x%02X %s", str(ctx), attr_name, ctx.status, ctx.status == matter.SUCCESS ? "SUCCESS" : ""), 2)
tasmota.log(string.format("MTR: Write_Attr %s%s - STATUS: 0x%02X %s", str(ctx), attr_name, ctx.status, ctx.status == matter.SUCCESS ? "SUCCESS" : ""), (ctx.endpoint != 0) ? 2 : 3)
return true
end
else
tasmota.log(string.format("MTR: Write_Attr %s%s - IGNORED", str(ctx), attr_name), 2)
tasmota.log(string.format("MTR: Write_Attr %s%s - IGNORED", str(ctx), attr_name), 3)
# ignore if content is nil and status is undefined
end
end
@ -561,7 +561,7 @@ class Matter_IM
if ctx.endpoint == nil
# we need expansion, log first
var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
tasmota.log("MTR: Write_Attr " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 2)
tasmota.log("MTR: Write_Attr " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 3)
end
# implement concrete expansion
@ -587,7 +587,7 @@ class Matter_IM
def process_write_response(msg, val)
import string
var query = matter.WriteResponseMessage().from_TLV(val)
tasmota.log("MTR: received WriteResponseMessage=" + str(query), 2)
# tasmota.log("MTR: received WriteResponseMessage=" + str(query), 4)
return false
end
@ -597,7 +597,7 @@ class Matter_IM
def process_invoke_response(msg, val)
import string
var query = matter.InvokeResponseMessage().from_TLV(val)
tasmota.log("MTR: received InvokeResponseMessage=" + str(query), 2)
# tasmota.log("MTR: received InvokeResponseMessage=" + str(query), 4)
return false
end
@ -609,7 +609,7 @@ class Matter_IM
var query = matter.TimedRequestMessage().from_TLV(val)
# tasmota.log("MTR: received TimedRequestMessage=" + str(query), 3)
tasmota.log(string.format("MTR: >Command (%6i) TimedRequest=%i", msg.session.local_session_id, query.timeout), 2)
tasmota.log(string.format("MTR: >Command (%6i) TimedRequest=%i", msg.session.local_session_id, query.timeout), 3)
# Send success status report
self.send_status(msg, matter.SUCCESS)
@ -637,7 +637,7 @@ class Matter_IM
fake_read.attributes_requests.push(p1)
end
tasmota.log(string.format("MTR: <Sub_Data (%6i) sub=%i", session.local_session_id, sub.subscription_id), 2)
tasmota.log(string.format("MTR: <Sub_Data (%6i) sub=%i", session.local_session_id, sub.subscription_id), 3)
sub.is_keep_alive = false # sending an actual data update
var ret = self._inner_process_read_request(session, fake_read)
@ -656,7 +656,7 @@ class Matter_IM
import string
var session = sub.session
tasmota.log(string.format("MTR: <Sub_Alive (%6i) sub=%i", session.local_session_id, sub.subscription_id), 2)
tasmota.log(string.format("MTR: <Sub_Alive (%6i) sub=%i", session.local_session_id, sub.subscription_id), 3)
sub.is_keep_alive = true # sending keep-alive
# prepare the response

View File

@ -93,7 +93,7 @@ class Matter_IM_Message
var resp = self.resp
resp.encode_frame(self.data.to_TLV().tlv2raw()) # payload in cleartext
resp.encrypt()
tasmota.log(string.format("MTR: <snd (%6i) id=%i exch=%i rack=%s", resp.session.local_session_id, resp.message_counter, resp.exchange_id, resp.ack_message_counter),3)
tasmota.log(string.format("MTR: <snd (%6i) id=%i exch=%i rack=%s", resp.session.local_session_id, resp.message_counter, resp.exchange_id, resp.ack_message_counter), 4)
responder.send_response_frame(resp)
self.last_counter = resp.message_counter
self.finish = true # by default we remove the packet after it is sent
@ -185,11 +185,11 @@ class Matter_IM_ReportData : Matter_IM_Message
end
if was_chunked
tasmota.log(string.format("MTR: .Read_Attr next_chunk exch=%i", self.get_exchangeid()), 3)
# tasmota.log(string.format("MTR: .Read_Attr next_chunk exch=%i", self.get_exchangeid()), 4)
end
if data.more_chunked_messages
if !was_chunked
tasmota.log(string.format("MTR: .Read_Attr first_chunk exch=%i", self.get_exchangeid()), 3)
# tasmota.log(string.format("MTR: .Read_Attr first_chunk exch=%i", self.get_exchangeid()), 4)
end
# tasmota.log("MTR: sending TLV" + str(data), 4)
end
@ -203,13 +203,13 @@ class Matter_IM_ReportData : Matter_IM_Message
# print(">>>>> send elements after encode")
resp.encrypt()
# print(">>>>> send elements after encrypt")
tasmota.log(string.format("MTR: <snd (%6i) id=%i exch=%i rack=%s", resp.session.local_session_id, resp.message_counter, resp.exchange_id, resp.ack_message_counter),3)
# tasmota.log(string.format("MTR: <snd (%6i) id=%i exch=%i rack=%s", resp.session.local_session_id, resp.message_counter, resp.exchange_id, resp.ack_message_counter), 4)
responder.send_response_frame(resp)
self.last_counter = resp.message_counter
if next_elemnts != nil && size(next_elemnts) > 0
data.attribute_reports = next_elemnts
tasmota.log(string.format("MTR: to_be_sent_later size=%i exch=%i", size(data.attribute_reports), resp.exchange_id), 3)
# tasmota.log(string.format("MTR: to_be_sent_later size=%i exch=%i", size(data.attribute_reports), resp.exchange_id), 4)
self.ready = false # wait for Status Report before continuing sending
# keep alive
else
@ -302,7 +302,7 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData
var resp = self.resp.build_standalone_ack(false)
resp.encode_frame()
resp.encrypt()
tasmota.log(string.format("MTR: <Ack (%6i) ack=%i id=%i", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter), 3)
tasmota.log(string.format("MTR: <Ack (%6i) ack=%i id=%i", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter), 4)
responder.send_response_frame(resp)
self.last_counter = resp.message_counter
self.finish = true
@ -433,7 +433,7 @@ class Matter_IM_SubscribeResponse : Matter_IM_ReportData
import string
# tasmota.log(string.format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter), 3)
# once we receive ack, open flow for subscriptions
tasmota.log(string.format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 2)
tasmota.log(string.format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3)
return super(self).status_ok_received(msg)
end

View File

@ -86,7 +86,7 @@ class Matter_IM_Subscription
# remove self from subs_shop list
def remove_self()
tasmota.log("MTR: -Sub_Del ( ) sub=" + str(self.subscription_id), 2)
tasmota.log("MTR: -Sub_Del ( ) sub=" + str(self.subscription_id), 3)
self.subs_shop.remove_sub(self)
end
@ -104,7 +104,7 @@ class Matter_IM_Subscription
self.expiration = now + (self.max_interval - self.MAX_INTERVAL_MARGIN) * 1000
self.not_before = now + self.min_interval * 1000 - 1
if !self.is_keep_alive
tasmota.log(string.format("MTR: .Sub_Done ( ) sub=%i", self.subscription_id), 2)
tasmota.log(string.format("MTR: .Sub_Done ( ) sub=%i", self.subscription_id), 3)
end
end

View File

@ -302,7 +302,7 @@ class Matter_Frame
if resp.local_session_id == 0
var op_name = matter.get_opcode_name(resp.opcode)
if !op_name op_name = string.format("0x%02X", resp.opcode) end
tasmota.log(string.format("MTR: <Replied (%6i) %s", resp.session.local_session_id, op_name), 2)
tasmota.log(string.format("MTR: <Replied (%6i) %s", resp.session.local_session_id, op_name), 3)
end
return resp
end
@ -401,7 +401,7 @@ class Matter_Frame
# tasmota.log("MTR: ******************************", 4)
if tag != mic
tasmota.log("MTR: rejected packet due to invalid MIC", 2)
tasmota.log("MTR: rejected packet due to invalid MIC", 3)
return nil
end
@ -465,7 +465,7 @@ class Matter_Frame
var r = matter.Frame(self.message_handler, raw)
r.decode_header()
r.decode_payload()
tasmota.log("MTR: sending decode: " + matter.inspect(r), 4)
# tasmota.log("MTR: sending decode: " + matter.inspect(r), 4)
end
end
matter.Frame = Matter_Frame

View File

@ -48,7 +48,7 @@ class Matter_MessageHandler
if frame.x_flag_r # nothing to respond, check if we need a standalone ack
var resp = frame.build_standalone_ack(reliable)
resp.encode_frame()
tasmota.log(string.format("MTR: <Ack (%6i) ack=%i id=%i %s", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter, reliable ? '{reliable}' : ''), 3)
tasmota.log(string.format("MTR: <Ack (%6i) ack=%i id=%i %s", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter, reliable ? '{reliable}' : ''), 4)
self.send_response_frame(resp)
end
end
@ -64,7 +64,7 @@ class Matter_MessageHandler
var resp = frame.build_standalone_ack(reliable)
resp.encode_frame()
resp.encrypt()
tasmota.log(string.format("MTR: <Ack* (%6i) ack=%i id=%i %s", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter, reliable ? '{reliable}' : ''), 3)
tasmota.log(string.format("MTR: <Ack* (%6i) ack=%i id=%i %s", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter, reliable ? '{reliable}' : ''), 4)
self.send_response_frame(resp)
end
end
@ -89,15 +89,15 @@ class Matter_MessageHandler
# do we need decryption?
if frame.sec_p
# Control message
tasmota.log("MTR: CONTROL MESSAGE=" + matter.inspect(frame), 4)
# tasmota.log("MTR: CONTROL MESSAGE=" + matter.inspect(frame), 4)
var session = self.device.sessions.find_session_source_id_unsecure(frame.source_node_id, 90) # 90 seconds max
tasmota.log("MTR: find session by source_node_id = " + str(frame.source_node_id) + " session_id = " + str(session.local_session_id), 4)
# tasmota.log("MTR: find session by source_node_id = " + str(frame.source_node_id) + " session_id = " + str(session.local_session_id), 4)
return self.control_message.process_incoming_control_message(frame)
elif frame.local_session_id == 0 && frame.sec_sesstype == 0
#############################################################
### unencrypted session, handled by commissioning
var session = self.device.sessions.find_session_source_id_unsecure(frame.source_node_id, 90) # 90 seconds max
tasmota.log("MTR: find session by source_node_id = " + str(frame.source_node_id) + " session_id = " + str(session.local_session_id), 4)
# tasmota.log("MTR: find session by source_node_id = " + str(frame.source_node_id) + " session_id = " + str(session.local_session_id), 4)
if addr session._ip = addr end
if port session._port = port end
session._message_handler = self
@ -105,7 +105,7 @@ class Matter_MessageHandler
# check if it's a duplicate
if !session._counter_insecure_rcv.validate(frame.message_counter, false)
tasmota.log(string.format("MTR: . Duplicate unencrypted message = %i ref = %i", frame.message_counter, session._counter_insecure_rcv.val()), 3)
tasmota.log(string.format("MTR: . Duplicate unencrypted message = %i ref = %i", frame.message_counter, session._counter_insecure_rcv.val()), 4)
self.send_simple_ack(frame, false #-not reliable-#)
return false
end
@ -115,9 +115,9 @@ class Matter_MessageHandler
if frame.opcode != 0x10 # don't show `MRP_Standalone_Acknowledgement`
var op_name = matter.get_opcode_name(frame.opcode)
if !op_name op_name = string.format("0x%02X", frame.opcode) end
tasmota.log(string.format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 2)
tasmota.log(string.format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3)
else
tasmota.log(string.format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 3)
tasmota.log(string.format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4)
end
ret = self.commissioning.process_incoming(frame)
# if ret is false, the implicit Ack was not sent
@ -126,11 +126,11 @@ class Matter_MessageHandler
else
#############################################################
# encrypted message
tasmota.log(string.format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 3)
tasmota.log(string.format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4)
var session = self.device.sessions.get_session_by_local_session_id(frame.local_session_id)
if session == nil
tasmota.log("MTR: unknown local_session_id="+str(frame.local_session_id), 2)
tasmota.log("MTR: unknown local_session_id="+str(frame.local_session_id), 3)
# tasmota.log("MTR: frame="+matter.inspect(frame), 3)
return false
end
@ -141,7 +141,7 @@ class Matter_MessageHandler
# check if it's a duplicate
if !session.counter_rcv_validate(frame.message_counter, true)
tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3)
tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 4)
self.send_encrypted_ack(frame, false #-not reliable-#)
return false
end
@ -154,11 +154,11 @@ class Matter_MessageHandler
frame.raw .. cleartext # add cleartext
# continue decoding
tasmota.log(string.format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4)
# tasmota.log(string.format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4)
frame.decode_payload()
tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 3)
tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4)
tasmota.log(string.format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3)
# tasmota.log(string.format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3)
self.device.received_ack(frame) # remove acknowledge packet from sending list
@ -202,7 +202,7 @@ class Matter_MessageHandler
return ret
except .. as e, m
tasmota.log("MTR: MessageHandler::msg_received exception: "+str(e)+";"+str(m))
tasmota.log("MTR: MessageHandler::msg_received exception: "+str(e)+";"+str(m), 2)
if tasmota._debug_present
import debug
debug.traceback()

View File

@ -30,6 +30,7 @@ class Matter_Plugin
static var NAME = "" # display name of the plug-in
static var ARG = "" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> str(x) # function to convert argument to the right type
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
# Behavior of the plugin, frequency at which `update_shadow()` is called
static var UPDATE_TIME = 5000 # default is every 5 seconds
var update_next # next timestamp for update

View File

@ -30,6 +30,7 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
static var TYPE = "http_light0" # name of the plug-in in json
static var NAME = "Light 0 On" # display name of the plug-in
static var ARG = "relay" # additional argument name (or empty if none)
static var ARG_HINT = "Enter Power<x> number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
# static var UPDATE_TIME = 3000 # update every 3s
# static var UPDATE_CMD = "Status 11" # command to send for updates

View File

@ -29,6 +29,7 @@ class Matter_Plugin_Bridge_Light0 end
class Matter_Plugin_Bridge_OnOff : Matter_Plugin_Bridge_Light0
static var TYPE = "http_relay" # name of the plug-in in json
static var NAME = "Relay" # display name of the plug-in
static var ARG_HINT = "Enter Relay<x> number"
static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit
#############################################################

View File

@ -31,6 +31,7 @@ class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP
# static var NAME = "" # display name of the plug-in
static var ARG = "filter" # additional argument name (or empty if none)
static var ARG_HTTP = "url" # domain name
static var ARG_HINT = "Enter Filter pattern"
static var UPDATE_TIME = 5000 # update every 5s
static var UPDATE_CMD = "Status 8" # command to send for updates
static var PROBE_TIMEOUT = 1700 # timeout of 1700 ms for probing, which gives at least 1s for TCP recovery

View File

@ -30,6 +30,7 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
static var TYPE = "http_occupancy" # name of the plug-in in json
static var NAME = "Occupancy" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
static var ARG_HINT = "Enter Switch<x> number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 5000 # update every 5s
static var UPDATE_CMD = "Status 8" # command to send for updates

View File

@ -31,6 +31,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
static var NAME = "Relay" # display name of the plug-in
static var ARG = "relay" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var ARG_HINT = "Enter Relay<x> number"
static var UPDATE_TIME = 250 # update every 250ms
static var CLUSTERS = {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453

View File

@ -416,7 +416,7 @@ class Matter_Plugin_Root : Matter_Plugin
var ac = session.get_ac()
var attestation_tbs = attestation_message + ac
tasmota.log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 3)
# tasmota.log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 4)
var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), attestation_tbs)
@ -433,7 +433,7 @@ class Matter_Plugin_Root : Matter_Plugin
var CSRNonce = val.findsubval(0) # octstr 32
if size(CSRNonce) != 32 return nil end # check size on nonce
var IsForUpdateNOC = val.findsubval(1, false) # bool
tasmota.log(string.format("MTR: CSRRequest CSRNonce=%s IsForUpdateNOC=%s", str(CSRNonce), str(IsForUpdateNOC)), 3)
# tasmota.log(string.format("MTR: CSRRequest CSRNonce=%s IsForUpdateNOC=%s", str(CSRNonce), str(IsForUpdateNOC)), 4)
var csr = session.gen_CSR()
@ -443,7 +443,7 @@ class Matter_Plugin_Root : Matter_Plugin
var nocsr_elements_message = nocsr_elements.tlv2raw()
# sign with attestation challenge
var nocsr_tbs = nocsr_elements_message + session.get_ac()
tasmota.log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 3)
# tasmota.log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 4)
var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), nocsr_tbs)
# create CSRResponse
@ -459,12 +459,12 @@ class Matter_Plugin_Root : Matter_Plugin
var RootCACertificate = val.findsubval(0) # octstr 400 max
# TODO - additional tests are expected according to 11.17.7.13. AddTrustedRootCertificate Command
session.set_temp_ca(RootCACertificate)
tasmota.log("MTR: received ca_root="+RootCACertificate.tohex(), 3)
# tasmota.log("MTR: received ca_root="+RootCACertificate.tohex(), 4)
ctx.status = matter.SUCCESS # OK
return nil # trigger a standalone ack
elif command == 0x0006 # ---------- AddNOC ----------
tasmota.log("MTR: AddNoc Args=" + str(val), 3)
tasmota.log("MTR: AddNoc Args=" + str(val), 4)
var NOCValue = val.findsubval(0) # octstr max 400
var ICACValue = val.findsubval(1) # octstr max 400
# Apple sends an empty ICAC instead of a missing attribute, fix this
@ -550,7 +550,7 @@ class Matter_Plugin_Root : Matter_Plugin
elif command == 0x0009 # ---------- UpdateFabricLabel ----------
var label = val.findsubval(0) # Label string max 32
session.set_fabric_label(label)
tasmota.log(string.format("MTR: . Update fabric '%s' label='%s'", session._fabric.get_fabric_id().copy().reverse().tohex(), str(label)), 2)
tasmota.log(string.format("MTR: . Update fabric '%s' label='%s'", session._fabric.get_fabric_id().copy().reverse().tohex(), str(label)), 3)
ctx.status = matter.SUCCESS # OK
return nil # trigger a standalone ack
@ -560,7 +560,7 @@ class Matter_Plugin_Root : Matter_Plugin
for fab: self.device.sessions.active_fabrics()
if fab.get_fabric_index() == index
tasmota.log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2)
# tasmota.log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2)
# defer actual removal to send a response
tasmota.set_timer(2000, def () self.device.remove_fabric(fab) end)
return true # Ok
@ -583,7 +583,7 @@ class Matter_Plugin_Root : Matter_Plugin
var salt = val.findsubval(4) # Salt octstr
tasmota.log(string.format("MTR: OpenCommissioningWindow(timeout=%i, passcode=%s, discriminator=%i, iterations=%i, salt=%s)",
timeout, passcode_verifier.tohex(), discriminator, iterations, salt.tohex()), 2)
timeout, passcode_verifier.tohex(), discriminator, iterations, salt.tohex()), 4)
# check values
if timeout == nil || passcode_verifier == nil || discriminator == nil || iterations == nil || salt == nil
@ -591,7 +591,7 @@ class Matter_Plugin_Root : Matter_Plugin
return nil # trigger a standalone ack
end
if size(passcode_verifier) != 32+65 || size(salt) < 16 || size(salt) > 32
tasmota.log("MTR: wrong size for PAKE parameters")
tasmota.log("MTR: wrong size for PAKE parameters", 2)
ctx.status = matter.CONSTRAINT_ERROR
return nil # trigger a standalone ack
end
@ -604,7 +604,7 @@ class Matter_Plugin_Root : Matter_Plugin
return true # OK
elif command == 0x0001 # ---------- OpenBasicCommissioningWindow ----------
var commissioning_timeout = val.findsubval(0) # CommissioningTimeout
tasmota.log("MTR: OpenBasicCommissioningWindow commissioning_timeout="+str(commissioning_timeout), 2)
tasmota.log("MTR: OpenBasicCommissioningWindow commissioning_timeout="+str(commissioning_timeout), 3)
self.device.start_root_basic_commissioning(commissioning_timeout)
return true
elif command == 0x0002 # ---------- RevokeCommissioning ----------

View File

@ -28,6 +28,7 @@ class Matter_Plugin_Device end
class Matter_Plugin_Sensor : Matter_Plugin_Device
static var ARG = "filter" # additional argument name (or empty if none)
static var ARG_HINT = "Enter Filter pattern"
static var UPDATE_TIME = 5000 # update sensor every 5s
var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
var tasmota_sensor_matcher # Actual matcher object

View File

@ -30,6 +30,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
static var TYPE = "occupancy" # name of the plug-in in json
static var NAME = "Occupancy" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
static var ARG_HINT = "Enter Switch<x> number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 5000 # update every 250ms
static var CLUSTERS = {

View File

@ -26,8 +26,9 @@ class Matter_Plugin_Device end
class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
static var TYPE = "onoff" # name of the plug-in in json
static var NAME = "OnOff" # display name of the plug-in
static var NAME = "OnOff Sensor" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
static var ARG_HINT = "Enter Switch<x> number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 5000 # update every 250ms
static var CLUSTERS = {

View File

@ -31,6 +31,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
static var NAME = "Shutter" # display name of the plug-in
static var ARG = "shutter" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var ARG_HINT = "Enter Relay<x> number"
static var CLUSTERS = {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
# 0x0003: inherited # Identify 1.2 p.16
@ -68,10 +69,10 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
if r_st13.contains('StatusSHT')
r_st13 = r_st13['StatusSHT'] # skip root
var d = r_st13.find("SHT"+str(self.tasmota_shutter_index), {}).find('Opt')
tasmota.log("MTR: opt: "+str(d))
# tasmota.log("MTR: opt: "+str(d))
if d != nil
self.shadow_shutter_inverted = int(d[size(d)-1]) # inverted is at the most right character
tasmota.log("MTR: Inverted flag: "+str(self.shadow_shutter_inverted))
# tasmota.log("MTR: Inverted flag: "+str(self.shadow_shutter_inverted))
end
end
end

View File

@ -130,8 +130,7 @@ class Matter_Session : Matter_Expirable
def counter_snd_next()
import string
var next = self._counter_snd_impl.next()
tasmota.log(string.format("MTR: . Counter_snd=%i", next), 3)
# print(">>> NEXT counter_snd=", self.counter_snd, "_impl=", self._counter_snd_impl.val(), 4)
# tasmota.log(string.format("MTR: . Counter_snd=%i", next), 4)
if matter.Counter.is_greater(next, self.counter_snd)
self.counter_snd = next + self._COUNTER_SND_INCR
if self.does_persist()

View File

@ -281,9 +281,9 @@ class Matter_Session_Store
var sessions = self.sessions
while i < size(sessions)
var session = sessions[i]
tasmota.log(string.format("MTR: session.resumption_id=%s vs %s", str(session.resumption_id), str(resumption_id)), 3)
tasmota.log(string.format("MTR: session.resumption_id=%s vs %s", str(session.resumption_id), str(resumption_id)), 4)
if session.resumption_id == resumption_id && session.shared_secret != nil
tasmota.log(string.format("MTR: session.shared_secret=%s", str(session.shared_secret)), 3)
# tasmota.log(string.format("MTR: session.shared_secret=%s", str(session.shared_secret)), 4)
session.update()
return session
end
@ -328,7 +328,7 @@ class Matter_Session_Store
var f = open(self._FABRICS, "w")
f.write(fabs)
f.close()
tasmota.log(string.format("MTR: =Saved %i fabric(s) and %i session(s)", fabs_size, sessions_saved), 2)
tasmota.log(string.format("MTR: =Saved %i fabric(s) and %i session(s)", fabs_size, sessions_saved), 3)
self.device.event_fabrics_saved() # signal event
except .. as e, m
tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)

View File

@ -125,7 +125,7 @@ class Matter_UDPServer
packet_read += 1
var from_addr = self.udp_socket.remote_ip
var from_port = self.udp_socket.remote_port
tasmota.log(string.format("MTR: UDP received from [%s]:%i", from_addr, from_port), 3)
tasmota.log(string.format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4)
if self.dispatch_cb
self.dispatch_cb(packet, from_addr, from_port)
end
@ -149,7 +149,7 @@ class Matter_UDPServer
if ok
tasmota.log(string.format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4)
else
tasmota.log(string.format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 2)
tasmota.log(string.format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3)
end
return ok
end
@ -169,7 +169,7 @@ class Matter_UDPServer
var packet = self.packets_sent[idx]
if tasmota.time_reached(packet.next_try)
if packet.retries <= self.RETRIES
tasmota.log("MTR: . Resending packet id=" + str(packet.msg_id), 3)
tasmota.log("MTR: . Resending packet id=" + str(packet.msg_id), 4)
self.send(packet)
packet.next_try = tasmota.millis() + self._backoff_time(packet.retries)
packet.retries += 1
@ -177,7 +177,7 @@ class Matter_UDPServer
else
import string
self.packets_sent.remove(idx)
tasmota.log(string.format("MTR: . (%6i) Unacked packet '[%s]:%i' msg_id=%i", packet.session_id, packet.addr, packet.port, packet.msg_id), 2)
tasmota.log(string.format("MTR: . (%6i) Unacked packet '[%s]:%i' msg_id=%i", packet.session_id, packet.addr, packet.port, packet.msg_id), 3)
end
else
idx += 1
@ -191,13 +191,13 @@ class Matter_UDPServer
var id = msg.ack_message_counter
var exch = msg.exchange_id
if id == nil return end
tasmota.log("MTR: receveived ACK id="+str(id), 3)
# tasmota.log("MTR: receveived ACK id="+str(id), 4)
var idx = 0
while idx < size(self.packets_sent)
var packet = self.packets_sent[idx]
if packet.msg_id == id && packet.exchange_id == exch
self.packets_sent.remove(idx)
tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 3)
tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4)
else
idx += 1
end

View File

@ -92,7 +92,7 @@ class Matter_UI
import string
var matter_enabled = self.matter_enabled
webserver.content_send("<fieldset><legend><b>&nbsp;Matter &nbsp;</b></legend><p></p>"
webserver.content_send("<fieldset><legend><b>&nbsp;Matter &nbsp;</b></legend>"
"<p style='width:320px;'>Check the <a href='https://tasmota.github.io/docs/Matter/' target='_blank'>Matter documentation</a>.</p>"
"<form action='/matterc' method='post'>")
@ -107,7 +107,7 @@ class Matter_UI
end
webserver.content_send("<p></p><button name='save' class='button bgrn'>Save</button></form></p>"
"<p></p></fieldset><p></p>")
"</fieldset><p></p>")
end
#- ---------------------------------------------------------------------- -#
@ -243,9 +243,55 @@ class Matter_UI
end
#- ---------------------------------------------------------------------- -#
#----------------------------------------------------------------------- -#
#- Show Javasrcript hints for classes arguments
#----------------------------------------------------------------------- -#
#
# Exmaple:
# var hm = {"relay":0,"shutter+tilt":0,"light2":1,"illuminance":2,"onoff":1,"pressure":2,"light1":1,"humidity":2,"shutter":0,"occupancy":3,"temperature":2,"light3":1,"light0":1};
# var hl = ["Enter Relay number","Not used","Enter Filter pattern","Enter Switch number"];
def show_plugins_hints_js(*class_list)
import webserver
import string
import json
var class_types = []
for cl: class_list
class_types += string.split(cl, '|')
end
var hm = {}
var hl = []
for typ: class_types
if typ == '' continue end
var cl = self.device.plugins_classes.find(typ)
if cl != nil
var hint = cl.ARG_HINT
if hint != nil
var idx = hl.find(hint)
if idx == nil # not already in list, add it
idx = size(hl) # save index for assignment
hl.push(hint)
end
hm[typ] = idx
end
end
end
webserver.content_send(string.format(
"<script type='text/javascript'>"
"var hm=%s;"
"var hl=%s;"
"</script>", json.dump(hm), json.dump(hl)))
webserver.content_send(matter._ADD_ENDPOINT_JS)
end
#----------------------------------------------------------------------- -#
#- Show plugins configuration
#- ---------------------------------------------------------------------- -#
#----------------------------------------------------------------------- -#
def show_plugins_configuration()
import webserver
import string
@ -253,10 +299,7 @@ class Matter_UI
webserver.content_send("<fieldset><legend><b>&nbsp;Current Configuration&nbsp;</b></legend><p></p>")
# webserver.content_send("<p></p><form style='display: block;' action='matteradd' method='get'><button class='button bgrn' name=''>Create new endpoint</button></form>")
# webserver.content_send("<div style='display: block;'></div><hr>")
webserver.content_send("<form action='/matterc' method='post'"
webserver.content_send("<form action='/matterc' method='post'>"
"<p><b>Local sensors and devices</b></p>"
"<table style='width:100%'>"
"<tr><td width='25'>#</td><td width='115'>Type</td><td>Parameter</td><td width='15'></td></tr>")
@ -283,11 +326,11 @@ class Matter_UI
end
found = true
webserver.content_send(string.format("<tr><td><font size='-1'><b>%i</b></font></td>", ep))
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><b>%i</b></td>", ep))
webserver.content_send(string.format("<td><font size='-1'><b>%s</b></font></td>", self.plugin_name(conf.find('type', ''))))
webserver.content_send(string.format("<td><font size='-1'><input type='text' name='arg%i' minlength='0' size='8' value='%s'></font></td>",
ep, webserver.html_escape(arg)))
webserver.content_send(string.format("<td style='font-size:smaller;'><b>%s</b></td>", self.plugin_name(conf.find('type', ''))))
webserver.content_send(string.format("<td style='font-size:smaller;'><input type='text' name='arg%i' size='8' value='%s' placeholder='%s'></td>",
ep, webserver.html_escape(arg), cl ? webserver.html_escape(cl.ARG_HINT) : ''))
webserver.content_send(string.format("<td style='text-align:center;'><button name='del%i' "
"style='background:none;border:none;line-height:1;'"
" onclick=\"return confirm('Confirm removing endpoint')\""
@ -301,21 +344,9 @@ class Matter_UI
if !found
webserver.content_send("<p>&lt;none&gt;</p>")
end
# add an empty line for adding a configuration
# webserver.content_send(string.format("<tr><td><input type='text' name='ep%03i' maxlength='4' size='3' pattern='[0-9]{1,4}' value=''></td>", i))
# webserver.content_send(string.format("<td><select name='pi%03i'>", i))
# self.plugin_option('', self._CLASSES_TYPES, self._CLASSES_TYPES2)
# webserver.content_send(string.format("</select></td>"))
# webserver.content_send(string.format("<td><font size='-1'><input type='text' name='arg%03i' minlength='0' size='8' value=''></font></td></td></td></tr>", i))
# remote devices
webserver.content_send("<p></p>")
# iterate on each remote device
var remotes = []
for conf: self.device.plugins_config
var url = conf.find("url")
@ -324,7 +355,7 @@ class Matter_UI
end
end
self.device.sort_distinct(remotes)
tasmota.log("MTR: remotes: "+str(remotes), 3)
# tasmota.log("MTR: remotes: "+str(remotes), 4)
for remote: remotes
@ -352,10 +383,10 @@ class Matter_UI
end
found = true
webserver.content_send(string.format("<tr><td width='22'><font size='-1'><b>%i</b></font></td>", ep))
webserver.content_send(string.format("<tr><td width='22' style='font-size:smaller;'><b>%i</b></td>", ep))
webserver.content_send(string.format("<td width='115'><font size='-1'><b>%s</b></select></font></td>", self.plugin_name(conf.find('type', ''))))
webserver.content_send(string.format("<td><font size='-1'><input type='text' name='arg%i' minlength='0' size='8' value='%s'></font></td>",
webserver.content_send(string.format("<td width='115' style='font-size:smaller;'><b>%s</b></select></td>", self.plugin_name(conf.find('type', ''))))
webserver.content_send(string.format("<td style='font-size:smaller;'><input type='text' name='arg%i' size='8' value='%s'></td>",
ep, webserver.html_escape(arg)))
webserver.content_send(string.format("<td width='15' style='text-align:center;'><button name='del%i' "
"style='background:none;border:none;line-height:1;'"
@ -379,16 +410,18 @@ class Matter_UI
# Add new endpoint section
self.show_plugins_hints_js(self._CLASSES_TYPES)
webserver.content_send("<p></p><fieldset><legend><b>&nbsp;Add to Configuration&nbsp;</b></legend><p></p>")
webserver.content_send("<p><b>Add local sensor or device</b></p>"
"<form action='/matterc' method='post'>"
"<table style='width:100%'>"
"<tr><td width='145'>Type</td><td>Parameter</td></tr>")
webserver.content_send("<tr><td><font size='-1'><select name='pi'>")
webserver.content_send("<tr><td style='font-size:smaller;'><select id='pi' name='pi' onchange='otm(\"arg\",this.value)'>")
self.plugin_option('', self._CLASSES_TYPES)
webserver.content_send("</select></font></td>")
webserver.content_send("<td><font size='-1'><input type='text' name='arg' minlength='0' size='8' value=''></font></td>"
webserver.content_send("</select></td>")
webserver.content_send("<td style='font-size:smaller;'><input type='text' id='arg' name='arg' size='8' value=''></td>"
"</tr></table>")
webserver.content_send("<div style='display: block;'></div>")
@ -399,7 +432,7 @@ class Matter_UI
webserver.content_send("<hr><p><b>Add Remote Tasmota</b></p>"
"<form action='/matteradd' method='get'>"
"<table style='width:100%'>")
webserver.content_send("<tr><td width='30'><font size='-1'><b>http://</b></font></td><td><input type='text' name='url' minlength='0' size='8' value='' required placeholder='IP or domain'></td><td width='10'><font size='-1'><b>/</b></font></td></tr>"
webserver.content_send("<tr><td width='30' style='font-size:smaller;'><b>http://</b></td><td><input type='text' name='url' size='8' value='' required placeholder='IP or domain'></td><td width='10' style='font-size:smaller;'><b>/</b></td></tr>"
"</tr></table>")
webserver.content_send("<div style='display: block;'></div>")
@ -584,6 +617,8 @@ class Matter_UI
var config_list = self.generate_config_from_status(status8, status11)
self.show_plugins_hints_js(self._CLASSES_TYPES2)
webserver.content_send("<fieldset><legend><b>&nbsp;Matter Remote Device&nbsp;</b></legend><p></p>"
"<p><b>Add Remote sensor or device</b></p>")
@ -608,23 +643,23 @@ class Matter_UI
arg = cl.ui_conf_to_string(cl, config)
end
webserver.content_send(string.format("<tr><td><font size='-1'><select name='pi%i'>", i))
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><select name='pi%i' onchange='otm(\"arg%i\",this.value)'>", i, i))
self.plugin_option(typ, self._CLASSES_TYPES2)
webserver.content_send("</select></font></td>"
"<td><font size='-1'>")
webserver.content_send(string.format("<input type='text' name='arg%i' minlength='0' size='8' value='%s'>",
i, webserver.html_escape(arg)))
webserver.content_send("</font></td></tr>")
webserver.content_send("</select></td>"
"<td style='font-size:smaller;'>")
webserver.content_send(string.format("<input type='text' id='arg%i' name='arg%i' size='8' value='%s' placeholder='%s'>",
i, i, webserver.html_escape(arg), cl ? webserver.html_escape(cl.ARG_HINT) : ''))
webserver.content_send("</td></tr>")
i += 1
end
# empty line for new endpoint
webserver.content_send(string.format("<tr><td><font size='-1'><select name='pi%i'>", i))
webserver.content_send(string.format("<tr><td style='font-size:smaller;'><select name='pi%i' onchange='otm(\"arg%i\",this.value)'>", i, i))
self.plugin_option('', self._CLASSES_TYPES2)
webserver.content_send("</select></font></td>"
"<td><font size='-1'>")
webserver.content_send(string.format("<input type='text' name='arg%i' minlength='0' size='8' value='%s'>",
i, ''))
webserver.content_send("</font></td></tr>")
webserver.content_send("</select></td>"
"<td style='font-size:smaller;'>")
webserver.content_send(string.format("<input type='text' id='arg%i' name='arg%i' size='8' value='%s'>",
i, i, ''))
webserver.content_send("</td></tr>")
# end of table
webserver.content_send("</table>")
@ -633,7 +668,7 @@ class Matter_UI
webserver.content_send("<button name='addrem' class='button bgrn'>"
"Add endpoints</button></form>")
webserver.content_send("</form></fieldset><p></p>")
webserver.content_send("</form></fieldset>")
else
webserver.content_send(string.format("<p><b>Unable to connect to '%s'</b></p>", webserver.html_escape(url)))
@ -679,9 +714,9 @@ class Matter_UI
try
# debug information about parameters
for i:0..webserver.arg_size()-1
tasmota.log(string.format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
end
# for i:0..webserver.arg_size()-1
# tasmota.log(string.format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
# end
#---------------------------------------------------------------------#
# Change Passcode and/or Passcode
@ -807,7 +842,7 @@ class Matter_UI
self.device.save_param()
end
#- and reload -#
webserver.redirect("/cn?")
webserver.redirect("/matterc?")
end
#---------------------------------------------------------------------#
# Add new endpoint for local sensor or device
@ -881,7 +916,6 @@ class Matter_UI
end
# check if we found an endpoint to be deleted
if ep_deleted != nil
tasmota.log(string.format("MTR: deleting endpoint %i", ep_deleted), 2)
self.device.bridge_remove_endpoint(ep_deleted)
webserver.redirect("/matterc?")
end

View File

@ -155,13 +155,13 @@ be_local_closure(Matter_Control_Message_process_incoming_control_message, /* n
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[14]) { /* constants */
( &(const bvalue[15]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota),
/* K1 */ be_nested_str_weak(log),
/* K2 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20),
/* K3 */ be_nested_str_weak(matter),
/* K4 */ be_nested_str_weak(inspect),
/* K5 */ be_const_int(2),
/* K5 */ be_const_int(3),
/* K6 */ be_nested_str_weak(opcode),
/* K7 */ be_const_int(0),
/* K8 */ be_nested_str_weak(parse_MsgCounterSyncReq),
@ -170,6 +170,7 @@ be_local_closure(Matter_Control_Message_process_incoming_control_message, /* n
/* K11 */ be_nested_str_weak(string),
/* K12 */ be_nested_str_weak(format),
/* K13 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X),
/* K14 */ be_const_int(2),
}),
be_str_weak(process_incoming_control_message),
&be_const_str_solidified,
@ -206,7 +207,7 @@ be_local_closure(Matter_Control_Message_process_incoming_control_message, /* n
0x581C000D, // 001D LDCONST R7 K13
0x88200306, // 001E GETMBR R8 R1 K6
0x7C140600, // 001F CALL R5 3
0x58180005, // 0020 LDCONST R6 K5
0x5818000E, // 0020 LDCONST R6 K14
0x7C0C0600, // 0021 CALL R3 3
0x500C0000, // 0022 LDBOOL R3 0 0
0x80040600, // 0023 RET 1 R3

View File

@ -994,7 +994,7 @@ be_local_closure(Matter_Fabric_before_remove, /* name */
/* K6 */ be_nested_str_weak(copy),
/* K7 */ be_nested_str_weak(reverse),
/* K8 */ be_nested_str_weak(tohex),
/* K9 */ be_const_int(2),
/* K9 */ be_const_int(3),
}),
be_str_weak(before_remove),
&be_const_str_solidified,
@ -1352,7 +1352,7 @@ be_local_closure(Matter_Fabric_log_new_fabric, /* name */
/* K7 */ be_nested_str_weak(reverse),
/* K8 */ be_nested_str_weak(tohex),
/* K9 */ be_nested_str_weak(get_admin_vendor_name),
/* K10 */ be_const_int(2),
/* K10 */ be_const_int(3),
}),
be_str_weak(log_new_fabric),
&be_const_str_solidified,

View File

@ -77,7 +77,7 @@ be_local_closure(Matter_HTTP_remote_call_sync, /* name */
/* K13 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27),
/* K14 */ be_nested_str_weak(addr),
/* K15 */ be_nested_str_weak(port),
/* K16 */ be_const_int(2),
/* K16 */ be_const_int(3),
/* K17 */ be_nested_str_weak(begin_sync),
/* K18 */ be_nested_str_weak(nil),
/* K19 */ be_const_int(0),
@ -402,7 +402,7 @@ be_local_closure(Matter_HTTP_remote_event_http_finished, /* name */
/* K10 */ be_nested_str_weak(millis),
/* K11 */ be_nested_str_weak(time_start),
/* K12 */ be_nested_str_weak(addr),
/* K13 */ be_const_int(2),
/* K13 */ be_const_int(3),
/* K14 */ be_nested_str_weak(dispatch_cb),
/* K15 */ be_nested_str_weak(http_status),
}),
@ -661,7 +661,7 @@ be_local_closure(Matter_HTTP_remote_event_http_timeout, /* name */
/* K7 */ be_nested_str_weak(phase),
/* K8 */ be_nested_str_weak(status),
/* K9 */ be_nested_str_weak(payload),
/* K10 */ be_const_int(2),
/* K10 */ be_const_int(3),
/* K11 */ be_nested_str_weak(dispatch_cb),
}),
be_str_weak(event_http_timeout),

View File

@ -75,7 +75,7 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[44]) { /* constants */
( &(const bvalue[45]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(Path),
@ -104,26 +104,27 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */
/* K25 */ be_nested_str_weak(format),
/* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
/* K27 */ be_nested_str_weak(local_session_id),
/* K28 */ be_const_int(2),
/* K29 */ be_nested_str_weak(InvokeResponseIB),
/* K30 */ be_nested_str_weak(SUCCESS),
/* K31 */ be_nested_str_weak(CommandStatusIB),
/* K32 */ be_nested_str_weak(CommandPathIB),
/* K33 */ be_nested_str_weak(StatusIB),
/* K34 */ be_nested_str_weak(push),
/* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
/* K36 */ be_nested_str_weak(exchange_id),
/* K37 */ be_nested_str_weak(CommandDataIB),
/* K38 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
/* K39 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
/* K40 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
/* K41 */ be_nested_str_weak(stop_iteration),
/* K42 */ be_const_int(0),
/* K43 */ be_nested_str_weak(send_invoke_response),
/* K28 */ be_const_int(0),
/* K29 */ be_const_int(2),
/* K30 */ be_const_int(3),
/* K31 */ be_nested_str_weak(InvokeResponseIB),
/* K32 */ be_nested_str_weak(SUCCESS),
/* K33 */ be_nested_str_weak(CommandStatusIB),
/* K34 */ be_nested_str_weak(CommandPathIB),
/* K35 */ be_nested_str_weak(StatusIB),
/* K36 */ be_nested_str_weak(push),
/* K37 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
/* K38 */ be_nested_str_weak(exchange_id),
/* K39 */ be_nested_str_weak(CommandDataIB),
/* K40 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
/* K41 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
/* K42 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
/* K43 */ be_nested_str_weak(stop_iteration),
/* K44 */ be_nested_str_weak(send_invoke_response),
}),
be_str_weak(process_invoke_request),
&be_const_str_solidified,
( &(const binstruction[271]) { /* code */
( &(const binstruction[276]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x8C100902, // 0002 GETMET R4 R4 K2
@ -137,7 +138,7 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */
0x88180B05, // 000A GETMBR R6 R5 K5
0x4C1C0000, // 000B LDNIL R7
0x20180C07, // 000C NE R6 R6 R7
0x781A00FF, // 000D JMPF R6 #010E
0x781A0104, // 000D JMPF R6 #0113
0xB81A0200, // 000E GETNGBL R6 K1
0x8C180D06, // 000F GETMET R6 R6 K6
0x7C180200, // 0010 CALL R6 1
@ -149,7 +150,7 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */
0x601C0010, // 0016 GETGBL R7 G16
0x88200B05, // 0017 GETMBR R8 R5 K5
0x7C1C0200, // 0018 CALL R7 1
0xA80200E2, // 0019 EXBLK 0 #00FD
0xA80200E7, // 0019 EXBLK 0 #0102
0x5C200E00, // 001A MOVE R8 R7
0x7C200000, // 001B CALL R8 0
0x8824110A, // 001C GETMBR R9 R8 K10
@ -202,199 +203,204 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */
0x58500017, // 004B LDCONST R20 K23
0x5C541800, // 004C MOVE R21 R12
0x7C3C0C00, // 004D CALL R15 6
0x5840001C, // 004E LDCONST R16 K28
0x7C340600, // 004F CALL R13 3
0x4C340000, // 0050 LDNIL R13
0x9012280D, // 0051 SETMBR R4 K20 R13
0xB8360200, // 0052 GETNGBL R13 K1
0x8C341B1D, // 0053 GETMET R13 R13 K29
0x7C340200, // 0054 CALL R13 1
0x50380200, // 0055 LDBOOL R14 1 0
0x1C38160E, // 0056 EQ R14 R11 R14
0x743A0004, // 0057 JMPT R14 #005D
0x8838090D, // 0058 GETMBR R14 R4 K13
0xB83E0200, // 0059 GETNGBL R15 K1
0x883C1F1E, // 005A GETMBR R15 R15 K30
0x1C381C0F, // 005B EQ R14 R14 R15
0x783A002D, // 005C JMPF R14 #008B
0xB83A0200, // 005D GETNGBL R14 K1
0x8C381D1F, // 005E GETMET R14 R14 K31
0x7C380200, // 005F CALL R14 1
0x90361A0E, // 0060 SETMBR R13 K13 R14
0x88381B0D, // 0061 GETMBR R14 R13 K13
0xB83E0200, // 0062 GETNGBL R15 K1
0x8C3C1F20, // 0063 GETMET R15 R15 K32
0x7C3C0200, // 0064 CALL R15 1
0x903A140F, // 0065 SETMBR R14 K10 R15
0x88400909, // 004E GETMBR R16 R4 K9
0x2040211C, // 004F NE R16 R16 K28
0x78420001, // 0050 JMPF R16 #0053
0x5840001D, // 0051 LDCONST R16 K29
0x70020000, // 0052 JMP #0054
0x5840001E, // 0053 LDCONST R16 K30
0x7C340600, // 0054 CALL R13 3
0x4C340000, // 0055 LDNIL R13
0x9012280D, // 0056 SETMBR R4 K20 R13
0xB8360200, // 0057 GETNGBL R13 K1
0x8C341B1F, // 0058 GETMET R13 R13 K31
0x7C340200, // 0059 CALL R13 1
0x50380200, // 005A LDBOOL R14 1 0
0x1C38160E, // 005B EQ R14 R11 R14
0x743A0004, // 005C JMPT R14 #0062
0x8838090D, // 005D GETMBR R14 R4 K13
0xB83E0200, // 005E GETNGBL R15 K1
0x883C1F20, // 005F GETMBR R15 R15 K32
0x1C381C0F, // 0060 EQ R14 R14 R15
0x783A002D, // 0061 JMPF R14 #0090
0xB83A0200, // 0062 GETNGBL R14 K1
0x8C381D21, // 0063 GETMET R14 R14 K33
0x7C380200, // 0064 CALL R14 1
0x90361A0E, // 0065 SETMBR R13 K13 R14
0x88381B0D, // 0066 GETMBR R14 R13 K13
0x88381D0A, // 0067 GETMBR R14 R14 K10
0x883C0909, // 0068 GETMBR R15 R4 K9
0x903A120F, // 0069 SETMBR R14 K9 R15
0x88381B0D, // 006A GETMBR R14 R13 K13
0x88381D0A, // 006B GETMBR R14 R14 K10
0x883C090B, // 006C GETMBR R15 R4 K11
0x903A160F, // 006D SETMBR R14 K11 R15
0x88381B0D, // 006E GETMBR R14 R13 K13
0x88381D0A, // 006F GETMBR R14 R14 K10
0x883C090C, // 0070 GETMBR R15 R4 K12
0x903A180F, // 0071 SETMBR R14 K12 R15
0x88381B0D, // 0072 GETMBR R14 R13 K13
0xB83E0200, // 0073 GETNGBL R15 K1
0x8C3C1F21, // 0074 GETMET R15 R15 K33
0x7C3C0200, // 0075 CALL R15 1
0x903A1A0F, // 0076 SETMBR R14 K13 R15
0xB83E0200, // 0067 GETNGBL R15 K1
0x8C3C1F22, // 0068 GETMET R15 R15 K34
0x7C3C0200, // 0069 CALL R15 1
0x903A140F, // 006A SETMBR R14 K10 R15
0x88381B0D, // 006B GETMBR R14 R13 K13
0x88381D0A, // 006C GETMBR R14 R14 K10
0x883C0909, // 006D GETMBR R15 R4 K9
0x903A120F, // 006E SETMBR R14 K9 R15
0x88381B0D, // 006F GETMBR R14 R13 K13
0x88381D0A, // 0070 GETMBR R14 R14 K10
0x883C090B, // 0071 GETMBR R15 R4 K11
0x903A160F, // 0072 SETMBR R14 K11 R15
0x88381B0D, // 0073 GETMBR R14 R13 K13
0x88381D0A, // 0074 GETMBR R14 R14 K10
0x883C090C, // 0075 GETMBR R15 R4 K12
0x903A180F, // 0076 SETMBR R14 K12 R15
0x88381B0D, // 0077 GETMBR R14 R13 K13
0x88381D0D, // 0078 GETMBR R14 R14 K13
0xB83E0200, // 0079 GETNGBL R15 K1
0x883C1F1E, // 007A GETMBR R15 R15 K30
0xB83E0200, // 0078 GETNGBL R15 K1
0x8C3C1F23, // 0079 GETMET R15 R15 K35
0x7C3C0200, // 007A CALL R15 1
0x903A1A0F, // 007B SETMBR R14 K13 R15
0x88380D08, // 007C GETMBR R14 R6 K8
0x8C381D22, // 007D GETMET R14 R14 K34
0x5C401A00, // 007E MOVE R16 R13
0x7C380400, // 007F CALL R14 2
0xB83A3000, // 0080 GETNGBL R14 K24
0x8C381D14, // 0081 GETMET R14 R14 K20
0x8C400719, // 0082 GETMET R16 R3 K25
0x58480023, // 0083 LDCONST R18 K35
0x884C0312, // 0084 GETMBR R19 R1 K18
0x884C271B, // 0085 GETMBR R19 R19 K27
0x88500324, // 0086 GETMBR R20 R1 K36
0x7C400800, // 0087 CALL R16 4
0x5844001C, // 0088 LDCONST R17 K28
0x7C380600, // 0089 CALL R14 3
0x70020070, // 008A JMP #00FC
0x4C380000, // 008B LDNIL R14
0x2038160E, // 008C NE R14 R11 R14
0x783A0031, // 008D JMPF R14 #00C0
0xB83A0200, // 008E GETNGBL R14 K1
0x8C381D25, // 008F GETMET R14 R14 K37
0x7C380200, // 0090 CALL R14 1
0x9036180E, // 0091 SETMBR R13 K12 R14
0x88381B0C, // 0092 GETMBR R14 R13 K12
0xB83E0200, // 0093 GETNGBL R15 K1
0x8C3C1F20, // 0094 GETMET R15 R15 K32
0x7C3C0200, // 0095 CALL R15 1
0x903A140F, // 0096 SETMBR R14 K10 R15
0x88381B0D, // 007C GETMBR R14 R13 K13
0x88381D0D, // 007D GETMBR R14 R14 K13
0xB83E0200, // 007E GETNGBL R15 K1
0x883C1F20, // 007F GETMBR R15 R15 K32
0x903A1A0F, // 0080 SETMBR R14 K13 R15
0x88380D08, // 0081 GETMBR R14 R6 K8
0x8C381D24, // 0082 GETMET R14 R14 K36
0x5C401A00, // 0083 MOVE R16 R13
0x7C380400, // 0084 CALL R14 2
0xB83A3000, // 0085 GETNGBL R14 K24
0x8C381D14, // 0086 GETMET R14 R14 K20
0x8C400719, // 0087 GETMET R16 R3 K25
0x58480025, // 0088 LDCONST R18 K37
0x884C0312, // 0089 GETMBR R19 R1 K18
0x884C271B, // 008A GETMBR R19 R19 K27
0x88500326, // 008B GETMBR R20 R1 K38
0x7C400800, // 008C CALL R16 4
0x5844001E, // 008D LDCONST R17 K30
0x7C380600, // 008E CALL R14 3
0x70020070, // 008F JMP #0101
0x4C380000, // 0090 LDNIL R14
0x2038160E, // 0091 NE R14 R11 R14
0x783A0031, // 0092 JMPF R14 #00C5
0xB83A0200, // 0093 GETNGBL R14 K1
0x8C381D27, // 0094 GETMET R14 R14 K39
0x7C380200, // 0095 CALL R14 1
0x9036180E, // 0096 SETMBR R13 K12 R14
0x88381B0C, // 0097 GETMBR R14 R13 K12
0x88381D0A, // 0098 GETMBR R14 R14 K10
0x883C0909, // 0099 GETMBR R15 R4 K9
0x903A120F, // 009A SETMBR R14 K9 R15
0x88381B0C, // 009B GETMBR R14 R13 K12
0x88381D0A, // 009C GETMBR R14 R14 K10
0x883C090B, // 009D GETMBR R15 R4 K11
0x903A160F, // 009E SETMBR R14 K11 R15
0x88381B0C, // 009F GETMBR R14 R13 K12
0x88381D0A, // 00A0 GETMBR R14 R14 K10
0x883C090C, // 00A1 GETMBR R15 R4 K12
0x903A180F, // 00A2 SETMBR R14 K12 R15
0x88381B0C, // 00A3 GETMBR R14 R13 K12
0x903A260B, // 00A4 SETMBR R14 K19 R11
0x88380D08, // 00A5 GETMBR R14 R6 K8
0x8C381D22, // 00A6 GETMET R14 R14 K34
0x5C401A00, // 00A7 MOVE R16 R13
0x7C380400, // 00A8 CALL R14 2
0xB83A0200, // 00A9 GETNGBL R14 K1
0x8C381D0F, // 00AA GETMET R14 R14 K15
0x8840090B, // 00AB GETMBR R16 R4 K11
0x8844090C, // 00AC GETMBR R17 R4 K12
0x7C380600, // 00AD CALL R14 3
0x5C241C00, // 00AE MOVE R9 R14
0xB83A3000, // 00AF GETNGBL R14 K24
0x8C381D14, // 00B0 GETMET R14 R14 K20
0x8C400719, // 00B1 GETMET R16 R3 K25
0x58480026, // 00B2 LDCONST R18 K38
0x884C0312, // 00B3 GETMBR R19 R1 K18
0x884C271B, // 00B4 GETMBR R19 R19 K27
0x60500008, // 00B5 GETGBL R20 G8
0x5C540800, // 00B6 MOVE R21 R4
0x7C500200, // 00B7 CALL R20 1
0x78260001, // 00B8 JMPF R9 #00BB
0x5C541200, // 00B9 MOVE R21 R9
0x70020000, // 00BA JMP #00BC
0x58540017, // 00BB LDCONST R21 K23
0x7C400A00, // 00BC CALL R16 5
0x5844001C, // 00BD LDCONST R17 K28
0x7C380600, // 00BE CALL R14 3
0x7002003B, // 00BF JMP #00FC
0x8838090D, // 00C0 GETMBR R14 R4 K13
0x4C3C0000, // 00C1 LDNIL R15
0x20381C0F, // 00C2 NE R14 R14 R15
0x783A002D, // 00C3 JMPF R14 #00F2
0xB83A0200, // 00C4 GETNGBL R14 K1
0x8C381D1F, // 00C5 GETMET R14 R14 K31
0x7C380200, // 00C6 CALL R14 1
0x90361A0E, // 00C7 SETMBR R13 K13 R14
0x88381B0D, // 00C8 GETMBR R14 R13 K13
0xB83E0200, // 00C9 GETNGBL R15 K1
0x8C3C1F20, // 00CA GETMET R15 R15 K32
0x7C3C0200, // 00CB CALL R15 1
0x903A140F, // 00CC SETMBR R14 K10 R15
0xB83E0200, // 0098 GETNGBL R15 K1
0x8C3C1F22, // 0099 GETMET R15 R15 K34
0x7C3C0200, // 009A CALL R15 1
0x903A140F, // 009B SETMBR R14 K10 R15
0x88381B0C, // 009C GETMBR R14 R13 K12
0x88381D0A, // 009D GETMBR R14 R14 K10
0x883C0909, // 009E GETMBR R15 R4 K9
0x903A120F, // 009F SETMBR R14 K9 R15
0x88381B0C, // 00A0 GETMBR R14 R13 K12
0x88381D0A, // 00A1 GETMBR R14 R14 K10
0x883C090B, // 00A2 GETMBR R15 R4 K11
0x903A160F, // 00A3 SETMBR R14 K11 R15
0x88381B0C, // 00A4 GETMBR R14 R13 K12
0x88381D0A, // 00A5 GETMBR R14 R14 K10
0x883C090C, // 00A6 GETMBR R15 R4 K12
0x903A180F, // 00A7 SETMBR R14 K12 R15
0x88381B0C, // 00A8 GETMBR R14 R13 K12
0x903A260B, // 00A9 SETMBR R14 K19 R11
0x88380D08, // 00AA GETMBR R14 R6 K8
0x8C381D24, // 00AB GETMET R14 R14 K36
0x5C401A00, // 00AC MOVE R16 R13
0x7C380400, // 00AD CALL R14 2
0xB83A0200, // 00AE GETNGBL R14 K1
0x8C381D0F, // 00AF GETMET R14 R14 K15
0x8840090B, // 00B0 GETMBR R16 R4 K11
0x8844090C, // 00B1 GETMBR R17 R4 K12
0x7C380600, // 00B2 CALL R14 3
0x5C241C00, // 00B3 MOVE R9 R14
0xB83A3000, // 00B4 GETNGBL R14 K24
0x8C381D14, // 00B5 GETMET R14 R14 K20
0x8C400719, // 00B6 GETMET R16 R3 K25
0x58480028, // 00B7 LDCONST R18 K40
0x884C0312, // 00B8 GETMBR R19 R1 K18
0x884C271B, // 00B9 GETMBR R19 R19 K27
0x60500008, // 00BA GETGBL R20 G8
0x5C540800, // 00BB MOVE R21 R4
0x7C500200, // 00BC CALL R20 1
0x78260001, // 00BD JMPF R9 #00C0
0x5C541200, // 00BE MOVE R21 R9
0x70020000, // 00BF JMP #00C1
0x58540017, // 00C0 LDCONST R21 K23
0x7C400A00, // 00C1 CALL R16 5
0x5844001E, // 00C2 LDCONST R17 K30
0x7C380600, // 00C3 CALL R14 3
0x7002003B, // 00C4 JMP #0101
0x8838090D, // 00C5 GETMBR R14 R4 K13
0x4C3C0000, // 00C6 LDNIL R15
0x20381C0F, // 00C7 NE R14 R14 R15
0x783A002D, // 00C8 JMPF R14 #00F7
0xB83A0200, // 00C9 GETNGBL R14 K1
0x8C381D21, // 00CA GETMET R14 R14 K33
0x7C380200, // 00CB CALL R14 1
0x90361A0E, // 00CC SETMBR R13 K13 R14
0x88381B0D, // 00CD GETMBR R14 R13 K13
0x88381D0A, // 00CE GETMBR R14 R14 K10
0x883C0909, // 00CF GETMBR R15 R4 K9
0x903A120F, // 00D0 SETMBR R14 K9 R15
0x88381B0D, // 00D1 GETMBR R14 R13 K13
0x88381D0A, // 00D2 GETMBR R14 R14 K10
0x883C090B, // 00D3 GETMBR R15 R4 K11
0x903A160F, // 00D4 SETMBR R14 K11 R15
0x88381B0D, // 00D5 GETMBR R14 R13 K13
0x88381D0A, // 00D6 GETMBR R14 R14 K10
0x883C090C, // 00D7 GETMBR R15 R4 K12
0x903A180F, // 00D8 SETMBR R14 K12 R15
0x88381B0D, // 00D9 GETMBR R14 R13 K13
0xB83E0200, // 00DA GETNGBL R15 K1
0x8C3C1F21, // 00DB GETMET R15 R15 K33
0x7C3C0200, // 00DC CALL R15 1
0x903A1A0F, // 00DD SETMBR R14 K13 R15
0xB83E0200, // 00CE GETNGBL R15 K1
0x8C3C1F22, // 00CF GETMET R15 R15 K34
0x7C3C0200, // 00D0 CALL R15 1
0x903A140F, // 00D1 SETMBR R14 K10 R15
0x88381B0D, // 00D2 GETMBR R14 R13 K13
0x88381D0A, // 00D3 GETMBR R14 R14 K10
0x883C0909, // 00D4 GETMBR R15 R4 K9
0x903A120F, // 00D5 SETMBR R14 K9 R15
0x88381B0D, // 00D6 GETMBR R14 R13 K13
0x88381D0A, // 00D7 GETMBR R14 R14 K10
0x883C090B, // 00D8 GETMBR R15 R4 K11
0x903A160F, // 00D9 SETMBR R14 K11 R15
0x88381B0D, // 00DA GETMBR R14 R13 K13
0x88381D0A, // 00DB GETMBR R14 R14 K10
0x883C090C, // 00DC GETMBR R15 R4 K12
0x903A180F, // 00DD SETMBR R14 K12 R15
0x88381B0D, // 00DE GETMBR R14 R13 K13
0x88381D0D, // 00DF GETMBR R14 R14 K13
0x883C090D, // 00E0 GETMBR R15 R4 K13
0x903A1A0F, // 00E1 SETMBR R14 K13 R15
0x88380D08, // 00E2 GETMBR R14 R6 K8
0x8C381D22, // 00E3 GETMET R14 R14 K34
0x5C401A00, // 00E4 MOVE R16 R13
0x7C380400, // 00E5 CALL R14 2
0xB83A3000, // 00E6 GETNGBL R14 K24
0x8C381D14, // 00E7 GETMET R14 R14 K20
0x8C400719, // 00E8 GETMET R16 R3 K25
0x58480027, // 00E9 LDCONST R18 K39
0x884C0312, // 00EA GETMBR R19 R1 K18
0x884C271B, // 00EB GETMBR R19 R19 K27
0x8850090D, // 00EC GETMBR R20 R4 K13
0x88540324, // 00ED GETMBR R21 R1 K36
0x7C400A00, // 00EE CALL R16 5
0x5844001C, // 00EF LDCONST R17 K28
0x7C380600, // 00F0 CALL R14 3
0x70020009, // 00F1 JMP #00FC
0xB83A3000, // 00F2 GETNGBL R14 K24
0x8C381D14, // 00F3 GETMET R14 R14 K20
0x8C400719, // 00F4 GETMET R16 R3 K25
0x58480028, // 00F5 LDCONST R18 K40
0x884C0312, // 00F6 GETMBR R19 R1 K18
0x884C271B, // 00F7 GETMBR R19 R19 K27
0x88500324, // 00F8 GETMBR R20 R1 K36
0x7C400800, // 00F9 CALL R16 4
0x5844001C, // 00FA LDCONST R17 K28
0x7C380600, // 00FB CALL R14 3
0x7001FF1C, // 00FC JMP #001A
0x581C0029, // 00FD LDCONST R7 K41
0xAC1C0200, // 00FE CATCH R7 1 0
0xB0080000, // 00FF RAISE 2 R0 R0
0x601C000C, // 0100 GETGBL R7 G12
0x88200D08, // 0101 GETMBR R8 R6 K8
0x7C1C0200, // 0102 CALL R7 1
0x241C0F2A, // 0103 GT R7 R7 K42
0x781E0004, // 0104 JMPF R7 #010A
0x8C1C012B, // 0105 GETMET R7 R0 K43
0x5C240200, // 0106 MOVE R9 R1
0x5C280C00, // 0107 MOVE R10 R6
0x7C1C0600, // 0108 CALL R7 3
0x70020001, // 0109 JMP #010C
0x501C0000, // 010A LDBOOL R7 0 0
0x80040E00, // 010B RET 1 R7
0x501C0200, // 010C LDBOOL R7 1 0
0x80040E00, // 010D RET 1 R7
0x80000000, // 010E RET 0
0xB83E0200, // 00DF GETNGBL R15 K1
0x8C3C1F23, // 00E0 GETMET R15 R15 K35
0x7C3C0200, // 00E1 CALL R15 1
0x903A1A0F, // 00E2 SETMBR R14 K13 R15
0x88381B0D, // 00E3 GETMBR R14 R13 K13
0x88381D0D, // 00E4 GETMBR R14 R14 K13
0x883C090D, // 00E5 GETMBR R15 R4 K13
0x903A1A0F, // 00E6 SETMBR R14 K13 R15
0x88380D08, // 00E7 GETMBR R14 R6 K8
0x8C381D24, // 00E8 GETMET R14 R14 K36
0x5C401A00, // 00E9 MOVE R16 R13
0x7C380400, // 00EA CALL R14 2
0xB83A3000, // 00EB GETNGBL R14 K24
0x8C381D14, // 00EC GETMET R14 R14 K20
0x8C400719, // 00ED GETMET R16 R3 K25
0x58480029, // 00EE LDCONST R18 K41
0x884C0312, // 00EF GETMBR R19 R1 K18
0x884C271B, // 00F0 GETMBR R19 R19 K27
0x8850090D, // 00F1 GETMBR R20 R4 K13
0x88540326, // 00F2 GETMBR R21 R1 K38
0x7C400A00, // 00F3 CALL R16 5
0x5844001E, // 00F4 LDCONST R17 K30
0x7C380600, // 00F5 CALL R14 3
0x70020009, // 00F6 JMP #0101
0xB83A3000, // 00F7 GETNGBL R14 K24
0x8C381D14, // 00F8 GETMET R14 R14 K20
0x8C400719, // 00F9 GETMET R16 R3 K25
0x5848002A, // 00FA LDCONST R18 K42
0x884C0312, // 00FB GETMBR R19 R1 K18
0x884C271B, // 00FC GETMBR R19 R19 K27
0x88500326, // 00FD GETMBR R20 R1 K38
0x7C400800, // 00FE CALL R16 4
0x5844001E, // 00FF LDCONST R17 K30
0x7C380600, // 0100 CALL R14 3
0x7001FF17, // 0101 JMP #001A
0x581C002B, // 0102 LDCONST R7 K43
0xAC1C0200, // 0103 CATCH R7 1 0
0xB0080000, // 0104 RAISE 2 R0 R0
0x601C000C, // 0105 GETGBL R7 G12
0x88200D08, // 0106 GETMBR R8 R6 K8
0x7C1C0200, // 0107 CALL R7 1
0x241C0F1C, // 0108 GT R7 R7 K28
0x781E0004, // 0109 JMPF R7 #010F
0x8C1C012C, // 010A GETMET R7 R0 K44
0x5C240200, // 010B MOVE R9 R1
0x5C280C00, // 010C MOVE R10 R6
0x7C1C0600, // 010D CALL R7 3
0x70020001, // 010E JMP #0111
0x501C0000, // 010F LDBOOL R7 0 0
0x80040E00, // 0110 RET 1 R7
0x501C0200, // 0111 LDBOOL R7 1 0
0x80040E00, // 0112 RET 1 R7
0x80000000, // 0113 RET 0
})
)
);
@ -443,7 +449,7 @@ be_local_closure(Matter_IM_subscribe_request, /* name */
/* K25 */ be_const_int(1),
/* K26 */ be_const_int(0),
/* K27 */ be_nested_str_weak(subscription_id),
/* K28 */ be_const_int(2),
/* K28 */ be_const_int(3),
/* K29 */ be_nested_str_weak(_inner_process_read_request),
/* K30 */ be_nested_str_weak(send_subscribe_response),
}),
@ -557,7 +563,7 @@ be_local_closure(Matter_IM_process_write_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[26]) { /* constants */
( &(const bvalue[28]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(get_attribute_name),
@ -582,12 +588,14 @@ be_local_closure(Matter_IM_process_write_request, /* name */
/* K21 */ be_nested_str_weak(log),
/* K22 */ be_nested_str_weak(format),
/* K23 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
/* K24 */ be_const_int(2),
/* K25 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED),
/* K24 */ be_const_int(0),
/* K25 */ be_const_int(2),
/* K26 */ be_const_int(3),
/* K27 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED),
}),
be_str_weak(write_single_attribute),
&be_const_str_solidified,
( &(const binstruction[97]) { /* code */
( &(const binstruction[102]) { /* code */
0xA4160000, // 0000 IMPORT R5 K0
0xB81A0200, // 0001 GETNGBL R6 K1
0x8C180D02, // 0002 GETMET R6 R6 K2
@ -621,8 +629,8 @@ be_local_closure(Matter_IM_process_write_request, /* name */
0x88200508, // 001E GETMBR R8 R2 K8
0x4C240000, // 001F LDNIL R9
0x20201009, // 0020 NE R8 R8 R9
0x78220032, // 0021 JMPF R8 #0055
0x78120030, // 0022 JMPF R4 #0054
0x78220037, // 0021 JMPF R8 #005A
0x78120035, // 0022 JMPF R4 #0059
0xB8220200, // 0023 GETNGBL R8 K1
0x8C20110D, // 0024 GETMET R8 R8 K13
0x7C200200, // 0025 CALL R8 1
@ -668,23 +676,28 @@ be_local_closure(Matter_IM_process_write_request, /* name */
0x70020000, // 004D JMP #004F
0x58440007, // 004E LDCONST R17 K7
0x7C2C0C00, // 004F CALL R11 6
0x58300018, // 0050 LDCONST R12 K24
0x7C240600, // 0051 CALL R9 3
0x50240200, // 0052 LDBOOL R9 1 0
0x80041200, // 0053 RET 1 R9
0x7002000A, // 0054 JMP #0060
0xB8222800, // 0055 GETNGBL R8 K20
0x8C201115, // 0056 GETMET R8 R8 K21
0x8C280B16, // 0057 GETMET R10 R5 K22
0x58300019, // 0058 LDCONST R12 K25
0x60340008, // 0059 GETGBL R13 G8
0x5C380400, // 005A MOVE R14 R2
0x7C340200, // 005B CALL R13 1
0x5C380C00, // 005C MOVE R14 R6
0x7C280800, // 005D CALL R10 4
0x582C0018, // 005E LDCONST R11 K24
0x7C200600, // 005F CALL R8 3
0x80000000, // 0060 RET 0
0x88300511, // 0050 GETMBR R12 R2 K17
0x20301918, // 0051 NE R12 R12 K24
0x78320001, // 0052 JMPF R12 #0055
0x58300019, // 0053 LDCONST R12 K25
0x70020000, // 0054 JMP #0056
0x5830001A, // 0055 LDCONST R12 K26
0x7C240600, // 0056 CALL R9 3
0x50240200, // 0057 LDBOOL R9 1 0
0x80041200, // 0058 RET 1 R9
0x7002000A, // 0059 JMP #0065
0xB8222800, // 005A GETNGBL R8 K20
0x8C201115, // 005B GETMET R8 R8 K21
0x8C280B16, // 005C GETMET R10 R5 K22
0x5830001B, // 005D LDCONST R12 K27
0x60340008, // 005E GETGBL R13 G8
0x5C380400, // 005F MOVE R14 R2
0x7C340200, // 0060 CALL R13 1
0x5C380C00, // 0061 MOVE R14 R6
0x7C280800, // 0062 CALL R10 4
0x582C001A, // 0063 LDCONST R11 K26
0x7C200600, // 0064 CALL R8 3
0x80000000, // 0065 RET 0
})
),
be_nested_proto(
@ -743,7 +756,7 @@ be_local_closure(Matter_IM_process_write_request, /* name */
/* K23 */ be_nested_str_weak(_X20_X28),
/* K24 */ be_nested_str_weak(_X29),
/* K25 */ be_nested_str_weak(),
/* K26 */ be_const_int(2),
/* K26 */ be_const_int(3),
/* K27 */ be_nested_str_weak(process_attribute_expansion),
/* K28 */ be_nested_str_weak(stop_iteration),
/* K29 */ be_nested_str_weak(send_write_response),
@ -1160,7 +1173,7 @@ be_local_closure(Matter_IM_send_status, /* name */
********************************************************************/
be_local_closure(Matter_IM_subscribe_response, /* name */
be_nested_proto(
9, /* nstack */
7, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@ -1168,19 +1181,15 @@ be_local_closure(Matter_IM_subscribe_response, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(SubscribeResponseMessage),
/* K3 */ be_nested_str_weak(from_TLV),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(log),
/* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20SubscribeResponsetMessage_X3D),
/* K7 */ be_const_int(2),
}),
be_str_weak(subscribe_response),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
( &(const binstruction[ 9]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x8C100902, // 0002 GETMET R4 R4 K2
@ -1188,16 +1197,8 @@ be_local_closure(Matter_IM_subscribe_response, /* name */
0x8C100903, // 0004 GETMET R4 R4 K3
0x5C180400, // 0005 MOVE R6 R2
0x7C100400, // 0006 CALL R4 2
0xB8160800, // 0007 GETNGBL R5 K4
0x8C140B05, // 0008 GETMET R5 R5 K5
0x601C0008, // 0009 GETGBL R7 G8
0x5C200800, // 000A MOVE R8 R4
0x7C1C0200, // 000B CALL R7 1
0x001E0C07, // 000C ADD R7 K6 R7
0x58200007, // 000D LDCONST R8 K7
0x7C140600, // 000E CALL R5 3
0x50140000, // 000F LDBOOL R5 0 0
0x80040A00, // 0010 RET 1 R5
0x50140000, // 0007 LDBOOL R5 0 0
0x80040A00, // 0008 RET 1 R5
})
)
);
@ -1411,7 +1412,7 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
/* K24 */ be_nested_str_weak(format),
/* K25 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
/* K26 */ be_nested_str_weak(local_session_id),
/* K27 */ be_const_int(2),
/* K27 */ be_const_int(3),
/* K28 */ be_nested_str_weak(status),
/* K29 */ be_nested_str_weak(attribute_status),
/* K30 */ be_nested_str_weak(AttributeStatusIB),
@ -1686,7 +1687,7 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
/* K19 */ be_nested_str_weak(_X20_X28),
/* K20 */ be_nested_str_weak(_X29),
/* K21 */ be_nested_str_weak(),
/* K22 */ be_const_int(2),
/* K22 */ be_const_int(3),
/* K23 */ be_nested_str_weak(process_attribute_expansion),
/* K24 */ be_nested_str_weak(stop_iteration),
}),
@ -1848,7 +1849,7 @@ be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */
********************************************************************/
be_local_closure(Matter_IM_process_incoming_ack, /* name */
be_nested_proto(
11, /* nstack */
7, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@ -1856,47 +1857,26 @@ be_local_closure(Matter_IM_process_incoming_ack, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[11]) { /* constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(find_sendqueue_by_exchangeid),
/* K2 */ be_nested_str_weak(exchange_id),
/* 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_X20process_incoming_ack_X20exch_X3D_X25i_X20message_X3D_X25i),
/* K7 */ be_const_int(1),
/* K8 */ be_const_int(0),
/* K9 */ be_const_int(3),
/* K10 */ be_nested_str_weak(ack_received),
/* K3 */ be_nested_str_weak(ack_received),
}),
be_str_weak(process_incoming_ack),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
( &(const binstruction[11]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x8C0C0101, // 0001 GETMET R3 R0 K1
0x88140302, // 0002 GETMBR R5 R1 K2
0x7C0C0400, // 0003 CALL R3 2
0xB8120600, // 0004 GETNGBL R4 K3
0x8C100904, // 0005 GETMET R4 R4 K4
0x8C180505, // 0006 GETMET R6 R2 K5
0x58200006, // 0007 LDCONST R8 K6
0x88240302, // 0008 GETMBR R9 R1 K2
0x4C280000, // 0009 LDNIL R10
0x2028060A, // 000A NE R10 R3 R10
0x782A0001, // 000B JMPF R10 #000E
0x58280007, // 000C LDCONST R10 K7
0x70020000, // 000D JMP #000F
0x58280008, // 000E LDCONST R10 K8
0x7C180800, // 000F CALL R6 4
0x581C0009, // 0010 LDCONST R7 K9
0x7C100600, // 0011 CALL R4 3
0x780E0003, // 0012 JMPF R3 #0017
0x8C10070A, // 0013 GETMET R4 R3 K10
0x5C180200, // 0014 MOVE R6 R1
0x7C100400, // 0015 CALL R4 2
0x80040800, // 0016 RET 1 R4
0x50100000, // 0017 LDBOOL R4 0 0
0x80040800, // 0018 RET 1 R4
0x780E0003, // 0004 JMPF R3 #0009
0x8C100703, // 0005 GETMET R4 R3 K3
0x5C180200, // 0006 MOVE R6 R1
0x7C100400, // 0007 CALL R4 2
0x80040800, // 0008 RET 1 R4
0x50100000, // 0009 LDBOOL R4 0 0
0x80040800, // 000A RET 1 R4
})
)
);
@ -2004,7 +1984,7 @@ be_local_closure(Matter_IM_process_status_response, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[19]) { /* constants */
( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(findsubval),
/* K2 */ be_const_int(0),
@ -2021,9 +2001,8 @@ be_local_closure(Matter_IM_process_status_response, /* name */
/* K13 */ be_nested_str_weak(local_session_id),
/* K14 */ be_const_int(3),
/* K15 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X),
/* K16 */ be_const_int(2),
/* K17 */ be_nested_str_weak(status_error_received),
/* K18 */ be_nested_str_weak(remove_sendqueue_by_exchangeid),
/* K16 */ be_nested_str_weak(status_error_received),
/* K17 */ be_nested_str_weak(remove_sendqueue_by_exchangeid),
}),
be_str_weak(process_status_response),
&be_const_str_solidified,
@ -2063,13 +2042,13 @@ be_local_closure(Matter_IM_process_status_response, /* name */
0x5828000F, // 0020 LDCONST R10 K15
0x5C2C0800, // 0021 MOVE R11 R4
0x7C200600, // 0022 CALL R8 3
0x58240010, // 0023 LDCONST R9 K16
0x5824000E, // 0023 LDCONST R9 K14
0x7C180600, // 0024 CALL R6 3
0x78160005, // 0025 JMPF R5 #002C
0x8C180B11, // 0026 GETMET R6 R5 K17
0x8C180B10, // 0026 GETMET R6 R5 K16
0x5C200200, // 0027 MOVE R8 R1
0x7C180400, // 0028 CALL R6 2
0x8C180112, // 0029 GETMET R6 R0 K18
0x8C180111, // 0029 GETMET R6 R0 K17
0x88200304, // 002A GETMBR R8 R1 K4
0x7C180400, // 002B CALL R6 2
0x50180000, // 002C LDBOOL R6 0 0
@ -2085,7 +2064,7 @@ be_local_closure(Matter_IM_process_status_response, /* name */
********************************************************************/
be_local_closure(Matter_IM_process_write_response, /* name */
be_nested_proto(
9, /* nstack */
7, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@ -2093,19 +2072,15 @@ be_local_closure(Matter_IM_process_write_response, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(WriteResponseMessage),
/* K3 */ be_nested_str_weak(from_TLV),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(log),
/* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteResponseMessage_X3D),
/* K7 */ be_const_int(2),
}),
be_str_weak(process_write_response),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
( &(const binstruction[ 9]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x8C100902, // 0002 GETMET R4 R4 K2
@ -2113,16 +2088,8 @@ be_local_closure(Matter_IM_process_write_response, /* name */
0x8C100903, // 0004 GETMET R4 R4 K3
0x5C180400, // 0005 MOVE R6 R2
0x7C100400, // 0006 CALL R4 2
0xB8160800, // 0007 GETNGBL R5 K4
0x8C140B05, // 0008 GETMET R5 R5 K5
0x601C0008, // 0009 GETGBL R7 G8
0x5C200800, // 000A MOVE R8 R4
0x7C1C0200, // 000B CALL R7 1
0x001E0C07, // 000C ADD R7 K6 R7
0x58200007, // 000D LDCONST R8 K7
0x7C140600, // 000E CALL R5 3
0x50140000, // 000F LDBOOL R5 0 0
0x80040A00, // 0010 RET 1 R5
0x50140000, // 0007 LDBOOL R5 0 0
0x80040A00, // 0008 RET 1 R5
})
)
);
@ -2162,7 +2129,7 @@ be_local_closure(Matter_IM_send_subscribe_update, /* name */
/* K16 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
/* K17 */ be_nested_str_weak(local_session_id),
/* K18 */ be_nested_str_weak(subscription_id),
/* K19 */ be_const_int(2),
/* K19 */ be_const_int(3),
/* K20 */ be_nested_str_weak(is_keep_alive),
/* K21 */ be_nested_str_weak(_inner_process_read_request),
/* K22 */ be_nested_str_weak(suppress_response),
@ -2260,7 +2227,7 @@ be_local_closure(Matter_IM_send_enqueued, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[13]) { /* constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_const_int(0),
/* K1 */ be_nested_str_weak(send_queue),
/* K2 */ be_nested_str_weak(finish),
@ -2271,9 +2238,8 @@ be_local_closure(Matter_IM_send_enqueued, /* name */
/* K7 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D),
/* K8 */ be_nested_str_weak(resp),
/* K9 */ be_nested_str_weak(exchange_id),
/* K10 */ be_const_int(3),
/* K11 */ be_nested_str_weak(remove),
/* K12 */ be_const_int(1),
/* K10 */ be_nested_str_weak(remove),
/* K11 */ be_const_int(1),
}),
be_str_weak(send_enqueued),
&be_const_str_solidified,
@ -2302,14 +2268,14 @@ be_local_closure(Matter_IM_send_enqueued, /* name */
0x881C0F09, // 0015 GETMBR R7 R7 K9
0x7C180200, // 0016 CALL R6 1
0x001A0E06, // 0017 ADD R6 K7 R6
0x581C000A, // 0018 LDCONST R7 K10
0x541E0003, // 0018 LDINT R7 4
0x7C100600, // 0019 CALL R4 3
0x88100101, // 001A GETMBR R4 R0 K1
0x8C10090B, // 001B GETMET R4 R4 K11
0x8C10090A, // 001B GETMET R4 R4 K10
0x5C180400, // 001C MOVE R6 R2
0x7C100400, // 001D CALL R4 2
0x70020000, // 001E JMP #0020
0x0008050C, // 001F ADD R2 R2 K12
0x0008050B, // 001F ADD R2 R2 K11
0x7001FFDF, // 0020 JMP #0001
0x80000000, // 0021 RET 0
})
@ -2343,7 +2309,7 @@ be_local_closure(Matter_IM_process_timed_request, /* name */
/* K8 */ be_nested_str_weak(session),
/* K9 */ be_nested_str_weak(local_session_id),
/* K10 */ be_nested_str_weak(timeout),
/* K11 */ be_const_int(2),
/* K11 */ be_const_int(3),
/* K12 */ be_nested_str_weak(send_status),
/* K13 */ be_nested_str_weak(SUCCESS),
}),
@ -2385,7 +2351,7 @@ be_local_closure(Matter_IM_process_timed_request, /* name */
********************************************************************/
be_local_closure(Matter_IM_report_data, /* name */
be_nested_proto(
9, /* nstack */
7, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@ -2393,19 +2359,15 @@ be_local_closure(Matter_IM_report_data, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(ReportDataMessage),
/* K3 */ be_nested_str_weak(from_TLV),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(log),
/* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20ReportDataMessage_X3D),
/* K7 */ be_const_int(2),
}),
be_str_weak(report_data),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
( &(const binstruction[ 9]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x8C100902, // 0002 GETMET R4 R4 K2
@ -2413,16 +2375,8 @@ be_local_closure(Matter_IM_report_data, /* name */
0x8C100903, // 0004 GETMET R4 R4 K3
0x5C180400, // 0005 MOVE R6 R2
0x7C100400, // 0006 CALL R4 2
0xB8160800, // 0007 GETNGBL R5 K4
0x8C140B05, // 0008 GETMET R5 R5 K5
0x601C0008, // 0009 GETGBL R7 G8
0x5C200800, // 000A MOVE R8 R4
0x7C1C0200, // 000B CALL R7 1
0x001E0C07, // 000C ADD R7 K6 R7
0x58200007, // 000D LDCONST R8 K7
0x7C140600, // 000E CALL R5 3
0x50140000, // 000F LDBOOL R5 0 0
0x80040A00, // 0010 RET 1 R5
0x50140000, // 0007 LDBOOL R5 0 0
0x80040A00, // 0008 RET 1 R5
})
)
);
@ -2434,7 +2388,7 @@ be_local_closure(Matter_IM_report_data, /* name */
********************************************************************/
be_local_closure(Matter_IM_process_invoke_response, /* name */
be_nested_proto(
9, /* nstack */
7, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@ -2442,19 +2396,15 @@ be_local_closure(Matter_IM_process_invoke_response, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(InvokeResponseMessage),
/* K3 */ be_nested_str_weak(from_TLV),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(log),
/* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20InvokeResponseMessage_X3D),
/* K7 */ be_const_int(2),
}),
be_str_weak(process_invoke_response),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
( &(const binstruction[ 9]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x8C100902, // 0002 GETMET R4 R4 K2
@ -2462,16 +2412,8 @@ be_local_closure(Matter_IM_process_invoke_response, /* name */
0x8C100903, // 0004 GETMET R4 R4 K3
0x5C180400, // 0005 MOVE R6 R2
0x7C100400, // 0006 CALL R4 2
0xB8160800, // 0007 GETNGBL R5 K4
0x8C140B05, // 0008 GETMET R5 R5 K5
0x601C0008, // 0009 GETGBL R7 G8
0x5C200800, // 000A MOVE R8 R4
0x7C1C0200, // 000B CALL R7 1
0x001E0C07, // 000C ADD R7 K6 R7
0x58200007, // 000D LDCONST R8 K7
0x7C140600, // 000E CALL R5 3
0x50140000, // 000F LDBOOL R5 0 0
0x80040A00, // 0010 RET 1 R5
0x50140000, // 0007 LDBOOL R5 0 0
0x80040A00, // 0008 RET 1 R5
})
)
);
@ -2539,7 +2481,7 @@ be_local_closure(Matter_IM_send_subscribe_heartbeat, /* name */
/* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25i),
/* K6 */ be_nested_str_weak(local_session_id),
/* K7 */ be_nested_str_weak(subscription_id),
/* K8 */ be_const_int(2),
/* K8 */ be_const_int(3),
/* K9 */ be_nested_str_weak(is_keep_alive),
/* K10 */ be_nested_str_weak(matter),
/* K11 */ be_nested_str_weak(ReportDataMessage),

View File

@ -43,7 +43,7 @@ be_local_closure(Matter_IM_Message_send_im, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[21]) { /* constants */
( &(const bvalue[20]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(ready),
/* K2 */ be_nested_str_weak(resp),
@ -61,10 +61,9 @@ be_local_closure(Matter_IM_Message_send_im, /* name */
/* K14 */ be_nested_str_weak(message_counter),
/* K15 */ be_nested_str_weak(exchange_id),
/* K16 */ be_nested_str_weak(ack_message_counter),
/* K17 */ be_const_int(3),
/* K18 */ be_nested_str_weak(send_response_frame),
/* K19 */ be_nested_str_weak(last_counter),
/* K20 */ be_nested_str_weak(finish),
/* K17 */ be_nested_str_weak(send_response_frame),
/* K18 */ be_nested_str_weak(last_counter),
/* K19 */ be_nested_str_weak(finish),
}),
be_str_weak(send_im),
&be_const_str_solidified,
@ -94,15 +93,15 @@ be_local_closure(Matter_IM_Message_send_im, /* name */
0x882C070F, // 0016 GETMBR R11 R3 K15
0x88300710, // 0017 GETMBR R12 R3 K16
0x7C180C00, // 0018 CALL R6 6
0x581C0011, // 0019 LDCONST R7 K17
0x541E0003, // 0019 LDINT R7 4
0x7C100600, // 001A CALL R4 3
0x8C100312, // 001B GETMET R4 R1 K18
0x8C100311, // 001B GETMET R4 R1 K17
0x5C180600, // 001C MOVE R6 R3
0x7C100400, // 001D CALL R4 2
0x8810070E, // 001E GETMBR R4 R3 K14
0x90022604, // 001F SETMBR R0 K19 R4
0x90022404, // 001F SETMBR R0 K18 R4
0x50100200, // 0020 LDBOOL R4 1 0
0x90022804, // 0021 SETMBR R0 K20 R4
0x90022604, // 0021 SETMBR R0 K19 R4
0x80000000, // 0022 RET 0
})
)
@ -529,7 +528,7 @@ extern const bclass be_class_Matter_IM_ReportData;
********************************************************************/
be_local_closure(Matter_IM_ReportData_send_im, /* name */
be_nested_proto(
19, /* nstack */
13, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@ -537,7 +536,7 @@ be_local_closure(Matter_IM_ReportData_send_im, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[31]) { /* constants */
( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(ready),
/* K2 */ be_nested_str_weak(resp),
@ -547,32 +546,19 @@ be_local_closure(Matter_IM_ReportData_send_im, /* name */
/* K6 */ be_nested_str_weak(attribute_reports),
/* K7 */ be_const_int(2147483647),
/* K8 */ be_const_int(0),
/* K9 */ be_nested_str_weak(tasmota),
/* K10 */ be_nested_str_weak(log),
/* K11 */ be_nested_str_weak(format),
/* K12 */ be_nested_str_weak(MTR_X3A_X20_X2ERead_Attr_X20next_chunk_X20exch_X3D_X25i),
/* K13 */ be_nested_str_weak(get_exchangeid),
/* K14 */ be_const_int(3),
/* K15 */ be_nested_str_weak(MTR_X3A_X20_X2ERead_Attr_X20first_chunk_X20exch_X3D_X25i),
/* K16 */ be_nested_str_weak(to_TLV),
/* K17 */ be_nested_str_weak(tlv2raw),
/* K18 */ be_nested_str_weak(MAX_MESSAGE),
/* K19 */ be_nested_str_weak(encode_frame),
/* K20 */ be_nested_str_weak(encrypt),
/* K21 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
/* K22 */ be_nested_str_weak(session),
/* K23 */ be_nested_str_weak(local_session_id),
/* K24 */ be_nested_str_weak(message_counter),
/* K25 */ be_nested_str_weak(exchange_id),
/* K26 */ be_nested_str_weak(ack_message_counter),
/* K27 */ be_nested_str_weak(send_response_frame),
/* K28 */ be_nested_str_weak(last_counter),
/* K29 */ be_nested_str_weak(MTR_X3A_X20to_be_sent_later_X20size_X3D_X25i_X20exch_X3D_X25i),
/* K30 */ be_nested_str_weak(finish),
/* K9 */ be_nested_str_weak(to_TLV),
/* K10 */ be_nested_str_weak(tlv2raw),
/* K11 */ be_nested_str_weak(MAX_MESSAGE),
/* K12 */ be_nested_str_weak(encode_frame),
/* K13 */ be_nested_str_weak(encrypt),
/* K14 */ be_nested_str_weak(send_response_frame),
/* K15 */ be_nested_str_weak(last_counter),
/* K16 */ be_nested_str_weak(message_counter),
/* K17 */ be_nested_str_weak(finish),
}),
be_str_weak(send_im),
&be_const_str_solidified,
( &(const binstruction[109]) { /* code */
( &(const binstruction[68]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x880C0101, // 0001 GETMBR R3 R0 K1
0x740E0001, // 0002 JMPT R3 #0005
@ -603,85 +589,44 @@ be_local_closure(Matter_IM_ReportData_send_im, /* name */
0x70020001, // 001B JMP #001E
0x50200000, // 001C LDBOOL R8 0 0
0x90120808, // 001D SETMBR R4 K4 R8
0x78160008, // 001E JMPF R5 #0028
0xB8221200, // 001F GETNGBL R8 K9
0x8C20110A, // 0020 GETMET R8 R8 K10
0x8C28050B, // 0021 GETMET R10 R2 K11
0x5830000C, // 0022 LDCONST R12 K12
0x8C34010D, // 0023 GETMET R13 R0 K13
0x7C340200, // 0024 CALL R13 1
0x7C280600, // 0025 CALL R10 3
0x582C000E, // 0026 LDCONST R11 K14
0x7C200600, // 0027 CALL R8 3
0x88200904, // 0028 GETMBR R8 R4 K4
0x7822000A, // 0029 JMPF R8 #0035
0x5C200A00, // 002A MOVE R8 R5
0x74220008, // 002B JMPT R8 #0035
0xB8221200, // 002C GETNGBL R8 K9
0x8C20110A, // 002D GETMET R8 R8 K10
0x8C28050B, // 002E GETMET R10 R2 K11
0x5830000F, // 002F LDCONST R12 K15
0x8C34010D, // 0030 GETMET R13 R0 K13
0x7C340200, // 0031 CALL R13 1
0x7C280600, // 0032 CALL R10 3
0x582C000E, // 0033 LDCONST R11 K14
0x7C200600, // 0034 CALL R8 3
0x88200103, // 0035 GETMBR R8 R0 K3
0x8C201110, // 0036 GETMET R8 R8 K16
0x7C200200, // 0037 CALL R8 1
0x8C241111, // 0038 GETMET R9 R8 K17
0x602C0015, // 0039 GETGBL R11 G21
0x88300112, // 003A GETMBR R12 R0 K18
0x7C2C0200, // 003B CALL R11 1
0x7C240400, // 003C CALL R9 2
0x8C280713, // 003D GETMET R10 R3 K19
0x5C301200, // 003E MOVE R12 R9
0x7C280400, // 003F CALL R10 2
0x8C280714, // 0040 GETMET R10 R3 K20
0x7C280200, // 0041 CALL R10 1
0xB82A1200, // 0042 GETNGBL R10 K9
0x8C28150A, // 0043 GETMET R10 R10 K10
0x8C30050B, // 0044 GETMET R12 R2 K11
0x58380015, // 0045 LDCONST R14 K21
0x883C0716, // 0046 GETMBR R15 R3 K22
0x883C1F17, // 0047 GETMBR R15 R15 K23
0x88400718, // 0048 GETMBR R16 R3 K24
0x88440719, // 0049 GETMBR R17 R3 K25
0x8848071A, // 004A GETMBR R18 R3 K26
0x7C300C00, // 004B CALL R12 6
0x5834000E, // 004C LDCONST R13 K14
0x7C280600, // 004D CALL R10 3
0x8C28031B, // 004E GETMET R10 R1 K27
0x5C300600, // 004F MOVE R12 R3
0x7C280400, // 0050 CALL R10 2
0x88280718, // 0051 GETMBR R10 R3 K24
0x9002380A, // 0052 SETMBR R0 K28 R10
0x4C280000, // 0053 LDNIL R10
0x20280E0A, // 0054 NE R10 R7 R10
0x782A0013, // 0055 JMPF R10 #006A
0x6028000C, // 0056 GETGBL R10 G12
0x5C2C0E00, // 0057 MOVE R11 R7
0x7C280200, // 0058 CALL R10 1
0x24281508, // 0059 GT R10 R10 K8
0x782A000E, // 005A JMPF R10 #006A
0x90120C07, // 005B SETMBR R4 K6 R7
0xB82A1200, // 005C GETNGBL R10 K9
0x8C28150A, // 005D GETMET R10 R10 K10
0x8C30050B, // 005E GETMET R12 R2 K11
0x5838001D, // 005F LDCONST R14 K29
0x603C000C, // 0060 GETGBL R15 G12
0x88400906, // 0061 GETMBR R16 R4 K6
0x7C3C0200, // 0062 CALL R15 1
0x88400719, // 0063 GETMBR R16 R3 K25
0x7C300800, // 0064 CALL R12 4
0x5834000E, // 0065 LDCONST R13 K14
0x7C280600, // 0066 CALL R10 3
0x50280000, // 0067 LDBOOL R10 0 0
0x9002020A, // 0068 SETMBR R0 K1 R10
0x70020001, // 0069 JMP #006C
0x50280200, // 006A LDBOOL R10 1 0
0x90023C0A, // 006B SETMBR R0 K30 R10
0x80000000, // 006C RET 0
0x7815FFFF, // 001E JMPF R5 #001F
0x88200904, // 001F GETMBR R8 R4 K4
0x78220001, // 0020 JMPF R8 #0023
0x5C200A00, // 0021 MOVE R8 R5
0x7421FFFF, // 0022 JMPT R8 #0023
0x88200103, // 0023 GETMBR R8 R0 K3
0x8C201109, // 0024 GETMET R8 R8 K9
0x7C200200, // 0025 CALL R8 1
0x8C24110A, // 0026 GETMET R9 R8 K10
0x602C0015, // 0027 GETGBL R11 G21
0x8830010B, // 0028 GETMBR R12 R0 K11
0x7C2C0200, // 0029 CALL R11 1
0x7C240400, // 002A CALL R9 2
0x8C28070C, // 002B GETMET R10 R3 K12
0x5C301200, // 002C MOVE R12 R9
0x7C280400, // 002D CALL R10 2
0x8C28070D, // 002E GETMET R10 R3 K13
0x7C280200, // 002F CALL R10 1
0x8C28030E, // 0030 GETMET R10 R1 K14
0x5C300600, // 0031 MOVE R12 R3
0x7C280400, // 0032 CALL R10 2
0x88280710, // 0033 GETMBR R10 R3 K16
0x90021E0A, // 0034 SETMBR R0 K15 R10
0x4C280000, // 0035 LDNIL R10
0x20280E0A, // 0036 NE R10 R7 R10
0x782A0008, // 0037 JMPF R10 #0041
0x6028000C, // 0038 GETGBL R10 G12
0x5C2C0E00, // 0039 MOVE R11 R7
0x7C280200, // 003A CALL R10 1
0x24281508, // 003B GT R10 R10 K8
0x782A0003, // 003C JMPF R10 #0041
0x90120C07, // 003D SETMBR R4 K6 R7
0x50280000, // 003E LDBOOL R10 0 0
0x9002020A, // 003F SETMBR R0 K1 R10
0x70020001, // 0040 JMP #0043
0x50280200, // 0041 LDBOOL R10 1 0
0x9002220A, // 0042 SETMBR R0 K17 R10
0x80000000, // 0043 RET 0
})
)
);
@ -811,7 +756,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[23]) { /* constants */
( &(const bvalue[22]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(ready),
/* K2 */ be_nested_str_weak(data),
@ -832,9 +777,8 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
/* K17 */ be_nested_str_weak(local_session_id),
/* K18 */ be_nested_str_weak(ack_message_counter),
/* K19 */ be_nested_str_weak(message_counter),
/* K20 */ be_const_int(3),
/* K21 */ be_nested_str_weak(send_response_frame),
/* K22 */ be_nested_str_weak(last_counter),
/* K20 */ be_nested_str_weak(send_response_frame),
/* K21 */ be_nested_str_weak(last_counter),
}),
be_str_weak(send_im),
&be_const_str_solidified,
@ -885,13 +829,13 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
0x88280712, // 002B GETMBR R10 R3 K18
0x882C0713, // 002C GETMBR R11 R3 K19
0x7C180A00, // 002D CALL R6 5
0x581C0014, // 002E LDCONST R7 K20
0x541E0003, // 002E LDINT R7 4
0x7C100600, // 002F CALL R4 3
0x8C100315, // 0030 GETMET R4 R1 K21
0x8C100314, // 0030 GETMET R4 R1 K20
0x5C180600, // 0031 MOVE R6 R3
0x7C100400, // 0032 CALL R4 2
0x88100713, // 0033 GETMBR R4 R3 K19
0x90022C04, // 0034 SETMBR R0 K22 R4
0x90022A04, // 0034 SETMBR R0 K21 R4
0x50100200, // 0035 LDBOOL R4 1 0
0x90020E04, // 0036 SETMBR R0 K7 R4
0x7002000C, // 0037 JMP #0045
@ -1419,7 +1363,7 @@ be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
/* K6 */ be_nested_str_weak(local_session_id),
/* K7 */ be_nested_str_weak(sub),
/* K8 */ be_nested_str_weak(subscription_id),
/* K9 */ be_const_int(2),
/* K9 */ be_const_int(3),
/* K10 */ be_nested_str_weak(status_ok_received),
}),
be_str_weak(status_ok_received),

View File

@ -190,7 +190,7 @@ be_local_closure(Matter_IM_Subscription_remove_self, /* name */
/* K1 */ be_nested_str_weak(log),
/* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D),
/* K3 */ be_nested_str_weak(subscription_id),
/* K4 */ be_const_int(2),
/* K4 */ be_const_int(3),
/* K5 */ be_nested_str_weak(subs_shop),
/* K6 */ be_nested_str_weak(remove_sub),
}),
@ -347,7 +347,7 @@ be_local_closure(Matter_IM_Subscription_re_arm, /* name */
/* K12 */ be_nested_str_weak(format),
/* K13 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i),
/* K14 */ be_nested_str_weak(subscription_id),
/* K15 */ be_const_int(2),
/* K15 */ be_const_int(3),
}),
be_str_weak(re_arm),
&be_const_str_solidified,

View File

@ -309,7 +309,7 @@ be_local_closure(Matter_Frame_encrypt, /* name */
********************************************************************/
be_local_closure(Matter_Frame_debug, /* name */
be_nested_proto(
8, /* nstack */
6, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@ -317,20 +317,16 @@ be_local_closure(Matter_Frame_debug, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(Frame),
/* K2 */ be_nested_str_weak(message_handler),
/* K3 */ be_nested_str_weak(decode_header),
/* K4 */ be_nested_str_weak(decode_payload),
/* K5 */ be_nested_str_weak(tasmota),
/* K6 */ be_nested_str_weak(log),
/* K7 */ be_nested_str_weak(MTR_X3A_X20sending_X20decode_X3A_X20),
/* K8 */ be_nested_str_weak(inspect),
}),
be_str_weak(debug),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
( &(const binstruction[10]) { /* code */
0x80000400, // 0000 RET 0
0xB80A0000, // 0001 GETNGBL R2 K0
0x8C080501, // 0002 GETMET R2 R2 K1
@ -341,15 +337,6 @@ be_local_closure(Matter_Frame_debug, /* name */
0x7C0C0200, // 0007 CALL R3 1
0x8C0C0504, // 0008 GETMET R3 R2 K4
0x7C0C0200, // 0009 CALL R3 1
0xB80E0A00, // 000A GETNGBL R3 K5
0x8C0C0706, // 000B GETMET R3 R3 K6
0xB8160000, // 000C GETNGBL R5 K0
0x8C140B08, // 000D GETMET R5 R5 K8
0x5C1C0400, // 000E MOVE R7 R2
0x7C140400, // 000F CALL R5 2
0x00160E05, // 0010 ADD R5 K7 R5
0x541A0003, // 0011 LDINT R6 4
0x7C0C0600, // 0012 CALL R3 3
})
)
);
@ -493,7 +480,7 @@ be_local_closure(Matter_Frame_build_response, /* name */
/* K28 */ be_nested_str_weak(tasmota),
/* K29 */ be_nested_str_weak(log),
/* K30 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s),
/* K31 */ be_const_int(2),
/* K31 */ be_const_int(3),
}),
be_str_weak(build_response),
&be_const_str_solidified,
@ -1171,7 +1158,7 @@ be_local_closure(Matter_Frame_decrypt, /* name */
0xB8320C00, // 0061 GETNGBL R12 K6
0x8C301907, // 0062 GETMET R12 R12 K7
0x5838001A, // 0063 LDCONST R14 K26
0x583C0009, // 0064 LDCONST R15 K9
0x583C0012, // 0064 LDCONST R15 K18
0x7C300600, // 0065 CALL R12 3
0x4C300000, // 0066 LDNIL R12
0x80041800, // 0067 RET 1 R12

View File

@ -50,7 +50,7 @@ be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[17]) { /* constants */
( &(const bvalue[16]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(x_flag_r),
/* K2 */ be_nested_str_weak(build_standalone_ack),
@ -66,8 +66,7 @@ be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */
/* K12 */ be_nested_str_weak(message_counter),
/* K13 */ be_nested_str_weak(_X7Breliable_X7D),
/* K14 */ be_nested_str_weak(),
/* K15 */ be_const_int(3),
/* K16 */ be_nested_str_weak(send_response_frame),
/* K15 */ be_nested_str_weak(send_response_frame),
}),
be_str_weak(send_encrypted_ack),
&be_const_str_solidified,
@ -95,9 +94,9 @@ be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */
0x70020000, // 0014 JMP #0016
0x5834000E, // 0015 LDCONST R13 K14
0x7C1C0C00, // 0016 CALL R7 6
0x5820000F, // 0017 LDCONST R8 K15
0x54220003, // 0017 LDINT R8 4
0x7C140600, // 0018 CALL R5 3
0x8C140110, // 0019 GETMET R5 R0 K16
0x8C14010F, // 0019 GETMET R5 R0 K15
0x5C1C0800, // 001A MOVE R7 R4
0x7C140400, // 001B CALL R5 2
0x80000000, // 001C RET 0
@ -154,7 +153,7 @@ be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[16]) { /* constants */
( &(const bvalue[15]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(x_flag_r),
/* K2 */ be_nested_str_weak(build_standalone_ack),
@ -169,8 +168,7 @@ be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */
/* K11 */ be_nested_str_weak(message_counter),
/* K12 */ be_nested_str_weak(_X7Breliable_X7D),
/* K13 */ be_nested_str_weak(),
/* K14 */ be_const_int(3),
/* K15 */ be_nested_str_weak(send_response_frame),
/* K14 */ be_nested_str_weak(send_response_frame),
}),
be_str_weak(send_simple_ack),
&be_const_str_solidified,
@ -196,9 +194,9 @@ be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */
0x70020000, // 0012 JMP #0014
0x5834000D, // 0013 LDCONST R13 K13
0x7C1C0C00, // 0014 CALL R7 6
0x5820000E, // 0015 LDCONST R8 K14
0x54220003, // 0015 LDINT R8 4
0x7C140600, // 0016 CALL R5 3
0x8C14010F, // 0017 GETMET R5 R0 K15
0x8C14010E, // 0017 GETMET R5 R0 K14
0x5C1C0800, // 0018 MOVE R7 R4
0x7C140400, // 0019 CALL R5 2
0x80000000, // 001A RET 0
@ -213,7 +211,7 @@ be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */
********************************************************************/
be_local_closure(Matter_MessageHandler_msg_received, /* name */
be_nested_proto(
24, /* nstack */
21, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
@ -221,89 +219,82 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[75]) { /* constants */
( &(const bvalue[68]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(Frame),
/* K3 */ be_nested_str_weak(decode_header),
/* K4 */ be_nested_str_weak(sec_p),
/* K5 */ be_nested_str_weak(tasmota),
/* K6 */ be_nested_str_weak(log),
/* K7 */ be_nested_str_weak(MTR_X3A_X20CONTROL_X20MESSAGE_X3D),
/* K8 */ be_nested_str_weak(inspect),
/* K9 */ be_nested_str_weak(device),
/* K10 */ be_nested_str_weak(sessions),
/* K11 */ be_nested_str_weak(find_session_source_id_unsecure),
/* K12 */ be_nested_str_weak(source_node_id),
/* K13 */ be_nested_str_weak(MTR_X3A_X20find_X20session_X20by_X20source_node_id_X20_X3D_X20),
/* K14 */ be_nested_str_weak(_X20session_id_X20_X3D_X20),
/* K15 */ be_nested_str_weak(local_session_id),
/* K16 */ be_nested_str_weak(control_message),
/* K17 */ be_nested_str_weak(process_incoming_control_message),
/* K18 */ be_const_int(0),
/* K19 */ be_nested_str_weak(sec_sesstype),
/* K20 */ be_nested_str_weak(_ip),
/* K21 */ be_nested_str_weak(_port),
/* K22 */ be_nested_str_weak(_message_handler),
/* K23 */ be_nested_str_weak(session),
/* K24 */ be_nested_str_weak(_counter_insecure_rcv),
/* K25 */ be_nested_str_weak(validate),
/* K26 */ be_nested_str_weak(message_counter),
/* K27 */ be_nested_str_weak(format),
/* K28 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i),
/* K29 */ be_nested_str_weak(val),
/* K30 */ be_const_int(3),
/* K31 */ be_nested_str_weak(send_simple_ack),
/* K32 */ be_nested_str_weak(decode_payload),
/* K33 */ be_nested_str_weak(received_ack),
/* K34 */ be_nested_str_weak(opcode),
/* K35 */ be_nested_str_weak(get_opcode_name),
/* K36 */ be_nested_str_weak(0x_X2502X),
/* K37 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i),
/* K38 */ be_nested_str_weak(exchange_id),
/* K39 */ be_const_int(2),
/* K40 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
/* K41 */ be_nested_str_weak(x_flag_r),
/* K42 */ be_nested_str_weak(_X7Breliable_X7D_X20),
/* K43 */ be_nested_str_weak(),
/* K44 */ be_nested_str_weak(ack_message_counter),
/* K45 */ be_nested_str_weak(commissioning),
/* K46 */ be_nested_str_weak(process_incoming),
/* K47 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i),
/* K48 */ be_nested_str_weak(get_session_by_local_session_id),
/* K49 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D),
/* K50 */ be_nested_str_weak(counter_rcv_validate),
/* K51 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20),
/* K52 */ be_nested_str_weak(_X20counter_X3D),
/* K53 */ be_nested_str_weak(counter_rcv),
/* K54 */ be_nested_str_weak(send_encrypted_ack),
/* K55 */ be_nested_str_weak(decrypt),
/* K56 */ be_nested_str_weak(raw),
/* K57 */ be_nested_str_weak(payload_idx),
/* K58 */ be_const_int(1),
/* K59 */ be_nested_str_weak(MTR_X3A_X20idx_X3D_X25i_X20clear_X3D_X25s),
/* K60 */ be_nested_str_weak(tohex),
/* K61 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A),
/* K62 */ be_nested_str_weak(protocol_id),
/* K63 */ be_nested_str_weak(_X20opcode_X3D),
/* K64 */ be_nested_str_weak(_X20exchange_id_X3D),
/* K65 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20_X5B_X2502X_X2F_X2502X_X5D_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
/* K66 */ be_nested_str_weak(im),
/* K67 */ be_nested_str_weak(process_incoming_ack),
/* K68 */ be_nested_str_weak(send_enqueued),
/* K69 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
/* K70 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
/* K71 */ be_nested_str_weak(_X3B),
/* K72 */ be_nested_str_weak(_debug_present),
/* K73 */ be_nested_str_weak(debug),
/* K74 */ be_nested_str_weak(traceback),
/* K5 */ be_nested_str_weak(device),
/* K6 */ be_nested_str_weak(sessions),
/* K7 */ be_nested_str_weak(find_session_source_id_unsecure),
/* K8 */ be_nested_str_weak(source_node_id),
/* K9 */ be_nested_str_weak(control_message),
/* K10 */ be_nested_str_weak(process_incoming_control_message),
/* K11 */ be_nested_str_weak(local_session_id),
/* K12 */ be_const_int(0),
/* K13 */ be_nested_str_weak(sec_sesstype),
/* K14 */ be_nested_str_weak(_ip),
/* K15 */ be_nested_str_weak(_port),
/* K16 */ be_nested_str_weak(_message_handler),
/* K17 */ be_nested_str_weak(session),
/* K18 */ be_nested_str_weak(_counter_insecure_rcv),
/* K19 */ be_nested_str_weak(validate),
/* K20 */ be_nested_str_weak(message_counter),
/* K21 */ be_nested_str_weak(tasmota),
/* K22 */ be_nested_str_weak(log),
/* K23 */ be_nested_str_weak(format),
/* K24 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i),
/* K25 */ be_nested_str_weak(val),
/* K26 */ be_nested_str_weak(send_simple_ack),
/* K27 */ be_nested_str_weak(decode_payload),
/* K28 */ be_nested_str_weak(received_ack),
/* K29 */ be_nested_str_weak(opcode),
/* K30 */ be_nested_str_weak(get_opcode_name),
/* K31 */ be_nested_str_weak(0x_X2502X),
/* K32 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i),
/* K33 */ be_nested_str_weak(exchange_id),
/* K34 */ be_const_int(3),
/* K35 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
/* K36 */ be_nested_str_weak(x_flag_r),
/* K37 */ be_nested_str_weak(_X7Breliable_X7D_X20),
/* K38 */ be_nested_str_weak(),
/* K39 */ be_nested_str_weak(ack_message_counter),
/* K40 */ be_nested_str_weak(commissioning),
/* K41 */ be_nested_str_weak(process_incoming),
/* K42 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i),
/* K43 */ be_nested_str_weak(get_session_by_local_session_id),
/* K44 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D),
/* K45 */ be_nested_str_weak(counter_rcv_validate),
/* K46 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20),
/* K47 */ be_nested_str_weak(_X20counter_X3D),
/* K48 */ be_nested_str_weak(counter_rcv),
/* K49 */ be_nested_str_weak(send_encrypted_ack),
/* K50 */ be_nested_str_weak(decrypt),
/* K51 */ be_nested_str_weak(raw),
/* K52 */ be_nested_str_weak(payload_idx),
/* K53 */ be_const_int(1),
/* K54 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A),
/* K55 */ be_nested_str_weak(protocol_id),
/* K56 */ be_nested_str_weak(_X20opcode_X3D),
/* K57 */ be_nested_str_weak(_X20exchange_id_X3D),
/* K58 */ be_nested_str_weak(im),
/* K59 */ be_nested_str_weak(process_incoming_ack),
/* K60 */ be_nested_str_weak(send_enqueued),
/* K61 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
/* K62 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
/* K63 */ be_nested_str_weak(_X3B),
/* K64 */ be_const_int(2),
/* K65 */ be_nested_str_weak(_debug_present),
/* K66 */ be_nested_str_weak(debug),
/* K67 */ be_nested_str_weak(traceback),
}),
be_str_weak(msg_received),
&be_const_str_solidified,
( &(const binstruction[391]) { /* code */
( &(const binstruction[324]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0x50140000, // 0001 LDBOOL R5 0 0
0xA802016A, // 0002 EXBLK 0 #016E
0xA8020126, // 0002 EXBLK 0 #012A
0xB81A0200, // 0003 GETNGBL R6 K1
0x8C180D02, // 0004 GETMET R6 R6 K2
0x5C200000, // 0005 MOVE R8 R0
@ -319,379 +310,312 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */
0xA8040001, // 000F EXBLK 1 1
0x80041000, // 0010 RET 1 R8
0x88200D04, // 0011 GETMBR R8 R6 K4
0x78220022, // 0012 JMPF R8 #0036
0xB8220A00, // 0013 GETNGBL R8 K5
0x8C201106, // 0014 GETMET R8 R8 K6
0xB82A0200, // 0015 GETNGBL R10 K1
0x8C281508, // 0016 GETMET R10 R10 K8
0x5C300C00, // 0017 MOVE R12 R6
0x7C280400, // 0018 CALL R10 2
0x002A0E0A, // 0019 ADD R10 K7 R10
0x542E0003, // 001A LDINT R11 4
0x7C200600, // 001B CALL R8 3
0x88200109, // 001C GETMBR R8 R0 K9
0x8820110A, // 001D GETMBR R8 R8 K10
0x8C20110B, // 001E GETMET R8 R8 K11
0x88280D0C, // 001F GETMBR R10 R6 K12
0x542E0059, // 0020 LDINT R11 90
0x7C200600, // 0021 CALL R8 3
0xB8260A00, // 0022 GETNGBL R9 K5
0x8C241306, // 0023 GETMET R9 R9 K6
0x602C0008, // 0024 GETGBL R11 G8
0x88300D0C, // 0025 GETMBR R12 R6 K12
0x7C2C0200, // 0026 CALL R11 1
0x002E1A0B, // 0027 ADD R11 K13 R11
0x002C170E, // 0028 ADD R11 R11 K14
0x60300008, // 0029 GETGBL R12 G8
0x8834110F, // 002A GETMBR R13 R8 K15
0x7C300200, // 002B CALL R12 1
0x002C160C, // 002C ADD R11 R11 R12
0x54320003, // 002D LDINT R12 4
0x7C240600, // 002E CALL R9 3
0x88240110, // 002F GETMBR R9 R0 K16
0x8C241311, // 0030 GETMET R9 R9 K17
0x5C2C0C00, // 0031 MOVE R11 R6
0x7C240400, // 0032 CALL R9 2
0xA8040001, // 0033 EXBLK 1 1
0x80041200, // 0034 RET 1 R9
0x70020133, // 0035 JMP #016A
0x88200D0F, // 0036 GETMBR R8 R6 K15
0x1C201112, // 0037 EQ R8 R8 K18
0x7822007D, // 0038 JMPF R8 #00B7
0x88200D13, // 0039 GETMBR R8 R6 K19
0x1C201112, // 003A EQ R8 R8 K18
0x7822007A, // 003B JMPF R8 #00B7
0x88200109, // 003C GETMBR R8 R0 K9
0x8820110A, // 003D GETMBR R8 R8 K10
0x8C20110B, // 003E GETMET R8 R8 K11
0x88280D0C, // 003F GETMBR R10 R6 K12
0x542E0059, // 0040 LDINT R11 90
0x7C200600, // 0041 CALL R8 3
0xB8260A00, // 0042 GETNGBL R9 K5
0x8C241306, // 0043 GETMET R9 R9 K6
0x602C0008, // 0044 GETGBL R11 G8
0x88300D0C, // 0045 GETMBR R12 R6 K12
0x7C2C0200, // 0046 CALL R11 1
0x002E1A0B, // 0047 ADD R11 K13 R11
0x002C170E, // 0048 ADD R11 R11 K14
0x60300008, // 0049 GETGBL R12 G8
0x8834110F, // 004A GETMBR R13 R8 K15
0x7C300200, // 004B CALL R12 1
0x002C160C, // 004C ADD R11 R11 R12
0x54320003, // 004D LDINT R12 4
0x7C240600, // 004E CALL R9 3
0x780A0000, // 004F JMPF R2 #0051
0x90222802, // 0050 SETMBR R8 K20 R2
0x780E0000, // 0051 JMPF R3 #0053
0x90222A03, // 0052 SETMBR R8 K21 R3
0x90222C00, // 0053 SETMBR R8 K22 R0
0x901A2E08, // 0054 SETMBR R6 K23 R8
0x88241118, // 0055 GETMBR R9 R8 K24
0x8C241319, // 0056 GETMET R9 R9 K25
0x882C0D1A, // 0057 GETMBR R11 R6 K26
0x50300000, // 0058 LDBOOL R12 0 0
0x7C240600, // 0059 CALL R9 3
0x74260011, // 005A JMPT R9 #006D
0xB8260A00, // 005B GETNGBL R9 K5
0x8C241306, // 005C GETMET R9 R9 K6
0x8C2C091B, // 005D GETMET R11 R4 K27
0x5834001C, // 005E LDCONST R13 K28
0x88380D1A, // 005F GETMBR R14 R6 K26
0x883C1118, // 0060 GETMBR R15 R8 K24
0x8C3C1F1D, // 0061 GETMET R15 R15 K29
0x7C3C0200, // 0062 CALL R15 1
0x7C2C0800, // 0063 CALL R11 4
0x5830001E, // 0064 LDCONST R12 K30
0x7C240600, // 0065 CALL R9 3
0x8C24011F, // 0066 GETMET R9 R0 K31
0x5C2C0C00, // 0067 MOVE R11 R6
0x50300000, // 0068 LDBOOL R12 0 0
0x7C240600, // 0069 CALL R9 3
0x50240000, // 006A LDBOOL R9 0 0
0xA8040001, // 006B EXBLK 1 1
0x80041200, // 006C RET 1 R9
0x8C240D20, // 006D GETMET R9 R6 K32
0x7C240200, // 006E CALL R9 1
0x74260002, // 006F JMPT R9 #0073
0x50240000, // 0070 LDBOOL R9 0 0
0xA8040001, // 0071 EXBLK 1 1
0x80041200, // 0072 RET 1 R9
0x88240109, // 0073 GETMBR R9 R0 K9
0x8C241321, // 0074 GETMET R9 R9 K33
0x5C2C0C00, // 0075 MOVE R11 R6
0x7C240400, // 0076 CALL R9 2
0x88240D22, // 0077 GETMBR R9 R6 K34
0x542A000F, // 0078 LDINT R10 16
0x2024120A, // 0079 NE R9 R9 R10
0x78260018, // 007A JMPF R9 #0094
0xB8260200, // 007B GETNGBL R9 K1
0x8C241323, // 007C GETMET R9 R9 K35
0x882C0D22, // 007D GETMBR R11 R6 K34
0x7C240400, // 007E CALL R9 2
0x5C281200, // 007F MOVE R10 R9
0x742A0004, // 0080 JMPT R10 #0086
0x8C28091B, // 0081 GETMET R10 R4 K27
0x58300024, // 0082 LDCONST R12 K36
0x88340D22, // 0083 GETMBR R13 R6 K34
0x7C280600, // 0084 CALL R10 3
0x5C241400, // 0085 MOVE R9 R10
0xB82A0A00, // 0086 GETNGBL R10 K5
0x8C281506, // 0087 GETMET R10 R10 K6
0x8C30091B, // 0088 GETMET R12 R4 K27
0x58380025, // 0089 LDCONST R14 K37
0x883C110F, // 008A GETMBR R15 R8 K15
0x5C401200, // 008B MOVE R16 R9
0x88440D1A, // 008C GETMBR R17 R6 K26
0x88480D26, // 008D GETMBR R18 R6 K38
0x5C4C0400, // 008E MOVE R19 R2
0x5C500600, // 008F MOVE R20 R3
0x7C301000, // 0090 CALL R12 8
0x58340027, // 0091 LDCONST R13 K39
0x7C280600, // 0092 CALL R10 3
0x70020013, // 0093 JMP #00A8
0xB8260A00, // 0094 GETNGBL R9 K5
0x8C241306, // 0095 GETMET R9 R9 K6
0x8C2C091B, // 0096 GETMET R11 R4 K27
0x58340028, // 0097 LDCONST R13 K40
0x8838110F, // 0098 GETMBR R14 R8 K15
0x883C0D1A, // 0099 GETMBR R15 R6 K26
0x88400D29, // 009A GETMBR R16 R6 K41
0x78420001, // 009B JMPF R16 #009E
0x5840002A, // 009C LDCONST R16 K42
0x70020000, // 009D JMP #009F
0x5840002B, // 009E LDCONST R16 K43
0x88440D26, // 009F GETMBR R17 R6 K38
0x60480008, // 00A0 GETGBL R18 G8
0x884C0D2C, // 00A1 GETMBR R19 R6 K44
0x7C480200, // 00A2 CALL R18 1
0x5C4C0400, // 00A3 MOVE R19 R2
0x5C500600, // 00A4 MOVE R20 R3
0x7C2C1200, // 00A5 CALL R11 9
0x5830001E, // 00A6 LDCONST R12 K30
0x7C240600, // 00A7 CALL R9 3
0x8824012D, // 00A8 GETMBR R9 R0 K45
0x8C24132E, // 00A9 GETMET R9 R9 K46
0x5C2C0C00, // 00AA MOVE R11 R6
0x7C240400, // 00AB CALL R9 2
0x5C141200, // 00AC MOVE R5 R9
0x5C240A00, // 00AD MOVE R9 R5
0x74260003, // 00AE JMPT R9 #00B3
0x8C24011F, // 00AF GETMET R9 R0 K31
0x5C2C0C00, // 00B0 MOVE R11 R6
0x50300000, // 00B1 LDBOOL R12 0 0
0x7C240600, // 00B2 CALL R9 3
0x50240200, // 00B3 LDBOOL R9 1 0
0xA8040001, // 00B4 EXBLK 1 1
0x80041200, // 00B5 RET 1 R9
0x700200B2, // 00B6 JMP #016A
0xB8220A00, // 00B7 GETNGBL R8 K5
0x8C201106, // 00B8 GETMET R8 R8 K6
0x8C28091B, // 00B9 GETMET R10 R4 K27
0x5830002F, // 00BA LDCONST R12 K47
0x88340D0F, // 00BB GETMBR R13 R6 K15
0x88380D1A, // 00BC GETMBR R14 R6 K26
0x7C280800, // 00BD CALL R10 4
0x582C001E, // 00BE LDCONST R11 K30
0x7C200600, // 00BF CALL R8 3
0x88200109, // 00C0 GETMBR R8 R0 K9
0x8820110A, // 00C1 GETMBR R8 R8 K10
0x8C201130, // 00C2 GETMET R8 R8 K48
0x88280D0F, // 00C3 GETMBR R10 R6 K15
0x7C200400, // 00C4 CALL R8 2
0x4C240000, // 00C5 LDNIL R9
0x1C241009, // 00C6 EQ R9 R8 R9
0x7826000A, // 00C7 JMPF R9 #00D3
0xB8260A00, // 00C8 GETNGBL R9 K5
0x8C241306, // 00C9 GETMET R9 R9 K6
0x602C0008, // 00CA GETGBL R11 G8
0x88300D0F, // 00CB GETMBR R12 R6 K15
0x7C2C0200, // 00CC CALL R11 1
0x002E620B, // 00CD ADD R11 K49 R11
0x58300027, // 00CE LDCONST R12 K39
0x7C240600, // 00CF CALL R9 3
0x50240000, // 00D0 LDBOOL R9 0 0
0xA8040001, // 00D1 EXBLK 1 1
0x80041200, // 00D2 RET 1 R9
0x780A0000, // 00D3 JMPF R2 #00D5
0x90222802, // 00D4 SETMBR R8 K20 R2
0x780E0000, // 00D5 JMPF R3 #00D7
0x90222A03, // 00D6 SETMBR R8 K21 R3
0x90222C00, // 00D7 SETMBR R8 K22 R0
0x901A2E08, // 00D8 SETMBR R6 K23 R8
0x8C241132, // 00D9 GETMET R9 R8 K50
0x882C0D1A, // 00DA GETMBR R11 R6 K26
0x50300200, // 00DB LDBOOL R12 1 0
0x7C240600, // 00DC CALL R9 3
0x74260013, // 00DD JMPT R9 #00F2
0xB8260A00, // 00DE GETNGBL R9 K5
0x8C241306, // 00DF GETMET R9 R9 K6
0x602C0008, // 00E0 GETGBL R11 G8
0x88300D1A, // 00E1 GETMBR R12 R6 K26
0x7C2C0200, // 00E2 CALL R11 1
0x002E660B, // 00E3 ADD R11 K51 R11
0x002C1734, // 00E4 ADD R11 R11 K52
0x60300008, // 00E5 GETGBL R12 G8
0x88341135, // 00E6 GETMBR R13 R8 K53
0x7C300200, // 00E7 CALL R12 1
0x002C160C, // 00E8 ADD R11 R11 R12
0x5830001E, // 00E9 LDCONST R12 K30
0x7C240600, // 00EA CALL R9 3
0x8C240136, // 00EB GETMET R9 R0 K54
0x5C2C0C00, // 00EC MOVE R11 R6
0x50300000, // 00ED LDBOOL R12 0 0
0x7C240600, // 00EE CALL R9 3
0x50240000, // 00EF LDBOOL R9 0 0
0xA8040001, // 00F0 EXBLK 1 1
0x80041200, // 00F1 RET 1 R9
0x8C240D37, // 00F2 GETMET R9 R6 K55
0x7C240200, // 00F3 CALL R9 1
0x5C281200, // 00F4 MOVE R10 R9
0x742A0002, // 00F5 JMPT R10 #00F9
0x50280000, // 00F6 LDBOOL R10 0 0
0xA8040001, // 00F7 EXBLK 1 1
0x80041400, // 00F8 RET 1 R10
0x88280D39, // 00F9 GETMBR R10 R6 K57
0x0428153A, // 00FA SUB R10 R10 K58
0x402A240A, // 00FB CONNECT R10 K18 R10
0x882C0D38, // 00FC GETMBR R11 R6 K56
0x9428160A, // 00FD GETIDX R10 R11 R10
0x901A700A, // 00FE SETMBR R6 K56 R10
0x88280D38, // 00FF GETMBR R10 R6 K56
0x40281409, // 0100 CONNECT R10 R10 R9
0xB82A0A00, // 0101 GETNGBL R10 K5
0x8C281506, // 0102 GETMET R10 R10 K6
0x8C30091B, // 0103 GETMET R12 R4 K27
0x5838003B, // 0104 LDCONST R14 K59
0x883C0D39, // 0105 GETMBR R15 R6 K57
0x88400D38, // 0106 GETMBR R16 R6 K56
0x8C40213C, // 0107 GETMET R16 R16 K60
0x7C400200, // 0108 CALL R16 1
0x7C300800, // 0109 CALL R12 4
0x54360003, // 010A LDINT R13 4
0x7C280600, // 010B CALL R10 3
0x8C280D20, // 010C GETMET R10 R6 K32
0x7C280200, // 010D CALL R10 1
0xB82A0A00, // 010E GETNGBL R10 K5
0x8C281506, // 010F GETMET R10 R10 K6
0x60300008, // 0110 GETGBL R12 G8
0x88340D3E, // 0111 GETMBR R13 R6 K62
0x7C300200, // 0112 CALL R12 1
0x00327A0C, // 0113 ADD R12 K61 R12
0x0030193F, // 0114 ADD R12 R12 K63
0x60340008, // 0115 GETGBL R13 G8
0x88380D22, // 0116 GETMBR R14 R6 K34
0x7C340200, // 0117 CALL R13 1
0x0030180D, // 0118 ADD R12 R12 R13
0x00301940, // 0119 ADD R12 R12 K64
0x60340008, // 011A GETGBL R13 G8
0x88380D26, // 011B GETMBR R14 R6 K38
0x543EFFFE, // 011C LDINT R15 65535
0x2C381C0F, // 011D AND R14 R14 R15
0x7C340200, // 011E CALL R13 1
0x0030180D, // 011F ADD R12 R12 R13
0x5834001E, // 0120 LDCONST R13 K30
0x7C280600, // 0121 CALL R10 3
0xB82A0A00, // 0122 GETNGBL R10 K5
0x8C281506, // 0123 GETMET R10 R10 K6
0x8C30091B, // 0124 GETMET R12 R4 K27
0x58380041, // 0125 LDCONST R14 K65
0x883C110F, // 0126 GETMBR R15 R8 K15
0x88400D3E, // 0127 GETMBR R16 R6 K62
0x88440D22, // 0128 GETMBR R17 R6 K34
0x88480D1A, // 0129 GETMBR R18 R6 K26
0x884C0D26, // 012A GETMBR R19 R6 K38
0x60500008, // 012B GETGBL R20 G8
0x88540D2C, // 012C GETMBR R21 R6 K44
0x7C500200, // 012D CALL R20 1
0x88540D29, // 012E GETMBR R21 R6 K41
0x78560001, // 012F JMPF R21 #0132
0x5854002A, // 0130 LDCONST R21 K42
0x70020000, // 0131 JMP #0133
0x5854002B, // 0132 LDCONST R21 K43
0x5C580400, // 0133 MOVE R22 R2
0x5C5C0600, // 0134 MOVE R23 R3
0x7C301600, // 0135 CALL R12 11
0x5834001E, // 0136 LDCONST R13 K30
0x7C280600, // 0137 CALL R10 3
0x88280109, // 0138 GETMBR R10 R0 K9
0x8C281521, // 0139 GETMET R10 R10 K33
0x5C300C00, // 013A MOVE R12 R6
0x7C280400, // 013B CALL R10 2
0x88280D3E, // 013C GETMBR R10 R6 K62
0x1C2C1512, // 013D EQ R11 R10 K18
0x782E000F, // 013E JMPF R11 #014F
0x882C0D22, // 013F GETMBR R11 R6 K34
0x5432000F, // 0140 LDINT R12 16
0x1C2C160C, // 0141 EQ R11 R11 R12
0x782E0009, // 0142 JMPF R11 #014D
0x882C0142, // 0143 GETMBR R11 R0 K66
0x8C2C1743, // 0144 GETMET R11 R11 K67
0x5C340C00, // 0145 MOVE R13 R6
0x7C2C0400, // 0146 CALL R11 2
0x5C141600, // 0147 MOVE R5 R11
0x78160003, // 0148 JMPF R5 #014D
0x882C0142, // 0149 GETMBR R11 R0 K66
0x8C2C1744, // 014A GETMET R11 R11 K68
0x5C340000, // 014B MOVE R13 R0
0x7C2C0400, // 014C CALL R11 2
0x50140200, // 014D LDBOOL R5 1 0
0x7002001A, // 014E JMP #016A
0x1C2C153A, // 014F EQ R11 R10 K58
0x782E0010, // 0150 JMPF R11 #0162
0x882C0142, // 0151 GETMBR R11 R0 K66
0x8C2C172E, // 0152 GETMET R11 R11 K46
0x5C340C00, // 0153 MOVE R13 R6
0x7C2C0400, // 0154 CALL R11 2
0x5C141600, // 0155 MOVE R5 R11
0x78160004, // 0156 JMPF R5 #015C
0x882C0142, // 0157 GETMBR R11 R0 K66
0x8C2C1744, // 0158 GETMET R11 R11 K68
0x5C340000, // 0159 MOVE R13 R0
0x7C2C0400, // 015A CALL R11 2
0x70020003, // 015B JMP #0160
0x8C2C0136, // 015C GETMET R11 R0 K54
0x5C340C00, // 015D MOVE R13 R6
0x50380200, // 015E LDBOOL R14 1 0
0x7C2C0600, // 015F CALL R11 3
0x50140200, // 0160 LDBOOL R5 1 0
0x70020007, // 0161 JMP #016A
0xB82E0A00, // 0162 GETNGBL R11 K5
0x8C2C1706, // 0163 GETMET R11 R11 K6
0x60340008, // 0164 GETGBL R13 G8
0x5C381400, // 0165 MOVE R14 R10
0x7C340200, // 0166 CALL R13 1
0x00368A0D, // 0167 ADD R13 K69 R13
0x5838001E, // 0168 LDCONST R14 K30
0x7C2C0600, // 0169 CALL R11 3
0xA8040001, // 016A EXBLK 1 1
0x80040A00, // 016B RET 1 R5
0xA8040001, // 016C EXBLK 1 1
0x70020017, // 016D JMP #0186
0xAC180002, // 016E CATCH R6 0 2
0x70020014, // 016F JMP #0185
0xB8220A00, // 0170 GETNGBL R8 K5
0x8C201106, // 0171 GETMET R8 R8 K6
0x60280008, // 0172 GETGBL R10 G8
0x5C2C0C00, // 0173 MOVE R11 R6
0x7C280200, // 0174 CALL R10 1
0x002A8C0A, // 0175 ADD R10 K70 R10
0x00281547, // 0176 ADD R10 R10 K71
0x602C0008, // 0177 GETGBL R11 G8
0x5C300E00, // 0178 MOVE R12 R7
0x7C2C0200, // 0179 CALL R11 1
0x0028140B, // 017A ADD R10 R10 R11
0x7C200400, // 017B CALL R8 2
0xB8220A00, // 017C GETNGBL R8 K5
0x88201148, // 017D GETMBR R8 R8 K72
0x78220002, // 017E JMPF R8 #0182
0xA4229200, // 017F IMPORT R8 K73
0x8C24114A, // 0180 GETMET R9 R8 K74
0x7C240200, // 0181 CALL R9 1
0x50200000, // 0182 LDBOOL R8 0 0
0x80041000, // 0183 RET 1 R8
0x70020000, // 0184 JMP #0186
0xB0080000, // 0185 RAISE 2 R0 R0
0x80000000, // 0186 RET 0
0x7822000C, // 0012 JMPF R8 #0020
0x88200105, // 0013 GETMBR R8 R0 K5
0x88201106, // 0014 GETMBR R8 R8 K6
0x8C201107, // 0015 GETMET R8 R8 K7
0x88280D08, // 0016 GETMBR R10 R6 K8
0x542E0059, // 0017 LDINT R11 90
0x7C200600, // 0018 CALL R8 3
0x88240109, // 0019 GETMBR R9 R0 K9
0x8C24130A, // 001A GETMET R9 R9 K10
0x5C2C0C00, // 001B MOVE R11 R6
0x7C240400, // 001C CALL R9 2
0xA8040001, // 001D EXBLK 1 1
0x80041200, // 001E RET 1 R9
0x70020105, // 001F JMP #0126
0x88200D0B, // 0020 GETMBR R8 R6 K11
0x1C20110C, // 0021 EQ R8 R8 K12
0x78220070, // 0022 JMPF R8 #0094
0x88200D0D, // 0023 GETMBR R8 R6 K13
0x1C20110C, // 0024 EQ R8 R8 K12
0x7822006D, // 0025 JMPF R8 #0094
0x88200105, // 0026 GETMBR R8 R0 K5
0x88201106, // 0027 GETMBR R8 R8 K6
0x8C201107, // 0028 GETMET R8 R8 K7
0x88280D08, // 0029 GETMBR R10 R6 K8
0x542E0059, // 002A LDINT R11 90
0x7C200600, // 002B CALL R8 3
0x780A0000, // 002C JMPF R2 #002E
0x90221C02, // 002D SETMBR R8 K14 R2
0x780E0000, // 002E JMPF R3 #0030
0x90221E03, // 002F SETMBR R8 K15 R3
0x90222000, // 0030 SETMBR R8 K16 R0
0x901A2208, // 0031 SETMBR R6 K17 R8
0x88241112, // 0032 GETMBR R9 R8 K18
0x8C241313, // 0033 GETMET R9 R9 K19
0x882C0D14, // 0034 GETMBR R11 R6 K20
0x50300000, // 0035 LDBOOL R12 0 0
0x7C240600, // 0036 CALL R9 3
0x74260011, // 0037 JMPT R9 #004A
0xB8262A00, // 0038 GETNGBL R9 K21
0x8C241316, // 0039 GETMET R9 R9 K22
0x8C2C0917, // 003A GETMET R11 R4 K23
0x58340018, // 003B LDCONST R13 K24
0x88380D14, // 003C GETMBR R14 R6 K20
0x883C1112, // 003D GETMBR R15 R8 K18
0x8C3C1F19, // 003E GETMET R15 R15 K25
0x7C3C0200, // 003F CALL R15 1
0x7C2C0800, // 0040 CALL R11 4
0x54320003, // 0041 LDINT R12 4
0x7C240600, // 0042 CALL R9 3
0x8C24011A, // 0043 GETMET R9 R0 K26
0x5C2C0C00, // 0044 MOVE R11 R6
0x50300000, // 0045 LDBOOL R12 0 0
0x7C240600, // 0046 CALL R9 3
0x50240000, // 0047 LDBOOL R9 0 0
0xA8040001, // 0048 EXBLK 1 1
0x80041200, // 0049 RET 1 R9
0x8C240D1B, // 004A GETMET R9 R6 K27
0x7C240200, // 004B CALL R9 1
0x74260002, // 004C JMPT R9 #0050
0x50240000, // 004D LDBOOL R9 0 0
0xA8040001, // 004E EXBLK 1 1
0x80041200, // 004F RET 1 R9
0x88240105, // 0050 GETMBR R9 R0 K5
0x8C24131C, // 0051 GETMET R9 R9 K28
0x5C2C0C00, // 0052 MOVE R11 R6
0x7C240400, // 0053 CALL R9 2
0x88240D1D, // 0054 GETMBR R9 R6 K29
0x542A000F, // 0055 LDINT R10 16
0x2024120A, // 0056 NE R9 R9 R10
0x78260018, // 0057 JMPF R9 #0071
0xB8260200, // 0058 GETNGBL R9 K1
0x8C24131E, // 0059 GETMET R9 R9 K30
0x882C0D1D, // 005A GETMBR R11 R6 K29
0x7C240400, // 005B CALL R9 2
0x5C281200, // 005C MOVE R10 R9
0x742A0004, // 005D JMPT R10 #0063
0x8C280917, // 005E GETMET R10 R4 K23
0x5830001F, // 005F LDCONST R12 K31
0x88340D1D, // 0060 GETMBR R13 R6 K29
0x7C280600, // 0061 CALL R10 3
0x5C241400, // 0062 MOVE R9 R10
0xB82A2A00, // 0063 GETNGBL R10 K21
0x8C281516, // 0064 GETMET R10 R10 K22
0x8C300917, // 0065 GETMET R12 R4 K23
0x58380020, // 0066 LDCONST R14 K32
0x883C110B, // 0067 GETMBR R15 R8 K11
0x5C401200, // 0068 MOVE R16 R9
0x88440D14, // 0069 GETMBR R17 R6 K20
0x88480D21, // 006A GETMBR R18 R6 K33
0x5C4C0400, // 006B MOVE R19 R2
0x5C500600, // 006C MOVE R20 R3
0x7C301000, // 006D CALL R12 8
0x58340022, // 006E LDCONST R13 K34
0x7C280600, // 006F CALL R10 3
0x70020013, // 0070 JMP #0085
0xB8262A00, // 0071 GETNGBL R9 K21
0x8C241316, // 0072 GETMET R9 R9 K22
0x8C2C0917, // 0073 GETMET R11 R4 K23
0x58340023, // 0074 LDCONST R13 K35
0x8838110B, // 0075 GETMBR R14 R8 K11
0x883C0D14, // 0076 GETMBR R15 R6 K20
0x88400D24, // 0077 GETMBR R16 R6 K36
0x78420001, // 0078 JMPF R16 #007B
0x58400025, // 0079 LDCONST R16 K37
0x70020000, // 007A JMP #007C
0x58400026, // 007B LDCONST R16 K38
0x88440D21, // 007C GETMBR R17 R6 K33
0x60480008, // 007D GETGBL R18 G8
0x884C0D27, // 007E GETMBR R19 R6 K39
0x7C480200, // 007F CALL R18 1
0x5C4C0400, // 0080 MOVE R19 R2
0x5C500600, // 0081 MOVE R20 R3
0x7C2C1200, // 0082 CALL R11 9
0x54320003, // 0083 LDINT R12 4
0x7C240600, // 0084 CALL R9 3
0x88240128, // 0085 GETMBR R9 R0 K40
0x8C241329, // 0086 GETMET R9 R9 K41
0x5C2C0C00, // 0087 MOVE R11 R6
0x7C240400, // 0088 CALL R9 2
0x5C141200, // 0089 MOVE R5 R9
0x5C240A00, // 008A MOVE R9 R5
0x74260003, // 008B JMPT R9 #0090
0x8C24011A, // 008C GETMET R9 R0 K26
0x5C2C0C00, // 008D MOVE R11 R6
0x50300000, // 008E LDBOOL R12 0 0
0x7C240600, // 008F CALL R9 3
0x50240200, // 0090 LDBOOL R9 1 0
0xA8040001, // 0091 EXBLK 1 1
0x80041200, // 0092 RET 1 R9
0x70020091, // 0093 JMP #0126
0xB8222A00, // 0094 GETNGBL R8 K21
0x8C201116, // 0095 GETMET R8 R8 K22
0x8C280917, // 0096 GETMET R10 R4 K23
0x5830002A, // 0097 LDCONST R12 K42
0x88340D0B, // 0098 GETMBR R13 R6 K11
0x88380D14, // 0099 GETMBR R14 R6 K20
0x7C280800, // 009A CALL R10 4
0x542E0003, // 009B LDINT R11 4
0x7C200600, // 009C CALL R8 3
0x88200105, // 009D GETMBR R8 R0 K5
0x88201106, // 009E GETMBR R8 R8 K6
0x8C20112B, // 009F GETMET R8 R8 K43
0x88280D0B, // 00A0 GETMBR R10 R6 K11
0x7C200400, // 00A1 CALL R8 2
0x4C240000, // 00A2 LDNIL R9
0x1C241009, // 00A3 EQ R9 R8 R9
0x7826000A, // 00A4 JMPF R9 #00B0
0xB8262A00, // 00A5 GETNGBL R9 K21
0x8C241316, // 00A6 GETMET R9 R9 K22
0x602C0008, // 00A7 GETGBL R11 G8
0x88300D0B, // 00A8 GETMBR R12 R6 K11
0x7C2C0200, // 00A9 CALL R11 1
0x002E580B, // 00AA ADD R11 K44 R11
0x58300022, // 00AB LDCONST R12 K34
0x7C240600, // 00AC CALL R9 3
0x50240000, // 00AD LDBOOL R9 0 0
0xA8040001, // 00AE EXBLK 1 1
0x80041200, // 00AF RET 1 R9
0x780A0000, // 00B0 JMPF R2 #00B2
0x90221C02, // 00B1 SETMBR R8 K14 R2
0x780E0000, // 00B2 JMPF R3 #00B4
0x90221E03, // 00B3 SETMBR R8 K15 R3
0x90222000, // 00B4 SETMBR R8 K16 R0
0x901A2208, // 00B5 SETMBR R6 K17 R8
0x8C24112D, // 00B6 GETMET R9 R8 K45
0x882C0D14, // 00B7 GETMBR R11 R6 K20
0x50300200, // 00B8 LDBOOL R12 1 0
0x7C240600, // 00B9 CALL R9 3
0x74260013, // 00BA JMPT R9 #00CF
0xB8262A00, // 00BB GETNGBL R9 K21
0x8C241316, // 00BC GETMET R9 R9 K22
0x602C0008, // 00BD GETGBL R11 G8
0x88300D14, // 00BE GETMBR R12 R6 K20
0x7C2C0200, // 00BF CALL R11 1
0x002E5C0B, // 00C0 ADD R11 K46 R11
0x002C172F, // 00C1 ADD R11 R11 K47
0x60300008, // 00C2 GETGBL R12 G8
0x88341130, // 00C3 GETMBR R13 R8 K48
0x7C300200, // 00C4 CALL R12 1
0x002C160C, // 00C5 ADD R11 R11 R12
0x54320003, // 00C6 LDINT R12 4
0x7C240600, // 00C7 CALL R9 3
0x8C240131, // 00C8 GETMET R9 R0 K49
0x5C2C0C00, // 00C9 MOVE R11 R6
0x50300000, // 00CA LDBOOL R12 0 0
0x7C240600, // 00CB CALL R9 3
0x50240000, // 00CC LDBOOL R9 0 0
0xA8040001, // 00CD EXBLK 1 1
0x80041200, // 00CE RET 1 R9
0x8C240D32, // 00CF GETMET R9 R6 K50
0x7C240200, // 00D0 CALL R9 1
0x5C281200, // 00D1 MOVE R10 R9
0x742A0002, // 00D2 JMPT R10 #00D6
0x50280000, // 00D3 LDBOOL R10 0 0
0xA8040001, // 00D4 EXBLK 1 1
0x80041400, // 00D5 RET 1 R10
0x88280D34, // 00D6 GETMBR R10 R6 K52
0x04281535, // 00D7 SUB R10 R10 K53
0x402A180A, // 00D8 CONNECT R10 K12 R10
0x882C0D33, // 00D9 GETMBR R11 R6 K51
0x9428160A, // 00DA GETIDX R10 R11 R10
0x901A660A, // 00DB SETMBR R6 K51 R10
0x88280D33, // 00DC GETMBR R10 R6 K51
0x40281409, // 00DD CONNECT R10 R10 R9
0x8C280D1B, // 00DE GETMET R10 R6 K27
0x7C280200, // 00DF CALL R10 1
0xB82A2A00, // 00E0 GETNGBL R10 K21
0x8C281516, // 00E1 GETMET R10 R10 K22
0x60300008, // 00E2 GETGBL R12 G8
0x88340D37, // 00E3 GETMBR R13 R6 K55
0x7C300200, // 00E4 CALL R12 1
0x00326C0C, // 00E5 ADD R12 K54 R12
0x00301938, // 00E6 ADD R12 R12 K56
0x60340008, // 00E7 GETGBL R13 G8
0x88380D1D, // 00E8 GETMBR R14 R6 K29
0x7C340200, // 00E9 CALL R13 1
0x0030180D, // 00EA ADD R12 R12 R13
0x00301939, // 00EB ADD R12 R12 K57
0x60340008, // 00EC GETGBL R13 G8
0x88380D21, // 00ED GETMBR R14 R6 K33
0x543EFFFE, // 00EE LDINT R15 65535
0x2C381C0F, // 00EF AND R14 R14 R15
0x7C340200, // 00F0 CALL R13 1
0x0030180D, // 00F1 ADD R12 R12 R13
0x54360003, // 00F2 LDINT R13 4
0x7C280600, // 00F3 CALL R10 3
0x88280105, // 00F4 GETMBR R10 R0 K5
0x8C28151C, // 00F5 GETMET R10 R10 K28
0x5C300C00, // 00F6 MOVE R12 R6
0x7C280400, // 00F7 CALL R10 2
0x88280D37, // 00F8 GETMBR R10 R6 K55
0x1C2C150C, // 00F9 EQ R11 R10 K12
0x782E000F, // 00FA JMPF R11 #010B
0x882C0D1D, // 00FB GETMBR R11 R6 K29
0x5432000F, // 00FC LDINT R12 16
0x1C2C160C, // 00FD EQ R11 R11 R12
0x782E0009, // 00FE JMPF R11 #0109
0x882C013A, // 00FF GETMBR R11 R0 K58
0x8C2C173B, // 0100 GETMET R11 R11 K59
0x5C340C00, // 0101 MOVE R13 R6
0x7C2C0400, // 0102 CALL R11 2
0x5C141600, // 0103 MOVE R5 R11
0x78160003, // 0104 JMPF R5 #0109
0x882C013A, // 0105 GETMBR R11 R0 K58
0x8C2C173C, // 0106 GETMET R11 R11 K60
0x5C340000, // 0107 MOVE R13 R0
0x7C2C0400, // 0108 CALL R11 2
0x50140200, // 0109 LDBOOL R5 1 0
0x7002001A, // 010A JMP #0126
0x1C2C1535, // 010B EQ R11 R10 K53
0x782E0010, // 010C JMPF R11 #011E
0x882C013A, // 010D GETMBR R11 R0 K58
0x8C2C1729, // 010E GETMET R11 R11 K41
0x5C340C00, // 010F MOVE R13 R6
0x7C2C0400, // 0110 CALL R11 2
0x5C141600, // 0111 MOVE R5 R11
0x78160004, // 0112 JMPF R5 #0118
0x882C013A, // 0113 GETMBR R11 R0 K58
0x8C2C173C, // 0114 GETMET R11 R11 K60
0x5C340000, // 0115 MOVE R13 R0
0x7C2C0400, // 0116 CALL R11 2
0x70020003, // 0117 JMP #011C
0x8C2C0131, // 0118 GETMET R11 R0 K49
0x5C340C00, // 0119 MOVE R13 R6
0x50380200, // 011A LDBOOL R14 1 0
0x7C2C0600, // 011B CALL R11 3
0x50140200, // 011C LDBOOL R5 1 0
0x70020007, // 011D JMP #0126
0xB82E2A00, // 011E GETNGBL R11 K21
0x8C2C1716, // 011F GETMET R11 R11 K22
0x60340008, // 0120 GETGBL R13 G8
0x5C381400, // 0121 MOVE R14 R10
0x7C340200, // 0122 CALL R13 1
0x00367A0D, // 0123 ADD R13 K61 R13
0x58380022, // 0124 LDCONST R14 K34
0x7C2C0600, // 0125 CALL R11 3
0xA8040001, // 0126 EXBLK 1 1
0x80040A00, // 0127 RET 1 R5
0xA8040001, // 0128 EXBLK 1 1
0x70020018, // 0129 JMP #0143
0xAC180002, // 012A CATCH R6 0 2
0x70020015, // 012B JMP #0142
0xB8222A00, // 012C GETNGBL R8 K21
0x8C201116, // 012D GETMET R8 R8 K22
0x60280008, // 012E GETGBL R10 G8
0x5C2C0C00, // 012F MOVE R11 R6
0x7C280200, // 0130 CALL R10 1
0x002A7C0A, // 0131 ADD R10 K62 R10
0x0028153F, // 0132 ADD R10 R10 K63
0x602C0008, // 0133 GETGBL R11 G8
0x5C300E00, // 0134 MOVE R12 R7
0x7C2C0200, // 0135 CALL R11 1
0x0028140B, // 0136 ADD R10 R10 R11
0x582C0040, // 0137 LDCONST R11 K64
0x7C200600, // 0138 CALL R8 3
0xB8222A00, // 0139 GETNGBL R8 K21
0x88201141, // 013A GETMBR R8 R8 K65
0x78220002, // 013B JMPF R8 #013F
0xA4228400, // 013C IMPORT R8 K66
0x8C241143, // 013D GETMET R9 R8 K67
0x7C240200, // 013E CALL R9 1
0x50200000, // 013F LDBOOL R8 0 0
0x80041000, // 0140 RET 1 R8
0x70020000, // 0141 JMP #0143
0xB0080000, // 0142 RAISE 2 R0 R0
0x80000000, // 0143 RET 0
})
)
);

View File

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

View File

@ -57,16 +57,17 @@ extern const bclass be_class_Matter_Plugin_Bridge_Light0;
be_local_class(Matter_Plugin_Bridge_OnOff,
0,
&be_class_Matter_Plugin_Bridge_Light0,
be_nested_map(4,
be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_OnOff_web_values_closure) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_relay) },
{ be_const_key_weak(NAME, 3), be_nested_str_weak(Relay) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ 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(266, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Relay) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_OnOff_web_values_closure) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Relay_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, 1), be_nested_str_weak(http_relay) },
})),
be_str_weak(Matter_Plugin_Bridge_OnOff)
);

View File

@ -6,119 +6,6 @@
extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
/********************************************************************
** Solidified function: pre_value
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_pre_value, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80040200, // 0000 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: filter_name_html
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_filter_name_html, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(webserver),
/* K3 */ be_nested_str_weak(html_escape),
/* K4 */ be_nested_str_weak(split),
/* K5 */ be_nested_str_weak(_X23),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(),
}),
be_str_weak(filter_name_html),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x78060009, // 0001 JMPF R1 #000C
0xA4060200, // 0002 IMPORT R1 K1
0xA40A0400, // 0003 IMPORT R2 K2
0x8C0C0503, // 0004 GETMET R3 R2 K3
0x8C140304, // 0005 GETMET R5 R1 K4
0x881C0100, // 0006 GETMBR R7 R0 K0
0x58200005, // 0007 LDCONST R8 K5
0x7C140600, // 0008 CALL R5 3
0x94140B06, // 0009 GETIDX R5 R5 K6
0x7C0C0400, // 000A CALL R3 2
0x80040600, // 000B RET 1 R3
0x80060E00, // 000C RET 1 K7
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(Rule_Matcher),
/* K6 */ be_nested_str_weak(parse),
}),
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x780A0005, // 0005 JMPF R2 #000C
0xB80A0800, // 0006 GETNGBL R2 K4
0x88080505, // 0007 GETMBR R2 R2 K5
0x8C080506, // 0008 GETMET R2 R2 K6
0x88100100, // 0009 GETMBR R4 R0 K0
0x7C080400, // 000A CALL R2 2
0x90020602, // 000B SETMBR R0 K3 R2
0x80000000, // 000C RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
@ -172,6 +59,51 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_parse_update, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: filter_name_html
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_filter_name_html, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(webserver),
/* K3 */ be_nested_str_weak(html_escape),
/* K4 */ be_nested_str_weak(split),
/* K5 */ be_nested_str_weak(_X23),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(),
}),
be_str_weak(filter_name_html),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x78060009, // 0001 JMPF R1 #000C
0xA4060200, // 0002 IMPORT R1 K1
0xA40A0400, // 0003 IMPORT R2 K2
0x8C0C0503, // 0004 GETMET R3 R2 K3
0x8C140304, // 0005 GETMET R5 R1 K4
0x881C0100, // 0006 GETMBR R7 R0 K0
0x58200005, // 0007 LDCONST R8 K5
0x7C140600, // 0008 CALL R5 3
0x94140B06, // 0009 GETIDX R5 R5 K6
0x7C0C0400, // 000A CALL R3 2
0x80040600, // 000B RET 1 R3
0x80060E00, // 000C RET 1 K7
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: value_changed
********************************************************************/
@ -196,6 +128,74 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_value_changed, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: pre_value
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_pre_value, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80040200, // 0000 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(Rule_Matcher),
/* K6 */ be_nested_str_weak(parse),
}),
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x780A0005, // 0005 JMPF R2 #000C
0xB80A0800, // 0006 GETNGBL R2 K4
0x88080505, // 0007 GETMBR R2 R2 K5
0x8C080506, // 0008 GETMET R2 R2 K6
0x88100100, // 0009 GETMBR R4 R0 K0
0x7C080400, // 000A CALL R2 2
0x90020602, // 000B SETMBR R0 K3 R2
0x80000000, // 000C RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin_Bridge_Sensor
********************************************************************/
@ -203,21 +203,22 @@ extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
be_local_class(Matter_Plugin_Bridge_Sensor,
3,
&be_class_Matter_Plugin_Bridge_HTTP,
be_nested_map(13,
be_nested_map(14,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG, 1), be_nested_str_weak(filter) },
{ be_const_key_weak(value_changed, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_value_changed_closure) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(pre_value, 12), be_const_closure(Matter_Plugin_Bridge_Sensor_pre_value_closure) },
{ be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
{ be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) },
{ be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(filter) },
{ be_const_key_weak(parse_update, 10), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_update_closure) },
{ be_const_key_weak(filter_name_html, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_filter_name_html_closure) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_configuration_closure) },
{ be_const_key_weak(shadow_value, -1), be_const_var(2) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_update_closure) },
{ be_const_key_weak(UPDATE_CMD, 8), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(ARG_HTTP, 2), be_nested_str_weak(url) },
{ be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) },
{ be_const_key_weak(value_changed, 0), be_const_closure(Matter_Plugin_Bridge_Sensor_value_changed_closure) },
{ be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_parse_configuration_closure) },
{ be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_pre_value_closure) },
{ be_const_key_weak(ARG_HINT, 7), be_nested_str_weak(Enter_X20Filter_X20pattern) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(shadow_value, 9), be_const_var(2) },
{ be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) },
{ be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor)
);

View File

@ -6,6 +6,65 @@
extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
/********************************************************************
** Solidified function: parse_update
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(find),
/* K1 */ be_nested_str_weak(Switch),
/* K2 */ be_nested_str_weak(tasmota_switch_index),
/* K3 */ be_nested_str_weak(ON),
/* K4 */ be_nested_str_weak(shadow_occupancy),
/* K5 */ be_nested_str_weak(attribute_updated),
/* K6 */ be_const_int(0),
}),
be_str_weak(parse_update),
&be_const_str_solidified,
( &(const binstruction[28]) { /* code */
0x540E0007, // 0000 LDINT R3 8
0x1C0C0403, // 0001 EQ R3 R2 R3
0x780E0017, // 0002 JMPF R3 #001B
0x500C0000, // 0003 LDBOOL R3 0 0
0x8C100300, // 0004 GETMET R4 R1 K0
0x60180008, // 0005 GETGBL R6 G8
0x881C0102, // 0006 GETMBR R7 R0 K2
0x7C180200, // 0007 CALL R6 1
0x001A0206, // 0008 ADD R6 K1 R6
0x7C100400, // 0009 CALL R4 2
0x1C100903, // 000A EQ R4 R4 K3
0x5C0C0800, // 000B MOVE R3 R4
0x88100104, // 000C GETMBR R4 R0 K4
0x4C140000, // 000D LDNIL R5
0x20100805, // 000E NE R4 R4 R5
0x78120009, // 000F JMPF R4 #001A
0x88100104, // 0010 GETMBR R4 R0 K4
0x60140017, // 0011 GETGBL R5 G23
0x5C180600, // 0012 MOVE R6 R3
0x7C140200, // 0013 CALL R5 1
0x20100805, // 0014 NE R4 R4 R5
0x78120003, // 0015 JMPF R4 #001A
0x8C100105, // 0016 GETMET R4 R0 K5
0x541A0405, // 0017 LDINT R6 1030
0x581C0006, // 0018 LDCONST R7 K6
0x7C100600, // 0019 CALL R4 3
0x90020803, // 001A SETMBR R0 K4 R3
0x80000000, // 001B RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: web_values
********************************************************************/
@ -50,6 +109,33 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
@ -158,92 +244,6 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
/*******************************************************************/
/********************************************************************
** Solidified function: parse_update
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(find),
/* K1 */ be_nested_str_weak(Switch),
/* K2 */ be_nested_str_weak(tasmota_switch_index),
/* K3 */ be_nested_str_weak(ON),
/* K4 */ be_nested_str_weak(shadow_occupancy),
/* K5 */ be_nested_str_weak(attribute_updated),
/* K6 */ be_const_int(0),
}),
be_str_weak(parse_update),
&be_const_str_solidified,
( &(const binstruction[28]) { /* code */
0x540E0007, // 0000 LDINT R3 8
0x1C0C0403, // 0001 EQ R3 R2 R3
0x780E0017, // 0002 JMPF R3 #001B
0x500C0000, // 0003 LDBOOL R3 0 0
0x8C100300, // 0004 GETMET R4 R1 K0
0x60180008, // 0005 GETGBL R6 G8
0x881C0102, // 0006 GETMBR R7 R0 K2
0x7C180200, // 0007 CALL R6 1
0x001A0206, // 0008 ADD R6 K1 R6
0x7C100400, // 0009 CALL R4 2
0x1C100903, // 000A EQ R4 R4 K3
0x5C0C0800, // 000B MOVE R3 R4
0x88100104, // 000C GETMBR R4 R0 K4
0x4C140000, // 000D LDNIL R5
0x20100805, // 000E NE R4 R4 R5
0x78120009, // 000F JMPF R4 #001A
0x88100104, // 0010 GETMBR R4 R0 K4
0x60140017, // 0011 GETGBL R5 G23
0x5C180600, // 0012 MOVE R6 R3
0x7C140200, // 0013 CALL R5 1
0x20100805, // 0014 NE R4 R4 R5
0x78120003, // 0015 JMPF R4 #001A
0x8C100105, // 0016 GETMET R4 R0 K5
0x541A0405, // 0017 LDINT R6 1030
0x581C0006, // 0018 LDCONST R7 K6
0x7C100600, // 0019 CALL R4 3
0x90020803, // 001A SETMBR R0 K4 R3
0x80000000, // 001B RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: init
********************************************************************/
@ -301,9 +301,24 @@ extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
2,
&be_class_Matter_Plugin_Bridge_HTTP,
be_nested_map(14,
be_nested_map(15,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(CLUSTERS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(ARG_HINT, 3), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) },
{ be_const_key_weak(ARG_TYPE, 11), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(263, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
{ be_const_key_weak(ARG, 13), be_nested_str_weak(switch) },
{ be_const_key_weak(UPDATE_CMD, 8), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
{ be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(1030, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@ -316,23 +331,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
{ be_const_key_weak(UPDATE_TIME, 7), be_const_int(5000) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_occupancy) },
{ be_const_key_weak(web_values, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_closure) },
{ be_const_key_weak(UPDATE_CMD, 9), be_nested_str_weak(Status_X208) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute_closure) },
{ be_const_key_weak(tasmota_switch_index, 11), be_const_var(0) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Occupancy) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(263, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(ARG_TYPE, 12), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) },
{ be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_occupancy) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor_Occupancy)
);

View File

@ -6,147 +6,6 @@
extern const bclass be_class_Matter_Plugin_OnOff;
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_OnOff_init, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x50100000, // 0008 LDBOOL R4 0 0
0x90020204, // 0009 SETMBR R0 K1 R4
0x80000000, // 000A RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_OnOff__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_OnOff_invoke_request, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[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_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(set_onoff),
/* K7 */ be_nested_str_weak(update_shadow),
/* K8 */ be_const_int(1),
/* K9 */ be_const_int(2),
/* K10 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[42]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
0x781E0021, // 0006 JMPF R7 #0029
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
0x781E0007, // 000A JMPF R7 #0013
0x8C1C0106, // 000B GETMET R7 R0 K6
0x50240000, // 000C LDBOOL R9 0 0
0x7C1C0400, // 000D CALL R7 2
0x8C1C0107, // 000E GETMET R7 R0 K7
0x7C1C0200, // 000F CALL R7 1
0x501C0200, // 0010 LDBOOL R7 1 0
0x80040E00, // 0011 RET 1 R7
0x70020015, // 0012 JMP #0029
0x1C1C0D08, // 0013 EQ R7 R6 K8
0x781E0007, // 0014 JMPF R7 #001D
0x8C1C0106, // 0015 GETMET R7 R0 K6
0x50240200, // 0016 LDBOOL R9 1 0
0x7C1C0400, // 0017 CALL R7 2
0x8C1C0107, // 0018 GETMET R7 R0 K7
0x7C1C0200, // 0019 CALL R7 1
0x501C0200, // 001A LDBOOL R7 1 0
0x80040E00, // 001B RET 1 R7
0x7002000B, // 001C JMP #0029
0x1C1C0D09, // 001D EQ R7 R6 K9
0x781E0009, // 001E JMPF R7 #0029
0x8C1C0106, // 001F GETMET R7 R0 K6
0x8824010A, // 0020 GETMBR R9 R0 K10
0x78260000, // 0021 JMPF R9 #0023
0x50240001, // 0022 LDBOOL R9 0 1
0x50240200, // 0023 LDBOOL R9 1 0
0x7C1C0400, // 0024 CALL R7 2
0x8C1C0107, // 0025 GETMET R7 R0 K7
0x7C1C0200, // 0026 CALL R7 1
0x501C0200, // 0027 LDBOOL R7 1 0
0x80040E00, // 0028 RET 1 R7
0x80000000, // 0029 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: set_onoff
********************************************************************/
@ -187,6 +46,43 @@ be_local_closure(Matter_Plugin_OnOff_set_onoff, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_OnOff_init, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x5C200600, // 0006 MOVE R8 R3
0x7C100800, // 0007 CALL R4 4
0x50100000, // 0008 LDBOOL R4 0 0
0x90020204, // 0009 SETMBR R0 K1 R4
0x80000000, // 000A RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: update_shadow
********************************************************************/
@ -370,6 +266,110 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_OnOff_invoke_request, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[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_nested_str_weak(update_shadow_lazy),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(set_onoff),
/* K7 */ be_nested_str_weak(update_shadow),
/* K8 */ be_const_int(1),
/* K9 */ be_const_int(2),
/* K10 */ be_nested_str_weak(shadow_onoff),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[42]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x541E0005, // 0004 LDINT R7 6
0x1C1C0A07, // 0005 EQ R7 R5 R7
0x781E0021, // 0006 JMPF R7 #0029
0x8C1C0104, // 0007 GETMET R7 R0 K4
0x7C1C0200, // 0008 CALL R7 1
0x1C1C0D05, // 0009 EQ R7 R6 K5
0x781E0007, // 000A JMPF R7 #0013
0x8C1C0106, // 000B GETMET R7 R0 K6
0x50240000, // 000C LDBOOL R9 0 0
0x7C1C0400, // 000D CALL R7 2
0x8C1C0107, // 000E GETMET R7 R0 K7
0x7C1C0200, // 000F CALL R7 1
0x501C0200, // 0010 LDBOOL R7 1 0
0x80040E00, // 0011 RET 1 R7
0x70020015, // 0012 JMP #0029
0x1C1C0D08, // 0013 EQ R7 R6 K8
0x781E0007, // 0014 JMPF R7 #001D
0x8C1C0106, // 0015 GETMET R7 R0 K6
0x50240200, // 0016 LDBOOL R9 1 0
0x7C1C0400, // 0017 CALL R7 2
0x8C1C0107, // 0018 GETMET R7 R0 K7
0x7C1C0200, // 0019 CALL R7 1
0x501C0200, // 001A LDBOOL R7 1 0
0x80040E00, // 001B RET 1 R7
0x7002000B, // 001C JMP #0029
0x1C1C0D09, // 001D EQ R7 R6 K9
0x781E0009, // 001E JMPF R7 #0029
0x8C1C0106, // 001F GETMET R7 R0 K6
0x8824010A, // 0020 GETMBR R9 R0 K10
0x78260000, // 0021 JMPF R9 #0023
0x50240001, // 0022 LDBOOL R9 0 1
0x50240200, // 0023 LDBOOL R9 1 0
0x7C1C0400, // 0024 CALL R7 2
0x8C1C0107, // 0025 GETMET R7 R0 K7
0x7C1C0200, // 0026 CALL R7 1
0x501C0200, // 0027 LDBOOL R7 1 0
0x80040E00, // 0028 RET 1 R7
0x80000000, // 0029 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_OnOff__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin_OnOff
********************************************************************/
@ -377,23 +377,18 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_OnOff,
2,
&be_class_Matter_Plugin_Device,
be_nested_map(15,
be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_OnOff_init_closure) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_OnOff_invoke_request_closure) },
{ be_const_key_weak(shadow_onoff, 4), be_const_var(1) },
{ be_const_key_weak(tasmota_relay_index, 12), be_const_var(0) },
{ be_const_key_weak(set_onoff, -1), be_const_closure(Matter_Plugin_OnOff_set_onoff_closure) },
{ be_const_key_weak(ARG_TYPE, 10), be_const_static_closure(Matter_Plugin_OnOff__X3Clambda_X3E_closure) },
{ be_const_key_weak(tasmota_relay_index, 7), be_const_var(0) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_OnOff_init_closure) },
{ be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin_OnOff__X3Clambda_X3E_closure) },
{ be_const_key_weak(update_shadow, 15), be_const_closure(Matter_Plugin_OnOff_update_shadow_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Relay) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(250) },
{ 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(266, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(TYPE, 14), be_nested_str_weak(relay) },
{ be_const_key_weak(NAME, 1), be_nested_str_weak(Relay) },
{ be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@ -404,10 +399,16 @@ be_local_class(Matter_Plugin_OnOff,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(parse_configuration, 8), be_const_closure(Matter_Plugin_OnOff_parse_configuration_closure) },
{ be_const_key_weak(TYPES, 9), 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(invoke_request, -1), be_const_closure(Matter_Plugin_OnOff_invoke_request_closure) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Relay_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(relay) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_OnOff_read_attribute_closure) },
{ be_const_key_weak(shadow_onoff, -1), be_const_var(1) },
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_OnOff_update_shadow_closure) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_OnOff_parse_configuration_closure) },
})),
be_str_weak(Matter_Plugin_OnOff)
);

View File

@ -6,30 +6,6 @@
extern const bclass be_class_Matter_Plugin_Sensor;
/********************************************************************
** Solidified function: pre_value
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_pre_value, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80040200, // 0000 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: value_changed
********************************************************************/
@ -54,6 +30,50 @@ be_local_closure(Matter_Plugin_Sensor_value_changed, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(Rule_Matcher),
/* K6 */ be_nested_str_weak(parse),
}),
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x780A0005, // 0005 JMPF R2 #000C
0xB80A0800, // 0006 GETNGBL R2 K4
0x88080505, // 0007 GETMBR R2 R2 K5
0x8C080506, // 0008 GETMET R2 R2 K6
0x88100100, // 0009 GETMBR R4 R0 K0
0x7C080400, // 000A CALL R2 2
0x90020602, // 000B SETMBR R0 K3 R2
0x80000000, // 000C RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_sensors
********************************************************************/
@ -105,43 +125,23 @@ be_local_closure(Matter_Plugin_Sensor_parse_sensors, /* name */
/********************************************************************
** Solidified function: parse_configuration
** Solidified function: pre_value
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_parse_configuration, /* name */
be_local_closure(Matter_Plugin_Sensor_pre_value, /* name */
be_nested_proto(
5, /* nstack */
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[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_sensor_filter),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(Rule_Matcher),
/* K6 */ be_nested_str_weak(parse),
}),
be_str_weak(parse_configuration),
0, /* has constants */
NULL, /* no const */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x780A0005, // 0005 JMPF R2 #000C
0xB80A0800, // 0006 GETNGBL R2 K4
0x88080505, // 0007 GETMBR R2 R2 K5
0x8C080506, // 0008 GETMET R2 R2 K6
0x88100100, // 0009 GETMBR R4 R0 K0
0x7C080400, // 000A CALL R2 2
0x90020602, // 000B SETMBR R0 K3 R2
0x80000000, // 000C RET 0
( &(const binstruction[ 1]) { /* code */
0x80040200, // 0000 RET 1 R1
})
)
);
@ -155,17 +155,18 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Sensor,
3,
&be_class_Matter_Plugin_Device,
be_nested_map(9,
be_nested_map(10,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG, 3), be_nested_str_weak(filter) },
{ be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) },
{ be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_pre_value_closure) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(value_changed, -1), be_const_closure(Matter_Plugin_Sensor_value_changed_closure) },
{ be_const_key_weak(shadow_value, -1), be_const_var(2) },
{ be_const_key_weak(parse_sensors, 5), be_const_closure(Matter_Plugin_Sensor_parse_sensors_closure) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_parse_configuration_closure) },
{ be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
{ be_const_key_weak(value_changed, -1), be_const_closure(Matter_Plugin_Sensor_value_changed_closure) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(filter) },
{ be_const_key_weak(shadow_value, -1), be_const_var(2) },
{ be_const_key_weak(UPDATE_TIME, 7), be_const_int(5000) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Filter_X20pattern) },
{ be_const_key_weak(parse_sensors, 4), be_const_closure(Matter_Plugin_Sensor_parse_sensors_closure) },
{ be_const_key_weak(tasmota_sensor_filter, 8), be_const_var(0) },
{ be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_pre_value_closure) },
{ be_const_key_weak(parse_configuration, 2), be_const_closure(Matter_Plugin_Sensor_parse_configuration_closure) },
})),
be_str_weak(Matter_Plugin_Sensor)
);

View File

@ -6,6 +6,33 @@
extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
@ -47,33 +74,6 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name *
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
@ -267,23 +267,19 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Sensor_Occupancy,
2,
&be_class_Matter_Plugin_Device,
be_nested_map(12,
be_nested_map(13,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(parse_configuration, 9), be_const_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(263, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
{ be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Occupancy) },
{ be_const_key_weak(read_attribute, 5), be_const_closure(Matter_Plugin_Sensor_Occupancy_read_attribute_closure) },
{ be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(occupancy) },
{ be_const_key_weak(ARG_HINT, 1), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) },
{ be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
{ be_const_key_weak(TYPE, 11), be_nested_str_weak(occupancy) },
{ be_const_key_weak(CLUSTERS, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(shadow_occupancy, 8), be_const_var(1) },
{ be_const_key_weak(update_shadow, 5), be_const_closure(Matter_Plugin_Sensor_Occupancy_update_shadow_closure) },
{ be_const_key_weak(NAME, 6), be_nested_str_weak(Occupancy) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(1030, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@ -296,7 +292,12 @@ be_local_class(Matter_Plugin_Sensor_Occupancy,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Sensor_Occupancy_update_shadow_closure) },
{ be_const_key_weak(read_attribute, 4), be_const_closure(Matter_Plugin_Sensor_Occupancy_read_attribute_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(263, -1), be_const_int(2) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Sensor_Occupancy)
);

View File

@ -6,6 +6,33 @@
extern const bclass be_class_Matter_Plugin_Sensor_OnOff;
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_OnOff__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
@ -47,33 +74,6 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_parse_configuration, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Sensor_OnOff__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
@ -240,23 +240,19 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Sensor_OnOff,
2,
&be_class_Matter_Plugin_Device,
be_nested_map(12,
be_nested_map(13,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(ARG, 8), be_nested_str_weak(switch) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Switch_X3Cx_X3E_X20number) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(onoff) },
{ be_const_key_weak(ARG_TYPE, 1), be_const_static_closure(Matter_Plugin_Sensor_OnOff__X3Clambda_X3E_closure) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(parse_configuration, 8), be_const_closure(Matter_Plugin_Sensor_OnOff_parse_configuration_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(2128, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
{ be_const_key_weak(ARG_TYPE, 9), be_const_static_closure(Matter_Plugin_Sensor_OnOff__X3Clambda_X3E_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(OnOff) },
{ be_const_key_weak(read_attribute, 5), be_const_closure(Matter_Plugin_Sensor_OnOff_read_attribute_closure) },
{ be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
{ be_const_key_weak(TYPE, 11), be_nested_str_weak(onoff) },
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Sensor_OnOff_update_shadow_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(OnOff_X20Sensor) },
{ be_const_key_weak(parse_configuration, 5), be_const_closure(Matter_Plugin_Sensor_OnOff_parse_configuration_closure) },
{ be_const_key_weak(shadow_onoff, -1), be_const_var(1) },
{ be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
{ be_const_key_weak(tasmota_switch_index, 6), be_const_var(0) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
@ -267,7 +263,12 @@ be_local_class(Matter_Plugin_Sensor_OnOff,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Sensor_OnOff_update_shadow_closure) },
{ be_const_key_weak(read_attribute, 4), be_const_closure(Matter_Plugin_Sensor_OnOff_read_attribute_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(2128, -1), be_const_int(2) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Sensor_OnOff)
);

View File

@ -6,259 +6,6 @@
extern const bclass be_class_Matter_Plugin_Shutter;
/********************************************************************
** Solidified function: update_inverted
********************************************************************/
be_local_closure(Matter_Plugin_Shutter_update_inverted, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[14]) { /* constants */
/* K0 */ be_nested_str_weak(shadow_shutter_inverted),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(cmd),
/* K3 */ be_nested_str_weak(Status_X2013),
/* K4 */ be_nested_str_weak(contains),
/* K5 */ be_nested_str_weak(StatusSHT),
/* K6 */ be_nested_str_weak(find),
/* K7 */ be_nested_str_weak(SHT),
/* K8 */ be_nested_str_weak(tasmota_shutter_index),
/* K9 */ be_nested_str_weak(Opt),
/* K10 */ be_nested_str_weak(log),
/* K11 */ be_nested_str_weak(MTR_X3A_X20opt_X3A_X20),
/* K12 */ be_const_int(1),
/* K13 */ be_nested_str_weak(MTR_X3A_X20Inverted_X20flag_X3A_X20),
}),
be_str_weak(update_inverted),
&be_const_str_solidified,
( &(const binstruction[51]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x5409FFFE, // 0001 LDINT R2 -1
0x1C040202, // 0002 EQ R1 R1 R2
0x7806002D, // 0003 JMPF R1 #0032
0xB8060200, // 0004 GETNGBL R1 K1
0x8C040302, // 0005 GETMET R1 R1 K2
0x580C0003, // 0006 LDCONST R3 K3
0x50100200, // 0007 LDBOOL R4 1 0
0x7C040600, // 0008 CALL R1 3
0x8C080304, // 0009 GETMET R2 R1 K4
0x58100005, // 000A LDCONST R4 K5
0x7C080400, // 000B CALL R2 2
0x780A0024, // 000C JMPF R2 #0032
0x94040305, // 000D GETIDX R1 R1 K5
0x8C080306, // 000E GETMET R2 R1 K6
0x60100008, // 000F GETGBL R4 G8
0x88140108, // 0010 GETMBR R5 R0 K8
0x7C100200, // 0011 CALL R4 1
0x00120E04, // 0012 ADD R4 K7 R4
0x60140013, // 0013 GETGBL R5 G19
0x7C140000, // 0014 CALL R5 0
0x7C080600, // 0015 CALL R2 3
0x8C080506, // 0016 GETMET R2 R2 K6
0x58100009, // 0017 LDCONST R4 K9
0x7C080400, // 0018 CALL R2 2
0xB80E0200, // 0019 GETNGBL R3 K1
0x8C0C070A, // 001A GETMET R3 R3 K10
0x60140008, // 001B GETGBL R5 G8
0x5C180400, // 001C MOVE R6 R2
0x7C140200, // 001D CALL R5 1
0x00161605, // 001E ADD R5 K11 R5
0x7C0C0400, // 001F CALL R3 2
0x4C0C0000, // 0020 LDNIL R3
0x200C0403, // 0021 NE R3 R2 R3
0x780E000E, // 0022 JMPF R3 #0032
0x600C0009, // 0023 GETGBL R3 G9
0x6010000C, // 0024 GETGBL R4 G12
0x5C140400, // 0025 MOVE R5 R2
0x7C100200, // 0026 CALL R4 1
0x0410090C, // 0027 SUB R4 R4 K12
0x94100404, // 0028 GETIDX R4 R2 R4
0x7C0C0200, // 0029 CALL R3 1
0x90020003, // 002A SETMBR R0 K0 R3
0xB80E0200, // 002B GETNGBL R3 K1
0x8C0C070A, // 002C GETMET R3 R3 K10
0x60140008, // 002D GETGBL R5 G8
0x88180100, // 002E GETMBR R6 R0 K0
0x7C140200, // 002F CALL R5 1
0x00161A05, // 0030 ADD R5 K13 R5
0x7C0C0400, // 0031 CALL R3 2
0x80000000, // 0032 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_Shutter_invoke_request, /* name */
be_nested_proto(
14, /* nstack */
4, /* 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(light),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(command),
/* K5 */ be_nested_str_weak(update_shadow_lazy),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(tasmota),
/* K8 */ be_nested_str_weak(cmd),
/* K9 */ be_nested_str_weak(ShutterStopOpen),
/* K10 */ be_nested_str_weak(tasmota_shutter_index),
/* K11 */ be_const_int(1),
/* K12 */ be_nested_str_weak(update_shadow),
/* K13 */ be_nested_str_weak(ShutterStopClose),
/* K14 */ be_const_int(2),
/* K15 */ be_nested_str_weak(ShutterStop),
/* K16 */ be_nested_str_weak(log),
/* K17 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20),
/* K18 */ be_nested_str_weak(findsubval),
/* K19 */ be_nested_str_weak(shadow_shutter_inverted),
/* K20 */ be_nested_str_weak(ShutterPosition),
/* K21 */ be_nested_str_weak(_X20),
/* K22 */ be_nested_str_weak(pos_X25_X3A),
/* K23 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[116]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0xB8160200, // 0001 GETNGBL R5 K1
0x88140B02, // 0002 GETMBR R5 R5 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x881C0704, // 0004 GETMBR R7 R3 K4
0x54220101, // 0005 LDINT R8 258
0x1C200C08, // 0006 EQ R8 R6 R8
0x78220061, // 0007 JMPF R8 #006A
0x8C200105, // 0008 GETMET R8 R0 K5
0x7C200200, // 0009 CALL R8 1
0x1C200F06, // 000A EQ R8 R7 K6
0x7822000D, // 000B JMPF R8 #001A
0xB8220E00, // 000C GETNGBL R8 K7
0x8C201108, // 000D GETMET R8 R8 K8
0x60280008, // 000E GETGBL R10 G8
0x882C010A, // 000F GETMBR R11 R0 K10
0x002C170B, // 0010 ADD R11 R11 K11
0x7C280200, // 0011 CALL R10 1
0x002A120A, // 0012 ADD R10 K9 R10
0x502C0200, // 0013 LDBOOL R11 1 0
0x7C200600, // 0014 CALL R8 3
0x8C20010C, // 0015 GETMET R8 R0 K12
0x7C200200, // 0016 CALL R8 1
0x50200200, // 0017 LDBOOL R8 1 0
0x80041000, // 0018 RET 1 R8
0x7002004E, // 0019 JMP #0069
0x1C200F0B, // 001A EQ R8 R7 K11
0x7822000D, // 001B JMPF R8 #002A
0xB8220E00, // 001C GETNGBL R8 K7
0x8C201108, // 001D GETMET R8 R8 K8
0x60280008, // 001E GETGBL R10 G8
0x882C010A, // 001F GETMBR R11 R0 K10
0x002C170B, // 0020 ADD R11 R11 K11
0x7C280200, // 0021 CALL R10 1
0x002A1A0A, // 0022 ADD R10 K13 R10
0x502C0200, // 0023 LDBOOL R11 1 0
0x7C200600, // 0024 CALL R8 3
0x8C20010C, // 0025 GETMET R8 R0 K12
0x7C200200, // 0026 CALL R8 1
0x50200200, // 0027 LDBOOL R8 1 0
0x80041000, // 0028 RET 1 R8
0x7002003E, // 0029 JMP #0069
0x1C200F0E, // 002A EQ R8 R7 K14
0x7822000D, // 002B JMPF R8 #003A
0xB8220E00, // 002C GETNGBL R8 K7
0x8C201108, // 002D GETMET R8 R8 K8
0x60280008, // 002E GETGBL R10 G8
0x882C010A, // 002F GETMBR R11 R0 K10
0x002C170B, // 0030 ADD R11 R11 K11
0x7C280200, // 0031 CALL R10 1
0x002A1E0A, // 0032 ADD R10 K15 R10
0x502C0200, // 0033 LDBOOL R11 1 0
0x7C200600, // 0034 CALL R8 3
0x8C20010C, // 0035 GETMET R8 R0 K12
0x7C200200, // 0036 CALL R8 1
0x50200200, // 0037 LDBOOL R8 1 0
0x80041000, // 0038 RET 1 R8
0x7002002E, // 0039 JMP #0069
0x54220004, // 003A LDINT R8 5
0x1C200E08, // 003B EQ R8 R7 R8
0x7822002B, // 003C JMPF R8 #0069
0xB8220E00, // 003D GETNGBL R8 K7
0x8C201110, // 003E GETMET R8 R8 K16
0x60280008, // 003F GETGBL R10 G8
0x5C2C0400, // 0040 MOVE R11 R2
0x7C280200, // 0041 CALL R10 1
0x002A220A, // 0042 ADD R10 K17 R10
0x582C000E, // 0043 LDCONST R11 K14
0x7C200600, // 0044 CALL R8 3
0x8C200512, // 0045 GETMET R8 R2 K18
0x58280006, // 0046 LDCONST R10 K6
0x7C200400, // 0047 CALL R8 2
0x4C240000, // 0048 LDNIL R9
0x20241009, // 0049 NE R9 R8 R9
0x7826001B, // 004A JMPF R9 #0067
0x54260063, // 004B LDINT R9 100
0x0C201009, // 004C DIV R8 R8 R9
0x88240113, // 004D GETMBR R9 R0 K19
0x1C241306, // 004E EQ R9 R9 K6
0x78260001, // 004F JMPF R9 #0052
0x54260063, // 0050 LDINT R9 100
0x04201208, // 0051 SUB R8 R9 R8
0xB8260E00, // 0052 GETNGBL R9 K7
0x8C241308, // 0053 GETMET R9 R9 K8
0x602C0008, // 0054 GETGBL R11 G8
0x8830010A, // 0055 GETMBR R12 R0 K10
0x0030190B, // 0056 ADD R12 R12 K11
0x7C2C0200, // 0057 CALL R11 1
0x002E280B, // 0058 ADD R11 K20 R11
0x002C1715, // 0059 ADD R11 R11 K21
0x60300008, // 005A GETGBL R12 G8
0x5C341000, // 005B MOVE R13 R8
0x7C300200, // 005C CALL R12 1
0x002C160C, // 005D ADD R11 R11 R12
0x50300200, // 005E LDBOOL R12 1 0
0x7C240600, // 005F CALL R9 3
0x60240008, // 0060 GETGBL R9 G8
0x5C281000, // 0061 MOVE R10 R8
0x7C240200, // 0062 CALL R9 1
0x00262C09, // 0063 ADD R9 K22 R9
0x900E2009, // 0064 SETMBR R3 K16 R9
0x8C24010C, // 0065 GETMET R9 R0 K12
0x7C240200, // 0066 CALL R9 1
0x50240200, // 0067 LDBOOL R9 1 0
0x80041200, // 0068 RET 1 R9
0x70020008, // 0069 JMP #0073
0x60200003, // 006A GETGBL R8 G3
0x5C240000, // 006B MOVE R9 R0
0x7C200200, // 006C CALL R8 1
0x8C201117, // 006D GETMET R8 R8 K23
0x5C280200, // 006E MOVE R10 R1
0x5C2C0400, // 006F MOVE R11 R2
0x5C300600, // 0070 MOVE R12 R3
0x7C200800, // 0071 CALL R8 4
0x80041000, // 0072 RET 1 R8
0x80000000, // 0073 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
@ -454,33 +201,6 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Shutter__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_sensors
********************************************************************/
@ -572,47 +292,6 @@ be_local_closure(Matter_Plugin_Shutter_parse_sensors, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
be_local_closure(Matter_Plugin_Shutter_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_shutter_index),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_const_int(0),
/* K4 */ be_nested_str_weak(shadow_shutter_inverted),
}),
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x4C0C0000, // 0005 LDNIL R3
0x1C080403, // 0006 EQ R2 R2 R3
0x780A0000, // 0007 JMPF R2 #0009
0x90020103, // 0008 SETMBR R0 K0 K3
0x5409FFFE, // 0009 LDINT R2 -1
0x90020802, // 000A SETMBR R0 K4 R2
0x80000000, // 000B RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: update_shadow
********************************************************************/
@ -666,6 +345,310 @@ be_local_closure(Matter_Plugin_Shutter_update_shadow, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_Shutter_invoke_request, /* name */
be_nested_proto(
14, /* nstack */
4, /* 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(light),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(command),
/* K5 */ be_nested_str_weak(update_shadow_lazy),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(tasmota),
/* K8 */ be_nested_str_weak(cmd),
/* K9 */ be_nested_str_weak(ShutterStopOpen),
/* K10 */ be_nested_str_weak(tasmota_shutter_index),
/* K11 */ be_const_int(1),
/* K12 */ be_nested_str_weak(update_shadow),
/* K13 */ be_nested_str_weak(ShutterStopClose),
/* K14 */ be_const_int(2),
/* K15 */ be_nested_str_weak(ShutterStop),
/* K16 */ be_nested_str_weak(log),
/* K17 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20),
/* K18 */ be_nested_str_weak(findsubval),
/* K19 */ be_nested_str_weak(shadow_shutter_inverted),
/* K20 */ be_nested_str_weak(ShutterPosition),
/* K21 */ be_nested_str_weak(_X20),
/* K22 */ be_nested_str_weak(pos_X25_X3A),
/* K23 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[116]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0xB8160200, // 0001 GETNGBL R5 K1
0x88140B02, // 0002 GETMBR R5 R5 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x881C0704, // 0004 GETMBR R7 R3 K4
0x54220101, // 0005 LDINT R8 258
0x1C200C08, // 0006 EQ R8 R6 R8
0x78220061, // 0007 JMPF R8 #006A
0x8C200105, // 0008 GETMET R8 R0 K5
0x7C200200, // 0009 CALL R8 1
0x1C200F06, // 000A EQ R8 R7 K6
0x7822000D, // 000B JMPF R8 #001A
0xB8220E00, // 000C GETNGBL R8 K7
0x8C201108, // 000D GETMET R8 R8 K8
0x60280008, // 000E GETGBL R10 G8
0x882C010A, // 000F GETMBR R11 R0 K10
0x002C170B, // 0010 ADD R11 R11 K11
0x7C280200, // 0011 CALL R10 1
0x002A120A, // 0012 ADD R10 K9 R10
0x502C0200, // 0013 LDBOOL R11 1 0
0x7C200600, // 0014 CALL R8 3
0x8C20010C, // 0015 GETMET R8 R0 K12
0x7C200200, // 0016 CALL R8 1
0x50200200, // 0017 LDBOOL R8 1 0
0x80041000, // 0018 RET 1 R8
0x7002004E, // 0019 JMP #0069
0x1C200F0B, // 001A EQ R8 R7 K11
0x7822000D, // 001B JMPF R8 #002A
0xB8220E00, // 001C GETNGBL R8 K7
0x8C201108, // 001D GETMET R8 R8 K8
0x60280008, // 001E GETGBL R10 G8
0x882C010A, // 001F GETMBR R11 R0 K10
0x002C170B, // 0020 ADD R11 R11 K11
0x7C280200, // 0021 CALL R10 1
0x002A1A0A, // 0022 ADD R10 K13 R10
0x502C0200, // 0023 LDBOOL R11 1 0
0x7C200600, // 0024 CALL R8 3
0x8C20010C, // 0025 GETMET R8 R0 K12
0x7C200200, // 0026 CALL R8 1
0x50200200, // 0027 LDBOOL R8 1 0
0x80041000, // 0028 RET 1 R8
0x7002003E, // 0029 JMP #0069
0x1C200F0E, // 002A EQ R8 R7 K14
0x7822000D, // 002B JMPF R8 #003A
0xB8220E00, // 002C GETNGBL R8 K7
0x8C201108, // 002D GETMET R8 R8 K8
0x60280008, // 002E GETGBL R10 G8
0x882C010A, // 002F GETMBR R11 R0 K10
0x002C170B, // 0030 ADD R11 R11 K11
0x7C280200, // 0031 CALL R10 1
0x002A1E0A, // 0032 ADD R10 K15 R10
0x502C0200, // 0033 LDBOOL R11 1 0
0x7C200600, // 0034 CALL R8 3
0x8C20010C, // 0035 GETMET R8 R0 K12
0x7C200200, // 0036 CALL R8 1
0x50200200, // 0037 LDBOOL R8 1 0
0x80041000, // 0038 RET 1 R8
0x7002002E, // 0039 JMP #0069
0x54220004, // 003A LDINT R8 5
0x1C200E08, // 003B EQ R8 R7 R8
0x7822002B, // 003C JMPF R8 #0069
0xB8220E00, // 003D GETNGBL R8 K7
0x8C201110, // 003E GETMET R8 R8 K16
0x60280008, // 003F GETGBL R10 G8
0x5C2C0400, // 0040 MOVE R11 R2
0x7C280200, // 0041 CALL R10 1
0x002A220A, // 0042 ADD R10 K17 R10
0x582C000E, // 0043 LDCONST R11 K14
0x7C200600, // 0044 CALL R8 3
0x8C200512, // 0045 GETMET R8 R2 K18
0x58280006, // 0046 LDCONST R10 K6
0x7C200400, // 0047 CALL R8 2
0x4C240000, // 0048 LDNIL R9
0x20241009, // 0049 NE R9 R8 R9
0x7826001B, // 004A JMPF R9 #0067
0x54260063, // 004B LDINT R9 100
0x0C201009, // 004C DIV R8 R8 R9
0x88240113, // 004D GETMBR R9 R0 K19
0x1C241306, // 004E EQ R9 R9 K6
0x78260001, // 004F JMPF R9 #0052
0x54260063, // 0050 LDINT R9 100
0x04201208, // 0051 SUB R8 R9 R8
0xB8260E00, // 0052 GETNGBL R9 K7
0x8C241308, // 0053 GETMET R9 R9 K8
0x602C0008, // 0054 GETGBL R11 G8
0x8830010A, // 0055 GETMBR R12 R0 K10
0x0030190B, // 0056 ADD R12 R12 K11
0x7C2C0200, // 0057 CALL R11 1
0x002E280B, // 0058 ADD R11 K20 R11
0x002C1715, // 0059 ADD R11 R11 K21
0x60300008, // 005A GETGBL R12 G8
0x5C341000, // 005B MOVE R13 R8
0x7C300200, // 005C CALL R12 1
0x002C160C, // 005D ADD R11 R11 R12
0x50300200, // 005E LDBOOL R12 1 0
0x7C240600, // 005F CALL R9 3
0x60240008, // 0060 GETGBL R9 G8
0x5C281000, // 0061 MOVE R10 R8
0x7C240200, // 0062 CALL R9 1
0x00262C09, // 0063 ADD R9 K22 R9
0x900E2009, // 0064 SETMBR R3 K16 R9
0x8C24010C, // 0065 GETMET R9 R0 K12
0x7C240200, // 0066 CALL R9 1
0x50240200, // 0067 LDBOOL R9 1 0
0x80041200, // 0068 RET 1 R9
0x70020008, // 0069 JMP #0073
0x60200003, // 006A GETGBL R8 G3
0x5C240000, // 006B MOVE R9 R0
0x7C200200, // 006C CALL R8 1
0x8C201117, // 006D GETMET R8 R8 K23
0x5C280200, // 006E MOVE R10 R1
0x5C2C0400, // 006F MOVE R11 R2
0x5C300600, // 0070 MOVE R12 R3
0x7C200800, // 0071 CALL R8 4
0x80041000, // 0072 RET 1 R8
0x80000000, // 0073 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
be_local_closure(Matter_Plugin_Shutter_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota_shutter_index),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(ARG),
/* K3 */ be_const_int(0),
/* K4 */ be_nested_str_weak(shadow_shutter_inverted),
}),
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x8C080301, // 0000 GETMET R2 R1 K1
0x88100102, // 0001 GETMBR R4 R0 K2
0x7C080400, // 0002 CALL R2 2
0x90020002, // 0003 SETMBR R0 K0 R2
0x88080100, // 0004 GETMBR R2 R0 K0
0x4C0C0000, // 0005 LDNIL R3
0x1C080403, // 0006 EQ R2 R2 R3
0x780A0000, // 0007 JMPF R2 #0009
0x90020103, // 0008 SETMBR R0 K0 K3
0x5409FFFE, // 0009 LDINT R2 -1
0x90020802, // 000A SETMBR R0 K4 R2
0x80000000, // 000B RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: update_inverted
********************************************************************/
be_local_closure(Matter_Plugin_Shutter_update_inverted, /* 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[11]) { /* constants */
/* K0 */ be_nested_str_weak(shadow_shutter_inverted),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(cmd),
/* K3 */ be_nested_str_weak(Status_X2013),
/* K4 */ be_nested_str_weak(contains),
/* K5 */ be_nested_str_weak(StatusSHT),
/* K6 */ be_nested_str_weak(find),
/* K7 */ be_nested_str_weak(SHT),
/* K8 */ be_nested_str_weak(tasmota_shutter_index),
/* K9 */ be_nested_str_weak(Opt),
/* K10 */ be_const_int(1),
}),
be_str_weak(update_inverted),
&be_const_str_solidified,
( &(const binstruction[37]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x5409FFFE, // 0001 LDINT R2 -1
0x1C040202, // 0002 EQ R1 R1 R2
0x7806001F, // 0003 JMPF R1 #0024
0xB8060200, // 0004 GETNGBL R1 K1
0x8C040302, // 0005 GETMET R1 R1 K2
0x580C0003, // 0006 LDCONST R3 K3
0x50100200, // 0007 LDBOOL R4 1 0
0x7C040600, // 0008 CALL R1 3
0x8C080304, // 0009 GETMET R2 R1 K4
0x58100005, // 000A LDCONST R4 K5
0x7C080400, // 000B CALL R2 2
0x780A0016, // 000C JMPF R2 #0024
0x94040305, // 000D GETIDX R1 R1 K5
0x8C080306, // 000E GETMET R2 R1 K6
0x60100008, // 000F GETGBL R4 G8
0x88140108, // 0010 GETMBR R5 R0 K8
0x7C100200, // 0011 CALL R4 1
0x00120E04, // 0012 ADD R4 K7 R4
0x60140013, // 0013 GETGBL R5 G19
0x7C140000, // 0014 CALL R5 0
0x7C080600, // 0015 CALL R2 3
0x8C080506, // 0016 GETMET R2 R2 K6
0x58100009, // 0017 LDCONST R4 K9
0x7C080400, // 0018 CALL R2 2
0x4C0C0000, // 0019 LDNIL R3
0x200C0403, // 001A NE R3 R2 R3
0x780E0007, // 001B JMPF R3 #0024
0x600C0009, // 001C GETGBL R3 G9
0x6010000C, // 001D GETGBL R4 G12
0x5C140400, // 001E MOVE R5 R2
0x7C100200, // 001F CALL R4 1
0x0410090A, // 0020 SUB R4 R4 K10
0x94100404, // 0021 GETIDX R4 R2 R4
0x7C0C0200, // 0022 CALL R3 1
0x90020003, // 0023 SETMBR R0 K0 R3
0x80000000, // 0024 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: <lambda>
********************************************************************/
be_local_closure(Matter_Plugin_Shutter__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040009, // 0000 GETGBL R1 G9
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin_Shutter
********************************************************************/
@ -673,16 +656,16 @@ extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Shutter,
6,
&be_class_Matter_Plugin_Device,
be_nested_map(18,
be_nested_map(19,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(shadow_shutter_tilt, -1), be_const_var(3) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(shutter) },
{ 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(514, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(update_shadow, 13), be_const_closure(Matter_Plugin_Shutter_update_shadow_closure) },
{ be_const_key_weak(read_attribute, 4), be_const_closure(Matter_Plugin_Shutter_read_attribute_closure) },
{ be_const_key_weak(shadow_shutter_pos, 18), be_const_var(1) },
{ be_const_key_weak(tasmota_shutter_index, -1), be_const_var(0) },
{ be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_Shutter_parse_sensors_closure) },
{ be_const_key_weak(shadow_shutter_direction, -1), be_const_var(4) },
{ be_const_key_weak(shadow_shutter_target, -1), be_const_var(2) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Shutter_invoke_request_closure) },
{ be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Enter_X20Relay_X3Cx_X3E_X20number) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
@ -701,19 +684,20 @@ be_local_class(Matter_Plugin_Shutter,
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(invoke_request, 14), be_const_closure(Matter_Plugin_Shutter_invoke_request_closure) },
{ be_const_key_weak(read_attribute, 16), be_const_closure(Matter_Plugin_Shutter_read_attribute_closure) },
{ be_const_key_weak(shadow_shutter_inverted, 3), be_const_var(5) },
{ be_const_key_weak(shadow_shutter_pos, -1), be_const_var(1) },
{ be_const_key_weak(ARG, -1), be_nested_str_weak(shutter) },
{ be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin_Shutter__X3Clambda_X3E_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(Shutter) },
{ be_const_key_weak(update_inverted, 11), be_const_closure(Matter_Plugin_Shutter_update_inverted_closure) },
{ be_const_key_weak(update_shadow, 5), be_const_closure(Matter_Plugin_Shutter_update_shadow_closure) },
{ be_const_key_weak(NAME, 6), be_nested_str_weak(Shutter) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(shutter) },
{ be_const_key_weak(shadow_shutter_inverted, -1), be_const_var(5) },
{ be_const_key_weak(ARG, 7), be_nested_str_weak(shutter) },
{ be_const_key_weak(shadow_shutter_tilt, 8), be_const_var(3) },
{ be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_Shutter_parse_configuration_closure) },
{ be_const_key_weak(shadow_shutter_target, -1), be_const_var(2) },
{ be_const_key_weak(tasmota_shutter_index, -1), be_const_var(0) },
{ be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_Shutter_parse_sensors_closure) },
{ be_const_key_weak(shadow_shutter_direction, 0), be_const_var(4) },
{ be_const_key_weak(update_inverted, -1), be_const_closure(Matter_Plugin_Shutter_update_inverted_closure) },
{ be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin_Shutter__X3Clambda_X3E_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(514, -1), be_const_int(2) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Shutter)
);

View File

@ -1535,7 +1535,7 @@ be_local_closure(Matter_Session_get_ac, /* name */
********************************************************************/
be_local_closure(Matter_Session_counter_snd_next, /* name */
be_nested_proto(
9, /* nstack */
7, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@ -1543,54 +1543,41 @@ be_local_closure(Matter_Session_counter_snd_next, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[15]) { /* constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(_counter_snd_impl),
/* K2 */ be_nested_str_weak(next),
/* 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_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_snd_X3D_X25i),
/* K7 */ be_const_int(3),
/* K8 */ be_nested_str_weak(matter),
/* K9 */ be_nested_str_weak(Counter),
/* K10 */ be_nested_str_weak(is_greater),
/* K11 */ be_nested_str_weak(counter_snd),
/* K12 */ be_nested_str_weak(_COUNTER_SND_INCR),
/* K13 */ be_nested_str_weak(does_persist),
/* K14 */ be_nested_str_weak(save),
/* K3 */ be_nested_str_weak(matter),
/* K4 */ be_nested_str_weak(Counter),
/* K5 */ be_nested_str_weak(is_greater),
/* K6 */ be_nested_str_weak(counter_snd),
/* K7 */ be_nested_str_weak(_COUNTER_SND_INCR),
/* K8 */ be_nested_str_weak(does_persist),
/* K9 */ be_nested_str_weak(save),
}),
be_str_weak(counter_snd_next),
&be_const_str_solidified,
( &(const binstruction[28]) { /* code */
( &(const binstruction[20]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x88080101, // 0001 GETMBR R2 R0 K1
0x8C080502, // 0002 GETMET R2 R2 K2
0x7C080200, // 0003 CALL R2 1
0xB80E0600, // 0004 GETNGBL R3 K3
0x8C0C0704, // 0005 GETMET R3 R3 K4
0x8C140305, // 0006 GETMET R5 R1 K5
0x581C0006, // 0007 LDCONST R7 K6
0x5C200400, // 0008 MOVE R8 R2
0x7C140600, // 0009 CALL R5 3
0x58180007, // 000A LDCONST R6 K7
0x7C0C0600, // 000B CALL R3 3
0xB80E1000, // 000C GETNGBL R3 K8
0x880C0709, // 000D GETMBR R3 R3 K9
0x8C0C070A, // 000E GETMET R3 R3 K10
0x5C140400, // 000F MOVE R5 R2
0x8818010B, // 0010 GETMBR R6 R0 K11
0x7C0C0600, // 0011 CALL R3 3
0x780E0007, // 0012 JMPF R3 #001B
0x880C010C, // 0013 GETMBR R3 R0 K12
0x000C0403, // 0014 ADD R3 R2 R3
0x90021603, // 0015 SETMBR R0 K11 R3
0x8C0C010D, // 0016 GETMET R3 R0 K13
0x7C0C0200, // 0017 CALL R3 1
0x780E0001, // 0018 JMPF R3 #001B
0x8C0C010E, // 0019 GETMET R3 R0 K14
0x7C0C0200, // 001A CALL R3 1
0x80040400, // 001B RET 1 R2
0x880C0704, // 0005 GETMBR R3 R3 K4
0x8C0C0705, // 0006 GETMET R3 R3 K5
0x5C140400, // 0007 MOVE R5 R2
0x88180106, // 0008 GETMBR R6 R0 K6
0x7C0C0600, // 0009 CALL R3 3
0x780E0007, // 000A JMPF R3 #0013
0x880C0107, // 000B GETMBR R3 R0 K7
0x000C0403, // 000C ADD R3 R2 R3
0x90020C03, // 000D SETMBR R0 K6 R3
0x8C0C0108, // 000E GETMET R3 R0 K8
0x7C0C0200, // 000F CALL R3 1
0x780E0001, // 0010 JMPF R3 #0013
0x8C0C0109, // 0011 GETMET R3 R0 K9
0x7C0C0200, // 0012 CALL R3 1
0x80040400, // 0013 RET 1 R2
})
)
);

View File

@ -1096,7 +1096,7 @@ be_local_closure(Matter_Session_Store_find_session_by_resumption_id, /* name *
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[13]) { /* constants */
( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_const_int(0),
/* K2 */ be_nested_str_weak(sessions),
@ -1105,15 +1105,13 @@ be_local_closure(Matter_Session_Store_find_session_by_resumption_id, /* name *
/* K5 */ be_nested_str_weak(format),
/* K6 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s),
/* K7 */ be_nested_str_weak(resumption_id),
/* K8 */ be_const_int(3),
/* K9 */ be_nested_str_weak(shared_secret),
/* K10 */ be_nested_str_weak(MTR_X3A_X20session_X2Eshared_secret_X3D_X25s),
/* K11 */ be_nested_str_weak(update),
/* K12 */ be_const_int(1),
/* K8 */ be_nested_str_weak(shared_secret),
/* K9 */ be_nested_str_weak(update),
/* K10 */ be_const_int(1),
}),
be_str_weak(find_session_by_resumption_id),
&be_const_str_solidified,
( &(const binstruction[49]) { /* code */
( &(const binstruction[39]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x5C0C0200, // 0001 MOVE R3 R1
0x740E0001, // 0002 JMPT R3 #0005
@ -1125,7 +1123,7 @@ be_local_closure(Matter_Session_Store_find_session_by_resumption_id, /* name *
0x5C180800, // 0008 MOVE R6 R4
0x7C140200, // 0009 CALL R5 1
0x14140605, // 000A LT R5 R3 R5
0x78160023, // 000B JMPF R5 #0030
0x78160019, // 000B JMPF R5 #0026
0x94140803, // 000C GETIDX R5 R4 R3
0xB81A0600, // 000D GETNGBL R6 K3
0x8C180D04, // 000E GETMET R6 R6 K4
@ -1138,31 +1136,21 @@ be_local_closure(Matter_Session_Store_find_session_by_resumption_id, /* name *
0x5C340200, // 0015 MOVE R13 R1
0x7C300200, // 0016 CALL R12 1
0x7C200800, // 0017 CALL R8 4
0x58240008, // 0018 LDCONST R9 K8
0x54260003, // 0018 LDINT R9 4
0x7C180600, // 0019 CALL R6 3
0x88180B07, // 001A GETMBR R6 R5 K7
0x1C180C01, // 001B EQ R6 R6 R1
0x781A0010, // 001C JMPF R6 #002E
0x88180B09, // 001D GETMBR R6 R5 K9
0x781A0006, // 001C JMPF R6 #0024
0x88180B08, // 001D GETMBR R6 R5 K8
0x4C1C0000, // 001E LDNIL R7
0x20180C07, // 001F NE R6 R6 R7
0x781A000C, // 0020 JMPF R6 #002E
0xB81A0600, // 0021 GETNGBL R6 K3
0x8C180D04, // 0022 GETMET R6 R6 K4
0x8C200505, // 0023 GETMET R8 R2 K5
0x5828000A, // 0024 LDCONST R10 K10
0x602C0008, // 0025 GETGBL R11 G8
0x88300B09, // 0026 GETMBR R12 R5 K9
0x7C2C0200, // 0027 CALL R11 1
0x7C200600, // 0028 CALL R8 3
0x58240008, // 0029 LDCONST R9 K8
0x7C180600, // 002A CALL R6 3
0x8C180B0B, // 002B GETMET R6 R5 K11
0x7C180200, // 002C CALL R6 1
0x80040A00, // 002D RET 1 R5
0x000C070C, // 002E ADD R3 R3 K12
0x7001FFD6, // 002F JMP #0007
0x80000000, // 0030 RET 0
0x781A0002, // 0020 JMPF R6 #0024
0x8C180B09, // 0021 GETMET R6 R5 K9
0x7C180200, // 0022 CALL R6 1
0x80040A00, // 0023 RET 1 R5
0x000C070A, // 0024 ADD R3 R3 K10
0x7001FFE0, // 0025 JMP #0007
0x80000000, // 0026 RET 0
})
)
);
@ -1182,7 +1170,7 @@ be_local_closure(Matter_Session_Store_save_fabrics, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[28]) { /* constants */
( &(const bvalue[29]) { /* constants */
/* K0 */ be_nested_str_weak(json),
/* K1 */ be_nested_str_weak(remove_expired),
/* K2 */ be_const_int(0),
@ -1206,11 +1194,12 @@ be_local_closure(Matter_Session_Store_save_fabrics, /* name */
/* K20 */ be_nested_str_weak(log),
/* K21 */ be_nested_str_weak(format),
/* K22 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25i_X20fabric_X28s_X29_X20and_X20_X25i_X20session_X28s_X29),
/* K23 */ be_const_int(2),
/* K23 */ be_const_int(3),
/* K24 */ be_nested_str_weak(device),
/* K25 */ be_nested_str_weak(event_fabrics_saved),
/* K26 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
/* K27 */ be_nested_str_weak(_X7C),
/* K28 */ be_const_int(2),
}),
be_str_weak(save_fabrics),
&be_const_str_solidified,
@ -1297,7 +1286,7 @@ be_local_closure(Matter_Session_Store_save_fabrics, /* name */
0x5C2C0C00, // 004F MOVE R11 R6
0x7C280200, // 0050 CALL R10 1
0x0024120A, // 0051 ADD R9 R9 R10
0x58280017, // 0052 LDCONST R10 K23
0x5828001C, // 0052 LDCONST R10 K28
0x7C1C0600, // 0053 CALL R7 3
0x70020000, // 0054 JMP #0056
0xB0080000, // 0055 RAISE 2 R0 R0

View File

@ -219,7 +219,7 @@ be_local_closure(Matter_UDPServer__resend_packets, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[23]) { /* constants */
( &(const bvalue[22]) { /* constants */
/* K0 */ be_const_int(0),
/* K1 */ be_nested_str_weak(packets_sent),
/* K2 */ be_nested_str_weak(tasmota),
@ -230,19 +230,18 @@ be_local_closure(Matter_UDPServer__resend_packets, /* name */
/* K7 */ be_nested_str_weak(log),
/* K8 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D),
/* K9 */ be_nested_str_weak(msg_id),
/* K10 */ be_const_int(3),
/* K11 */ be_nested_str_weak(send),
/* K12 */ be_nested_str_weak(millis),
/* K13 */ be_nested_str_weak(_backoff_time),
/* K14 */ be_const_int(1),
/* K15 */ be_nested_str_weak(string),
/* K16 */ be_nested_str_weak(remove),
/* K17 */ be_nested_str_weak(format),
/* K18 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i),
/* K19 */ be_nested_str_weak(session_id),
/* K20 */ be_nested_str_weak(addr),
/* K21 */ be_nested_str_weak(port),
/* K22 */ be_const_int(2),
/* K10 */ be_nested_str_weak(send),
/* K11 */ be_nested_str_weak(millis),
/* K12 */ be_nested_str_weak(_backoff_time),
/* K13 */ be_const_int(1),
/* K14 */ be_nested_str_weak(string),
/* K15 */ be_nested_str_weak(remove),
/* K16 */ be_nested_str_weak(format),
/* K17 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i),
/* K18 */ be_nested_str_weak(session_id),
/* K19 */ be_nested_str_weak(addr),
/* K20 */ be_nested_str_weak(port),
/* K21 */ be_const_int(3),
}),
be_str_weak(_resend_packets),
&be_const_str_solidified,
@ -270,42 +269,42 @@ be_local_closure(Matter_UDPServer__resend_packets, /* name */
0x88180509, // 0014 GETMBR R6 R2 K9
0x7C140200, // 0015 CALL R5 1
0x00161005, // 0016 ADD R5 K8 R5
0x5818000A, // 0017 LDCONST R6 K10
0x541A0003, // 0017 LDINT R6 4
0x7C0C0600, // 0018 CALL R3 3
0x8C0C010B, // 0019 GETMET R3 R0 K11
0x8C0C010A, // 0019 GETMET R3 R0 K10
0x5C140400, // 001A MOVE R5 R2
0x7C0C0400, // 001B CALL R3 2
0xB80E0400, // 001C GETNGBL R3 K2
0x8C0C070C, // 001D GETMET R3 R3 K12
0x8C0C070B, // 001D GETMET R3 R3 K11
0x7C0C0200, // 001E CALL R3 1
0x8C10010D, // 001F GETMET R4 R0 K13
0x8C10010C, // 001F GETMET R4 R0 K12
0x88180505, // 0020 GETMBR R6 R2 K5
0x7C100400, // 0021 CALL R4 2
0x000C0604, // 0022 ADD R3 R3 R4
0x900A0803, // 0023 SETMBR R2 K4 R3
0x880C0505, // 0024 GETMBR R3 R2 K5
0x000C070E, // 0025 ADD R3 R3 K14
0x000C070D, // 0025 ADD R3 R3 K13
0x900A0A03, // 0026 SETMBR R2 K5 R3
0x0004030E, // 0027 ADD R1 R1 K14
0x0004030D, // 0027 ADD R1 R1 K13
0x7002000F, // 0028 JMP #0039
0xA40E1E00, // 0029 IMPORT R3 K15
0xA40E1C00, // 0029 IMPORT R3 K14
0x88100101, // 002A GETMBR R4 R0 K1
0x8C100910, // 002B GETMET R4 R4 K16
0x8C10090F, // 002B GETMET R4 R4 K15
0x5C180200, // 002C MOVE R6 R1
0x7C100400, // 002D CALL R4 2
0xB8120400, // 002E GETNGBL R4 K2
0x8C100907, // 002F GETMET R4 R4 K7
0x8C180711, // 0030 GETMET R6 R3 K17
0x58200012, // 0031 LDCONST R8 K18
0x88240513, // 0032 GETMBR R9 R2 K19
0x88280514, // 0033 GETMBR R10 R2 K20
0x882C0515, // 0034 GETMBR R11 R2 K21
0x8C180710, // 0030 GETMET R6 R3 K16
0x58200011, // 0031 LDCONST R8 K17
0x88240512, // 0032 GETMBR R9 R2 K18
0x88280513, // 0033 GETMBR R10 R2 K19
0x882C0514, // 0034 GETMBR R11 R2 K20
0x88300509, // 0035 GETMBR R12 R2 K9
0x7C180C00, // 0036 CALL R6 6
0x581C0016, // 0037 LDCONST R7 K22
0x581C0015, // 0037 LDCONST R7 K21
0x7C100600, // 0038 CALL R4 3
0x70020000, // 0039 JMP #003B
0x0004030E, // 003A ADD R1 R1 K14
0x0004030D, // 003A ADD R1 R1 K13
0x7001FFC4, // 003B JMP #0001
0x80000000, // 003C RET 0
})
@ -395,7 +394,7 @@ be_local_closure(Matter_UDPServer_every_50ms, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[15]) { /* constants */
( &(const bvalue[14]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_const_int(0),
/* K2 */ be_nested_str_weak(udp_socket),
@ -407,10 +406,9 @@ be_local_closure(Matter_UDPServer_every_50ms, /* name */
/* K8 */ be_nested_str_weak(log),
/* K9 */ be_nested_str_weak(format),
/* K10 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i),
/* K11 */ be_const_int(3),
/* K12 */ be_nested_str_weak(dispatch_cb),
/* K13 */ be_nested_str_weak(MAX_PACKETS_READ),
/* K14 */ be_nested_str_weak(_resend_packets),
/* K11 */ be_nested_str_weak(dispatch_cb),
/* K12 */ be_nested_str_weak(MAX_PACKETS_READ),
/* K13 */ be_nested_str_weak(_resend_packets),
}),
be_str_weak(every_50ms),
&be_const_str_solidified,
@ -440,16 +438,16 @@ be_local_closure(Matter_UDPServer_every_50ms, /* name */
0x5C2C0800, // 0016 MOVE R11 R4
0x5C300A00, // 0017 MOVE R12 R5
0x7C200800, // 0018 CALL R8 4
0x5824000B, // 0019 LDCONST R9 K11
0x54260003, // 0019 LDINT R9 4
0x7C180600, // 001A CALL R6 3
0x8818010C, // 001B GETMBR R6 R0 K12
0x8818010B, // 001B GETMBR R6 R0 K11
0x781A0004, // 001C JMPF R6 #0022
0x8C18010C, // 001D GETMET R6 R0 K12
0x8C18010B, // 001D GETMET R6 R0 K11
0x5C200600, // 001E MOVE R8 R3
0x5C240800, // 001F MOVE R9 R4
0x5C280A00, // 0020 MOVE R10 R5
0x7C180800, // 0021 CALL R6 4
0x8818010D, // 0022 GETMBR R6 R0 K13
0x8818010C, // 0022 GETMBR R6 R0 K12
0x14180406, // 0023 LT R6 R2 R6
0x781A0004, // 0024 JMPF R6 #002A
0x88180102, // 0025 GETMBR R6 R0 K2
@ -459,7 +457,7 @@ be_local_closure(Matter_UDPServer_every_50ms, /* name */
0x70020000, // 0029 JMP #002B
0x4C0C0000, // 002A LDNIL R3
0x7001FFDD, // 002B JMP #000A
0x8C10010E, // 002C GETMET R4 R0 K14
0x8C10010D, // 002C GETMET R4 R0 K13
0x7C100200, // 002D CALL R4 1
0x80000000, // 002E RET 0
})
@ -578,67 +576,57 @@ be_local_closure(Matter_UDPServer_received_ack, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(ack_message_counter),
/* K1 */ be_nested_str_weak(exchange_id),
/* K2 */ be_nested_str_weak(tasmota),
/* K3 */ be_nested_str_weak(log),
/* K4 */ be_nested_str_weak(MTR_X3A_X20receveived_X20ACK_X20id_X3D),
/* K5 */ be_const_int(3),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(packets_sent),
/* K8 */ be_nested_str_weak(msg_id),
/* K9 */ be_nested_str_weak(remove),
/* K10 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D),
/* K11 */ be_const_int(1),
/* K2 */ be_const_int(0),
/* K3 */ be_nested_str_weak(packets_sent),
/* K4 */ be_nested_str_weak(msg_id),
/* K5 */ be_nested_str_weak(remove),
/* K6 */ be_nested_str_weak(tasmota),
/* K7 */ be_nested_str_weak(log),
/* K8 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D),
/* K9 */ be_const_int(1),
}),
be_str_weak(received_ack),
&be_const_str_solidified,
( &(const binstruction[44]) { /* code */
( &(const binstruction[36]) { /* code */
0x88080300, // 0000 GETMBR R2 R1 K0
0x880C0301, // 0001 GETMBR R3 R1 K1
0x4C100000, // 0002 LDNIL R4
0x1C100404, // 0003 EQ R4 R2 R4
0x78120000, // 0004 JMPF R4 #0006
0x80000800, // 0005 RET 0
0xB8120400, // 0006 GETNGBL R4 K2
0x8C100903, // 0007 GETMET R4 R4 K3
0x60180008, // 0008 GETGBL R6 G8
0x5C1C0400, // 0009 MOVE R7 R2
0x7C180200, // 000A CALL R6 1
0x001A0806, // 000B ADD R6 K4 R6
0x581C0005, // 000C LDCONST R7 K5
0x7C100600, // 000D CALL R4 3
0x58100006, // 000E LDCONST R4 K6
0x6014000C, // 000F GETGBL R5 G12
0x88180107, // 0010 GETMBR R6 R0 K7
0x7C140200, // 0011 CALL R5 1
0x14140805, // 0012 LT R5 R4 R5
0x78160016, // 0013 JMPF R5 #002B
0x88140107, // 0014 GETMBR R5 R0 K7
0x94140A04, // 0015 GETIDX R5 R5 R4
0x88180B08, // 0016 GETMBR R6 R5 K8
0x1C180C02, // 0017 EQ R6 R6 R2
0x781A000F, // 0018 JMPF R6 #0029
0x88180B01, // 0019 GETMBR R6 R5 K1
0x1C180C03, // 001A EQ R6 R6 R3
0x781A000C, // 001B JMPF R6 #0029
0x88180107, // 001C GETMBR R6 R0 K7
0x8C180D09, // 001D GETMET R6 R6 K9
0x5C200800, // 001E MOVE R8 R4
0x7C180400, // 001F CALL R6 2
0xB81A0400, // 0020 GETNGBL R6 K2
0x8C180D03, // 0021 GETMET R6 R6 K3
0x60200008, // 0022 GETGBL R8 G8
0x5C240400, // 0023 MOVE R9 R2
0x7C200200, // 0024 CALL R8 1
0x00221408, // 0025 ADD R8 K10 R8
0x58240005, // 0026 LDCONST R9 K5
0x7C180600, // 0027 CALL R6 3
0x70020000, // 0028 JMP #002A
0x0010090B, // 0029 ADD R4 R4 K11
0x7001FFE3, // 002A JMP #000F
0x80000000, // 002B RET 0
0x58100002, // 0006 LDCONST R4 K2
0x6014000C, // 0007 GETGBL R5 G12
0x88180103, // 0008 GETMBR R6 R0 K3
0x7C140200, // 0009 CALL R5 1
0x14140805, // 000A LT R5 R4 R5
0x78160016, // 000B JMPF R5 #0023
0x88140103, // 000C GETMBR R5 R0 K3
0x94140A04, // 000D GETIDX R5 R5 R4
0x88180B04, // 000E GETMBR R6 R5 K4
0x1C180C02, // 000F EQ R6 R6 R2
0x781A000F, // 0010 JMPF R6 #0021
0x88180B01, // 0011 GETMBR R6 R5 K1
0x1C180C03, // 0012 EQ R6 R6 R3
0x781A000C, // 0013 JMPF R6 #0021
0x88180103, // 0014 GETMBR R6 R0 K3
0x8C180D05, // 0015 GETMET R6 R6 K5
0x5C200800, // 0016 MOVE R8 R4
0x7C180400, // 0017 CALL R6 2
0xB81A0C00, // 0018 GETNGBL R6 K6
0x8C180D07, // 0019 GETMET R6 R6 K7
0x60200008, // 001A GETGBL R8 G8
0x5C240400, // 001B MOVE R9 R2
0x7C200200, // 001C CALL R8 1
0x00221008, // 001D ADD R8 K8 R8
0x54260003, // 001E LDINT R9 4
0x7C180600, // 001F CALL R6 3
0x70020000, // 0020 JMP #0022
0x00100909, // 0021 ADD R4 R4 K9
0x7001FFE3, // 0022 JMP #0007
0x80000000, // 0023 RET 0
})
)
);
@ -717,7 +705,7 @@ be_local_closure(Matter_UDPServer_send, /* name */
/* K10 */ be_nested_str_weak(format),
/* K11 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
/* K12 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
/* K13 */ be_const_int(2),
/* K13 */ be_const_int(3),
}),
be_str_weak(send),
&be_const_str_solidified,

File diff suppressed because it is too large Load Diff

View File

@ -1265,7 +1265,7 @@ bool WifiHostByName(const char* aHostname, IPAddress& aResult) {
if (success) {
// Host name resolved
if (0xFFFFFFFF != (uint32_t)aResult) {
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI "DNS resolved '%s' (%s) in %i ms"), aHostname, aResult.toString().c_str(), dns_end - dns_start);
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_WIFI "DNS resolved '%s' (%s) in %i ms"), aHostname, aResult.toString().c_str(), dns_end - dns_start);
return true;
}
}